{"version":3,"sources":["../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../node_modules/.pnpm/murmurhash@2.0.1/node_modules/murmurhash/murmurhash.js","../../node_modules/.pnpm/moment@2.29.3/node_modules/moment/moment.js"],"names":["getOwnPropertySymbols","Object","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","undefined","TypeError","shouldUseNative","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","order2","map","n","join","test3","split","forEach","letter","keys","err","module","exports","target","source","from","to","symbols","s","arguments","length","key","call","_global","createBuffer","TextEncoder","encode","MurmurHashV2","str","seed","l","h","k","MurmurHashV3","remainder","bytes","h1","h1b","c1","c1b","c2","c2b","k1","murmur","v2","v3","global","factory","hookCallback","hooks","apply","setHookCallback","callback","isArray","input","Array","toString","isObject","hasOwnProp","a","b","isObjectEmpty","obj","isUndefined","isNumber","isDate","Date","arr","fn","res","arrLen","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","m","_pf","some","fun","t","len","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","momentProperties","updateInProgress","copyConfig","prop","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","args","arg","argLen","slice","Error","stack","deprecations","deprecateSimple","name","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","sign","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","invalidDate","expandFormat","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","x","indexOf","o","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","parseTwoDigitYear","parseInt","daysInYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","concat","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","hours","kFormat","minutes","seconds","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","localeIsPM","charAt","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","_abbr","require","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","exec","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","_useUTC","defaults","c","currentDateArray","nowValue","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","invalid","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","dur","tmp","isAdding","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","property","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","defaultFormat","defaultFormatUtc","toISOString","keepOffset","toDate","inspect","zone","prefix","datetime","suffix","inputString","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","erasParse","matchEraYearOrdinal","_eraYearOrdinalRegex","eraYearOrdinalParse","localeEras","eras","_eras","since","until","Infinity","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","abbrPieces","namePieces","narrowPieces","isoWeekYear","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseZone","isDST","zoneAbbr","zoneName","dates","isDSTShifted","createUnix","createInZone","preParsePostFormat","proto$1","firstDayOfYear","firstDayOfWeek","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS"],"mappings":"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","file":"static/js/vendors~main~93e65c9c.27826f7c.chunk.js","sourcesContent":["/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","(function(){\n const _global = this;\n\n const createBuffer = (val) => new TextEncoder().encode(val)\n\n /**\n * JS Implementation of MurmurHash2\n *\n * @author Gary Court\n * @see http://github.com/garycourt/murmurhash-js\n * @author Austin Appleby\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {Uint8Array | string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n function MurmurHashV2(str, seed) {\n if (typeof str === 'string') str = createBuffer(str);\n let\n l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k =\n ((str[i] & 0xff)) |\n ((str[++i] & 0xff) << 8) |\n ((str[++i] & 0xff) << 16) |\n ((str[++i] & 0xff) << 24);\n\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n k ^= k >>> 24;\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3: h ^= (str[i + 2] & 0xff) << 16;\n case 2: h ^= (str[i + 1] & 0xff) << 8;\n case 1: h ^= (str[i] & 0xff);\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n }\n\n h ^= h >>> 13;\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n h ^= h >>> 15;\n\n return h >>> 0;\n };\n\n /*\n * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n *\n * @author Gary Court\n * @see http://github.com/garycourt/murmurhash-js\n * @author Austin Appleby\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {Uint8Array | string} key ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n function MurmurHashV3(key, seed) {\n if (typeof key === 'string') key = createBuffer(key);\n\n let remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i;\n\n remainder = key.length & 3; // key.length % 4\n bytes = key.length - remainder;\n h1 = seed;\n c1 = 0xcc9e2d51;\n c2 = 0x1b873593;\n i = 0;\n\n while (i < bytes) {\n k1 =\n ((key[i] & 0xff)) |\n ((key[++i] & 0xff) << 8) |\n ((key[++i] & 0xff) << 16) |\n ((key[++i] & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3: k1 ^= (key[i + 2] & 0xff) << 16;\n case 2: k1 ^= (key[i + 1] & 0xff) << 8;\n case 1: k1 ^= (key[i] & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n }\n\n const murmur = MurmurHashV3;\n murmur.v2 = MurmurHashV2;\n murmur.v3 = MurmurHashV3;\n\n if (typeof(module) != 'undefined') {\n module.exports = murmur;\n } else {\n const _previousRoot = _global.murmur;\n murmur.noConflict = function() {\n _global.murmur = _previousRoot;\n return murmur;\n }\n _global.murmur = murmur;\n }\n}());\n","//! moment.js\n//! version : 2.29.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.3';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n"],"sourceRoot":""}