(function(){var e,t,n={};typeof module!="undefined"&&module.exports?(e=require("tv4"),t=require("lodash"),module.exports=n):typeof define!="undefined"?define(["amanda","underscore"],function(r,i){return e=e,t=i,n}):(e=e,t=_,this.ruleValidator=n);var r={};r.prototype={validate:function(n,r,i){if(this[n]){var s=e.validateResult(r,this[n]);s.valid?i(null):s.error.subErrors&&s.error.subErrors.length>0?(s.error.subErrors=t.sortBy(s.error.subErrors,function(e){return-e.code}),i(s.error.subErrors[0].dataPath+" => "+s.error.subErrors[0].message)):i(s.error.dataPath+" => "+s.error.message)}else i(null)}},n.extend=function(e,n){var i=t.extend(t.clone(r.prototype),n);for(var s in e){var o=e[s];o.type==="object"&&o.properties?i[s]=o:i[s]={type:"object",properties:o},i[s].ruleName=s,i[s].validate=function(e,t){i.validate(this.ruleName,e,t)}}return i}})()