@rxweb/reactive-form-validators
Advanced tools
Comparing version 1.1.2 to 1.1.3
@@ -1,2 +0,2 @@ | ||
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("@rxweb/reactive-form-validators",["exports","@angular/core","@angular/forms"],e):e((n.rxweb=n.rxweb||{},n.rxweb["reactive-form-validators"]={}),n.ng.core,n.ng.forms)}(this,function(n,e,t){"use strict";function y(n){var e="function"==typeof Symbol&&n[Symbol.iterator],t=0;return e?e.call(n):{next:function(){return n&&t>=n.length&&(n=void 0),{value:n&&n[t++],done:!n}}}}var d={alpha:/^[a-zA-Z]+$/,alphaWithSpace:/^[a-zA-Z\s]+$/,onlyDigit:/^[0-9]+$/,isDigitExits:/\d/g,lowerCase:/[a-z]/g,upperCase:/[A-Z]/g,specialCharacter:/[!@#$%^&*(),.?":{}|<>]/g,advancedEmail:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,basicEmail:/^(([^<>()\[\]\\.,,:\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,}))$/,alphaNumeric:/^[0-9a-zA-Z]+$/,alphaNumericWithSpace:/^[0-9a-zA-Z\s]+$/,hexColor:/#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})\b/gi,strictHexColor:/^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\b$/i,"float":/^(?:[-+]?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/,decimal:/^[-+]?([0-9]+|\.[0-9]+|[0-9]+\.[0-9]+)$/,hexaDecimal:/^[0-9A-F]+$/i,date:/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,time:/(00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9])$/,url:/^^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/gm,creditCard:new function(){this.Visa=new RegExp("^(?:4[0-9]{12})(?:[0-9]{3})?$"),this.AmericanExpress=new RegExp("^(?:3[47][0-9]{13})$"),this.Maestro=new RegExp("^(?:(?:5[0678]\\d\\d|6304|6390|67\\d\\d)\\d{8,15})$"),this.JCB=new RegExp("^(?:(?:2131|1800|35\\d{3})\\d{11})$"),this.Discover=new RegExp("^(?:6(?:011|5[0-9]{2})(?:[0-9]{12}))$"),this.DinersClub=new RegExp("^(?:3(?:0[0-5]|[68][0-9])[0-9]{11})$"),this.MasterCard=new RegExp("^(?: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}$")}},f="alphabet",m="digit",g="contains",v="lowerCase",h="upperCase",x="specialCharacter",b="minLength",P="maxLength",p=function(){function p(){}return p.isExits=function(n,e){return null!=n.match(e)},p.isValid=function(n,e){return e.test(n)},p.isNotBlank=function(n){return n!=undefined&&""!=n&&null!=n},p.isValidPassword=function(n,e){var t,r,a=!1,o="status",i=Object.getOwnPropertyNames(n);try{for(var u=y(i),s=u.next();!s.done;s=u.next()){var c=s.value;switch(c){case f:a=p.isExits(e,d.alpha),o=f;break;case m:a=p.isValid(e,d.isDigitExits),o=m;break;case g:a=-1!=e.indexOf(n[g]),o=g;break;case v:a=p.isValid(e,d.lowerCase),o=v;break;case h:a=p.isValid(e,d.upperCase),o=h;break;case x:a=p.isExits(e,d.specialCharacter),o=x;break;case b:a=e.length>=n[c],o=b;break;case P:a=e.length<=n[c],o=P}if(!a)break}}catch(l){t={error:l}}finally{try{s&&!s.done&&(r=u["return"])&&r.call(u)}finally{if(t)throw t.error}}return{isValid:a,keyName:o}},p}(),o=function(){function e(){}return e.set=function(n){n&&(e.json=n)},e.json={},e}(),N=function(){function n(){}return n.toJson=function(n,e,t){var r=e||(o&&o.json&&o.json.validationMessage&&o.json.validationMessage[n]?o.json.validationMessage[n]:"");t.forEach(function(n,e){r=r.replace("{{"+e+"}}",n)});var a={};return a[n]={message:r,refValues:t},a},n["null"]=function(){return null},n}(),C=function(){function a(){}return a.functionCreator=function(n){for(var e=[],t=n.match(/^\s*\(?\s*([^)]*)\s*\)?\s*=>(.*)/),r=t[2].split(","),a=0;a<r.length;a++){var o=r[a].match(/^\s*\(?\s*([^)]*)\s*\)?\s*==(.*)/);e=null!==o?new Function(t[1],"return "+o[0]):null===(o=r[a].match(/^\s*\(?\s*([^)]*)\s*\)?\s*=(.*)/))?new Function(t[1],"return "+r[a]):new Function(t[1],"return "+o[2])}return 0==r.length&&(e={accessFunction:new Function(t[1],"return "+t[2])}),e},a.IsPassed=function(n,e,t){var r=e;return t&&"string"==typeof e&&(r=a.functionCreator(e)),!t||!r||r(t,n)},a.expressionColumns=function(n){var a=[],e=[];return"string"==typeof n?n.split("=>")[1].split(" && ").forEach(function(n){n.split(" || ").forEach(function(n){e.push(n.trim().split(" ")[0])})}):String(n).split(" return ")[1].split(" && ").forEach(function(n){n.split(" || ").forEach(function(n){e.push(n.trim().split(" ")[0])})}),e.forEach(function(n){var e=n.split(".");if(2==e.length)a.push({propName:e[1].trim()});else{var t=e[1].split("["),r={propName:e[e.length-1].trim(),objectPropName:t[0],arrayIndex:1<t.length?t[1].replace("]",""):undefined};a.push(r)}}),a},a}(),j=function(){function n(){}return n.getParentObjectValue=function(n){return n.parent?this.parentObjectValue(n.parent).value:{}},n.parentObjectValue=function(n){return n.parent?n=this.parentObjectValue(n.parent):n},n.getConfigObject=function(n){return n!=undefined&&1!=n?n:{}},n}(),V={numeric:"numeric",required:"required",minLength:"minLength",maxLength:"maxLength",minNumber:"minNumber",maxNumber:"maxNumber",pattern:"pattern",password:"password",compare:"compare",minDate:"minDate",maxDate:"maxDate",alpha:"alpha",alphaNumeric:"alphaNumeric",email:"email",hexColor:"hexColor",lowerCase:"lowerCase",url:"url",upperCase:"upperCase",nested:"nested",propArray:"propArray",propObject:"propObject",contains:"contains",range:"range",custom:"custom",digit:"digit",creditCard:"creditCard",time:"time",json:"json",greaterThan:"greaterThan",greaterThanEqualTo:"greaterThanEqualTo",lessThan:"lessThan",lessThanEqualTo:"lessThanEqualTo"};var O={Visa:1,AmericanExpress:2,Maestro:3,JCB:4,Discover:5,DinersClub:6,MasterCard:7};O[O.Visa]="Visa",O[O.AmericanExpress]="AmericanExpress",O[O.Maestro]="Maestro",O[O.JCB]="JCB",O[O.Discover]="Discover",O[O.DinersClub]="DinersClub",O[O.MasterCard]="MasterCard";var T="property",E="objectProperty",I="arrayProperty",i=new(function(){function n(){this.instances=[]}return n.prototype.get=function(e){return this.instances.filter(function(n){return n.instance===e})[0]},n.prototype.addInstanceContainer=function(n){var e={instance:n,propertyAnnotations:[],properties:[]};return this.instances.push(e),e},n.prototype.addProperty=function(e,n){var t=this.instances.filter(function(n){return n.instance===e})[0];t||(t=this.addInstanceContainer(e)),this.addPropertyInfo(t,n)},n.prototype.addPropertyInfo=function(n,e){n.properties.filter(function(n){return n.name==e.name})[0]||n.properties.push(e)},n.prototype.addAnnotation=function(e,n){this.addProperty(e,{propertyType:T,name:n.propertyName});var t=this.instances.filter(function(n){return n.instance===e})[0];if(t?t.propertyAnnotations.push(n):(t=this.addInstanceContainer(e)).propertyAnnotations.push(n),n.config&&n.config.conditionalExpressions){var r=C.expressionColumns(n.config.conditionalExpressions);this.addChangeValidation(t,n.propertyName,r)}t&&n.config&&(n.annotationType==V.compare||n.annotationType==V.greaterThan||n.annotationType==V.greaterThanEqualTo||n.annotationType==V.lessThan||n.annotationType==V.lessThanEqualTo)&&this.setConditionalValueProp(t,n.config.fieldName,n.propertyName)},n.prototype.setConditionalValueProp=function(n,e,t){n.conditionalValidationProps||(n.conditionalValidationProps={}),n.conditionalValidationProps[e]||(n.conditionalValidationProps[e]=[]),-1==n.conditionalValidationProps[e].indexOf(t)&&n.conditionalValidationProps[e].push(t)},n.prototype.addChangeValidation=function(e,t,n){e&&(e.conditionalValidationProps||(e.conditionalValidationProps={}),n.forEach(function(n){n.propName&&!n.objectPropName?(e.conditionalValidationProps[n.propName]||(e.conditionalValidationProps[n.propName]=[]),-1==e.conditionalValidationProps[n.propName].indexOf(t)&&e.conditionalValidationProps[n.propName].push(t)):n.propName&&n.objectPropName&&(e.conditionalObjectProps||(e.conditionalObjectProps=[]),n.referencePropName=t,e.conditionalObjectProps.push(n))}))},n}()),a=function(n){if(n)for(var e in n)this[e]=n[e]};function A(e){var a=function(e){var t=window.setTimeout(function(n){window.clearTimeout(t),e.updateValueAndValidity()},100)};return function(n){var r=n.parent;return r&&e.forEach(function(n){if(-1!=n.indexOf("[]")){var t=n.split("[]");r.get([t[0]]).controls.forEach(function(n){var e=n.get(t[1]);e&&a(e)})}else{var e=r.get([n]);e||(e=r.root.get([n])),e&&a(e)}}),N["null"]()}}var w={alphaNumeric:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&!(a.allowWhiteSpace?p.isValid(e,d.alphaNumericWithSpace):p.isValid(e,d.alphaNumeric))?N.toJson(V.alphaNumeric,a.message||null,[e]):N["null"]()}},alpha:function(a,n){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&!(a.allowWhiteSpace?p.isValid(e,d.alphaWithSpace):p.isValid(e,d.alpha))?N.toJson(V.alpha,a.message||null,[e]):N["null"]()}},compare:function(a){return function(n){var e=n.root.get([a.fieldName]),t=n.value,r=e?e.value:"";return!p.isNotBlank(t)||e&&e.value===t?N["null"]():N.toJson(V.compare,a.message||null,[t,r])}},email:function(a){return function(n){var e=n.value;a=j.getConfigObject(a);var t=j.getParentObjectValue(n),r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&!p.isValid(e,d.basicEmail)?N.toJson(V.email,a.message||null,[e]):N["null"]()}},hexColor:function(o){return function(n){var e=n.value,t=j.getParentObjectValue(n);o=j.getConfigObject(o);var r=n.parent?n.parent.value:undefined;if(C.IsPassed(t,o.conditionalExpressions,r)&&p.isNotBlank(e)){var a=o.isStrict?d.strictHexColor:d.hexColor;if(!p.isValid(e,a))return N.toJson(V.hexColor,o.message||null,[e])}return N["null"]()}},lowerCase:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&e!==e.toLowerCase()?N.toJson(V.lowerCase,a.message||null,[e]):N["null"]()}},maxDate:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;if(C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)){if(!p.isValid(e,d.date))return N.toJson(V.maxDate,a.message||null,[n.value]);a.value}return N["null"]()}},maxNumber:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return!C.IsPassed(t,a.conditionalExpressions,r)||!p.isNotBlank(e)||parseFloat(e)<=a.value?N["null"]():N.toJson(V.maxNumber,a.message||null,[e])}},minDate:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;if(C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)){if(!p.isValid(e,d.date))return N.toJson(V.minDate,a.message||null,[n.value]);if(!(new Date(a.value)<=new Date(e)))return N.toJson(V.minDate,a.message||null,[n.value])}return N["null"]()}},minNumber:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return!C.IsPassed(t,a.conditionalExpressions,r)||!p.isNotBlank(e)||parseFloat(e)>=a.value?N["null"]():N.toJson(V.minNumber,a.message||null,[e])}},contains:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&-1==e.indexOf(a.value)?N.toJson(V.contains,a.message||null,[e]):N["null"]()}},upperCase:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&e!==e.toUpperCase()?N.toJson(V.upperCase,a.message||null,[e]):N["null"]()}},maxLength:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return!C.IsPassed(t,a.conditionalExpressions,r)||!p.isNotBlank(e)||e.length<=a.value?N["null"]():N.toJson(V.maxLength,a.message||null,[e])}},minLength:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return!C.IsPassed(t,a.conditionalExpressions,r)||!p.isNotBlank(e)||String(e).length>=a.value?N["null"]():N.toJson(V.minLength,a.message||null,[e])}},password:function(r){return function(n){var e=n.value;if(j.getParentObjectValue(n),p.isNotBlank(e)){var t=p.isValidPassword(r.validation,e);if(!t.isValid)return N.toJson(t.keyName,r.message||null,[e])}return N["null"]()}},range:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return!C.IsPassed(t,a.conditionalExpressions,r)||!p.isNotBlank(e)||-1==String(e).indexOf(".")&&parseInt(e)>=a.minimumNumber&&parseInt(e)<=a.maximumNumber?N["null"]():N.toJson(V.range,a.message||null,[a.minimumNumber,a.maximumNumber,e])}},required:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&!p.isNotBlank(e)?N.toJson(V.required,a.message||null,[e]):N["null"]()}},creditCard:function(l){return function(n){var e=n.value,t=j.getParentObjectValue(n);l=j.getConfigObject(l);var r,a,o=n.parent?n.parent.value:undefined;if(C.IsPassed(t,l.conditionalExpressions,o)&&p.isNotBlank(e)){var i=!1;try{for(var u=y(l.creditCardTypes),s=u.next();!s.done;s=u.next())switch(s.value){case O.AmericanExpress:i=p.isValid(e,d.creditCard.AmericanExpress);break;case O.DinersClub:i=p.isValid(e,d.creditCard.DinersClub);break;case O.Discover:i=p.isValid(e,d.creditCard.Discover);break;case O.JCB:i=p.isValid(e,d.creditCard.JCB);break;case O.Maestro:i=p.isValid(e,d.creditCard.Maestro);break;case O.MasterCard:i=p.isValid(e,d.creditCard.MasterCard);break;case O.Visa:i=p.isValid(e,d.creditCard.Visa)}}catch(c){r={error:c}}finally{try{s&&!s.done&&(a=u["return"])&&a.call(u)}finally{if(r)throw r.error}}if(!i)return N.toJson(V.creditCard,l.message||null,[e])}return N["null"]()}},digit:function(a){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&!p.isValid(e,d.onlyDigit)?N.toJson(V.digit,a.message||null,[e]):N["null"]()}},pattern:function(o){return function(n){var e=n.value,t=j.getParentObjectValue(n);o=j.getConfigObject(o);var r=n.parent?n.parent.value:undefined;if(C.IsPassed(t,o.conditionalExpressions,r)&&p.isNotBlank(e))for(var a in o.pattern)if(!p.isValid(e,o.pattern[a]))return N.toJson(a,o.message||null,[e]);return N["null"]()}},time:function(o,n){return function(n){var e=n.value,t=j.getParentObjectValue(n);o=j.getConfigObject(o);var r=n.parent?n.parent.value:undefined;if(C.IsPassed(t,o.conditionalExpressions,r)&&p.isNotBlank(e)){var a=5;if(o.allowSeconds||(a=8),!p.isValid(e,d.time)||e.length!=a)return N.toJson(V.time,o.message||null,[e])}return N["null"]()}},url:function(a,n){return function(n){var e=n.value,t=j.getParentObjectValue(n);a=j.getConfigObject(a);var r=n.parent?n.parent.value:undefined;return C.IsPassed(t,a.conditionalExpressions,r)&&p.isNotBlank(e)&&!p.isValid(e,d.url)?N.toJson(V.url,a.message||null,[e]):N["null"]()}},json:function(o,n){return function(n){var e=n.value,t=j.getParentObjectValue(n);o=j.getConfigObject(o);var r=n.parent?n.parent.value:undefined;if(C.IsPassed(t,o.conditionalExpressions,r)&&p.isNotBlank(e))try{JSON.parse(e)}catch(a){return N.toJson(V.json,o.message||null,[e])}return N["null"]()}},greaterThan:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,r=e?e.value:"",a=j.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return C.IsPassed(a,i.conditionalExpressions,o)&&p.isNotBlank(t)&&p.isNotBlank(r)&&!(e&&parseFloat(t)>parseFloat(r))?N.toJson(V.greaterThan,i.message||null,[t,r]):N["null"]()}},greaterThanEqualTo:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,r=e?e.value:"",a=j.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return C.IsPassed(a,i.conditionalExpressions,o)&&p.isNotBlank(t)&&p.isNotBlank(r)&&!(e&&parseFloat(t)>=parseFloat(r))?N.toJson(V.greaterThanEqualTo,i.message||null,[t,r]):N["null"]()}},lessThan:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,r=e?e.value:"",a=j.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return C.IsPassed(a,i.conditionalExpressions,o)&&p.isNotBlank(t)&&p.isNotBlank(r)&&!(e&&parseFloat(t)<parseFloat(r))?N.toJson(V.lessThan,i.message||null,[t,r]):N["null"]()}},lessThanEqualTo:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,r=e?e.value:"",a=j.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return C.IsPassed(a,i.conditionalExpressions,o)&&p.isNotBlank(t)&&p.isNotBlank(r)&&!(e&&parseFloat(t)<=parseFloat(r))?N.toJson(V.lessThanEqualTo,i.message||null,[t,r]):N["null"]()}}},r=function(){function n(n){this.formBuilder=n,this.conditionalObjectProps=[]}return n.prototype.getInstanceContainer=function(n){return i.get(n)},n.prototype.setValue=function(n,e){for(var t in e){var r=n.get([t]);r.setValue(e[t]),r.updateValueAndValidity()}},n.prototype.addFormControl=function(e,n,t,r){var a,o,i=[],u=[];(r.conditionalValidationProps&&r.conditionalValidationProps[e.name]&&i.push(A(r.conditionalValidationProps[e.name])),0<this.conditionalObjectProps.length)&&(this.conditionalObjectProps.filter(function(n){return n.propName==e.name}).forEach(function(n){n.referencePropName&&-1==u.indexOf(n.referencePropName)&&u.push(n.referencePropName)}),0<u.length&&i.push(A(u)));try{for(var s=y(n),c=s.next();!c.done;c=s.next()){var l=c.value;i.push(w[l.annotationType](l.config))}}catch(p){a={error:p}}finally{try{c&&!c.done&&(o=s["return"])&&o.call(s)}finally{if(a)throw a.error}}return t&&this.additionalValidation(i,t),i},n.prototype.additionalValidation=function(n,e){for(var t in V)e[V[t]]&&"custom"!=t?n.push(w[V[t]](e[V[t]])):t==V.custom&&e[V[t]]&&n.push(e[t])},n.prototype.checkObjectPropAdditionalValidation=function(a,n){var o=this;a.properties.filter(function(n){return n.propertyType==E||n.propertyType==I}).forEach(function(e){var n=o.getInstanceContainer(e.entity);if(n.conditionalValidationProps)for(var t in n.conditionalValidationProps){var r=n.properties.filter(function(n){return n.name==t})[0];r||(r=a.properties.filter(function(n){return n.name==t})[0]),r&&(a.conditionalValidationProps||a.conditionalValidationProps[t]||(a.conditionalValidationProps[t]=[]),n.conditionalValidationProps[t].forEach(function(n){e.propertyType!=I?a.conditionalValidationProps[t].push([e.name,n].join(".")):a.conditionalValidationProps[t].push([e.name,n].join("[]"))}))}})},n.prototype.getObject=function(n,e,t){var r={};return"function"==typeof n&&(r.model=n),!e||e instanceof a||(r.entityObject=e),e instanceof a&&!t?r.formBuilderConfiguration=e:e instanceof a||!t||(r.formBuilderConfiguration=t),e||"object"==typeof(r.entityObject=n)&&(r.model=n.constructor),r},n.prototype.formGroup=function(n,p,d){var f=this,e=this.getObject(n,p,d);n=e.model,p=e.entityObject,d=e.formBuilderConfiguration;var m=this.getInstanceContainer(n);this.checkObjectPropAdditionalValidation(m,p);var g={},v={};return m.properties.forEach(function(e){var n,t,r=!0;if(d&&d.excludeProps&&0<d.excludeProps.length&&(r=-1==d.excludeProps.indexOf(e.name)),d&&d.validations&&(v=d.validations),r)switch(e.propertyType){case T:var a=m.propertyAnnotations.filter(function(n){return n.propertyName==e.name});g[e.name]=[p[e.name],f.addFormControl(e,a,v[e.name],m)];break;case E:p[e.name]&&p[e.name]instanceof Object&&(m&&m.conditionalObjectProps&&(f.conditionalObjectProps=m.conditionalObjectProps.filter(function(n){return n.objectPropName==e.name})),g[e.name]=f.formGroup(e.entity,p[e.name],d),f.conditionalObjectProps=[]);break;case I:if(p[e.name]&&p[e.name]instanceof Array){var o=[],i=0;try{for(var u=y(p[e.name]),s=u.next();!s.done;s=u.next()){var c=s.value;m&&m.conditionalObjectProps&&(f.conditionalObjectProps=m.conditionalObjectProps.filter(function(n){return n.objectPropName==e.name&&n.arrayIndex==i})),o.push(f.formGroup(e.entity,c,d)),i++,f.conditionalObjectProps=[]}}catch(l){n={error:l}}finally{try{s&&!s.done&&(t=u["return"])&&t.call(u)}finally{if(n)throw n.error}}g[e.name]=f.formBuilder.array(o)}}}),this.formBuilder.group(g)},n.decorators=[{type:e.Injectable}],n.ctorParameters=function(){return[{type:t.FormBuilder}]},n}(),u=function(){function n(){}return n.forRoot=function(){return{ngModule:n,providers:[]}},n.decorators=[{type:e.NgModule,args:[{declarations:[],exports:[],imports:[t.FormsModule,t.ReactiveFormsModule],providers:[r]}]}],n}();n.RxReactiveFormsModule=u,n.RxFormBuilder=r,n.FormBuilderConfiguration=a,n.alpha=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.alpha,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.alphaNumeric=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.alphaNumeric,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.compare=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.compare,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.contains=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.contains,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.creditCard=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.creditCard,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.digit=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.digit,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.email=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.email,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.hexColor=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.hexColor,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.lowerCase=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.lowerCase,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.maxDate=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.maxDate,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.maxLength=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.maxLength,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.minDate=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.minDate,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.maxNumber=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.maxNumber,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.minLength=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.minLength,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.minNumber=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.minNumber,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.password=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.password,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.pattern=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.pattern,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.propArray=function(a){return function(n,e,t){var r={name:e,propertyType:I,entity:a};i.addProperty(n.constructor,r)}},n.propObject=function(a){return function(n,e,t){var r={name:e,propertyType:E,entity:a};i.addProperty(n.constructor,r)}},n.prop=function(){return function(n,e,t){var r={name:e,propertyType:T};i.addProperty(n.constructor,r)}},n.range=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.range,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.required=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.required,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.upperCase=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.upperCase,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.time=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.time,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.url=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.url,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.json=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.json,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.greaterThan=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.greaterThan,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.greaterThanEqualTo=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.greaterThanEqualTo,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.lessThanEqualTo=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.lessThanEqualTo,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.lessThan=function(o){return function(n,e,t){var r={propertyIndex:t,propertyName:e,annotationType:V.lessThan,config:o},a=e!=undefined;i.addAnnotation(a?n.constructor:n,r)}},n.ReactiveFormConfig=o,n.CreditCardType=O,Object.defineProperty(n,"__esModule",{value:!0})}); | ||
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("@rxweb/reactive-form-validators",["exports","@angular/core","@angular/forms"],e):e((n.rxweb=n.rxweb||{},n.rxweb["reactive-form-validators"]={}),n.ng.core,n.ng.forms)}(this,function(n,e,t){"use strict";function h(n){var e="function"==typeof Symbol&&n[Symbol.iterator],t=0;return e?e.call(n):{next:function(){return n&&t>=n.length&&(n=void 0),{value:n&&n[t++],done:!n}}}}var p={alpha:/^[a-zA-Z]+$/,alphaWithSpace:/^[a-zA-Z\s]+$/,onlyDigit:/^[0-9]+$/,isDigitExits:/\d/g,lowerCase:/[a-z]/g,upperCase:/[A-Z]/g,specialCharacter:/[!@#$%^&*(),.?":{}|<>]/g,advancedEmail:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,basicEmail:/^(([^<>()\[\]\\.,,:\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,}))$/,alphaNumeric:/^[0-9a-zA-Z]+$/,alphaNumericWithSpace:/^[0-9a-zA-Z\s]+$/,hexColor:/#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})\b/gi,strictHexColor:/^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\b$/i,"float":/^(?:[-+]?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/,decimal:/^[-+]?([0-9]+|\.[0-9]+|[0-9]+\.[0-9]+)$/,hexaDecimal:/^[0-9A-F]+$/i,date:/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/,time:/(00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9])$/,url:/^^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/gm,creditCard:new function(){this.Visa=new RegExp("^(?:4[0-9]{12})(?:[0-9]{3})?$"),this.AmericanExpress=new RegExp("^(?:3[47][0-9]{13})$"),this.Maestro=new RegExp("^(?:(?:5[0678]\\d\\d|6304|6390|67\\d\\d)\\d{8,15})$"),this.JCB=new RegExp("^(?:(?:2131|1800|35\\d{3})\\d{11})$"),this.Discover=new RegExp("^(?:6(?:011|5[0-9]{2})(?:[0-9]{12}))$"),this.DinersClub=new RegExp("^(?:3(?:0[0-5]|[68][0-9])[0-9]{11})$"),this.MasterCard=new RegExp("^(?: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}$")}},f="alphabet",m="digit",g="contains",v="lowerCase",y="upperCase",b="specialCharacter",x="minLength",P="maxLength",d=function(){function d(){}return d.isExits=function(n,e){return null!=n.match(e)},d.isValid=function(n,e){return e.test(n)},d.isNotBlank=function(n){return n!=undefined&&""!=n&&null!=n},d.isValidPassword=function(n,e){var t,a,r=!1,o="status",i=Object.getOwnPropertyNames(n);try{for(var s=h(i),u=s.next();!u.done;u=s.next()){var l=u.value;switch(l){case f:r=d.isExits(e,p.alpha),o=f;break;case m:r=d.isValid(e,p.isDigitExits),o=m;break;case g:r=-1!=e.indexOf(n[g]),o=g;break;case v:r=d.isValid(e,p.lowerCase),o=v;break;case y:r=d.isValid(e,p.upperCase),o=y;break;case b:r=d.isExits(e,p.specialCharacter),o=b;break;case x:r=e.length>=n[l],o=x;break;case P:r=e.length<=n[l],o=P}if(!r)break}}catch(c){t={error:c}}finally{try{u&&!u.done&&(a=s["return"])&&a.call(s)}finally{if(t)throw t.error}}return{isValid:r,keyName:o}},d}(),o=function(){function e(){}return e.set=function(n){n&&(e.json=n)},e.json={},e}(),C=function(){function n(){}return n.toJson=function(n,e,t){var a=e||(o&&o.json&&o.json.validationMessage&&o.json.validationMessage[n]?o.json.validationMessage[n]:"");t.forEach(function(n,e){a=a.replace("{{"+e+"}}",n)});var r={};return r[n]={message:a,refValues:t},r},n["null"]=function(){return null},n}(),N=function(){function r(){}return r.functionCreator=function(n){for(var e=[],t=n.match(/^\s*\(?\s*([^)]*)\s*\)?\s*=>(.*)/),a=t[2].split(","),r=0;r<a.length;r++){var o=a[r].match(/^\s*\(?\s*([^)]*)\s*\)?\s*==(.*)/);e=null!==o?new Function(t[1],"return "+o[0]):null===(o=a[r].match(/^\s*\(?\s*([^)]*)\s*\)?\s*=(.*)/))?new Function(t[1],"return "+a[r]):new Function(t[1],"return "+o[2])}return 0==a.length&&(e={accessFunction:new Function(t[1],"return "+t[2])}),e},r.IsPassed=function(n,e,t){var a=e;return t&&"string"==typeof e&&(a=r.functionCreator(e)),!t||!a||a(t,n)},r.expressionColumns=function(n){var r=[],e=[];return"string"==typeof n?n.split("=>")[1].split(" && ").forEach(function(n){n.split(" || ").forEach(function(n){e.push(n.trim().split(" ")[0])})}):String(n).split(" return ")[1].split(" && ").forEach(function(n){n.split(" || ").forEach(function(n){e.push(n.trim().split(" ")[0])})}),e.forEach(function(n){var e=n.split(".");if(2==e.length)r.push({propName:e[1].trim()});else{var t=e[1].split("["),a={propName:e[e.length-1].trim(),objectPropName:t[0],arrayIndex:1<t.length?t[1].replace("]",""):undefined};r.push(a)}}),r},r}(),V=function(){function n(){}return n.getParentObjectValue=function(n){return n.parent?this.parentObjectValue(n.parent).value:{}},n.parentObjectValue=function(n){return n.parent?n=this.parentObjectValue(n.parent):n},n.getConfigObject=function(n){return n!=undefined&&1!=n?n:{}},n}(),j={numeric:"numeric",required:"required",minLength:"minLength",maxLength:"maxLength",minNumber:"minNumber",maxNumber:"maxNumber",pattern:"pattern",password:"password",compare:"compare",minDate:"minDate",maxDate:"maxDate",alpha:"alpha",alphaNumeric:"alphaNumeric",email:"email",hexColor:"hexColor",lowerCase:"lowerCase",url:"url",upperCase:"upperCase",nested:"nested",propArray:"propArray",propObject:"propObject",contains:"contains",range:"range",custom:"custom",digit:"digit",creditCard:"creditCard",time:"time",json:"json",greaterThan:"greaterThan",greaterThanEqualTo:"greaterThanEqualTo",lessThan:"lessThan",lessThanEqualTo:"lessThanEqualTo"};var O={Visa:1,AmericanExpress:2,Maestro:3,JCB:4,Discover:5,DinersClub:6,MasterCard:7};O[O.Visa]="Visa",O[O.AmericanExpress]="AmericanExpress",O[O.Maestro]="Maestro",O[O.JCB]="JCB",O[O.Discover]="Discover",O[O.DinersClub]="DinersClub",O[O.MasterCard]="MasterCard";var T="property",E="objectProperty",I="arrayProperty",i=new(function(){function n(){this.instances=[]}return n.prototype.get=function(e){return this.instances.filter(function(n){return n.instance===e})[0]},n.prototype.addInstanceContainer=function(n){var e={instance:n,propertyAnnotations:[],properties:[]};return this.instances.push(e),e},n.prototype.addProperty=function(e,n){var t=this.instances.filter(function(n){return n.instance===e})[0];t||(t=this.addInstanceContainer(e)),this.addPropertyInfo(t,n)},n.prototype.addPropertyInfo=function(n,e){n.properties.filter(function(n){return n.name==e.name})[0]||n.properties.push(e)},n.prototype.addAnnotation=function(e,n){this.addProperty(e,{propertyType:T,name:n.propertyName});var t=this.instances.filter(function(n){return n.instance===e})[0];if(t?t.propertyAnnotations.push(n):(t=this.addInstanceContainer(e)).propertyAnnotations.push(n),n.config&&n.config.conditionalExpressions){var a=N.expressionColumns(n.config.conditionalExpressions);this.addChangeValidation(t,n.propertyName,a)}t&&n.config&&(n.annotationType==j.compare||n.annotationType==j.greaterThan||n.annotationType==j.greaterThanEqualTo||n.annotationType==j.lessThan||n.annotationType==j.lessThanEqualTo)&&this.setConditionalValueProp(t,n.config.fieldName,n.propertyName)},n.prototype.setConditionalValueProp=function(n,e,t){n.conditionalValidationProps||(n.conditionalValidationProps={}),n.conditionalValidationProps[e]||(n.conditionalValidationProps[e]=[]),-1==n.conditionalValidationProps[e].indexOf(t)&&n.conditionalValidationProps[e].push(t)},n.prototype.addChangeValidation=function(e,t,n){e&&(e.conditionalValidationProps||(e.conditionalValidationProps={}),n.forEach(function(n){n.propName&&!n.objectPropName?(e.conditionalValidationProps[n.propName]||(e.conditionalValidationProps[n.propName]=[]),-1==e.conditionalValidationProps[n.propName].indexOf(t)&&e.conditionalValidationProps[n.propName].push(t)):n.propName&&n.objectPropName&&(e.conditionalObjectProps||(e.conditionalObjectProps=[]),n.referencePropName=t,e.conditionalObjectProps.push(n))}))},n}()),r=function(n){if(n)for(var e in n)this[e]=n[e]};function A(e){var r=function(e){var t=window.setTimeout(function(n){window.clearTimeout(t),e.updateValueAndValidity()},100)};return function(n){var a=n.parent;return a&&e.forEach(function(n){if(-1!=n.indexOf("[]")){var t=n.split("[]");a.get([t[0]]).controls.forEach(function(n){var e=n.get(t[1]);e&&r(e)})}else{var e=a.get([n]);e||(e=a.root.get([n])),e&&r(e)}}),C["null"]()}}var w={alphaNumeric:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&!(r.allowWhiteSpace?d.isValid(e,p.alphaNumericWithSpace):d.isValid(e,p.alphaNumeric))?C.toJson(j.alphaNumeric,r.message||null,[e]):C["null"]()}},alpha:function(r,n){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&!(r.allowWhiteSpace?d.isValid(e,p.alphaWithSpace):d.isValid(e,p.alpha))?C.toJson(j.alpha,r.message||null,[e]):C["null"]()}},compare:function(r){return function(n){var e=n.root.get([r.fieldName]),t=n.value,a=e?e.value:"";return!d.isNotBlank(t)||e&&e.value===t?C["null"]():C.toJson(j.compare,r.message||null,[t,a])}},email:function(r){return function(n){var e=n.value;r=V.getConfigObject(r);var t=V.getParentObjectValue(n),a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&!d.isValid(e,p.basicEmail)?C.toJson(j.email,r.message||null,[e]):C["null"]()}},hexColor:function(o){return function(n){var e=n.value,t=V.getParentObjectValue(n);o=V.getConfigObject(o);var a=n.parent?n.parent.value:undefined;if(N.IsPassed(t,o.conditionalExpressions,a)&&d.isNotBlank(e)){var r=o.isStrict?p.strictHexColor:p.hexColor;if(!d.isValid(e,r))return C.toJson(j.hexColor,o.message||null,[e])}return C["null"]()}},lowerCase:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&e!==e.toLowerCase()?C.toJson(j.lowerCase,r.message||null,[e]):C["null"]()}},maxDate:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;if(N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)){if(!d.isValid(e,p.date))return C.toJson(j.maxDate,r.message||null,[n.value]);r.value}return C["null"]()}},maxNumber:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return!N.IsPassed(t,r.conditionalExpressions,a)||!d.isNotBlank(e)||parseFloat(e)<=r.value?C["null"]():C.toJson(j.maxNumber,r.message||null,[e])}},minDate:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;if(N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)){if(!d.isValid(e,p.date))return C.toJson(j.minDate,r.message||null,[n.value]);if(!(new Date(r.value)<=new Date(e)))return C.toJson(j.minDate,r.message||null,[n.value])}return C["null"]()}},minNumber:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return!N.IsPassed(t,r.conditionalExpressions,a)||!d.isNotBlank(e)||parseFloat(e)>=r.value?C["null"]():C.toJson(j.minNumber,r.message||null,[e])}},contains:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&-1==e.indexOf(r.value)?C.toJson(j.contains,r.message||null,[r.value,e]):C["null"]()}},upperCase:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&e!==e.toUpperCase()?C.toJson(j.upperCase,r.message||null,[e]):C["null"]()}},maxLength:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return!N.IsPassed(t,r.conditionalExpressions,a)||!d.isNotBlank(e)||e.length<=r.value?C["null"]():C.toJson(j.maxLength,r.message||null,[e])}},minLength:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return!N.IsPassed(t,r.conditionalExpressions,a)||!d.isNotBlank(e)||String(e).length>=r.value?C["null"]():C.toJson(j.minLength,r.message||null,[e])}},password:function(a){return function(n){var e=n.value;if(V.getParentObjectValue(n),d.isNotBlank(e)){var t=d.isValidPassword(a.validation,e);if(!t.isValid)return C.toJson(t.keyName,a.message||null,[e])}return C["null"]()}},range:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return!N.IsPassed(t,r.conditionalExpressions,a)||!d.isNotBlank(e)||-1==String(e).indexOf(".")&&parseInt(e)>=r.minimumNumber&&parseInt(e)<=r.maximumNumber?C["null"]():C.toJson(j.range,r.message||null,[r.minimumNumber,r.maximumNumber,e])}},required:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&!d.isNotBlank(e)?C.toJson(j.required,r.message||null,[e]):C["null"]()}},creditCard:function(c){return function(n){var e=n.value,t=V.getParentObjectValue(n);c=V.getConfigObject(c);var a,r,o=n.parent?n.parent.value:undefined;if(N.IsPassed(t,c.conditionalExpressions,o)&&d.isNotBlank(e)){var i=!1;try{for(var s=h(c.creditCardTypes),u=s.next();!u.done;u=s.next())switch(u.value){case O.AmericanExpress:i=d.isValid(e,p.creditCard.AmericanExpress);break;case O.DinersClub:i=d.isValid(e,p.creditCard.DinersClub);break;case O.Discover:i=d.isValid(e,p.creditCard.Discover);break;case O.JCB:i=d.isValid(e,p.creditCard.JCB);break;case O.Maestro:i=d.isValid(e,p.creditCard.Maestro);break;case O.MasterCard:i=d.isValid(e,p.creditCard.MasterCard);break;case O.Visa:i=d.isValid(e,p.creditCard.Visa)}}catch(l){a={error:l}}finally{try{u&&!u.done&&(r=s["return"])&&r.call(s)}finally{if(a)throw a.error}}if(!i)return C.toJson(j.creditCard,c.message||null,[e])}return C["null"]()}},digit:function(r){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&!d.isValid(e,p.onlyDigit)?C.toJson(j.digit,r.message||null,[e]):C["null"]()}},pattern:function(o){return function(n){var e=n.value,t=V.getParentObjectValue(n);o=V.getConfigObject(o);var a=n.parent?n.parent.value:undefined;if(N.IsPassed(t,o.conditionalExpressions,a)&&d.isNotBlank(e))for(var r in o.pattern)if(!d.isValid(e,o.pattern[r]))return C.toJson(r,o.message||null,[e]);return C["null"]()}},time:function(o,n){return function(n){var e=n.value,t=V.getParentObjectValue(n);o=V.getConfigObject(o);var a=n.parent?n.parent.value:undefined;if(N.IsPassed(t,o.conditionalExpressions,a)&&d.isNotBlank(e)){var r=5;if(o.allowSeconds||(r=8),!d.isValid(e,p.time)||e.length!=r)return C.toJson(j.time,o.message||null,[e])}return C["null"]()}},url:function(r,n){return function(n){var e=n.value,t=V.getParentObjectValue(n);r=V.getConfigObject(r);var a=n.parent?n.parent.value:undefined;return N.IsPassed(t,r.conditionalExpressions,a)&&d.isNotBlank(e)&&!d.isValid(e,p.url)?C.toJson(j.url,r.message||null,[e]):C["null"]()}},json:function(o,n){return function(n){var e=n.value,t=V.getParentObjectValue(n);o=V.getConfigObject(o);var a=n.parent?n.parent.value:undefined;if(N.IsPassed(t,o.conditionalExpressions,a)&&d.isNotBlank(e))try{JSON.parse(e)}catch(r){return C.toJson(j.json,o.message||null,[e])}return C["null"]()}},greaterThan:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,a=e?e.value:"",r=V.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return N.IsPassed(r,i.conditionalExpressions,o)&&d.isNotBlank(t)&&d.isNotBlank(a)&&!(e&&parseFloat(t)>parseFloat(a))?C.toJson(j.greaterThan,i.message||null,[t,a]):C["null"]()}},greaterThanEqualTo:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,a=e?e.value:"",r=V.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return N.IsPassed(r,i.conditionalExpressions,o)&&d.isNotBlank(t)&&d.isNotBlank(a)&&!(e&&parseFloat(t)>=parseFloat(a))?C.toJson(j.greaterThanEqualTo,i.message||null,[t,a]):C["null"]()}},lessThan:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,a=e?e.value:"",r=V.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return N.IsPassed(r,i.conditionalExpressions,o)&&d.isNotBlank(t)&&d.isNotBlank(a)&&!(e&&parseFloat(t)<parseFloat(a))?C.toJson(j.lessThan,i.message||null,[t,a]):C["null"]()}},lessThanEqualTo:function(i){return function(n){var e=n.root.get([i.fieldName]),t=n.value,a=e?e.value:"",r=V.getParentObjectValue(n),o=n.parent?n.parent.value:undefined;return N.IsPassed(r,i.conditionalExpressions,o)&&d.isNotBlank(t)&&d.isNotBlank(a)&&!(e&&parseFloat(t)<=parseFloat(a))?C.toJson(j.lessThanEqualTo,i.message||null,[t,a]):C["null"]()}}},a=function(){function n(n){this.formBuilder=n,this.conditionalObjectProps=[],this.conditionalValidationInstance={},this.builderConfigurationConditionalObjectProps=[],this.isNested=!1}return n.prototype.getInstanceContainer=function(n){return i.get(n)},n.prototype.setValue=function(n,e){for(var t in e){var a=n.get([t]);a.setValue(e[t]),a.updateValueAndValidity()}},n.prototype.extractExpressions=function(n){if(n&&n.validations)for(var e in n.validations)for(var t in n.validations[e])if(n.validations[e][t].conditionalExpressions){var a=N.expressionColumns(n.validations[e][t].conditionalExpressions);i.addChangeValidation(this.conditionalValidationInstance,e,a)}return null},n.prototype.addFormControl=function(e,n,t,a){var r,o,i=[],s=[];if(a.conditionalValidationProps&&a.conditionalValidationProps[e.name]||this.conditionalValidationInstance.conditionalValidationProps&&this.conditionalValidationInstance.conditionalValidationProps[e.name]){var u=[];a.conditionalValidationProps&&a.conditionalValidationProps[e.name]&&a.conditionalValidationProps[e.name].forEach(function(n){return u.push(n)}),this.conditionalValidationInstance.conditionalValidationProps&&this.conditionalValidationInstance.conditionalValidationProps[e.name]&&this.conditionalValidationInstance.conditionalValidationProps[e.name].forEach(function(n){return u.push(n)}),i.push(A(u))}if(0<this.conditionalObjectProps.length||0<this.builderConfigurationConditionalObjectProps.length){var l=[];this.conditionalObjectProps&&(l=this.conditionalObjectProps.filter(function(n){return n.propName==e.name})),this.builderConfigurationConditionalObjectProps&&this.builderConfigurationConditionalObjectProps.filter(function(n){return n.propName==e.name}).forEach(function(n){return l.push(n)}),l.forEach(function(n){n.referencePropName&&-1==s.indexOf(n.referencePropName)&&s.push(n.referencePropName)}),0<s.length&&i.push(A(s))}try{for(var c=h(n),d=c.next();!d.done;d=c.next()){var p=d.value;i.push(w[p.annotationType](p.config))}}catch(f){r={error:f}}finally{try{d&&!d.done&&(o=c["return"])&&o.call(c)}finally{if(r)throw r.error}}return t&&this.additionalValidation(i,t),i},n.prototype.additionalValidation=function(n,e){for(var t in j)e[j[t]]&&"custom"!=t?n.push(w[j[t]](e[j[t]])):t==j.custom&&e[j[t]]&&n.push(e[t])},n.prototype.checkObjectPropAdditionalValidation=function(r,n){var o=this;r.properties.filter(function(n){return n.propertyType==E||n.propertyType==I}).forEach(function(e){var n=o.getInstanceContainer(e.entity);if(n.conditionalValidationProps)for(var t in n.conditionalValidationProps){var a=n.properties.filter(function(n){return n.name==t})[0];a||(a=r.properties.filter(function(n){return n.name==t})[0]),a&&(r.conditionalValidationProps||r.conditionalValidationProps[t]||(r.conditionalValidationProps[t]=[]),n.conditionalValidationProps[t].forEach(function(n){e.propertyType!=I?r.conditionalValidationProps[t].push([e.name,n].join(".")):r.conditionalValidationProps[t].push([e.name,n].join("[]"))}))}})},n.prototype.getObject=function(n,e,t){var a={};return"function"==typeof n&&(a.model=n),!e||e instanceof r||(a.entityObject=e),e instanceof r&&!t?a.formBuilderConfiguration=e:e instanceof r||!t||(a.formBuilderConfiguration=t),e?n&&e instanceof r&&"object"==typeof n&&(a.entityObject=n,a.model=n.constructor):"object"==typeof(a.entityObject=n)&&(a.model=n.constructor),a},n.prototype.formGroup=function(n,d,p){var f=this,e=this.getObject(n,d,p);n=e.model,d=e.entityObject,(p=e.formBuilderConfiguration)&&this.extractExpressions(p);var m=this.getInstanceContainer(n);this.checkObjectPropAdditionalValidation(m,d);var g={},v={};return m.properties.forEach(function(e){var n,t,a=!0;if(p&&p.excludeProps&&0<p.excludeProps.length&&(a=-1==p.excludeProps.indexOf(e.name)),p&&p.validations&&(v=p.validations),a)switch(e.propertyType){case T:var r=m.propertyAnnotations.filter(function(n){return n.propertyName==e.name});g[e.name]=[d[e.name],f.addFormControl(e,r,v[e.name],m)],f.isNested=!1;break;case E:d[e.name]&&d[e.name]instanceof Object&&(f.isNested=!0,m&&m.conditionalObjectProps&&(f.conditionalObjectProps=m.conditionalObjectProps.filter(function(n){return n.objectPropName==e.name})),f.conditionalValidationInstance&&f.conditionalValidationInstance.conditionalObjectProps&&(f.builderConfigurationConditionalObjectProps=f.conditionalValidationInstance.conditionalObjectProps.filter(function(n){return n.objectPropName==e.name})),g[e.name]=f.formGroup(e.entity,d[e.name],p),f.conditionalObjectProps=[],f.builderConfigurationConditionalObjectProps=[],f.isNested=!1);break;case I:if(d[e.name]&&d[e.name]instanceof Array){f.isNested=!0;var o=[],i=0;try{for(var s=h(d[e.name]),u=s.next();!u.done;u=s.next()){var l=u.value;m&&m.conditionalObjectProps&&(f.conditionalObjectProps=m.conditionalObjectProps.filter(function(n){return n.objectPropName==e.name&&n.arrayIndex==i})),f.conditionalValidationInstance&&f.conditionalValidationInstance.conditionalObjectProps&&(f.builderConfigurationConditionalObjectProps=f.conditionalValidationInstance.conditionalObjectProps.filter(function(n){return n.objectPropName==e.name&&n.arrayIndex==i})),o.push(f.formGroup(e.entity,l,p)),i++,f.conditionalObjectProps=[],f.builderConfigurationConditionalObjectProps=[]}}catch(c){n={error:c}}finally{try{u&&!u.done&&(t=s["return"])&&t.call(s)}finally{if(n)throw n.error}}g[e.name]=f.formBuilder.array(o),f.isNested=!1}}}),this.isNested||(this.conditionalValidationInstance={},this.builderConfigurationConditionalObjectProps=[]),this.formBuilder.group(g)},n.decorators=[{type:e.Injectable}],n.ctorParameters=function(){return[{type:t.FormBuilder}]},n}(),s=function(){function n(){}return n.forRoot=function(){return{ngModule:n,providers:[]}},n.decorators=[{type:e.NgModule,args:[{declarations:[],exports:[],imports:[t.FormsModule,t.ReactiveFormsModule],providers:[a]}]}],n}();n.RxReactiveFormsModule=s,n.RxFormBuilder=a,n.FormBuilderConfiguration=r,n.alpha=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.alpha,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.alphaNumeric=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.alphaNumeric,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.compare=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.compare,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.contains=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.contains,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.creditCard=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.creditCard,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.digit=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.digit,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.email=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.email,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.hexColor=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.hexColor,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.lowerCase=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.lowerCase,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.maxDate=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.maxDate,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.maxLength=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.maxLength,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.minDate=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.minDate,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.maxNumber=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.maxNumber,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.minLength=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.minLength,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.minNumber=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.minNumber,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.password=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.password,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.pattern=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.pattern,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.propArray=function(r){return function(n,e,t){var a={name:e,propertyType:I,entity:r};i.addProperty(n.constructor,a)}},n.propObject=function(r){return function(n,e,t){var a={name:e,propertyType:E,entity:r};i.addProperty(n.constructor,a)}},n.prop=function(){return function(n,e,t){var a={name:e,propertyType:T};i.addProperty(n.constructor,a)}},n.range=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.range,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.required=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.required,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.upperCase=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.upperCase,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.time=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.time,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.url=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.url,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.json=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.json,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.greaterThan=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.greaterThan,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.greaterThanEqualTo=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.greaterThanEqualTo,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.lessThanEqualTo=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.lessThanEqualTo,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.lessThan=function(o){return function(n,e,t){var a={propertyIndex:t,propertyName:e,annotationType:j.lessThan,config:o},r=e!=undefined;i.addAnnotation(r?n.constructor:n,a)}},n.ReactiveFormConfig=o,n.CreditCardType=O,Object.defineProperty(n,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=rxweb-reactive-form-validators.umd.min.js.map |
@@ -7,2 +7,3 @@ import { DecoratorConfiguration, InstanceContainer, PropertyInfo } from './validator.interface'; | ||
addProperty(instanceFunc: any, propertyInfo: PropertyInfo): void; | ||
addChangeValidation(instance: InstanceContainer, propertyName: string, columns: any[]): void; | ||
}; |
@@ -125,2 +125,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdENvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJjb3JlL2RlZmF1bHRDb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsTUFBTSxDQUFDLHVCQUFNLGdCQUFnQixHQU1yQixJQUFJLENBQUM7SUFBQTt5QkFDb0MsRUFBRTtLQWtGOUM7Ozs7OztJQWhGRyxHQUFHLENBQUksWUFBaUI7UUFDcEIscUJBQUksUUFBUSxHQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csTUFBTSxDQUFDLFFBQVEsQ0FBQztLQUNuQjs7Ozs7SUFFRCxvQkFBb0IsQ0FBQyxZQUFpQjtRQUNsQyxxQkFBSSxpQkFBaUIsR0FBc0I7WUFDdkMsUUFBUSxFQUFFLFlBQVk7WUFDdEIsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixVQUFVLEVBQUUsRUFBRTtTQUNqQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsaUJBQWlCLENBQUM7S0FDNUI7Ozs7OztJQUVELFdBQVcsQ0FBQyxZQUFpQixFQUFFLFlBQTBCO1FBQ3JELHFCQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxD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QUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQzs0QkFDakMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQzt3QkFDbkMsUUFBUSxDQUFDLHNCQUFzQixTQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUMzQztpQkFDSjthQUNKLENBQUMsQ0FBQTtTQUNMO0tBQ0o7Q0FDSixDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvckNvbmZpZ3VyYXRpb24sIEluc3RhbmNlQ29udGFpbmVyLCBQcm9wZXJ0eUluZm8gfSBmcm9tICcuL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi92YWxpZGF0b3Iuc3RhdGljXCI7XHJcbmltcG9ydCB7IFBST1BFUlRZIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcblxyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lcjpcclxuICAgIHtcclxuICAgICAgICBnZXQ8VD4oaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lcixcclxuICAgICAgICBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCxcclxuICAgICAgICBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IHZvaWRcclxuICAgICAgICBhZGRQcm9wZXJ0eShpbnN0YW5jZUZ1bmM6IGFueSwgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8pOiB2b2lkXHJcbiAgICB9ID0gbmV3IChjbGFzcyB7XHJcbiAgICAgICAgcHJpdmF0ZSBpbnN0YW5jZXM6IEluc3RhbmNlQ29udGFpbmVyW10gPSBbXTtcclxuXHJcbiAgICAgICAgZ2V0PFQ+KGluc3RhbmNlRnVuYzogYW55KTogSW5zdGFuY2VDb250YWluZXIge1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciA9IHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZUZ1bmMsXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUFubm90YXRpb25zOiBbXSxcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZXMucHVzaChpbnN0YW5jZUNvbnRhaW5lcik7XHJcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZUNvbnRhaW5lcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFkZFByb3BlcnR5KGluc3RhbmNlRnVuYzogYW55LCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbyk6IHZvaWQge1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2UsIHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbykge1xyXG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBpbnN0YW5jZS5wcm9wZXJ0aWVzLmZpbHRlcih0ID0+IHQubmFtZSA9PSBwcm9wZXJ0eUluZm8ubmFtZSlbMF1cclxuICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eUluZm8pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWRkQW5ub3RhdGlvbihpbnN0YW5jZUZ1bmM6IGFueSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbjogRGVjb3JhdG9yQ29uZmlndXJhdGlvbik6IHZvaWQge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFByb3BlcnR5KGluc3RhbmNlRnVuYywgeyBwcm9wZXJ0eVR5cGU6IFBST1BFUlRZLCBuYW1lOiBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSB9KTtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpWzBdO1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnICYmIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLmNvbmRpdGlvbmFsRXhwcmVzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb25zKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSAmJiBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZyAmJiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5hbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY29tcGFyZSB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbkVxdWFsVG8gfHwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5hbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW4gfHwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5hbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBzZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BOYW1lOiBzdHJpbmcsIHJlZlByb3BOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcylcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzID0ge307XHJcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcE5hbWVdKVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0uaW5kZXhPZihyZWZQcm9wTmFtZSkgPT0gLTEpXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0ucHVzaChyZWZQcm9wTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgY29sdW1uczogYW55W10pIHtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzID0ge307XHJcblxyXG4gICAgICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmICF0Lm9iamVjdFByb3BOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0uaW5kZXhPZihwcm9wZXJ0eU5hbWUpID09IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0ucHVzaChwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJlZmVyZW5jZVByb3BOYW1lID0gcHJvcGVydHlOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pKCk7XHJcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdENvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJjb3JlL2RlZmF1bHRDb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsTUFBTSxDQUFDLHVCQUFNLGdCQUFnQixHQU9yQixJQUFJLENBQUM7SUFBQTt5QkFDb0MsRUFBRTtLQW1GOUM7Ozs7OztJQWpGRyxHQUFHLENBQUksWUFBaUI7UUFDcEIscUJBQUksUUFBUSxHQUFzQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0csTUFBTSxDQUFDLFFBQVEsQ0FBQztLQUNuQjs7Ozs7SUFFRCxvQkFBb0IsQ0FBQyxZQUFpQjtRQUNsQyxxQkFBSSxpQkFBaUIsR0FBc0I7WUFDdkMsUUFBUSxFQUFFLFlBQVk7WUFDdEIsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixVQUFVLEVBQUUsRUFBRTtTQUNqQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsaUJBQWlCLENBQUM7S0FDNUI7Ozs7OztJQUdELFdBQVcsQ0FBQyxZQUFpQixFQUFFLFlBQTBCO1FBQ3JELHFCQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxD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QUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQzs0QkFDakMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQzt3QkFDbkMsUUFBUSxDQUFDLHNCQUFzQixTQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUMzQztpQkFDSjthQUNKLENBQUMsQ0FBQTtTQUNMO0tBQ0o7Q0FDSixDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvckNvbmZpZ3VyYXRpb24sIEluc3RhbmNlQ29udGFpbmVyLCBQcm9wZXJ0eUluZm8gfSBmcm9tICcuL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi92YWxpZGF0b3Iuc3RhdGljXCI7XHJcbmltcG9ydCB7IFBST1BFUlRZIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcblxyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lcjpcclxuICAgIHtcclxuICAgICAgICBnZXQ8VD4oaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lcixcclxuICAgICAgICBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCxcclxuICAgICAgICBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IHZvaWRcclxuICAgICAgICBhZGRQcm9wZXJ0eShpbnN0YW5jZUZ1bmM6IGFueSwgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8pOiB2b2lkXHJcbiAgICAgICAgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6dm9pZFxyXG4gICAgfSA9IG5ldyAoY2xhc3Mge1xyXG4gICAgICAgIHByaXZhdGUgaW5zdGFuY2VzOiBJbnN0YW5jZUNvbnRhaW5lcltdID0gW107XHJcblxyXG4gICAgICAgIGdldDxUPihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciA9IHRoaXMuaW5zdGFuY2VzLmZpbHRlcihpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKVswXTtcclxuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIgPSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VGdW5jLFxyXG4gICAgICAgICAgICAgICAgcHJvcGVydHlBbm5vdGF0aW9uczogW10sXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBbXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VzLnB1c2goaW5zdGFuY2VDb250YWluZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2VDb250YWluZXI7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jOiBhbnksIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbHRlcihpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKVswXTtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BlcnR5SW5mbyhpbnN0YW5jZSwgcHJvcGVydHlJbmZvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2UsIHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFkZFByb3BlcnR5SW5mbyhpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvKSB7XHJcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IGluc3RhbmNlLnByb3BlcnRpZXMuZmlsdGVyKHQgPT4gdC5uYW1lID09IHByb3BlcnR5SW5mby5uYW1lKVswXVxyXG4gICAgICAgICAgICBpZiAoIXByb3BlcnR5KVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydGllcy5wdXNoKHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0pO1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnR5QW5ub3RhdGlvbnMucHVzaChkZWNvcmF0b3JDb25maWd1cmF0aW9uKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jKTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnR5QW5ub3RhdGlvbnMucHVzaChkZWNvcmF0b3JDb25maWd1cmF0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmV4cHJlc3Npb25Db2x1bW5zKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLmNvbmRpdGlvbmFsRXhwcmVzc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDaGFuZ2VWYWxpZGF0aW9uKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlICYmIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnICYmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5jb21wYXJlIHx8IGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuIHx8IGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5sZXNzVGhhbiB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5sZXNzVGhhbkVxdWFsVG8pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcE5hbWU6IHN0cmluZywgcmVmUHJvcE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgPSB7fTtcclxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0pXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0gPSBbXTtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXS5pbmRleE9mKHJlZlByb3BOYW1lKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXS5wdXNoKHJlZlByb3BOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSkgOnZvaWQge1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXS5pbmRleE9mKHByb3BlcnR5TmFtZSkgPT0gLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgdC5vYmplY3RQcm9wTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVmZXJlbmNlUHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzLnB1c2godCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSkoKTtcclxuIl19 |
@@ -25,3 +25,3 @@ /** | ||
/** @type {?|undefined} */ | ||
PropValidationConfig.prototype.numeric; | ||
PropValidationConfig.prototype.digit; | ||
/** @type {?|undefined} */ | ||
@@ -51,2 +51,2 @@ PropValidationConfig.prototype.alphaNumeric; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC12YWxpZGF0aW9uLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJtb2RlbHMvcHJvcC12YWxpZGF0aW9uLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9kZWZhdWx0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBQYXR0ZXJuQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3BhdHRlcm4tY29uZmlnXCI7XHJcbmltcG9ydCB7IENvbXBhcmVDb25maWcgfSBmcm9tIFwiLi9jb25maWcvY29tcGFyZS1jb25maWdcIjtcclxuaW1wb3J0IHsgQWxwaGFDb25maWcgfSBmcm9tIFwiLi9jb25maWcvYWxwaGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IFJhbmdlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3JhbmdlLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBOdW1iZXJDb25maWcgfSBmcm9tIFwiLi9jb25maWcvbnVtYmVyLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBEYXRlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2RhdGUtY29uZmlnXCI7XHJcbmltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb3BWYWxpZGF0aW9uQ29uZmlnIHtcclxuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICAgIG1pbkxlbmd0aD86IE51bWJlckNvbmZpZyA7XHJcbiAgICBtYXhMZW5ndGg/OiBOdW1iZXJDb25maWcgO1xyXG4gICAgcGF0dGVybj86IFBhdHRlcm5Db25maWcgO1xyXG4gICAgY29tcGFyZT86IENvbXBhcmVDb25maWcgO1xyXG4gICAgY29udGFpbnM/OiBEZWZhdWx0Q29uZmlnO1xyXG4gICAgYWxwaGE/OiBBbHBoYUNvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBudW1lcmljPzogYm9vbGVhbjtcclxuICAgIGFscGhhTnVtZXJpYz86IEFscGhhQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIGVtYWlsPzogYm9vbGVhbjtcclxuICAgIGhleENvbG9yPzogYm9vbGVhbjtcclxuICAgIGxvd2VyY2FzZT86IGJvb2xlYW47XHJcbiAgICBtYXhEYXRlPzogRGF0ZUNvbmZpZztcclxuICAgIG1heE51bWJlcj86IE51bWJlckNvbmZpZztcclxuICAgIG1pbkRhdGU/OiBEYXRlQ29uZmlnO1xyXG4gICAgbWluTnVtYmVyPzogTnVtYmVyQ29uZmlnO1xyXG4gICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcclxuICAgIHJhbmdlPzogUmFuZ2VDb25maWc7XHJcbiAgICBjdXN0b20/OiBWYWxpZGF0b3JGbjtcclxufVxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC12YWxpZGF0aW9uLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJtb2RlbHMvcHJvcC12YWxpZGF0aW9uLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9kZWZhdWx0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBQYXR0ZXJuQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3BhdHRlcm4tY29uZmlnXCI7XHJcbmltcG9ydCB7IENvbXBhcmVDb25maWcgfSBmcm9tIFwiLi9jb25maWcvY29tcGFyZS1jb25maWdcIjtcclxuaW1wb3J0IHsgQWxwaGFDb25maWcgfSBmcm9tIFwiLi9jb25maWcvYWxwaGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IFJhbmdlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3JhbmdlLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBOdW1iZXJDb25maWcgfSBmcm9tIFwiLi9jb25maWcvbnVtYmVyLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBEYXRlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2RhdGUtY29uZmlnXCI7XHJcbmltcG9ydCB7IERpZ2l0Q29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2RpZ2l0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBFbWFpbENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9lbWFpbC1jb25maWdcIjtcclxuaW1wb3J0IHsgTWVzc2FnZUNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9tZXNzYWdlLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9wVmFsaWRhdGlvbkNvbmZpZyB7XHJcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgICBtaW5MZW5ndGg/OiBOdW1iZXJDb25maWcgO1xyXG4gICAgbWF4TGVuZ3RoPzogTnVtYmVyQ29uZmlnIDtcclxuICAgIHBhdHRlcm4/OiBQYXR0ZXJuQ29uZmlnIDtcclxuICAgIGNvbXBhcmU/OiBDb21wYXJlQ29uZmlnIDtcclxuICAgIGNvbnRhaW5zPzogRGVmYXVsdENvbmZpZztcclxuICAgIGFscGhhPzogQWxwaGFDb25maWcgfCBib29sZWFuO1xyXG4gICAgZGlnaXQ/OiBEaWdpdENvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBhbHBoYU51bWVyaWM/OiBBbHBoYUNvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBlbWFpbD86IEVtYWlsQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIGhleENvbG9yPzogTWVzc2FnZUNvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBsb3dlcmNhc2U/OiBNZXNzYWdlQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIG1heERhdGU/OiBEYXRlQ29uZmlnO1xyXG4gICAgbWF4TnVtYmVyPzogTnVtYmVyQ29uZmlnO1xyXG4gICAgbWluRGF0ZT86IERhdGVDb25maWc7XHJcbiAgICBtaW5OdW1iZXI/OiBOdW1iZXJDb25maWc7XHJcbiAgICB1cHBlcmNhc2U/OiBNZXNzYWdlQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIHJhbmdlPzogUmFuZ2VDb25maWc7XHJcbiAgICBjdXN0b20/OiBWYWxpZGF0b3JGbjtcclxufVxyXG4iXX0= |
@@ -23,3 +23,3 @@ /** | ||
if (controlValue.indexOf(config.value) == -1) | ||
return ObjectMaker.toJson(AnnotationTypes["contains"], config.message || null, [controlValue]); | ||
return ObjectMaker.toJson(AnnotationTypes["contains"], config.message || null, [config.value, controlValue]); | ||
} | ||
@@ -31,2 +31,2 @@ } | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbnMudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInJlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb250YWlucy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUUzRCxNQUFNLDRCQUE0QixNQUFvQjtJQUNsRCxNQUFNLENBQUMsQ0FBQyxPQUF3QixFQUEwQixFQUFFO1FBQ3hELHVCQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ25DLHVCQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsdUJBQU0sWUFBWSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0UsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLGNBQVcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQ25HO1NBQ0o7UUFDRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQzdCLENBQUE7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBWYWxpZGF0b3JGbixcclxuICAgIEFic3RyYWN0Q29udHJvbFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgUmVnZXhWYWxpZGF0b3IgfSBmcm9tIFwiLi4vdXRpbC9yZWdleC12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgUmVnRXhSdWxlIH0gZnJvbSBcIi4uL3V0aWwvcmVnZXgtcnVsZXNcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yTmFtZSB9IGZyb20gXCIuLi91dGlsL2RlY29yYXRvci1uYW1lXCJcclxuaW1wb3J0IHsgT2JqZWN0TWFrZXIgfSBmcm9tIFwiLi4vdXRpbC9vYmplY3QtbWFrZXJcIjtcclxuaW1wb3J0IHsgRGVmYXVsdENvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnL2RlZmF1bHQtY29uZmlnXCI7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uVXRpbCB9IGZyb20gXCIuLi91dGlsL2FwcC11dGlsXCI7XHJcbmltcG9ydCB7IExpbnEgfSBmcm9tIFwiLi4vdXRpbC9saW5xXCI7XHJcbmltcG9ydCB7IEFubm90YXRpb25UeXBlcyB9IGZyb20gXCIuLi9jb3JlL3ZhbGlkYXRvci5zdGF0aWNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc1ZhbGlkYXRvcihjb25maWc6RGVmYXVsdENvbmZpZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXBWYWx1ZSA9IEFwcGxpY2F0aW9uVXRpbC5nZXRQYXJlbnRPYmplY3RWYWx1ZShjb250cm9sKTtcclxuICAgICAgICBjb25maWcgPSBBcHBsaWNhdGlvblV0aWwuZ2V0Q29uZmlnT2JqZWN0KGNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgcGFyZW50T2JqZWN0ID0gKGNvbnRyb2wucGFyZW50KSA/IGNvbnRyb2wucGFyZW50LnZhbHVlIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChMaW5xLklzUGFzc2VkKGZvcm1Hcm91cFZhbHVlLCBjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9ucywgcGFyZW50T2JqZWN0KSkge1xyXG4gICAgICAgICAgICBpZiAoUmVnZXhWYWxpZGF0b3IuaXNOb3RCbGFuayhjb250cm9sVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbFZhbHVlLmluZGV4T2YoY29uZmlnLnZhbHVlKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0TWFrZXIudG9Kc29uKEFubm90YXRpb25UeXBlcy5jb250YWlucywgY29uZmlnLm1lc3NhZ2UgfHwgbnVsbCwgW2NvbnRyb2xWYWx1ZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBPYmplY3RNYWtlci5udWxsKCk7XHJcbiAgICB9XHJcbn1cclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbnMudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInJlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb250YWlucy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUUzRCxNQUFNLDRCQUE0QixNQUFvQjtJQUNsRCxNQUFNLENBQUMsQ0FBQyxPQUF3QixFQUEwQixFQUFFO1FBQ3hELHVCQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ25DLHVCQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsdUJBQU0sWUFBWSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0UsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLGNBQVcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7YUFDaEg7U0FDSjtRQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDN0IsQ0FBQTtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIFZhbGlkYXRvckZuLFxyXG4gICAgQWJzdHJhY3RDb250cm9sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBSZWdleFZhbGlkYXRvciB9IGZyb20gXCIuLi91dGlsL3JlZ2V4LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgeyBSZWdFeFJ1bGUgfSBmcm9tIFwiLi4vdXRpbC9yZWdleC1ydWxlc1wiO1xyXG5pbXBvcnQgeyBEZWNvcmF0b3JOYW1lIH0gZnJvbSBcIi4uL3V0aWwvZGVjb3JhdG9yLW5hbWVcIlxyXG5pbXBvcnQgeyBPYmplY3RNYWtlciB9IGZyb20gXCIuLi91dGlsL29iamVjdC1tYWtlclwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Q29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9jb25maWcvZGVmYXVsdC1jb25maWdcIjtcclxuaW1wb3J0IHsgQXBwbGljYXRpb25VdGlsIH0gZnJvbSBcIi4uL3V0aWwvYXBwLXV0aWxcIjtcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdG9yLnN0YXRpY1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zVmFsaWRhdG9yKGNvbmZpZzpEZWZhdWx0Q29uZmlnKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cFZhbHVlID0gQXBwbGljYXRpb25VdGlsLmdldFBhcmVudE9iamVjdFZhbHVlKGNvbnRyb2wpO1xyXG4gICAgICAgIGNvbmZpZyA9IEFwcGxpY2F0aW9uVXRpbC5nZXRDb25maWdPYmplY3QoY29uZmlnKTtcclxuICAgICAgICBjb25zdCBwYXJlbnRPYmplY3QgPSAoY29udHJvbC5wYXJlbnQpID8gY29udHJvbC5wYXJlbnQudmFsdWUgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKExpbnEuSXNQYXNzZWQoZm9ybUdyb3VwVmFsdWUsIGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb25zLCBwYXJlbnRPYmplY3QpKSB7XHJcbiAgICAgICAgICAgIGlmIChSZWdleFZhbGlkYXRvci5pc05vdEJsYW5rKGNvbnRyb2xWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sVmFsdWUuaW5kZXhPZihjb25maWcudmFsdWUpID09IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RNYWtlci50b0pzb24oQW5ub3RhdGlvblR5cGVzLmNvbnRhaW5zLCBjb25maWcubWVzc2FnZSB8fCBudWxsLCBbY29uZmlnLnZhbHVlLGNvbnRyb2xWYWx1ZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBPYmplY3RNYWtlci5udWxsKCk7XHJcbiAgICB9XHJcbn1cclxuIl19 |
@@ -13,2 +13,3 @@ /** | ||
import { conditionalChangeValidator } from "../reactive-form-validators/conditional-change.validator"; | ||
import { Linq } from '../util/linq'; | ||
const /** @type {?} */ APP_VALIDATORS = { | ||
@@ -50,2 +51,5 @@ "alphaNumeric": alphaNumericValidator, | ||
this.conditionalObjectProps = []; | ||
this.conditionalValidationInstance = {}; | ||
this.builderConfigurationConditionalObjectProps = []; | ||
this.isNested = false; | ||
} | ||
@@ -72,2 +76,19 @@ /** | ||
/** | ||
* @param {?} fomrBuilderConfiguration | ||
* @return {?} | ||
*/ | ||
extractExpressions(fomrBuilderConfiguration) { | ||
if (fomrBuilderConfiguration && fomrBuilderConfiguration.validations) { | ||
for (var /** @type {?} */ property in fomrBuilderConfiguration.validations) { | ||
for (var /** @type {?} */ decorator in fomrBuilderConfiguration.validations[property]) { | ||
if (fomrBuilderConfiguration.validations[property][decorator].conditionalExpressions) { | ||
let /** @type {?} */ columns = Linq.expressionColumns(fomrBuilderConfiguration.validations[property][decorator].conditionalExpressions); | ||
defaultContainer.addChangeValidation(this.conditionalValidationInstance, property, columns); | ||
} | ||
} | ||
} | ||
} | ||
return null; | ||
} | ||
/** | ||
* @param {?} property | ||
@@ -82,7 +103,16 @@ * @param {?} propertyValidators | ||
let /** @type {?} */ columns = []; | ||
if (instance.conditionalValidationProps && instance.conditionalValidationProps[property.name]) { | ||
validators.push(conditionalChangeValidator(instance.conditionalValidationProps[property.name])); | ||
if ((instance.conditionalValidationProps && instance.conditionalValidationProps[property.name]) || (this.conditionalValidationInstance.conditionalValidationProps && this.conditionalValidationInstance.conditionalValidationProps[property.name])) { | ||
let /** @type {?} */ props = []; | ||
if ((instance.conditionalValidationProps && instance.conditionalValidationProps[property.name])) | ||
instance.conditionalValidationProps[property.name].forEach(t => props.push(t)); | ||
if (this.conditionalValidationInstance.conditionalValidationProps && this.conditionalValidationInstance.conditionalValidationProps[property.name]) | ||
this.conditionalValidationInstance.conditionalValidationProps[property.name].forEach(t => props.push(t)); | ||
validators.push(conditionalChangeValidator(props)); | ||
} | ||
if (this.conditionalObjectProps.length > 0) { | ||
let /** @type {?} */ propConditions = this.conditionalObjectProps.filter(t => t.propName == property.name); | ||
if (this.conditionalObjectProps.length > 0 || this.builderConfigurationConditionalObjectProps.length > 0) { | ||
let /** @type {?} */ propConditions = []; | ||
if (this.conditionalObjectProps) | ||
propConditions = this.conditionalObjectProps.filter(t => t.propName == property.name); | ||
if (this.builderConfigurationConditionalObjectProps) | ||
this.builderConfigurationConditionalObjectProps.filter(t => t.propName == property.name).forEach(t => propConditions.push(t)); | ||
propConditions.forEach(t => { | ||
@@ -167,2 +197,6 @@ if (t.referencePropName && columns.indexOf(t.referencePropName) == -1) | ||
} | ||
else if (model && (entityObject instanceof FormBuilderConfiguration) && (typeof model == "object")) { | ||
json["entityObject"] = model; | ||
json["model"] = model.constructor; | ||
} | ||
return json; | ||
@@ -182,2 +216,4 @@ } | ||
formBuilderConfiguration = json["formBuilderConfiguration"]; | ||
if (formBuilderConfiguration) | ||
this.extractExpressions(formBuilderConfiguration); | ||
let /** @type {?} */ instanceContainer = this.getInstanceContainer(model); | ||
@@ -200,9 +236,15 @@ this.checkObjectPropAdditionalValidation(instanceContainer, entityObject); | ||
formGroupObject[property.name] = [entityObject[property.name], this.addFormControl(property, propertyValidators, additionalValidations[property.name], instanceContainer)]; | ||
this.isNested = false; | ||
break; | ||
case OBJECT_PROPERTY: | ||
if (entityObject[property.name] && entityObject[property.name] instanceof Object) { | ||
this.isNested = true; | ||
if (instanceContainer && instanceContainer.conditionalObjectProps) | ||
this.conditionalObjectProps = instanceContainer.conditionalObjectProps["filter"](t => t.objectPropName == property.name); | ||
if (this.conditionalValidationInstance && this.conditionalValidationInstance.conditionalObjectProps) | ||
this.builderConfigurationConditionalObjectProps = this.conditionalValidationInstance.conditionalObjectProps.filter(t => t.objectPropName == property.name); | ||
formGroupObject[property.name] = this.formGroup(property.entity, entityObject[property.name], formBuilderConfiguration); | ||
this.conditionalObjectProps = []; | ||
this.builderConfigurationConditionalObjectProps = []; | ||
this.isNested = false; | ||
} | ||
@@ -212,2 +254,3 @@ break; | ||
if (entityObject[property.name] && entityObject[property.name] instanceof Array) { | ||
this.isNested = true; | ||
var /** @type {?} */ formArrayGroup = []; | ||
@@ -218,7 +261,11 @@ let /** @type {?} */ index = 0; | ||
this.conditionalObjectProps = instanceContainer.conditionalObjectProps["filter"](t => t.objectPropName == property.name && t.arrayIndex == index); | ||
if (this.conditionalValidationInstance && this.conditionalValidationInstance.conditionalObjectProps) | ||
this.builderConfigurationConditionalObjectProps = this.conditionalValidationInstance.conditionalObjectProps.filter(t => t.objectPropName == property.name && t.arrayIndex == index); | ||
formArrayGroup.push(this.formGroup(property.entity, subObject, formBuilderConfiguration)); | ||
index++; | ||
this.conditionalObjectProps = []; | ||
this.builderConfigurationConditionalObjectProps = []; | ||
} | ||
formGroupObject[property.name] = this.formBuilder.array(formArrayGroup); | ||
this.isNested = false; | ||
} | ||
@@ -229,2 +276,6 @@ break; | ||
}); | ||
if (!this.isNested) { | ||
this.conditionalValidationInstance = {}; | ||
this.builderConfigurationConditionalObjectProps = []; | ||
} | ||
return this.formBuilder.group(formGroupObject); | ||
@@ -246,5 +297,11 @@ } | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.conditionalValidationInstance; | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.builderConfigurationConditionalObjectProps; | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.isNested; | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.formBuilder; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3J4LWZvcm0tYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUF5QixNQUFNLGdCQUFnQixDQUFBO0FBRW5FLE9BQU8sRUFDSCxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUM5RyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFDakgsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFDeEYsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQ3JHLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUNqRyxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBR3RHLHVCQUFNLGNBQWMsR0FBZ0M7SUFDaEQsY0FBYyxFQUFFLHFCQUFxQjtJQUNyQyxPQUFPLEVBQUUsY0FBYztJ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dkpKLFVBQVU7Ozs7WUFuREYsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIlxyXG5pbXBvcnQgeyBUeXBlLCBEZWNvcmF0b3JOYW1lIH0gZnJvbSBcIi4uL3V0aWxcIlxyXG5pbXBvcnQge1xyXG4gICAgYWxwaGFOdW1lcmljVmFsaWRhdG9yLCBhbHBoYVZhbGlkYXRvciwgY29tcGFyZVZhbGlkYXRvciwgZW1haWxWYWxpZGF0b3IsIGhleENvbG9yVmFsaWRhdG9yLCBsb3dlcmNhc2VWYWxpZGF0b3IsXHJcbiAgICBtYXhEYXRlVmFsaWRhdG9yLCBtYXhOdW1iZXJWYWxpZGF0b3IsIG1pbkRhdGVWYWxpZGF0b3IsIG1pbk51bWJlclZhbGlkYXRvciwgY29udGFpbnNWYWxpZGF0b3IsIHVwcGVyY2FzZVZhbGlkYXRvcixcclxuICAgIHJhbmdlVmFsaWRhdG9yLCBwYXR0ZXJuVmFsaWRhdG9yLCByZXF1aXJlZFZhbGlkYXRvciwgY3JlZGl0Q2FyZFZhbGlkYXRvciwgZGlnaXRWYWxpZGF0b3IsXHJcbiAgICBtYXhMZW5ndGhWYWxpZGF0b3IsIG1pbkxlbmd0aFZhbGlkYXRvciwgcGFzc3dvcmRWYWxpZGF0b3IsIHRpbWVWYWxpZGF0b3IsIHVybFZhbGlkYXRvciwganNvblZhbGlkYXRvcixcclxuICAgIGdyZWF0ZXJUaGFuRXF1YWxUb1ZhbGlkYXRvciwgZ3JlYXRlclRoYW5WYWxpZGF0b3IsIGxlc3NUaGFuRXF1YWxUb1ZhbGlkYXRvciwgbGVzc1RoYW5WYWxpZGF0b3JcclxufSBmcm9tICcuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gJy4uL2NvcmUvZGVmYXVsdENvbnRhaW5lcic7XHJcbmltcG9ydCB7IERlY29yYXRvckNvbmZpZ3VyYXRpb24sIEluc3RhbmNlQ29udGFpbmVyLCBQcm9wZXJ0eUluZm8gfSBmcm9tICcuLi9jb3JlL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzXCJcclxuaW1wb3J0IHsgQVJSQVlfUFJPUEVSVFksIE9CSkVDVF9QUk9QRVJUWSwgUFJPUEVSVFkgfSBmcm9tIFwiLi4vY29uc3RcIlxyXG5pbXBvcnQgeyBQcm9wVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvcHJvcC12YWxpZGF0aW9uLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vY29yZS92YWxpZGF0b3Iuc3RhdGljXCI7XHJcbmltcG9ydCB7IGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yIH0gZnJvbSBcIi4uL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb25kaXRpb25hbC1jaGFuZ2UudmFsaWRhdG9yXCI7XHJcblxyXG5cclxuY29uc3QgQVBQX1ZBTElEQVRPUlM6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfSA9IHtcclxuICAgIFwiYWxwaGFOdW1lcmljXCI6IGFscGhhTnVtZXJpY1ZhbGlkYXRvcixcclxuICAgIFwiYWxwaGFcIjogYWxwaGFWYWxpZGF0b3IsXHJcbiAgICBcImNvbXBhcmVcIjogY29tcGFyZVZhbGlkYXRvcixcclxuICAgIFwiZW1haWxcIjogZW1haWxWYWxpZGF0b3IsXHJcbiAgICBcImhleENvbG9yXCI6IGhleENvbG9yVmFsaWRhdG9yLFxyXG4gICAgXCJsb3dlckNhc2VcIjogbG93ZXJjYXNlVmFsaWRhdG9yLFxyXG4gICAgXCJtYXhEYXRlXCI6IG1heERhdGVWYWxpZGF0b3IsXHJcbiAgICBcIm1heE51bWJlclwiOiBtYXhOdW1iZXJWYWxpZGF0b3IsXHJcbiAgICBcIm1pbkRhdGVcIjogbWluRGF0ZVZhbGlkYXRvcixcclxuICAgIFwibWluTnVtYmVyXCI6IG1pbk51bWJlclZhbGlkYXRvcixcclxuICAgIFwiY29udGFpbnNcIjogY29udGFpbnNWYWxpZGF0b3IsXHJcbiAgICBcInVwcGVyQ2FzZVwiOiB1cHBlcmNhc2VWYWxpZGF0b3IsXHJcbiAgICBcIm1heExlbmd0aFwiOiBtYXhMZW5ndGhWYWxpZGF0b3IsXHJcbiAgICBcIm1pbkxlbmd0aFwiOiBtaW5MZW5ndGhWYWxpZGF0b3IsXHJcbiAgICBcInBhc3N3b3JkXCI6IHBhc3N3b3JkVmFsaWRhdG9yLFxyXG4gICAgXCJyYW5nZVwiOiByYW5nZVZhbGlkYXRvcixcclxuICAgIFwicmVxdWlyZWRcIjogcmVxdWlyZWRWYWxpZGF0b3IsXHJcbiAgICBcImNyZWRpdENhcmRcIjogY3JlZGl0Q2FyZFZhbGlkYXRvcixcclxuICAgIFwiZGlnaXRcIjogZGlnaXRWYWxpZGF0b3IsXHJcbiAgICBcInBhdHRlcm5cIjogcGF0dGVyblZhbGlkYXRvcixcclxuICAgIFwidGltZVwiOiB0aW1lVmFsaWRhdG9yLFxyXG4gICAgXCJ1cmxcIjogdXJsVmFsaWRhdG9yLFxyXG4gICAgXCJqc29uXCI6IGpzb25WYWxpZGF0b3IsXHJcbiAgICBcImdyZWF0ZXJUaGFuXCI6IGdyZWF0ZXJUaGFuVmFsaWRhdG9yLFxyXG4gICAgXCJncmVhdGVyVGhhbkVxdWFsVG9cIjogZ3JlYXRlclRoYW5FcXVhbFRvVmFsaWRhdG9yLFxyXG4gICAgXCJsZXNzVGhhblwiOiBsZXNzVGhhblZhbGlkYXRvcixcclxuICAgIFwibGVzc1RoYW5FcXVhbFRvXCI6IGxlc3NUaGFuRXF1YWxUb1ZhbGlkYXRvclxyXG59XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFJ4Rm9ybUJ1aWxkZXIge1xyXG4gICAgcHJpdmF0ZSBuZXN0ZWRQcm9wOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGNvbmRpdGlvbmFsT2JqZWN0UHJvcHM6IGFueVtdID0gW107XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikgeyB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICByZXR1cm4gZGVmYXVsdENvbnRhaW5lci5nZXQoaW5zdGFuY2VGdW5jKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBvYmplY3Q6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGZvciAodmFyIGNvbCBpbiBvYmplY3QpIHtcclxuICAgICAgICAgICAgdmFyIGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFtjb2xdKTtcclxuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShvYmplY3RbY29sXSk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZEZvcm1Db250cm9sKHByb3BlcnR5OiBQcm9wZXJ0eUluZm8sIHByb3BlcnR5VmFsaWRhdG9yczogRGVjb3JhdG9yQ29uZmlndXJhdGlvbltdLCBwcm9wVmFsaWRhdGlvbkNvbmZpZzogUHJvcFZhbGlkYXRpb25Db25maWcsIGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lcikge1xyXG4gICAgICAgIGxldCB2YWxpZGF0b3JzID0gW107XHJcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBbXTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgJiYgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHkubmFtZV0pIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgcHJvcENvbmRpdGlvbnMgPSB0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5wcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lKTtcclxuICAgICAgICAgICAgcHJvcENvbmRpdGlvbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0LnJlZmVyZW5jZVByb3BOYW1lICYmIGNvbHVtbnMuaW5kZXhPZih0LnJlZmVyZW5jZVByb3BOYW1lKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLnB1c2godC5yZWZlcmVuY2VQcm9wTmFtZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goY29uZGl0aW9uYWxDaGFuZ2VWYWxpZGF0b3IoY29sdW1ucykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eVZhbGlkYXRvciBvZiBwcm9wZXJ0eVZhbGlkYXRvcnMpIHtcclxuXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChBUFBfVkFMSURBVE9SU1twcm9wZXJ0eVZhbGlkYXRvci5hbm5vdGF0aW9uVHlwZV0ocHJvcGVydHlWYWxpZGF0b3IuY29uZmlnLCApKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJvcFZhbGlkYXRpb25Db25maWcpXHJcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbFZhbGlkYXRpb24odmFsaWRhdG9ycywgcHJvcFZhbGlkYXRpb25Db25maWcpO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZGl0aW9uYWxWYWxpZGF0aW9uKHZhbGlkYXRpb25zOiBhbnlbXSwgcHJvcFZhbGlkYXRpb25Db25maWc6IFByb3BWYWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgZm9yICh2YXIgY29sIGluIEFubm90YXRpb25UeXBlcykge1xyXG4gICAgICAgICAgICBpZiAocHJvcFZhbGlkYXRpb25Db25maWdbQW5ub3RhdGlvblR5cGVzW2NvbF1dICYmIGNvbCAhPSBcImN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKEFQUF9WQUxJREFUT1JTW0Fubm90YXRpb25UeXBlc1tjb2xdXShwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjb2wgPT0gQW5ub3RhdGlvblR5cGVzLmN1c3RvbSAmJiBwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKHByb3BWYWxpZGF0aW9uQ29uZmlnW2NvbF0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja09iamVjdFByb3BBZGRpdGlvbmFsVmFsaWRhdGlvbjxUPihpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIsIG9iamVjdDogVCkge1xyXG4gICAgICAgIHZhciBwcm9wcyA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXMuZmlsdGVyKHQgPT4gdC5wcm9wZXJ0eVR5cGUgPT0gT0JKRUNUX1BST1BFUlRZIHx8IHQucHJvcGVydHlUeXBlID09IEFSUkFZX1BST1BFUlRZKVxyXG4gICAgICAgIHByb3BzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuZ2V0SW5zdGFuY2VDb250YWluZXIodC5lbnRpdHkpO1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwcm9wID0gaW5zdGFuY2UucHJvcGVydGllcy5maWx0ZXIodCA9PiB0Lm5hbWUgPT0ga2V5KVswXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3ApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3AgPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzLmZpbHRlcih0ID0+IHQubmFtZSA9PSBrZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2tleV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNba2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5wcm9wZXJ0eVR5cGUgIT0gQVJSQVlfUFJPUEVSVFkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNba2V5XS5wdXNoKFt0Lm5hbWUsIHhdLmpvaW4oJy4nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldLnB1c2goW3QubmFtZSwgeF0uam9pbignW10nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGdldE9iamVjdChtb2RlbDogYW55IHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgZW50aXR5T2JqZWN0PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiwgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uPzogRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKToge1trZXk6c3RyaW5nXTphbnl9IHtcclxuICAgICAgICBsZXQganNvbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIG1vZGVsID09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICAgICAganNvbi5tb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgICBpZiAoZW50aXR5T2JqZWN0ICYmICEoZW50aXR5T2JqZWN0IGluc3RhbmNlb2YgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKSlcclxuICAgICAgICAgICAganNvbi5lbnRpdHlPYmplY3QgPSBlbnRpdHlPYmplY3Q7XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlPYmplY3QgaW5zdGFuY2VvZiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gJiYgIWZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbilcclxuICAgICAgICAgICAganNvbi5mb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gPSBlbnRpdHlPYmplY3Q7XHJcbiAgICAgICAgZWxzZSBpZiAoIShlbnRpdHlPYmplY3QgaW5zdGFuY2VvZiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbilcclxuICAgICAgICAgICAganNvbi5mb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gPSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFlbnRpdHlPYmplY3QpIHtcclxuICAgICAgICAgICAganNvbi5lbnRpdHlPYmplY3QgPSBtb2RlbDtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBtb2RlbCA9PSBcIm9iamVjdFwiKVxyXG4gICAgICAgICAgICAgICAganNvbi5tb2RlbCA9IG1vZGVsLmNvbnN0cnVjdG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ganNvbjtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtR3JvdXA8VD4obW9kZWw6IFR5cGU8VD4gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBlbnRpdHlPYmplY3Q/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24/OiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pOiBGb3JtR3JvdXAge1xyXG4gICAgICAgIGxldCBqc29uID0gdGhpcy5nZXRPYmplY3QobW9kZWwsIGVudGl0eU9iamVjdCwgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKTtcclxuICAgICAgICBtb2RlbCA9IGpzb24ubW9kZWw7XHJcbiAgICAgICAgZW50aXR5T2JqZWN0ID0ganNvbi5lbnRpdHlPYmplY3Q7XHJcbiAgICAgICAgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uID0ganNvbi5mb3JtQnVpbGRlckNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciA9IHRoaXMuZ2V0SW5zdGFuY2VDb250YWluZXIobW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tPYmplY3RQcm9wQWRkaXRpb25hbFZhbGlkYXRpb24oaW5zdGFuY2VDb250YWluZXIsIGVudGl0eU9iamVjdCk7XHJcbiAgICAgICAgbGV0IGZvcm1Hcm91cE9iamVjdCA9IHt9O1xyXG4gICAgICAgIGxldCBmb3JtQ2hpbGRHcm91cCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgZm9ybUFycmF5R3JvdXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdmFyIGFkZGl0aW9uYWxWYWxpZGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBQcm9wVmFsaWRhdGlvbkNvbmZpZyB9ID0ge307XHJcbiAgICAgICAgaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcclxuICAgICAgICAgICAgbGV0IGlzSW5jbHVkZVByb3AgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5leGNsdWRlUHJvcHMgJiYgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLmV4Y2x1ZGVQcm9wcy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgaXNJbmNsdWRlUHJvcCA9IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5leGNsdWRlUHJvcHMuaW5kZXhPZihwcm9wZXJ0eS5uYW1lKSA9PSAtMVxyXG4gICAgICAgICAgICBpZiAoZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9ucylcclxuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxWYWxpZGF0aW9ucyA9IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9ucztcclxuICAgICAgICAgICAgaWYgKGlzSW5jbHVkZVByb3ApIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHkucHJvcGVydHlUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5VmFsaWRhdG9ycyA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnR5QW5ub3RhdGlvbnMuZmlsdGVyKHQgPT4gdC5wcm9wZXJ0eU5hbWUgPT0gcHJvcGVydHkubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE9iamVjdFtwcm9wZXJ0eS5uYW1lXSA9IFtlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0sIHRoaXMuYWRkRm9ybUNvbnRyb2wocHJvcGVydHksIHByb3BlcnR5VmFsaWRhdG9ycywgYWRkaXRpb25hbFZhbGlkYXRpb25zW3Byb3BlcnR5Lm5hbWVdLCBpbnN0YW5jZUNvbnRhaW5lcildO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9QUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSAmJiBlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0gaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZUNvbnRhaW5lciAmJiBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5vYmplY3RQcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwT2JqZWN0W3Byb3BlcnR5Lm5hbWVdID0gdGhpcy5mb3JtR3JvdXAocHJvcGVydHkuZW50aXR5LCBlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0sIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEFSUkFZX1BST1BFUlRZOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdICYmIGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybUFycmF5R3JvdXAgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzdWJPYmplY3Qgb2YgZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyICYmIGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5vYmplY3RQcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lICYmIHQuYXJyYXlJbmRleCA9PSBpbmRleClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQXJyYXlHcm91cC5wdXNoKHRoaXMuZm9ybUdyb3VwKHByb3BlcnR5LmVudGl0eSwgc3ViT2JqZWN0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwT2JqZWN0W3Byb3BlcnR5Lm5hbWVdID0gdGhpcy5mb3JtQnVpbGRlci5hcnJheShmb3JtQXJyYXlHcm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cChmb3JtR3JvdXBPYmplY3QpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3J4LWZvcm0tYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUF5QixNQUFNLGdCQUFnQixDQUFBO0FBRW5FLE9BQU8sRUFDSCxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUM5RyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFDakgsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFDeEYsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQ3JHLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUNqRyxNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHbkMsdUJBQU0sY0FBYyxHQUFnQztJQUNo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ZUFBZSxDQUFDLENBQUM7S0FDbEQ7OztZQWxNSixVQUFVOzs7O1lBcERGLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCJcclxuaW1wb3J0IHsgVHlwZSwgRGVjb3JhdG9yTmFtZSB9IGZyb20gXCIuLi91dGlsXCJcclxuaW1wb3J0IHtcclxuICAgIGFscGhhTnVtZXJpY1ZhbGlkYXRvciwgYWxwaGFWYWxpZGF0b3IsIGNvbXBhcmVWYWxpZGF0b3IsIGVtYWlsVmFsaWRhdG9yLCBoZXhDb2xvclZhbGlkYXRvciwgbG93ZXJjYXNlVmFsaWRhdG9yLFxyXG4gICAgbWF4RGF0ZVZhbGlkYXRvciwgbWF4TnVtYmVyVmFsaWRhdG9yLCBtaW5EYXRlVmFsaWRhdG9yLCBtaW5OdW1iZXJWYWxpZGF0b3IsIGNvbnRhaW5zVmFsaWRhdG9yLCB1cHBlcmNhc2VWYWxpZGF0b3IsXHJcbiAgICByYW5nZVZhbGlkYXRvciwgcGF0dGVyblZhbGlkYXRvciwgcmVxdWlyZWRWYWxpZGF0b3IsIGNyZWRpdENhcmRWYWxpZGF0b3IsIGRpZ2l0VmFsaWRhdG9yLFxyXG4gICAgbWF4TGVuZ3RoVmFsaWRhdG9yLCBtaW5MZW5ndGhWYWxpZGF0b3IsIHBhc3N3b3JkVmFsaWRhdG9yLCB0aW1lVmFsaWRhdG9yLCB1cmxWYWxpZGF0b3IsIGpzb25WYWxpZGF0b3IsXHJcbiAgICBncmVhdGVyVGhhbkVxdWFsVG9WYWxpZGF0b3IsIGdyZWF0ZXJUaGFuVmFsaWRhdG9yLCBsZXNzVGhhbkVxdWFsVG9WYWxpZGF0b3IsIGxlc3NUaGFuVmFsaWRhdG9yXHJcbn0gZnJvbSAnLi4vcmVhY3RpdmUtZm9ybS12YWxpZGF0b3JzJztcclxuXHJcbmltcG9ydCB7IGRlZmF1bHRDb250YWluZXIgfSBmcm9tICcuLi9jb3JlL2RlZmF1bHRDb250YWluZXInO1xyXG5pbXBvcnQgeyBEZWNvcmF0b3JDb25maWd1cmF0aW9uLCBJbnN0YW5jZUNvbnRhaW5lciwgUHJvcGVydHlJbmZvIH0gZnJvbSAnLi4vY29yZS92YWxpZGF0b3IuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVsc1wiXHJcbmltcG9ydCB7IEFSUkFZX1BST1BFUlRZLCBPQkpFQ1RfUFJPUEVSVFksIFBST1BFUlRZIH0gZnJvbSBcIi4uL2NvbnN0XCJcclxuaW1wb3J0IHsgUHJvcFZhbGlkYXRpb25Db25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb3AtdmFsaWRhdGlvbi1jb25maWdcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdG9yLnN0YXRpY1wiO1xyXG5pbXBvcnQgeyBjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvciB9IGZyb20gXCIuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvY29uZGl0aW9uYWwtY2hhbmdlLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSAnLi4vdXRpbC9saW5xJ1xyXG5cclxuXHJcbmNvbnN0IEFQUF9WQUxJREFUT1JTOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0gPSB7XHJcbiAgICBcImFscGhhTnVtZXJpY1wiOiBhbHBoYU51bWVyaWNWYWxpZGF0b3IsXHJcbiAgICBcImFscGhhXCI6IGFscGhhVmFsaWRhdG9yLFxyXG4gICAgXCJjb21wYXJlXCI6IGNvbXBhcmVWYWxpZGF0b3IsXHJcbiAgICBcImVtYWlsXCI6IGVtYWlsVmFsaWRhdG9yLFxyXG4gICAgXCJoZXhDb2xvclwiOiBoZXhDb2xvclZhbGlkYXRvcixcclxuICAgIFwibG93ZXJDYXNlXCI6IGxvd2VyY2FzZVZhbGlkYXRvcixcclxuICAgIFwibWF4RGF0ZVwiOiBtYXhEYXRlVmFsaWRhdG9yLFxyXG4gICAgXCJtYXhOdW1iZXJcIjogbWF4TnVtYmVyVmFsaWRhdG9yLFxyXG4gICAgXCJtaW5EYXRlXCI6IG1pbkRhdGVWYWxpZGF0b3IsXHJcbiAgICBcIm1pbk51bWJlclwiOiBtaW5OdW1iZXJWYWxpZGF0b3IsXHJcbiAgICBcImNvbnRhaW5zXCI6IGNvbnRhaW5zVmFsaWRhdG9yLFxyXG4gICAgXCJ1cHBlckNhc2VcIjogdXBwZXJjYXNlVmFsaWRhdG9yLFxyXG4gICAgXCJtYXhMZW5ndGhcIjogbWF4TGVuZ3RoVmFsaWRhdG9yLFxyXG4gICAgXCJtaW5MZW5ndGhcIjogbWluTGVuZ3RoVmFsaWRhdG9yLFxyXG4gICAgXCJwYXNzd29yZFwiOiBwYXNzd29yZFZhbGlkYXRvcixcclxuICAgIFwicmFuZ2VcIjogcmFuZ2VWYWxpZGF0b3IsXHJcbiAgICBcInJlcXVpcmVkXCI6IHJlcXVpcmVkVmFsaWRhdG9yLFxyXG4gICAgXCJjcmVkaXRDYXJkXCI6IGNyZWRpdENhcmRWYWxpZGF0b3IsXHJcbiAgICBcImRpZ2l0XCI6IGRpZ2l0VmFsaWRhdG9yLFxyXG4gICAgXCJwYXR0ZXJuXCI6IHBhdHRlcm5WYWxpZGF0b3IsXHJcbiAgICBcInRpbWVcIjogdGltZVZhbGlkYXRvcixcclxuICAgIFwidXJsXCI6IHVybFZhbGlkYXRvcixcclxuICAgIFwianNvblwiOiBqc29uVmFsaWRhdG9yLFxyXG4gICAgXCJncmVhdGVyVGhhblwiOiBncmVhdGVyVGhhblZhbGlkYXRvcixcclxuICAgIFwiZ3JlYXRlclRoYW5FcXVhbFRvXCI6IGdyZWF0ZXJUaGFuRXF1YWxUb1ZhbGlkYXRvcixcclxuICAgIFwibGVzc1RoYW5cIjogbGVzc1RoYW5WYWxpZGF0b3IsXHJcbiAgICBcImxlc3NUaGFuRXF1YWxUb1wiOiBsZXNzVGhhbkVxdWFsVG9WYWxpZGF0b3JcclxufVxyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBSeEZvcm1CdWlsZGVyIHtcclxuICAgIHByaXZhdGUgbmVzdGVkUHJvcDogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBjb25kaXRpb25hbE9iamVjdFByb3BzOiBhbnlbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBjb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZTogYW55ID0ge307XHJcbiAgICBwcml2YXRlIGJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wczogYW55W10gPSBbXTtcclxuICAgIHByaXZhdGUgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7IH1cclxuXHJcbiAgICBwcml2YXRlIGdldEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYzogYW55KTogSW5zdGFuY2VDb250YWluZXIge1xyXG4gICAgICAgIHJldHVybiBkZWZhdWx0Q29udGFpbmVyLmdldChpbnN0YW5jZUZ1bmMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VmFsdWUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIG9iamVjdDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgZm9yICh2YXIgY29sIGluIG9iamVjdCkge1xyXG4gICAgICAgICAgICB2YXIgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoW2NvbF0pO1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG9iamVjdFtjb2xdKTtcclxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZXh0cmFjdEV4cHJlc3Npb25zKGZvbXJCdWlsZGVyQ29uZmlndXJhdGlvbjogRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHtcclxuICAgICAgICBpZiAoZm9tckJ1aWxkZXJDb25maWd1cmF0aW9uICYmIGZvbXJCdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9ucykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBmb21yQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGRlY29yYXRvciBpbiBmb21yQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnNbcHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvbXJCdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uc1twcm9wZXJ0eV1bZGVjb3JhdG9yXS5jb25kaXRpb25hbEV4cHJlc3Npb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhmb21yQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnNbcHJvcGVydHldW2RlY29yYXRvcl0uY29uZGl0aW9uYWxFeHByZXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuYWRkQ2hhbmdlVmFsaWRhdGlvbih0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLCBwcm9wZXJ0eSwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkRm9ybUNvbnRyb2wocHJvcGVydHk6IFByb3BlcnR5SW5mbywgcHJvcGVydHlWYWxpZGF0b3JzOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uW10sIHByb3BWYWxpZGF0aW9uQ29uZmlnOiBQcm9wVmFsaWRhdGlvbkNvbmZpZywgaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgbGV0IHZhbGlkYXRvcnMgPSBbXTtcclxuICAgICAgICBsZXQgY29sdW1ucyA9IFtdO1xyXG4gICAgICAgIGlmICgoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgJiYgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHkubmFtZV0pIHx8ICh0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzICYmIHRoaXMuY29uZGl0aW9uYWxWYWxpZGF0aW9uSW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHkubmFtZV0pKSB7XHJcbiAgICAgICAgICAgIGxldCBwcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzICYmIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdKSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdLmZvckVhY2godCA9PiBwcm9wcy5wdXNoKHQpKVxyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyAmJiB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eS5uYW1lXS5mb3JFYWNoKHQgPT4gcHJvcHMucHVzaCh0KSk7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvcihwcm9wcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzLmxlbmd0aCA+IDAgfHwgdGhpcy5idWlsZGVyQ29uZmlndXJhdGlvbkNvbmRpdGlvbmFsT2JqZWN0UHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgcHJvcENvbmRpdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcylcclxuICAgICAgICAgICAgICAgIHByb3BDb25kaXRpb25zID0gdGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzLmZpbHRlcih0ID0+IHQucHJvcE5hbWUgPT0gcHJvcGVydHkubmFtZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wcylcclxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlckNvbmZpZ3VyYXRpb25Db25kaXRpb25hbE9iamVjdFByb3BzLmZpbHRlcih0ID0+IHQucHJvcE5hbWUgPT0gcHJvcGVydHkubmFtZSkuZm9yRWFjaCh0ID0+IHByb3BDb25kaXRpb25zLnB1c2godCkpO1xyXG4gICAgICAgICAgICBwcm9wQ29uZGl0aW9ucy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucmVmZXJlbmNlUHJvcE5hbWUgJiYgY29sdW1ucy5pbmRleE9mKHQucmVmZXJlbmNlUHJvcE5hbWUpID09IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMucHVzaCh0LnJlZmVyZW5jZVByb3BOYW1lKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvcihjb2x1bW5zKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IHByb3BlcnR5VmFsaWRhdG9yIG9mIHByb3BlcnR5VmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goQVBQX1ZBTElEQVRPUlNbcHJvcGVydHlWYWxpZGF0b3IuYW5ub3RhdGlvblR5cGVdKHByb3BlcnR5VmFsaWRhdG9yLmNvbmZpZywgKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHByb3BWYWxpZGF0aW9uQ29uZmlnKVxyXG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxWYWxpZGF0aW9uKHZhbGlkYXRvcnMsIHByb3BWYWxpZGF0aW9uQ29uZmlnKTtcclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZGl0aW9uYWxWYWxpZGF0aW9uKHZhbGlkYXRpb25zOiBhbnlbXSwgcHJvcFZhbGlkYXRpb25Db25maWc6IFByb3BWYWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgZm9yICh2YXIgY29sIGluIEFubm90YXRpb25UeXBlcykge1xyXG4gICAgICAgICAgICBpZiAocHJvcFZhbGlkYXRpb25Db25maWdbQW5ub3RhdGlvblR5cGVzW2NvbF1dICYmIGNvbCAhPSBcImN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKEFQUF9WQUxJREFUT1JTW0Fubm90YXRpb25UeXBlc1tjb2xdXShwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjb2wgPT0gQW5ub3RhdGlvblR5cGVzLmN1c3RvbSAmJiBwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKHByb3BWYWxpZGF0aW9uQ29uZmlnW2NvbF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrT2JqZWN0UHJvcEFkZGl0aW9uYWxWYWxpZGF0aW9uPFQ+KGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciwgb2JqZWN0OiBUKSB7XHJcbiAgICAgICAgdmFyIHByb3BzID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcy5maWx0ZXIodCA9PiB0LnByb3BlcnR5VHlwZSA9PSBPQkpFQ1RfUFJPUEVSVFkgfHwgdC5wcm9wZXJ0eVR5cGUgPT0gQVJSQVlfUFJPUEVSVFkpXHJcbiAgICAgICAgcHJvcHMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5nZXRJbnN0YW5jZUNvbnRhaW5lcih0LmVudGl0eSk7XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcykge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3AgPSBpbnN0YW5jZS5wcm9wZXJ0aWVzLmZpbHRlcih0ID0+IHQubmFtZSA9PSBrZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvcClcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcCA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXMuZmlsdGVyKHQgPT4gdC5uYW1lID09IGtleSlbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNba2V5XSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2tleV0uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BlcnR5VHlwZSAhPSBBUlJBWV9QUk9QRVJUWSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldLnB1c2goW3QubmFtZSwgeF0uam9pbignLicpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2tleV0ucHVzaChbdC5uYW1lLCB4XS5qb2luKCdbXScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T2JqZWN0KG1vZGVsOiBhbnkgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBlbnRpdHlPYmplY3Q/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24/OiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pOiB7W2tleTpzdHJpbmddOmFueX0ge1xyXG4gICAgICAgIGxldCBqc29uOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgbW9kZWwgPT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgICAgICBqc29uLm1vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlPYmplY3QgJiYgIShlbnRpdHlPYmplY3QgaW5zdGFuY2VvZiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pKVxyXG4gICAgICAgICAgICBqc29uLmVudGl0eU9iamVjdCA9IGVudGl0eU9iamVjdDtcclxuXHJcbiAgICAgICAgaWYgKGVudGl0eU9iamVjdCBpbnN0YW5jZW9mIEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAmJiAhZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKVxyXG4gICAgICAgICAgICBqc29uLmZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiA9IGVudGl0eU9iamVjdDtcclxuICAgICAgICBlbHNlIGlmICghKGVudGl0eU9iamVjdCBpbnN0YW5jZW9mIEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbikgJiYgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKVxyXG4gICAgICAgICAgICBqc29uLmZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiA9IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbjtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIWVudGl0eU9iamVjdCkge1xyXG4gICAgICAgICAgICBqc29uLmVudGl0eU9iamVjdCA9IG1vZGVsO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG1vZGVsID09IFwib2JqZWN0XCIpXHJcbiAgICAgICAgICAgICAgICBqc29uLm1vZGVsID0gbW9kZWwuY29uc3RydWN0b3I7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbCAmJiAoZW50aXR5T2JqZWN0IGluc3RhbmNlb2YgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKSAmJiAodHlwZW9mIG1vZGVsID09IFwib2JqZWN0XCIpKSB7XHJcbiAgICAgICAgICAgIGpzb25bXCJlbnRpdHlPYmplY3RcIl0gPSBtb2RlbDtcclxuICAgICAgICAgICAganNvbltcIm1vZGVsXCJdID0gbW9kZWwuY29uc3RydWN0b3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqc29uO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm1Hcm91cDxUPihtb2RlbDogVHlwZTxUPiB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGVudGl0eU9iamVjdD86IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24sIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbj86IEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbik6IEZvcm1Hcm91cCB7XHJcbiAgICAgICAgbGV0IGpzb24gPSB0aGlzLmdldE9iamVjdChtb2RlbCwgZW50aXR5T2JqZWN0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIG1vZGVsID0ganNvbi5tb2RlbDtcclxuICAgICAgICBlbnRpdHlPYmplY3QgPSBqc29uLmVudGl0eU9iamVjdDtcclxuICAgICAgICBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gPSBqc29uLmZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbjtcclxuICAgICAgICBpZiAoZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKVxyXG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RFeHByZXNzaW9ucyhmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIgPSB0aGlzLmdldEluc3RhbmNlQ29udGFpbmVyKG1vZGVsKTtcclxuICAgICAgICB0aGlzLmNoZWNrT2JqZWN0UHJvcEFkZGl0aW9uYWxWYWxpZGF0aW9uKGluc3RhbmNlQ29udGFpbmVyLCBlbnRpdHlPYmplY3QpO1xyXG4gICAgICAgIGxldCBmb3JtR3JvdXBPYmplY3QgPSB7fTtcclxuICAgICAgICBsZXQgZm9ybUNoaWxkR3JvdXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgbGV0IGZvcm1BcnJheUdyb3VwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHZhciBhZGRpdGlvbmFsVmFsaWRhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogUHJvcFZhbGlkYXRpb25Db25maWcgfSA9IHt9O1xyXG4gICAgICAgIGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpc0luY2x1ZGVQcm9wID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAmJiBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24uZXhjbHVkZVByb3BzICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5leGNsdWRlUHJvcHMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIGlzSW5jbHVkZVByb3AgPSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24uZXhjbHVkZVByb3BzLmluZGV4T2YocHJvcGVydHkubmFtZSkgPT0gLTFcclxuICAgICAgICAgICAgaWYgKGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAmJiBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnMpXHJcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsVmFsaWRhdGlvbnMgPSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnM7XHJcbiAgICAgICAgICAgIGlmIChpc0luY2x1ZGVQcm9wKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5LnByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUFJPUEVSVFk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eVZhbGlkYXRvcnMgPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0eUFubm90YXRpb25zLmZpbHRlcih0ID0+IHQucHJvcGVydHlOYW1lID09IHByb3BlcnR5Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBPYmplY3RbcHJvcGVydHkubmFtZV0gPSBbZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdLCB0aGlzLmFkZEZvcm1Db250cm9sKHByb3BlcnR5LCBwcm9wZXJ0eVZhbGlkYXRvcnMsIGFkZGl0aW9uYWxWYWxpZGF0aW9uc1twcm9wZXJ0eS5uYW1lXSwgaW5zdGFuY2VDb250YWluZXIpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05lc3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9QUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSAmJiBlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0gaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNOZXN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyICYmIGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzID0gaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5maWx0ZXIodCA9PiB0Lm9iamVjdFByb3BOYW1lID09IHByb3BlcnR5Lm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZSAmJiB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyQ29uZmlndXJhdGlvbkNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5vYmplY3RQcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE9iamVjdFtwcm9wZXJ0eS5uYW1lXSA9IHRoaXMuZm9ybUdyb3VwKHByb3BlcnR5LmVudGl0eSwgZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05lc3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQVJSQVlfUFJPUEVSVFk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0gJiYgZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNOZXN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvcm1BcnJheUdyb3VwID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3ViT2JqZWN0IG9mIGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZUNvbnRhaW5lciAmJiBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbE9iamVjdFByb3BzLmZpbHRlcih0ID0+IHQub2JqZWN0UHJvcE5hbWUgPT0gcHJvcGVydHkubmFtZSAmJiB0LmFycmF5SW5kZXggPT0gaW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxWYWxpZGF0aW9uSW5zdGFuY2UgJiYgdGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IHRoaXMuY29uZGl0aW9uYWxWYWxpZGF0aW9uSW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5maWx0ZXIodCA9PiB0Lm9iamVjdFByb3BOYW1lID09IHByb3BlcnR5Lm5hbWUgJiYgdC5hcnJheUluZGV4ID09IGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQXJyYXlHcm91cC5wdXNoKHRoaXMuZm9ybUdyb3VwKHByb3BlcnR5LmVudGl0eSwgc3ViT2JqZWN0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlckNvbmZpZ3VyYXRpb25Db25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBPYmplY3RbcHJvcGVydHkubmFtZV0gPSB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KGZvcm1BcnJheUdyb3VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNOZXN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICghdGhpcy5pc05lc3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlckNvbmZpZ3VyYXRpb25Db25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGZvcm1Hcm91cE9iamVjdCk7XHJcbiAgICB9XHJcbn1cclxuIl19 |
@@ -162,2 +162,2 @@ /** | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdENvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJjb3JlL2RlZmF1bHRDb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsTUFBTSxDQUFDLHFCQUFNLGdCQUFnQixHQU1yQixJQUFJO0lBQUM7eUJBQ29DLEVBQUU7S0FrRjlDOzs7Ozs7SUFoRkcscUJBQUc7Ozs7O0lBQUgsVUFBTyxZQUFpQjtRQUNwQixxQkFBSSxRQUFRLEdBQXNCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQUEsUUFBUSxJQUFJLE9BQUEsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLEVBQWxDLENBQWtDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRyxNQUFNLENBQUMsUUFBUSxDQUFDO0tBQ25COzs7OztJQUVELHNDQUFvQjs7OztJQUFwQixVQUFxQixZQUFpQjtRQUNsQyxxQkFBSSxpQkFBaUIsR0FBc0I7WUFDdkMsUUFBUSxFQUFFLFlBQVk7WUFDdEIsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixVQUFVLEVBQUUsRUFBRTtTQUNqQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsaUJBQWlCLENBQUM7S0FDNUI7Ozs7OztJQUVELDZCQUFXOzs7OztJQUFYLFVBQVksWUFBaUIsRUFBRSxZQUEwQjtRQUNyRCxxQkFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBQSxRQUFRLElBQUksT0FBQSxRQUFR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QUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUMxRTtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDSixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQzs0QkFDakMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQzt3QkFDbkMsUUFBUSxDQUFDLHNCQUFzQixTQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUMzQztpQkFDSjthQUNKLENBQUMsQ0FBQTtTQUNMO0tBQ0o7a0JBN0ZUO0NBOEZLLEFBbkZRLElBbUZQLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvckNvbmZpZ3VyYXRpb24sIEluc3RhbmNlQ29udGFpbmVyLCBQcm9wZXJ0eUluZm8gfSBmcm9tICcuL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi92YWxpZGF0b3Iuc3RhdGljXCI7XHJcbmltcG9ydCB7IFBST1BFUlRZIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcblxyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lcjpcclxuICAgIHtcclxuICAgICAgICBnZXQ8VD4oaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lcixcclxuICAgICAgICBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCxcclxuICAgICAgICBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IHZvaWRcclxuICAgICAgICBhZGRQcm9wZXJ0eShpbnN0YW5jZUZ1bmM6IGFueSwgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8pOiB2b2lkXHJcbiAgICB9ID0gbmV3IChjbGFzcyB7XHJcbiAgICAgICAgcHJpdmF0ZSBpbnN0YW5jZXM6IEluc3RhbmNlQ29udGFpbmVyW10gPSBbXTtcclxuXHJcbiAgICAgICAgZ2V0PFQ+KGluc3RhbmNlRnVuYzogYW55KTogSW5zdGFuY2VDb250YWluZXIge1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciA9IHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZUZ1bmMsXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eUFubm90YXRpb25zOiBbXSxcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IFtdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZXMucHVzaChpbnN0YW5jZUNvbnRhaW5lcik7XHJcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZUNvbnRhaW5lcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFkZFByb3BlcnR5KGluc3RhbmNlRnVuYzogYW55LCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbyk6IHZvaWQge1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2UsIHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHlJbmZvKGluc3RhbmNlLCBwcm9wZXJ0eUluZm8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eUluZm86IFByb3BlcnR5SW5mbykge1xyXG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBpbnN0YW5jZS5wcm9wZXJ0aWVzLmZpbHRlcih0ID0+IHQubmFtZSA9PSBwcm9wZXJ0eUluZm8ubmFtZSlbMF1cclxuICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eUluZm8pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWRkQW5ub3RhdGlvbihpbnN0YW5jZUZ1bmM6IGFueSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbjogRGVjb3JhdG9yQ29uZmlndXJhdGlvbik6IHZvaWQge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFByb3BlcnR5KGluc3RhbmNlRnVuYywgeyBwcm9wZXJ0eVR5cGU6IFBST1BFUlRZLCBuYW1lOiBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSB9KTtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKGluc3RhbmNlID0+IGluc3RhbmNlLmluc3RhbmNlID09PSBpbnN0YW5jZUZ1bmMpWzBdO1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UgPSB0aGlzLmFkZEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYyk7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5wcm9wZXJ0eUFubm90YXRpb25zLnB1c2goZGVjb3JhdG9yQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnICYmIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLmNvbmRpdGlvbmFsRXhwcmVzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb25zKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUsIGNvbHVtbnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSAmJiBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZyAmJiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5hbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMuY29tcGFyZSB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbiB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5ncmVhdGVyVGhhbkVxdWFsVG8gfHwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5hbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW4gfHwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5hbm5vdGF0aW9uVHlwZSA9PSBBbm5vdGF0aW9uVHlwZXMubGVzc1RoYW5FcXVhbFRvKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZSwgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuZmllbGROYW1lLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBzZXRDb25kaXRpb25hbFZhbHVlUHJvcChpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BOYW1lOiBzdHJpbmcsIHJlZlByb3BOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcylcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzID0ge307XHJcbiAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcE5hbWVdKVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0uaW5kZXhPZihyZWZQcm9wTmFtZSkgPT0gLTEpXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0ucHVzaChyZWZQcm9wTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkZENoYW5nZVZhbGlkYXRpb24oaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyLCBwcm9wZXJ0eU5hbWU6IHN0cmluZywgY29sdW1uczogYW55W10pIHtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzID0ge307XHJcblxyXG4gICAgICAgICAgICAgICAgY29sdW1ucy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmICF0Lm9iamVjdFByb3BOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0uaW5kZXhPZihwcm9wZXJ0eU5hbWUpID09IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbdC5wcm9wTmFtZV0ucHVzaChwcm9wZXJ0eU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BOYW1lICYmIHQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnJlZmVyZW5jZVByb3BOYW1lID0gcHJvcGVydHlOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5wdXNoKHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0pKCk7XHJcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdENvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJjb3JlL2RlZmF1bHRDb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsTUFBTSxDQUFDLHFCQUFNLGdCQUFnQixHQU9yQixJQUFJO0lBQUM7eUJBQ29DLEVBQUU7S0FtRjlDOzs7Ozs7SUFqRkcscUJBQUc7Ozs7O0lBQUgsVUFBTyxZQUFpQjtRQUNwQixxQkFBSSxRQUFRLEdBQXNCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQUEsUUFBUSxJQUFJLE9BQUEsUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLEVBQWxDLENBQWtDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRyxNQUFNLENBQUMsUUFBUSxDQUFDO0tBQ25COzs7OztJQUVELHNDQUFvQjs7OztJQUFwQixVQUFxQixZQUFpQjtRQUNsQyxxQkFBSSxpQkFBaUIsR0FBc0I7WUFDdkMsUUFBUSxFQUFFLFlBQVk7WUFDdEIsbUJBQW1CLEVBQUUsRUFBRTtZQUN2QixVQUFVLEVBQUUsRUFBRTtTQUNqQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxNQUFNLENBQUMsaUJBQWlCLENBQUM7S0FDNUI7Ozs7OztJQUdELDZCQUFXOzs7OztJQUFYLFVBQVksWUFBaUIsRUFBRSxZQUEwQjtRQUNyRCxxQkFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBQSxRQUFRLElBQUksT0FBQSxRQUFRLENBQUMsUUFBUSxLQUFLLFlBQVksRUFBbEMsQ0FBa0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxDQUFDO1lBQ0YsUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNoRDtLQUNKOzs7Ozs7SUFFRCxpQ0FBZTs7Ozs7SUFBZixVQUFnQixRQUEyQixFQUFFLFlBQTBCO1FBQ25FLHFCQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLElBQUksRUFBM0IsQ0FBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ1YsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDOUM7Ozs7OztJQUVELCtCQUFhOzs7OztJQUFiLFVBQWMsWUFBaUIsRUFBRSxzQkFBOEM7UUFDM0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3RHLHFCQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFBLFFBQVEsSUFBSSxPQUFBLFFBQVEsQ0FBQyxRQUFRLEtBQUssWUFBWSxFQUFsQyxDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEYsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ1QsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxDQUFDO1lBQ0YsUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRCxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDN0Q7UUFDRCxFQUFFLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztZQUN4RixxQkFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3BGO1FBQ0QsRUFBRSxDQUFDLENBQUMsUUFBUSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsSUFBSSxlQUFlLFdBQVEsSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLElBQUksZUFBZSxlQUFZLElBQUksc0JBQXNCLENBQUMsY0FBYyxJQUFJLGVBQWUsc0JBQW1CLElBQUksc0JBQXNCLENBQUMsY0FBYyxJQUFJLGVBQWUsWUFBUyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsSUFBSSxlQUFlLG1CQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFaLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtTQUN2SDtLQUNKOzs7Ozs7O0lBRU8seUNBQXVCOzs7Ozs7Y0FBQyxRQUEyQixFQUFFLFFBQWdCLEVBQUUsV0FBbUI7UUFDOUYsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUM7WUFDckMsUUFBUSxDQUFDLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUM3QyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekUsUUFBUSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs7Ozs7Ozs7SUFFeEUscUNBQW1COzs7Ozs7SUFBbkIsVUFBb0IsUUFBMkIsRUFBRSxZQUFvQixFQUFFLE9BQWM7UUFDakYsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNYLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDO2dCQUNyQyxRQUFRLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1lBRTdDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQSxDQUFDO2dCQUNiLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDbEMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNqRCxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDekQsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQzVFLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUMxRTtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDSixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQzs0QkFDakMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQzt3QkFDekMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQzt3QkFDbkMsUUFBUSxDQUFDLHNCQUFzQixTQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUMzQztpQkFDSjthQUNKLENBQUMsQ0FBQTtTQUNMO0tBQ0o7a0JBL0ZUO0NBZ0dLLEFBcEZRLElBb0ZQLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvckNvbmZpZ3VyYXRpb24sIEluc3RhbmNlQ29udGFpbmVyLCBQcm9wZXJ0eUluZm8gfSBmcm9tICcuL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi92YWxpZGF0b3Iuc3RhdGljXCI7XHJcbmltcG9ydCB7IFBST1BFUlRZIH0gZnJvbSBcIi4uL2NvbnN0XCI7XHJcblxyXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRhaW5lcjpcclxuICAgIHtcclxuICAgICAgICBnZXQ8VD4oaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lcixcclxuICAgICAgICBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCxcclxuICAgICAgICBhZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IHZvaWRcclxuICAgICAgICBhZGRQcm9wZXJ0eShpbnN0YW5jZUZ1bmM6IGFueSwgcHJvcGVydHlJbmZvOiBQcm9wZXJ0eUluZm8pOiB2b2lkXHJcbiAgICAgICAgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSk6dm9pZFxyXG4gICAgfSA9IG5ldyAoY2xhc3Mge1xyXG4gICAgICAgIHByaXZhdGUgaW5zdGFuY2VzOiBJbnN0YW5jZUNvbnRhaW5lcltdID0gW107XHJcblxyXG4gICAgICAgIGdldDxUPihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciA9IHRoaXMuaW5zdGFuY2VzLmZpbHRlcihpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKVswXTtcclxuICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jOiBhbnkpOiBJbnN0YW5jZUNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIgPSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VGdW5jLFxyXG4gICAgICAgICAgICAgICAgcHJvcGVydHlBbm5vdGF0aW9uczogW10sXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBbXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VzLnB1c2goaW5zdGFuY2VDb250YWluZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2VDb250YWluZXI7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jOiBhbnksIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuaW5zdGFuY2VzLmZpbHRlcihpbnN0YW5jZSA9PiBpbnN0YW5jZS5pbnN0YW5jZSA9PT0gaW5zdGFuY2VGdW5jKVswXTtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZFByb3BlcnR5SW5mbyhpbnN0YW5jZSwgcHJvcGVydHlJbmZvKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlID0gdGhpcy5hZGRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eUluZm8oaW5zdGFuY2UsIHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFkZFByb3BlcnR5SW5mbyhpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5SW5mbzogUHJvcGVydHlJbmZvKSB7XHJcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IGluc3RhbmNlLnByb3BlcnRpZXMuZmlsdGVyKHQgPT4gdC5uYW1lID09IHByb3BlcnR5SW5mby5uYW1lKVswXVxyXG4gICAgICAgICAgICBpZiAoIXByb3BlcnR5KVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UucHJvcGVydGllcy5wdXNoKHByb3BlcnR5SW5mbyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhZGRBbm5vdGF0aW9uKGluc3RhbmNlRnVuYzogYW55LCBkZWNvcmF0b3JDb25maWd1cmF0aW9uOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkUHJvcGVydHkoaW5zdGFuY2VGdW5jLCB7IHByb3BlcnR5VHlwZTogUFJPUEVSVFksIG5hbWU6IGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lIH0pO1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2UgPSB0aGlzLmluc3RhbmNlcy5maWx0ZXIoaW5zdGFuY2UgPT4gaW5zdGFuY2UuaW5zdGFuY2UgPT09IGluc3RhbmNlRnVuYylbMF07XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnR5QW5ub3RhdGlvbnMucHVzaChkZWNvcmF0b3JDb25maWd1cmF0aW9uKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IHRoaXMuYWRkSW5zdGFuY2VDb250YWluZXIoaW5zdGFuY2VGdW5jKTtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnByb3BlcnR5QW5ub3RhdGlvbnMucHVzaChkZWNvcmF0b3JDb25maWd1cmF0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcgJiYgZGVjb3JhdG9yQ29uZmlndXJhdGlvbi5jb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9ucykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbnMgPSBMaW5xLmV4cHJlc3Npb25Db2x1bW5zKGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnLmNvbmRpdGlvbmFsRXhwcmVzc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGRDaGFuZ2VWYWxpZGF0aW9uKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLnByb3BlcnR5TmFtZSwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlICYmIGRlY29yYXRvckNvbmZpZ3VyYXRpb24uY29uZmlnICYmIChkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5jb21wYXJlIHx8IGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuIHx8IGRlY29yYXRvckNvbmZpZ3VyYXRpb24uYW5ub3RhdGlvblR5cGUgPT0gQW5ub3RhdGlvblR5cGVzLmdyZWF0ZXJUaGFuRXF1YWxUbyB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5sZXNzVGhhbiB8fCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmFubm90YXRpb25UeXBlID09IEFubm90YXRpb25UeXBlcy5sZXNzVGhhbkVxdWFsVG8pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlLCBkZWNvcmF0b3JDb25maWd1cmF0aW9uLmNvbmZpZy5maWVsZE5hbWUsIGRlY29yYXRvckNvbmZpZ3VyYXRpb24ucHJvcGVydHlOYW1lKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIHNldENvbmRpdGlvbmFsVmFsdWVQcm9wKGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lciwgcHJvcE5hbWU6IHN0cmluZywgcmVmUHJvcE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoIWluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKVxyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgPSB7fTtcclxuICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0pXHJcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wTmFtZV0gPSBbXTtcclxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXS5pbmRleE9mKHJlZlByb3BOYW1lKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BOYW1lXS5wdXNoKHJlZlByb3BOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWRkQ2hhbmdlVmFsaWRhdGlvbihpbnN0YW5jZTogSW5zdGFuY2VDb250YWluZXIsIHByb3BlcnR5TmFtZTogc3RyaW5nLCBjb2x1bW5zOiBhbnlbXSkgOnZvaWQge1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgPSB7fTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5zLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgIXQub2JqZWN0UHJvcE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3QucHJvcE5hbWVdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXS5pbmRleE9mKHByb3BlcnR5TmFtZSkgPT0gLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1t0LnByb3BOYW1lXS5wdXNoKHByb3BlcnR5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQucHJvcE5hbWUgJiYgdC5vYmplY3RQcm9wTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQucmVmZXJlbmNlUHJvcE5hbWUgPSBwcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzLnB1c2godCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSkoKTtcclxuIl19 |
@@ -25,3 +25,3 @@ /** | ||
/** @type {?|undefined} */ | ||
PropValidationConfig.prototype.numeric; | ||
PropValidationConfig.prototype.digit; | ||
/** @type {?|undefined} */ | ||
@@ -51,2 +51,2 @@ PropValidationConfig.prototype.alphaNumeric; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC12YWxpZGF0aW9uLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJtb2RlbHMvcHJvcC12YWxpZGF0aW9uLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9kZWZhdWx0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBQYXR0ZXJuQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3BhdHRlcm4tY29uZmlnXCI7XHJcbmltcG9ydCB7IENvbXBhcmVDb25maWcgfSBmcm9tIFwiLi9jb25maWcvY29tcGFyZS1jb25maWdcIjtcclxuaW1wb3J0IHsgQWxwaGFDb25maWcgfSBmcm9tIFwiLi9jb25maWcvYWxwaGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IFJhbmdlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3JhbmdlLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBOdW1iZXJDb25maWcgfSBmcm9tIFwiLi9jb25maWcvbnVtYmVyLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBEYXRlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2RhdGUtY29uZmlnXCI7XHJcbmltcG9ydCB7IFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb3BWYWxpZGF0aW9uQ29uZmlnIHtcclxuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICAgIG1pbkxlbmd0aD86IE51bWJlckNvbmZpZyA7XHJcbiAgICBtYXhMZW5ndGg/OiBOdW1iZXJDb25maWcgO1xyXG4gICAgcGF0dGVybj86IFBhdHRlcm5Db25maWcgO1xyXG4gICAgY29tcGFyZT86IENvbXBhcmVDb25maWcgO1xyXG4gICAgY29udGFpbnM/OiBEZWZhdWx0Q29uZmlnO1xyXG4gICAgYWxwaGE/OiBBbHBoYUNvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBudW1lcmljPzogYm9vbGVhbjtcclxuICAgIGFscGhhTnVtZXJpYz86IEFscGhhQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIGVtYWlsPzogYm9vbGVhbjtcclxuICAgIGhleENvbG9yPzogYm9vbGVhbjtcclxuICAgIGxvd2VyY2FzZT86IGJvb2xlYW47XHJcbiAgICBtYXhEYXRlPzogRGF0ZUNvbmZpZztcclxuICAgIG1heE51bWJlcj86IE51bWJlckNvbmZpZztcclxuICAgIG1pbkRhdGU/OiBEYXRlQ29uZmlnO1xyXG4gICAgbWluTnVtYmVyPzogTnVtYmVyQ29uZmlnO1xyXG4gICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcclxuICAgIHJhbmdlPzogUmFuZ2VDb25maWc7XHJcbiAgICBjdXN0b20/OiBWYWxpZGF0b3JGbjtcclxufVxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC12YWxpZGF0aW9uLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByeHdlYi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJtb2RlbHMvcHJvcC12YWxpZGF0aW9uLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9kZWZhdWx0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBQYXR0ZXJuQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3BhdHRlcm4tY29uZmlnXCI7XHJcbmltcG9ydCB7IENvbXBhcmVDb25maWcgfSBmcm9tIFwiLi9jb25maWcvY29tcGFyZS1jb25maWdcIjtcclxuaW1wb3J0IHsgQWxwaGFDb25maWcgfSBmcm9tIFwiLi9jb25maWcvYWxwaGEtY29uZmlnXCI7XHJcbmltcG9ydCB7IFJhbmdlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3JhbmdlLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBOdW1iZXJDb25maWcgfSBmcm9tIFwiLi9jb25maWcvbnVtYmVyLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBEYXRlQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2RhdGUtY29uZmlnXCI7XHJcbmltcG9ydCB7IERpZ2l0Q29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2RpZ2l0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBFbWFpbENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9lbWFpbC1jb25maWdcIjtcclxuaW1wb3J0IHsgTWVzc2FnZUNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9tZXNzYWdlLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JGbiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9wVmFsaWRhdGlvbkNvbmZpZyB7XHJcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgICBtaW5MZW5ndGg/OiBOdW1iZXJDb25maWcgO1xyXG4gICAgbWF4TGVuZ3RoPzogTnVtYmVyQ29uZmlnIDtcclxuICAgIHBhdHRlcm4/OiBQYXR0ZXJuQ29uZmlnIDtcclxuICAgIGNvbXBhcmU/OiBDb21wYXJlQ29uZmlnIDtcclxuICAgIGNvbnRhaW5zPzogRGVmYXVsdENvbmZpZztcclxuICAgIGFscGhhPzogQWxwaGFDb25maWcgfCBib29sZWFuO1xyXG4gICAgZGlnaXQ/OiBEaWdpdENvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBhbHBoYU51bWVyaWM/OiBBbHBoYUNvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBlbWFpbD86IEVtYWlsQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIGhleENvbG9yPzogTWVzc2FnZUNvbmZpZyB8IGJvb2xlYW47XHJcbiAgICBsb3dlcmNhc2U/OiBNZXNzYWdlQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIG1heERhdGU/OiBEYXRlQ29uZmlnO1xyXG4gICAgbWF4TnVtYmVyPzogTnVtYmVyQ29uZmlnO1xyXG4gICAgbWluRGF0ZT86IERhdGVDb25maWc7XHJcbiAgICBtaW5OdW1iZXI/OiBOdW1iZXJDb25maWc7XHJcbiAgICB1cHBlcmNhc2U/OiBNZXNzYWdlQ29uZmlnIHwgYm9vbGVhbjtcclxuICAgIHJhbmdlPzogUmFuZ2VDb25maWc7XHJcbiAgICBjdXN0b20/OiBWYWxpZGF0b3JGbjtcclxufVxyXG4iXX0= |
@@ -23,3 +23,3 @@ /** | ||
if (controlValue.indexOf(config.value) == -1) | ||
return ObjectMaker.toJson(AnnotationTypes["contains"], config.message || null, [controlValue]); | ||
return ObjectMaker.toJson(AnnotationTypes["contains"], config.message || null, [config.value, controlValue]); | ||
} | ||
@@ -31,2 +31,2 @@ } | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbnMudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInJlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb250YWlucy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUUzRCxNQUFNLDRCQUE0QixNQUFvQjtJQUNsRCxNQUFNLENBQUMsVUFBQyxPQUF3QjtRQUM1QixxQkFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNuQyxxQkFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELHFCQUFNLFlBQVksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxjQUFXLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUNuRztTQUNKO1FBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUM3QixDQUFBO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgVmFsaWRhdG9yRm4sXHJcbiAgICBBYnN0cmFjdENvbnRyb2xcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmltcG9ydCB7IFJlZ2V4VmFsaWRhdG9yIH0gZnJvbSBcIi4uL3V0aWwvcmVnZXgtdmFsaWRhdG9yXCI7XHJcbmltcG9ydCB7IFJlZ0V4UnVsZSB9IGZyb20gXCIuLi91dGlsL3JlZ2V4LXJ1bGVzXCI7XHJcbmltcG9ydCB7IERlY29yYXRvck5hbWUgfSBmcm9tIFwiLi4vdXRpbC9kZWNvcmF0b3ItbmFtZVwiXHJcbmltcG9ydCB7IE9iamVjdE1ha2VyIH0gZnJvbSBcIi4uL3V0aWwvb2JqZWN0LW1ha2VyXCI7XHJcbmltcG9ydCB7IERlZmF1bHRDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9kZWZhdWx0LWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvblV0aWwgfSBmcm9tIFwiLi4vdXRpbC9hcHAtdXRpbFwiO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSBcIi4uL3V0aWwvbGlucVwiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vY29yZS92YWxpZGF0b3Iuc3RhdGljXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNWYWxpZGF0b3IoY29uZmlnOkRlZmF1bHRDb25maWcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwVmFsdWUgPSBBcHBsaWNhdGlvblV0aWwuZ2V0UGFyZW50T2JqZWN0VmFsdWUoY29udHJvbCk7XHJcbiAgICAgICAgY29uZmlnID0gQXBwbGljYXRpb25VdGlsLmdldENvbmZpZ09iamVjdChjb25maWcpO1xyXG4gICAgICAgIGNvbnN0IHBhcmVudE9iamVjdCA9IChjb250cm9sLnBhcmVudCkgPyBjb250cm9sLnBhcmVudC52YWx1ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoTGlucS5Jc1Bhc3NlZChmb3JtR3JvdXBWYWx1ZSwgY29uZmlnLmNvbmRpdGlvbmFsRXhwcmVzc2lvbnMsIHBhcmVudE9iamVjdCkpIHtcclxuICAgICAgICAgICAgaWYgKFJlZ2V4VmFsaWRhdG9yLmlzTm90QmxhbmsoY29udHJvbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xWYWx1ZS5pbmRleE9mKGNvbmZpZy52YWx1ZSkgPT0gLTEpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdE1ha2VyLnRvSnNvbihBbm5vdGF0aW9uVHlwZXMuY29udGFpbnMsIGNvbmZpZy5tZXNzYWdlIHx8IG51bGwsIFtjb250cm9sVmFsdWVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gT2JqZWN0TWFrZXIubnVsbCgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbnMudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInJlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb250YWlucy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUtBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUUzRCxNQUFNLDRCQUE0QixNQUFvQjtJQUNsRCxNQUFNLENBQUMsVUFBQyxPQUF3QjtRQUM1QixxQkFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNuQyxxQkFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELHFCQUFNLFlBQVksR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN6RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxjQUFXLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQ2hIO1NBQ0o7UUFDRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQzdCLENBQUE7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBWYWxpZGF0b3JGbixcclxuICAgIEFic3RyYWN0Q29udHJvbFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgUmVnZXhWYWxpZGF0b3IgfSBmcm9tIFwiLi4vdXRpbC9yZWdleC12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgUmVnRXhSdWxlIH0gZnJvbSBcIi4uL3V0aWwvcmVnZXgtcnVsZXNcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yTmFtZSB9IGZyb20gXCIuLi91dGlsL2RlY29yYXRvci1uYW1lXCJcclxuaW1wb3J0IHsgT2JqZWN0TWFrZXIgfSBmcm9tIFwiLi4vdXRpbC9vYmplY3QtbWFrZXJcIjtcclxuaW1wb3J0IHsgRGVmYXVsdENvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvY29uZmlnL2RlZmF1bHQtY29uZmlnXCI7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uVXRpbCB9IGZyb20gXCIuLi91dGlsL2FwcC11dGlsXCI7XHJcbmltcG9ydCB7IExpbnEgfSBmcm9tIFwiLi4vdXRpbC9saW5xXCI7XHJcbmltcG9ydCB7IEFubm90YXRpb25UeXBlcyB9IGZyb20gXCIuLi9jb3JlL3ZhbGlkYXRvci5zdGF0aWNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc1ZhbGlkYXRvcihjb25maWc6RGVmYXVsdENvbmZpZyk6IFZhbGlkYXRvckZuIHtcclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgICBjb25zdCBmb3JtR3JvdXBWYWx1ZSA9IEFwcGxpY2F0aW9uVXRpbC5nZXRQYXJlbnRPYmplY3RWYWx1ZShjb250cm9sKTtcclxuICAgICAgICBjb25maWcgPSBBcHBsaWNhdGlvblV0aWwuZ2V0Q29uZmlnT2JqZWN0KGNvbmZpZyk7XHJcbiAgICAgICAgY29uc3QgcGFyZW50T2JqZWN0ID0gKGNvbnRyb2wucGFyZW50KSA/IGNvbnRyb2wucGFyZW50LnZhbHVlIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmIChMaW5xLklzUGFzc2VkKGZvcm1Hcm91cFZhbHVlLCBjb25maWcuY29uZGl0aW9uYWxFeHByZXNzaW9ucywgcGFyZW50T2JqZWN0KSkge1xyXG4gICAgICAgICAgICBpZiAoUmVnZXhWYWxpZGF0b3IuaXNOb3RCbGFuayhjb250cm9sVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbFZhbHVlLmluZGV4T2YoY29uZmlnLnZhbHVlKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0TWFrZXIudG9Kc29uKEFubm90YXRpb25UeXBlcy5jb250YWlucywgY29uZmlnLm1lc3NhZ2UgfHwgbnVsbCwgW2NvbmZpZy52YWx1ZSxjb250cm9sVmFsdWVdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gT2JqZWN0TWFrZXIubnVsbCgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== |
@@ -14,2 +14,3 @@ /** | ||
import { conditionalChangeValidator } from "../reactive-form-validators/conditional-change.validator"; | ||
import { Linq } from '../util/linq'; | ||
var /** @type {?} */ APP_VALIDATORS = { | ||
@@ -48,2 +49,5 @@ "alphaNumeric": alphaNumericValidator, | ||
this.conditionalObjectProps = []; | ||
this.conditionalValidationInstance = {}; | ||
this.builderConfigurationConditionalObjectProps = []; | ||
this.isNested = false; | ||
} | ||
@@ -79,2 +83,23 @@ /** | ||
/** | ||
* @param {?} fomrBuilderConfiguration | ||
* @return {?} | ||
*/ | ||
RxFormBuilder.prototype.extractExpressions = /** | ||
* @param {?} fomrBuilderConfiguration | ||
* @return {?} | ||
*/ | ||
function (fomrBuilderConfiguration) { | ||
if (fomrBuilderConfiguration && fomrBuilderConfiguration.validations) { | ||
for (var /** @type {?} */ property in fomrBuilderConfiguration.validations) { | ||
for (var /** @type {?} */ decorator in fomrBuilderConfiguration.validations[property]) { | ||
if (fomrBuilderConfiguration.validations[property][decorator].conditionalExpressions) { | ||
var /** @type {?} */ columns = Linq.expressionColumns(fomrBuilderConfiguration.validations[property][decorator].conditionalExpressions); | ||
defaultContainer.addChangeValidation(this.conditionalValidationInstance, property, columns); | ||
} | ||
} | ||
} | ||
} | ||
return null; | ||
}; | ||
/** | ||
* @param {?} property | ||
@@ -96,8 +121,17 @@ * @param {?} propertyValidators | ||
var /** @type {?} */ columns = []; | ||
if (instance.conditionalValidationProps && instance.conditionalValidationProps[property.name]) { | ||
validators.push(conditionalChangeValidator(instance.conditionalValidationProps[property.name])); | ||
if ((instance.conditionalValidationProps && instance.conditionalValidationProps[property.name]) || (this.conditionalValidationInstance.conditionalValidationProps && this.conditionalValidationInstance.conditionalValidationProps[property.name])) { | ||
var /** @type {?} */ props_1 = []; | ||
if ((instance.conditionalValidationProps && instance.conditionalValidationProps[property.name])) | ||
instance.conditionalValidationProps[property.name].forEach(function (t) { return props_1.push(t); }); | ||
if (this.conditionalValidationInstance.conditionalValidationProps && this.conditionalValidationInstance.conditionalValidationProps[property.name]) | ||
this.conditionalValidationInstance.conditionalValidationProps[property.name].forEach(function (t) { return props_1.push(t); }); | ||
validators.push(conditionalChangeValidator(props_1)); | ||
} | ||
if (this.conditionalObjectProps.length > 0) { | ||
var /** @type {?} */ propConditions = this.conditionalObjectProps.filter(function (t) { return t.propName == property.name; }); | ||
propConditions.forEach(function (t) { | ||
if (this.conditionalObjectProps.length > 0 || this.builderConfigurationConditionalObjectProps.length > 0) { | ||
var /** @type {?} */ propConditions_1 = []; | ||
if (this.conditionalObjectProps) | ||
propConditions_1 = this.conditionalObjectProps.filter(function (t) { return t.propName == property.name; }); | ||
if (this.builderConfigurationConditionalObjectProps) | ||
this.builderConfigurationConditionalObjectProps.filter(function (t) { return t.propName == property.name; }).forEach(function (t) { return propConditions_1.push(t); }); | ||
propConditions_1.forEach(function (t) { | ||
if (t.referencePropName && columns.indexOf(t.referencePropName) == -1) | ||
@@ -210,2 +244,6 @@ columns.push(t.referencePropName); | ||
} | ||
else if (model && (entityObject instanceof FormBuilderConfiguration) && (typeof model == "object")) { | ||
json["entityObject"] = model; | ||
json["model"] = model.constructor; | ||
} | ||
return json; | ||
@@ -233,2 +271,4 @@ }; | ||
formBuilderConfiguration = json["formBuilderConfiguration"]; | ||
if (formBuilderConfiguration) | ||
this.extractExpressions(formBuilderConfiguration); | ||
var /** @type {?} */ instanceContainer = this.getInstanceContainer(model); | ||
@@ -251,9 +291,15 @@ this.checkObjectPropAdditionalValidation(instanceContainer, entityObject); | ||
formGroupObject[property.name] = [entityObject[property.name], _this.addFormControl(property, propertyValidators, additionalValidations[property.name], instanceContainer)]; | ||
_this.isNested = false; | ||
break; | ||
case OBJECT_PROPERTY: | ||
if (entityObject[property.name] && entityObject[property.name] instanceof Object) { | ||
_this.isNested = true; | ||
if (instanceContainer && instanceContainer.conditionalObjectProps) | ||
_this.conditionalObjectProps = instanceContainer.conditionalObjectProps["filter"](function (t) { return t.objectPropName == property.name; }); | ||
if (_this.conditionalValidationInstance && _this.conditionalValidationInstance.conditionalObjectProps) | ||
_this.builderConfigurationConditionalObjectProps = _this.conditionalValidationInstance.conditionalObjectProps.filter(function (t) { return t.objectPropName == property.name; }); | ||
formGroupObject[property.name] = _this.formGroup(property.entity, entityObject[property.name], formBuilderConfiguration); | ||
_this.conditionalObjectProps = []; | ||
_this.builderConfigurationConditionalObjectProps = []; | ||
_this.isNested = false; | ||
} | ||
@@ -263,2 +309,3 @@ break; | ||
if (entityObject[property.name] && entityObject[property.name] instanceof Array) { | ||
_this.isNested = true; | ||
var /** @type {?} */ formArrayGroup = []; | ||
@@ -271,5 +318,8 @@ var /** @type {?} */ index_1 = 0; | ||
_this.conditionalObjectProps = instanceContainer.conditionalObjectProps["filter"](function (t) { return t.objectPropName == property.name && t.arrayIndex == index_1; }); | ||
if (_this.conditionalValidationInstance && _this.conditionalValidationInstance.conditionalObjectProps) | ||
_this.builderConfigurationConditionalObjectProps = _this.conditionalValidationInstance.conditionalObjectProps.filter(function (t) { return t.objectPropName == property.name && t.arrayIndex == index_1; }); | ||
formArrayGroup.push(_this.formGroup(property.entity, subObject, formBuilderConfiguration)); | ||
index_1++; | ||
_this.conditionalObjectProps = []; | ||
_this.builderConfigurationConditionalObjectProps = []; | ||
} | ||
@@ -285,2 +335,3 @@ } | ||
formGroupObject[property.name] = _this.formBuilder.array(formArrayGroup); | ||
_this.isNested = false; | ||
} | ||
@@ -292,2 +343,6 @@ break; | ||
}); | ||
if (!this.isNested) { | ||
this.conditionalValidationInstance = {}; | ||
this.builderConfigurationConditionalObjectProps = []; | ||
} | ||
return this.formBuilder.group(formGroupObject); | ||
@@ -311,5 +366,11 @@ }; | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.conditionalValidationInstance; | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.builderConfigurationConditionalObjectProps; | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.isNested; | ||
/** @type {?} */ | ||
RxFormBuilder.prototype.formBuilder; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3J4LWZvcm0tYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBeUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVuRSxPQUFPLEVBQ0gscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFDOUcsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQ2pILGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQ3hGLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUNyRywyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFDakcsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUd0RyxxQkFBTSxjQUFjLEdBQWdDO0lBQ2hELGNBQWMsRUFBRSxxQkFBcUI7SUFDckMsT0FBTyxFQUFFLGNBQWM7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LEdBQUcsS0FBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7eUJBQzNFO3dCQUNELEtBQUssQ0FBQztpQkFDYjthQUNKOztTQUVKLENBQUMsQ0FBQTtRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNsRDs7Z0JBdkpKLFVBQVU7Ozs7Z0JBbkRGLFdBQVc7O3dCQURwQjs7U0FxRGEsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIlxyXG5pbXBvcnQgeyBUeXBlLCBEZWNvcmF0b3JOYW1lIH0gZnJvbSBcIi4uL3V0aWxcIlxyXG5pbXBvcnQge1xyXG4gICAgYWxwaGFOdW1lcmljVmFsaWRhdG9yLCBhbHBoYVZhbGlkYXRvciwgY29tcGFyZVZhbGlkYXRvciwgZW1haWxWYWxpZGF0b3IsIGhleENvbG9yVmFsaWRhdG9yLCBsb3dlcmNhc2VWYWxpZGF0b3IsXHJcbiAgICBtYXhEYXRlVmFsaWRhdG9yLCBtYXhOdW1iZXJWYWxpZGF0b3IsIG1pbkRhdGVWYWxpZGF0b3IsIG1pbk51bWJlclZhbGlkYXRvciwgY29udGFpbnNWYWxpZGF0b3IsIHVwcGVyY2FzZVZhbGlkYXRvcixcclxuICAgIHJhbmdlVmFsaWRhdG9yLCBwYXR0ZXJuVmFsaWRhdG9yLCByZXF1aXJlZFZhbGlkYXRvciwgY3JlZGl0Q2FyZFZhbGlkYXRvciwgZGlnaXRWYWxpZGF0b3IsXHJcbiAgICBtYXhMZW5ndGhWYWxpZGF0b3IsIG1pbkxlbmd0aFZhbGlkYXRvciwgcGFzc3dvcmRWYWxpZGF0b3IsIHRpbWVWYWxpZGF0b3IsIHVybFZhbGlkYXRvciwganNvblZhbGlkYXRvcixcclxuICAgIGdyZWF0ZXJUaGFuRXF1YWxUb1ZhbGlkYXRvciwgZ3JlYXRlclRoYW5WYWxpZGF0b3IsIGxlc3NUaGFuRXF1YWxUb1ZhbGlkYXRvciwgbGVzc1RoYW5WYWxpZGF0b3JcclxufSBmcm9tICcuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgZGVmYXVsdENvbnRhaW5lciB9IGZyb20gJy4uL2NvcmUvZGVmYXVsdENvbnRhaW5lcic7XHJcbmltcG9ydCB7IERlY29yYXRvckNvbmZpZ3VyYXRpb24sIEluc3RhbmNlQ29udGFpbmVyLCBQcm9wZXJ0eUluZm8gfSBmcm9tICcuLi9jb3JlL3ZhbGlkYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzXCJcclxuaW1wb3J0IHsgQVJSQVlfUFJPUEVSVFksIE9CSkVDVF9QUk9QRVJUWSwgUFJPUEVSVFkgfSBmcm9tIFwiLi4vY29uc3RcIlxyXG5pbXBvcnQgeyBQcm9wVmFsaWRhdGlvbkNvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvcHJvcC12YWxpZGF0aW9uLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vY29yZS92YWxpZGF0b3Iuc3RhdGljXCI7XHJcbmltcG9ydCB7IGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yIH0gZnJvbSBcIi4uL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy9jb25kaXRpb25hbC1jaGFuZ2UudmFsaWRhdG9yXCI7XHJcblxyXG5cclxuY29uc3QgQVBQX1ZBTElEQVRPUlM6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfSA9IHtcclxuICAgIFwiYWxwaGFOdW1lcmljXCI6IGFscGhhTnVtZXJpY1ZhbGlkYXRvcixcclxuICAgIFwiYWxwaGFcIjogYWxwaGFWYWxpZGF0b3IsXHJcbiAgICBcImNvbXBhcmVcIjogY29tcGFyZVZhbGlkYXRvcixcclxuICAgIFwiZW1haWxcIjogZW1haWxWYWxpZGF0b3IsXHJcbiAgICBcImhleENvbG9yXCI6IGhleENvbG9yVmFsaWRhdG9yLFxyXG4gICAgXCJsb3dlckNhc2VcIjogbG93ZXJjYXNlVmFsaWRhdG9yLFxyXG4gICAgXCJtYXhEYXRlXCI6IG1heERhdGVWYWxpZGF0b3IsXHJcbiAgICBcIm1heE51bWJlclwiOiBtYXhOdW1iZXJWYWxpZGF0b3IsXHJcbiAgICBcIm1pbkRhdGVcIjogbWluRGF0ZVZhbGlkYXRvcixcclxuICAgIFwibWluTnVtYmVyXCI6IG1pbk51bWJlclZhbGlkYXRvcixcclxuICAgIFwiY29udGFpbnNcIjogY29udGFpbnNWYWxpZGF0b3IsXHJcbiAgICBcInVwcGVyQ2FzZVwiOiB1cHBlcmNhc2VWYWxpZGF0b3IsXHJcbiAgICBcIm1heExlbmd0aFwiOiBtYXhMZW5ndGhWYWxpZGF0b3IsXHJcbiAgICBcIm1pbkxlbmd0aFwiOiBtaW5MZW5ndGhWYWxpZGF0b3IsXHJcbiAgICBcInBhc3N3b3JkXCI6IHBhc3N3b3JkVmFsaWRhdG9yLFxyXG4gICAgXCJyYW5nZVwiOiByYW5nZVZhbGlkYXRvcixcclxuICAgIFwicmVxdWlyZWRcIjogcmVxdWlyZWRWYWxpZGF0b3IsXHJcbiAgICBcImNyZWRpdENhcmRcIjogY3JlZGl0Q2FyZFZhbGlkYXRvcixcclxuICAgIFwiZGlnaXRcIjogZGlnaXRWYWxpZGF0b3IsXHJcbiAgICBcInBhdHRlcm5cIjogcGF0dGVyblZhbGlkYXRvcixcclxuICAgIFwidGltZVwiOiB0aW1lVmFsaWRhdG9yLFxyXG4gICAgXCJ1cmxcIjogdXJsVmFsaWRhdG9yLFxyXG4gICAgXCJqc29uXCI6IGpzb25WYWxpZGF0b3IsXHJcbiAgICBcImdyZWF0ZXJUaGFuXCI6IGdyZWF0ZXJUaGFuVmFsaWRhdG9yLFxyXG4gICAgXCJncmVhdGVyVGhhbkVxdWFsVG9cIjogZ3JlYXRlclRoYW5FcXVhbFRvVmFsaWRhdG9yLFxyXG4gICAgXCJsZXNzVGhhblwiOiBsZXNzVGhhblZhbGlkYXRvcixcclxuICAgIFwibGVzc1RoYW5FcXVhbFRvXCI6IGxlc3NUaGFuRXF1YWxUb1ZhbGlkYXRvclxyXG59XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFJ4Rm9ybUJ1aWxkZXIge1xyXG4gICAgcHJpdmF0ZSBuZXN0ZWRQcm9wOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGNvbmRpdGlvbmFsT2JqZWN0UHJvcHM6IGFueVtdID0gW107XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcikgeyB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRJbnN0YW5jZUNvbnRhaW5lcihpbnN0YW5jZUZ1bmM6IGFueSk6IEluc3RhbmNlQ29udGFpbmVyIHtcclxuICAgICAgICByZXR1cm4gZGVmYXVsdENvbnRhaW5lci5nZXQoaW5zdGFuY2VGdW5jKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBvYmplY3Q6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGZvciAodmFyIGNvbCBpbiBvYmplY3QpIHtcclxuICAgICAgICAgICAgdmFyIGNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KFtjb2xdKTtcclxuICAgICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShvYmplY3RbY29sXSk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZEZvcm1Db250cm9sKHByb3BlcnR5OiBQcm9wZXJ0eUluZm8sIHByb3BlcnR5VmFsaWRhdG9yczogRGVjb3JhdG9yQ29uZmlndXJhdGlvbltdLCBwcm9wVmFsaWRhdGlvbkNvbmZpZzogUHJvcFZhbGlkYXRpb25Db25maWcsIGluc3RhbmNlOiBJbnN0YW5jZUNvbnRhaW5lcikge1xyXG4gICAgICAgIGxldCB2YWxpZGF0b3JzID0gW107XHJcbiAgICAgICAgbGV0IGNvbHVtbnMgPSBbXTtcclxuICAgICAgICBpZiAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgJiYgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHkubmFtZV0pIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgcHJvcENvbmRpdGlvbnMgPSB0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5wcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lKTtcclxuICAgICAgICAgICAgcHJvcENvbmRpdGlvbnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0LnJlZmVyZW5jZVByb3BOYW1lICYmIGNvbHVtbnMuaW5kZXhPZih0LnJlZmVyZW5jZVByb3BOYW1lKSA9PSAtMSlcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLnB1c2godC5yZWZlcmVuY2VQcm9wTmFtZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5zLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goY29uZGl0aW9uYWxDaGFuZ2VWYWxpZGF0b3IoY29sdW1ucykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBwcm9wZXJ0eVZhbGlkYXRvciBvZiBwcm9wZXJ0eVZhbGlkYXRvcnMpIHtcclxuXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChBUFBfVkFMSURBVE9SU1twcm9wZXJ0eVZhbGlkYXRvci5hbm5vdGF0aW9uVHlwZV0ocHJvcGVydHlWYWxpZGF0b3IuY29uZmlnLCApKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJvcFZhbGlkYXRpb25Db25maWcpXHJcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbFZhbGlkYXRpb24odmFsaWRhdG9ycywgcHJvcFZhbGlkYXRpb25Db25maWcpO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZGl0aW9uYWxWYWxpZGF0aW9uKHZhbGlkYXRpb25zOiBhbnlbXSwgcHJvcFZhbGlkYXRpb25Db25maWc6IFByb3BWYWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgZm9yICh2YXIgY29sIGluIEFubm90YXRpb25UeXBlcykge1xyXG4gICAgICAgICAgICBpZiAocHJvcFZhbGlkYXRpb25Db25maWdbQW5ub3RhdGlvblR5cGVzW2NvbF1dICYmIGNvbCAhPSBcImN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKEFQUF9WQUxJREFUT1JTW0Fubm90YXRpb25UeXBlc1tjb2xdXShwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjb2wgPT0gQW5ub3RhdGlvblR5cGVzLmN1c3RvbSAmJiBwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKHByb3BWYWxpZGF0aW9uQ29uZmlnW2NvbF0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja09iamVjdFByb3BBZGRpdGlvbmFsVmFsaWRhdGlvbjxUPihpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIsIG9iamVjdDogVCkge1xyXG4gICAgICAgIHZhciBwcm9wcyA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXMuZmlsdGVyKHQgPT4gdC5wcm9wZXJ0eVR5cGUgPT0gT0JKRUNUX1BST1BFUlRZIHx8IHQucHJvcGVydHlUeXBlID09IEFSUkFZX1BST1BFUlRZKVxyXG4gICAgICAgIHByb3BzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMuZ2V0SW5zdGFuY2VDb250YWluZXIodC5lbnRpdHkpO1xyXG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwcm9wID0gaW5zdGFuY2UucHJvcGVydGllcy5maWx0ZXIodCA9PiB0Lm5hbWUgPT0ga2V5KVswXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3ApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3AgPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0aWVzLmZpbHRlcih0ID0+IHQubmFtZSA9PSBrZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2tleV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNba2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5wcm9wZXJ0eVR5cGUgIT0gQVJSQVlfUFJPUEVSVFkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNba2V5XS5wdXNoKFt0Lm5hbWUsIHhdLmpvaW4oJy4nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldLnB1c2goW3QubmFtZSwgeF0uam9pbignW10nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGdldE9iamVjdChtb2RlbDogYW55IHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgZW50aXR5T2JqZWN0PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiwgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uPzogRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKToge1trZXk6c3RyaW5nXTphbnl9IHtcclxuICAgICAgICBsZXQganNvbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIG1vZGVsID09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICAgICAganNvbi5tb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgICBpZiAoZW50aXR5T2JqZWN0ICYmICEoZW50aXR5T2JqZWN0IGluc3RhbmNlb2YgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKSlcclxuICAgICAgICAgICAganNvbi5lbnRpdHlPYmplY3QgPSBlbnRpdHlPYmplY3Q7XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlPYmplY3QgaW5zdGFuY2VvZiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gJiYgIWZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbilcclxuICAgICAgICAgICAganNvbi5mb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gPSBlbnRpdHlPYmplY3Q7XHJcbiAgICAgICAgZWxzZSBpZiAoIShlbnRpdHlPYmplY3QgaW5zdGFuY2VvZiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbilcclxuICAgICAgICAgICAganNvbi5mb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gPSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCFlbnRpdHlPYmplY3QpIHtcclxuICAgICAgICAgICAganNvbi5lbnRpdHlPYmplY3QgPSBtb2RlbDtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBtb2RlbCA9PSBcIm9iamVjdFwiKVxyXG4gICAgICAgICAgICAgICAganNvbi5tb2RlbCA9IG1vZGVsLmNvbnN0cnVjdG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ganNvbjtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtR3JvdXA8VD4obW9kZWw6IFR5cGU8VD4gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBlbnRpdHlPYmplY3Q/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24/OiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pOiBGb3JtR3JvdXAge1xyXG4gICAgICAgIGxldCBqc29uID0gdGhpcy5nZXRPYmplY3QobW9kZWwsIGVudGl0eU9iamVjdCwgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKTtcclxuICAgICAgICBtb2RlbCA9IGpzb24ubW9kZWw7XHJcbiAgICAgICAgZW50aXR5T2JqZWN0ID0ganNvbi5lbnRpdHlPYmplY3Q7XHJcbiAgICAgICAgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uID0ganNvbi5mb3JtQnVpbGRlckNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgbGV0IGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciA9IHRoaXMuZ2V0SW5zdGFuY2VDb250YWluZXIobW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY2hlY2tPYmplY3RQcm9wQWRkaXRpb25hbFZhbGlkYXRpb24oaW5zdGFuY2VDb250YWluZXIsIGVudGl0eU9iamVjdCk7XHJcbiAgICAgICAgbGV0IGZvcm1Hcm91cE9iamVjdCA9IHt9O1xyXG4gICAgICAgIGxldCBmb3JtQ2hpbGRHcm91cCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBsZXQgZm9ybUFycmF5R3JvdXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdmFyIGFkZGl0aW9uYWxWYWxpZGF0aW9uczogeyBba2V5OiBzdHJpbmddOiBQcm9wVmFsaWRhdGlvbkNvbmZpZyB9ID0ge307XHJcbiAgICAgICAgaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcclxuICAgICAgICAgICAgbGV0IGlzSW5jbHVkZVByb3AgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5leGNsdWRlUHJvcHMgJiYgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLmV4Y2x1ZGVQcm9wcy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgaXNJbmNsdWRlUHJvcCA9IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5leGNsdWRlUHJvcHMuaW5kZXhPZihwcm9wZXJ0eS5uYW1lKSA9PSAtMVxyXG4gICAgICAgICAgICBpZiAoZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9ucylcclxuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxWYWxpZGF0aW9ucyA9IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9ucztcclxuICAgICAgICAgICAgaWYgKGlzSW5jbHVkZVByb3ApIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHkucHJvcGVydHlUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5VmFsaWRhdG9ycyA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnR5QW5ub3RhdGlvbnMuZmlsdGVyKHQgPT4gdC5wcm9wZXJ0eU5hbWUgPT0gcHJvcGVydHkubmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE9iamVjdFtwcm9wZXJ0eS5uYW1lXSA9IFtlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0sIHRoaXMuYWRkRm9ybUNvbnRyb2wocHJvcGVydHksIHByb3BlcnR5VmFsaWRhdG9ycywgYWRkaXRpb25hbFZhbGlkYXRpb25zW3Byb3BlcnR5Lm5hbWVdLCBpbnN0YW5jZUNvbnRhaW5lcildO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9QUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSAmJiBlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0gaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZUNvbnRhaW5lciAmJiBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5vYmplY3RQcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwT2JqZWN0W3Byb3BlcnR5Lm5hbWVdID0gdGhpcy5mb3JtR3JvdXAocHJvcGVydHkuZW50aXR5LCBlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0sIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEFSUkFZX1BST1BFUlRZOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdICYmIGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm9ybUFycmF5R3JvdXAgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzdWJPYmplY3Qgb2YgZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyICYmIGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5vYmplY3RQcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lICYmIHQuYXJyYXlJbmRleCA9PSBpbmRleClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQXJyYXlHcm91cC5wdXNoKHRoaXMuZm9ybUdyb3VwKHByb3BlcnR5LmVudGl0eSwgc3ViT2JqZWN0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwT2JqZWN0W3Byb3BlcnR5Lm5hbWVdID0gdGhpcy5mb3JtQnVpbGRlci5hcnJheShmb3JtQXJyYXlHcm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cChmb3JtR3JvdXBPYmplY3QpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtZm9ybS1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJ4d2ViL3JlYWN0aXZlLWZvcm0tdmFsaWRhdG9ycy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL3J4LWZvcm0tYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBeUIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVuRSxPQUFPLEVBQ0gscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFDOUcsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQ2pILGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQ3hGLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUNyRywyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFDakcsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBR25DLHFCQUFNLGNBQWMsR0FBZ0M7SUFD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QUFHLEtBQUssQ0FBQzt5QkFDekI7d0JBQ0QsS0FBSyxDQUFDO2lCQUNiO2FBQ0o7O1NBRUosQ0FBQyxDQUFBO1FBQ0YsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQywwQ0FBMEMsR0FBRyxFQUFFLENBQUM7U0FDeEQ7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDbEQ7O2dCQWxNSixVQUFVOzs7O2dCQXBERixXQUFXOzt3QkFEcEI7O1NBc0RhLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCJcclxuaW1wb3J0IHsgVHlwZSwgRGVjb3JhdG9yTmFtZSB9IGZyb20gXCIuLi91dGlsXCJcclxuaW1wb3J0IHtcclxuICAgIGFscGhhTnVtZXJpY1ZhbGlkYXRvciwgYWxwaGFWYWxpZGF0b3IsIGNvbXBhcmVWYWxpZGF0b3IsIGVtYWlsVmFsaWRhdG9yLCBoZXhDb2xvclZhbGlkYXRvciwgbG93ZXJjYXNlVmFsaWRhdG9yLFxyXG4gICAgbWF4RGF0ZVZhbGlkYXRvciwgbWF4TnVtYmVyVmFsaWRhdG9yLCBtaW5EYXRlVmFsaWRhdG9yLCBtaW5OdW1iZXJWYWxpZGF0b3IsIGNvbnRhaW5zVmFsaWRhdG9yLCB1cHBlcmNhc2VWYWxpZGF0b3IsXHJcbiAgICByYW5nZVZhbGlkYXRvciwgcGF0dGVyblZhbGlkYXRvciwgcmVxdWlyZWRWYWxpZGF0b3IsIGNyZWRpdENhcmRWYWxpZGF0b3IsIGRpZ2l0VmFsaWRhdG9yLFxyXG4gICAgbWF4TGVuZ3RoVmFsaWRhdG9yLCBtaW5MZW5ndGhWYWxpZGF0b3IsIHBhc3N3b3JkVmFsaWRhdG9yLCB0aW1lVmFsaWRhdG9yLCB1cmxWYWxpZGF0b3IsIGpzb25WYWxpZGF0b3IsXHJcbiAgICBncmVhdGVyVGhhbkVxdWFsVG9WYWxpZGF0b3IsIGdyZWF0ZXJUaGFuVmFsaWRhdG9yLCBsZXNzVGhhbkVxdWFsVG9WYWxpZGF0b3IsIGxlc3NUaGFuVmFsaWRhdG9yXHJcbn0gZnJvbSAnLi4vcmVhY3RpdmUtZm9ybS12YWxpZGF0b3JzJztcclxuXHJcbmltcG9ydCB7IGRlZmF1bHRDb250YWluZXIgfSBmcm9tICcuLi9jb3JlL2RlZmF1bHRDb250YWluZXInO1xyXG5pbXBvcnQgeyBEZWNvcmF0b3JDb25maWd1cmF0aW9uLCBJbnN0YW5jZUNvbnRhaW5lciwgUHJvcGVydHlJbmZvIH0gZnJvbSAnLi4vY29yZS92YWxpZGF0b3IuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL21vZGVsc1wiXHJcbmltcG9ydCB7IEFSUkFZX1BST1BFUlRZLCBPQkpFQ1RfUFJPUEVSVFksIFBST1BFUlRZIH0gZnJvbSBcIi4uL2NvbnN0XCJcclxuaW1wb3J0IHsgUHJvcFZhbGlkYXRpb25Db25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb3AtdmFsaWRhdGlvbi1jb25maWdcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdG9yLnN0YXRpY1wiO1xyXG5pbXBvcnQgeyBjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvciB9IGZyb20gXCIuLi9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvY29uZGl0aW9uYWwtY2hhbmdlLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQgeyBMaW5xIH0gZnJvbSAnLi4vdXRpbC9saW5xJ1xyXG5cclxuXHJcbmNvbnN0IEFQUF9WQUxJREFUT1JTOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0gPSB7XHJcbiAgICBcImFscGhhTnVtZXJpY1wiOiBhbHBoYU51bWVyaWNWYWxpZGF0b3IsXHJcbiAgICBcImFscGhhXCI6IGFscGhhVmFsaWRhdG9yLFxyXG4gICAgXCJjb21wYXJlXCI6IGNvbXBhcmVWYWxpZGF0b3IsXHJcbiAgICBcImVtYWlsXCI6IGVtYWlsVmFsaWRhdG9yLFxyXG4gICAgXCJoZXhDb2xvclwiOiBoZXhDb2xvclZhbGlkYXRvcixcclxuICAgIFwibG93ZXJDYXNlXCI6IGxvd2VyY2FzZVZhbGlkYXRvcixcclxuICAgIFwibWF4RGF0ZVwiOiBtYXhEYXRlVmFsaWRhdG9yLFxyXG4gICAgXCJtYXhOdW1iZXJcIjogbWF4TnVtYmVyVmFsaWRhdG9yLFxyXG4gICAgXCJtaW5EYXRlXCI6IG1pbkRhdGVWYWxpZGF0b3IsXHJcbiAgICBcIm1pbk51bWJlclwiOiBtaW5OdW1iZXJWYWxpZGF0b3IsXHJcbiAgICBcImNvbnRhaW5zXCI6IGNvbnRhaW5zVmFsaWRhdG9yLFxyXG4gICAgXCJ1cHBlckNhc2VcIjogdXBwZXJjYXNlVmFsaWRhdG9yLFxyXG4gICAgXCJtYXhMZW5ndGhcIjogbWF4TGVuZ3RoVmFsaWRhdG9yLFxyXG4gICAgXCJtaW5MZW5ndGhcIjogbWluTGVuZ3RoVmFsaWRhdG9yLFxyXG4gICAgXCJwYXNzd29yZFwiOiBwYXNzd29yZFZhbGlkYXRvcixcclxuICAgIFwicmFuZ2VcIjogcmFuZ2VWYWxpZGF0b3IsXHJcbiAgICBcInJlcXVpcmVkXCI6IHJlcXVpcmVkVmFsaWRhdG9yLFxyXG4gICAgXCJjcmVkaXRDYXJkXCI6IGNyZWRpdENhcmRWYWxpZGF0b3IsXHJcbiAgICBcImRpZ2l0XCI6IGRpZ2l0VmFsaWRhdG9yLFxyXG4gICAgXCJwYXR0ZXJuXCI6IHBhdHRlcm5WYWxpZGF0b3IsXHJcbiAgICBcInRpbWVcIjogdGltZVZhbGlkYXRvcixcclxuICAgIFwidXJsXCI6IHVybFZhbGlkYXRvcixcclxuICAgIFwianNvblwiOiBqc29uVmFsaWRhdG9yLFxyXG4gICAgXCJncmVhdGVyVGhhblwiOiBncmVhdGVyVGhhblZhbGlkYXRvcixcclxuICAgIFwiZ3JlYXRlclRoYW5FcXVhbFRvXCI6IGdyZWF0ZXJUaGFuRXF1YWxUb1ZhbGlkYXRvcixcclxuICAgIFwibGVzc1RoYW5cIjogbGVzc1RoYW5WYWxpZGF0b3IsXHJcbiAgICBcImxlc3NUaGFuRXF1YWxUb1wiOiBsZXNzVGhhbkVxdWFsVG9WYWxpZGF0b3JcclxufVxyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBSeEZvcm1CdWlsZGVyIHtcclxuICAgIHByaXZhdGUgbmVzdGVkUHJvcDogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBjb25kaXRpb25hbE9iamVjdFByb3BzOiBhbnlbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBjb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZTogYW55ID0ge307XHJcbiAgICBwcml2YXRlIGJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wczogYW55W10gPSBbXTtcclxuICAgIHByaXZhdGUgaXNOZXN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7IH1cclxuXHJcbiAgICBwcml2YXRlIGdldEluc3RhbmNlQ29udGFpbmVyKGluc3RhbmNlRnVuYzogYW55KTogSW5zdGFuY2VDb250YWluZXIge1xyXG4gICAgICAgIHJldHVybiBkZWZhdWx0Q29udGFpbmVyLmdldChpbnN0YW5jZUZ1bmMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0VmFsdWUoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIG9iamVjdDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgZm9yICh2YXIgY29sIGluIG9iamVjdCkge1xyXG4gICAgICAgICAgICB2YXIgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoW2NvbF0pO1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG9iamVjdFtjb2xdKTtcclxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZXh0cmFjdEV4cHJlc3Npb25zKGZvbXJCdWlsZGVyQ29uZmlndXJhdGlvbjogRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9IHtcclxuICAgICAgICBpZiAoZm9tckJ1aWxkZXJDb25maWd1cmF0aW9uICYmIGZvbXJCdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9ucykge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBmb21yQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGRlY29yYXRvciBpbiBmb21yQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnNbcHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvbXJCdWlsZGVyQ29uZmlndXJhdGlvbi52YWxpZGF0aW9uc1twcm9wZXJ0eV1bZGVjb3JhdG9yXS5jb25kaXRpb25hbEV4cHJlc3Npb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW5zID0gTGlucS5leHByZXNzaW9uQ29sdW1ucyhmb21yQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnNbcHJvcGVydHldW2RlY29yYXRvcl0uY29uZGl0aW9uYWxFeHByZXNzaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRDb250YWluZXIuYWRkQ2hhbmdlVmFsaWRhdGlvbih0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLCBwcm9wZXJ0eSwgY29sdW1ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkRm9ybUNvbnRyb2wocHJvcGVydHk6IFByb3BlcnR5SW5mbywgcHJvcGVydHlWYWxpZGF0b3JzOiBEZWNvcmF0b3JDb25maWd1cmF0aW9uW10sIHByb3BWYWxpZGF0aW9uQ29uZmlnOiBQcm9wVmFsaWRhdGlvbkNvbmZpZywgaW5zdGFuY2U6IEluc3RhbmNlQ29udGFpbmVyKSB7XHJcbiAgICAgICAgbGV0IHZhbGlkYXRvcnMgPSBbXTtcclxuICAgICAgICBsZXQgY29sdW1ucyA9IFtdO1xyXG4gICAgICAgIGlmICgoaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHMgJiYgaW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHkubmFtZV0pIHx8ICh0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzICYmIHRoaXMuY29uZGl0aW9uYWxWYWxpZGF0aW9uSW5zdGFuY2UuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNbcHJvcGVydHkubmFtZV0pKSB7XHJcbiAgICAgICAgICAgIGxldCBwcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoKGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzICYmIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdKSlcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdLmZvckVhY2godCA9PiBwcm9wcy5wdXNoKHQpKVxyXG4gICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcyAmJiB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW3Byb3BlcnR5Lm5hbWVdKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1twcm9wZXJ0eS5uYW1lXS5mb3JFYWNoKHQgPT4gcHJvcHMucHVzaCh0KSk7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvcihwcm9wcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzLmxlbmd0aCA+IDAgfHwgdGhpcy5idWlsZGVyQ29uZmlndXJhdGlvbkNvbmRpdGlvbmFsT2JqZWN0UHJvcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgcHJvcENvbmRpdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcylcclxuICAgICAgICAgICAgICAgIHByb3BDb25kaXRpb25zID0gdGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzLmZpbHRlcih0ID0+IHQucHJvcE5hbWUgPT0gcHJvcGVydHkubmFtZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wcylcclxuICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlckNvbmZpZ3VyYXRpb25Db25kaXRpb25hbE9iamVjdFByb3BzLmZpbHRlcih0ID0+IHQucHJvcE5hbWUgPT0gcHJvcGVydHkubmFtZSkuZm9yRWFjaCh0ID0+IHByb3BDb25kaXRpb25zLnB1c2godCkpO1xyXG4gICAgICAgICAgICBwcm9wQ29uZGl0aW9ucy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHQucmVmZXJlbmNlUHJvcE5hbWUgJiYgY29sdW1ucy5pbmRleE9mKHQucmVmZXJlbmNlUHJvcE5hbWUpID09IC0xKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMucHVzaCh0LnJlZmVyZW5jZVByb3BOYW1lKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChjb25kaXRpb25hbENoYW5nZVZhbGlkYXRvcihjb2x1bW5zKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IHByb3BlcnR5VmFsaWRhdG9yIG9mIHByb3BlcnR5VmFsaWRhdG9ycykge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goQVBQX1ZBTElEQVRPUlNbcHJvcGVydHlWYWxpZGF0b3IuYW5ub3RhdGlvblR5cGVdKHByb3BlcnR5VmFsaWRhdG9yLmNvbmZpZywgKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHByb3BWYWxpZGF0aW9uQ29uZmlnKVxyXG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxWYWxpZGF0aW9uKHZhbGlkYXRvcnMsIHByb3BWYWxpZGF0aW9uQ29uZmlnKTtcclxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZGl0aW9uYWxWYWxpZGF0aW9uKHZhbGlkYXRpb25zOiBhbnlbXSwgcHJvcFZhbGlkYXRpb25Db25maWc6IFByb3BWYWxpZGF0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgZm9yICh2YXIgY29sIGluIEFubm90YXRpb25UeXBlcykge1xyXG4gICAgICAgICAgICBpZiAocHJvcFZhbGlkYXRpb25Db25maWdbQW5ub3RhdGlvblR5cGVzW2NvbF1dICYmIGNvbCAhPSBcImN1c3RvbVwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKEFQUF9WQUxJREFUT1JTW0Fubm90YXRpb25UeXBlc1tjb2xdXShwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChjb2wgPT0gQW5ub3RhdGlvblR5cGVzLmN1c3RvbSAmJiBwcm9wVmFsaWRhdGlvbkNvbmZpZ1tBbm5vdGF0aW9uVHlwZXNbY29sXV0pXHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKHByb3BWYWxpZGF0aW9uQ29uZmlnW2NvbF0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrT2JqZWN0UHJvcEFkZGl0aW9uYWxWYWxpZGF0aW9uPFQ+KGluc3RhbmNlQ29udGFpbmVyOiBJbnN0YW5jZUNvbnRhaW5lciwgb2JqZWN0OiBUKSB7XHJcbiAgICAgICAgdmFyIHByb3BzID0gaW5zdGFuY2VDb250YWluZXIucHJvcGVydGllcy5maWx0ZXIodCA9PiB0LnByb3BlcnR5VHlwZSA9PSBPQkpFQ1RfUFJPUEVSVFkgfHwgdC5wcm9wZXJ0eVR5cGUgPT0gQVJSQVlfUFJPUEVSVFkpXHJcbiAgICAgICAgcHJvcHMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5nZXRJbnN0YW5jZUNvbnRhaW5lcih0LmVudGl0eSk7XHJcbiAgICAgICAgICAgIGlmIChpbnN0YW5jZS5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcykge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3AgPSBpbnN0YW5jZS5wcm9wZXJ0aWVzLmZpbHRlcih0ID0+IHQubmFtZSA9PSBrZXkpWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcHJvcClcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcCA9IGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXMuZmlsdGVyKHQgPT4gdC5uYW1lID09IGtleSlbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3ApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxWYWxpZGF0aW9uUHJvcHNba2V5XSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2tleV0uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnByb3BlcnR5VHlwZSAhPSBBUlJBWV9QUk9QRVJUWSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbFZhbGlkYXRpb25Qcm9wc1trZXldLnB1c2goW3QubmFtZSwgeF0uam9pbignLicpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzW2tleV0ucHVzaChbdC5uYW1lLCB4XS5qb2luKCdbXScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T2JqZWN0KG1vZGVsOiBhbnkgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBlbnRpdHlPYmplY3Q/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24/OiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pOiB7W2tleTpzdHJpbmddOmFueX0ge1xyXG4gICAgICAgIGxldCBqc29uOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgbW9kZWwgPT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgICAgICBqc29uLm1vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlPYmplY3QgJiYgIShlbnRpdHlPYmplY3QgaW5zdGFuY2VvZiBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pKVxyXG4gICAgICAgICAgICBqc29uLmVudGl0eU9iamVjdCA9IGVudGl0eU9iamVjdDtcclxuXHJcbiAgICAgICAgaWYgKGVudGl0eU9iamVjdCBpbnN0YW5jZW9mIEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAmJiAhZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKVxyXG4gICAgICAgICAgICBqc29uLmZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiA9IGVudGl0eU9iamVjdDtcclxuICAgICAgICBlbHNlIGlmICghKGVudGl0eU9iamVjdCBpbnN0YW5jZW9mIEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbikgJiYgZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKVxyXG4gICAgICAgICAgICBqc29uLmZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiA9IGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbjtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIWVudGl0eU9iamVjdCkge1xyXG4gICAgICAgICAgICBqc29uLmVudGl0eU9iamVjdCA9IG1vZGVsO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG1vZGVsID09IFwib2JqZWN0XCIpXHJcbiAgICAgICAgICAgICAgICBqc29uLm1vZGVsID0gbW9kZWwuY29uc3RydWN0b3I7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbCAmJiAoZW50aXR5T2JqZWN0IGluc3RhbmNlb2YgRm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKSAmJiAodHlwZW9mIG1vZGVsID09IFwib2JqZWN0XCIpKSB7XHJcbiAgICAgICAgICAgIGpzb25bXCJlbnRpdHlPYmplY3RcIl0gPSBtb2RlbDtcclxuICAgICAgICAgICAganNvbltcIm1vZGVsXCJdID0gbW9kZWwuY29uc3RydWN0b3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqc29uO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm1Hcm91cDxUPihtb2RlbDogVHlwZTxUPiB8IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGVudGl0eU9iamVjdD86IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBGb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24sIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbj86IEZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbik6IEZvcm1Hcm91cCB7XHJcbiAgICAgICAgbGV0IGpzb24gPSB0aGlzLmdldE9iamVjdChtb2RlbCwgZW50aXR5T2JqZWN0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIG1vZGVsID0ganNvbi5tb2RlbDtcclxuICAgICAgICBlbnRpdHlPYmplY3QgPSBqc29uLmVudGl0eU9iamVjdDtcclxuICAgICAgICBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24gPSBqc29uLmZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbjtcclxuICAgICAgICBpZiAoZm9ybUJ1aWxkZXJDb25maWd1cmF0aW9uKVxyXG4gICAgICAgICAgICB0aGlzLmV4dHJhY3RFeHByZXNzaW9ucyhmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgIGxldCBpbnN0YW5jZUNvbnRhaW5lcjogSW5zdGFuY2VDb250YWluZXIgPSB0aGlzLmdldEluc3RhbmNlQ29udGFpbmVyKG1vZGVsKTtcclxuICAgICAgICB0aGlzLmNoZWNrT2JqZWN0UHJvcEFkZGl0aW9uYWxWYWxpZGF0aW9uKGluc3RhbmNlQ29udGFpbmVyLCBlbnRpdHlPYmplY3QpO1xyXG4gICAgICAgIGxldCBmb3JtR3JvdXBPYmplY3QgPSB7fTtcclxuICAgICAgICBsZXQgZm9ybUNoaWxkR3JvdXAgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgbGV0IGZvcm1BcnJheUdyb3VwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHZhciBhZGRpdGlvbmFsVmFsaWRhdGlvbnM6IHsgW2tleTogc3RyaW5nXTogUHJvcFZhbGlkYXRpb25Db25maWcgfSA9IHt9O1xyXG4gICAgICAgIGluc3RhbmNlQ29udGFpbmVyLnByb3BlcnRpZXMuZm9yRWFjaChwcm9wZXJ0eSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpc0luY2x1ZGVQcm9wID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAmJiBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24uZXhjbHVkZVByb3BzICYmIGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbi5leGNsdWRlUHJvcHMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIGlzSW5jbHVkZVByb3AgPSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24uZXhjbHVkZVByb3BzLmluZGV4T2YocHJvcGVydHkubmFtZSkgPT0gLTFcclxuICAgICAgICAgICAgaWYgKGZvcm1CdWlsZGVyQ29uZmlndXJhdGlvbiAmJiBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnMpXHJcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsVmFsaWRhdGlvbnMgPSBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24udmFsaWRhdGlvbnM7XHJcbiAgICAgICAgICAgIGlmIChpc0luY2x1ZGVQcm9wKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5LnByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUFJPUEVSVFk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eVZhbGlkYXRvcnMgPSBpbnN0YW5jZUNvbnRhaW5lci5wcm9wZXJ0eUFubm90YXRpb25zLmZpbHRlcih0ID0+IHQucHJvcGVydHlOYW1lID09IHByb3BlcnR5Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBPYmplY3RbcHJvcGVydHkubmFtZV0gPSBbZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdLCB0aGlzLmFkZEZvcm1Db250cm9sKHByb3BlcnR5LCBwcm9wZXJ0eVZhbGlkYXRvcnMsIGFkZGl0aW9uYWxWYWxpZGF0aW9uc1twcm9wZXJ0eS5uYW1lXSwgaW5zdGFuY2VDb250YWluZXIpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05lc3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIE9CSkVDVF9QUk9QRVJUWTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSAmJiBlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0gaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNOZXN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlQ29udGFpbmVyICYmIGluc3RhbmNlQ29udGFpbmVyLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzID0gaW5zdGFuY2VDb250YWluZXIuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5maWx0ZXIodCA9PiB0Lm9iamVjdFByb3BOYW1lID09IHByb3BlcnR5Lm5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZSAmJiB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyQ29uZmlndXJhdGlvbkNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMuZmlsdGVyKHQgPT4gdC5vYmplY3RQcm9wTmFtZSA9PSBwcm9wZXJ0eS5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE9iamVjdFtwcm9wZXJ0eS5uYW1lXSA9IHRoaXMuZm9ybUdyb3VwKHByb3BlcnR5LmVudGl0eSwgZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdLCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05lc3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQVJSQVlfUFJPUEVSVFk6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHlPYmplY3RbcHJvcGVydHkubmFtZV0gJiYgZW50aXR5T2JqZWN0W3Byb3BlcnR5Lm5hbWVdIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNOZXN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvcm1BcnJheUdyb3VwID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3ViT2JqZWN0IG9mIGVudGl0eU9iamVjdFtwcm9wZXJ0eS5uYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZUNvbnRhaW5lciAmJiBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvbmFsT2JqZWN0UHJvcHMgPSBpbnN0YW5jZUNvbnRhaW5lci5jb25kaXRpb25hbE9iamVjdFByb3BzLmZpbHRlcih0ID0+IHQub2JqZWN0UHJvcE5hbWUgPT0gcHJvcGVydHkubmFtZSAmJiB0LmFycmF5SW5kZXggPT0gaW5kZXgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uYWxWYWxpZGF0aW9uSW5zdGFuY2UgJiYgdGhpcy5jb25kaXRpb25hbFZhbGlkYXRpb25JbnN0YW5jZS5jb25kaXRpb25hbE9iamVjdFByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJDb25maWd1cmF0aW9uQ29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IHRoaXMuY29uZGl0aW9uYWxWYWxpZGF0aW9uSW5zdGFuY2UuY29uZGl0aW9uYWxPYmplY3RQcm9wcy5maWx0ZXIodCA9PiB0Lm9iamVjdFByb3BOYW1lID09IHByb3BlcnR5Lm5hbWUgJiYgdC5hcnJheUluZGV4ID09IGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQXJyYXlHcm91cC5wdXNoKHRoaXMuZm9ybUdyb3VwKHByb3BlcnR5LmVudGl0eSwgc3ViT2JqZWN0LCBmb3JtQnVpbGRlckNvbmZpZ3VyYXRpb24pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZGl0aW9uYWxPYmplY3RQcm9wcyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnVpbGRlckNvbmZpZ3VyYXRpb25Db25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtR3JvdXBPYmplY3RbcHJvcGVydHkubmFtZV0gPSB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KGZvcm1BcnJheUdyb3VwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNOZXN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICghdGhpcy5pc05lc3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmRpdGlvbmFsVmFsaWRhdGlvbkluc3RhbmNlID0ge307XHJcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlckNvbmZpZ3VyYXRpb25Db25kaXRpb25hbE9iamVjdFByb3BzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKGZvcm1Hcm91cE9iamVjdCk7XHJcbiAgICB9XHJcbn1cclxuIl19 |
@@ -8,2 +8,5 @@ import { DefaultConfig } from "./config/default-config"; | ||
import { DateConfig } from "./config/date-config"; | ||
import { DigitConfig } from "./config/digit-config"; | ||
import { EmailConfig } from "./config/email-config"; | ||
import { MessageConfig } from "./config/message-config"; | ||
import { ValidatorFn } from "@angular/forms"; | ||
@@ -18,7 +21,7 @@ export interface PropValidationConfig { | ||
alpha?: AlphaConfig | boolean; | ||
numeric?: boolean; | ||
digit?: DigitConfig | boolean; | ||
alphaNumeric?: AlphaConfig | boolean; | ||
email?: boolean; | ||
hexColor?: boolean; | ||
lowercase?: boolean; | ||
email?: EmailConfig | boolean; | ||
hexColor?: MessageConfig | boolean; | ||
lowercase?: MessageConfig | boolean; | ||
maxDate?: DateConfig; | ||
@@ -28,5 +31,5 @@ maxNumber?: NumberConfig; | ||
minNumber?: NumberConfig; | ||
uppercase?: boolean; | ||
uppercase?: MessageConfig | boolean; | ||
range?: RangeConfig; | ||
custom?: ValidatorFn; | ||
} |
{ | ||
"name": "@rxweb/reactive-form-validators", | ||
"version": "1.1.2", | ||
"version": "1.1.3", | ||
"main": "bundles/rxweb-reactive-form-validators.umd.js", | ||
@@ -17,3 +17,3 @@ "module": "fesm5/rxweb-reactive-form-validators.js", | ||
}, | ||
"homepage": "https://github.com/rxweb/rxweb/tree/master/packages/reactive-form-validators#readme", | ||
"keywords": [ "angular", "formgroup", "formarray", "reactive form validation", "angular2 validation", "angular5 validation", "validators", "conditional form validation", "dynamic form validation", "formcontrol" ], | ||
"repository": { | ||
@@ -23,3 +23,5 @@ "type": "git", | ||
}, | ||
"homepage": "https://github.com/rxweb/rxweb/tree/master/packages/reactive-form-validators#readme", | ||
"license": "MIT" | ||
} |
@@ -26,18 +26,18 @@ [](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators) | ||
* [Implement Validation Decorators](#implement-validation-decorators) | ||
* [Documentation](#documentation) | ||
* [Validation Example Demo](#validation-example-demo) | ||
* [License](#license) | ||
## Introduction | ||
Smart way to validate the forms with `@rxweb/reactive-form-validators`. RxWeb Reactive Forms Validation provides several different approaches to validate your application's data. It supports client side validations with reactive form in angular and also manage to useful validation messages. | ||
**[Documentation](http://rxweb.github.io)** | ||
Smart way to validate the forms with `@rxweb/reactive-form-validators`. RxWeb Reactive Forms Validation provides several different approaches to validate your application form data. It supports client side reactive form validation in angular and also manage the useful validation messages. | ||
## Installation | ||
```bash | ||
$ npm install @rxweb/reactive-form-validators@1.1.2-beta.2 | ||
$ npm install @rxweb/reactive-form-validators | ||
``` | ||
## Validation Quick Start | ||
To learn more about Rx Web powerful validation features, let us look at a complete example of validating a form and displaying the error messages back to the user. | ||
To learn more about `rxweb` powerful validation features, let us look at a complete example of validating a form and displaying the error messages back to the user. | ||
## Import modules | ||
To work on form it is require to import angular modules(FormsModule && ReactiveFormsModule) and for rxweb reactive form validation to import 'RxReactiveFormsModule' module and register that in the NgModule decorator imports property. | ||
To work on form it is require to import angular modules(`FormsModule` and `ReactiveFormsModule`) and also import 'RxReactiveFormsModule' which provides advanced/dynamic level validation features. All three modules register in the `NgModule` decorator `imports` property. | ||
```js | ||
@@ -67,4 +67,4 @@ import { BrowserModule } from '@angular/platform-browser'; | ||
## Configure Global Validation Messages | ||
Apply global validation messages throughout the application, then configure the validation messages globaly(whenever application starts it will initialized automatically). | ||
Below is the example to configure the validation messages in 'ReactiveFromConfig'. | ||
Consitency is required any enterprise level application. It is good to manage the error message on application wide, So configure and register the validation messages at the start of the application. | ||
Below is the example to configure the validation messages in 'ReactiveFromConfig'. | ||
```js | ||
@@ -98,2 +98,3 @@ import { Component, OnInit } from '@angular/core'; | ||
## Implement Validation Decorators | ||
**[Demo Code Walkthrough and Download the code](https://stackblitz.com/edit/complete-rxweb-angular-reactive-form-validator-example)** | ||
@@ -191,6 +192,14 @@ > user.model.ts | ||
socialProfileUrl: string | ||
@minDate({ value: new Date(2000, 0, 1) }) | ||
licenseDate: Date; | ||
@propObject(UserAddress) userAddress: UserAddress; | ||
@maxDate({ value: new Date(2018, 5, 6) }) | ||
licenseExpiration: Date | ||
@propArray(Course) courses: Array<Course>; | ||
@propObject(UserAddress) | ||
userAddress: UserAddress; | ||
@propArray(Course) | ||
courses: Array<Course>; | ||
} | ||
@@ -208,3 +217,3 @@ ``` | ||
```js | ||
import { prop } from "@rxweb/reactive-form-validators"; | ||
import { required } from "@rxweb/reactive-form-validators"; | ||
@@ -220,4 +229,8 @@ export class Course { | ||
import { FormGroup } from '@angular/forms'; | ||
import { User } from "./user.model"; | ||
import { UserAddress } from "./models/user-address.model"; | ||
import { Course } from "./models/course.model"; | ||
@Component({...}) | ||
@@ -241,4 +254,10 @@ | ||
``` | ||
## Validation Example | ||
This example only covers the basic validations. For advanced, conditional and dynamic validations goto the **[rxweb](https://rxweb.github.io)** . | ||
**[Demo Code Walkthrough and Download the code](https://stackblitz.com/edit/complete-rxweb-angular-reactive-form-validator-example)** | ||
<img src="https://rxweb.blob.core.windows.net/test/CompleteValidator.gif"/> | ||
# License | ||
MIT |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"exports":[{"from":"./enums"}],"metadata":{"RxReactiveFormsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[],"exports":[],"imports":[{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":8,"character":14},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":8,"character":27}],"providers":[{"__symbolic":"reference","name":"RxFormBuilder"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"RxReactiveFormsModule"},"providers":[]}}}},"RxFormBuilder":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":52,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":56,"character":37}]}],"getInstanceContainer":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"addFormControl":[{"__symbolic":"method"}],"additionalValidation":[{"__symbolic":"method"}],"checkObjectPropAdditionalValidation":[{"__symbolic":"method"}],"getObject":[{"__symbolic":"method"}],"formGroup":[{"__symbolic":"method"}]}},"FormBuilderConfiguration":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FormBuilderConfiguration"}]}]}},"ReactiveFormConfig":{"__symbolic":"class","members":{},"statics":{"json":{}}}},"origins":{"RxReactiveFormsModule":"./services/reactive-form.module","RxFormBuilder":"./services/rx-form-builder","FormBuilderConfiguration":"./models/form-builder-configuration","ReactiveFormConfig":"./util/reactive-form-config"},"importAs":"@rxweb/reactive-form-validators"} | ||
{"__symbolic":"module","version":4,"exports":[{"from":"./enums"}],"metadata":{"RxReactiveFormsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[],"exports":[],"imports":[{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":8,"character":14},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":8,"character":27}],"providers":[{"__symbolic":"reference","name":"RxFormBuilder"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"RxReactiveFormsModule"},"providers":[]}}}},"RxFormBuilder":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":53,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":60,"character":37}]}],"getInstanceContainer":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"extractExpressions":[{"__symbolic":"method"}],"addFormControl":[{"__symbolic":"method"}],"additionalValidation":[{"__symbolic":"method"}],"checkObjectPropAdditionalValidation":[{"__symbolic":"method"}],"getObject":[{"__symbolic":"method"}],"formGroup":[{"__symbolic":"method"}]}},"FormBuilderConfiguration":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"FormBuilderConfiguration"}]}]}},"ReactiveFormConfig":{"__symbolic":"class","members":{},"statics":{"json":{}}}},"origins":{"RxReactiveFormsModule":"./services/reactive-form.module","RxFormBuilder":"./services/rx-form-builder","FormBuilderConfiguration":"./models/form-builder-configuration","ReactiveFormConfig":"./util/reactive-form-config"},"importAs":"@rxweb/reactive-form-validators"} |
@@ -8,5 +8,9 @@ import { FormBuilder, FormGroup } from "@angular/forms"; | ||
private conditionalObjectProps; | ||
private conditionalValidationInstance; | ||
private builderConfigurationConditionalObjectProps; | ||
private isNested; | ||
constructor(formBuilder: FormBuilder); | ||
private getInstanceContainer(instanceFunc); | ||
private setValue(formGroup, object); | ||
private extractExpressions(fomrBuilderConfiguration); | ||
private addFormControl(property, propertyValidators, propValidationConfig, instance); | ||
@@ -13,0 +17,0 @@ private additionalValidation(validations, propValidationConfig); |
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
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
2456983
13671
256