{"version":3,"sources":["webpack:///./node_modules/uuid/index.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/uuid/lib/rng-browser.js"],"names":["v1","v4","uuid","module","exports","byteToHex","i","toString","substr","bytesToUuid","buf","offset","bth","join","isTextInput","el","includes","type","isCheckboxOrRadioInput","isDateInput","getDataAttribute","name","getAttribute","isNullOrUndefined","values","len","arguments","length","every","value","undefined","createFlags","untouched","touched","dirty","pristine","valid","invalid","validated","pending","required","changed","isEqual","lhs","rhs","RegExp","source","flags","Array","isArray","isObject","Object","keys","key","getScope","scope","form","getForm","tagName","parentNode","getPath","path","target","def","split","prop","hasPath","obj","parseRule","rule","params","slice","debounce","fn","wait","token","cancelled","args","later","timeout","apply","clearTimeout","setTimeout","appendRule","rules","normalizeRules","assign","reduce","prev","curr","warn","parsedRule","message","console","createError","Error","isCallable","func","hasClass","className","classList","contains","match","addClass","add","removeClass","remove","reg","replace","toggleClass","status","forEach","item","toArray","arrayLike","from","array","push","others","concat","TypeError","to","arg","id","idTemplate","uniqId","newId","String","find","predicate","isBuiltInComponent","vnode","tag","componentOptions","test","makeDelayObject","events","delay","delayConfig","e","deepParseInt","input","parseInt","map","element","merge","obj$1","fillRulesFromElement","multiple","pattern","regex","maxLength","minLength","min","max","timeFormat","step","Number","k","parseSelector","selector","pop","parts","collection","indexOf","isEmptyArray","arr","LOCALE","Dictionary","dictionary","this","container","prototypeAccessors","locale","configurable","get","set","prototype","hasLocale","setDateFormat","format","dateFormat","getDateFormat","getMessage","data","hasMessage","messages","_getDefaultMessage","getFieldMessage","field","dict","custom","_default","en","fallback","hasAttribute","attributes","setMessage","setAttribute","attribute","defineProperties","drivers","default","currentDriver","DictionaryResolver","_checkDriverName","driver","setDriver","implementation","getDriver","ErrorBag","errorBag","vmId","items","findModel","model","directives","d","extractChildren","children","extractVNodes","nodes","node","candidates","findModelConfig","Ctor","options","mergeVNodeListeners","eventName","handler","prevHandler","addNativeNodeListener","on","addComponentNodeListener","listeners","addVNodeListener","getInputEventName","ref","event","modifiers","lazy","attrs","normalizeSlots","slots","ctx","context","slot","createRenderless","h","Symbol","iterator","this$1","index","next","done","error","_normalizeError","regenerate","msg","update","idx","splice","all","filterFn","matchesScope","matchesVM","filter","any","clear","collect","isSingleField","groupErrors","errors","_makeCandidateFilters","isPrimary","isAlt","collected","primary","alt","count","firstById","first","_match","firstRule","has","firstByRule","firstNot","removeById","condition","matches","shouldRemove","matchesRule","matchesName","isLast","Resolver","generate","binding","resolveModel","pluginInstance","resolveConfig","resolveName","listen","disable","bails","continues","resolveScope","vm","makeVM","expression","component","componentInstance","classes","classNames","getter","resolveGetter","resolveEvents","resolveDelay","resolveRules","immediate","initial","validity","aria","initialValue","resolveInitialValue","getCtorConfig","config","normalized","$el","$refs","$watch","bind","$validator","validate","globalDelay","$attrs","$options","watchable","boundGetter","els","document","querySelectorAll","checked","checkbox","elm","files","opt","selected","RULES","RuleContainer","staticAccessors","paramNames","isImmediate","isTargetRule","hasTarget","ruleName","getParamNames","getOptions","getValidatorMethod","isEvent","evt","Event","srcElement","normalizeEvents","evts","supportsPassive","detectPassiveSupport","opts","defineProperty","window","addEventListener","removeEventListener","cb","passive","DEFAULT_OPTIONS","targetOf","Field","updated","dependencies","watchers","_cacheId","_delay","ctorConfig","prototypeAccessors$1","validator","isRequired","isDisabled","alias","rejectsFalse","disabled","_alias","call","_bails","matchesComponentId","_veeValidateId","waitFor","pendingPromise","_waitingFor","isWaitingFor","promise","updateDependencies","addActionListeners","addValueListeners","updateClasses","updateAriaAttrs","reset","_cancellationToken","defaults","flag","updateCustomValidity","setFlags","negated","destroy","fields","r","ref$1","$vnode","unwatch","w","isReset","applyClasses","onBlur","inputEvent","onInput","$once","$off","blurEvent","checkValueChanged","_determineInputEvent","_determineEventList","defaultInputEvent","debouncedFn","_addComponentEventListener","_addHTMLEventListener","$on","addListener","applyAriaAttrs","setCustomValidity","FieldBag","prototypeAccessors$2","matcher","some","m","mapper","ScopedValidator","base","_uid","_base","_paused","prototypeAccessors$3","f","acc","val","localize","attach","attachOpts","pause","resume","detach","extend","descriptor","Promise","resolve","validateAll","values$$1","validateScopes","requestsValidator","injections","mixin","provide","beforeCreate","$__veeInject","$parent","configure","$_veeValidate","_validator","requested","inject","Vue","util","defineReactive","computed","errorBagName","fieldsBagName","beforeDestroy","findField","directive","fieldOptions","inserted","oldValue","unbind","Validator","validations","fastExit","_createFields","paused","prototypeAccessors$4","staticAccessors$1","VeeValidate$1","i18nDriver","hasChanged","instance","_vm","$emit","create","_guardExtend","_merge","lang","fieldOpts","$nextTick","_validate","then","result","uid","_resolveField","fieldDescriptor","silent","matched","_handleFieldNotFound","validationPromise","_handleValidationResults","providedValues","results","t","verify","targetRules","rest","_getDateFormat","date_format","_formatErrorMessage","targetName","_getFieldDisplayName","_getLocalizedParams","_convertParamObjectToArray","paramName","localizedName","_convertParamArrayToObj","hasKeys","_test","reject","isDate","allValid","_createFieldError","fieldScope","fieldName","fullName","matchers","allErrors","_shouldSkip","_shouldBail","promises","isExitEarly","ruleOptions","v","normalize","combine","mapScope","deep","isScope","mapFields","PROVIDER_COUNTER","createValidationCtx","isValid","onRenderUpdate","validateNow","_needsValidation","shouldRevalidate","initialized","silentHandler","validateSilent","applyResult","createCommonHandlers","syncValue","onValidate","_waiting","addListeners","_inputEventName","normalizedEvents","createValuesLookup","providers","$_veeObserver","refs","fieldDeps","depName","updateRenderingContextRefs","vid","$unsubscribe","$subscribe","createObserver","ValidationProvider","props","Boolean","watch","methods","registerField","watcherName","names","render","$scopedSlots","$slots","flagMergingStrategy","mergeFlags","strategy","stratName","ValidationObserver","provider","thenable","success","withValidation","ctxToProps","hoc","vctx","$listeners","normalizeValue","normalizeFormat","I18nDictionary","i18n","rootKey","prototypeAccessors$5","getDateTimeFormat","setDateTimeFormat","_","te","fallbackLocale","localeKey","clone","mergeLocaleMessage","pendingPlugins","defaultConfig","i18nRootKey","currentConfig","_Vue","_initVM","_initI18n","prototypeAccessors$6","staticAccessors$2","setI18nDriver","cfg","use","plugin","Rules","install","onLocaleChanged","selfConfig","version","formatFileSize","size","units","threshold","Math","floor","log","pow","toFixed","isDefinedGlobally","VeeValidate","after","inclusion","alpha","alpha_dash","alpha_num","alpha_spaces","before","between","confirmed","credit_card","date_between","decimal","decimals","digits","dimensions","width","height","email","excluded","ext","image","included","integer","ip","max_value","mimes","min_value","numeric","url","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimeter","plainTime","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","argument","dirtyOptions","Date","NaN","additionalDigits","RangeError","getTime","dateStrings","splitDateString","parseYearResult","parseYear","date","year","restDateString","parseDate","timestamp","time","parseTime","parseTimezone","getTimezoneOffset","dateString","timeString","exec","patternYYY","patternYYYYY","yearString","centuryString","month","week","setUTCFullYear","dayOfYear","day","dayOfISOYear","dayOfWeek","hours","minutes","parseFloat","seconds","timezoneString","absoluteOffset","isoYear","fourthOfJanuaryDay","getUTCDay","diff","setUTCDate","getUTCDate","addMilliseconds","dirtyDate","dirtyAmount","amount","cloneObject","dirtyObject","object","property","hasOwnProperty","MILLISECONDS_IN_MINUTE$2","addMinutes","isNaN","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","addSuffix","comparison","tokensToBeShortedPattern","buildShortLongFormat","buildFormatLongFn","formatLongLocale","LTS","LT","L","LL","LLL","LLLL","l","ll","lll","llll","formatLong","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","baseDate","buildLocalizeFn","defaultType","indexCallback","dirtyIndex","valuesArray","buildLocalizeArrayFn","weekdayValues","narrow","short","long","monthValues","timeOfDayValues","uppercase","lowercase","ordinalNumber","dirtyNumber","number","rem100","weekday","weekdays","months","timeOfDay","timesOfDay","buildMatchFn","dirtyString","string","buildParseFn","matchResult","patternsArray","findIndex","buildMatchPatternFn","parseDecimal","matchOrdinalNumbersPattern","matchWeekdaysPatterns","parseWeekdayPatterns","matchMonthsPatterns","parseMonthPatterns","matchTimesOfDayPatterns","parseTimeOfDayPatterns","ordinalNumbers","locale$1","weekStartsOn","firstWeekContainsDate","MILLISECONDS_IN_DAY$1","getUTCDayOfYear","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","startOfUTCISOWeek","getUTCISOWeekYear","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK$2","getUTCISOWeek","round","formatters","getUTCMonth","unit","addLeadingZeros","ceil","quarter","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","originalDate","_originalDate","formatTimezone","delimeter","sign","absOffset","abs","targetLength","output","addUTCMinutes","setUTCMinutes","longFormattingTokensRegExp","defaultFormattingTokensRegExp","dirtyFormatStr","formatStr","localeFormatters","formattingTokensRegExp","timezoneOffset","utcDate","formatterOptions","substring","cleanEscapedString","formatter","subMinutes","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual$1","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","patterns$1","singleDigit","twoDigits","threeDigits","fourDigits","anyDigits","parseDecimal$1","parsers","parse","M","parseResult","W","D","H","Z","ZZ","setUTCDay","dirtyDay","localeWeekStartsOn","defaultWeekStartsOn","currentDay","remainder","dayIndex","setUTCISODay","setUTCISOWeek","dirtyISOWeek","isoWeek","MILLISECONDS_IN_DAY$3","setUTCISOWeekYear","dirtyISOYear","dateStartOfYear","MILLISECONDS_IN_MINUTE$6","setTimeOfDay","isAM","twoDigitYear","priority","dateValues","century","dayOfISOWeek","dayOfMonth","timeOfDayHours","setUTCSeconds","milliseconds","setUTCMilliseconds","TIMEZONE_UNIT_PRIORITY","MILLISECONDS_IN_MINUTE$7","longFormattingTokensRegExp$1","defaultParsingTokensRegExp","dirtyDateString","dirtyFormatString","dirtyBaseDate","localeParsers","localeUnits","formatString","cleanEscapedString$1","subFnOptions","tokens","parsingTokensRegExp","tokensLength","setters","dateToSystemTimezone","parser","unitName","head","uniquePrioritySetters","setter","sort","a","b","reverse","setterArray","settersLength","parseDate$1","format$$1","parsed","afterValidator","targetValue","cs","da","de","es","fr","lt","nl","hu","pl","pt","ru","sk","sr","sv","tr","uk","ar","alphaSpaces","alphanumeric","alphaDash","loc","paramNames$1","alpha$1","validate$1","paramNames$2","validate$2","paramNames$3","validate$3","paramNames$4","validate$4","options$1","paramNames$5","validate$5","paramNames$6","validate$6","options$2","paramNames$7","unwrapExports","x","__esModule","createCommonjsModule","assertString_1","_typeof","constructor","assertString","isString","invalidType","isCreditCard_1","isCreditCard","_assertString2","_interopRequireDefault","creditCard","str","sanitized","sum","digit","tmpNum","shouldDouble","validate$7","validate$8","min$$1","max$$1","inclusivity","minDate","maxDate","dateVal","options$3","paramNames$8","validate$9","options$4","paramNames$9","validate$a","separator","regexPart","parsedValue","paramNames$a","validate$b","strVal","validateImage","file","URL","webkitURL","Image","onerror","onload","src","createObjectURL","validate$c","list","merge_1","isByteLength_1","isByteLength","encodeURI","isFQDN_1","isFQDN","_merge2","default_fqdn_options","require_tld","allow_underscores","allow_trailing_dot","tld","part","_i","isIP_1","isIP","ipv4Maybe","ipv6Block","blocks","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","shift","isEmail_1","isEmail","_isByteLength2","_isFQDN2","_isIP2","default_email_options","allow_display_name","require_display_name","allow_utf8_local_part","displayName","emailUserPart","gmailUserPart","quotedEmailUser","emailUserUtf8Part","quotedEmailUserUtf8","display_email","domain","user","lower_domain","toLowerCase","domain_specific_validation","username","_user_parts","allow_ip_domain","startsWith","endsWith","noBracketdomain","user_parts","validate$d","emailStr","trim","validate$e","validate$f","validate$g","extensions","validate$h","validate$i","validate$j","paramNames$b","validate$k","is","validate$l","is_not","compare","validate$m","validate$n","max$1","validate$o","validate$p","validate$q","min$1","validate$r","validate$s","validate$t","paramNames$c","validate$u","invalidateFalse","validate$v","nSize","isURL_1","isURL","default_url_options","protocols","require_protocol","require_host","require_valid_protocol","allow_protocol_relative_urls","wrapped_ipv6","isRegExp","checkHost","host","protocol","auth","hostname","port","port_str","ipv6","ipv6_match","host_whitelist","host_blacklist","validate$w","freeze","_nodeId","_clockseq","rng","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","n","rnds","random","ii","getRandomValues","crypto","msCrypto","rnds8","Uint8Array"],"mappings":"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","file":"js/chunk-vendors~cfbf0a2e.38809cd4.js","sourcesContent":["var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","/**\n * vee-validate v2.1.5\n * (c) 2019 Abdelrahman Awad\n * @license MIT\n */\n// \r\n\r\nvar isTextInput = function (el) {\r\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'textarea', 'number'], el.type);\r\n};\r\n\r\nvar isCheckboxOrRadioInput = function (el) {\r\n return includes(['radio', 'checkbox'], el.type);\r\n};\r\n\r\nvar isDateInput = function (el) {\r\n return includes(['date', 'week', 'month', 'datetime-local', 'time'], el.type);\r\n};\r\n\r\n/**\r\n * Gets the data attribute. the name must be kebab-case.\r\n */\r\nvar getDataAttribute = function (el, name) { return el.getAttribute((\"data-vv-\" + name)); };\r\n\r\n/**\r\n * Checks if the values are either null or undefined.\r\n */\r\nvar isNullOrUndefined = function () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\r\n return values.every(function (value) {\r\n return value === null || value === undefined;\r\n });\r\n};\r\n\r\n/**\r\n * Creates the default flags object.\r\n */\r\nvar createFlags = function () { return ({\r\n untouched: true,\r\n touched: false,\r\n dirty: false,\r\n pristine: true,\r\n valid: null,\r\n invalid: null,\r\n validated: false,\r\n pending: false,\r\n required: false,\r\n changed: false\r\n}); };\r\n\r\n/**\r\n * Shallow object comparison.\r\n */\r\nvar isEqual = function (lhs, rhs) {\r\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\r\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\r\n }\r\n\r\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\r\n if (lhs.length !== rhs.length) { return false; }\r\n\r\n for (var i = 0; i < lhs.length; i++) {\r\n if (!isEqual(lhs[i], rhs[i])) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // if both are objects, compare each key recursively.\r\n if (isObject(lhs) && isObject(rhs)) {\r\n return Object.keys(lhs).every(function (key) {\r\n return isEqual(lhs[key], rhs[key]);\r\n }) && Object.keys(rhs).every(function (key) {\r\n return isEqual(lhs[key], rhs[key]);\r\n });\r\n }\r\n\r\n return lhs === rhs;\r\n};\r\n\r\n/**\r\n * Determines the input field scope.\r\n */\r\nvar getScope = function (el) {\r\n var scope = getDataAttribute(el, 'scope');\r\n if (isNullOrUndefined(scope)) {\r\n var form = getForm(el);\r\n\r\n if (form) {\r\n scope = getDataAttribute(form, 'scope');\r\n }\r\n }\r\n\r\n return !isNullOrUndefined(scope) ? scope : null;\r\n};\r\n\r\n/**\r\n * Get the closest form element.\r\n */\r\nvar getForm = function (el) {\r\n if (isNullOrUndefined(el)) { return null; }\r\n\r\n if (el.tagName === 'FORM') { return el; }\r\n\r\n if (!isNullOrUndefined(el.form)) { return el.form; }\r\n\r\n return !isNullOrUndefined(el.parentNode) ? getForm(el.parentNode) : null;\r\n};\r\n\r\n/**\r\n * Gets the value in an object safely.\r\n */\r\nvar getPath = function (path, target, def) {\n if ( def === void 0 ) def = undefined;\n\r\n if (!path || !target) { return def; }\r\n\r\n var value = target;\r\n path.split('.').every(function (prop) {\r\n if (prop in value) {\r\n value = value[prop];\r\n\r\n return true;\r\n }\r\n\r\n value = def;\r\n\r\n return false;\r\n });\r\n\r\n return value;\r\n};\r\n\r\n/**\r\n * Checks if path exists within an object.\r\n */\r\nvar hasPath = function (path, target) {\r\n var obj = target;\r\n return path.split('.').every(function (prop) {\r\n if (prop in obj) {\r\n obj = obj[prop];\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n};\r\n\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nvar parseRule = function (rule) {\r\n var params = [];\r\n var name = rule.split(':')[0];\r\n\r\n if (includes(rule, ':')) {\r\n params = rule.split(':').slice(1).join(':').split(',');\r\n }\r\n\r\n return { name: name, params: params };\r\n};\r\n\r\n/**\r\n * Debounces a function.\r\n */\r\nvar debounce = function (fn, wait, token) {\n if ( wait === void 0 ) wait = 0;\n if ( token === void 0 ) token = { cancelled: false };\n\r\n if (wait === 0) {\r\n return fn;\r\n }\r\n\r\n var timeout;\r\n\r\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\r\n var later = function () {\r\n timeout = null;\r\n\r\n // check if the fn call was cancelled.\r\n if (!token.cancelled) { fn.apply(void 0, args); }\r\n };\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (!timeout) { fn.apply(void 0, args); }\r\n };\r\n};\r\n\r\n/**\r\n * Appends a rule definition to a list of rules.\r\n */\r\nvar appendRule = function (rule, rules) {\r\n if (!rules) {\r\n return normalizeRules(rule);\r\n }\r\n\r\n if (!rule) {\r\n return normalizeRules(rules);\r\n }\r\n\r\n if (typeof rules === 'string') {\r\n rules = normalizeRules(rules);\r\n }\r\n\r\n return assign({}, rules, normalizeRules(rule));\r\n};\r\n\r\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nvar normalizeRules = function (rules) {\r\n // if falsy value return an empty object.\r\n if (!rules) {\r\n return {};\r\n }\r\n\r\n if (isObject(rules)) {\r\n // $FlowFixMe\r\n return Object.keys(rules).reduce(function (prev, curr) {\r\n var params = [];\r\n // $FlowFixMe\r\n if (rules[curr] === true) {\r\n params = [];\r\n } else if (Array.isArray(rules[curr])) {\r\n params = rules[curr];\r\n } else if (isObject(rules[curr])) {\r\n params = rules[curr];\r\n } else {\r\n params = [rules[curr]];\r\n }\r\n\r\n // $FlowFixMe\r\n if (rules[curr] !== false) {\r\n prev[curr] = params;\r\n }\r\n\r\n return prev;\r\n }, {});\r\n }\r\n\r\n if (typeof rules !== 'string') {\r\n warn('rules must be either a string or an object.');\r\n return {};\r\n }\r\n\r\n return rules.split('|').reduce(function (prev, rule) {\r\n var parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n\r\n prev[parsedRule.name] = parsedRule.params;\r\n return prev;\r\n }, {});\r\n};\r\n\r\n/**\r\n * Emits a warning to the console.\r\n */\r\nvar warn = function (message) {\r\n console.warn((\"[vee-validate] \" + message)); // eslint-disable-line\r\n};\r\n\r\n/**\r\n * Creates a branded error object.\r\n */\r\nvar createError = function (message) { return new Error((\"[vee-validate] \" + message)); };\r\n\r\n/**\r\n * Checks if the value is an object.\r\n */\r\nvar isObject = function (obj) { return obj !== null && obj && typeof obj === 'object' && ! Array.isArray(obj); };\r\n\r\n/**\r\n * Checks if a function is callable.\r\n */\r\nvar isCallable = function (func) { return typeof func === 'function'; };\r\n\r\n/**\r\n * Check if element has the css class on it.\r\n */\r\nvar hasClass = function (el, className) {\r\n if (el.classList) {\r\n return el.classList.contains(className);\r\n }\r\n\r\n return !!el.className.match(new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\")));\r\n};\r\n\r\n/**\r\n * Adds the provided css className to the element.\r\n */\r\nvar addClass = function (el, className) {\r\n if (el.classList) {\r\n el.classList.add(className);\r\n return;\r\n }\r\n\r\n if (!hasClass(el, className)) {\r\n el.className += \" \" + className;\r\n }\r\n};\r\n\r\n/**\r\n * Remove the provided css className from the element.\r\n */\r\nvar removeClass = function (el, className) {\r\n if (el.classList) {\r\n el.classList.remove(className);\r\n return;\r\n }\r\n\r\n if (hasClass(el, className)) {\r\n var reg = new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\r\n el.className = el.className.replace(reg, ' ');\r\n }\r\n};\r\n\r\n/**\r\n * Adds or removes a class name on the input depending on the status flag.\r\n */\r\nvar toggleClass = function (el, className, status) {\r\n if (!el || !className) { return; }\r\n\r\n if (Array.isArray(className)) {\r\n className.forEach(function (item) { return toggleClass(el, item, status); });\r\n return;\r\n }\r\n\r\n if (status) {\r\n return addClass(el, className);\r\n }\r\n\r\n removeClass(el, className);\r\n};\r\n\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nvar toArray = function (arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n\r\n var array = [];\r\n var length = arrayLike.length;\r\n /* istanbul ignore next */\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n\r\n /* istanbul ignore next */\r\n return array;\r\n};\r\n\r\n/**\r\n * Assign polyfill from the mdn.\r\n */\r\nvar assign = function (target) {\n var others = [], len = arguments.length - 1;\n while ( len-- > 0 ) others[ len ] = arguments[ len + 1 ];\n\r\n /* istanbul ignore else */\r\n if (isCallable(Object.assign)) {\r\n return Object.assign.apply(Object, [ target ].concat( others ));\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (target == null) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n /* istanbul ignore next */\r\n var to = Object(target);\r\n /* istanbul ignore next */\r\n others.forEach(function (arg) {\r\n // Skip over if undefined or null\r\n if (arg != null) {\r\n Object.keys(arg).forEach(function (key) {\r\n to[key] = arg[key];\r\n });\r\n }\r\n });\r\n /* istanbul ignore next */\r\n return to;\r\n};\r\n\r\nvar id = 0;\r\nvar idTemplate = '{id}';\r\n\r\n/**\r\n * Generates a unique id.\r\n */\r\nvar uniqId = function () {\r\n // handle too many uses of uniqId, although unlikely.\r\n if (id >= 9999) {\r\n id = 0;\r\n // shift the template.\r\n idTemplate = idTemplate.replace('{id}', '_{id}');\r\n }\r\n\r\n id++;\r\n var newId = idTemplate.replace('{id}', String(id));\r\n\r\n return newId;\r\n};\r\n\r\n/**\r\n * finds the first element that satisfies the predicate callback, polyfills array.find\r\n */\r\nvar find = function (arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n for (var i = 0; i < array.length; i++) {\r\n if (predicate(array[i])) {\r\n return array[i];\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nvar isBuiltInComponent = function (vnode) {\r\n if (!vnode) {\r\n return false;\r\n }\r\n\r\n var tag = vnode.componentOptions.tag;\r\n\r\n return /^(keep-alive|transition|transition-group)$/.test(tag);\r\n};\r\n\r\nvar makeDelayObject = function (events, delay, delayConfig) {\r\n if (typeof delay === 'number') {\r\n return events.reduce(function (prev, e) {\r\n prev[e] = delay;\r\n return prev;\r\n }, {});\r\n }\r\n\r\n return events.reduce(function (prev, e) {\r\n if (typeof delay === 'object' && e in delay) {\r\n prev[e] = delay[e];\r\n return prev;\r\n }\r\n\r\n if (typeof delayConfig === 'number') {\r\n prev[e] = delayConfig;\r\n return prev;\r\n }\r\n\r\n prev[e] = (delayConfig && delayConfig[e]) || 0;\r\n\r\n return prev;\r\n }, {});\r\n};\r\n\r\nvar deepParseInt = function (input) {\r\n if (typeof input === 'number') { return input; }\r\n\r\n if (typeof input === 'string') { return parseInt(input); }\r\n\r\n var map = {};\r\n for (var element in input) {\r\n map[element] = parseInt(input[element]);\r\n }\r\n\r\n return map;\r\n};\r\n\r\nvar merge = function (target, source) {\r\n if (! (isObject(target) && isObject(source))) {\r\n return target;\r\n }\r\n\r\n Object.keys(source).forEach(function (key) {\n var obj, obj$1;\n\r\n if (isObject(source[key])) {\r\n if (! target[key]) {\r\n assign(target, ( obj = {}, obj[key] = {}, obj ));\r\n }\r\n\r\n merge(target[key], source[key]);\r\n return;\r\n }\r\n\r\n assign(target, ( obj$1 = {}, obj$1[key] = source[key], obj$1 ));\r\n });\r\n\r\n return target;\r\n};\r\n\r\nvar fillRulesFromElement = function (el, rules) {\r\n if (el.required) {\r\n rules = appendRule('required', rules);\r\n }\r\n\r\n if (isTextInput(el)) {\r\n if (el.type === 'email') {\r\n rules = appendRule((\"email\" + (el.multiple ? ':multiple' : '')), rules);\r\n }\r\n\r\n if (el.pattern) {\r\n rules = appendRule({ regex: el.pattern }, rules);\r\n }\r\n\r\n // 524288 is the max on some browsers and test environments.\r\n if (el.maxLength >= 0 && el.maxLength < 524288) {\r\n rules = appendRule((\"max:\" + (el.maxLength)), rules);\r\n }\r\n\r\n if (el.minLength > 0) {\r\n rules = appendRule((\"min:\" + (el.minLength)), rules);\r\n }\r\n\r\n if (el.type === 'number') {\r\n rules = appendRule('decimal', rules);\r\n if (el.min !== '') {\r\n rules = appendRule((\"min_value:\" + (el.min)), rules);\r\n }\r\n\r\n if (el.max !== '') {\r\n rules = appendRule((\"max_value:\" + (el.max)), rules);\r\n }\r\n }\r\n\r\n return rules;\r\n }\r\n\r\n if (isDateInput(el)) {\r\n var timeFormat = el.step && Number(el.step) < 60 ? 'HH:mm:ss' : 'HH:mm';\r\n\r\n if (el.type === 'date') {\r\n return appendRule('date_format:YYYY-MM-DD', rules);\r\n }\r\n\r\n if (el.type === 'datetime-local') {\r\n return appendRule((\"date_format:YYYY-MM-DDT\" + timeFormat), rules);\r\n }\r\n\r\n if (el.type === 'month') {\r\n return appendRule('date_format:YYYY-MM', rules);\r\n }\r\n\r\n if (el.type === 'week') {\r\n return appendRule('date_format:YYYY-[W]WW', rules);\r\n }\r\n\r\n if (el.type === 'time') {\r\n return appendRule((\"date_format:\" + timeFormat), rules);\r\n }\r\n }\r\n\r\n return rules;\r\n};\r\n\r\nvar values = function (obj) {\r\n if (isCallable(Object.values)) {\r\n return Object.values(obj);\r\n }\r\n\r\n // fallback to keys()\r\n /* istanbul ignore next */\r\n return Object.keys(obj).map(function (k) { return obj[k]; });\r\n};\r\n\r\nvar parseSelector = function (selector) {\r\n var rule = null;\r\n if (includes(selector, ':')) {\r\n rule = selector.split(':').pop();\r\n selector = selector.replace((\":\" + rule), '');\r\n }\r\n\r\n if (selector[0] === '#') {\r\n return {\r\n id: selector.slice(1),\r\n rule: rule,\r\n name: null,\r\n scope: null\r\n };\r\n }\r\n\r\n var scope = null;\r\n var name = selector;\r\n if (includes(selector, '.')) {\r\n var parts = selector.split('.');\r\n scope = parts[0];\r\n name = parts.slice(1).join('.');\r\n }\r\n\r\n return {\r\n id: null,\r\n scope: scope,\r\n name: name,\r\n rule: rule\r\n };\r\n};\r\n\r\nvar includes = function (collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n};\r\n\r\nvar isEmptyArray = function (arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n};\n\n// \r\n\r\nvar LOCALE = 'en';\r\n\r\nvar Dictionary = function Dictionary (dictionary) {\n if ( dictionary === void 0 ) dictionary = {};\n\r\n this.container = {};\r\n this.merge(dictionary);\r\n};\n\nvar prototypeAccessors = { locale: { configurable: true } };\r\n\r\nprototypeAccessors.locale.get = function () {\r\n return LOCALE;\r\n};\r\n\r\nprototypeAccessors.locale.set = function (value) {\r\n LOCALE = value || 'en';\r\n};\r\n\r\nDictionary.prototype.hasLocale = function hasLocale (locale) {\r\n return !!this.container[locale];\r\n};\r\n\r\nDictionary.prototype.setDateFormat = function setDateFormat (locale, format) {\r\n if (!this.container[locale]) {\r\n this.container[locale] = {};\r\n }\r\n\r\n this.container[locale].dateFormat = format;\r\n};\r\n\r\nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\r\n if (!this.container[locale] || !this.container[locale].dateFormat) {\r\n return null;\r\n }\r\n\r\n return this.container[locale].dateFormat;\r\n};\r\n\r\nDictionary.prototype.getMessage = function getMessage (locale, key, data) {\r\n var message = null;\r\n if (!this.hasMessage(locale, key)) {\r\n message = this._getDefaultMessage(locale);\r\n } else {\r\n message = this.container[locale].messages[key];\r\n }\r\n\r\n return isCallable(message) ? message.apply(void 0, data) : message;\r\n};\r\n\r\n/**\r\n * Gets a specific message for field. falls back to the rule message.\r\n */\r\nDictionary.prototype.getFieldMessage = function getFieldMessage (locale, field, key, data) {\r\n if (!this.hasLocale(locale)) {\r\n return this.getMessage(locale, key, data);\r\n }\r\n\r\n var dict = this.container[locale].custom && this.container[locale].custom[field];\r\n if (!dict || !dict[key]) {\r\n return this.getMessage(locale, key, data);\r\n }\r\n\r\n var message = dict[key];\r\n return isCallable(message) ? message.apply(void 0, data) : message;\r\n};\r\n\r\nDictionary.prototype._getDefaultMessage = function _getDefaultMessage (locale) {\r\n if (this.hasMessage(locale, '_default')) {\r\n return this.container[locale].messages._default;\r\n }\r\n\r\n return this.container.en.messages._default;\r\n};\r\n\r\nDictionary.prototype.getAttribute = function getAttribute (locale, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\r\n if (!this.hasAttribute(locale, key)) {\r\n return fallback;\r\n }\r\n\r\n return this.container[locale].attributes[key];\r\n};\r\n\r\nDictionary.prototype.hasMessage = function hasMessage (locale, key) {\r\n return !! (\r\n this.hasLocale(locale) &&\r\n this.container[locale].messages &&\r\n this.container[locale].messages[key]\r\n );\r\n};\r\n\r\nDictionary.prototype.hasAttribute = function hasAttribute (locale, key) {\r\n return !! (\r\n this.hasLocale(locale) &&\r\n this.container[locale].attributes &&\r\n this.container[locale].attributes[key]\r\n );\r\n};\r\n\r\nDictionary.prototype.merge = function merge$1 (dictionary) {\r\n merge(this.container, dictionary);\r\n};\r\n\r\nDictionary.prototype.setMessage = function setMessage (locale, key, message) {\r\n if (! this.hasLocale(locale)) {\r\n this.container[locale] = {\r\n messages: {},\r\n attributes: {}\r\n };\r\n }\r\n\r\n this.container[locale].messages[key] = message;\r\n};\r\n\r\nDictionary.prototype.setAttribute = function setAttribute (locale, key, attribute) {\r\n if (! this.hasLocale(locale)) {\r\n this.container[locale] = {\r\n messages: {},\r\n attributes: {}\r\n };\r\n }\r\n\r\n this.container[locale].attributes[key] = attribute;\r\n};\n\nObject.defineProperties( Dictionary.prototype, prototypeAccessors );\n\nvar drivers = {\r\n default: new Dictionary({\r\n en: {\r\n messages: {},\r\n attributes: {},\r\n custom: {}\r\n }\r\n })\r\n};\r\n\r\nvar currentDriver = 'default';\r\n\r\nvar DictionaryResolver = function DictionaryResolver () {};\n\nDictionaryResolver._checkDriverName = function _checkDriverName (driver) {\r\n if (!driver) {\r\n throw createError('you must provide a name to the dictionary driver');\r\n }\r\n};\r\n\r\nDictionaryResolver.setDriver = function setDriver (driver, implementation) {\n if ( implementation === void 0 ) implementation = null;\n\r\n this._checkDriverName(driver);\r\n if (implementation) {\r\n drivers[driver] = implementation;\r\n }\r\n\r\n currentDriver = driver;\r\n};\r\n\r\nDictionaryResolver.getDriver = function getDriver () {\r\n return drivers[currentDriver];\r\n};\n\n// \r\n\r\nvar ErrorBag = function ErrorBag (errorBag, id) {\n if ( errorBag === void 0 ) errorBag = null;\n if ( id === void 0 ) id = null;\n\r\n this.vmId = id || null;\r\n // make this bag a mirror of the provided one, sharing the same items reference.\r\n if (errorBag && errorBag instanceof ErrorBag) {\r\n this.items = errorBag.items;\r\n } else {\r\n this.items = [];\r\n }\r\n};\r\n\r\nErrorBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\r\n var index = 0;\r\n return {\r\n next: function () {\r\n return { value: this$1.items[index++], done: index > this$1.items.length };\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Adds an error to the internal array.\r\n */\r\nErrorBag.prototype.add = function add (error) {\n var ref;\n\r\n (ref = this.items).push.apply(\r\n ref, this._normalizeError(error)\r\n );\r\n};\r\n\r\n/**\r\n * Normalizes passed errors to an error array.\r\n */\r\nErrorBag.prototype._normalizeError = function _normalizeError (error) {\n var this$1 = this;\n\r\n if (Array.isArray(error)) {\r\n return error.map(function (e) {\r\n e.scope = !isNullOrUndefined(e.scope) ? e.scope : null;\r\n e.vmId = !isNullOrUndefined(e.vmId) ? e.vmId : (this$1.vmId || null);\r\n\r\n return e;\r\n });\r\n }\r\n\r\n error.scope = !isNullOrUndefined(error.scope) ? error.scope : null;\r\n error.vmId = !isNullOrUndefined(error.vmId) ? error.vmId : (this.vmId || null);\r\n\r\n return [error];\r\n};\r\n\r\n/**\r\n * Regenrates error messages if they have a generator function.\r\n */\r\nErrorBag.prototype.regenerate = function regenerate () {\r\n this.items.forEach(function (i) {\r\n i.msg = isCallable(i.regenerate) ? i.regenerate() : i.msg;\r\n });\r\n};\r\n\r\n/**\r\n * Updates a field error with the new field scope.\r\n */\r\nErrorBag.prototype.update = function update (id, error) {\r\n var item = find(this.items, function (i) { return i.id === id; });\r\n if (!item) {\r\n return;\r\n }\r\n\r\n var idx = this.items.indexOf(item);\r\n this.items.splice(idx, 1);\r\n item.scope = error.scope;\r\n this.items.push(item);\r\n};\r\n\r\n/**\r\n * Gets all error messages from the internal array.\r\n */\r\nErrorBag.prototype.all = function all (scope) {\n var this$1 = this;\n\r\n var filterFn = function (item) {\r\n var matchesScope = true;\r\n var matchesVM = true;\r\n if (!isNullOrUndefined(scope)) {\r\n matchesScope = item.scope === scope;\r\n }\r\n\r\n if (!isNullOrUndefined(this$1.vmId)) {\r\n matchesVM = item.vmId === this$1.vmId;\r\n }\r\n\r\n return matchesVM && matchesScope;\r\n };\r\n\r\n return this.items.filter(filterFn).map(function (e) { return e.msg; });\r\n};\r\n\r\n/**\r\n * Checks if there are any errors in the internal array.\r\n */\r\nErrorBag.prototype.any = function any (scope) {\n var this$1 = this;\n\r\n var filterFn = function (item) {\r\n var matchesScope = true;\r\n var matchesVM = true;\r\n if (!isNullOrUndefined(scope)) {\r\n matchesScope = item.scope === scope;\r\n }\r\n\r\n if (!isNullOrUndefined(this$1.vmId)) {\r\n matchesVM = item.vmId === this$1.vmId;\r\n }\r\n\r\n return matchesVM && matchesScope;\r\n };\r\n\r\n return !!this.items.filter(filterFn).length;\r\n};\r\n\r\n/**\r\n * Removes all items from the internal array.\r\n */\r\nErrorBag.prototype.clear = function clear (scope) {\n var this$1 = this;\n\r\n var matchesVM = isNullOrUndefined(this.vmId) ? function () { return true; } : function (i) { return i.vmId === this$1.vmId; };\r\n if (isNullOrUndefined(scope)) {\r\n scope = null;\r\n }\r\n\r\n for (var i = 0; i < this.items.length; ++i) {\r\n if (matchesVM(this.items[i]) && this.items[i].scope === scope) {\r\n this.items.splice(i, 1);\r\n --i;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Collects errors into groups or for a specific field.\r\n */\r\nErrorBag.prototype.collect = function collect (field, scope, map) {\n var this$1 = this;\n if ( map === void 0 ) map = true;\n\r\n var isSingleField = !isNullOrUndefined(field) && !field.includes('*');\r\n var groupErrors = function (items) {\r\n var errors = items.reduce(function (collection, error) {\r\n if (!isNullOrUndefined(this$1.vmId) && error.vmId !== this$1.vmId) {\r\n return collection;\r\n }\r\n\r\n if (!collection[error.field]) {\r\n collection[error.field] = [];\r\n }\r\n\r\n collection[error.field].push(map ? error.msg : error);\r\n\r\n return collection;\r\n }, {});\r\n\r\n // reduce the collection to be a single array.\r\n if (isSingleField) {\r\n return values(errors)[0] || [];\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n if (isNullOrUndefined(field)) {\r\n return groupErrors(this.items);\r\n }\r\n\r\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\r\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\r\n\r\n var collected = this.items.reduce(function (prev, curr) {\r\n if (isPrimary(curr)) {\r\n prev.primary.push(curr);\r\n }\r\n\r\n if (isAlt(curr)) {\r\n prev.alt.push(curr);\r\n }\r\n\r\n return prev;\r\n }, { primary: [], alt: [] });\r\n\r\n collected = collected.primary.length ? collected.primary : collected.alt;\r\n\r\n return groupErrors(collected);\r\n};\r\n\r\n/**\r\n * Gets the internal array length.\r\n */\r\nErrorBag.prototype.count = function count () {\n var this$1 = this;\n\r\n if (this.vmId) {\r\n return this.items.filter(function (e) { return e.vmId === this$1.vmId; }).length;\r\n }\r\n\r\n return this.items.length;\r\n};\r\n\r\n/**\r\n * Finds and fetches the first error message for the specified field id.\r\n */\r\nErrorBag.prototype.firstById = function firstById (id) {\r\n var error = find(this.items, function (i) { return i.id === id; });\r\n\r\n return error ? error.msg : undefined;\r\n};\r\n\r\n/**\r\n * Gets the first error message for a specific field.\r\n */\r\nErrorBag.prototype.first = function first (field, scope) {\n if ( scope === void 0 ) scope = null;\n\r\n var selector = isNullOrUndefined(scope) ? field : (scope + \".\" + field);\r\n var match = this._match(selector);\r\n\r\n return match && match.msg;\r\n};\r\n\r\n/**\r\n * Returns the first error rule for the specified field\r\n */\r\nErrorBag.prototype.firstRule = function firstRule (field, scope) {\r\n var errors = this.collect(field, scope, false);\r\n\r\n return (errors.length && errors[0].rule) || undefined;\r\n};\r\n\r\n/**\r\n * Checks if the internal array has at least one error for the specified field.\r\n */\r\nErrorBag.prototype.has = function has (field, scope) {\n if ( scope === void 0 ) scope = null;\n\r\n return !!this.first(field, scope);\r\n};\r\n\r\n/**\r\n * Gets the first error message for a specific field and a rule.\r\n */\r\nErrorBag.prototype.firstByRule = function firstByRule (name, rule, scope) {\n if ( scope === void 0 ) scope = null;\n\r\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule === rule; })[0];\r\n\r\n return (error && error.msg) || undefined;\r\n};\r\n\r\n/**\r\n * Gets the first error message for a specific field that not match the rule.\r\n */\r\nErrorBag.prototype.firstNot = function firstNot (name, rule, scope) {\n if ( rule === void 0 ) rule = 'required';\n if ( scope === void 0 ) scope = null;\n\r\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule !== rule; })[0];\r\n\r\n return (error && error.msg) || undefined;\r\n};\r\n\r\n/**\r\n * Removes errors by matching against the id or ids.\r\n */\r\nErrorBag.prototype.removeById = function removeById (id) {\r\n var condition = function (item) { return item.id === id; };\r\n if (Array.isArray(id)) {\r\n condition = function (item) { return id.indexOf(item.id) !== -1; };\r\n }\r\n\r\n for (var i = 0; i < this.items.length; ++i) {\r\n if (condition(this.items[i])) {\r\n this.items.splice(i, 1);\r\n --i;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Removes all error messages associated with a specific field.\r\n */\r\nErrorBag.prototype.remove = function remove (field, scope, vmId) {\r\n if (isNullOrUndefined(field)) {\r\n return;\r\n }\r\n\r\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\r\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\r\n var matches = function (item) { return isPrimary(item) || isAlt(item); };\r\n var shouldRemove = function (item) {\r\n if (isNullOrUndefined(vmId)) { return matches(item); }\r\n\r\n return matches(item) && item.vmId === vmId;\r\n };\r\n\r\n for (var i = 0; i < this.items.length; ++i) {\r\n if (shouldRemove(this.items[i])) {\r\n this.items.splice(i, 1);\r\n --i;\r\n }\r\n }\r\n};\r\n\r\nErrorBag.prototype._makeCandidateFilters = function _makeCandidateFilters (selector) {\n var this$1 = this;\n\r\n var matchesRule = function () { return true; };\r\n var matchesScope = function () { return true; };\r\n var matchesName = function () { return true; };\r\n var matchesVM = function () { return true; };\r\n\r\n var ref = parseSelector(selector);\n var id = ref.id;\n var rule = ref.rule;\n var scope = ref.scope;\n var name = ref.name;\r\n\r\n if (rule) {\r\n matchesRule = function (item) { return item.rule === rule; };\r\n }\r\n\r\n // match by id, can be combined with rule selection.\r\n if (id) {\r\n return {\r\n isPrimary: function (item) { return matchesRule(item) && (function (item) { return id === item.id; }); },\r\n isAlt: function () { return false; }\r\n };\r\n }\r\n\r\n if (isNullOrUndefined(scope)) {\r\n // if no scope specified, make sure the found error has no scope.\r\n matchesScope = function (item) { return isNullOrUndefined(item.scope); };\r\n } else {\r\n matchesScope = function (item) { return item.scope === scope; };\r\n }\r\n\r\n if (!isNullOrUndefined(name) && name !== '*') {\r\n matchesName = function (item) { return item.field === name; };\r\n }\r\n\r\n if (!isNullOrUndefined(this.vmId)) {\r\n matchesVM = function (item) { return item.vmId === this$1.vmId; };\r\n }\r\n\r\n // matches the first candidate.\r\n var isPrimary = function (item) {\r\n return matchesVM(item) && matchesName(item) && matchesRule(item) && matchesScope(item);\r\n };\r\n\r\n // matches a second candidate, which is a field with a name containing the '.' character.\r\n var isAlt = function (item) {\r\n return matchesVM(item) && matchesRule(item) && item.field === (scope + \".\" + name);\r\n };\r\n\r\n return {\r\n isPrimary: isPrimary,\r\n isAlt: isAlt\r\n };\r\n};\r\n\r\nErrorBag.prototype._match = function _match (selector) {\r\n if (isNullOrUndefined(selector)) {\r\n return undefined;\r\n }\r\n\r\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\r\n\r\n return this.items.reduce(function (prev, item, idx, arr) {\r\n var isLast = idx === arr.length - 1;\r\n if (prev.primary) {\r\n return isLast ? prev.primary : prev;\r\n }\r\n\r\n if (isPrimary(item)) {\r\n prev.primary = item;\r\n }\r\n\r\n if (isAlt(item)) {\r\n prev.alt = item;\r\n }\r\n\r\n // keep going.\r\n if (!isLast) {\r\n return prev;\r\n }\r\n\r\n return prev.primary || prev.alt;\r\n }, {});\r\n};\n\n// VNode Utils\r\n\r\n// Gets the model object on the vnode.\r\nfunction findModel (vnode) {\r\n if (!vnode.data) {\r\n return null;\r\n }\r\n\r\n // Component Model\r\n if (vnode.data.model) {\r\n return vnode.data.model;\r\n }\r\n\r\n return !!(vnode.data.directives) && find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n}\r\n\r\nfunction extractChildren (vnode) {\r\n if (Array.isArray(vnode)) {\r\n return vnode;\r\n }\r\n\r\n if (Array.isArray(vnode.children)) {\r\n return vnode.children;\r\n }\r\n\r\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\r\n return vnode.componentOptions.children;\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction extractVNodes (vnode) {\r\n if (findModel(vnode)) {\r\n return [vnode];\r\n }\r\n\r\n var children = extractChildren(vnode);\r\n\r\n return children.reduce(function (nodes, node) {\r\n var candidates = extractVNodes(node);\r\n if (candidates.length) {\r\n nodes.push.apply(nodes, candidates);\r\n }\r\n\r\n return nodes;\r\n }, []);\r\n}\r\n\r\n// Resolves v-model config if exists.\r\nfunction findModelConfig (vnode) {\r\n if (!vnode.componentOptions) { return null; }\r\n\r\n return vnode.componentOptions.Ctor.options.model;\r\n}\r\n// Adds a listener to vnode listener object.\r\nfunction mergeVNodeListeners (obj, eventName, handler) {\r\n // Has a single listener.\r\n if (isCallable(obj[eventName])) {\r\n var prevHandler = obj[eventName];\r\n obj[eventName] = [prevHandler];\r\n }\r\n\r\n // has other listeners.\r\n if (Array.isArray(obj[eventName])) {\r\n obj[eventName].push(handler);\r\n return;\r\n }\r\n\r\n // no listener at all.\r\n if (isNullOrUndefined(obj[eventName])) {\r\n obj[eventName] = [handler];\r\n }\r\n}\r\n\r\n// Adds a listener to a native HTML vnode.\r\nfunction addNativeNodeListener (node, eventName, handler) {\r\n if (isNullOrUndefined(node.data.on)) {\r\n node.data.on = {};\r\n }\r\n\r\n mergeVNodeListeners(node.data.on, eventName, handler);\r\n}\r\n\r\n// Adds a listener to a Vue component vnode.\r\nfunction addComponentNodeListener (node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.componentOptions.listeners) {\r\n node.componentOptions.listeners = {};\r\n }\r\n\r\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\r\n}\r\nfunction addVNodeListener (vnode, eventName, handler) {\r\n if (vnode.componentOptions) {\r\n addComponentNodeListener(vnode, eventName, handler);\r\n }\r\n\r\n addNativeNodeListener(vnode, eventName, handler);\r\n}\r\n// Determines if `change` should be used over `input` for listeners.\r\nfunction getInputEventName (vnode, model) {\r\n // Is a component.\r\n if (vnode.componentOptions) {\r\n var ref = findModelConfig(vnode) || { event: 'input' };\n var event = ref.event;\r\n\r\n return event;\r\n }\r\n\r\n // Lazy Models typically use change event\r\n if (model && model.modifiers && model.modifiers.lazy) {\r\n return 'change';\r\n }\r\n\r\n // is a textual-type input.\r\n if (vnode.data.attrs && isTextInput({ type: vnode.data.attrs.type || 'text' })) {\r\n return 'input';\r\n }\r\n\r\n return 'change';\r\n}\r\n\r\nfunction normalizeSlots (slots, ctx) {\r\n return Object.keys(slots).reduce(function (arr, key) {\r\n slots[key].forEach(function (vnode) {\r\n if (!vnode.context) {\r\n slots[key].context = ctx;\r\n if (!vnode.data) {\r\n vnode.data = {};\r\n }\r\n vnode.data.slot = key;\r\n }\r\n });\r\n\r\n return arr.concat(slots[key]);\r\n }, []);\r\n}\r\n\r\nfunction createRenderless (h, vnode) {\r\n // a single-root slot yay!\r\n if (!Array.isArray(vnode)) {\r\n return vnode;\r\n }\r\n\r\n if (vnode.length === 1) {\r\n return vnode[0];\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn('Your slot should have one root element. Rendering a span as the root.');\r\n }\r\n\r\n // Renders a multi-root node, should throw a Vue error.\r\n return vnode;\r\n}\n\n/**\r\n * Generates the options required to construct a field.\r\n */\r\nvar Resolver = function Resolver () {};\n\nResolver.generate = function generate (el, binding, vnode) {\r\n var model = Resolver.resolveModel(binding, vnode);\r\n var options = pluginInstance.resolveConfig(vnode.context);\r\n\r\n return {\r\n name: Resolver.resolveName(el, vnode),\r\n el: el,\r\n listen: !binding.modifiers.disable,\r\n bails: binding.modifiers.bails ? true : (binding.modifiers.continues === true ? false : undefined),\r\n scope: Resolver.resolveScope(el, binding, vnode),\r\n vm: Resolver.makeVM(vnode.context),\r\n expression: binding.value,\r\n component: vnode.componentInstance,\r\n classes: options.classes,\r\n classNames: options.classNames,\r\n getter: Resolver.resolveGetter(el, vnode, model),\r\n events: Resolver.resolveEvents(el, vnode) || options.events,\r\n model: model,\r\n delay: Resolver.resolveDelay(el, vnode, options),\r\n rules: Resolver.resolveRules(el, binding, vnode),\r\n immediate: !!binding.modifiers.initial || !!binding.modifiers.immediate,\r\n validity: options.validity,\r\n aria: options.aria,\r\n initialValue: Resolver.resolveInitialValue(vnode)\r\n };\r\n};\r\n\r\nResolver.getCtorConfig = function getCtorConfig (vnode) {\r\n if (!vnode.componentInstance) { return null; }\r\n\r\n var config = getPath('componentInstance.$options.$_veeValidate', vnode);\r\n\r\n return config;\r\n};\r\n\r\n/**\r\n * Resolves the rules defined on an element.\r\n */\r\nResolver.resolveRules = function resolveRules (el, binding, vnode) {\r\n var rules = '';\r\n if (!binding.value && (!binding || !binding.expression)) {\r\n rules = getDataAttribute(el, 'rules');\r\n }\r\n\r\n if (binding.value && includes(['string', 'object'], typeof binding.value.rules)) {\r\n rules = binding.value.rules;\r\n } else if (binding.value) {\r\n rules = binding.value;\r\n }\r\n\r\n if (vnode.componentInstance) {\r\n return rules;\r\n }\r\n\r\n // If validity is disabled, ignore field rules.\r\n var normalized = normalizeRules(rules);\r\n if (!pluginInstance.config.validity) {\r\n return normalized;\r\n }\r\n\r\n return assign({}, fillRulesFromElement(el, {}), normalized);\r\n};\r\n\r\n/**\r\n * @param {*} vnode\r\n */\r\nResolver.resolveInitialValue = function resolveInitialValue (vnode) {\r\n var model = vnode.data.model || find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n\r\n return model && model.value;\r\n};\r\n\r\n/**\r\n * Creates a non-circular partial VM instance from a Vue instance.\r\n * @param {*} vm\r\n */\r\nResolver.makeVM = function makeVM (vm) {\r\n return {\r\n get $el () {\r\n return vm.$el;\r\n },\r\n get $refs () {\r\n return vm.$refs;\r\n },\r\n $watch: vm.$watch ? vm.$watch.bind(vm) : function () {},\r\n $validator: vm.$validator ? {\r\n errors: vm.$validator.errors,\r\n validate: vm.$validator.validate.bind(vm.$validator),\r\n update: vm.$validator.update.bind(vm.$validator)\r\n } : null\r\n };\r\n};\r\n\r\n/**\r\n * Resolves the delay value.\r\n * @param {*} el\r\n * @param {*} vnode\r\n * @param {Object} options\r\n */\r\nResolver.resolveDelay = function resolveDelay (el, vnode, options) {\r\n var delay = getDataAttribute(el, 'delay');\r\n var globalDelay = (options && 'delay' in options) ? options.delay : 0;\r\n\r\n if (!delay && vnode.componentInstance && vnode.componentInstance.$attrs) {\r\n delay = vnode.componentInstance.$attrs['data-vv-delay'];\r\n }\r\n\r\n if (!isObject(globalDelay)) {\r\n return deepParseInt(delay || globalDelay);\r\n }\r\n\r\n if (!isNullOrUndefined(delay)) {\r\n globalDelay.input = delay;\r\n }\r\n\r\n return deepParseInt(globalDelay);\r\n};\r\n\r\n/**\r\n * Resolves the events to validate in response to.\r\n * @param {*} el\r\n * @param {*} vnode\r\n */\r\nResolver.resolveEvents = function resolveEvents (el, vnode) {\r\n // resolve it from the root element.\r\n var events = getDataAttribute(el, 'validate-on');\r\n\r\n // resolve from data-vv-validate-on if its a vue component.\r\n if (!events && vnode.componentInstance && vnode.componentInstance.$attrs) {\r\n events = vnode.componentInstance.$attrs['data-vv-validate-on'];\r\n }\r\n\r\n // resolve it from $_veeValidate options.\r\n if (!events && vnode.componentInstance) {\r\n var config = Resolver.getCtorConfig(vnode);\r\n events = config && config.events;\r\n }\r\n\r\n if (!events && pluginInstance.config.events) {\r\n events = pluginInstance.config.events;\r\n }\r\n\r\n // resolve the model event if its configured for custom components.\r\n if (events && vnode.componentInstance && includes(events, 'input')) {\r\n var ref = vnode.componentInstance.$options.model || { event: 'input' };\n var event = ref.event;\r\n // if the prop was configured but not the model.\r\n if (!event) {\r\n return events;\r\n }\r\n\r\n events = events.replace('input', event);\r\n }\r\n\r\n return events;\r\n};\r\n\r\n/**\r\n * Resolves the scope for the field.\r\n * @param {*} el\r\n * @param {*} binding\r\n */\r\nResolver.resolveScope = function resolveScope (el, binding, vnode) {\n if ( vnode === void 0 ) vnode = {};\n\r\n var scope = null;\r\n if (vnode.componentInstance && isNullOrUndefined(scope)) {\r\n scope = vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-scope'];\r\n }\r\n\r\n return !isNullOrUndefined(scope) ? scope : getScope(el);\r\n};\r\n\r\n/**\r\n * Checks if the node directives contains a v-model or a specified arg.\r\n * Args take priority over models.\r\n *\r\n * @return {Object}\r\n */\r\nResolver.resolveModel = function resolveModel (binding, vnode) {\r\n if (binding.arg) {\r\n return { expression: binding.arg };\r\n }\r\n\r\n var model = findModel(vnode);\r\n if (!model) {\r\n return null;\r\n }\r\n\r\n // https://github.com/vuejs/vue/blob/dev/src/core/util/lang.js#L26\r\n var watchable = !/[^\\w.$]/.test(model.expression) && hasPath(model.expression, vnode.context);\r\n var lazy = !!(model.modifiers && model.modifiers.lazy);\r\n\r\n if (!watchable) {\r\n return { expression: null, lazy: lazy };\r\n }\r\n\r\n return { expression: model.expression, lazy: lazy };\r\n};\r\n\r\n/**\r\n * Resolves the field name to trigger validations.\r\n * @return {String} The field name.\r\n */\r\nResolver.resolveName = function resolveName (el, vnode) {\r\n var name = getDataAttribute(el, 'name');\r\n\r\n if (!name && !vnode.componentInstance) {\r\n return el.name;\r\n }\r\n\r\n if (!name && vnode.componentInstance && vnode.componentInstance.$attrs) {\r\n name = vnode.componentInstance.$attrs['data-vv-name'] || vnode.componentInstance.$attrs['name'];\r\n }\r\n\r\n if (!name && vnode.componentInstance) {\r\n var config = Resolver.getCtorConfig(vnode);\r\n if (config && isCallable(config.name)) {\r\n var boundGetter = config.name.bind(vnode.componentInstance);\r\n\r\n return boundGetter();\r\n }\r\n\r\n return vnode.componentInstance.name;\r\n }\r\n\r\n return name;\r\n};\r\n\r\n/**\r\n * Returns a value getter input type.\r\n */\r\nResolver.resolveGetter = function resolveGetter (el, vnode, model) {\r\n if (model && model.expression) {\r\n return function () {\r\n return getPath(model.expression, vnode.context);\r\n };\r\n }\r\n\r\n if (vnode.componentInstance) {\r\n var path = getDataAttribute(el, 'value-path') || (vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-value-path']);\r\n if (path) {\r\n return function () {\r\n return getPath(path, vnode.componentInstance);\r\n };\r\n }\r\n\r\n var config = Resolver.getCtorConfig(vnode);\r\n if (config && isCallable(config.value)) {\r\n var boundGetter = config.value.bind(vnode.componentInstance);\r\n\r\n return function () {\r\n return boundGetter();\r\n };\r\n }\r\n\r\n var ref = vnode.componentInstance.$options.model || { prop: 'value' };\n var prop = ref.prop;\r\n\r\n return function () {\r\n return vnode.componentInstance[prop];\r\n };\r\n }\r\n\r\n switch (el.type) {\r\n case 'checkbox': return function () {\r\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\r\n\r\n els = toArray(els).filter(function (el) { return el.checked; });\r\n if (!els.length) { return undefined; }\r\n\r\n return els.map(function (checkbox) { return checkbox.value; });\r\n };\r\n case 'radio': return function () {\r\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\r\n var elm = find(els, function (el) { return el.checked; });\r\n\r\n return elm && elm.value;\r\n };\r\n case 'file': return function (context) {\r\n return toArray(el.files);\r\n };\r\n case 'select-multiple': return function () {\r\n return toArray(el.options).filter(function (opt) { return opt.selected; }).map(function (opt) { return opt.value; });\r\n };\r\n default: return function () {\r\n return el && el.value;\r\n };\r\n }\r\n};\n\nvar RULES = {};\r\n\r\nvar RuleContainer = function RuleContainer () {};\n\nvar staticAccessors = { rules: { configurable: true } };\n\nRuleContainer.add = function add (name, ref) {\n var validate = ref.validate;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\r\n RULES[name] = {\r\n validate: validate,\r\n options: options,\r\n paramNames: paramNames\r\n };\r\n};\r\n\r\nstaticAccessors.rules.get = function () {\r\n return RULES;\r\n};\r\n\r\nRuleContainer.has = function has (name) {\r\n return !!RULES[name];\r\n};\r\n\r\nRuleContainer.isImmediate = function isImmediate (name) {\r\n return !!(RULES[name] && RULES[name].options.immediate);\r\n};\r\n\r\nRuleContainer.isTargetRule = function isTargetRule (name) {\r\n return !!(RULES[name] && RULES[name].options.hasTarget);\r\n};\r\n\r\nRuleContainer.remove = function remove (ruleName) {\r\n delete RULES[ruleName];\r\n};\r\n\r\nRuleContainer.getParamNames = function getParamNames (ruleName) {\r\n return RULES[ruleName] && RULES[ruleName].paramNames;\r\n};\r\n\r\nRuleContainer.getOptions = function getOptions (ruleName) {\r\n return RULES[ruleName] && RULES[ruleName].options;\r\n};\r\n\r\nRuleContainer.getValidatorMethod = function getValidatorMethod (ruleName) {\r\n return RULES[ruleName] ? RULES[ruleName].validate : null;\r\n};\n\nObject.defineProperties( RuleContainer, staticAccessors );\n\n// \r\n\r\nvar isEvent = function (evt) {\r\n return (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) || (evt && evt.srcElement);\r\n};\r\n\r\nvar normalizeEvents = function (evts) {\r\n if (!evts) { return []; }\r\n\r\n return (typeof evts === 'string' ? evts.split('|') : evts);\r\n};\r\n\r\nvar supportsPassive = true;\r\n\r\nvar detectPassiveSupport = function () {\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function get () {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('testPassive', null, opts);\r\n window.removeEventListener('testPassive', null, opts);\r\n } catch (e) {\r\n supportsPassive = false;\r\n }\r\n return supportsPassive;\r\n};\r\n\r\nvar addEventListener = function (el, eventName, cb) {\r\n el.addEventListener(eventName, cb, supportsPassive ? { passive: true } : false);\r\n};\n\n// \r\n\r\nvar DEFAULT_OPTIONS = {\r\n targetOf: null,\r\n immediate: false,\r\n scope: null,\r\n listen: true,\r\n name: null,\r\n rules: {},\r\n vm: null,\r\n classes: false,\r\n validity: true,\r\n aria: true,\r\n events: 'input|blur',\r\n delay: 0,\r\n classNames: {\r\n touched: 'touched', // the control has been blurred\r\n untouched: 'untouched', // the control hasn't been blurred\r\n valid: 'valid', // model is valid\r\n invalid: 'invalid', // model is invalid\r\n pristine: 'pristine', // control has not been interacted with\r\n dirty: 'dirty' // control has been interacted with\r\n }\r\n};\r\n\r\nvar Field = function Field (options) {\n if ( options === void 0 ) options = {};\n\r\n this.id = uniqId();\r\n this.el = options.el;\r\n this.updated = false;\r\n this.dependencies = [];\r\n this.vmId = options.vmId;\r\n this.watchers = [];\r\n this.events = [];\r\n this.delay = 0;\r\n this.rules = {};\r\n this._cacheId(options);\r\n this.classNames = assign({}, DEFAULT_OPTIONS.classNames);\r\n options = assign({}, DEFAULT_OPTIONS, options);\r\n this._delay = !isNullOrUndefined(options.delay) ? options.delay : 0; // cache initial delay\r\n this.validity = options.validity;\r\n this.aria = options.aria;\r\n this.flags = createFlags();\r\n this.vm = options.vm;\r\n this.componentInstance = options.component;\r\n this.ctorConfig = this.componentInstance ? getPath('$options.$_veeValidate', this.componentInstance) : undefined;\r\n this.update(options);\r\n // set initial value.\r\n this.initialValue = this.value;\r\n this.updated = false;\r\n};\n\nvar prototypeAccessors$1 = { validator: { configurable: true },isRequired: { configurable: true },isDisabled: { configurable: true },alias: { configurable: true },value: { configurable: true },bails: { configurable: true },rejectsFalse: { configurable: true } };\r\n\r\nprototypeAccessors$1.validator.get = function () {\r\n if (!this.vm || !this.vm.$validator) {\r\n return { validate: function () {} };\r\n }\r\n\r\n return this.vm.$validator;\r\n};\r\n\r\nprototypeAccessors$1.isRequired.get = function () {\r\n return !!this.rules.required;\r\n};\r\n\r\nprototypeAccessors$1.isDisabled.get = function () {\r\n return !!(this.componentInstance && this.componentInstance.disabled) || !!(this.el && this.el.disabled);\r\n};\r\n\r\n/**\r\n * Gets the display name (user-friendly name).\r\n */\r\nprototypeAccessors$1.alias.get = function () {\r\n if (this._alias) {\r\n return this._alias;\r\n }\r\n\r\n var alias = null;\r\n if (this.ctorConfig && this.ctorConfig.alias) {\r\n alias = isCallable(this.ctorConfig.alias) ? this.ctorConfig.alias.call(this.componentInstance) : this.ctorConfig.alias;\r\n }\r\n\r\n if (!alias && this.el) {\r\n alias = getDataAttribute(this.el, 'as');\r\n }\r\n\r\n if (!alias && this.componentInstance) {\r\n return this.componentInstance.$attrs && this.componentInstance.$attrs['data-vv-as'];\r\n }\r\n\r\n return alias;\r\n};\r\n\r\n/**\r\n * Gets the input value.\r\n */\r\n\r\nprototypeAccessors$1.value.get = function () {\r\n if (!isCallable(this.getter)) {\r\n return undefined;\r\n }\r\n\r\n return this.getter();\r\n};\r\n\r\nprototypeAccessors$1.bails.get = function () {\r\n return this._bails;\r\n};\r\n\r\n/**\r\n * If the field rejects false as a valid value for the required rule.\r\n */\r\n\r\nprototypeAccessors$1.rejectsFalse.get = function () {\r\n if (this.componentInstance && this.ctorConfig) {\r\n return !!this.ctorConfig.rejectsFalse;\r\n }\r\n\r\n if (!this.el) {\r\n return false;\r\n }\r\n\r\n return this.el.type === 'checkbox';\r\n};\r\n\r\n/**\r\n * Determines if the instance matches the options provided.\r\n */\r\nField.prototype.matches = function matches (options) {\n var this$1 = this;\n\r\n if (!options) {\r\n return true;\r\n }\r\n\r\n if (options.id) {\r\n return this.id === options.id;\r\n }\r\n\r\n var matchesComponentId = isNullOrUndefined(options.vmId) ? function () { return true; } : function (id) { return id === this$1.vmId; };\r\n if (!matchesComponentId(options.vmId)) {\r\n return false;\r\n }\r\n\r\n if (options.name === undefined && options.scope === undefined) {\r\n return true;\r\n }\r\n\r\n if (options.scope === undefined) {\r\n return this.name === options.name;\r\n }\r\n\r\n if (options.name === undefined) {\r\n return this.scope === options.scope;\r\n }\r\n\r\n return options.name === this.name && options.scope === this.scope;\r\n};\r\n\r\n/**\r\n * Caches the field id.\r\n */\r\nField.prototype._cacheId = function _cacheId (options) {\r\n if (this.el && !options.targetOf) {\r\n this.el._veeValidateId = this.id;\r\n }\r\n};\r\n\r\n/**\r\n * Keeps a reference of the most current validation run.\r\n */\r\nField.prototype.waitFor = function waitFor (pendingPromise) {\r\n this._waitingFor = pendingPromise;\r\n};\r\n\r\nField.prototype.isWaitingFor = function isWaitingFor (promise) {\r\n return this._waitingFor === promise;\r\n};\r\n\r\n/**\r\n * Updates the field with changed data.\r\n */\r\nField.prototype.update = function update (options) {\r\n this.targetOf = options.targetOf || null;\r\n this.immediate = options.immediate || this.immediate || false;\r\n\r\n // update errors scope if the field scope was changed.\r\n if (!isNullOrUndefined(options.scope) && options.scope !== this.scope && isCallable(this.validator.update)) {\r\n this.validator.update(this.id, { scope: options.scope });\r\n }\r\n this.scope = !isNullOrUndefined(options.scope) ? options.scope\r\n : !isNullOrUndefined(this.scope) ? this.scope : null;\r\n this.name = (!isNullOrUndefined(options.name) ? String(options.name) : options.name) || this.name || null;\r\n this.rules = options.rules !== undefined ? normalizeRules(options.rules) : this.rules;\r\n this._bails = options.bails !== undefined ? options.bails : this._bails;\r\n this.model = options.model || this.model;\r\n this.listen = options.listen !== undefined ? options.listen : this.listen;\r\n this.classes = (options.classes || this.classes || false) && !this.componentInstance;\r\n this.classNames = isObject(options.classNames) ? merge(this.classNames, options.classNames) : this.classNames;\r\n this.getter = isCallable(options.getter) ? options.getter : this.getter;\r\n this._alias = options.alias || this._alias;\r\n this.events = (options.events) ? normalizeEvents(options.events) : this.events;\r\n this.delay = makeDelayObject(this.events, options.delay || this.delay, this._delay);\r\n this.updateDependencies();\r\n this.addActionListeners();\r\n\r\n if (process.env.NODE_ENV !== 'production' && !this.name && !this.targetOf) {\r\n warn('A field is missing a \"name\" or \"data-vv-name\" attribute');\r\n }\r\n\r\n // update required flag flags\r\n if (options.rules !== undefined) {\r\n this.flags.required = this.isRequired;\r\n }\r\n\r\n // validate if it was validated before and field was updated and there was a rules mutation.\r\n if (this.flags.validated && options.rules !== undefined && this.updated) {\r\n this.validator.validate((\"#\" + (this.id)));\r\n }\r\n\r\n this.updated = true;\r\n this.addValueListeners();\r\n\r\n // no need to continue.\r\n if (!this.el) {\r\n return;\r\n }\r\n this.updateClasses();\r\n this.updateAriaAttrs();\r\n};\r\n\r\n/**\r\n * Resets field flags and errors.\r\n */\r\nField.prototype.reset = function reset () {\n var this$1 = this;\n\r\n if (this._cancellationToken) {\r\n this._cancellationToken.cancelled = true;\r\n delete this._cancellationToken;\r\n }\r\n\r\n var defaults = createFlags();\r\n Object.keys(this.flags).filter(function (flag) { return flag !== 'required'; }).forEach(function (flag) {\r\n this$1.flags[flag] = defaults[flag];\r\n });\r\n\r\n this.addValueListeners();\r\n this.addActionListeners();\r\n this.updateClasses(true);\r\n this.updateAriaAttrs();\r\n this.updateCustomValidity();\r\n};\r\n\r\n/**\r\n * Sets the flags and their negated counterparts, and updates the classes and re-adds action listeners.\r\n */\r\nField.prototype.setFlags = function setFlags (flags) {\n var this$1 = this;\n\r\n var negated = {\r\n pristine: 'dirty',\r\n dirty: 'pristine',\r\n valid: 'invalid',\r\n invalid: 'valid',\r\n touched: 'untouched',\r\n untouched: 'touched'\r\n };\r\n\r\n Object.keys(flags).forEach(function (flag) {\r\n this$1.flags[flag] = flags[flag];\r\n // if it has a negation and was not specified, set it as well.\r\n if (negated[flag] && flags[negated[flag]] === undefined) {\r\n this$1.flags[negated[flag]] = !flags[flag];\r\n }\r\n });\r\n\r\n if (\r\n flags.untouched !== undefined ||\r\n flags.touched !== undefined ||\r\n flags.dirty !== undefined ||\r\n flags.pristine !== undefined\r\n ) {\r\n this.addActionListeners();\r\n }\r\n this.updateClasses();\r\n this.updateAriaAttrs();\r\n this.updateCustomValidity();\r\n};\r\n\r\n/**\r\n * Determines if the field requires references to target fields.\r\n*/\r\nField.prototype.updateDependencies = function updateDependencies () {\n var this$1 = this;\n\r\n // reset dependencies.\r\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\r\n this.dependencies = [];\r\n\r\n // we get the selectors for each field.\r\n var fields = Object.keys(this.rules).reduce(function (prev, r) {\r\n if (RuleContainer.isTargetRule(r)) {\r\n prev.push({ selector: this$1.rules[r][0], name: r });\r\n }\r\n\r\n return prev;\r\n }, []);\r\n\r\n if (!fields.length || !this.vm || !this.vm.$el) { return; }\r\n\r\n // must be contained within the same component, so we use the vm root element constrain our dom search.\r\n fields.forEach(function (ref$1) {\n var selector = ref$1.selector;\n var name = ref$1.name;\n\r\n var ref = this$1.vm.$refs[selector];\r\n var el = Array.isArray(ref) ? ref[0] : ref;\r\n if (!el) {\r\n return;\r\n }\r\n\r\n var options = {\r\n vm: this$1.vm,\r\n classes: this$1.classes,\r\n classNames: this$1.classNames,\r\n delay: this$1.delay,\r\n scope: this$1.scope,\r\n events: this$1.events.join('|'),\r\n immediate: this$1.immediate,\r\n targetOf: this$1.id\r\n };\r\n\r\n // probably a component.\r\n if (isCallable(el.$watch)) {\r\n options.component = el;\r\n options.el = el.$el;\r\n options.getter = Resolver.resolveGetter(el.$el, el.$vnode);\r\n } else {\r\n options.el = el;\r\n options.getter = Resolver.resolveGetter(el, {});\r\n }\r\n\r\n this$1.dependencies.push({ name: name, field: new Field(options) });\r\n });\r\n};\r\n\r\n/**\r\n * Removes listeners.\r\n */\r\nField.prototype.unwatch = function unwatch (tag) {\n if ( tag === void 0 ) tag = null;\n\r\n if (!tag) {\r\n this.watchers.forEach(function (w) { return w.unwatch(); });\r\n this.watchers = [];\r\n return;\r\n }\r\n\r\n this.watchers.filter(function (w) { return tag.test(w.tag); }).forEach(function (w) { return w.unwatch(); });\r\n this.watchers = this.watchers.filter(function (w) { return !tag.test(w.tag); });\r\n};\r\n\r\n/**\r\n * Updates the element classes depending on each field flag status.\r\n */\r\nField.prototype.updateClasses = function updateClasses (isReset) {\n var this$1 = this;\n if ( isReset === void 0 ) isReset = false;\n\r\n if (!this.classes || this.isDisabled) { return; }\r\n var applyClasses = function (el) {\r\n toggleClass(el, this$1.classNames.dirty, this$1.flags.dirty);\r\n toggleClass(el, this$1.classNames.pristine, this$1.flags.pristine);\r\n toggleClass(el, this$1.classNames.touched, this$1.flags.touched);\r\n toggleClass(el, this$1.classNames.untouched, this$1.flags.untouched);\r\n\r\n // remove valid/invalid classes on reset.\r\n if (isReset) {\r\n toggleClass(el, this$1.classNames.valid, false);\r\n toggleClass(el, this$1.classNames.invalid, false);\r\n }\r\n\r\n // make sure we don't set any classes if the state is undetermined.\r\n if (!isNullOrUndefined(this$1.flags.valid) && this$1.flags.validated) {\r\n toggleClass(el, this$1.classNames.valid, this$1.flags.valid);\r\n }\r\n\r\n if (!isNullOrUndefined(this$1.flags.invalid) && this$1.flags.validated) {\r\n toggleClass(el, this$1.classNames.invalid, this$1.flags.invalid);\r\n }\r\n };\r\n\r\n if (!isCheckboxOrRadioInput(this.el)) {\r\n applyClasses(this.el);\r\n return;\r\n }\r\n\r\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\r\n toArray(els).forEach(applyClasses);\r\n};\r\n\r\n/**\r\n * Adds the listeners required for automatic classes and some flags.\r\n */\r\nField.prototype.addActionListeners = function addActionListeners () {\n var this$1 = this;\n\r\n // remove previous listeners.\r\n this.unwatch(/class/);\r\n\r\n if (!this.el) { return; }\r\n\r\n var onBlur = function () {\r\n this$1.flags.touched = true;\r\n this$1.flags.untouched = false;\r\n if (this$1.classes) {\r\n toggleClass(this$1.el, this$1.classNames.touched, true);\r\n toggleClass(this$1.el, this$1.classNames.untouched, false);\r\n }\r\n\r\n // only needed once.\r\n this$1.unwatch(/^class_blur$/);\r\n };\r\n\r\n var inputEvent = isTextInput(this.el) ? 'input' : 'change';\r\n var onInput = function () {\r\n this$1.flags.dirty = true;\r\n this$1.flags.pristine = false;\r\n if (this$1.classes) {\r\n toggleClass(this$1.el, this$1.classNames.pristine, false);\r\n toggleClass(this$1.el, this$1.classNames.dirty, true);\r\n }\r\n\r\n // only needed once.\r\n this$1.unwatch(/^class_input$/);\r\n };\r\n\r\n if (this.componentInstance && isCallable(this.componentInstance.$once)) {\r\n this.componentInstance.$once('input', onInput);\r\n this.componentInstance.$once('blur', onBlur);\r\n this.watchers.push({\r\n tag: 'class_input',\r\n unwatch: function () {\r\n this$1.componentInstance.$off('input', onInput);\r\n }\r\n });\r\n this.watchers.push({\r\n tag: 'class_blur',\r\n unwatch: function () {\r\n this$1.componentInstance.$off('blur', onBlur);\r\n }\r\n });\r\n return;\r\n }\r\n\r\n if (!this.el) { return; }\r\n\r\n addEventListener(this.el, inputEvent, onInput);\r\n // Checkboxes and radio buttons on Mac don't emit blur naturally, so we listen on click instead.\r\n var blurEvent = isCheckboxOrRadioInput(this.el) ? 'change' : 'blur';\r\n addEventListener(this.el, blurEvent, onBlur);\r\n this.watchers.push({\r\n tag: 'class_input',\r\n unwatch: function () {\r\n this$1.el.removeEventListener(inputEvent, onInput);\r\n }\r\n });\r\n\r\n this.watchers.push({\r\n tag: 'class_blur',\r\n unwatch: function () {\r\n this$1.el.removeEventListener(blurEvent, onBlur);\r\n }\r\n });\r\n};\r\n\r\nField.prototype.checkValueChanged = function checkValueChanged () {\r\n // handle some people initialize the value to null, since text inputs have empty string value.\r\n if (this.initialValue === null && this.value === '' && isTextInput(this.el)) {\r\n return false;\r\n }\r\n\r\n return this.value !== this.initialValue;\r\n};\r\n\r\n/**\r\n * Determines the suitable primary event to listen for.\r\n */\r\nField.prototype._determineInputEvent = function _determineInputEvent () {\r\n // if its a custom component, use the customized model event or the input event.\r\n if (this.componentInstance) {\r\n return (this.componentInstance.$options.model && this.componentInstance.$options.model.event) || 'input';\r\n }\r\n\r\n if (this.model && this.model.lazy) {\r\n return 'change';\r\n }\r\n\r\n if (isTextInput(this.el)) {\r\n return 'input';\r\n }\r\n\r\n return 'change';\r\n};\r\n\r\n/**\r\n * Determines the list of events to listen to.\r\n */\r\nField.prototype._determineEventList = function _determineEventList (defaultInputEvent) {\n var this$1 = this;\n\r\n // if no event is configured, or it is a component or a text input then respect the user choice.\r\n if (!this.events.length || this.componentInstance || isTextInput(this.el)) {\r\n return [].concat( this.events ).map(function (evt) {\r\n if (evt === 'input' && this$1.model && this$1.model.lazy) {\r\n return 'change';\r\n }\r\n\r\n return evt;\r\n });\r\n }\r\n\r\n // force suitable event for non-text type fields.\r\n return this.events.map(function (e) {\r\n if (e === 'input') {\r\n return defaultInputEvent;\r\n }\r\n\r\n return e;\r\n });\r\n};\r\n\r\n/**\r\n * Adds the listeners required for validation.\r\n */\r\nField.prototype.addValueListeners = function addValueListeners () {\n var this$1 = this;\n\r\n this.unwatch(/^input_.+/);\r\n if (!this.listen || !this.el) { return; }\r\n\r\n var token = { cancelled: false };\r\n var fn = this.targetOf ? function () {\r\n this$1.flags.changed = this$1.checkValueChanged(); this$1.validator.validate((\"#\" + (this$1.targetOf)));\r\n } : function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\r\n // if its a DOM event, resolve the value, otherwise use the first parameter as the value.\r\n if (args.length === 0 || isEvent(args[0])) {\r\n args[0] = this$1.value;\r\n }\r\n\r\n this$1.flags.changed = this$1.checkValueChanged();\r\n this$1.validator.validate((\"#\" + (this$1.id)), args[0]);\r\n };\r\n\r\n var inputEvent = this._determineInputEvent();\r\n var events = this._determineEventList(inputEvent);\r\n\r\n // if there is a model and an on input validation is requested.\r\n if (this.model && includes(events, inputEvent)) {\r\n var ctx = null;\r\n var expression = this.model.expression;\r\n // if its watchable from the context vm.\r\n if (this.model.expression) {\r\n ctx = this.vm;\r\n expression = this.model.expression;\r\n }\r\n\r\n // watch it from the custom component vm instead.\r\n if (!expression && this.componentInstance && this.componentInstance.$options.model) {\r\n ctx = this.componentInstance;\r\n expression = this.componentInstance.$options.model.prop || 'value';\r\n }\r\n\r\n if (ctx && expression) {\r\n var debouncedFn = debounce(fn, this.delay[inputEvent], token);\r\n var unwatch = ctx.$watch(expression, function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\r\n this$1.flags.pending = true;\r\n this$1._cancellationToken = token;\r\n debouncedFn.apply(void 0, args);\r\n });\r\n this.watchers.push({\r\n tag: 'input_model',\r\n unwatch: unwatch\r\n });\r\n\r\n // filter out input event as it is already handled by the watcher API.\r\n events = events.filter(function (e) { return e !== inputEvent; });\r\n }\r\n }\r\n\r\n // Add events.\r\n events.forEach(function (e) {\r\n var debouncedFn = debounce(fn, this$1.delay[e], token);\r\n var validate = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\r\n this$1.flags.pending = true;\r\n this$1._cancellationToken = token;\r\n debouncedFn.apply(void 0, args);\r\n };\r\n\r\n this$1._addComponentEventListener(e, validate);\r\n this$1._addHTMLEventListener(e, validate);\r\n });\r\n};\r\n\r\nField.prototype._addComponentEventListener = function _addComponentEventListener (evt, validate) {\n var this$1 = this;\n\r\n if (!this.componentInstance) { return; }\r\n\r\n this.componentInstance.$on(evt, validate);\r\n this.watchers.push({\r\n tag: 'input_vue',\r\n unwatch: function () {\r\n this$1.componentInstance.$off(evt, validate);\r\n }\r\n });\r\n};\r\n\r\nField.prototype._addHTMLEventListener = function _addHTMLEventListener (evt, validate) {\n var this$1 = this;\n\r\n if (!this.el || this.componentInstance) { return; }\r\n\r\n // listen for the current element.\r\n var addListener = function (el) {\r\n addEventListener(el, evt, validate);\r\n this$1.watchers.push({\r\n tag: 'input_native',\r\n unwatch: function () {\r\n el.removeEventListener(evt, validate);\r\n }\r\n });\r\n };\r\n\r\n addListener(this.el);\r\n if (!isCheckboxOrRadioInput(this.el)) {\r\n return;\r\n }\r\n\r\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\r\n toArray(els).forEach(function (el) {\r\n // skip if it is added by v-validate and is not the current element.\r\n if (el._veeValidateId && el !== this$1.el) {\r\n return;\r\n }\r\n\r\n addListener(el);\r\n });\r\n};\r\n\r\n/**\r\n * Updates aria attributes on the element.\r\n */\r\nField.prototype.updateAriaAttrs = function updateAriaAttrs () {\n var this$1 = this;\n\r\n if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) { return; }\r\n\r\n var applyAriaAttrs = function (el) {\r\n el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false');\r\n el.setAttribute('aria-invalid', this$1.flags.invalid ? 'true' : 'false');\r\n };\r\n\r\n if (!isCheckboxOrRadioInput(this.el)) {\r\n applyAriaAttrs(this.el);\r\n return;\r\n }\r\n\r\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\r\n toArray(els).forEach(applyAriaAttrs);\r\n};\r\n\r\n/**\r\n * Updates the custom validity for the field.\r\n */\r\nField.prototype.updateCustomValidity = function updateCustomValidity () {\r\n if (!this.validity || !this.el || !isCallable(this.el.setCustomValidity) || !this.validator.errors) { return; }\r\n\r\n this.el.setCustomValidity(this.flags.valid ? '' : (this.validator.errors.firstById(this.id) || ''));\r\n};\r\n\r\n/**\r\n * Removes all listeners.\r\n */\r\nField.prototype.destroy = function destroy () {\r\n // ignore the result of any ongoing validation.\r\n if (this._cancellationToken) {\r\n this._cancellationToken.cancelled = true;\r\n }\r\n\r\n this.unwatch();\r\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\r\n this.dependencies = [];\r\n};\n\nObject.defineProperties( Field.prototype, prototypeAccessors$1 );\n\n// \r\n\r\nvar FieldBag = function FieldBag (items) {\n if ( items === void 0 ) items = [];\n\r\n this.items = items || [];\r\n};\n\nvar prototypeAccessors$2 = { length: { configurable: true } };\r\n\r\nFieldBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\r\n var index = 0;\r\n return {\r\n next: function () {\r\n return { value: this$1.items[index++], done: index > this$1.items.length };\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Gets the current items length.\r\n */\r\n\r\nprototypeAccessors$2.length.get = function () {\r\n return this.items.length;\r\n};\r\n\r\n/**\r\n * Finds the first field that matches the provided matcher object.\r\n */\r\nFieldBag.prototype.find = function find$1 (matcher) {\r\n return find(this.items, function (item) { return item.matches(matcher); });\r\n};\r\n\r\n/**\r\n * Filters the items down to the matched fields.\r\n */\r\nFieldBag.prototype.filter = function filter (matcher) {\r\n // multiple matchers to be tried.\r\n if (Array.isArray(matcher)) {\r\n return this.items.filter(function (item) { return matcher.some(function (m) { return item.matches(m); }); });\r\n }\r\n\r\n return this.items.filter(function (item) { return item.matches(matcher); });\r\n};\r\n\r\n/**\r\n * Maps the field items using the mapping function.\r\n */\r\nFieldBag.prototype.map = function map (mapper) {\r\n return this.items.map(mapper);\r\n};\r\n\r\n/**\r\n * Finds and removes the first field that matches the provided matcher object, returns the removed item.\r\n */\r\nFieldBag.prototype.remove = function remove (matcher) {\r\n var item = null;\r\n if (matcher instanceof Field) {\r\n item = matcher;\r\n } else {\r\n item = this.find(matcher);\r\n }\r\n\r\n if (!item) { return null; }\r\n\r\n var index = this.items.indexOf(item);\r\n this.items.splice(index, 1);\r\n\r\n return item;\r\n};\r\n\r\n/**\r\n * Adds a field item to the list.\r\n */\r\nFieldBag.prototype.push = function push (item) {\r\n if (! (item instanceof Field)) {\r\n throw createError('FieldBag only accepts instances of Field that has an id defined.');\r\n }\r\n\r\n if (!item.id) {\r\n throw createError('Field id must be defined.');\r\n }\r\n\r\n if (this.find({ id: item.id })) {\r\n throw createError((\"Field with id \" + (item.id) + \" is already added.\"));\r\n }\r\n\r\n this.items.push(item);\r\n};\n\nObject.defineProperties( FieldBag.prototype, prototypeAccessors$2 );\n\nvar ScopedValidator = function ScopedValidator (base, vm) {\r\n this.id = vm._uid;\r\n this._base = base;\r\n this._paused = false;\r\n\r\n // create a mirror bag with limited component scope.\r\n this.errors = new ErrorBag(base.errors, this.id);\r\n};\n\nvar prototypeAccessors$3 = { flags: { configurable: true },rules: { configurable: true },fields: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\r\n\r\nprototypeAccessors$3.flags.get = function () {\n var this$1 = this;\n\r\n return this._base.fields.items.filter(function (f) { return f.vmId === this$1.id; }).reduce(function (acc, field) {\r\n if (field.scope) {\r\n if (!acc[(\"$\" + (field.scope))]) {\r\n acc[(\"$\" + (field.scope))] = {};\r\n }\r\n\r\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\r\n }\r\n\r\n acc[field.name] = field.flags;\r\n\r\n return acc;\r\n }, {});\r\n};\r\n\r\nprototypeAccessors$3.rules.get = function () {\r\n return this._base.rules;\r\n};\r\n\r\nprototypeAccessors$3.fields.get = function () {\r\n return new FieldBag(this._base.fields.filter({ vmId: this.id }));\r\n};\r\n\r\nprototypeAccessors$3.dictionary.get = function () {\r\n return this._base.dictionary;\r\n};\r\n\r\nprototypeAccessors$3.locale.get = function () {\r\n return this._base.locale;\r\n};\r\n\r\nprototypeAccessors$3.locale.set = function (val) {\r\n this._base.locale = val;\r\n};\r\n\r\nScopedValidator.prototype.localize = function localize () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\r\n return (ref = this._base).localize.apply(ref, args);\r\n};\r\n\r\nScopedValidator.prototype.update = function update () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\r\n return (ref = this._base).update.apply(ref, args);\r\n};\r\n\r\nScopedValidator.prototype.attach = function attach (opts) {\r\n var attachOpts = assign({}, opts, { vmId: this.id });\r\n\r\n return this._base.attach(attachOpts);\r\n};\r\n\r\nScopedValidator.prototype.pause = function pause () {\r\n this._paused = true;\r\n};\r\n\r\nScopedValidator.prototype.resume = function resume () {\r\n this._paused = false;\r\n};\r\n\r\nScopedValidator.prototype.remove = function remove (ruleName) {\r\n return this._base.remove(ruleName);\r\n};\r\n\r\nScopedValidator.prototype.detach = function detach (name, scope) {\r\n return this._base.detach(name, scope, this.id);\r\n};\r\n\r\nScopedValidator.prototype.extend = function extend () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\r\n return (ref = this._base).extend.apply(ref, args);\r\n};\r\n\r\nScopedValidator.prototype.validate = function validate (descriptor, value, opts) {\n if ( opts === void 0 ) opts = {};\n\r\n if (this._paused) { return Promise.resolve(true); }\r\n\r\n return this._base.validate(descriptor, value, assign({}, { vmId: this.id }, opts || {}));\r\n};\r\n\r\nScopedValidator.prototype.validateAll = function validateAll (values$$1, opts) {\n if ( opts === void 0 ) opts = {};\n\r\n if (this._paused) { return Promise.resolve(true); }\r\n\r\n return this._base.validateAll(values$$1, assign({}, { vmId: this.id }, opts || {}));\r\n};\r\n\r\nScopedValidator.prototype.validateScopes = function validateScopes (opts) {\n if ( opts === void 0 ) opts = {};\n\r\n if (this._paused) { return Promise.resolve(true); }\r\n\r\n return this._base.validateScopes(assign({}, { vmId: this.id }, opts || {}));\r\n};\r\n\r\nScopedValidator.prototype.destroy = function destroy () {\r\n delete this.id;\r\n delete this._base;\r\n};\r\n\r\nScopedValidator.prototype.reset = function reset (matcher) {\r\n return this._base.reset(Object.assign({}, matcher || {}, { vmId: this.id }));\r\n};\r\n\r\nScopedValidator.prototype.flag = function flag () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\r\n return (ref = this._base).flag.apply(ref, args.concat( [this.id] ));\r\n};\n\nObject.defineProperties( ScopedValidator.prototype, prototypeAccessors$3 );\n\n// \r\n\r\n/**\r\n * Checks if a parent validator instance was requested.\r\n */\r\nvar requestsValidator = function (injections) {\r\n if (isObject(injections) && injections.$validator) {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nvar mixin = {\r\n provide: function provide () {\r\n if (this.$validator && !isBuiltInComponent(this.$vnode)) {\r\n return {\r\n $validator: this.$validator\r\n };\r\n }\r\n\r\n return {};\r\n },\r\n beforeCreate: function beforeCreate () {\r\n // if built in do nothing.\r\n if (isBuiltInComponent(this.$vnode) || this.$options.$__veeInject === false) {\r\n return;\r\n }\r\n\r\n // if its a root instance set the config if it exists.\r\n if (!this.$parent) {\r\n pluginInstance.configure(this.$options.$_veeValidate || {});\r\n }\r\n\r\n var options = pluginInstance.resolveConfig(this);\r\n\r\n // if its a root instance, inject anyways, or if it requested a new instance.\r\n if (!this.$parent || (this.$options.$_veeValidate && /new/.test(this.$options.$_veeValidate.validator))) {\r\n this.$validator = new ScopedValidator(pluginInstance._validator, this);\r\n }\r\n\r\n var requested = requestsValidator(this.$options.inject);\r\n\r\n // if automatic injection is enabled and no instance was requested.\r\n if (! this.$validator && options.inject && !requested) {\r\n this.$validator = new ScopedValidator(pluginInstance._validator, this);\r\n }\r\n\r\n // don't inject errors or fieldBag as no validator was resolved.\r\n if (! requested && ! this.$validator) {\r\n return;\r\n }\r\n\r\n // There is a validator but it isn't injected, mark as reactive.\r\n if (!requested && this.$validator) {\r\n var Vue = this.$options._base; // the vue constructor.\r\n Vue.util.defineReactive(this.$validator, 'errors', this.$validator.errors);\r\n }\r\n\r\n if (! this.$options.computed) {\r\n this.$options.computed = {};\r\n }\r\n\r\n this.$options.computed[options.errorBagName || 'errors'] = function errorBagGetter () {\r\n return this.$validator.errors;\r\n };\r\n this.$options.computed[options.fieldsBagName || 'fields'] = function fieldBagGetter () {\r\n return this.$validator.fields.items.reduce(function (acc, field) {\r\n if (field.scope) {\r\n if (!acc[(\"$\" + (field.scope))]) {\r\n acc[(\"$\" + (field.scope))] = {};\r\n }\r\n\r\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\r\n\r\n return acc;\r\n }\r\n\r\n acc[field.name] = field.flags;\r\n\r\n return acc;\r\n }, {});\r\n };\r\n },\r\n beforeDestroy: function beforeDestroy () {\r\n if (this.$validator && this._uid === this.$validator.id) {\r\n this.$validator.errors.clear(); // remove errors generated by this component.\r\n }\r\n }\r\n};\n\n// \r\n\r\n/**\r\n * Finds the requested field by id from the context object.\r\n */\r\nfunction findField (el, context) {\r\n if (!context || !context.$validator) {\r\n return null;\r\n }\r\n\r\n return context.$validator.fields.find({ id: el._veeValidateId });\r\n}\r\nvar directive = {\r\n bind: function bind (el, binding, vnode) {\r\n var validator = vnode.context.$validator;\r\n if (!validator) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn(\"No validator instance is present on vm, did you forget to inject '$validator'?\");\r\n }\r\n\r\n return;\r\n }\r\n\r\n var fieldOptions = Resolver.generate(el, binding, vnode);\r\n validator.attach(fieldOptions);\r\n },\r\n inserted: function inserted (el, binding, vnode) {\r\n var field = findField(el, vnode.context);\r\n var scope = Resolver.resolveScope(el, binding, vnode);\r\n\r\n // skip if scope hasn't changed.\r\n if (!field || scope === field.scope) { return; }\r\n\r\n // only update scope.\r\n field.update({ scope: scope });\r\n\r\n // allows the field to re-evaluated once more in the update hook.\r\n field.updated = false;\r\n },\r\n update: function update (el, binding, vnode) {\r\n var field = findField(el, vnode.context);\r\n\r\n // make sure we don't do unneccasary work if no important change was done.\r\n if (!field || (field.updated && isEqual(binding.value, binding.oldValue))) { return; }\r\n var scope = Resolver.resolveScope(el, binding, vnode);\r\n var rules = Resolver.resolveRules(el, binding, vnode);\r\n\r\n field.update({\r\n scope: scope,\r\n rules: rules\r\n });\r\n },\r\n unbind: function unbind (el, binding, ref) {\n var context = ref.context;\n\r\n var field = findField(el, context);\r\n if (!field) { return; }\r\n\r\n context.$validator.detach(field);\r\n }\r\n};\n\n// \r\n\r\nvar Validator = function Validator (validations, options) {\n if ( options === void 0 ) options = { fastExit: true };\n\r\n this.errors = new ErrorBag();\r\n this.fields = new FieldBag();\r\n this._createFields(validations);\r\n this.paused = false;\r\n this.fastExit = !isNullOrUndefined(options && options.fastExit) ? options.fastExit : true;\r\n};\n\nvar prototypeAccessors$4 = { rules: { configurable: true },dictionary: { configurable: true },flags: { configurable: true },locale: { configurable: true } };\nvar staticAccessors$1 = { rules: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\r\n\r\nstaticAccessors$1.rules.get = function () {\r\n return RuleContainer.rules;\r\n};\r\n\r\nprototypeAccessors$4.rules.get = function () {\r\n return RuleContainer.rules;\r\n};\r\n\r\nprototypeAccessors$4.dictionary.get = function () {\r\n return VeeValidate$1.i18nDriver;\r\n};\r\n\r\nstaticAccessors$1.dictionary.get = function () {\r\n return VeeValidate$1.i18nDriver;\r\n};\r\n\r\nprototypeAccessors$4.flags.get = function () {\r\n return this.fields.items.reduce(function (acc, field) {\n var obj;\n\r\n if (field.scope) {\r\n acc[(\"$\" + (field.scope))] = ( obj = {}, obj[field.name] = field.flags, obj );\r\n\r\n return acc;\r\n }\r\n\r\n acc[field.name] = field.flags;\r\n\r\n return acc;\r\n }, {});\r\n};\r\n\r\n/**\r\n * Getter for the current locale.\r\n */\r\nprototypeAccessors$4.locale.get = function () {\r\n return Validator.locale;\r\n};\r\n\r\n/**\r\n * Setter for the validator locale.\r\n */\r\nprototypeAccessors$4.locale.set = function (value) {\r\n Validator.locale = value;\r\n};\r\n\r\nstaticAccessors$1.locale.get = function () {\r\n return VeeValidate$1.i18nDriver.locale;\r\n};\r\n\r\n/**\r\n * Setter for the validator locale.\r\n */\r\nstaticAccessors$1.locale.set = function (value) {\r\n var hasChanged = value !== VeeValidate$1.i18nDriver.locale;\r\n VeeValidate$1.i18nDriver.locale = value;\r\n if (hasChanged && VeeValidate$1.instance && VeeValidate$1.instance._vm) {\r\n VeeValidate$1.instance._vm.$emit('localeChanged');\r\n }\r\n};\r\n\r\n/**\r\n * Static constructor.\r\n */\r\nValidator.create = function create (validations, options) {\r\n return new Validator(validations, options);\r\n};\r\n\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nValidator.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\r\n Validator._guardExtend(name, validator);\r\n Validator._merge(name, {\r\n validator: validator,\r\n paramNames: options && options.paramNames,\r\n options: assign({}, { hasTarget: false, immediate: true }, options || {})\r\n });\r\n};\r\n\r\n/**\r\n * Removes a rule from the list of validators.\r\n */\r\nValidator.remove = function remove (name) {\r\n RuleContainer.remove(name);\r\n};\r\n\r\n/**\r\n * Checks if the given rule name is a rule that targets other fields.\r\n */\r\nValidator.isTargetRule = function isTargetRule (name) {\r\n return RuleContainer.isTargetRule(name);\r\n};\r\n\r\n/**\r\n * Adds and sets the current locale for the validator.\r\n */\r\nValidator.prototype.localize = function localize (lang, dictionary) {\r\n Validator.localize(lang, dictionary);\r\n};\r\n\r\n/**\r\n * Adds and sets the current locale for the validator.\r\n */\r\nValidator.localize = function localize (lang, dictionary) {\n var obj;\n\r\n if (isObject(lang)) {\r\n VeeValidate$1.i18nDriver.merge(lang);\r\n return;\r\n }\r\n\r\n // merge the dictionary.\r\n if (dictionary) {\r\n var locale = lang || dictionary.name;\r\n dictionary = assign({}, dictionary);\r\n VeeValidate$1.i18nDriver.merge(( obj = {}, obj[locale] = dictionary, obj ));\r\n }\r\n\r\n if (lang) {\r\n // set the locale.\r\n Validator.locale = lang;\r\n }\r\n};\r\n\r\n/**\r\n * Registers a field to be validated.\r\n */\r\nValidator.prototype.attach = function attach (fieldOpts) {\n var this$1 = this;\n\r\n // fixes initial value detection with v-model and select elements.\r\n var value = fieldOpts.initialValue;\r\n var field = new Field(fieldOpts);\r\n this.fields.push(field);\r\n\r\n // validate the field initially\r\n if (field.immediate) {\r\n VeeValidate$1.instance._vm.$nextTick(function () { return this$1.validate((\"#\" + (field.id)), value || field.value, { vmId: fieldOpts.vmId }); });\r\n } else {\r\n this._validate(field, value || field.value, { initial: true }).then(function (result) {\r\n field.flags.valid = result.valid;\r\n field.flags.invalid = !result.valid;\r\n });\r\n }\r\n\r\n return field;\r\n};\r\n\r\n/**\r\n * Sets the flags on a field.\r\n */\r\nValidator.prototype.flag = function flag (name, flags, uid) {\n if ( uid === void 0 ) uid = null;\n\r\n var field = this._resolveField(name, undefined, uid);\r\n if (!field || !flags) {\r\n return;\r\n }\r\n\r\n field.setFlags(flags);\r\n};\r\n\r\n/**\r\n * Removes a field from the validator.\r\n */\r\nValidator.prototype.detach = function detach (name, scope, uid) {\r\n var field = isCallable(name.destroy) ? name : this._resolveField(name, scope, uid);\r\n if (!field) { return; }\r\n\r\n field.destroy();\r\n this.errors.remove(field.name, field.scope, field.vmId);\r\n this.fields.remove(field);\r\n};\r\n\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nValidator.prototype.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\r\n Validator.extend(name, validator, options);\r\n};\r\n\r\nValidator.prototype.reset = function reset (matcher) {\n var this$1 = this;\n\r\n // two ticks\r\n return VeeValidate$1.instance._vm.$nextTick().then(function () {\r\n return VeeValidate$1.instance._vm.$nextTick();\r\n }).then(function () {\r\n this$1.fields.filter(matcher).forEach(function (field) {\r\n field.waitFor(null);\r\n field.reset(); // reset field flags.\r\n this$1.errors.remove(field.name, field.scope, matcher && matcher.vmId);\r\n });\r\n });\r\n};\r\n\r\n/**\r\n * Updates a field, updating both errors and flags.\r\n */\r\nValidator.prototype.update = function update (id, ref) {\n var scope = ref.scope;\n\r\n var field = this._resolveField((\"#\" + id));\r\n if (!field) { return; }\r\n\r\n // remove old scope.\r\n this.errors.update(id, { scope: scope });\r\n};\r\n\r\n/**\r\n * Removes a rule from the list of validators.\r\n */\r\nValidator.prototype.remove = function remove (name) {\r\n Validator.remove(name);\r\n};\r\n\r\n/**\r\n * Validates a value against a registered field validations.\r\n */\r\nValidator.prototype.validate = function validate (fieldDescriptor, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\r\n if (this.paused) { return Promise.resolve(true); }\r\n\r\n // overload to validate all.\r\n if (isNullOrUndefined(fieldDescriptor)) {\r\n return this.validateScopes({ silent: silent, vmId: vmId });\r\n }\r\n\r\n // overload to validate scope-less fields.\r\n if (fieldDescriptor === '*') {\r\n return this.validateAll(undefined, { silent: silent, vmId: vmId });\r\n }\r\n\r\n // if scope validation was requested.\r\n if (/^(.+)\\.\\*$/.test(fieldDescriptor)) {\r\n var matched = fieldDescriptor.match(/^(.+)\\.\\*$/)[1];\r\n return this.validateAll(matched);\r\n }\r\n\r\n var field = this._resolveField(fieldDescriptor);\r\n if (!field) {\r\n return this._handleFieldNotFound(name);\r\n }\r\n\r\n if (!silent) { field.flags.pending = true; }\r\n if (value === undefined) {\r\n value = field.value;\r\n }\r\n\r\n var validationPromise = this._validate(field, value);\r\n field.waitFor(validationPromise);\r\n\r\n return validationPromise.then(function (result) {\r\n if (!silent && field.isWaitingFor(validationPromise)) {\r\n // allow next validation to mutate the state.\r\n field.waitFor(null);\r\n this$1._handleValidationResults([result], vmId);\r\n }\r\n\r\n return result.valid;\r\n });\r\n};\r\n\r\n/**\r\n * Pauses the validator.\r\n */\r\nValidator.prototype.pause = function pause () {\r\n this.paused = true;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Resumes the validator.\r\n */\r\nValidator.prototype.resume = function resume () {\r\n this.paused = false;\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Validates each value against the corresponding field validations.\r\n */\r\nValidator.prototype.validateAll = function validateAll (values$$1, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\r\n if (this.paused) { return Promise.resolve(true); }\r\n\r\n var matcher = null;\r\n var providedValues = false;\r\n\r\n if (typeof values$$1 === 'string') {\r\n matcher = { scope: values$$1, vmId: vmId };\r\n } else if (isObject(values$$1)) {\r\n matcher = Object.keys(values$$1).map(function (key) {\r\n return { name: key, vmId: vmId, scope: null };\r\n });\r\n providedValues = true;\r\n } else if (Array.isArray(values$$1)) {\r\n matcher = values$$1.map(function (key) {\r\n return { name: key, vmId: vmId };\r\n });\r\n } else {\r\n matcher = { scope: null, vmId: vmId };\r\n }\r\n\r\n return Promise.all(\r\n this.fields.filter(matcher).map(function (field) { return this$1._validate(field, providedValues ? values$$1[field.name] : field.value); })\r\n ).then(function (results) {\r\n if (!silent) {\r\n this$1._handleValidationResults(results, vmId);\r\n }\r\n\r\n return results.every(function (t) { return t.valid; });\r\n });\r\n};\r\n\r\n/**\r\n * Validates all scopes.\r\n */\r\nValidator.prototype.validateScopes = function validateScopes (ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\r\n if (this.paused) { return Promise.resolve(true); }\r\n\r\n return Promise.all(\r\n this.fields.filter({ vmId: vmId }).map(function (field) { return this$1._validate(field, field.value); })\r\n ).then(function (results) {\r\n if (!silent) {\r\n this$1._handleValidationResults(results, vmId);\r\n }\r\n\r\n return results.every(function (t) { return t.valid; });\r\n });\r\n};\r\n\r\n/**\r\n * Validates a value against the rules.\r\n */\r\nValidator.prototype.verify = function verify (value, rules, options) {\n if ( options === void 0 ) options = {};\n\r\n var field = {\r\n name: (options && options.name) || '{field}',\r\n rules: normalizeRules(rules),\r\n bails: getPath('bails', options, true)\r\n };\r\n\r\n field.isRequired = field.rules.required;\r\n var targetRules = Object.keys(field.rules).filter(Validator.isTargetRule);\r\n if (targetRules.length && options && isObject(options.values)) {\r\n // patch the field params with the targets' values.\r\n targetRules.forEach(function (rule) {\r\n var ref = field.rules[rule];\n var first = ref[0];\n var rest = ref.slice(1);\r\n field.rules[rule] = [options.values[first] ].concat( rest);\r\n });\r\n }\r\n\r\n return this._validate(field, value).then(function (result) {\r\n return { valid: result.valid, errors: result.errors.map(function (e) { return e.msg; }) };\r\n });\r\n};\r\n\r\n/**\r\n * Perform cleanup.\r\n */\r\nValidator.prototype.destroy = function destroy () {\r\n VeeValidate$1.instance._vm.$off('localeChanged');\r\n};\r\n\r\n/**\r\n * Creates the fields to be validated.\r\n */\r\nValidator.prototype._createFields = function _createFields (validations) {\n var this$1 = this;\n\r\n if (!validations) { return; }\r\n\r\n Object.keys(validations).forEach(function (field) {\r\n var options = assign({}, { name: field, rules: validations[field] });\r\n this$1.attach(options);\r\n });\r\n};\r\n\r\n/**\r\n * Date rules need the existence of a format, so date_format must be supplied.\r\n */\r\nValidator.prototype._getDateFormat = function _getDateFormat (validations) {\r\n var format = null;\r\n if (validations.date_format && Array.isArray(validations.date_format)) {\r\n format = validations.date_format[0];\r\n }\r\n\r\n return format || VeeValidate$1.i18nDriver.getDateFormat(this.locale);\r\n};\r\n\r\n/**\r\n * Formats an error message for field and a rule.\r\n */\r\nValidator.prototype._formatErrorMessage = function _formatErrorMessage (field, rule, data, targetName) {\n if ( data === void 0 ) data = {};\n if ( targetName === void 0 ) targetName = null;\n\r\n var name = this._getFieldDisplayName(field);\r\n var params = this._getLocalizedParams(rule, targetName);\r\n\r\n return VeeValidate$1.i18nDriver.getFieldMessage(this.locale, field.name, rule.name, [name, params, data]);\r\n};\r\n\r\n/**\r\n * We need to convert any object param to an array format since the locales do not handle params as objects yet.\r\n */\r\nValidator.prototype._convertParamObjectToArray = function _convertParamObjectToArray (obj, ruleName) {\r\n if (Array.isArray(obj)) {\r\n return obj;\r\n }\r\n\r\n var paramNames = RuleContainer.getParamNames(ruleName);\r\n if (!paramNames || !isObject(obj)) {\r\n return obj;\r\n }\r\n\r\n return paramNames.reduce(function (prev, paramName) {\r\n if (paramName in obj) {\r\n prev.push(obj[paramName]);\r\n }\r\n\r\n return prev;\r\n }, []);\r\n};\r\n\r\n/**\r\n * Translates the parameters passed to the rule (mainly for target fields).\r\n */\r\nValidator.prototype._getLocalizedParams = function _getLocalizedParams (rule, targetName) {\n if ( targetName === void 0 ) targetName = null;\n\r\n var params = this._convertParamObjectToArray(rule.params, rule.name);\r\n if (rule.options.hasTarget && params && params[0]) {\r\n var localizedName = targetName || VeeValidate$1.i18nDriver.getAttribute(this.locale, params[0], params[0]);\r\n return [localizedName].concat(params.slice(1));\r\n }\r\n\r\n return params;\r\n};\r\n\r\n/**\r\n * Resolves an appropriate display name, first checking 'data-as' or the registered 'prettyName'\r\n */\r\nValidator.prototype._getFieldDisplayName = function _getFieldDisplayName (field) {\r\n return field.alias || VeeValidate$1.i18nDriver.getAttribute(this.locale, field.name, field.name);\r\n};\r\n\r\n/**\r\n * Converts an array of params to an object with named properties.\r\n * Only works if the rule is configured with a paramNames array.\r\n * Returns the same params if it cannot convert it.\r\n */\r\nValidator.prototype._convertParamArrayToObj = function _convertParamArrayToObj (params, ruleName) {\r\n var paramNames = RuleContainer.getParamNames(ruleName);\r\n if (!paramNames) {\r\n return params;\r\n }\r\n\r\n if (isObject(params)) {\r\n // check if the object is either a config object or a single parameter that is an object.\r\n var hasKeys = paramNames.some(function (name) { return Object.keys(params).indexOf(name) !== -1; });\r\n // if it has some of the keys, return it as is.\r\n if (hasKeys) {\r\n return params;\r\n }\r\n // otherwise wrap the object in an array.\r\n params = [params];\r\n }\r\n\r\n // Reduce the paramsNames to a param object.\r\n return params.reduce(function (prev, value, idx) {\r\n prev[paramNames[idx]] = value;\r\n\r\n return prev;\r\n }, {});\r\n};\r\n\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nValidator.prototype._test = function _test (field, value, rule) {\n var this$1 = this;\n\r\n var validator = RuleContainer.getValidatorMethod(rule.name);\r\n var params = Array.isArray(rule.params) ? toArray(rule.params) : rule.params;\r\n if (!params) {\r\n params = [];\r\n }\r\n\r\n var targetName = null;\r\n if (!validator || typeof validator !== 'function') {\r\n return Promise.reject(createError((\"No such validator '\" + (rule.name) + \"' exists.\")));\r\n }\r\n\r\n // has field dependencies.\r\n if (rule.options.hasTarget && field.dependencies) {\r\n var target = find(field.dependencies, function (d) { return d.name === rule.name; });\r\n if (target) {\r\n targetName = target.field.alias;\r\n params = [target.field.value].concat(params.slice(1));\r\n }\r\n } else if (rule.name === 'required' && field.rejectsFalse) {\r\n // invalidate false if no args were specified and the field rejects false by default.\r\n params = params.length ? params : [true];\r\n }\r\n\r\n if (rule.options.isDate) {\r\n var dateFormat = this._getDateFormat(field.rules);\r\n if (rule.name !== 'date_format') {\r\n params.push(dateFormat);\r\n }\r\n }\r\n\r\n var result = validator(value, this._convertParamArrayToObj(params, rule.name));\r\n\r\n // If it is a promise.\r\n if (isCallable(result.then)) {\r\n return result.then(function (values$$1) {\r\n var allValid = true;\r\n var data = {};\r\n if (Array.isArray(values$$1)) {\r\n allValid = values$$1.every(function (t) { return (isObject(t) ? t.valid : t); });\r\n } else { // Is a single object/boolean.\r\n allValid = isObject(values$$1) ? values$$1.valid : values$$1;\r\n data = values$$1.data;\r\n }\r\n\r\n return {\r\n valid: allValid,\r\n errors: allValid ? [] : [this$1._createFieldError(field, rule, data, targetName)]\r\n };\r\n });\r\n }\r\n\r\n if (!isObject(result)) {\r\n result = { valid: result, data: {} };\r\n }\r\n\r\n return {\r\n valid: result.valid,\r\n errors: result.valid ? [] : [this._createFieldError(field, rule, result.data, targetName)]\r\n };\r\n};\r\n\r\n/**\r\n * Merges a validator object into the RULES and Messages.\r\n */\r\nValidator._merge = function _merge (name, ref) {\n var validator = ref.validator;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\r\n var validate = isCallable(validator) ? validator : validator.validate;\r\n if (validator.getMessage) {\r\n VeeValidate$1.i18nDriver.setMessage(Validator.locale, name, validator.getMessage);\r\n }\r\n\r\n RuleContainer.add(name, {\r\n validate: validate,\r\n options: options,\r\n paramNames: paramNames\r\n });\r\n};\r\n\r\n/**\r\n * Guards from extension violations.\r\n */\r\nValidator._guardExtend = function _guardExtend (name, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n\r\n if (!isCallable(validator.validate)) {\r\n throw createError(\r\n (\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\")\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * Creates a Field Error Object.\r\n */\r\nValidator.prototype._createFieldError = function _createFieldError (field, rule, data, targetName) {\n var this$1 = this;\n\r\n return {\r\n id: field.id,\r\n vmId: field.vmId,\r\n field: field.name,\r\n msg: this._formatErrorMessage(field, rule, data, targetName),\r\n rule: rule.name,\r\n scope: field.scope,\r\n regenerate: function () {\r\n return this$1._formatErrorMessage(field, rule, data, targetName);\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Tries different strategies to find a field.\r\n */\r\nValidator.prototype._resolveField = function _resolveField (name, scope, uid) {\r\n if (name[0] === '#') {\r\n return this.fields.find({ id: name.slice(1) });\r\n }\r\n\r\n if (!isNullOrUndefined(scope)) {\r\n return this.fields.find({ name: name, scope: scope, vmId: uid });\r\n }\r\n\r\n if (includes(name, '.')) {\r\n var ref = name.split('.');\n var fieldScope = ref[0];\n var fieldName = ref.slice(1);\r\n var field = this.fields.find({ name: fieldName.join('.'), scope: fieldScope, vmId: uid });\r\n if (field) {\r\n return field;\r\n }\r\n }\r\n\r\n return this.fields.find({ name: name, scope: null, vmId: uid });\r\n};\r\n\r\n/**\r\n * Handles when a field is not found.\r\n */\r\nValidator.prototype._handleFieldNotFound = function _handleFieldNotFound (name, scope) {\r\n var fullName = isNullOrUndefined(scope) ? name : (\"\" + (!isNullOrUndefined(scope) ? scope + '.' : '') + name);\r\n\r\n return Promise.reject(createError(\r\n (\"Validating a non-existent field: \\\"\" + fullName + \"\\\". Use \\\"attach()\\\" first.\")\r\n ));\r\n};\r\n\r\n/**\r\n * Handles validation results.\r\n */\r\nValidator.prototype._handleValidationResults = function _handleValidationResults (results, vmId) {\n var this$1 = this;\n\r\n var matchers = results.map(function (result) { return ({ id: result.id }); });\r\n this.errors.removeById(matchers.map(function (m) { return m.id; }));\r\n // remove by name and scope to remove any custom errors added.\r\n results.forEach(function (result) {\r\n this$1.errors.remove(result.field, result.scope, vmId);\r\n });\r\n var allErrors = results.reduce(function (prev, curr) {\r\n prev.push.apply(prev, curr.errors);\r\n\r\n return prev;\r\n }, []);\r\n\r\n this.errors.add(allErrors);\r\n\r\n // handle flags.\r\n this.fields.filter(matchers).forEach(function (field) {\r\n var result = find(results, function (r) { return r.id === field.id; });\r\n field.setFlags({\r\n pending: false,\r\n valid: result.valid,\r\n validated: true\r\n });\r\n });\r\n};\r\n\r\nValidator.prototype._shouldSkip = function _shouldSkip (field, value) {\r\n // field is configured to run through the pipeline regardless\r\n if (field.bails === false) {\r\n return false;\r\n }\r\n\r\n // disabled fields are skipped\r\n if (field.isDisabled) {\r\n return true;\r\n }\r\n\r\n // skip if the field is not required and has an empty value.\r\n return !field.isRequired && (isNullOrUndefined(value) || value === '' || isEmptyArray(value));\r\n};\r\n\r\nValidator.prototype._shouldBail = function _shouldBail (field) {\r\n // if the field was configured explicitly.\r\n if (field.bails !== undefined) {\r\n return field.bails;\r\n }\r\n\r\n return this.fastExit;\r\n};\r\n\r\n/**\r\n * Starts the validation process.\r\n */\r\nValidator.prototype._validate = function _validate (field, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var initial = ref.initial;\n\r\n if (this._shouldSkip(field, value)) {\r\n return Promise.resolve({ valid: true, id: field.id, field: field.name, scope: field.scope, errors: [] });\r\n }\r\n\r\n var promises = [];\r\n var errors = [];\r\n var isExitEarly = false;\r\n // use of '.some()' is to break iteration in middle by returning true\r\n Object.keys(field.rules).filter(function (rule) {\r\n if (!initial || !RuleContainer.has(rule)) { return true; }\r\n\r\n return RuleContainer.isImmediate(rule);\r\n }).some(function (rule) {\r\n var ruleOptions = RuleContainer.getOptions(rule);\r\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\r\n if (isCallable(result.then)) {\r\n promises.push(result);\r\n } else if (!result.valid && this$1._shouldBail(field)) {\r\n errors.push.apply(errors, result.errors);\r\n isExitEarly = true;\r\n } else {\r\n // promisify the result.\r\n promises.push(new Promise(function (resolve) { return resolve(result); }));\r\n }\r\n\r\n return isExitEarly;\r\n });\r\n\r\n if (isExitEarly) {\r\n return Promise.resolve({ valid: false, errors: errors, id: field.id, field: field.name, scope: field.scope });\r\n }\r\n\r\n return Promise.all(promises).then(function (results) {\r\n return results.reduce(function (prev, v) {\n var ref;\n\r\n if (!v.valid) {\r\n (ref = prev.errors).push.apply(ref, v.errors);\r\n }\r\n\r\n prev.valid = prev.valid && v.valid;\r\n\r\n return prev;\r\n }, { valid: true, errors: errors, id: field.id, field: field.name, scope: field.scope });\r\n });\r\n};\n\nObject.defineProperties( Validator.prototype, prototypeAccessors$4 );\nObject.defineProperties( Validator, staticAccessors$1 );\n\n// \r\n\r\nvar normalize = function (fields) {\r\n if (Array.isArray(fields)) {\r\n return fields.reduce(function (prev, curr) {\r\n if (includes(curr, '.')) {\r\n prev[curr.split('.')[1]] = curr;\r\n } else {\r\n prev[curr] = curr;\r\n }\r\n\r\n return prev;\r\n }, {});\r\n }\r\n\r\n return fields;\r\n};\r\n\r\n// Combines two flags using either AND or OR depending on the flag type.\r\nvar combine = function (lhs, rhs) {\r\n var mapper = {\r\n pristine: function (lhs, rhs) { return lhs && rhs; },\r\n dirty: function (lhs, rhs) { return lhs || rhs; },\r\n touched: function (lhs, rhs) { return lhs || rhs; },\r\n untouched: function (lhs, rhs) { return lhs && rhs; },\r\n valid: function (lhs, rhs) { return lhs && rhs; },\r\n invalid: function (lhs, rhs) { return lhs || rhs; },\r\n pending: function (lhs, rhs) { return lhs || rhs; },\r\n required: function (lhs, rhs) { return lhs || rhs; },\r\n validated: function (lhs, rhs) { return lhs && rhs; }\r\n };\r\n\r\n return Object.keys(mapper).reduce(function (flags, flag) {\r\n flags[flag] = mapper[flag](lhs[flag], rhs[flag]);\r\n\r\n return flags;\r\n }, {});\r\n};\r\n\r\nvar mapScope = function (scope, deep) {\n if ( deep === void 0 ) deep = true;\n\r\n return Object.keys(scope).reduce(function (flags, field) {\r\n if (!flags) {\r\n flags = assign({}, scope[field]);\r\n return flags;\r\n }\r\n\r\n // scope.\r\n var isScope = field.indexOf('$') === 0;\r\n if (deep && isScope) {\r\n return combine(mapScope(scope[field]), flags);\r\n } else if (!deep && isScope) {\r\n return flags;\r\n }\r\n\r\n flags = combine(flags, scope[field]);\r\n\r\n return flags;\r\n }, null);\r\n};\r\n\r\n/**\r\n * Maps fields to computed functions.\r\n */\r\nvar mapFields = function (fields) {\r\n if (!fields) {\r\n return function () {\r\n return mapScope(this.$validator.flags);\r\n };\r\n }\r\n\r\n var normalized = normalize(fields);\r\n return Object.keys(normalized).reduce(function (prev, curr) {\r\n var field = normalized[curr];\r\n prev[curr] = function mappedField () {\r\n // if field exists\r\n if (this.$validator.flags[field]) {\r\n return this.$validator.flags[field];\r\n }\r\n\r\n // scopeless fields were selected.\r\n if (normalized[curr] === '*') {\r\n return mapScope(this.$validator.flags, false);\r\n }\r\n\r\n // if it has a scope defined\r\n var index = field.indexOf('.');\r\n if (index <= 0) {\r\n return {};\r\n }\r\n\r\n var ref = field.split('.');\n var scope = ref[0];\n var name = ref.slice(1);\r\n\r\n scope = this.$validator.flags[(\"$\" + scope)];\r\n name = name.join('.');\r\n\r\n // an entire scope was selected: scope.*\r\n if (name === '*' && scope) {\r\n return mapScope(scope);\r\n }\r\n\r\n if (scope && scope[name]) {\r\n return scope[name];\r\n }\r\n\r\n return {};\r\n };\r\n\r\n return prev;\r\n }, {});\r\n};\n\nvar $validator = null;\r\n\r\nvar PROVIDER_COUNTER = 0;\r\n\r\nfunction createValidationCtx (ctx) {\r\n return {\r\n errors: ctx.messages,\r\n flags: ctx.flags,\r\n classes: ctx.classes,\r\n valid: ctx.isValid,\r\n reset: function () { return ctx.reset(); },\r\n validate: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return ctx.validate.apply(ctx, args);\n },\r\n aria: {\r\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\r\n 'aria-required': ctx.isRequired ? 'true' : 'false'\r\n }\r\n };\r\n}\r\n\r\nfunction onRenderUpdate (model) {\n var this$1 = this;\n\r\n var validateNow = this.value !== model.value || this._needsValidation;\r\n var shouldRevalidate = this.flags.validated;\r\n if (!this.initialized) {\r\n this.initialValue = model.value;\r\n }\r\n\r\n if (!this.initialized && model.value === undefined) {\r\n validateNow = true;\r\n }\r\n\r\n if (validateNow) {\r\n var silentHandler = function (ref) {\n var valid = ref.valid;\n\r\n // initially assign the valid/invalid flags.\r\n this$1.setFlags({\r\n valid: valid,\r\n invalid: !valid\r\n });\r\n };\r\n\r\n this.value = model.value;\r\n this.validateSilent().then(this.immediate || shouldRevalidate ? this.applyResult : silentHandler);\r\n }\r\n\r\n this._needsValidation = false;\r\n}\r\n\r\n// Creates the common handlers for a validatable context.\r\nfunction createCommonHandlers (ctx) {\r\n var onInput = function (e) {\r\n ctx.syncValue(e); // track and keep the value updated.\r\n ctx.setFlags({ dirty: true, pristine: false });\r\n };\r\n\r\n // Blur event listener.\r\n var onBlur = function () {\r\n ctx.setFlags({ touched: true, untouched: false });\r\n };\r\n\r\n var onValidate = debounce(\r\n function () {\r\n var pendingPromise = ctx.validate();\r\n // avoids race conditions between successive validations.\r\n ctx._waiting = pendingPromise;\r\n pendingPromise.then(function (result) {\r\n if (pendingPromise === ctx._waiting) {\r\n ctx.applyResult(result);\r\n ctx._waiting = null;\r\n }\r\n });\r\n },\r\n ctx.debounce\r\n );\r\n\r\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\r\n}\r\n\r\n// Adds all plugin listeners to the vnode.\r\nfunction addListeners (node) {\r\n var model = findModel(node);\r\n // cache the input eventName.\r\n this._inputEventName = this._inputEventName || getInputEventName(node, model);\r\n\r\n onRenderUpdate.call(this, model);\r\n\r\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\r\n addVNodeListener(node, this._inputEventName, onInput);\r\n addVNodeListener(node, 'blur', onBlur);\r\n\r\n // add the validation listeners.\r\n this.normalizedEvents.forEach(function (evt) {\r\n addVNodeListener(node, evt, onValidate);\r\n });\r\n\r\n this.initialized = true;\r\n}\r\n\r\nfunction createValuesLookup (ctx) {\r\n var providers = ctx.$_veeObserver.refs;\r\n\r\n return ctx.fieldDeps.reduce(function (acc, depName) {\r\n if (!providers[depName]) {\r\n return acc;\r\n }\r\n\r\n acc[depName] = providers[depName].value;\r\n\r\n return acc;\r\n }, {});\r\n}\r\n\r\nfunction updateRenderingContextRefs (ctx) {\r\n // IDs should not be nullable.\r\n if (isNullOrUndefined(ctx.id) && ctx.id === ctx.vid) {\r\n ctx.id = PROVIDER_COUNTER;\r\n PROVIDER_COUNTER++;\r\n }\r\n\r\n var id = ctx.id;\n var vid = ctx.vid;\r\n // Nothing has changed.\r\n if (id === vid && ctx.$_veeObserver.refs[id]) {\r\n return;\r\n }\r\n\r\n // vid was changed.\r\n if (id !== vid && ctx.$_veeObserver.refs[id] === ctx) {\r\n ctx.$_veeObserver.$unsubscribe(ctx);\r\n }\r\n\r\n ctx.$_veeObserver.$subscribe(ctx);\r\n ctx.id = vid;\r\n}\r\n\r\nfunction createObserver () {\r\n return {\r\n refs: {},\r\n $subscribe: function $subscribe (ctx) {\r\n this.refs[ctx.vid] = ctx;\r\n },\r\n $unsubscribe: function $unsubscribe (ctx) {\r\n delete this.refs[ctx.vid];\r\n }\r\n };\r\n}\r\n\r\nvar ValidationProvider = {\r\n $__veeInject: false,\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function default$1 () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n this.$vnode.context.$_veeObserver = createObserver();\r\n }\r\n\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n vid: {\r\n type: [String, Number],\r\n default: function () {\r\n PROVIDER_COUNTER++;\r\n\r\n return PROVIDER_COUNTER;\r\n }\r\n },\r\n name: {\r\n type: String,\r\n default: null\r\n },\r\n events: {\r\n type: [Array, String],\r\n default: function () { return ['input']; }\r\n },\r\n rules: {\r\n type: [Object, String],\r\n default: null\r\n },\r\n immediate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: function () { return VeeValidate$1.config.fastExit; }\r\n },\r\n debounce: {\r\n type: Number,\r\n default: function () { return VeeValidate$1.config.delay || 0; }\r\n }\r\n },\r\n watch: {\r\n rules: {\r\n deep: true,\r\n handler: function handler () {\r\n this._needsValidation = true;\r\n }\r\n }\r\n },\r\n data: function () { return ({\r\n messages: [],\r\n value: undefined,\r\n initialized: false,\r\n initialValue: undefined,\r\n flags: createFlags(),\r\n id: null\r\n }); },\r\n methods: {\r\n setFlags: function setFlags (flags) {\n var this$1 = this;\n\r\n Object.keys(flags).forEach(function (flag) {\r\n this$1.flags[flag] = flags[flag];\r\n });\r\n },\r\n syncValue: function syncValue (e) {\r\n var value = isEvent(e) ? e.target.value : e;\r\n\r\n this.value = value;\r\n this.flags.changed = this.initialValue === value;\r\n },\r\n reset: function reset () {\r\n this.messages = [];\r\n this._waiting = null;\r\n this.initialValue = this.value;\r\n var flags = createFlags();\r\n this.setFlags(flags);\r\n },\r\n validate: function validate () {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\r\n if (args[0]) {\r\n this.syncValue(args[0]);\r\n }\r\n\r\n return this.validateSilent().then(function (result) {\r\n this$1.applyResult(result);\r\n\r\n return result;\r\n });\r\n },\r\n validateSilent: function validateSilent () {\n var this$1 = this;\n\r\n this.setFlags({ pending: true });\r\n\r\n return $validator.verify(this.value, this.rules, {\r\n name: this.name,\r\n values: createValuesLookup(this),\r\n bails: this.bails\r\n }).then(function (result) {\r\n this$1.setFlags({ pending: false });\r\n\r\n return result;\r\n });\r\n },\r\n applyResult: function applyResult (ref) {\n var errors = ref.errors;\n\r\n this.messages = errors;\r\n this.setFlags({\r\n valid: !errors.length,\r\n changed: this.value !== this.initialValue,\r\n invalid: !!errors.length,\r\n validated: true\r\n });\r\n },\r\n registerField: function registerField () {\r\n if (!$validator) {\r\n /* istanbul ignore next */\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!VeeValidate$1.instance) {\r\n warn('You must install vee-validate first before using this component.');\r\n }\r\n }\r\n\r\n $validator = VeeValidate$1.instance._validator;\r\n }\r\n\r\n updateRenderingContextRefs(this);\r\n }\r\n },\r\n computed: {\r\n isValid: function isValid () {\r\n return this.flags.valid;\r\n },\r\n fieldDeps: function fieldDeps () {\n var this$1 = this;\n\r\n var rules = normalizeRules(this.rules);\r\n var providers = this.$_veeObserver.refs;\r\n\r\n return Object.keys(rules).filter(RuleContainer.isTargetRule).map(function (rule) {\r\n var depName = rules[rule][0];\r\n var watcherName = \"$__\" + depName;\r\n if (!isCallable(this$1[watcherName])) {\r\n this$1[watcherName] = providers[depName].$watch('value', function () {\r\n this$1.validate();\r\n });\r\n }\r\n\r\n return depName;\r\n });\r\n },\r\n normalizedEvents: function normalizedEvents () {\n var this$1 = this;\n\r\n return normalizeEvents(this.events).map(function (e) {\r\n if (e === 'input') {\r\n return this$1._inputEventName;\r\n }\r\n\r\n return e;\r\n });\r\n },\r\n isRequired: function isRequired () {\r\n var rules = normalizeRules(this.rules);\r\n\r\n return !!rules.required;\r\n },\r\n classes: function classes () {\n var this$1 = this;\n\r\n var names = VeeValidate$1.config.classNames;\r\n return Object.keys(this.flags).reduce(function (classes, flag) {\r\n var className = (names && names[flag]) || flag;\r\n if (flag === 'invalid') {\r\n classes[className] = !!this$1.messages.length;\r\n\r\n return classes;\r\n }\r\n\r\n if (flag === 'valid') {\r\n classes[className] = !this$1.messages.length;\r\n\r\n return classes;\r\n }\r\n\r\n if (className) {\r\n classes[className] = this$1.flags[flag];\r\n }\r\n\r\n return classes;\r\n }, {});\r\n }\r\n },\r\n render: function render (h) {\n var this$1 = this;\n\r\n this.registerField();\r\n var ctx = createValidationCtx(this);\r\n\r\n // Gracefully handle non-existent scoped slots.\r\n var slot = this.$scopedSlots.default;\r\n if (!isCallable(slot)) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn('ValidationProvider expects a scoped slot. Did you forget to add \"slot-scope\" to your slot?');\r\n }\r\n\r\n return createRenderless(h, this.$slots.default);\r\n }\r\n\r\n var nodes = slot(ctx);\r\n // Handle single-root slot.\r\n extractVNodes(nodes).forEach(function (input) {\r\n addListeners.call(this$1, input);\r\n });\r\n\r\n return createRenderless(h, nodes);\r\n },\r\n beforeDestroy: function beforeDestroy () {\r\n // cleanup reference.\r\n this.$_veeObserver.$unsubscribe(this);\r\n }\r\n};\n\nvar flagMergingStrategy = {\r\n pristine: 'every',\r\n dirty: 'some',\r\n touched: 'some',\r\n untouched: 'every',\r\n valid: 'every',\r\n invalid: 'some',\r\n pending: 'some',\r\n validated: 'every'\r\n};\r\n\r\nfunction mergeFlags (lhs, rhs, strategy) {\r\n var stratName = flagMergingStrategy[strategy];\r\n\r\n return [lhs, rhs][stratName](function (f) { return f; });\r\n}\r\n\r\nvar ValidationObserver = {\r\n name: 'ValidationObserver',\r\n provide: function provide () {\r\n return {\r\n $_veeObserver: this\r\n };\r\n },\r\n data: function () { return ({\r\n refs: {}\r\n }); },\r\n methods: {\r\n $subscribe: function $subscribe (provider) {\n var obj;\n\r\n this.refs = Object.assign({}, this.refs, ( obj = {}, obj[provider.vid] = provider, obj ));\r\n },\r\n $unsubscribe: function $unsubscribe (ref) {\n var vid = ref.vid;\n\r\n delete this.refs[vid];\r\n this.refs = Object.assign({}, this.refs);\r\n },\r\n validate: function validate () {\r\n return Promise.all(\r\n values(this.refs).map(function (ref) { return ref.validate(); })\r\n ).then(function (results) { return results.every(function (r) { return r.valid; }); });\r\n },\r\n reset: function reset () {\r\n return values(this.refs).forEach(function (ref) { return ref.reset(); });\r\n }\r\n },\r\n computed: {\r\n ctx: function ctx () {\n var this$1 = this;\n\r\n var ctx = {\r\n errors: {},\r\n validate: function () {\r\n var promise = this$1.validate();\r\n\r\n return {\r\n then: function then (thenable) {\r\n promise.then(function (success) {\r\n if (success && isCallable(thenable)) {\r\n return Promise.resolve(thenable());\r\n }\r\n\r\n return Promise.resolve(success);\r\n });\r\n }\r\n };\r\n },\r\n reset: function () { return this$1.reset(); }\r\n };\r\n\r\n return values(this.refs).reduce(function (acc, provider) {\r\n Object.keys(flagMergingStrategy).forEach(function (flag) {\r\n if (!(flag in acc)) {\r\n acc[flag] = provider.flags[flag];\r\n return;\r\n }\r\n\r\n acc[flag] = mergeFlags(acc[flag], provider.flags[flag], flag);\r\n });\r\n\r\n acc.errors[provider.vid] = provider.messages;\r\n\r\n return acc;\r\n }, ctx);\r\n }\r\n },\r\n render: function render (h) {\r\n var slots = this.$scopedSlots.default;\r\n if (!isCallable(slots)) {\r\n return createRenderless(h, this.$slots.default);\r\n }\r\n\r\n return createRenderless(h, slots(this.ctx));\r\n }\r\n};\n\nfunction withValidation (component, ctxToProps) {\n if ( ctxToProps === void 0 ) ctxToProps = null;\n\r\n var options = isCallable(component) ? component.options : component;\r\n options.$__veeInject = false;\r\n var hoc = {\r\n name: ((options.name || 'AnonymousHoc') + \"WithValidation\"),\r\n props: assign({}, ValidationProvider.props),\r\n data: ValidationProvider.data,\r\n computed: assign({}, ValidationProvider.computed),\r\n methods: assign({}, ValidationProvider.methods),\r\n $__veeInject: false,\r\n beforeDestroy: ValidationProvider.beforeDestroy,\r\n inject: ValidationProvider.inject\r\n };\r\n\r\n // Default ctx converts ctx props to component props.\r\n if (!ctxToProps) {\r\n ctxToProps = function (ctx) { return ctx; };\r\n }\r\n\r\n var eventName = (options.model && options.model.event) || 'input';\r\n\r\n hoc.render = function (h) {\n var obj;\n\r\n this.registerField();\r\n var vctx = createValidationCtx(this);\r\n var listeners = assign({}, this.$listeners);\r\n\r\n var model = findModel(this.$vnode);\r\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\r\n onRenderUpdate.call(this, model);\r\n\r\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\r\n\r\n mergeVNodeListeners(listeners, eventName, onInput);\r\n mergeVNodeListeners(listeners, 'blur', onBlur);\r\n this.normalizedEvents.forEach(function (evt, idx) {\r\n mergeVNodeListeners(listeners, evt, onValidate);\r\n });\r\n\r\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\r\n // WARNING: Accidental prop overwrite will probably happen.\r\n var ref$1 = findModelConfig(this.$vnode) || { prop: 'value' };\n var prop = ref$1.prop;\r\n var props = assign({}, this.$attrs, ( obj = {}, obj[prop] = model.value, obj ), ctxToProps(vctx));\r\n\r\n return h(options, {\r\n attrs: this.$attrs,\r\n props: props,\r\n on: listeners\r\n }, normalizeSlots(this.$slots, this.$vnode.context));\r\n };\r\n\r\n return hoc;\r\n}\n\n// \r\n\r\nvar normalizeValue = function (value) {\r\n if (isObject(value)) {\r\n return Object.keys(value).reduce(function (prev, key) {\r\n prev[key] = normalizeValue(value[key]);\r\n\r\n return prev;\r\n }, {});\r\n }\r\n\r\n if (isCallable(value)) {\r\n return value('{0}', ['{1}', '{2}', '{3}']);\r\n }\r\n\r\n return value;\r\n};\r\n\r\nvar normalizeFormat = function (locale) {\r\n // normalize messages\r\n var dictionary = {};\r\n if (locale.messages) {\r\n dictionary.messages = normalizeValue(locale.messages);\r\n }\r\n\r\n if (locale.custom) {\r\n dictionary.custom = normalizeValue(locale.custom);\r\n }\r\n\r\n if (locale.attributes) {\r\n dictionary.attributes = locale.attributes;\r\n }\r\n\r\n if (!isNullOrUndefined(locale.dateFormat)) {\r\n dictionary.dateFormat = locale.dateFormat;\r\n }\r\n\r\n return dictionary;\r\n};\r\n\r\nvar I18nDictionary = function I18nDictionary (i18n, rootKey) {\r\n this.i18n = i18n;\r\n this.rootKey = rootKey;\r\n};\n\nvar prototypeAccessors$5 = { locale: { configurable: true } };\r\n\r\nprototypeAccessors$5.locale.get = function () {\r\n return this.i18n.locale;\r\n};\r\n\r\nprototypeAccessors$5.locale.set = function (value) {\r\n warn('Cannot set locale from the validator when using vue-i18n, use i18n.locale setter instead');\r\n};\r\n\r\nI18nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\r\n return this.i18n.getDateTimeFormat(locale || this.locale);\r\n};\r\n\r\nI18nDictionary.prototype.setDateFormat = function setDateFormat (locale, value) {\r\n this.i18n.setDateTimeFormat(locale || this.locale, value);\r\n};\r\n\r\nI18nDictionary.prototype.getMessage = function getMessage (_, key, data) {\r\n var path = (this.rootKey) + \".messages.\" + key;\r\n if (this.i18n.te(path)) {\r\n return this.i18n.t(path, data);\r\n }\r\n\r\n // fallback to the fallback message\r\n if (this.i18n.te(path, this.i18n.fallbackLocale)) {\r\n return this.i18n.t(path, this.i18n.fallbackLocale, data);\r\n }\r\n\r\n // fallback to the root message\r\n return this.i18n.t(((this.rootKey) + \".messages._default\"), data);\r\n};\r\n\r\nI18nDictionary.prototype.getAttribute = function getAttribute (_, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\r\n var path = (this.rootKey) + \".attributes.\" + key;\r\n if (this.i18n.te(path)) {\r\n return this.i18n.t(path);\r\n }\r\n\r\n return fallback;\r\n};\r\n\r\nI18nDictionary.prototype.getFieldMessage = function getFieldMessage (_, field, key, data) {\r\n var path = (this.rootKey) + \".custom.\" + field + \".\" + key;\r\n if (this.i18n.te(path)) {\r\n return this.i18n.t(path, data);\r\n }\r\n\r\n return this.getMessage(_, key, data);\r\n};\r\n\r\nI18nDictionary.prototype.merge = function merge$1 (dictionary) {\n var this$1 = this;\n\r\n Object.keys(dictionary).forEach(function (localeKey) {\n var obj;\n\r\n // i18n doesn't deep merge\r\n // first clone the existing locale (avoid mutations to locale)\r\n var clone = merge({}, getPath((localeKey + \".\" + (this$1.rootKey)), this$1.i18n.messages, {}));\r\n // Merge cloned locale with new one\r\n var locale = merge(clone, normalizeFormat(dictionary[localeKey]));\r\n this$1.i18n.mergeLocaleMessage(localeKey, ( obj = {}, obj[this$1.rootKey] = locale, obj ));\r\n if (locale.dateFormat) {\r\n this$1.i18n.setDateTimeFormat(localeKey, locale.dateFormat);\r\n }\r\n });\r\n};\r\n\r\nI18nDictionary.prototype.setMessage = function setMessage (locale, key, value) {\n var obj, obj$1;\n\r\n this.merge(( obj$1 = {}, obj$1[locale] = {\r\n messages: ( obj = {}, obj[key] = value, obj )\r\n }, obj$1 ));\r\n};\r\n\r\nI18nDictionary.prototype.setAttribute = function setAttribute (locale, key, value) {\n var obj, obj$1;\n\r\n this.merge(( obj$1 = {}, obj$1[locale] = {\r\n attributes: ( obj = {}, obj[key] = value, obj )\r\n }, obj$1 ));\r\n};\n\nObject.defineProperties( I18nDictionary.prototype, prototypeAccessors$5 );\n\n// \r\n\r\nvar defaultConfig = {\r\n locale: 'en',\r\n delay: 0,\r\n errorBagName: 'errors',\r\n dictionary: null,\r\n fieldsBagName: 'fields',\r\n classes: false,\r\n classNames: null,\r\n events: 'input',\r\n inject: true,\r\n fastExit: true,\r\n aria: true,\r\n validity: false,\r\n i18n: null,\r\n i18nRootKey: 'validation'\r\n};\r\n\r\nvar Vue;\r\nvar pendingPlugins;\r\nvar currentConfig = assign({}, defaultConfig);\r\nvar pluginInstance;\r\n\r\nvar VeeValidate$1 = function VeeValidate (config, _Vue) {\r\n this.configure(config);\r\n pluginInstance = this;\r\n if (_Vue) {\r\n Vue = _Vue;\r\n }\r\n this._validator = new Validator(null, { fastExit: config && config.fastExit });\r\n this._initVM(this.config);\r\n this._initI18n(this.config);\r\n};\n\nvar prototypeAccessors$6 = { i18nDriver: { configurable: true },config: { configurable: true } };\nvar staticAccessors$2 = { instance: { configurable: true },i18nDriver: { configurable: true },config: { configurable: true } };\r\n\r\nVeeValidate$1.setI18nDriver = function setI18nDriver (driver, instance) {\r\n DictionaryResolver.setDriver(driver, instance);\r\n};\r\n\r\nVeeValidate$1.configure = function configure (cfg) {\r\n currentConfig = assign({}, currentConfig, cfg);\r\n};\r\n\r\nVeeValidate$1.use = function use (plugin, options) {\n if ( options === void 0 ) options = {};\n\r\n if (!isCallable(plugin)) {\r\n return warn('The plugin must be a callable function');\r\n }\r\n\r\n // Don't install plugins until vee-validate is installed.\r\n if (!pluginInstance) {\r\n if (!pendingPlugins) {\r\n pendingPlugins = [];\r\n }\r\n pendingPlugins.push({ plugin: plugin, options: options });\r\n return;\r\n }\r\n\r\n plugin({ Validator: Validator, ErrorBag: ErrorBag, Rules: Validator.rules }, options);\r\n};\r\nVeeValidate$1.install = function install (_Vue, opts) {\r\n if (Vue && _Vue === Vue) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n warn('already installed, Vue.use(VeeValidate) should only be called once.');\r\n }\r\n return;\r\n }\r\n\r\n Vue = _Vue;\r\n pluginInstance = new VeeValidate$1(opts);\r\n\r\n detectPassiveSupport();\r\n\r\n Vue.mixin(mixin);\r\n Vue.directive('validate', directive);\r\n if (pendingPlugins) {\r\n pendingPlugins.forEach(function (ref) {\n var plugin = ref.plugin;\n var options = ref.options;\n\r\n VeeValidate$1.use(plugin, options);\r\n });\r\n pendingPlugins = null;\r\n }\r\n};\r\n\r\nstaticAccessors$2.instance.get = function () {\r\n return pluginInstance;\r\n};\r\n\r\nprototypeAccessors$6.i18nDriver.get = function () {\r\n return DictionaryResolver.getDriver();\r\n};\r\n\r\nstaticAccessors$2.i18nDriver.get = function () {\r\n return DictionaryResolver.getDriver();\r\n};\r\n\r\nprototypeAccessors$6.config.get = function () {\r\n return currentConfig;\r\n};\r\n\r\nstaticAccessors$2.config.get = function () {\r\n return currentConfig;\r\n};\r\n\r\nVeeValidate$1.prototype._initVM = function _initVM (config) {\n var this$1 = this;\n\r\n this._vm = new Vue({\r\n data: function () { return ({\r\n errors: this$1._validator.errors,\r\n fields: this$1._validator.fields\r\n }); }\r\n });\r\n};\r\n\r\nVeeValidate$1.prototype._initI18n = function _initI18n (config) {\n var this$1 = this;\n\r\n var dictionary = config.dictionary;\n var i18n = config.i18n;\n var i18nRootKey = config.i18nRootKey;\n var locale = config.locale;\r\n var onLocaleChanged = function () {\r\n this$1._validator.errors.regenerate();\r\n };\r\n\r\n // i18 is being used for localization.\r\n if (i18n) {\r\n VeeValidate$1.setI18nDriver('i18n', new I18nDictionary(i18n, i18nRootKey));\r\n i18n._vm.$watch('locale', onLocaleChanged);\r\n } else if (typeof window !== 'undefined') {\r\n this._vm.$on('localeChanged', onLocaleChanged);\r\n }\r\n\r\n if (dictionary) {\r\n this.i18nDriver.merge(dictionary);\r\n }\r\n\r\n if (locale && !i18n) {\r\n this._validator.localize(locale);\r\n }\r\n};\r\n\r\nVeeValidate$1.prototype.configure = function configure (cfg) {\r\n VeeValidate$1.configure(cfg);\r\n};\r\n\r\nVeeValidate$1.prototype.resolveConfig = function resolveConfig (ctx) {\r\n var selfConfig = getPath('$options.$_veeValidate', ctx, {});\r\n\r\n return assign({}, this.config, selfConfig);\r\n};\n\nObject.defineProperties( VeeValidate$1.prototype, prototypeAccessors$6 );\nObject.defineProperties( VeeValidate$1, staticAccessors$2 );\r\n\r\nVeeValidate$1.version = '2.1.5';\r\nVeeValidate$1.mixin = mixin;\r\nVeeValidate$1.directive = directive;\r\nVeeValidate$1.Validator = Validator;\r\nVeeValidate$1.ErrorBag = ErrorBag;\r\nVeeValidate$1.mapFields = mapFields;\r\nVeeValidate$1.ValidationProvider = ValidationProvider;\r\nVeeValidate$1.ValidationObserver = ValidationObserver;\r\nVeeValidate$1.withValidation = withValidation;\n\n/**\r\n * Formates file size.\r\n *\r\n * @param {Number|String} size\r\n */\r\nvar formatFileSize = function (size) {\r\n var units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n var threshold = 1024;\r\n size = Number(size) * threshold;\r\n var i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold));\r\n return (((size / Math.pow(threshold, i)).toFixed(2) * 1) + \" \" + (units[i]));\r\n};\r\n\r\n/**\r\n * Checks if vee-validate is defined globally.\r\n */\r\nvar isDefinedGlobally = function () {\r\n return typeof VeeValidate !== 'undefined';\r\n};\n\nvar obj;\n\r\nvar messages = {\r\n _default: function (field) { return (\"The \" + field + \" value is not valid.\"); },\r\n after: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be after \" + (inclusion ? 'or equal to ' : '') + target + \".\");\n},\r\n alpha: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters.\"); },\r\n alpha_dash: function (field) { return (\"The \" + field + \" field may contain alpha-numeric characters as well as dashes and underscores.\"); },\r\n alpha_num: function (field) { return (\"The \" + field + \" field may only contain alpha-numeric characters.\"); },\r\n alpha_spaces: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters as well as spaces.\"); },\r\n before: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be before \" + (inclusion ? 'or equal to ' : '') + target + \".\");\n},\r\n between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" field must be between \" + min + \" and \" + max + \".\");\n},\r\n confirmed: function (field) { return (\"The \" + field + \" confirmation does not match.\"); },\r\n credit_card: function (field) { return (\"The \" + field + \" field is invalid.\"); },\r\n date_between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" must be between \" + min + \" and \" + max + \".\");\n},\r\n date_format: function (field, ref) {\n var format = ref[0];\n\n return (\"The \" + field + \" must be in the format \" + format + \".\");\n},\r\n decimal: function (field, ref) {\n if ( ref === void 0 ) ref = [];\n var decimals = ref[0]; if ( decimals === void 0 ) decimals = '*';\n\n return (\"The \" + field + \" field must be numeric and may contain \" + (!decimals || decimals === '*' ? '' : decimals) + \" decimal points.\");\n},\r\n digits: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be numeric and exactly contain \" + length + \" digits.\");\n},\r\n dimensions: function (field, ref) {\n var width = ref[0];\n var height = ref[1];\n\n return (\"The \" + field + \" field must be \" + width + \" pixels by \" + height + \" pixels.\");\n},\r\n email: function (field) { return (\"The \" + field + \" field must be a valid email.\"); },\r\n excluded: function (field) { return (\"The \" + field + \" field must be a valid value.\"); },\r\n ext: function (field) { return (\"The \" + field + \" field must be a valid file.\"); },\r\n image: function (field) { return (\"The \" + field + \" field must be an image.\"); },\r\n included: function (field) { return (\"The \" + field + \" field must be a valid value.\"); },\r\n integer: function (field) { return (\"The \" + field + \" field must be an integer.\"); },\r\n ip: function (field) { return (\"The \" + field + \" field must be a valid ip address.\"); },\r\n length: function (field, ref) {\n var length = ref[0];\n var max = ref[1];\n\r\n if (max) {\r\n return (\"The \" + field + \" length must be between \" + length + \" and \" + max + \".\");\r\n }\r\n\r\n return (\"The \" + field + \" length must be \" + length + \".\");\r\n },\r\n max: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field may not be greater than \" + length + \" characters.\");\n},\r\n max_value: function (field, ref) {\n var max = ref[0];\n\n return (\"The \" + field + \" field must be \" + max + \" or less.\");\n},\r\n mimes: function (field) { return (\"The \" + field + \" field must have a valid file type.\"); },\r\n min: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be at least \" + length + \" characters.\");\n},\r\n min_value: function (field, ref) {\n var min = ref[0];\n\n return (\"The \" + field + \" field must be \" + min + \" or more.\");\n},\r\n numeric: function (field) { return (\"The \" + field + \" field may only contain numeric characters.\"); },\r\n regex: function (field) { return (\"The \" + field + \" field format is invalid.\"); },\r\n required: function (field) { return (\"The \" + field + \" field is required.\"); },\r\n size: function (field, ref) {\n var size = ref[0];\n\n return (\"The \" + field + \" size must be less than \" + (formatFileSize(size)) + \".\");\n},\r\n url: function (field) { return (\"The \" + field + \" field is not a valid URL.\"); }\r\n};\r\n\r\nvar locale = {\r\n name: 'en',\r\n messages: messages,\r\n attributes: {}\r\n};\r\n\r\nif (isDefinedGlobally()) {\r\n // eslint-disable-next-line\r\n VeeValidate.Validator.localize(( obj = {}, obj[locale.name] = locale, obj ));\r\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument is null, it is treated as an invalid date.\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {*} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {};\n\n var additionalDigits = options.additionalDigits === undefined ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument !== 'string') {\n return new Date(argument)\n }\n\n var dateStrings = splitDateString(argument);\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n\n var date = parseDate(restDateString, year);\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = new Date(timestamp + time).getTimezoneOffset();\n offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset();\n }\n\n return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimeter);\n var timeString;\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n\n var token;\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n date.setUTCFullYear(year, month);\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n date.setUTCFullYear(year, 0, dayOfYear);\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n date.setUTCFullYear(year, month, day);\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token;\n var absoluteOffset;\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0\n }\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10);\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n var amount = Number(dirtyAmount);\n return new Date(timestamp + amount)\n}\n\nfunction cloneObject (dirtyObject) {\n dirtyObject = dirtyObject || {};\n var object = {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n object[property] = dirtyObject[property];\n }\n }\n\n return object\n}\n\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE$2, dirtyOptions)\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n return !isNaN(date)\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nfunction formatDistance (token, count, options) {\n options = options || {};\n\n var result;\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n\nvar tokensToBeShortedPattern = /MMMM|MM|DD|dddd/g;\n\nfunction buildShortLongFormat (format) {\n return format.replace(tokensToBeShortedPattern, function (token) {\n return token.slice(1)\n })\n}\n\n/**\n * @name buildFormatLongFn\n * @category Locale Helpers\n * @summary Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n *\n * @description\n * Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n * Returns a function which takes one of the following tokens as the argument:\n * `'LTS'`, `'LT'`, `'L'`, `'LL'`, `'LLL'`, `'l'`, `'ll'`, `'lll'`, `'llll'`\n * and returns a long format string written as `format` token strings.\n * See [format]{@link https://date-fns.org/docs/format}\n *\n * `'l'`, `'ll'`, `'lll'` and `'llll'` formats are built automatically\n * by shortening some of the tokens from corresponding unshortened formats\n * (e.g., if `LL` is `'MMMM DD YYYY'` then `ll` will be `MMM D YYYY`)\n *\n * @param {Object} obj - the object with long formats written as `format` token strings\n * @param {String} obj.LT - time format: hours and minutes\n * @param {String} obj.LTS - time format: hours, minutes and seconds\n * @param {String} obj.L - short date format: numeric day, month and year\n * @param {String} [obj.l] - short date format: numeric day, month and year (shortened)\n * @param {String} obj.LL - long date format: day, month in words, and year\n * @param {String} [obj.ll] - long date format: day, month in words, and year (shortened)\n * @param {String} obj.LLL - long date and time format\n * @param {String} [obj.lll] - long date and time format (shortened)\n * @param {String} obj.LLLL - long date, time and weekday format\n * @param {String} [obj.llll] - long date, time and weekday format (shortened)\n * @returns {Function} `formatLong` property of the locale\n *\n * @example\n * // For `en-US` locale:\n * locale.formatLong = buildFormatLongFn({\n * LT: 'h:mm aa',\n * LTS: 'h:mm:ss aa',\n * L: 'MM/DD/YYYY',\n * LL: 'MMMM D YYYY',\n * LLL: 'MMMM D YYYY h:mm aa',\n * LLLL: 'dddd, MMMM D YYYY h:mm aa'\n * })\n */\nfunction buildFormatLongFn (obj) {\n var formatLongLocale = {\n LTS: obj.LTS,\n LT: obj.LT,\n L: obj.L,\n LL: obj.LL,\n LLL: obj.LLL,\n LLLL: obj.LLLL,\n l: obj.l || buildShortLongFormat(obj.L),\n ll: obj.ll || buildShortLongFormat(obj.LL),\n lll: obj.lll || buildShortLongFormat(obj.LLL),\n llll: obj.llll || buildShortLongFormat(obj.LLLL)\n };\n\n return function (token) {\n return formatLongLocale[token]\n }\n}\n\nvar formatLong = buildFormatLongFn({\n LT: 'h:mm aa',\n LTS: 'h:mm:ss aa',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D YYYY',\n LLL: 'MMMM D YYYY h:mm aa',\n LLLL: 'dddd, MMMM D YYYY h:mm aa'\n});\n\nvar formatRelativeLocale = {\n lastWeek: '[last] dddd [at] LT',\n yesterday: '[yesterday at] LT',\n today: '[today at] LT',\n tomorrow: '[tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n other: 'L'\n};\n\nfunction formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n\n/**\n * @name buildLocalizeFn\n * @category Locale Helpers\n * @summary Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale\n * used by `format` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * `localize.weekday` function takes the weekday index as argument (0 - Sunday).\n * `localize.month` takes the month index (0 - January).\n * `localize.timeOfDay` takes the hours. Use `indexCallback` to convert them to an array index (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @param {Function} [indexCallback] - the callback which takes the resulting function argument\n * and converts it into value array index\n * @returns {Function} the resulting function\n *\n * @example\n * var timeOfDayValues = {\n * uppercase: ['AM', 'PM'],\n * lowercase: ['am', 'pm'],\n * long: ['a.m.', 'p.m.']\n * }\n * locale.localize.timeOfDay = buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n * // 0 is a.m. array index, 1 is p.m. array index\n * return (hours / 12) >= 1 ? 1 : 0\n * })\n * locale.localize.timeOfDay(16, {type: 'uppercase'}) //=> 'PM'\n * locale.localize.timeOfDay(5) //=> 'a.m.'\n */\nfunction buildLocalizeFn (values, defaultType, indexCallback) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n var valuesArray = values[type] || values[defaultType];\n var index = indexCallback ? indexCallback(Number(dirtyIndex)) : Number(dirtyIndex);\n return valuesArray[index]\n }\n}\n\n/**\n * @name buildLocalizeArrayFn\n * @category Locale Helpers\n * @summary Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @returns {Function} the resulting function\n *\n * @example\n * var weekdayValues = {\n * narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n * short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n * long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n * }\n * locale.localize.weekdays = buildLocalizeArrayFn(weekdayValues, 'long')\n * locale.localize.weekdays({type: 'narrow'}) //=> ['Su', 'Mo', ...]\n * locale.localize.weekdays() //=> ['Sunday', 'Monday', ...]\n */\nfunction buildLocalizeArrayFn (values, defaultType) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n return values[type] || values[defaultType]\n }\n}\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar weekdayValues = {\n narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\n\nvar monthValues = {\n short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var timeOfDayValues = {\n// any: ['in the night', 'in the morning', 'in the afternoon', 'in the evening']\n// }\n//\n// And later:\n//\n// var localize = {\n// // The callback takes the hours as the argument and returns the array index\n// timeOfDay: buildLocalizeFn(timeOfDayValues, 'any', function (hours) {\n// if (hours >= 17) {\n// return 3\n// } else if (hours >= 12) {\n// return 2\n// } else if (hours >= 4) {\n// return 1\n// } else {\n// return 0\n// }\n// }),\n// timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'any')\n// }\nvar timeOfDayValues = {\n uppercase: ['AM', 'PM'],\n lowercase: ['am', 'pm'],\n long: ['a.m.', 'p.m.']\n};\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'month', 'quarter', 'week', 'isoWeek', 'dayOfYear',\n // 'dayOfMonth' or 'dayOfWeek'\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n weekday: buildLocalizeFn(weekdayValues, 'long'),\n weekdays: buildLocalizeArrayFn(weekdayValues, 'long'),\n month: buildLocalizeFn(monthValues, 'long'),\n months: buildLocalizeArrayFn(monthValues, 'long'),\n timeOfDay: buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n return (hours / 12) >= 1 ? 1 : 0\n }),\n timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'long')\n};\n\n/**\n * @name buildMatchFn\n * @category Locale Helpers\n * @summary Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale used by `parse` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n * The result of the match function will be passed into corresponding parser function\n * (`match.weekday`, `match.month` or `match.timeOfDay` respectively. See `buildParseFn`).\n *\n * @param {Object} values - the object with RegExps\n * @param {String} defaultType - the default type for the match function\n * @returns {Function} the resulting function\n *\n * @example\n * var matchWeekdaysPatterns = {\n * narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n * short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n * long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n * }\n * locale.match.weekdays = buildMatchFn(matchWeekdaysPatterns, 'long')\n * locale.match.weekdays('Sunday', {type: 'narrow'}) //=> ['Su', 'Su', ...]\n * locale.match.weekdays('Sunday') //=> ['Sunday', 'Sunday', ...]\n */\nfunction buildMatchFn (patterns, defaultType) {\n return function (dirtyString, dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n var pattern = patterns[type] || patterns[defaultType];\n var string = String(dirtyString);\n return string.match(pattern)\n }\n}\n\n/**\n * @name buildParseFn\n * @category Locale Helpers\n * @summary Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale used by `parse` function.\n * The argument of the resulting function is the result of the corresponding match function\n * (`match.weekdays`, `match.months` or `match.timesOfDay` respectively. See `buildMatchFn`).\n *\n * @param {Object} values - the object with arrays of RegExps\n * @param {String} defaultType - the default type for the parser function\n * @returns {Function} the resulting function\n *\n * @example\n * var parseWeekdayPatterns = {\n * any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n * }\n * locale.match.weekday = buildParseFn(matchWeekdaysPatterns, 'long')\n * var matchResult = locale.match.weekdays('Friday')\n * locale.match.weekday(matchResult) //=> 5\n */\nfunction buildParseFn (patterns, defaultType) {\n return function (matchResult, dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n var patternsArray = patterns[type] || patterns[defaultType];\n var string = matchResult[1];\n\n return patternsArray.findIndex(function (pattern) {\n return pattern.test(string)\n })\n }\n}\n\n/**\n * @name buildMatchPatternFn\n * @category Locale Helpers\n * @summary Build match function from a single RegExp.\n *\n * @description\n * Build match function from a single RegExp.\n * Usually used for building `match.ordinalNumbers` property of the locale.\n *\n * @param {Object} pattern - the RegExp\n * @returns {Function} the resulting function\n *\n * @example\n * locale.match.ordinalNumbers = buildMatchPatternFn(/^(\\d+)(th|st|nd|rd)?/i)\n * locale.match.ordinalNumbers('3rd') //=> ['3rd', '3', 'rd', ...]\n */\nfunction buildMatchPatternFn (pattern) {\n return function (dirtyString) {\n var string = String(dirtyString);\n return string.match(pattern)\n }\n}\n\n/**\n * @name parseDecimal\n * @category Locale Helpers\n * @summary Parses the match result into decimal number.\n *\n * @description\n * Parses the match result into decimal number.\n * Uses the string matched with the first set of parentheses of match RegExp.\n *\n * @param {Array} matchResult - the object returned by matching function\n * @returns {Number} the parsed value\n *\n * @example\n * locale.match = {\n * ordinalNumbers: (dirtyString) {\n * return String(dirtyString).match(/^(\\d+)(th|st|nd|rd)?/i)\n * },\n * ordinalNumber: parseDecimal\n * }\n */\nfunction parseDecimal (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n\nvar matchOrdinalNumbersPattern = /^(\\d+)(th|st|nd|rd)?/i;\n\nvar matchWeekdaysPatterns = {\n narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\n\nvar parseWeekdayPatterns = {\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\n\nvar matchMonthsPatterns = {\n short: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n long: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\n\nvar parseMonthPatterns = {\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var matchTimesOfDayPatterns = {\n// long: /^((in the)? (night|morning|afternoon|evening?))/i\n// }\n//\n// var parseTimeOfDayPatterns = {\n// any: [/(night|morning)/i, /(afternoon|evening)/i]\n// }\nvar matchTimesOfDayPatterns = {\n short: /^(am|pm)/i,\n long: /^([ap]\\.?\\s?m\\.?)/i\n};\n\nvar parseTimeOfDayPatterns = {\n any: [/^a/i, /^p/i]\n};\n\nvar match = {\n ordinalNumbers: buildMatchPatternFn(matchOrdinalNumbersPattern),\n ordinalNumber: parseDecimal,\n weekdays: buildMatchFn(matchWeekdaysPatterns, 'long'),\n weekday: buildParseFn(parseWeekdayPatterns, 'any'),\n months: buildMatchFn(matchMonthsPatterns, 'long'),\n month: buildParseFn(parseMonthPatterns, 'any'),\n timesOfDay: buildMatchFn(matchTimesOfDayPatterns, 'long'),\n timeOfDay: buildParseFn(parseTimeOfDayPatterns, 'any')\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n */\nvar locale$1 = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\n\nvar MILLISECONDS_IN_DAY$1 = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCDayOfYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY$1) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = 1;\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\n\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK$2 = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeek (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK$2) + 1\n}\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function (date) {\n return date.getUTCMonth() + 1\n },\n\n // Month: 1st, 2nd, ..., 12th\n 'Mo': function (date, options) {\n var month = date.getUTCMonth() + 1;\n return options.locale.localize.ordinalNumber(month, {unit: 'month'})\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function (date) {\n return addLeadingZeros(date.getUTCMonth() + 1, 2)\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'short'})\n },\n\n // Month: January, February, ..., December\n 'MMMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'long'})\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function (date) {\n return Math.ceil((date.getUTCMonth() + 1) / 3)\n },\n\n // Quarter: 1st, 2nd, 3rd, 4th\n 'Qo': function (date, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n return options.locale.localize.ordinalNumber(quarter, {unit: 'quarter'})\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function (date) {\n return date.getUTCDate()\n },\n\n // Day of month: 1st, 2nd, ..., 31st\n 'Do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDate(), {unit: 'dayOfMonth'})\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function (date) {\n return addLeadingZeros(date.getUTCDate(), 2)\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function (date) {\n return getUTCDayOfYear(date)\n },\n\n // Day of year: 1st, 2nd, ..., 366th\n 'DDDo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCDayOfYear(date), {unit: 'dayOfYear'})\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function (date) {\n return addLeadingZeros(getUTCDayOfYear(date), 3)\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'narrow'})\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'short'})\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'long'})\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function (date) {\n return date.getUTCDay()\n },\n\n // Day of week: 0th, 1st, 2nd, ..., 6th\n 'do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDay(), {unit: 'dayOfWeek'})\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function (date) {\n return date.getUTCDay() || 7\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function (date) {\n return getUTCISOWeek(date)\n },\n\n // ISO week: 1st, 2nd, ..., 53th\n 'Wo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCISOWeek(date), {unit: 'isoWeek'})\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function (date) {\n return addLeadingZeros(getUTCISOWeek(date), 2)\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4).substr(2)\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4)\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function (date) {\n return String(getUTCISOWeekYear(date)).substr(2)\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function (date) {\n return getUTCISOWeekYear(date)\n },\n\n // Hour: 0, 1, ... 23\n 'H': function (date) {\n return date.getUTCHours()\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function (date) {\n return addLeadingZeros(date.getUTCHours(), 2)\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function (date) {\n var hours = date.getUTCHours();\n if (hours === 0) {\n return 12\n } else if (hours > 12) {\n return hours % 12\n } else {\n return hours\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function (date) {\n return addLeadingZeros(formatters['h'](date), 2)\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function (date) {\n return date.getUTCMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function (date) {\n return addLeadingZeros(date.getUTCMinutes(), 2)\n },\n\n // Second: 0, 1, ..., 59\n 's': function (date) {\n return date.getUTCSeconds()\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function (date) {\n return addLeadingZeros(date.getUTCSeconds(), 2)\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function (date) {\n return Math.floor(date.getUTCMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function (date) {\n return addLeadingZeros(Math.floor(date.getUTCMilliseconds() / 10), 2)\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function (date) {\n return addLeadingZeros(date.getUTCMilliseconds(), 3)\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function (date, options) {\n var originalDate = options._originalDate || date;\n return formatTimezone(originalDate.getTimezoneOffset(), ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function (date, options) {\n var originalDate = options._originalDate || date;\n return formatTimezone(originalDate.getTimezoneOffset())\n },\n\n // Seconds timestamp: 512969520\n 'X': function (date, options) {\n var originalDate = options._originalDate || date;\n return Math.floor(originalDate.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function (date, options) {\n var originalDate = options._originalDate || date;\n return originalDate.getTime()\n },\n\n // AM, PM\n 'A': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'uppercase'})\n },\n\n // am, pm\n 'a': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'lowercase'})\n },\n\n // a.m., p.m.\n 'aa': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'long'})\n }\n};\n\nfunction formatTimezone (offset, delimeter) {\n delimeter = delimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return output\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction addUTCMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var amount = Number(dirtyAmount);\n date.setUTCMinutes(date.getUTCMinutes() + amount);\n return date\n}\n\nvar longFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g;\nvar defaultFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n * | Long format | LT | 05:30 a.m. |\n * | | LTS | 05:30:15 a.m. |\n * | | L | 07/02/1995 |\n * | | l | 7/2/1995 |\n * | | LL | July 2 1995 |\n * | | ll | Jul 2 1995 |\n * | | LLL | July 2 1995 05:30 a.m. |\n * | | lll | Jul 2 1995 05:30 a.m. |\n * | | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nfunction format (dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var localeFormatters = locale.formatters || {};\n var formattingTokensRegExp = locale.formattingTokensRegExp || defaultFormattingTokensRegExp;\n var formatLong = locale.formatLong;\n\n var originalDate = toDate(dirtyDate, options);\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = originalDate.getTimezoneOffset();\n var utcDate = addUTCMinutes(originalDate, -timezoneOffset, options);\n\n var formatterOptions = cloneObject(options);\n formatterOptions.locale = locale;\n formatterOptions.formatters = formatters;\n\n // When UTC functions will be implemented, options._originalDate will likely be a part of public API.\n // Right now, please don't use it in locales. If you have to use an original date,\n // please restore it from `date`, adding a timezone offset to it.\n formatterOptions._originalDate = originalDate;\n\n var result = formatStr\n .replace(longFormattingTokensRegExp, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString(substring)\n }\n\n return formatLong(substring)\n })\n .replace(formattingTokensRegExp, function (substring) {\n var formatter = localeFormatters[substring] || formatters[substring];\n\n if (formatter) {\n return formatter(utcDate, formatterOptions)\n } else {\n return cleanEscapedString(substring)\n }\n });\n\n return result\n}\n\nfunction cleanEscapedString (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the mintues subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nfunction subMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount);\n return addMinutes(dirtyDate, -amount, dirtyOptions)\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() > dateToCompare.getTime()\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() < dateToCompare.getTime()\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual$1 (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n var dateRight = toDate(dirtyRightDate, dirtyOptions);\n return dateLeft.getTime() === dateRight.getTime()\n}\n\nvar patterns$1 = {\n 'M': /^(1[0-2]|0?\\d)/, // 0 to 12\n 'D': /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n 'DDD': /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n 'W': /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n 'YYYY': /^(\\d{1,4})/, // 0 to 9999\n 'H': /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n 'm': /^([0-5]?\\d)/, // 0 to 59\n 'Z': /^([+-])(\\d{2}):(\\d{2})/,\n 'ZZ': /^([+-])(\\d{2})(\\d{2})/,\n singleDigit: /^(\\d)/,\n twoDigits: /^(\\d{2})/,\n threeDigits: /^(\\d{3})/,\n fourDigits: /^(\\d{4})/,\n anyDigits: /^(\\d+)/\n};\n\nfunction parseDecimal$1 (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n\nvar parsers = {\n // Year: 00, 01, ..., 99\n 'YY': {\n unit: 'twoDigitYear',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult)\n }\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': {\n unit: 'year',\n match: patterns$1.YYYY,\n parse: parseDecimal$1\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': {\n unit: 'isoYear',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) + 1900\n }\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': {\n unit: 'isoYear',\n match: patterns$1.YYYY,\n parse: parseDecimal$1\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': {\n unit: 'quarter',\n match: patterns$1.singleDigit,\n parse: parseDecimal$1\n },\n\n // Ordinal quarter\n 'Qo': {\n unit: 'quarter',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'quarter'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'quarter'})\n }\n },\n\n // Month: 1, 2, ..., 12\n 'M': {\n unit: 'month',\n match: patterns$1.M,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) - 1\n }\n },\n\n // Ordinal month\n 'Mo': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'month'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'month'}) - 1\n }\n },\n\n // Month: 01, 02, ..., 12\n 'MM': {\n unit: 'month',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) - 1\n }\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.month(matchResult, {type: 'short'})\n }\n },\n\n // Month: January, February, ..., December\n 'MMMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'long'}) ||\n options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.month(matchResult, {type: 'long'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.month(matchResult, {type: 'short'});\n }\n\n return parseResult\n }\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': {\n unit: 'isoWeek',\n match: patterns$1.W,\n parse: parseDecimal$1\n },\n\n // Ordinal ISO week\n 'Wo': {\n unit: 'isoWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'isoWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'isoWeek'})\n }\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': {\n unit: 'isoWeek',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': {\n unit: 'dayOfWeek',\n match: patterns$1.singleDigit,\n parse: parseDecimal$1\n },\n\n // Ordinal day of week\n 'do': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfWeek'})\n }\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'short'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'});\n }\n\n return parseResult\n }\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'long'}) ||\n options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'long'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'short'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'});\n }\n }\n\n return parseResult\n }\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': {\n unit: 'dayOfISOWeek',\n match: patterns$1.singleDigit,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult)\n }\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': {\n unit: 'dayOfMonth',\n match: patterns$1.D,\n parse: parseDecimal$1\n },\n\n // Ordinal day of month\n 'Do': {\n unit: 'dayOfMonth',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfMonth'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfMonth'})\n }\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': {\n unit: 'dayOfMonth',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': {\n unit: 'dayOfYear',\n match: patterns$1.DDD,\n parse: parseDecimal$1\n },\n\n // Ordinal day of year\n 'DDDo': {\n unit: 'dayOfYear',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfYear'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfYear'})\n }\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': {\n unit: 'dayOfYear',\n match: patterns$1.threeDigits,\n parse: parseDecimal$1\n },\n\n // AM, PM\n 'A': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.timeOfDay(matchResult, {type: 'short'})\n }\n },\n\n // a.m., p.m.\n 'aa': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'long'}) ||\n options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.timeOfDay(matchResult, {type: 'long'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.timeOfDay(matchResult, {type: 'short'});\n }\n\n return parseResult\n }\n },\n\n // Hour: 0, 1, ... 23\n 'H': {\n unit: 'hours',\n match: patterns$1.H,\n parse: parseDecimal$1\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': {\n unit: 'hours',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Hour: 1, 2, ..., 12\n 'h': {\n unit: 'timeOfDayHours',\n match: patterns$1.M,\n parse: parseDecimal$1\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': {\n unit: 'timeOfDayHours',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Minute: 0, 1, ..., 59\n 'm': {\n unit: 'minutes',\n match: patterns$1.m,\n parse: parseDecimal$1\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': {\n unit: 'minutes',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Second: 0, 1, ..., 59\n 's': {\n unit: 'seconds',\n match: patterns$1.m,\n parse: parseDecimal$1\n },\n\n // Second: 00, 01, ..., 59\n 'ss': {\n unit: 'seconds',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': {\n unit: 'milliseconds',\n match: patterns$1.singleDigit,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) * 100\n }\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': {\n unit: 'milliseconds',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) * 10\n }\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': {\n unit: 'milliseconds',\n match: patterns$1.threeDigits,\n parse: parseDecimal$1\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': {\n unit: 'timezone',\n match: patterns$1.Z,\n parse: function (matchResult) {\n var sign = matchResult[1];\n var hours = parseInt(matchResult[2], 10);\n var minutes = parseInt(matchResult[3], 10);\n var absoluteOffset = hours * 60 + minutes;\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': {\n unit: 'timezone',\n match: patterns$1.ZZ,\n parse: function (matchResult) {\n var sign = matchResult[1];\n var hours = parseInt(matchResult[2], 10);\n var minutes = parseInt(matchResult[3], 10);\n var absoluteOffset = hours * 60 + minutes;\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Seconds timestamp: 512969520\n 'X': {\n unit: 'timestamp',\n match: patterns$1.anyDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) * 1000\n }\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': {\n unit: 'timestamp',\n match: patterns$1.anyDigits,\n parse: parseDecimal$1\n }\n};\n\nparsers['a'] = parsers['A'];\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn === undefined ? 0 : Number(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn === undefined ? defaultWeekStartsOn : Number(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = Number(dirtyDay);\n\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n var day = Number(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var isoWeek = Number(dirtyISOWeek);\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\nvar MILLISECONDS_IN_DAY$3 = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeekYear (dirtyDate, dirtyISOYear, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var isoYear = Number(dirtyISOYear);\n var dateStartOfYear = startOfUTCISOWeekYear(date, dirtyOptions);\n var diff = Math.floor((date.getTime() - dateStartOfYear.getTime()) / MILLISECONDS_IN_DAY$3);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(isoYear, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n date = startOfUTCISOWeekYear(fourthOfJanuary, dirtyOptions);\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\nvar MILLISECONDS_IN_MINUTE$6 = 60000;\n\nfunction setTimeOfDay (hours, timeOfDay) {\n var isAM = timeOfDay === 0;\n\n if (isAM) {\n if (hours === 12) {\n return 0\n }\n } else {\n if (hours !== 12) {\n return 12 + hours\n }\n }\n\n return hours\n}\n\nvar units = {\n twoDigitYear: {\n priority: 10,\n set: function (dateValues, value) {\n var century = Math.floor(dateValues.date.getUTCFullYear() / 100);\n var year = century * 100 + value;\n dateValues.date.setUTCFullYear(year, 0, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n year: {\n priority: 10,\n set: function (dateValues, value) {\n dateValues.date.setUTCFullYear(value, 0, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n isoYear: {\n priority: 10,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeekYear(setUTCISOWeekYear(dateValues.date, value, options), options);\n return dateValues\n }\n },\n\n quarter: {\n priority: 20,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth((value - 1) * 3, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n month: {\n priority: 30,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(value, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n isoWeek: {\n priority: 40,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeek(setUTCISOWeek(dateValues.date, value, options), options);\n return dateValues\n }\n },\n\n dayOfWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCDay(dateValues.date, value, options);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n dayOfISOWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCISODay(dateValues.date, value, options);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n dayOfMonth: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCDate(value);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n dayOfYear: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(0, value);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n timeOfDay: {\n priority: 60,\n set: function (dateValues, value, options) {\n dateValues.timeOfDay = value;\n return dateValues\n }\n },\n\n hours: {\n priority: 70,\n set: function (dateValues, value, options) {\n dateValues.date.setUTCHours(value, 0, 0, 0);\n return dateValues\n }\n },\n\n timeOfDayHours: {\n priority: 70,\n set: function (dateValues, value, options) {\n var timeOfDay = dateValues.timeOfDay;\n if (timeOfDay != null) {\n value = setTimeOfDay(value, timeOfDay);\n }\n dateValues.date.setUTCHours(value, 0, 0, 0);\n return dateValues\n }\n },\n\n minutes: {\n priority: 80,\n set: function (dateValues, value) {\n dateValues.date.setUTCMinutes(value, 0, 0);\n return dateValues\n }\n },\n\n seconds: {\n priority: 90,\n set: function (dateValues, value) {\n dateValues.date.setUTCSeconds(value, 0);\n return dateValues\n }\n },\n\n milliseconds: {\n priority: 100,\n set: function (dateValues, value) {\n dateValues.date.setUTCMilliseconds(value);\n return dateValues\n }\n },\n\n timezone: {\n priority: 110,\n set: function (dateValues, value) {\n dateValues.date = new Date(dateValues.date.getTime() - value * MILLISECONDS_IN_MINUTE$6);\n return dateValues\n }\n },\n\n timestamp: {\n priority: 120,\n set: function (dateValues, value) {\n dateValues.date = new Date(value);\n return dateValues\n }\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 110;\nvar MILLISECONDS_IN_MINUTE$7 = 60000;\n\nvar longFormattingTokensRegExp$1 = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g;\nvar defaultParsingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format.\n *\n * Accepted format tokens:\n * | Unit | Priority | Token | Input examples |\n * |-------------------------|----------|-------|----------------------------------|\n * | Year | 10 | YY | 00, 01, ..., 99 |\n * | | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | 10 | GG | 00, 01, ..., 99 |\n * | | | GGGG | 1900, 1901, ..., 2099 |\n * | Quarter | 20 | Q | 1, 2, 3, 4 |\n * | | | Qo | 1st, 2nd, 3rd, 4th |\n * | Month | 30 | M | 1, 2, ..., 12 |\n * | | | Mo | 1st, 2nd, ..., 12th |\n * | | | MM | 01, 02, ..., 12 |\n * | | | MMM | Jan, Feb, ..., Dec |\n * | | | MMMM | January, February, ..., December |\n * | ISO week | 40 | W | 1, 2, ..., 53 |\n * | | | Wo | 1st, 2nd, ..., 53rd |\n * | | | WW | 01, 02, ..., 53 |\n * | Day of week | 50 | d | 0, 1, ..., 6 |\n * | | | do | 0th, 1st, ..., 6th |\n * | | | dd | Su, Mo, ..., Sa |\n * | | | ddd | Sun, Mon, ..., Sat |\n * | | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | 50 | E | 1, 2, ..., 7 |\n * | Day of month | 50 | D | 1, 2, ..., 31 |\n * | | | Do | 1st, 2nd, ..., 31st |\n * | | | DD | 01, 02, ..., 31 |\n * | Day of year | 50 | DDD | 1, 2, ..., 366 |\n * | | | DDDo | 1st, 2nd, ..., 366th |\n * | | | DDDD | 001, 002, ..., 366 |\n * | Time of day | 60 | A | AM, PM |\n * | | | a | am, pm |\n * | | | aa | a.m., p.m. |\n * | Hour | 70 | H | 0, 1, ... 23 |\n * | | | HH | 00, 01, ... 23 |\n * | Time of day hour | 70 | h | 1, 2, ..., 12 |\n * | | | hh | 01, 02, ..., 12 |\n * | Minute | 80 | m | 0, 1, ..., 59 |\n * | | | mm | 00, 01, ..., 59 |\n * | Second | 90 | s | 0, 1, ..., 59 |\n * | | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | 100 | S | 0, 1, ..., 9 |\n * | 1/100 of second | 100 | SS | 00, 01, ..., 99 |\n * | Millisecond | 100 | SSS | 000, 001, ..., 999 |\n * | Timezone | 110 | Z | -01:00, +00:00, ... +12:00 |\n * | | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | 120 | X | 512969520 |\n * | Milliseconds timestamp | 120 | x | 512969520900 |\n *\n * Values will be assigned to the date in the ascending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/DD/YYYY', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * Also, `parse` unfolds long formats like those in [format]{@link https://date-fns.org/docs/format}:\n * | Token | Input examples |\n * |-------|--------------------------------|\n * | LT | 05:30 a.m. |\n * | LTS | 05:30:15 a.m. |\n * | L | 07/02/1995 |\n * | l | 7/2/1995 |\n * | LL | July 2 1995 |\n * | ll | Jul 2 1995 |\n * | LLL | July 2 1995 05:30 a.m. |\n * | lll | Jul 2 1995 05:30 a.m. |\n * | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets in the format string are escaped.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - the date to took the missing higher priority values from\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/DD/YYYY',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in English locale in the context of 2010 year:\n * import eoLocale from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * 'Do [de] MMMM',\n * new Date(2010, 0, 1)\n * {locale: eoLocale}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse (dirtyDateString, dirtyFormatString, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 3) {\n throw new TypeError('3 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateString = String(dirtyDateString);\n var options = dirtyOptions || {};\n\n var weekStartsOn = options.weekStartsOn === undefined ? 0 : Number(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var locale = options.locale || locale$1;\n var localeParsers = locale.parsers || {};\n var localeUnits = locale.units || {};\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var formatString = String(dirtyFormatString)\n .replace(longFormattingTokensRegExp$1, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString$1(substring)\n }\n\n return locale.formatLong(substring)\n });\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = cloneObject(options);\n subFnOptions.locale = locale;\n\n var tokens = formatString.match(locale.parsingTokensRegExp || defaultParsingTokensRegExp);\n var tokensLength = tokens.length;\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }];\n\n var i;\n for (i = 0; i < tokensLength; i++) {\n var token = tokens[i];\n var parser = localeParsers[token] || parsers[token];\n if (parser) {\n var matchResult;\n\n if (parser.match instanceof RegExp) {\n matchResult = parser.match.exec(dateString);\n } else {\n matchResult = parser.match(dateString, subFnOptions);\n }\n\n if (!matchResult) {\n return new Date(NaN)\n }\n\n var unitName = parser.unit;\n var unit = localeUnits[unitName] || units[unitName];\n\n setters.push({\n priority: unit.priority,\n set: unit.set,\n value: parser.parse(matchResult, subFnOptions),\n index: setters.length\n });\n\n var substring = matchResult[0];\n dateString = dateString.slice(substring.length);\n } else {\n var head = tokens[i].match(/^\\[.*]$/) ? tokens[i].replace(/^\\[|]$/g, '') : tokens[i];\n if (dateString.indexOf(head) === 0) {\n dateString = dateString.slice(head.length);\n } else {\n return new Date(NaN)\n }\n }\n }\n\n var uniquePrioritySetters = setters\n .map(function (setter) {\n return setter.priority\n })\n .sort(function (a, b) {\n return a - b\n })\n .filter(function (priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function (priority) {\n return setters\n .filter(function (setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function (setterArray) {\n return setterArray[0]\n });\n\n var date = toDate(dirtyBaseDate, options);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMinutes(date, date.getTimezoneOffset());\n\n var dateValues = {date: utcDate};\n\n var settersLength = uniquePrioritySetters.length;\n for (i = 0; i < settersLength; i++) {\n var setter = uniquePrioritySetters[i];\n dateValues = setter.set(dateValues, setter.value, subFnOptions);\n }\n\n return dateValues.date\n}\n\nfunction dateToSystemTimezone (dateValues) {\n var date = dateValues.date;\n var time = date.getTime();\n\n // Get the system timezone offset at (moment of time - offset)\n var offset = date.getTimezoneOffset();\n\n // Get the system timezone offset at the exact moment of time\n offset = new Date(time + offset * MILLISECONDS_IN_MINUTE$7).getTimezoneOffset();\n\n // Convert date in timezone \"UTC+00:00\" to the system timezone\n dateValues.date = new Date(time + offset * MILLISECONDS_IN_MINUTE$7);\n\n return dateValues\n}\n\nfunction cleanEscapedString$1 (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n\n// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\n// \r\n\r\n/**\r\n * Custom parse behavior on top of date-fns parse function.\r\n */\r\nfunction parseDate$1 (date, format$$1) {\r\n if (typeof date !== 'string') {\r\n return isValid(date) ? date : null;\r\n }\r\n\r\n var parsed = parse(date, format$$1, new Date());\r\n\r\n // if date is not valid or the formatted output after parsing does not match\r\n // the string value passed in (avoids overflows)\r\n if (!isValid(parsed) || format(parsed, format$$1) !== date) {\r\n return null;\r\n }\r\n\r\n return parsed;\r\n}\n\nvar afterValidator = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format$$1 = ref.format;\n\r\n if (typeof format$$1 === 'undefined') {\r\n format$$1 = inclusion;\r\n inclusion = false;\r\n }\r\n\r\n value = parseDate$1(value, format$$1);\r\n targetValue = parseDate$1(targetValue, format$$1);\r\n\r\n // if either is not valid.\r\n if (!value || !targetValue) {\r\n return false;\r\n }\r\n\r\n return isAfter(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\r\n};\r\n\r\nvar options = {\r\n hasTarget: true,\r\n isDate: true\r\n};\r\n\r\n// required to convert from a list of array values to an object.\r\nvar paramNames = ['targetValue', 'inclusion', 'format'];\r\n\r\nvar after = {\r\n validate: afterValidator,\r\n options: options,\r\n paramNames: paramNames\r\n};\n\n/**\r\n * Some Alpha Regex helpers.\r\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\r\n */\r\n\r\nvar alpha = {\r\n en: /^[A-Z]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[A-ZÆØÅ]*$/i,\r\n de: /^[A-ZÄÖÜß]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ru: /^[А-ЯЁ]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[A-ZÅÄÖ]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/\r\n};\r\n\r\nvar alphaSpaces = {\r\n en: /^[A-Z\\s]*$/i,\r\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\r\n da: /^[A-ZÆØÅ\\s]*$/i,\r\n de: /^[A-ZÄÖÜß\\s]*$/i,\r\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\r\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\r\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\r\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\r\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\r\n ru: /^[А-ЯЁ\\s]*$/i,\r\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\r\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\r\n sv: /^[A-ZÅÄÖ\\s]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\r\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\r\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/\r\n};\r\n\r\nvar alphanumeric = {\r\n en: /^[0-9A-Z]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\r\n da: /^[0-9A-ZÆØÅ]$/i,\r\n de: /^[0-9A-ZÄÖÜß]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\r\n ru: /^[0-9А-ЯЁ]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/\r\n};\r\n\r\nvar alphaDash = {\r\n en: /^[0-9A-Z_-]*$/i,\r\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\r\n da: /^[0-9A-ZÆØÅ_-]*$/i,\r\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\r\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\r\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\r\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\r\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\r\n ru: /^[0-9А-ЯЁ_-]*$/i,\r\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\r\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/\r\n};\n\nvar validate = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate(val, [locale]); });\r\n }\r\n\r\n // Match at least one locale.\r\n if (! locale) {\r\n return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\r\n }\r\n\r\n return (alpha[locale] || alpha.en).test(value);\r\n};\r\n\r\nvar paramNames$1 = ['locale'];\r\n\r\nvar alpha$1 = {\r\n validate: validate,\r\n paramNames: paramNames$1\r\n};\n\nvar validate$1 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$1(val, [locale]); });\r\n }\r\n\r\n // Match at least one locale.\r\n if (! locale) {\r\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\r\n }\r\n\r\n return (alphaDash[locale] || alphaDash.en).test(value);\r\n};\r\n\r\nvar paramNames$2 = ['locale'];\r\n\r\nvar alpha_dash = {\r\n validate: validate$1,\r\n paramNames: paramNames$2\r\n};\n\nvar validate$2 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$2(val, [locale]); });\r\n }\r\n\r\n // Match at least one locale.\r\n if (! locale) {\r\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\r\n }\r\n\r\n return (alphanumeric[locale] || alphanumeric.en).test(value);\r\n};\r\n\r\nvar paramNames$3 = ['locale'];\r\n\r\nvar alpha_num = {\r\n validate: validate$2,\r\n paramNames: paramNames$3\r\n};\n\nvar validate$3 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$3(val, [locale]); });\r\n }\r\n\r\n // Match at least one locale.\r\n if (! locale) {\r\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\r\n }\r\n\r\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\r\n};\r\n\r\nvar paramNames$4 = ['locale'];\r\n\r\nvar alpha_spaces = {\r\n validate: validate$3,\r\n paramNames: paramNames$4\r\n};\n\nvar validate$4 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format$$1 = ref.format;\n\r\n if (typeof format$$1 === 'undefined') {\r\n format$$1 = inclusion;\r\n inclusion = false;\r\n }\r\n\r\n value = parseDate$1(value, format$$1);\r\n targetValue = parseDate$1(targetValue, format$$1);\r\n\r\n // if either is not valid.\r\n if (!value || !targetValue) {\r\n return false;\r\n }\r\n\r\n return isBefore(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\r\n};\r\n\r\nvar options$1 = {\r\n hasTarget: true,\r\n isDate: true\r\n};\r\n\r\nvar paramNames$5 = ['targetValue', 'inclusion', 'format'];\r\n\r\nvar before = {\r\n validate: validate$4,\r\n options: options$1,\r\n paramNames: paramNames$5\r\n};\n\nvar validate$5 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min = ref.min;\n var max = ref.max;\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$5(val, { min: min, max: max }); });\r\n }\r\n\r\n return Number(min) <= value && Number(max) >= value;\r\n};\r\n\r\nvar paramNames$6 = ['min', 'max'];\r\n\r\nvar between = {\r\n validate: validate$5,\r\n paramNames: paramNames$6\r\n};\n\nvar validate$6 = function (value, ref) {\n var targetValue = ref.targetValue;\n\n return String(value) === String(targetValue);\n};\r\nvar options$2 = {\r\n hasTarget: true\r\n};\r\n\r\nvar paramNames$7 = ['targetValue'];\r\n\r\nvar confirmed = {\r\n validate: validate$6,\r\n options: options$2,\r\n paramNames: paramNames$7\r\n};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar assertString_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = assertString;\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType = void 0;\n if (input === null) {\n invalidType = 'null';\n } else {\n invalidType = typeof input === 'undefined' ? 'undefined' : _typeof(input);\n if (invalidType === 'object' && input.constructor && input.constructor.hasOwnProperty('name')) {\n invalidType = input.constructor.name;\n } else {\n invalidType = 'a ' + invalidType;\n }\n }\n throw new TypeError('Expected string but received ' + invalidType + '.');\n }\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(assertString_1);\n\nvar isCreditCard_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n (0, _assertString2.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n if (!creditCard.test(sanitized)) {\n return false;\n }\n var sum = 0;\n var digit = void 0;\n var tmpNum = void 0;\n var shouldDouble = void 0;\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return !!(sum % 10 === 0 ? sanitized : false);\n}\nmodule.exports = exports['default'];\n});\n\nvar isCreditCard = unwrapExports(isCreditCard_1);\n\nvar validate$7 = function (value) { return isCreditCard(String(value)); };\r\n\r\nvar credit_card = {\r\n validate: validate$7\r\n};\n\nvar validate$8 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min$$1 = ref.min;\n var max$$1 = ref.max;\n var inclusivity = ref.inclusivity; if ( inclusivity === void 0 ) inclusivity = '()';\n var format$$1 = ref.format;\n\r\n if (typeof format$$1 === 'undefined') {\r\n format$$1 = inclusivity;\r\n inclusivity = '()';\r\n }\r\n\r\n var minDate = parseDate$1(String(min$$1), format$$1);\r\n var maxDate = parseDate$1(String(max$$1), format$$1);\r\n var dateVal = parseDate$1(String(value), format$$1);\r\n\r\n if (!minDate || !maxDate || !dateVal) {\r\n return false;\r\n }\r\n\r\n if (inclusivity === '()') {\r\n return isAfter(dateVal, minDate) && isBefore(dateVal, maxDate);\r\n }\r\n\r\n if (inclusivity === '(]') {\r\n return isAfter(dateVal, minDate) && (isEqual$1(dateVal, maxDate) || isBefore(dateVal, maxDate));\r\n }\r\n\r\n if (inclusivity === '[)') {\r\n return isBefore(dateVal, maxDate) && (isEqual$1(dateVal, minDate) || isAfter(dateVal, minDate));\r\n }\r\n\r\n return isEqual$1(dateVal, maxDate) || isEqual$1(dateVal, minDate) ||\r\n (isBefore(dateVal, maxDate) && isAfter(dateVal, minDate));\r\n};\r\n\r\nvar options$3 = {\r\n isDate: true\r\n};\r\n\r\nvar paramNames$8 = ['min', 'max', 'inclusivity', 'format'];\r\n\r\nvar date_between = {\r\n validate: validate$8,\r\n options: options$3,\r\n paramNames: paramNames$8\r\n};\n\nvar validate$9 = function (value, ref) {\n var format = ref.format;\n\r\n return !!parseDate$1(value, format);\r\n};\r\n\r\nvar options$4 = {\r\n isDate: true\r\n};\r\n\r\nvar paramNames$9 = ['format'];\r\n\r\nvar date_format = {\r\n validate: validate$9,\r\n options: options$4,\r\n paramNames: paramNames$9\r\n};\n\nvar validate$a = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var decimals = ref.decimals; if ( decimals === void 0 ) decimals = '*';\n var separator = ref.separator; if ( separator === void 0 ) separator = '.';\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$a(val, { decimals: decimals, separator: separator }); });\r\n }\r\n\r\n if (value === null || value === undefined || value === '') {\r\n return false;\r\n }\r\n\r\n // if is 0.\r\n if (Number(decimals) === 0) {\r\n return /^-?\\d*$/.test(value);\r\n }\r\n\r\n var regexPart = decimals === '*' ? '+' : (\"{1,\" + decimals + \"}\");\r\n var regex = new RegExp((\"^[-+]?\\\\d*(\\\\\" + separator + \"\\\\d\" + regexPart + \")?$\"));\r\n\r\n if (! regex.test(value)) {\r\n return false;\r\n }\r\n\r\n var parsedValue = parseFloat(value);\r\n\r\n // eslint-disable-next-line\r\n return parsedValue === parsedValue;\r\n};\r\n\r\nvar paramNames$a = ['decimals', 'separator'];\r\n\r\nvar decimal = {\r\n validate: validate$a,\r\n paramNames: paramNames$a\r\n};\n\nvar validate$b = function (value, ref) {\n var length = ref[0];\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$b(val, [length]); });\r\n }\r\n var strVal = String(value);\r\n\r\n return /^[0-9]*$/.test(strVal) && strVal.length === Number(length);\r\n};\r\n\r\nvar digits = {\r\n validate: validate$b\r\n};\n\nvar validateImage = function (file, width, height) {\r\n var URL = window.URL || window.webkitURL;\r\n return new Promise(function (resolve) {\r\n var image = new Image();\r\n image.onerror = function () { return resolve({ valid: false }); };\r\n image.onload = function () { return resolve({\r\n valid: image.width === Number(width) && image.height === Number(height)\r\n }); };\r\n\r\n image.src = URL.createObjectURL(file);\r\n });\r\n};\r\n\r\nvar validate$c = function (files, ref) {\n var width = ref[0];\n var height = ref[1];\n\r\n var list = [];\r\n for (var i = 0; i < files.length; i++) {\r\n // if file is not an image, reject.\r\n if (! /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\r\n return false;\r\n }\r\n\r\n list.push(files[i]);\r\n }\r\n\r\n return Promise.all(list.map(function (file) { return validateImage(file, width, height); }));\r\n};\r\n\r\nvar dimensions = {\r\n validate: validate$c\r\n};\n\nvar merge_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments[1];\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(merge_1);\n\nvar isByteLength_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = isByteLength;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString2.default)(str);\n var min = void 0;\n var max = void 0;\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isByteLength_1);\n\nvar isFQDN_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\n\n\nvar _merge2 = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString2.default)(str);\n options = (0, _merge2.default)(options, default_fqdn_options);\n\n /* Remove the optional trailing dot before checking validity */\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n var parts = str.split('.');\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n if (options.require_tld) {\n var tld = parts.pop();\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n // disallow spaces\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n // disallow full-width chars\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isFQDN_1);\n\nvar isIP_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n (0, _assertString2.default)(str);\n version = String(version);\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n }\n // initial or final ::\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ; else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n return blocks.length === expectedNumberOfBlocks;\n }\n return false;\n}\nmodule.exports = exports['default'];\n});\n\nvar isIP = unwrapExports(isIP_1);\n\nvar isEmail_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\n\n\nvar _merge2 = _interopRequireDefault(merge_1);\n\n\n\nvar _isByteLength2 = _interopRequireDefault(isByteLength_1);\n\n\n\nvar _isFQDN2 = _interopRequireDefault(isFQDN_1);\n\n\n\nvar _isIP2 = _interopRequireDefault(isIP_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n};\n\n/* eslint-disable max-len */\n/* eslint-disable no-control-regex */\nvar displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\,\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n/* eslint-enable max-len */\n/* eslint-enable no-control-regex */\n\nfunction isEmail(str, options) {\n (0, _assertString2.default)(str);\n options = (0, _merge2.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(displayName);\n if (display_email) {\n str = display_email[1];\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n\n var lower_domain = domain.toLowerCase();\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase();\n\n // Removing sub-address from username before gmail validation\n var username = user.split('+')[0];\n\n // Dots are not included in gmail length restriction\n if (!(0, _isByteLength2.default)(username.replace('.', ''), { min: 6, max: 30 })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (!(0, _isByteLength2.default)(user, { max: 64 }) || !(0, _isByteLength2.default)(domain, { max: 254 })) {\n return false;\n }\n\n if (!(0, _isFQDN2.default)(domain, { require_tld: options.require_tld })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP2.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP2.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n\n var user_parts = user.split('.');\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n\n return true;\n}\nmodule.exports = exports['default'];\n});\n\nvar isEmail = unwrapExports(isEmail_1);\n\nvar validate$d = function (value, options) {\n if ( options === void 0 ) options = {};\n\r\n if (options.multiple) {\r\n value = value.split(',').map(function (emailStr) { return emailStr.trim(); });\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return isEmail(String(val), options); });\r\n }\r\n\r\n return isEmail(String(value), options);\r\n};\r\n\r\nvar email = {\r\n validate: validate$d\r\n};\n\nvar validate$e = function (value, options) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$e(val, options); });\r\n }\r\n\r\n return toArray(options).some(function (item) {\r\n // eslint-disable-next-line\r\n return item == value;\r\n });\r\n};\r\n\r\nvar included = {\r\n validate: validate$e\r\n};\n\nvar validate$f = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\r\n return !validate$e.apply(void 0, args);\r\n};\r\n\r\nvar excluded = {\r\n validate: validate$f\r\n};\n\nvar validate$g = function (files, extensions) {\r\n var regex = new RegExp((\".(\" + (extensions.join('|')) + \")$\"), 'i');\r\n\r\n return files.every(function (file) { return regex.test(file.name); });\r\n};\r\n\r\nvar ext = {\r\n validate: validate$g\r\n};\n\nvar validate$h = function (files) { return files.every(function (file) { return /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(file.name); }); };\r\n\r\nvar image = {\r\n validate: validate$h\r\n};\n\nvar validate$i = function (value) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\r\n }\r\n\r\n return /^-?[0-9]+$/.test(String(value));\r\n};\r\n\r\nvar integer = {\r\n validate: validate$i\r\n};\n\nvar validate$j = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var version = ref.version; if ( version === void 0 ) version = 4;\n\r\n if (isNullOrUndefined(value)) {\r\n value = '';\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return isIP(val, version); });\r\n }\r\n\r\n return isIP(value, version);\r\n};\r\n\r\nvar paramNames$b = ['version'];\r\n\r\nvar ip = {\r\n validate: validate$j,\r\n paramNames: paramNames$b\r\n};\n\nvar validate$k = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\r\n return value === other;\r\n};\r\n\r\nvar is = {\r\n validate: validate$k\r\n};\n\nvar validate$l = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\r\n return value !== other;\r\n};\r\n\r\nvar is_not = {\r\n validate: validate$l\r\n};\n\n/**\r\n * @param {Array|String} value\r\n * @param {Number} length\r\n * @param {Number} max\r\n */\r\nvar compare = function (value, length, max) {\r\n if (max === undefined) {\r\n return value.length === length;\r\n }\r\n\r\n // cast to number.\r\n max = Number(max);\r\n\r\n return value.length >= length && value.length <= max;\r\n};\r\n\r\nvar validate$m = function (value, ref) {\n var length = ref[0];\n var max = ref[1]; if ( max === void 0 ) max = undefined;\n\r\n length = Number(length);\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n value = String(value);\r\n }\r\n\r\n if (!value.length) {\r\n value = toArray(value);\r\n }\r\n\r\n return compare(value, length, max);\r\n};\r\n\r\nvar length = {\r\n validate: validate$m\r\n};\n\nvar validate$n = function (value, ref) {\n var length = ref[0];\n\r\n if (value === undefined || value === null) {\r\n return length >= 0;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$n(val, [length]); });\r\n }\r\n\r\n return String(value).length <= length;\r\n};\r\n\r\nvar max$1 = {\r\n validate: validate$n\r\n};\n\nvar validate$o = function (value, ref) {\n var max = ref[0];\n\r\n if (value === null || value === undefined || value === '') {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$o(val, [max]); });\r\n }\r\n\r\n return Number(value) <= max;\r\n};\r\n\r\nvar max_value = {\r\n validate: validate$o\r\n};\n\nvar validate$p = function (files, mimes) {\r\n var regex = new RegExp(((mimes.join('|').replace('*', '.+')) + \"$\"), 'i');\r\n\r\n return files.every(function (file) { return regex.test(file.type); });\r\n};\r\n\r\nvar mimes = {\r\n validate: validate$p\r\n};\n\nvar validate$q = function (value, ref) {\n var length = ref[0];\n\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$q(val, [length]); });\r\n }\r\n\r\n return String(value).length >= length;\r\n};\r\n\r\nvar min$1 = {\r\n validate: validate$q\r\n};\n\nvar validate$r = function (value, ref) {\n var min = ref[0];\n\r\n if (value === null || value === undefined || value === '') {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$r(val, [min]); });\r\n }\r\n\r\n return Number(value) >= min;\r\n};\r\n\r\nvar min_value = {\r\n validate: validate$r\r\n};\n\nvar validate$s = function (value) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return /^[0-9]+$/.test(String(val)); });\r\n }\r\n\r\n return /^[0-9]+$/.test(String(value));\r\n};\r\n\r\nvar numeric = {\r\n validate: validate$s\r\n};\n\nvar validate$t = function (value, ref) {\n var expression = ref.expression;\n\r\n if (typeof expression === 'string') {\r\n expression = new RegExp(expression);\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$t(val, { expression: expression }); });\r\n }\r\n\r\n return expression.test(String(value));\r\n};\r\n\r\nvar paramNames$c = ['expression'];\r\n\r\nvar regex = {\r\n validate: validate$t,\r\n paramNames: paramNames$c\r\n};\n\nvar validate$u = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var invalidateFalse = ref[0]; if ( invalidateFalse === void 0 ) invalidateFalse = false;\n\r\n if (isEmptyArray(value)) {\r\n return false;\r\n }\r\n\r\n // incase a field considers `false` as an empty value like checkboxes.\r\n if (value === false && invalidateFalse) {\r\n return false;\r\n }\r\n\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n\r\n return !!String(value).trim().length;\r\n};\r\n\r\nvar required = {\r\n validate: validate$u\r\n};\n\nvar validate$v = function (files, ref) {\n var size = ref[0];\n\r\n if (isNaN(size)) {\r\n return false;\r\n }\r\n\r\n var nSize = Number(size) * 1024;\r\n for (var i = 0; i < files.length; i++) {\r\n if (files[i].size > nSize) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nvar size = {\r\n validate: validate$v\r\n};\n\nvar isURL_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\n\n\nvar _isFQDN2 = _interopRequireDefault(isFQDN_1);\n\n\n\nvar _isIP2 = _interopRequireDefault(isIP_1);\n\n\n\nvar _merge2 = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n};\n\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString2.default)(url);\n if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = (0, _merge2.default)(options, default_url_options);\n var protocol = void 0,\n auth = void 0,\n host = void 0,\n hostname = void 0,\n port = void 0,\n port_str = void 0,\n split = void 0,\n ipv6 = void 0;\n\n split = url.split('#');\n url = split.shift();\n\n split = url.split('?');\n url = split.shift();\n\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n split[0] = url.substr(2);\n }\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n if (split.length > 1) {\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n hostname = split.join('@');\n\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null) {\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n\n if (!(0, _isIP2.default)(host) && !(0, _isFQDN2.default)(host, options) && (!ipv6 || !(0, _isIP2.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n return false;\n }\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\nmodule.exports = exports['default'];\n});\n\nvar isURL = unwrapExports(isURL_1);\n\nvar validate$w = function (value, options) {\n if ( options === void 0 ) options = {};\n\r\n if (isNullOrUndefined(value)) {\r\n value = '';\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return isURL(val, options); });\r\n }\r\n\r\n return isURL(value, options);\r\n};\r\n\r\nvar url = {\r\n validate: validate$w\r\n};\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n after: after,\n alpha_dash: alpha_dash,\n alpha_num: alpha_num,\n alpha_spaces: alpha_spaces,\n alpha: alpha$1,\n before: before,\n between: between,\n confirmed: confirmed,\n credit_card: credit_card,\n date_between: date_between,\n date_format: date_format,\n decimal: decimal,\n digits: digits,\n dimensions: dimensions,\n email: email,\n ext: ext,\n image: image,\n included: included,\n integer: integer,\n length: length,\n ip: ip,\n is_not: is_not,\n is: is,\n max: max$1,\n max_value: max_value,\n mimes: mimes,\n min: min$1,\n min_value: min_value,\n excluded: excluded,\n numeric: numeric,\n regex: regex,\n required: required,\n size: size,\n url: url\n});\n\nvar version = '2.1.5';\r\n\r\nObject.keys(Rules).forEach(function (rule) {\r\n Validator.extend(rule, Rules[rule].validate, assign({}, Rules[rule].options, { paramNames: Rules[rule].paramNames }));\r\n});\r\n\r\n// Merge the english messages.\r\nValidator.localize({ en: locale });\r\n\r\nvar install = VeeValidate$1.install;\n\nexport default VeeValidate$1;\nexport { install, directive, mixin, mapFields, Validator, ErrorBag, Rules, version, ValidationProvider, ValidationObserver, withValidation };\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n"],"sourceRoot":""}