{"version":3,"sources":["webpack:///./node_modules/jquery-validation/dist/jquery.validate.js"],"names":["__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","__webpack_require__","undefined","$","extend","fn","validate","options","this","length","validator","data","attr","settings","onsubmit","on","event","submitButton","currentTarget","hasClass","cancelSubmit","handle","hidden","result","submitHandler","formSubmitted","name","val","appendTo","currentForm","debug","call","remove","preventDefault","form","pendingRequest","focusInvalid","window","console","warn","valid","errorList","is","each","element","concat","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","closest","normalizeRule","messages","split","index","method","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","pseudos","blank","a","trim","filled","unchecked","prop","defaults","init","format","source","params","arguments","args","makeArray","unshift","apply","constructor","Array","slice","i","n","replace","RegExp","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","inArray","keyCode","invalid","onclick","parentNode","highlight","type","findByName","addClass","removeClass","setDefaults","email","url","date","dateISO","number","digits","equalTo","maxlength","minlength","rangelength","range","max","min","step","autoCreateRanges","prototype","labelContainer","errorContext","containers","add","valueCache","pending","reset","delegate","eventType","key","value","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","rs","group","cleanElement","clean","checkElement","validationTargetFor","v","prepareElement","testgroup","push","numberOfInvalids","toHide","errors","map","message","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","removeAttr","resetElements","objectLength","obj","count","not","text","addWrapper","hide","size","findLastActive","filter","focus","trigger","e","rulesCache","find","error","selector","join","resetInternals","toShow","idx","$element","validity","badInput","substr","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","log","id","TypeError","customDataMessage","charAt","toUpperCase","substring","toLowerCase","customMessage","m","String","findDefined","defaultMessage","title","theregex","test","toToggle","wrapper","parent","showLabel","success","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","html","wrap","append","errorPlacement","insertAfter","parents","escapeCssMeta","match","describer","string","getLength","nodeName","depend","dependTypes","boolean","function","startRequest","stopRequest","submit","previousValue","old","destroy","off","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","Number","isNaN","getAttribute","depends","keepRule","parameter","isFunction","parts","isArray","transformed","addMethod","called","Date","toString","decimals","errorMessage","re","notSupported","decimalPlaces","num","toInt","Math","round","pow","Error","target","optionDataString","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","exports","module"],"mappings":"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","file":"vendors~jquery-validation.chunks.js","sourcesContent":["/*!\r\n * jQuery Validation Plugin v1.19.0\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2018 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!$.trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.focus()\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[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])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})).?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));"],"sourceRoot":""}