PageSourceSearch

https://www.cervenynos.sk/typo3temp/assets/compressed/moment-with-…a6778db75433c55cd64beba567.js.gz?1789540541

js cervenynos.sk collected 2026-09-25 06:14:07 UTC 463,790 bytes, 14,034 lines download raw bytes

vendor: 5,680 bytes, lines 1-231
1;(function (global, factory) {
2    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3    typeof define === 'function' && define.amd ? define(factory) :
4    global.moment = factory()
5}(this, (function () { 'use strict';
6
7var hookCallback;
8
9function hooks () {
10    return hookCallback.apply(null, arguments);
11}
12
13// This is done to register the method called with moment()
14// without creating circular dependencies.
15function setHookCallback (callback) {
16    hookCallback = callback;
17}
18
19function isArray(input) {
20    return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
21}
22
23function isObject(input) {
24    // IE8 will treat undefined and null as object if it wasn't for
25    // input != null
26    return input != null && Object.prototype.toString.call(input) === '[object Object]';
27}
28
29function isObjectEmpty(obj) {
30    if (Object.getOwnPropertyNames) {
31        return (Object.getOwnPropertyNames(obj).length === 0);
32    } else {
33        var k;
34        for (k in obj) {
35            if (obj.hasOwnProperty(k)) {
36                return false;
37            }
38        }
39        return true;
40    }
41}
42
43function isUndefined(input) {
44    return input === void 0;
45}
46
47function isNumber(input) {
48    return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
49}
50
51function isDate(input) {
52    return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
53}
54
55function map(arr, fn) {
56    var res = [], i;
57    for (i = 0; i < arr.length; ++i) {
58        res.push(fn(arr[i], i));
59    }
60    return res;
61}
62
63function hasOwnProp(a, b) {
64    return Object.prototype.hasOwnProperty.call(a, b);
65}
66
67function extend(a, b) {
68    for (var i in b) {
69        if (hasOwnProp(b, i)) {
70            a[i] = b[i];
71        }
72    }
73
74    if (hasOwnProp(b, 'toString')) {
75        a.toString = b.toString;
76    }
77
78    if (hasOwnProp(b, 'valueOf')) {
79        a.valueOf = b.valueOf;
80    }
81
82    return a;
83}
84
85function createUTC (input, format, locale, strict) {
86    return createLocalOrUTC(input, format, locale, strict, true).utc();
87}
88
89function defaultParsingFlags() {
90    // We need to deep clone this object.
91    return {
92        empty           : false,
93        unusedTokens    : [],
94        unusedInput     : [],
95        overflow        : -2,
96        charsLeftOver   : 0,
97        nullInput       : false,
98        invalidMonth    : null,
99        invalidFormat   : false,
100        userInvalidated : false,
101        iso             : false,
102        parsedDateParts : [],
103        meridiem        : null,
104        rfc2822         : false,
105        weekdayMismatch : false
106    };
107}
108
109function getParsingFlags(m) {
110    if (m._pf == null) {
111        m._pf = defaultParsingFlags();
112    }
113    return m._pf;
114}
115
116var some;
117if (Array.prototype.some) {
118    some = Array.prototype.some;
119} else {
120    some = function (fun) {
121        var t = Object(this);
122        var len = t.length >>> 0;
123
124        for (var i = 0; i < len; i++) {
125            if (i in t && fun.call(this, t[i], i, t)) {
126                return true;
127            }
128        }
129
130        return false;
131    };
132}
133
134function isValid(m) {
135    if (m._isValid == null) {
136        var flags = getParsingFlags(m);
137        var parsedParts = some.call(flags.parsedDateParts, function (i) {
138            return i != null;
139        });
140        var isNowValid = !isNaN(m._d.getTime()) &&
141            flags.overflow < 0 &&
142            !flags.empty &&
143            !flags.invalidMonth &&
144            !flags.invalidWeekday &&
145            !flags.weekdayMismatch &&
146            !flags.nullInput &&
147            !flags.invalidFormat &&
148            !flags.userInvalidated &&
149            (!flags.meridiem || (flags.meridiem && parsedParts));
150
151        if (m._strict) {
152            isNowValid = isNowValid &&
153                flags.charsLeftOver === 0 &&
154                flags.unusedTokens.length === 0 &&
155                flags.bigHour === undefined;
156        }
157
158        if (Object.isFrozen == null || !Object.isFrozen(m)) {
159            m._isValid = isNowValid;
160        }
161        else {
162            return isNowValid;
163        }
164    }
165    return m._isValid;
166}
167
168function createInvalid (flags) {
169    var m = createUTC(NaN);
170    if (flags != null) {
171        extend(getParsingFlags(m), flags);
172    }
173    else {
174        getParsingFlags(m).userInvalidated = true;
175    }
176
177    return m;
178}
179
180// Plugins that add properties should also add the key here (null value),
181// so we can properly clone ourselves.
182var momentProperties = hooks.momentProperties = [];
183
184function copyConfig(to, from) {
185    var i, prop, val;
186
187    if (!isUndefined(from._isAMomentObject)) {
188        to._isAMomentObject = from._isAMomentObject;
189    }
190    if (!isUndefined(from._i)) {
191        to._i = from._i;
192    }
193    if (!isUndefined(from._f)) {
194        to._f = from._f;
195    }
196    if (!isUndefined(from._l)) {
197        to._l = from._l;
198    }
199    if (!isUndefined(from._strict)) {
200        to._strict = from._strict;
201    }
202    if (!isUndefined(from._tzm)) {
203        to._tzm = from._tzm;
204    }
205    if (!isUndefined(from._isUTC)) {
206        to._isUTC = from._isUTC;
207    }
208    if (!isUndefined(from._offset)) {
209        to._offset = from._offset;
210    }
211    if (!isUndefined(from._pf)) {
212        to._pf = getParsingFlags(from);
213    }
214    if (!isUndefined(from._locale)) {
215        to._locale = from._locale;
216    }
217
218    if (momentProperties.length > 0) {
219        for (i = 0; i < momentProperties.length; i++) {
220            prop = momentProperties[i];
221            val = from[prop];
222            if (!isUndefined(val)) {
223                to[prop] = val;
224            }
225        }
226    }
227
228    return to;
229}
230
231var updateInProgress = false;
vendor: 60,765 bytes, lines 232-2270
232
233// Moment prototype object
234function Moment(config) {
235    copyConfig(this, config);
236    this._d = new Date(config._d != null ? config._d.getTime() : NaN);
237    if (!this.isValid()) {
238        this._d = new Date(NaN);
239    }
240    // Prevent infinite loop in case updateOffset creates new moment
241    // objects.
242    if (updateInProgress === false) {
243        updateInProgress = true;
244        hooks.updateOffset(this);
245        updateInProgress = false;
246    }
247}
248
249function isMoment (obj) {
250    return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
251}
252
253function absFloor (number) {
254    if (number < 0) {
255        // -0 -> 0
256        return Math.ceil(number) || 0;
257    } else {
258        return Math.floor(number);
259    }
260}
261
262function toInt(argumentForCoercion) {
263    var coercedNumber = +argumentForCoercion,
264        value = 0;
265
266    if (coercedNumber !== 0 && isFinite(coercedNumber)) {
267        value = absFloor(coercedNumber);
268    }
269
270    return value;
271}
272
273// compare two arrays, return the number of differences
274function compareArrays(array1, array2, dontConvert) {
275    var len = Math.min(array1.length, array2.length),
276        lengthDiff = Math.abs(array1.length - array2.length),
277        diffs = 0,
278        i;
279    for (i = 0; i < len; i++) {
280        if ((dontConvert && array1[i] !== array2[i]) ||
281            (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
282            diffs++;
283        }
284    }
285    return diffs + lengthDiff;
286}
287
288function warn(msg) {
289    if (hooks.suppressDeprecationWarnings === false &&
290            (typeof console !==  'undefined') && console.warn) {
291        console.warn('Deprecation warning: ' + msg);
292    }
293}
294
295function deprecate(msg, fn) {
296    var firstTime = true;
297
298    return extend(function () {
299        if (hooks.deprecationHandler != null) {
300            hooks.deprecationHandler(null, msg);
301        }
302        if (firstTime) {
303            var args = [];
304            var arg;
305            for (var i = 0; i < arguments.length; i++) {
306                arg = '';
307                if (typeof arguments[i] === 'object') {
308                    arg += '\n[' + i + '] ';
309                    for (var key in arguments[0]) {
310                        arg += key + ': ' + arguments[0][key] + ', ';
311                    }
312                    arg = arg.slice(0, -2); // Remove trailing comma and space
313                } else {
314                    arg = arguments[i];
315                }
316                args.push(arg);
317            }
318            warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
319            firstTime = false;
320        }
321        return fn.apply(this, arguments);
322    }, fn);
323}
324
325var deprecations = {};
326
327function deprecateSimple(name, msg) {
328    if (hooks.deprecationHandler != null) {
329        hooks.deprecationHandler(name, msg);
330    }
331    if (!deprecations[name]) {
332        warn(msg);
333        deprecations[name] = true;
334    }
335}
336
337hooks.suppressDeprecationWarnings = false;
338hooks.deprecationHandler = null;
339
340function isFunction(input) {
341    return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
342}
343
344function set (config) {
345    var prop, i;
346    for (i in config) {
347        prop = config[i];
348        if (isFunction(prop)) {
349            this[i] = prop;
350        } else {
351            this['_' + i] = prop;
352        }
353    }
354    this._config = config;
355    // Lenient ordinal parsing accepts just a number in addition to
356    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
357    // TODO: Remove "ordinalParse" fallback in next major release.
358    this._dayOfMonthOrdinalParseLenient = new RegExp(
359        (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
360            '|' + (/\d{1,2}/).source);
361}
362
363function mergeConfigs(parentConfig, childConfig) {
364    var res = extend({}, parentConfig), prop;
365    for (prop in childConfig) {
366        if (hasOwnProp(childConfig, prop)) {
367            if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
368                res[prop] = {};
369                extend(res[prop], parentConfig[prop]);
370                extend(res[prop], childConfig[prop]);
371            } else if (childConfig[prop] != null) {
372                res[prop] = childConfig[prop];
373            } else {
374                delete res[prop];
375            }
376        }
377    }
378    for (prop in parentConfig) {
379        if (hasOwnProp(parentConfig, prop) &&
380                !hasOwnProp(childConfig, prop) &&
381                isObject(parentConfig[prop])) {
382            // make sure changes to properties don't modify parent config
383            res[prop] = extend({}, res[prop]);
384        }
385    }
386    return res;
387}
388
389function Locale(config) {
390    if (config != null) {
391        this.set(config);
392    }
393}
394
395var keys;
396
397if (Object.keys) {
398    keys = Object.keys;
399} else {
400    keys = function (obj) {
401        var i, res = [];
402        for (i in obj) {
403            if (hasOwnProp(obj, i)) {
404                res.push(i);
405            }
406        }
407        return res;
408    };
409}
410
411var defaultCalendar = {
412    sameDay : '[Today at] LT',
413    nextDay : '[Tomorrow at] LT',
414    nextWeek : 'dddd [at] LT',
415    lastDay : '[Yesterday at] LT',
416    lastWeek : '[Last] dddd [at] LT',
417    sameElse : 'L'
418};
419
420function calendar (key, mom, now) {
421    var output = this._calendar[key] || this._calendar['sameElse'];
422    return isFunction(output) ? output.call(mom, now) : output;
423}
424
425var defaultLongDateFormat = {
426    LTS  : 'h:mm:ss A',
427    LT   : 'h:mm A',
428    L    : 'MM/DD/YYYY',
429    LL   : 'MMMM D, YYYY',
430    LLL  : 'MMMM D, YYYY h:mm A',
431    LLLL : 'dddd, MMMM D, YYYY h:mm A'
432};
433
434function longDateFormat (key) {
435    var format = this._longDateFormat[key],
436        formatUpper = this._longDateFormat[key.toUpperCase()];
437
438    if (format || !formatUpper) {
439        return format;
440    }
441
442    this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
443        return val.slice(1);
444    });
445
446    return this._longDateFormat[key];
447}
448
449var defaultInvalidDate = 'Invalid date';
450
451function invalidDate () {
452    return this._invalidDate;
453}
454
455var defaultOrdinal = '%d';
456var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
457
458function ordinal (number) {
459    return this._ordinal.replace('%d', number);
460}
461
462var defaultRelativeTime = {
463    future : 'in %s',
464    past   : '%s ago',
465    s  : 'a few seconds',
466    ss : '%d seconds',
467    m  : 'a minute',
468    mm : '%d minutes',
469    h  : 'an hour',
470    hh : '%d hours',
471    d  : 'a day',
472    dd : '%d days',
473    M  : 'a month',
474    MM : '%d months',
475    y  : 'a year',
476    yy : '%d years'
477};
478
479function relativeTime (number, withoutSuffix, string, isFuture) {
480    var output = this._relativeTime[string];
481    return (isFunction(output)) ?
482        output(number, withoutSuffix, string, isFuture) :
483        output.replace(/%d/i, number);
484}
485
486function pastFuture (diff, output) {
487    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
488    return isFunction(format) ? format(output) : format.replace(/%s/i, output);
489}
490
491var aliases = {};
492
493function addUnitAlias (unit, shorthand) {
494    var lowerCase = unit.toLowerCase();
495    aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
496}
497
498function normalizeUnits(units) {
499    return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
500}
501
502function normalizeObjectUnits(inputObject) {
503    var normalizedInput = {},
504        normalizedProp,
505        prop;
506
507    for (prop in inputObject) {
508        if (hasOwnProp(inputObject, prop)) {
509            normalizedProp = normalizeUnits(prop);
510            if (normalizedProp) {
511                normalizedInput[normalizedProp] = inputObject[prop];
512            }
513        }
514    }
515
516    return normalizedInput;
517}
518
519var priorities = {};
520
521function addUnitPriority(unit, priority) {
522    priorities[unit] = priority;
523}
524
525function getPrioritizedUnits(unitsObj) {
526    var units = [];
527    for (var u in unitsObj) {
528        units.push({unit: u, priority: priorities[u]});
529    }
530    units.sort(function (a, b) {
531        return a.priority - b.priority;
532    });
533    return units;
534}
535
536function zeroFill(number, targetLength, forceSign) {
537    var absNumber = '' + Math.abs(number),
538        zerosToFill = targetLength - absNumber.length,
539        sign = number >= 0;
540    return (sign ? (forceSign ? '+' : '') : '-') +
541        Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
542}
543
544var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
545
546var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
547
548var formatFunctions = {};
549
550var formatTokenFunctions = {};
551
552// token:    'M'
553// padded:   ['MM', 2]
554// ordinal:  'Mo'
555// callback: function () { this.month() + 1 }
556function addFormatToken (token, padded, ordinal, callback) {
557    var func = callback;
558    if (typeof callback === 'string') {
559        func = function () {
560            return this[callback]();
561        };
562    }
563    if (token) {
564        formatTokenFunctions[token] = func;
565    }
566    if (padded) {
567        formatTokenFunctions[padded[0]] = function () {
568            return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
569        };
570    }
571    if (ordinal) {
572        formatTokenFunctions[ordinal] = function () {
573            return this.localeData().ordinal(func.apply(this, arguments), token);
574        };
575    }
576}
577
578function removeFormattingTokens(input) {
579    if (input.match(/\[[\s\S]/)) {
580        return input.replace(/^\[|\]$/g, '');
581    }
582    return input.replace(/\\/g, '');
583}
584
585function makeFormatFunction(format) {
586    var array = format.match(formattingTokens), i, length;
587
588    for (i = 0, length = array.length; i < length; i++) {
589        if (formatTokenFunctions[array[i]]) {
590            array[i] = formatTokenFunctions[array[i]];
591        } else {
592            array[i] = removeFormattingTokens(array[i]);
593        }
594    }
595
596    return function (mom) {
597        var output = '', i;
598        for (i = 0; i < length; i++) {
599            output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
600        }
601        return output;
602    };
603}
604
605// format date using native date object
606function formatMoment(m, format) {
607    if (!m.isValid()) {
608        return m.localeData().invalidDate();
609    }
610
611    format = expandFormat(format, m.localeData());
612    formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
613
614    return formatFunctions[format](m);
615}
616
617function expandFormat(format, locale) {
618    var i = 5;
619
620    function replaceLongDateFormatTokens(input) {
621        return locale.longDateFormat(input) || input;
622    }
623
624    localFormattingTokens.lastIndex = 0;
625    while (i >= 0 && localFormattingTokens.test(format)) {
626        format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
627        localFormattingTokens.lastIndex = 0;
628        i -= 1;
629    }
630
631    return format;
632}
633
634var match1         = /\d/;            //       0 - 9
635var match2         = /\d\d/;          //      00 - 99
636var match3         = /\d{3}/;         //     000 - 999
637var match4         = /\d{4}/;         //    0000 - 9999
638var match6         = /[+-]?\d{6}/;    // -999999 - 999999
639var match1to2      = /\d\d?/;         //       0 - 99
640var match3to4      = /\d\d\d\d?/;     //     999 - 9999
641var match5to6      = /\d\d\d\d\d\d?/; //   99999 - 999999
642var match1to3      = /\d{1,3}/;       //       0 - 999
643var match1to4      = /\d{1,4}/;       //       0 - 9999
644var match1to6      = /[+-]?\d{1,6}/;  // -999999 - 999999
645
646var matchUnsigned  = /\d+/;           //       0 - inf
647var matchSigned    = /[+-]?\d+/;      //    -inf - inf
648
649var matchOffset    = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
650var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
651
652var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
653
654// any word (or two) characters or numbers including two/three word month in arabic.
655// includes scottish gaelic two word and hyphenated months
656var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;
657
658
659var regexes = {};
660
661function addRegexToken (token, regex, strictRegex) {
662    regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
663        return (isStrict && strictRegex) ? strictRegex : regex;
664    };
665}
666
667function getParseRegexForToken (token, config) {
668    if (!hasOwnProp(regexes, token)) {
669        return new RegExp(unescapeFormat(token));
670    }
671
672    return regexes[token](config._strict, config._locale);
673}
674
675// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
676function unescapeFormat(s) {
677    return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
678        return p1 || p2 || p3 || p4;
679    }));
680}
681
682function regexEscape(s) {
683    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
684}
685
686var tokens = {};
687
688function addParseToken (token, callback) {
689    var i, func = callback;
690    if (typeof token === 'string') {
691        token = [token];
692    }
693    if (isNumber(callback)) {
694        func = function (input, array) {
695            array[callback] = toInt(input);
696        };
697    }
698    for (i = 0; i < token.length; i++) {
699        tokens[token[i]] = func;
700    }
701}
702
703function addWeekParseToken (token, callback) {
704    addParseToken(token, function (input, array, config, token) {
705        config._w = config._w || {};
706        callback(input, config._w, config, token);
707    });
708}
709
710function addTimeToArrayFromToken(token, input, config) {
711    if (input != null && hasOwnProp(tokens, token)) {
712        tokens[token](input, config._a, config, token);
713    }
714}
715
716var YEAR = 0;
717var MONTH = 1;
718var DATE = 2;
719var HOUR = 3;
720var MINUTE = 4;
721var SECOND = 5;
722var MILLISECOND = 6;
723var WEEK = 7;
724var WEEKDAY = 8;
725
726// FORMATTING
727
728addFormatToken('Y', 0, 0, function () {
729    var y = this.year();
730    return y <= 9999 ? '' + y : '+' + y;
731});
732
733addFormatToken(0, ['YY', 2], 0, function () {
734    return this.year() % 100;
735});
736
737addFormatToken(0, ['YYYY',   4],       0, 'year');
738addFormatToken(0, ['YYYYY',  5],       0, 'year');
739addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
740
741// ALIASES
742
743addUnitAlias('year', 'y');
744
745// PRIORITIES
746
747addUnitPriority('year', 1);
748
749// PARSING
750
751addRegexToken('Y',      matchSigned);
752addRegexToken('YY',     match1to2, match2);
753addRegexToken('YYYY',   match1to4, match4);
754addRegexToken('YYYYY',  match1to6, match6);
755addRegexToken('YYYYYY', match1to6, match6);
756
757addParseToken(['YYYYY', 'YYYYYY'], YEAR);
758addParseToken('YYYY', function (input, array) {
759    array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
760});
761addParseToken('YY', function (input, array) {
762    array[YEAR] = hooks.parseTwoDigitYear(input);
763});
764addParseToken('Y', function (input, array) {
765    array[YEAR] = parseInt(input, 10);
766});
767
768// HELPERS
769
770function daysInYear(year) {
771    return isLeapYear(year) ? 366 : 365;
772}
773
774function isLeapYear(year) {
775    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
776}
777
778// HOOKS
779
780hooks.parseTwoDigitYear = function (input) {
781    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
782};
783
784// MOMENTS
785
786var getSetYear = makeGetSet('FullYear', true);
787
788function getIsLeapYear () {
789    return isLeapYear(this.year());
790}
791
792function makeGetSet (unit, keepTime) {
793    return function (value) {
794        if (value != null) {
795            set$1(this, unit, value);
796            hooks.updateOffset(this, keepTime);
797            return this;
798        } else {
799            return get(this, unit);
800        }
801    };
802}
803
804function get (mom, unit) {
805    return mom.isValid() ?
806        mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
807}
808
809function set$1 (mom, unit, value) {
810    if (mom.isValid() && !isNaN(value)) {
811        if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
812            mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
813        }
814        else {
815            mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
816        }
817    }
818}
819
820// MOMENTS
821
822function stringGet (units) {
823    units = normalizeUnits(units);
824    if (isFunction(this[units])) {
825        return this[units]();
826    }
827    return this;
828}
829
830
831function stringSet (units, value) {
832    if (typeof units === 'object') {
833        units = normalizeObjectUnits(units);
834        var prioritized = getPrioritizedUnits(units);
835        for (var i = 0; i < prioritized.length; i++) {
836            this[prioritized[i].unit](units[prioritized[i].unit]);
837        }
838    } else {
839        units = normalizeUnits(units);
840        if (isFunction(this[units])) {
841            return this[units](value);
842        }
843    }
844    return this;
845}
846
847function mod(n, x) {
848    return ((n % x) + x) % x;
849}
850
851var indexOf;
852
853if (Array.prototype.indexOf) {
854    indexOf = Array.prototype.indexOf;
855} else {
856    indexOf = function (o) {
857        // I know
858        var i;
859        for (i = 0; i < this.length; ++i) {
860            if (this[i] === o) {
861                return i;
862            }
863        }
864        return -1;
865    };
866}
867
868function daysInMonth(year, month) {
869    if (isNaN(year) || isNaN(month)) {
870        return NaN;
871    }
872    var modMonth = mod(month, 12);
873    year += (month - modMonth) / 12;
874    return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);
875}
876
877// FORMATTING
878
879addFormatToken('M', ['MM', 2], 'Mo', function () {
880    return this.month() + 1;
881});
882
883addFormatToken('MMM', 0, 0, function (format) {
884    return this.localeData().monthsShort(this, format);
885});
886
887addFormatToken('MMMM', 0, 0, function (format) {
888    return this.localeData().months(this, format);
889});
890
891// ALIASES
892
893addUnitAlias('month', 'M');
894
895// PRIORITY
896
897addUnitPriority('month', 8);
898
899// PARSING
900
901addRegexToken('M',    match1to2);
902addRegexToken('MM',   match1to2, match2);
903addRegexToken('MMM',  function (isStrict, locale) {
904    return locale.monthsShortRegex(isStrict);
905});
906addRegexToken('MMMM', function (isStrict, locale) {
907    return locale.monthsRegex(isStrict);
908});
909
910addParseToken(['M', 'MM'], function (input, array) {
911    array[MONTH] = toInt(input) - 1;
912});
913
914addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
915    var month = config._locale.monthsParse(input, token, config._strict);
916    // if we didn't find a month name, mark the date as invalid.
917    if (month != null) {
918        array[MONTH] = month;
919    } else {
920        getParsingFlags(config).invalidMonth = input;
921    }
922});
923
924// LOCALES
925
926var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
927var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
928function localeMonths (m, format) {
929    if (!m) {
930        return isArray(this._months) ? this._months :
931            this._months['standalone'];
932    }
933    return isArray(this._months) ? this._months[m.month()] :
934        this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
935}
936
937var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
938function localeMonthsShort (m, format) {
939    if (!m) {
940        return isArray(this._monthsShort) ? this._monthsShort :
941            this._monthsShort['standalone'];
942    }
943    return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
944        this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
945}
946
947function handleStrictParse(monthName, format, strict) {
948    var i, ii, mom, llc = monthName.toLocaleLowerCase();
949    if (!this._monthsParse) {
950        // this is not used
951        this._monthsParse = [];
952        this._longMonthsParse = [];
953        this._shortMonthsParse = [];
954        for (i = 0; i < 12; ++i) {
955            mom = createUTC([2000, i]);
956            this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
957            this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
958        }
959    }
960
961    if (strict) {
962        if (format === 'MMM') {
963            ii = indexOf.call(this._shortMonthsParse, llc);
964            return ii !== -1 ? ii : null;
965        } else {
966            ii = indexOf.call(this._longMonthsParse, llc);
967            return ii !== -1 ? ii : null;
968        }
969    } else {
970        if (format === 'MMM') {
971            ii = indexOf.call(this._shortMonthsParse, llc);
972            if (ii !== -1) {
973                return ii;
974            }
975            ii = indexOf.call(this._longMonthsParse, llc);
976            return ii !== -1 ? ii : null;
977        } else {
978            ii = indexOf.call(this._longMonthsParse, llc);
979            if (ii !== -1) {
980                return ii;
981            }
982            ii = indexOf.call(this._shortMonthsParse, llc);
983            return ii !== -1 ? ii : null;
984        }
985    }
986}
987
988function localeMonthsParse (monthName, format, strict) {
989    var i, mom, regex;
990
991    if (this._monthsParseExact) {
992        return handleStrictParse.call(this, monthName, format, strict);
993    }
994
995    if (!this._monthsParse) {
996        this._monthsParse = [];
997        this._longMonthsParse = [];
998        this._shortMonthsParse = [];
999    }
1000
1001    // TODO: add sorting
1002    // Sorting makes sure if one month (or abbr) is a prefix of another
1003    // see sorting in computeMonthsParse
1004    for (i = 0; i < 12; i++) {
1005        // make the regex if we don't have it already
1006        mom = createUTC([2000, i]);
1007        if (strict && !this._longMonthsParse[i]) {
1008            this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
1009            this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
1010        }
1011        if (!strict && !this._monthsParse[i]) {
1012            regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1013            this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1014        }
1015        // test the regex
1016        if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
1017            return i;
1018        } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
1019            return i;
1020        } else if (!strict && this._monthsParse[i].test(monthName)) {
1021            return i;
1022        }
1023    }
1024}
1025
1026// MOMENTS
1027
1028function setMonth (mom, value) {
1029    var dayOfMonth;
1030
1031    if (!mom.isValid()) {
1032        // No op
1033        return mom;
1034    }
1035
1036    if (typeof value === 'string') {
1037        if (/^\d+$/.test(value)) {
1038            value = toInt(value);
1039        } else {
1040            value = mom.localeData().monthsParse(value);
1041            // TODO: Another silent failure?
1042            if (!isNumber(value)) {
1043                return mom;
1044            }
1045        }
1046    }
1047
1048    dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1049    mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1050    return mom;
1051}
1052
1053function getSetMonth (value) {
1054    if (value != null) {
1055        setMonth(this, value);
1056        hooks.updateOffset(this, true);
1057        return this;
1058    } else {
1059        return get(this, 'Month');
1060    }
1061}
1062
1063function getDaysInMonth () {
1064    return daysInMonth(this.year(), this.month());
1065}
1066
1067var defaultMonthsShortRegex = matchWord;
1068function monthsShortRegex (isStrict) {
1069    if (this._monthsParseExact) {
1070        if (!hasOwnProp(this, '_monthsRegex')) {
1071            computeMonthsParse.call(this);
1072        }
1073        if (isStrict) {
1074            return this._monthsShortStrictRegex;
1075        } else {
1076            return this._monthsShortRegex;
1077        }
1078    } else {
1079        if (!hasOwnProp(this, '_monthsShortRegex')) {
1080            this._monthsShortRegex = defaultMonthsShortRegex;
1081        }
1082        return this._monthsShortStrictRegex && isStrict ?
1083            this._monthsShortStrictRegex : this._monthsShortRegex;
1084    }
1085}
1086
1087var defaultMonthsRegex = matchWord;
1088function monthsRegex (isStrict) {
1089    if (this._monthsParseExact) {
1090        if (!hasOwnProp(this, '_monthsRegex')) {
1091            computeMonthsParse.call(this);
1092        }
1093        if (isStrict) {
1094            return this._monthsStrictRegex;
1095        } else {
1096            return this._monthsRegex;
1097        }
1098    } else {
1099        if (!hasOwnProp(this, '_monthsRegex')) {
1100            this._monthsRegex = defaultMonthsRegex;
1101        }
1102        return this._monthsStrictRegex && isStrict ?
1103            this._monthsStrictRegex : this._monthsRegex;
1104    }
1105}
1106
1107function computeMonthsParse () {
1108    function cmpLenRev(a, b) {
1109        return b.length - a.length;
1110    }
1111
1112    var shortPieces = [], longPieces = [], mixedPieces = [],
1113        i, mom;
1114    for (i = 0; i < 12; i++) {
1115        // make the regex if we don't have it already
1116        mom = createUTC([2000, i]);
1117        shortPieces.push(this.monthsShort(mom, ''));
1118        longPieces.push(this.months(mom, ''));
1119        mixedPieces.push(this.months(mom, ''));
1120        mixedPieces.push(this.monthsShort(mom, ''));
1121    }
1122    // Sorting makes sure if one month (or abbr) is a prefix of another it
1123    // will match the longer piece.
1124    shortPieces.sort(cmpLenRev);
1125    longPieces.sort(cmpLenRev);
1126    mixedPieces.sort(cmpLenRev);
1127    for (i = 0; i < 12; i++) {
1128        shortPieces[i] = regexEscape(shortPieces[i]);
1129        longPieces[i] = regexEscape(longPieces[i]);
1130    }
1131    for (i = 0; i < 24; i++) {
1132        mixedPieces[i] = regexEscape(mixedPieces[i]);
1133    }
1134
1135    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1136    this._monthsShortRegex = this._monthsRegex;
1137    this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1138    this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1139}
1140
1141function createDate (y, m, d, h, M, s, ms) {
1142    // can't just apply() to create a date:
1143    // https://stackoverflow.com/q/181348
1144    var date = new Date(y, m, d, h, M, s, ms);
1145
1146    // the date constructor remaps years 0-99 to 1900-1999
1147    if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
1148        date.setFullYear(y);
1149    }
1150    return date;
1151}
1152
1153function createUTCDate (y) {
1154    var date = new Date(Date.UTC.apply(null, arguments));
1155
1156    // the Date.UTC function remaps years 0-99 to 1900-1999
1157    if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
1158        date.setUTCFullYear(y);
1159    }
1160    return date;
1161}
1162
1163// start-of-first-week - start-of-year
1164function firstWeekOffset(year, dow, doy) {
1165    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1166        fwd = 7 + dow - doy,
1167        // first-week day local weekday -- which local weekday is fwd
1168        fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1169
1170    return -fwdlw + fwd - 1;
1171}
1172
1173// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1174function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1175    var localWeekday = (7 + weekday - dow) % 7,
1176        weekOffset = firstWeekOffset(year, dow, doy),
1177        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1178        resYear, resDayOfYear;
1179
1180    if (dayOfYear <= 0) {
1181        resYear = year - 1;
1182        resDayOfYear = daysInYear(resYear) + dayOfYear;
1183    } else if (dayOfYear > daysInYear(year)) {
1184        resYear = year + 1;
1185        resDayOfYear = dayOfYear - daysInYear(year);
1186    } else {
1187        resYear = year;
1188        resDayOfYear = dayOfYear;
1189    }
1190
1191    return {
1192        year: resYear,
1193        dayOfYear: resDayOfYear
1194    };
1195}
1196
1197function weekOfYear(mom, dow, doy) {
1198    var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1199        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1200        resWeek, resYear;
1201
1202    if (week < 1) {
1203        resYear = mom.year() - 1;
1204        resWeek = week + weeksInYear(resYear, dow, doy);
1205    } else if (week > weeksInYear(mom.year(), dow, doy)) {
1206        resWeek = week - weeksInYear(mom.year(), dow, doy);
1207        resYear = mom.year() + 1;
1208    } else {
1209        resYear = mom.year();
1210        resWeek = week;
1211    }
1212
1213    return {
1214        week: resWeek,
1215        year: resYear
1216    };
1217}
1218
1219function weeksInYear(year, dow, doy) {
1220    var weekOffset = firstWeekOffset(year, dow, doy),
1221        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1222    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1223}
1224
1225// FORMATTING
1226
1227addFormatToken('w', ['ww', 2], 'wo', 'week');
1228addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1229
1230// ALIASES
1231
1232addUnitAlias('week', 'w');
1233addUnitAlias('isoWeek', 'W');
1234
1235// PRIORITIES
1236
1237addUnitPriority('week', 5);
1238addUnitPriority('isoWeek', 5);
1239
1240// PARSING
1241
1242addRegexToken('w',  match1to2);
1243addRegexToken('ww', match1to2, match2);
1244addRegexToken('W',  match1to2);
1245addRegexToken('WW', match1to2, match2);
1246
1247addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
1248    week[token.substr(0, 1)] = toInt(input);
1249});
1250
1251// HELPERS
1252
1253// LOCALES
1254
1255function localeWeek (mom) {
1256    return weekOfYear(mom, this._week.dow, this._week.doy).week;
1257}
1258
1259var defaultLocaleWeek = {
1260    dow : 0, // Sunday is the first day of the week.
1261    doy : 6  // The week that contains Jan 1st is the first week of the year.
1262};
1263
1264function localeFirstDayOfWeek () {
1265    return this._week.dow;
1266}
1267
1268function localeFirstDayOfYear () {
1269    return this._week.doy;
1270}
1271
1272// MOMENTS
1273
1274function getSetWeek (input) {
1275    var week = this.localeData().week(this);
1276    return input == null ? week : this.add((input - week) * 7, 'd');
1277}
1278
1279function getSetISOWeek (input) {
1280    var week = weekOfYear(this, 1, 4).week;
1281    return input == null ? week : this.add((input - week) * 7, 'd');
1282}
1283
1284// FORMATTING
1285
1286addFormatToken('d', 0, 'do', 'day');
1287
1288addFormatToken('dd', 0, 0, function (format) {
1289    return this.localeData().weekdaysMin(this, format);
1290});
1291
1292addFormatToken('ddd', 0, 0, function (format) {
1293    return this.localeData().weekdaysShort(this, format);
1294});
1295
1296addFormatToken('dddd', 0, 0, function (format) {
1297    return this.localeData().weekdays(this, format);
1298});
1299
1300addFormatToken('e', 0, 0, 'weekday');
1301addFormatToken('E', 0, 0, 'isoWeekday');
1302
1303// ALIASES
1304
1305addUnitAlias('day', 'd');
1306addUnitAlias('weekday', 'e');
1307addUnitAlias('isoWeekday', 'E');
1308
1309// PRIORITY
1310addUnitPriority('day', 11);
1311addUnitPriority('weekday', 11);
1312addUnitPriority('isoWeekday', 11);
1313
1314// PARSING
1315
1316addRegexToken('d',    match1to2);
1317addRegexToken('e',    match1to2);
1318addRegexToken('E',    match1to2);
1319addRegexToken('dd',   function (isStrict, locale) {
1320    return locale.weekdaysMinRegex(isStrict);
1321});
1322addRegexToken('ddd',   function (isStrict, locale) {
1323    return locale.weekdaysShortRegex(isStrict);
1324});
1325addRegexToken('dddd',   function (isStrict, locale) {
1326    return locale.weekdaysRegex(isStrict);
1327});
1328
1329addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1330    var weekday = config._locale.weekdaysParse(input, token, config._strict);
1331    // if we didn't get a weekday name, mark the date as invalid
1332    if (weekday != null) {
1333        week.d = weekday;
1334    } else {
1335        getParsingFlags(config).invalidWeekday = input;
1336    }
1337});
1338
1339addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1340    week[token] = toInt(input);
1341});
1342
1343// HELPERS
1344
1345function parseWeekday(input, locale) {
1346    if (typeof input !== 'string') {
1347        return input;
1348    }
1349
1350    if (!isNaN(input)) {
1351        return parseInt(input, 10);
1352    }
1353
1354    input = locale.weekdaysParse(input);
1355    if (typeof input === 'number') {
1356        return input;
1357    }
1358
1359    return null;
1360}
1361
1362function parseIsoWeekday(input, locale) {
1363    if (typeof input === 'string') {
1364        return locale.weekdaysParse(input) % 7 || 7;
1365    }
1366    return isNaN(input) ? null : input;
1367}
1368
1369// LOCALES
1370
1371var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
1372function localeWeekdays (m, format) {
1373    if (!m) {
1374        return isArray(this._weekdays) ? this._weekdays :
1375            this._weekdays['standalone'];
1376    }
1377    return isArray(this._weekdays) ? this._weekdays[m.day()] :
1378        this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
1379}
1380
1381var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
1382function localeWeekdaysShort (m) {
1383    return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
1384}
1385
1386var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
1387function localeWeekdaysMin (m) {
1388    return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
1389}
1390
1391function handleStrictParse$1(weekdayName, format, strict) {
1392    var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
1393    if (!this._weekdaysParse) {
1394        this._weekdaysParse = [];
1395        this._shortWeekdaysParse = [];
1396        this._minWeekdaysParse = [];
1397
1398        for (i = 0; i < 7; ++i) {
1399            mom = createUTC([2000, 1]).day(i);
1400            this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
1401            this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
1402            this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1403        }
1404    }
1405
1406    if (strict) {
1407        if (format === 'dddd') {
1408            ii = indexOf.call(this._weekdaysParse, llc);
1409            return ii !== -1 ? ii : null;
1410        } else if (format === 'ddd') {
1411            ii = indexOf.call(this._shortWeekdaysParse, llc);
1412            return ii !== -1 ? ii : null;
1413        } else {
1414            ii = indexOf.call(this._minWeekdaysParse, llc);
1415            return ii !== -1 ? ii : null;
1416        }
1417    } else {
1418        if (format === 'dddd') {
1419            ii = indexOf.call(this._weekdaysParse, llc);
1420            if (ii !== -1) {
1421                return ii;
1422            }
1423            ii = indexOf.call(this._shortWeekdaysParse, llc);
1424            if (ii !== -1) {
1425                return ii;
1426            }
1427            ii = indexOf.call(this._minWeekdaysParse, llc);
1428            return ii !== -1 ? ii : null;
1429        } else if (format === 'ddd') {
1430            ii = indexOf.call(this._shortWeekdaysParse, llc);
1431            if (ii !== -1) {
1432                return ii;
1433            }
1434            ii = indexOf.call(this._weekdaysParse, llc);
1435            if (ii !== -1) {
1436                return ii;
1437            }
1438            ii = indexOf.call(this._minWeekdaysParse, llc);
1439            return ii !== -1 ? ii : null;
1440        } else {
1441            ii = indexOf.call(this._minWeekdaysParse, llc);
1442            if (ii !== -1) {
1443                return ii;
1444            }
1445            ii = indexOf.call(this._weekdaysParse, llc);
1446            if (ii !== -1) {
1447                return ii;
1448            }
1449            ii = indexOf.call(this._shortWeekdaysParse, llc);
1450            return ii !== -1 ? ii : null;
1451        }
1452    }
1453}
1454
1455function localeWeekdaysParse (weekdayName, format, strict) {
1456    var i, mom, regex;
1457
1458    if (this._weekdaysParseExact) {
1459        return handleStrictParse$1.call(this, weekdayName, format, strict);
1460    }
1461
1462    if (!this._weekdaysParse) {
1463        this._weekdaysParse = [];
1464        this._minWeekdaysParse = [];
1465        this._shortWeekdaysParse = [];
1466        this._fullWeekdaysParse = [];
1467    }
1468
1469    for (i = 0; i < 7; i++) {
1470        // make the regex if we don't have it already
1471
1472        mom = createUTC([2000, 1]).day(i);
1473        if (strict && !this._fullWeekdaysParse[i]) {
1474            this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
1475            this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
1476            this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
1477        }
1478        if (!this._weekdaysParse[i]) {
1479            regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
1480            this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1481        }
1482        // test the regex
1483        if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
1484            return i;
1485        } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
1486            return i;
1487        } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
1488            return i;
1489        } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1490            return i;
1491        }
1492    }
1493}
1494
1495// MOMENTS
1496
1497function getSetDayOfWeek (input) {
1498    if (!this.isValid()) {
1499        return input != null ? this : NaN;
1500    }
1501    var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1502    if (input != null) {
1503        input = parseWeekday(input, this.localeData());
1504        return this.add(input - day, 'd');
1505    } else {
1506        return day;
1507    }
1508}
1509
1510function getSetLocaleDayOfWeek (input) {
1511    if (!this.isValid()) {
1512        return input != null ? this : NaN;
1513    }
1514    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1515    return input == null ? weekday : this.add(input - weekday, 'd');
1516}
1517
1518function getSetISODayOfWeek (input) {
1519    if (!this.isValid()) {
1520        return input != null ? this : NaN;
1521    }
1522
1523    // behaves the same as moment#day except
1524    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1525    // as a setter, sunday should belong to the previous week.
1526
1527    if (input != null) {
1528        var weekday = parseIsoWeekday(input, this.localeData());
1529        return this.day(this.day() % 7 ? weekday : weekday - 7);
1530    } else {
1531        return this.day() || 7;
1532    }
1533}
1534
1535var defaultWeekdaysRegex = matchWord;
1536function weekdaysRegex (isStrict) {
1537    if (this._weekdaysParseExact) {
1538        if (!hasOwnProp(this, '_weekdaysRegex')) {
1539            computeWeekdaysParse.call(this);
1540        }
1541        if (isStrict) {
1542            return this._weekdaysStrictRegex;
1543        } else {
1544            return this._weekdaysRegex;
1545        }
1546    } else {
1547        if (!hasOwnProp(this, '_weekdaysRegex')) {
1548            this._weekdaysRegex = defaultWeekdaysRegex;
1549        }
1550        return this._weekdaysStrictRegex && isStrict ?
1551            this._weekdaysStrictRegex : this._weekdaysRegex;
1552    }
1553}
1554
1555var defaultWeekdaysShortRegex = matchWord;
1556function weekdaysShortRegex (isStrict) {
1557    if (this._weekdaysParseExact) {
1558        if (!hasOwnProp(this, '_weekdaysRegex')) {
1559            computeWeekdaysParse.call(this);
1560        }
1561        if (isStrict) {
1562            return this._weekdaysShortStrictRegex;
1563        } else {
1564            return this._weekdaysShortRegex;
1565        }
1566    } else {
1567        if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1568            this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1569        }
1570        return this._weekdaysShortStrictRegex && isStrict ?
1571            this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
1572    }
1573}
1574
1575var defaultWeekdaysMinRegex = matchWord;
1576function weekdaysMinRegex (isStrict) {
1577    if (this._weekdaysParseExact) {
1578        if (!hasOwnProp(this, '_weekdaysRegex')) {
1579            computeWeekdaysParse.call(this);
1580        }
1581        if (isStrict) {
1582            return this._weekdaysMinStrictRegex;
1583        } else {
1584            return this._weekdaysMinRegex;
1585        }
1586    } else {
1587        if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1588            this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1589        }
1590        return this._weekdaysMinStrictRegex && isStrict ?
1591            this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
1592    }
1593}
1594
1595
1596function computeWeekdaysParse () {
1597    function cmpLenRev(a, b) {
1598        return b.length - a.length;
1599    }
1600
1601    var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
1602        i, mom, minp, shortp, longp;
1603    for (i = 0; i < 7; i++) {
1604        // make the regex if we don't have it already
1605        mom = createUTC([2000, 1]).day(i);
1606        minp = this.weekdaysMin(mom, '');
1607        shortp = this.weekdaysShort(mom, '');
1608        longp = this.weekdays(mom, '');
1609        minPieces.push(minp);
1610        shortPieces.push(shortp);
1611        longPieces.push(longp);
1612        mixedPieces.push(minp);
1613        mixedPieces.push(shortp);
1614        mixedPieces.push(longp);
1615    }
1616    // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1617    // will match the longer piece.
1618    minPieces.sort(cmpLenRev);
1619    shortPieces.sort(cmpLenRev);
1620    longPieces.sort(cmpLenRev);
1621    mixedPieces.sort(cmpLenRev);
1622    for (i = 0; i < 7; i++) {
1623        shortPieces[i] = regexEscape(shortPieces[i]);
1624        longPieces[i] = regexEscape(longPieces[i]);
1625        mixedPieces[i] = regexEscape(mixedPieces[i]);
1626    }
1627
1628    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1629    this._weekdaysShortRegex = this._weekdaysRegex;
1630    this._weekdaysMinRegex = this._weekdaysRegex;
1631
1632    this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1633    this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1634    this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
1635}
1636
1637// FORMATTING
1638
1639function hFormat() {
1640    return this.hours() % 12 || 12;
1641}
1642
1643function kFormat() {
1644    return this.hours() || 24;
1645}
1646
1647addFormatToken('H', ['HH', 2], 0, 'hour');
1648addFormatToken('h', ['hh', 2], 0, hFormat);
1649addFormatToken('k', ['kk', 2], 0, kFormat);
1650
1651addFormatToken('hmm', 0, 0, function () {
1652    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1653});
1654
1655addFormatToken('hmmss', 0, 0, function () {
1656    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
1657        zeroFill(this.seconds(), 2);
1658});
1659
1660addFormatToken('Hmm', 0, 0, function () {
1661    return '' + this.hours() + zeroFill(this.minutes(), 2);
1662});
1663
1664addFormatToken('Hmmss', 0, 0, function () {
1665    return '' + this.hours() + zeroFill(this.minutes(), 2) +
1666        zeroFill(this.seconds(), 2);
1667});
1668
1669function meridiem (token, lowercase) {
1670    addFormatToken(token, 0, 0, function () {
1671        return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
1672    });
1673}
1674
1675meridiem('a', true);
1676meridiem('A', false);
1677
1678// ALIASES
1679
1680addUnitAlias('hour', 'h');
1681
1682// PRIORITY
1683addUnitPriority('hour', 13);
1684
1685// PARSING
1686
1687function matchMeridiem (isStrict, locale) {
1688    return locale._meridiemParse;
1689}
1690
1691addRegexToken('a',  matchMeridiem);
1692addRegexToken('A',  matchMeridiem);
1693addRegexToken('H',  match1to2);
1694addRegexToken('h',  match1to2);
1695addRegexToken('k',  match1to2);
1696addRegexToken('HH', match1to2, match2);
1697addRegexToken('hh', match1to2, match2);
1698addRegexToken('kk', match1to2, match2);
1699
1700addRegexToken('hmm', match3to4);
1701addRegexToken('hmmss', match5to6);
1702addRegexToken('Hmm', match3to4);
1703addRegexToken('Hmmss', match5to6);
1704
1705addParseToken(['H', 'HH'], HOUR);
1706addParseToken(['k', 'kk'], function (input, array, config) {
1707    var kInput = toInt(input);
1708    array[HOUR] = kInput === 24 ? 0 : kInput;
1709});
1710addParseToken(['a', 'A'], function (input, array, config) {
1711    config._isPm = config._locale.isPM(input);
1712    config._meridiem = input;
1713});
1714addParseToken(['h', 'hh'], function (input, array, config) {
1715    array[HOUR] = toInt(input);
1716    getParsingFlags(config).bigHour = true;
1717});
1718addParseToken('hmm', function (input, array, config) {
1719    var pos = input.length - 2;
1720    array[HOUR] = toInt(input.substr(0, pos));
1721    array[MINUTE] = toInt(input.substr(pos));
1722    getParsingFlags(config).bigHour = true;
1723});
1724addParseToken('hmmss', function (input, array, config) {
1725    var pos1 = input.length - 4;
1726    var pos2 = input.length - 2;
1727    array[HOUR] = toInt(input.substr(0, pos1));
1728    array[MINUTE] = toInt(input.substr(pos1, 2));
1729    array[SECOND] = toInt(input.substr(pos2));
1730    getParsingFlags(config).bigHour = true;
1731});
1732addParseToken('Hmm', function (input, array, config) {
1733    var pos = input.length - 2;
1734    array[HOUR] = toInt(input.substr(0, pos));
1735    array[MINUTE] = toInt(input.substr(pos));
1736});
1737addParseToken('Hmmss', function (input, array, config) {
1738    var pos1 = input.length - 4;
1739    var pos2 = input.length - 2;
1740    array[HOUR] = toInt(input.substr(0, pos1));
1741    array[MINUTE] = toInt(input.substr(pos1, 2));
1742    array[SECOND] = toInt(input.substr(pos2));
1743});
1744
1745// LOCALES
1746
1747function localeIsPM (input) {
1748    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1749    // Using charAt should be more compatible.
1750    return ((input + '').toLowerCase().charAt(0) === 'p');
1751}
1752
1753var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
1754function localeMeridiem (hours, minutes, isLower) {
1755    if (hours > 11) {
1756        return isLower ? 'pm' : 'PM';
1757    } else {
1758        return isLower ? 'am' : 'AM';
1759    }
1760}
1761
1762
1763// MOMENTS
1764
1765// Setting the hour should keep the time, because the user explicitly
1766// specified which hour he wants. So trying to maintain the same hour (in
1767// a new timezone) makes sense. Adding/subtracting hours does not follow
1768// this rule.
1769var getSetHour = makeGetSet('Hours', true);
1770
1771// months
1772// week
1773// weekdays
1774// meridiem
1775var baseConfig = {
1776    calendar: defaultCalendar,
1777    longDateFormat: defaultLongDateFormat,
1778    invalidDate: defaultInvalidDate,
1779    ordinal: defaultOrdinal,
1780    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
1781    relativeTime: defaultRelativeTime,
1782
1783    months: defaultLocaleMonths,
1784    monthsShort: defaultLocaleMonthsShort,
1785
1786    week: defaultLocaleWeek,
1787
1788    weekdays: defaultLocaleWeekdays,
1789    weekdaysMin: defaultLocaleWeekdaysMin,
1790    weekdaysShort: defaultLocaleWeekdaysShort,
1791
1792    meridiemParse: defaultLocaleMeridiemParse
1793};
1794
1795// internal storage for locale config files
1796var locales = {};
1797var localeFamilies = {};
1798var globalLocale;
1799
1800function normalizeLocale(key) {
1801    return key ? key.toLowerCase().replace('_', '-') : key;
1802}
1803
1804// pick the locale from the array
1805// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
1806// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
1807function chooseLocale(names) {
1808    var i = 0, j, next, locale, split;
1809
1810    while (i < names.length) {
1811        split = normalizeLocale(names[i]).split('-');
1812        j = split.length;
1813        next = normalizeLocale(names[i + 1]);
1814        next = next ? next.split('-') : null;
1815        while (j > 0) {
1816            locale = loadLocale(split.slice(0, j).join('-'));
1817            if (locale) {
1818                return locale;
1819            }
1820            if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
1821                //the next array item is better than a shallower substring of this one
1822                break;
1823            }
1824            j--;
1825        }
1826        i++;
1827    }
1828    return null;
1829}
1830
1831function loadLocale(name) {
1832    var oldLocale = null;
1833    // TODO: Find a better way to register and load all the locales in Node
1834    if (!locales[name] && (typeof module !== 'undefined') &&
1835            module && module.exports) {
1836        try {
1837            oldLocale = globalLocale._abbr;
1838            var aliasedRequire = require;
1839            aliasedRequire('./locale/' + name);
1840            getSetGlobalLocale(oldLocale);
1841        } catch (e) {}
1842    }
1843    return locales[name];
1844}
1845
1846// This function will load locale and then set the global locale.  If
1847// no arguments are passed in, it will simply return the current global
1848// locale key.
1849function getSetGlobalLocale (key, values) {
1850    var data;
1851    if (key) {
1852        if (isUndefined(values)) {
1853            data = getLocale(key);
1854        }
1855        else {
1856            data = defineLocale(key, values);
1857        }
1858
1859        if (data) {
1860            // moment.duration._locale = moment._locale = data;
1861            globalLocale = data;
1862        }
1863    }
1864
1865    return globalLocale._abbr;
1866}
1867
1868function defineLocale (name, config) {
1869    if (config !== null) {
1870        var parentConfig = baseConfig;
1871        config.abbr = name;
1872        if (locales[name] != null) {
1873            deprecateSimple('defineLocaleOverride',
1874                    'use moment.updateLocale(localeName, config) to change ' +
1875                    'an existing locale. moment.defineLocale(localeName, ' +
1876                    'config) should only be used for creating a new locale ' +
1877                    'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
1878            parentConfig = locales[name]._config;
1879        } else if (config.parentLocale != null) {
1880            if (locales[config.parentLocale] != null) {
1881                parentConfig = locales[config.parentLocale]._config;
1882            } else {
1883                if (!localeFamilies[config.parentLocale]) {
1884                    localeFamilies[config.parentLocale] = [];
1885                }
1886                localeFamilies[config.parentLocale].push({
1887                    name: name,
1888                    config: config
1889                });
1890                return null;
1891            }
1892        }
1893        locales[name] = new Locale(mergeConfigs(parentConfig, config));
1894
1895        if (localeFamilies[name]) {
1896            localeFamilies[name].forEach(function (x) {
1897                defineLocale(x.name, x.config);
1898            });
1899        }
1900
1901        // backwards compat for now: also set the locale
1902        // make sure we set the locale AFTER all child locales have been
1903        // created, so we won't end up with the child locale set.
1904        getSetGlobalLocale(name);
1905
1906
1907        return locales[name];
1908    } else {
1909        // useful for testing
1910        delete locales[name];
1911        return null;
1912    }
1913}
1914
1915function updateLocale(name, config) {
1916    if (config != null) {
1917        var locale, tmpLocale, parentConfig = baseConfig;
1918        // MERGE
1919        tmpLocale = loadLocale(name);
1920        if (tmpLocale != null) {
1921            parentConfig = tmpLocale._config;
1922        }
1923        config = mergeConfigs(parentConfig, config);
1924        locale = new Locale(config);
1925        locale.parentLocale = locales[name];
1926        locales[name] = locale;
1927
1928        // backwards compat for now: also set the locale
1929        getSetGlobalLocale(name);
1930    } else {
1931        // pass null for config to unupdate, useful for tests
1932        if (locales[name] != null) {
1933            if (locales[name].parentLocale != null) {
1934                locales[name] = locales[name].parentLocale;
1935            } else if (locales[name] != null) {
1936                delete locales[name];
1937            }
1938        }
1939    }
1940    return locales[name];
1941}
1942
1943// returns locale data
1944function getLocale (key) {
1945    var locale;
1946
1947    if (key && key._locale && key._locale._abbr) {
1948        key = key._locale._abbr;
1949    }
1950
1951    if (!key) {
1952        return globalLocale;
1953    }
1954
1955    if (!isArray(key)) {
1956        //short-circuit everything else
1957        locale = loadLocale(key);
1958        if (locale) {
1959            return locale;
1960        }
1961        key = [key];
1962    }
1963
1964    return chooseLocale(key);
1965}
1966
1967function listLocales() {
1968    return keys(locales);
1969}
1970
1971function checkOverflow (m) {
1972    var overflow;
1973    var a = m._a;
1974
1975    if (a && getParsingFlags(m).overflow === -2) {
1976        overflow =
1977            a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :
1978            a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
1979            a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
1980            a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :
1981            a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :
1982            a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
1983            -1;
1984
1985        if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
1986            overflow = DATE;
1987        }
1988        if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
1989            overflow = WEEK;
1990        }
1991        if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
1992            overflow = WEEKDAY;
1993        }
1994
1995        getParsingFlags(m).overflow = overflow;
1996    }
1997
1998    return m;
1999}
2000
2001// Pick the first defined of two or three arguments.
2002function defaults(a, b, c) {
2003    if (a != null) {
2004        return a;
2005    }
2006    if (b != null) {
2007        return b;
2008    }
2009    return c;
2010}
2011
2012function currentDateArray(config) {
2013    // hooks is actually the exported moment object
2014    var nowValue = new Date(hooks.now());
2015    if (config._useUTC) {
2016        return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
2017    }
2018    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2019}
2020
2021// convert an array to a date.
2022// the array should mirror the parameters below
2023// note: all values past the year are optional and will default to the lowest possible value.
2024// [year, month, day , hour, minute, second, millisecond]
2025function configFromArray (config) {
2026    var i, date, input = [], currentDate, yearToUse;
2027
2028    if (config._d) {
2029        return;
2030    }
2031
2032    currentDate = currentDateArray(config);
2033
2034    //compute day of the year from weeks and weekdays
2035    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2036        dayOfYearFromWeekInfo(config);
2037    }
2038
2039    //if the day of the year is set, figure out what it is
2040    if (config._dayOfYear != null) {
2041        yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2042
2043        if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
2044            getParsingFlags(config)._overflowDayOfYear = true;
2045        }
2046
2047        date = createUTCDate(yearToUse, 0, config._dayOfYear);
2048        config._a[MONTH] = date.getUTCMonth();
2049        config._a[DATE] = date.getUTCDate();
2050    }
2051
2052    // Default to current date.
2053    // * if no year, month, day of month are given, default to today
2054    // * if day of month is given, default month and year
2055    // * if month is given, default only year
2056    // * if year is given, don't default anything
2057    for (i = 0; i < 3 && config._a[i] == null; ++i) {
2058        config._a[i] = input[i] = currentDate[i];
2059    }
2060
2061    // Zero out whatever was not defaulted, including time
2062    for (; i < 7; i++) {
2063        config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
2064    }
2065
2066    // Check for 24:00:00.000
2067    if (config._a[HOUR] === 24 &&
2068            config._a[MINUTE] === 0 &&
2069            config._a[SECOND] === 0 &&
2070            config._a[MILLISECOND] === 0) {
2071        config._nextDay = true;
2072        config._a[HOUR] = 0;
2073    }
2074
2075    config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
2076    // Apply timezone offset from input. The actual utcOffset can be changed
2077    // with parseZone.
2078    if (config._tzm != null) {
2079        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2080    }
2081
2082    if (config._nextDay) {
2083        config._a[HOUR] = 24;
2084    }
2085
2086    // check for mismatching day of week
2087    if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== config._d.getDay()) {
2088        getParsingFlags(config).weekdayMismatch = true;
2089    }
2090}
2091
2092function dayOfYearFromWeekInfo(config) {
2093    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
2094
2095    w = config._w;
2096    if (w.GG != null || w.W != null || w.E != null) {
2097        dow = 1;
2098        doy = 4;
2099
2100        // TODO: We need to take the current isoWeekYear, but that depends on
2101        // how we interpret now (local, utc, fixed offset). So create
2102        // a now version of current config (take local/utc/offset flags, and
2103        // create now).
2104        weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
2105        week = defaults(w.W, 1);
2106        weekday = defaults(w.E, 1);
2107        if (weekday < 1 || weekday > 7) {
2108            weekdayOverflow = true;
2109        }
2110    } else {
2111        dow = config._locale._week.dow;
2112        doy = config._locale._week.doy;
2113
2114        var curWeek = weekOfYear(createLocal(), dow, doy);
2115
2116        weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2117
2118        // Default to current week.
2119        week = defaults(w.w, curWeek.week);
2120
2121        if (w.d != null) {
2122            // weekday -- low day numbers are considered next week
2123            weekday = w.d;
2124            if (weekday < 0 || weekday > 6) {
2125                weekdayOverflow = true;
2126            }
2127        } else if (w.e != null) {
2128            // local weekday -- counting starts from begining of week
2129            weekday = w.e + dow;
2130            if (w.e < 0 || w.e > 6) {
2131                weekdayOverflow = true;
2132            }
2133        } else {
2134            // default to begining of week
2135            weekday = dow;
2136        }
2137    }
2138    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2139        getParsingFlags(config)._overflowWeeks = true;
2140    } else if (weekdayOverflow != null) {
2141        getParsingFlags(config)._overflowWeekday = true;
2142    } else {
2143        temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2144        config._a[YEAR] = temp.year;
2145        config._dayOfYear = temp.dayOfYear;
2146    }
2147}
2148
2149// iso 8601 regex
2150// 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)
2151var extendedIsoRegex = /^\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)?)?$/;
2152var basicIsoRegex = /^\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)?)?$/;
2153
2154var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
2155
2156var isoDates = [
2157    ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2158    ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2159    ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2160    ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2161    ['YYYY-DDD', /\d{4}-\d{3}/],
2162    ['YYYY-MM', /\d{4}-\d\d/, false],
2163    ['YYYYYYMMDD', /[+-]\d{10}/],
2164    ['YYYYMMDD', /\d{8}/],
2165    // YYYYMM is NOT allowed by the standard
2166    ['GGGG[W]WWE', /\d{4}W\d{3}/],
2167    ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2168    ['YYYYDDD', /\d{7}/]
2169];
2170
2171// iso time formats and regexes
2172var isoTimes = [
2173    ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2174    ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2175    ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2176    ['HH:mm', /\d\d:\d\d/],
2177    ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2178    ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2179    ['HHmmss', /\d\d\d\d\d\d/],
2180    ['HHmm', /\d\d\d\d/],
2181    ['HH', /\d\d/]
2182];
2183
2184var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
2185
2186// date from iso format
2187function configFromISO(config) {
2188    var i, l,
2189        string = config._i,
2190        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2191        allowTime, dateFormat, timeFormat, tzFormat;
2192
2193    if (match) {
2194        getParsingFlags(config).iso = true;
2195
2196        for (i = 0, l = isoDates.length; i < l; i++) {
2197            if (isoDates[i][1].exec(match[1])) {
2198                dateFormat = isoDates[i][0];
2199                allowTime = isoDates[i][2] !== false;
2200                break;
2201            }
2202        }
2203        if (dateFormat == null) {
2204            config._isValid = false;
2205            return;
2206        }
2207        if (match[3]) {
2208            for (i = 0, l = isoTimes.length; i < l; i++) {
2209                if (isoTimes[i][1].exec(match[3])) {
2210                    // match[2] should be 'T' or space
2211                    timeFormat = (match[2] || ' ') + isoTimes[i][0];
2212                    break;
2213                }
2214            }
2215            if (timeFormat == null) {
2216                config._isValid = false;
2217                return;
2218            }
2219        }
2220        if (!allowTime && timeFormat != null) {
2221            config._isValid = false;
2222            return;
2223        }
2224        if (match[4]) {
2225            if (tzRegex.exec(match[4])) {
2226                tzFormat = 'Z';
2227            } else {
2228                config._isValid = false;
2229                return;
2230            }
2231        }
2232        config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2233        configFromStringAndFormat(config);
2234    } else {
2235        config._isValid = false;
2236    }
2237}
2238
2239// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2240var rfc2822 = /^(?:(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}))$/;
2241
2242function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
2243    var result = [
2244        untruncateYear(yearStr),
2245        defaultLocaleMonthsShort.indexOf(monthStr),
2246        parseInt(dayStr, 10),
2247        parseInt(hourStr, 10),
2248        parseInt(minuteStr, 10)
2249    ];
2250
2251    if (secondStr) {
2252        result.push(parseInt(secondStr, 10));
2253    }
2254
2255    return result;
2256}
2257
2258function untruncateYear(yearStr) {
2259    var year = parseInt(yearStr, 10);
2260    if (year <= 49) {
2261        return 2000 + year;
2262    } else if (year <= 999) {
2263        return 1900 + year;
2264    }
2265    return year;
2266}
2267
2268function preprocessRFC2822(s) {
2269    // Remove comments and folding whitespace and replace multiple-spaces with a single space
2270    return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').trim(
vendor: 6,917 bytes, lines 2270-2499
2270);
2271}
2272
2273function checkWeekday(weekdayStr, parsedInput, config) {
2274    if (weekdayStr) {
2275        // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
2276        var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2277            weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
2278        if (weekdayProvided !== weekdayActual) {
2279            getParsingFlags(config).weekdayMismatch = true;
2280            config._isValid = false;
2281            return false;
2282        }
2283    }
2284    return true;
2285}
2286
2287var obsOffsets = {
2288    UT: 0,
2289    GMT: 0,
2290    EDT: -4 * 60,
2291    EST: -5 * 60,
2292    CDT: -5 * 60,
2293    CST: -6 * 60,
2294    MDT: -6 * 60,
2295    MST: -7 * 60,
2296    PDT: -7 * 60,
2297    PST: -8 * 60
2298};
2299
2300function calculateOffset(obsOffset, militaryOffset, numOffset) {
2301    if (obsOffset) {
2302        return obsOffsets[obsOffset];
2303    } else if (militaryOffset) {
2304        // the only allowed military tz is Z
2305        return 0;
2306    } else {
2307        var hm = parseInt(numOffset, 10);
2308        var m = hm % 100, h = (hm - m) / 100;
2309        return h * 60 + m;
2310    }
2311}
2312
2313// date and time from ref 2822 format
2314function configFromRFC2822(config) {
2315    var match = rfc2822.exec(preprocessRFC2822(config._i));
2316    if (match) {
2317        var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
2318        if (!checkWeekday(match[1], parsedArray, config)) {
2319            return;
2320        }
2321
2322        config._a = parsedArray;
2323        config._tzm = calculateOffset(match[8], match[9], match[10]);
2324
2325        config._d = createUTCDate.apply(null, config._a);
2326        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2327
2328        getParsingFlags(config).rfc2822 = true;
2329    } else {
2330        config._isValid = false;
2331    }
2332}
2333
2334// date from iso format or fallback
2335function configFromString(config) {
2336    var matched = aspNetJsonRegex.exec(config._i);
2337
2338    if (matched !== null) {
2339        config._d = new Date(+matched[1]);
2340        return;
2341    }
2342
2343    configFromISO(config);
2344    if (config._isValid === false) {
2345        delete config._isValid;
2346    } else {
2347        return;
2348    }
2349
2350    configFromRFC2822(config);
2351    if (config._isValid === false) {
2352        delete config._isValid;
2353    } else {
2354        return;
2355    }
2356
2357    // Final attempt, use Input Fallback
2358    hooks.createFromInputFallback(config);
2359}
2360
2361hooks.createFromInputFallback = deprecate(
2362    'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2363    'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2364    'discouraged and will be removed in an upcoming major release. Please refer to ' +
2365    'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2366    function (config) {
2367        config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2368    }
2369);
2370
2371// constant that refers to the ISO standard
2372hooks.ISO_8601 = function () {};
2373
2374// constant that refers to the RFC 2822 form
2375hooks.RFC_2822 = function () {};
2376
2377// date from string and format string
2378function configFromStringAndFormat(config) {
2379    // TODO: Move this to another part of the creation flow to prevent circular deps
2380    if (config._f === hooks.ISO_8601) {
2381        configFromISO(config);
2382        return;
2383    }
2384    if (config._f === hooks.RFC_2822) {
2385        configFromRFC2822(config);
2386        return;
2387    }
2388    config._a = [];
2389    getParsingFlags(config).empty = true;
2390
2391    // This array is used to make a Date, either with `new Date` or `Date.UTC`
2392    var string = '' + config._i,
2393        i, parsedInput, tokens, token, skipped,
2394        stringLength = string.length,
2395        totalParsedInputLength = 0;
2396
2397    tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
2398
2399    for (i = 0; i < tokens.length; i++) {
2400        token = tokens[i];
2401        parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
2402        // console.log('token', token, 'parsedInput', parsedInput,
2403        //         'regex', getParseRegexForToken(token, config));
2404        if (parsedInput) {
2405            skipped = string.substr(0, string.indexOf(parsedInput));
2406            if (skipped.length > 0) {
2407                getParsingFlags(config).unusedInput.push(skipped);
2408            }
2409            string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
2410            totalParsedInputLength += parsedInput.length;
2411        }
2412        // don't parse if it's not a known token
2413        if (formatTokenFunctions[token]) {
2414            if (parsedInput) {
2415                getParsingFlags(config).empty = false;
2416            }
2417            else {
2418                getParsingFlags(config).unusedTokens.push(token);
2419            }
2420            addTimeToArrayFromToken(token, parsedInput, config);
2421        }
2422        else if (config._strict && !parsedInput) {
2423            getParsingFlags(config).unusedTokens.push(token);
2424        }
2425    }
2426
2427    // add remaining unparsed input length to the string
2428    getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
2429    if (string.length > 0) {
2430        getParsingFlags(config).unusedInput.push(string);
2431    }
2432
2433    // clear _12h flag if hour is <= 12
2434    if (config._a[HOUR] <= 12 &&
2435        getParsingFlags(config).bigHour === true &&
2436        config._a[HOUR] > 0) {
2437        getParsingFlags(config).bigHour = undefined;
2438    }
2439
2440    getParsingFlags(config).parsedDateParts = config._a.slice(0);
2441    getParsingFlags(config).meridiem = config._meridiem;
2442    // handle meridiem
2443    config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
2444
2445    configFromArray(config);
2446    checkOverflow(config);
2447}
2448
2449
2450function meridiemFixWrap (locale, hour, meridiem) {
2451    var isPm;
2452
2453    if (meridiem == null) {
2454        // nothing to do
2455        return hour;
2456    }
2457    if (locale.meridiemHour != null) {
2458        return locale.meridiemHour(hour, meridiem);
2459    } else if (locale.isPM != null) {
2460        // Fallback
2461        isPm = locale.isPM(meridiem);
2462        if (isPm && hour < 12) {
2463            hour += 12;
2464        }
2465        if (!isPm && hour === 12) {
2466            hour = 0;
2467        }
2468        return hour;
2469    } else {
2470        // this is not supposed to happen
2471        return hour;
2472    }
2473}
2474
2475// date from string and array of format strings
2476function configFromStringAndArray(config) {
2477    var tempConfig,
2478        bestMoment,
2479
2480        scoreToBeat,
2481        i,
2482        currentScore;
2483
2484    if (config._f.length === 0) {
2485        getParsingFlags(config).invalidFormat = true;
2486        config._d = new Date(NaN);
2487        return;
2488    }
2489
2490    for (i = 0; i < config._f.length; i++) {
2491        currentScore = 0;
2492        tempConfig = copyConfig({}, config);
2493        if (config._useUTC != null) {
2494            tempConfig._useUTC = config._useUTC;
2495        }
2496        tempConfig._f = config._f[i];
2497        configFromStringAndFormat(tempConfig);
2498
2499        if (!isValid
vendor: 55,311 bytes, lines 2499-4464
2499(tempConfig)) {
2500            continue;
2501        }
2502
2503        // if there is any input that was not parsed add a penalty for that format
2504        currentScore += getParsingFlags(tempConfig).charsLeftOver;
2505
2506        //or tokens
2507        currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2508
2509        getParsingFlags(tempConfig).score = currentScore;
2510
2511        if (scoreToBeat == null || currentScore < scoreToBeat) {
2512            scoreToBeat = currentScore;
2513            bestMoment = tempConfig;
2514        }
2515    }
2516
2517    extend(config, bestMoment || tempConfig);
2518}
2519
2520function configFromObject(config) {
2521    if (config._d) {
2522        return;
2523    }
2524
2525    var i = normalizeObjectUnits(config._i);
2526    config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
2527        return obj && parseInt(obj, 10);
2528    });
2529
2530    configFromArray(config);
2531}
2532
2533function createFromConfig (config) {
2534    var res = new Moment(checkOverflow(prepareConfig(config)));
2535    if (res._nextDay) {
2536        // Adding is smart enough around DST
2537        res.add(1, 'd');
2538        res._nextDay = undefined;
2539    }
2540
2541    return res;
2542}
2543
2544function prepareConfig (config) {
2545    var input = config._i,
2546        format = config._f;
2547
2548    config._locale = config._locale || getLocale(config._l);
2549
2550    if (input === null || (format === undefined && input === '')) {
2551        return createInvalid({nullInput: true});
2552    }
2553
2554    if (typeof input === 'string') {
2555        config._i = input = config._locale.preparse(input);
2556    }
2557
2558    if (isMoment(input)) {
2559        return new Moment(checkOverflow(input));
2560    } else if (isDate(input)) {
2561        config._d = input;
2562    } else if (isArray(format)) {
2563        configFromStringAndArray(config);
2564    } else if (format) {
2565        configFromStringAndFormat(config);
2566    }  else {
2567        configFromInput(config);
2568    }
2569
2570    if (!isValid(config)) {
2571        config._d = null;
2572    }
2573
2574    return config;
2575}
2576
2577function configFromInput(config) {
2578    var input = config._i;
2579    if (isUndefined(input)) {
2580        config._d = new Date(hooks.now());
2581    } else if (isDate(input)) {
2582        config._d = new Date(input.valueOf());
2583    } else if (typeof input === 'string') {
2584        configFromString(config);
2585    } else if (isArray(input)) {
2586        config._a = map(input.slice(0), function (obj) {
2587            return parseInt(obj, 10);
2588        });
2589        configFromArray(config);
2590    } else if (isObject(input)) {
2591        configFromObject(config);
2592    } else if (isNumber(input)) {
2593        // from milliseconds
2594        config._d = new Date(input);
2595    } else {
2596        hooks.createFromInputFallback(config);
2597    }
2598}
2599
2600function createLocalOrUTC (input, format, locale, strict, isUTC) {
2601    var c = {};
2602
2603    if (locale === true || locale === false) {
2604        strict = locale;
2605        locale = undefined;
2606    }
2607
2608    if ((isObject(input) && isObjectEmpty(input)) ||
2609            (isArray(input) && input.length === 0)) {
2610        input = undefined;
2611    }
2612    // object construction must be done this way.
2613    // https://github.com/moment/moment/issues/1423
2614    c._isAMomentObject = true;
2615    c._useUTC = c._isUTC = isUTC;
2616    c._l = locale;
2617    c._i = input;
2618    c._f = format;
2619    c._strict = strict;
2620
2621    return createFromConfig(c);
2622}
2623
2624function createLocal (input, format, locale, strict) {
2625    return createLocalOrUTC(input, format, locale, strict, false);
2626}
2627
2628var prototypeMin = deprecate(
2629    'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
2630    function () {
2631        var other = createLocal.apply(null, arguments);
2632        if (this.isValid() && other.isValid()) {
2633            return other < this ? this : other;
2634        } else {
2635            return createInvalid();
2636        }
2637    }
2638);
2639
2640var prototypeMax = deprecate(
2641    'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
2642    function () {
2643        var other = createLocal.apply(null, arguments);
2644        if (this.isValid() && other.isValid()) {
2645            return other > this ? this : other;
2646        } else {
2647            return createInvalid();
2648        }
2649    }
2650);
2651
2652// Pick a moment m from moments so that m[fn](other) is true for all
2653// other. This relies on the function fn to be transitive.
2654//
2655// moments should either be an array of moment objects or an array, whose
2656// first element is an array of moment objects.
2657function pickBy(fn, moments) {
2658    var res, i;
2659    if (moments.length === 1 && isArray(moments[0])) {
2660        moments = moments[0];
2661    }
2662    if (!moments.length) {
2663        return createLocal();
2664    }
2665    res = moments[0];
2666    for (i = 1; i < moments.length; ++i) {
2667        if (!moments[i].isValid() || moments[i][fn](res)) {
2668            res = moments[i];
2669        }
2670    }
2671    return res;
2672}
2673
2674// TODO: Use [].sort instead?
2675function min () {
2676    var args = [].slice.call(arguments, 0);
2677
2678    return pickBy('isBefore', args);
2679}
2680
2681function max () {
2682    var args = [].slice.call(arguments, 0);
2683
2684    return pickBy('isAfter', args);
2685}
2686
2687var now = function () {
2688    return Date.now ? Date.now() : +(new Date());
2689};
2690
2691var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
2692
2693function isDurationValid(m) {
2694    for (var key in m) {
2695        if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
2696            return false;
2697        }
2698    }
2699
2700    var unitHasDecimal = false;
2701    for (var i = 0; i < ordering.length; ++i) {
2702        if (m[ordering[i]]) {
2703            if (unitHasDecimal) {
2704                return false; // only allow non-integers for smallest unit
2705            }
2706            if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
2707                unitHasDecimal = true;
2708            }
2709        }
2710    }
2711
2712    return true;
2713}
2714
2715function isValid$1() {
2716    return this._isValid;
2717}
2718
2719function createInvalid$1() {
2720    return createDuration(NaN);
2721}
2722
2723function Duration (duration) {
2724    var normalizedInput = normalizeObjectUnits(duration),
2725        years = normalizedInput.year || 0,
2726        quarters = normalizedInput.quarter || 0,
2727        months = normalizedInput.month || 0,
2728        weeks = normalizedInput.week || 0,
2729        days = normalizedInput.day || 0,
2730        hours = normalizedInput.hour || 0,
2731        minutes = normalizedInput.minute || 0,
2732        seconds = normalizedInput.second || 0,
2733        milliseconds = normalizedInput.millisecond || 0;
2734
2735    this._isValid = isDurationValid(normalizedInput);
2736
2737    // representation for dateAddRemove
2738    this._milliseconds = +milliseconds +
2739        seconds * 1e3 + // 1000
2740        minutes * 6e4 + // 1000 * 60
2741        hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
2742    // Because of dateAddRemove treats 24 hours as different from a
2743    // day when working around DST, we need to store them separately
2744    this._days = +days +
2745        weeks * 7;
2746    // It is impossible to translate months into days without knowing
2747    // which months you are are talking about, so we have to store
2748    // it separately.
2749    this._months = +months +
2750        quarters * 3 +
2751        years * 12;
2752
2753    this._data = {};
2754
2755    this._locale = getLocale();
2756
2757    this._bubble();
2758}
2759
2760function isDuration (obj) {
2761    return obj instanceof Duration;
2762}
2763
2764function absRound (number) {
2765    if (number < 0) {
2766        return Math.round(-1 * number) * -1;
2767    } else {
2768        return Math.round(number);
2769    }
2770}
2771
2772// FORMATTING
2773
2774function offset (token, separator) {
2775    addFormatToken(token, 0, 0, function () {
2776        var offset = this.utcOffset();
2777        var sign = '+';
2778        if (offset < 0) {
2779            offset = -offset;
2780            sign = '-';
2781        }
2782        return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
2783    });
2784}
2785
2786offset('Z', ':');
2787offset('ZZ', '');
2788
2789// PARSING
2790
2791addRegexToken('Z',  matchShortOffset);
2792addRegexToken('ZZ', matchShortOffset);
2793addParseToken(['Z', 'ZZ'], function (input, array, config) {
2794    config._useUTC = true;
2795    config._tzm = offsetFromString(matchShortOffset, input);
2796});
2797
2798// HELPERS
2799
2800// timezone chunker
2801// '+10:00' > ['10',  '00']
2802// '-1530'  > ['-15', '30']
2803var chunkOffset = /([\+\-]|\d\d)/gi;
2804
2805function offsetFromString(matcher, string) {
2806    var matches = (string || '').match(matcher);
2807
2808    if (matches === null) {
2809        return null;
2810    }
2811
2812    var chunk   = matches[matches.length - 1] || [];
2813    var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];
2814    var minutes = +(parts[1] * 60) + toInt(parts[2]);
2815
2816    return minutes === 0 ?
2817      0 :
2818      parts[0] === '+' ? minutes : -minutes;
2819}
2820
2821// Return a moment from input, that is local/utc/zone equivalent to model.
2822function cloneWithOffset(input, model) {
2823    var res, diff;
2824    if (model._isUTC) {
2825        res = model.clone();
2826        diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
2827        // Use low-level api, because this fn is low-level api.
2828        res._d.setTime(res._d.valueOf() + diff);
2829        hooks.updateOffset(res, false);
2830        return res;
2831    } else {
2832        return createLocal(input).local();
2833    }
2834}
2835
2836function getDateOffset (m) {
2837    // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2838    // https://github.com/moment/moment/pull/1871
2839    return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
2840}
2841
2842// HOOKS
2843
2844// This function will be called whenever a moment is mutated.
2845// It is intended to keep the offset in sync with the timezone.
2846hooks.updateOffset = function () {};
2847
2848// MOMENTS
2849
2850// keepLocalTime = true means only change the timezone, without
2851// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2852// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2853// +0200, so we adjust the time as needed, to be valid.
2854//
2855// Keeping the time actually adds/subtracts (one hour)
2856// from the actual represented time. That is why we call updateOffset
2857// a second time. In case it wants us to change the offset again
2858// _changeInProgress == true case, then we have to adjust, because
2859// there is no such time in the given timezone.
2860function getSetOffset (input, keepLocalTime, keepMinutes) {
2861    var offset = this._offset || 0,
2862        localAdjust;
2863    if (!this.isValid()) {
2864        return input != null ? this : NaN;
2865    }
2866    if (input != null) {
2867        if (typeof input === 'string') {
2868            input = offsetFromString(matchShortOffset, input);
2869            if (input === null) {
2870                return this;
2871            }
2872        } else if (Math.abs(input) < 16 && !keepMinutes) {
2873            input = input * 60;
2874        }
2875        if (!this._isUTC && keepLocalTime) {
2876            localAdjust = getDateOffset(this);
2877        }
2878        this._offset = input;
2879        this._isUTC = true;
2880        if (localAdjust != null) {
2881            this.add(localAdjust, 'm');
2882        }
2883        if (offset !== input) {
2884            if (!keepLocalTime || this._changeInProgress) {
2885                addSubtract(this, createDuration(input - offset, 'm'), 1, false);
2886            } else if (!this._changeInProgress) {
2887                this._changeInProgress = true;
2888                hooks.updateOffset(this, true);
2889                this._changeInProgress = null;
2890            }
2891        }
2892        return this;
2893    } else {
2894        return this._isUTC ? offset : getDateOffset(this);
2895    }
2896}
2897
2898function getSetZone (input, keepLocalTime) {
2899    if (input != null) {
2900        if (typeof input !== 'string') {
2901            input = -input;
2902        }
2903
2904        this.utcOffset(input, keepLocalTime);
2905
2906        return this;
2907    } else {
2908        return -this.utcOffset();
2909    }
2910}
2911
2912function setOffsetToUTC (keepLocalTime) {
2913    return this.utcOffset(0, keepLocalTime);
2914}
2915
2916function setOffsetToLocal (keepLocalTime) {
2917    if (this._isUTC) {
2918        this.utcOffset(0, keepLocalTime);
2919        this._isUTC = false;
2920
2921        if (keepLocalTime) {
2922            this.subtract(getDateOffset(this), 'm');
2923        }
2924    }
2925    return this;
2926}
2927
2928function setOffsetToParsedOffset () {
2929    if (this._tzm != null) {
2930        this.utcOffset(this._tzm, false, true);
2931    } else if (typeof this._i === 'string') {
2932        var tZone = offsetFromString(matchOffset, this._i);
2933        if (tZone != null) {
2934            this.utcOffset(tZone);
2935        }
2936        else {
2937            this.utcOffset(0, true);
2938        }
2939    }
2940    return this;
2941}
2942
2943function hasAlignedHourOffset (input) {
2944    if (!this.isValid()) {
2945        return false;
2946    }
2947    input = input ? createLocal(input).utcOffset() : 0;
2948
2949    return (this.utcOffset() - input) % 60 === 0;
2950}
2951
2952function isDaylightSavingTime () {
2953    return (
2954        this.utcOffset() > this.clone().month(0).utcOffset() ||
2955        this.utcOffset() > this.clone().month(5).utcOffset()
2956    );
2957}
2958
2959function isDaylightSavingTimeShifted () {
2960    if (!isUndefined(this._isDSTShifted)) {
2961        return this._isDSTShifted;
2962    }
2963
2964    var c = {};
2965
2966    copyConfig(c, this);
2967    c = prepareConfig(c);
2968
2969    if (c._a) {
2970        var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
2971        this._isDSTShifted = this.isValid() &&
2972            compareArrays(c._a, other.toArray()) > 0;
2973    } else {
2974        this._isDSTShifted = false;
2975    }
2976
2977    return this._isDSTShifted;
2978}
2979
2980function isLocal () {
2981    return this.isValid() ? !this._isUTC : false;
2982}
2983
2984function isUtcOffset () {
2985    return this.isValid() ? this._isUTC : false;
2986}
2987
2988function isUtc () {
2989    return this.isValid() ? this._isUTC && this._offset === 0 : false;
2990}
2991
2992// ASP.NET json date format regex
2993var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
2994
2995// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
2996// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
2997// and further modified to allow for strings containing both week and day
2998var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
2999
3000function createDuration (input, key) {
3001    var duration = input,
3002        // matching against regexp is expensive, do it on demand
3003        match = null,
3004        sign,
3005        ret,
3006        diffRes;
3007
3008    if (isDuration(input)) {
3009        duration = {
3010            ms : input._milliseconds,
3011            d  : input._days,
3012            M  : input._months
3013        };
3014    } else if (isNumber(input)) {
3015        duration = {};
3016        if (key) {
3017            duration[key] = input;
3018        } else {
3019            duration.milliseconds = input;
3020        }
3021    } else if (!!(match = aspNetRegex.exec(input))) {
3022        sign = (match[1] === '-') ? -1 : 1;
3023        duration = {
3024            y  : 0,
3025            d  : toInt(match[DATE])                         * sign,
3026            h  : toInt(match[HOUR])                         * sign,
3027            m  : toInt(match[MINUTE])                       * sign,
3028            s  : toInt(match[SECOND])                       * sign,
3029            ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
3030        };
3031    } else if (!!(match = isoRegex.exec(input))) {
3032        sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;
3033        duration = {
3034            y : parseIso(match[2], sign),
3035            M : parseIso(match[3], sign),
3036            w : parseIso(match[4], sign),
3037            d : parseIso(match[5], sign),
3038            h : parseIso(match[6], sign),
3039            m : parseIso(match[7], sign),
3040            s : parseIso(match[8], sign)
3041        };
3042    } else if (duration == null) {// checks for null or undefined
3043        duration = {};
3044    } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
3045        diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
3046
3047        duration = {};
3048        duration.ms = diffRes.milliseconds;
3049        duration.M = diffRes.months;
3050    }
3051
3052    ret = new Duration(duration);
3053
3054    if (isDuration(input) && hasOwnProp(input, '_locale')) {
3055        ret._locale = input._locale;
3056    }
3057
3058    return ret;
3059}
3060
3061createDuration.fn = Duration.prototype;
3062createDuration.invalid = createInvalid$1;
3063
3064function parseIso (inp, sign) {
3065    // We'd normally use ~~inp for this, but unfortunately it also
3066    // converts floats to ints.
3067    // inp may be undefined, so careful calling replace on it.
3068    var res = inp && parseFloat(inp.replace(',', '.'));
3069    // apply sign while we're at it
3070    return (isNaN(res) ? 0 : res) * sign;
3071}
3072
3073function positiveMomentsDifference(base, other) {
3074    var res = {milliseconds: 0, months: 0};
3075
3076    res.months = other.month() - base.month() +
3077        (other.year() - base.year()) * 12;
3078    if (base.clone().add(res.months, 'M').isAfter(other)) {
3079        --res.months;
3080    }
3081
3082    res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
3083
3084    return res;
3085}
3086
3087function momentsDifference(base, other) {
3088    var res;
3089    if (!(base.isValid() && other.isValid())) {
3090        return {milliseconds: 0, months: 0};
3091    }
3092
3093    other = cloneWithOffset(other, base);
3094    if (base.isBefore(other)) {
3095        res = positiveMomentsDifference(base, other);
3096    } else {
3097        res = positiveMomentsDifference(other, base);
3098        res.milliseconds = -res.milliseconds;
3099        res.months = -res.months;
3100    }
3101
3102    return res;
3103}
3104
3105// TODO: remove 'name' arg after deprecation is removed
3106function createAdder(direction, name) {
3107    return function (val, period) {
3108        var dur, tmp;
3109        //invert the arguments, but complain about it
3110        if (period !== null && !isNaN(+period)) {
3111            deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
3112            'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
3113            tmp = val; val = period; period = tmp;
3114        }
3115
3116        val = typeof val === 'string' ? +val : val;
3117        dur = createDuration(val, period);
3118        addSubtract(this, dur, direction);
3119        return this;
3120    };
3121}
3122
3123function addSubtract (mom, duration, isAdding, updateOffset) {
3124    var milliseconds = duration._milliseconds,
3125        days = absRound(duration._days),
3126        months = absRound(duration._months);
3127
3128    if (!mom.isValid()) {
3129        // No op
3130        return;
3131    }
3132
3133    updateOffset = updateOffset == null ? true : updateOffset;
3134
3135    if (months) {
3136        setMonth(mom, get(mom, 'Month') + months * isAdding);
3137    }
3138    if (days) {
3139        set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3140    }
3141    if (milliseconds) {
3142        mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3143    }
3144    if (updateOffset) {
3145        hooks.updateOffset(mom, days || months);
3146    }
3147}
3148
3149var add      = createAdder(1, 'add');
3150var subtract = createAdder(-1, 'subtract');
3151
3152function getCalendarFormat(myMoment, now) {
3153    var diff = myMoment.diff(now, 'days', true);
3154    return diff < -6 ? 'sameElse' :
3155            diff < -1 ? 'lastWeek' :
3156            diff < 0 ? 'lastDay' :
3157            diff < 1 ? 'sameDay' :
3158            diff < 2 ? 'nextDay' :
3159            diff < 7 ? 'nextWeek' : 'sameElse';
3160}
3161
3162function calendar$1 (time, formats) {
3163    // We want to compare the start of today, vs this.
3164    // Getting start-of-today depends on whether we're local/utc/offset or not.
3165    var now = time || createLocal(),
3166        sod = cloneWithOffset(now, this).startOf('day'),
3167        format = hooks.calendarFormat(this, sod) || 'sameElse';
3168
3169    var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
3170
3171    return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
3172}
3173
3174function clone () {
3175    return new Moment(this);
3176}
3177
3178function isAfter (input, units) {
3179    var localInput = isMoment(input) ? input : createLocal(input);
3180    if (!(this.isValid() && localInput.isValid())) {
3181        return false;
3182    }
3183    units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3184    if (units === 'millisecond') {
3185        return this.valueOf() > localInput.valueOf();
3186    } else {
3187        return localInput.valueOf() < this.clone().startOf(units).valueOf();
3188    }
3189}
3190
3191function isBefore (input, units) {
3192    var localInput = isMoment(input) ? input : createLocal(input);
3193    if (!(this.isValid() && localInput.isValid())) {
3194        return false;
3195    }
3196    units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3197    if (units === 'millisecond') {
3198        return this.valueOf() < localInput.valueOf();
3199    } else {
3200        return this.clone().endOf(units).valueOf() < localInput.valueOf();
3201    }
3202}
3203
3204function isBetween (from, to, units, inclusivity) {
3205    inclusivity = inclusivity || '()';
3206    return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
3207        (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
3208}
3209
3210function isSame (input, units) {
3211    var localInput = isMoment(input) ? input : createLocal(input),
3212        inputMs;
3213    if (!(this.isValid() && localInput.isValid())) {
3214        return false;
3215    }
3216    units = normalizeUnits(units || 'millisecond');
3217    if (units === 'millisecond') {
3218        return this.valueOf() === localInput.valueOf();
3219    } else {
3220        inputMs = localInput.valueOf();
3221        return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
3222    }
3223}
3224
3225function isSameOrAfter (input, units) {
3226    return this.isSame(input, units) || this.isAfter(input,units);
3227}
3228
3229function isSameOrBefore (input, units) {
3230    return this.isSame(input, units) || this.isBefore(input,units);
3231}
3232
3233function diff (input, units, asFloat) {
3234    var that,
3235        zoneDelta,
3236        delta, output;
3237
3238    if (!this.isValid()) {
3239        return NaN;
3240    }
3241
3242    that = cloneWithOffset(input, this);
3243
3244    if (!that.isValid()) {
3245        return NaN;
3246    }
3247
3248    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3249
3250    units = normalizeUnits(units);
3251
3252    switch (units) {
3253        case 'year': output = monthDiff(this, that) / 12; break;
3254        case 'month': output = monthDiff(this, that); break;
3255        case 'quarter': output = monthDiff(this, that) / 3; break;
3256        case 'second': output = (this - that) / 1e3; break; // 1000
3257        case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
3258        case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
3259        case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
3260        case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
3261        default: output = this - that;
3262    }
3263
3264    return asFloat ? output : absFloor(output);
3265}
3266
3267function monthDiff (a, b) {
3268    // difference in months
3269    var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
3270        // b is in (anchor - 1 month, anchor + 1 month)
3271        anchor = a.clone().add(wholeMonthDiff, 'months'),
3272        anchor2, adjust;
3273
3274    if (b - anchor < 0) {
3275        anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3276        // linear across the month
3277        adjust = (b - anchor) / (anchor - anchor2);
3278    } else {
3279        anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3280        // linear across the month
3281        adjust = (b - anchor) / (anchor2 - anchor);
3282    }
3283
3284    //check for negative zero, return zero if negative zero
3285    return -(wholeMonthDiff + adjust) || 0;
3286}
3287
3288hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3289hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3290
3291function toString () {
3292    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3293}
3294
3295function toISOString() {
3296    if (!this.isValid()) {
3297        return null;
3298    }
3299    var m = this.clone().utc();
3300    if (m.year() < 0 || m.year() > 9999) {
3301        return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3302    }
3303    if (isFunction(Date.prototype.toISOString)) {
3304        // native implementation is ~50x faster, use it when we can
3305        return this.toDate().toISOString();
3306    }
3307    return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3308}
3309
3310/**
3311 * Return a human readable representation of a moment that can
3312 * also be evaluated to get a new moment which is the same
3313 *
3314 * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3315 */
3316function inspect () {
3317    if (!this.isValid()) {
3318        return 'moment.invalid(/* ' + this._i + ' */)';
3319    }
3320    var func = 'moment';
3321    var zone = '';
3322    if (!this.isLocal()) {
3323        func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3324        zone = 'Z';
3325    }
3326    var prefix = '[' + func + '("]';
3327    var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
3328    var datetime = '-MM-DD[T]HH:mm:ss.SSS';
3329    var suffix = zone + '[")]';
3330
3331    return this.format(prefix + year + datetime + suffix);
3332}
3333
3334function format (inputString) {
3335    if (!inputString) {
3336        inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
3337    }
3338    var output = formatMoment(this, inputString);
3339    return this.localeData().postformat(output);
3340}
3341
3342function from (time, withoutSuffix) {
3343    if (this.isValid() &&
3344            ((isMoment(time) && time.isValid()) ||
3345             createLocal(time).isValid())) {
3346        return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
3347    } else {
3348        return this.localeData().invalidDate();
3349    }
3350}
3351
3352function fromNow (withoutSuffix) {
3353    return this.from(createLocal(), withoutSuffix);
3354}
3355
3356function to (time, withoutSuffix) {
3357    if (this.isValid() &&
3358            ((isMoment(time) && time.isValid()) ||
3359             createLocal(time).isValid())) {
3360        return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
3361    } else {
3362        return this.localeData().invalidDate();
3363    }
3364}
3365
3366function toNow (withoutSuffix) {
3367    return this.to(createLocal(), withoutSuffix);
3368}
3369
3370// If passed a locale key, it will set the locale for this
3371// instance.  Otherwise, it will return the locale configuration
3372// variables for this instance.
3373function locale (key) {
3374    var newLocaleData;
3375
3376    if (key === undefined) {
3377        return this._locale._abbr;
3378    } else {
3379        newLocaleData = getLocale(key);
3380        if (newLocaleData != null) {
3381            this._locale = newLocaleData;
3382        }
3383        return this;
3384    }
3385}
3386
3387var lang = deprecate(
3388    'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
3389    function (key) {
3390        if (key === undefined) {
3391            return this.localeData();
3392        } else {
3393            return this.locale(key);
3394        }
3395    }
3396);
3397
3398function localeData () {
3399    return this._locale;
3400}
3401
3402function startOf (units) {
3403    units = normalizeUnits(units);
3404    // the following switch intentionally omits break keywords
3405    // to utilize falling through the cases.
3406    switch (units) {
3407        case 'year':
3408            this.month(0);
3409            /* falls through */
3410        case 'quarter':
3411        case 'month':
3412            this.date(1);
3413            /* falls through */
3414        case 'week':
3415        case 'isoWeek':
3416        case 'day':
3417        case 'date':
3418            this.hours(0);
3419            /* falls through */
3420        case 'hour':
3421            this.minutes(0);
3422            /* falls through */
3423        case 'minute':
3424            this.seconds(0);
3425            /* falls through */
3426        case 'second':
3427            this.milliseconds(0);
3428    }
3429
3430    // weeks are a special case
3431    if (units === 'week') {
3432        this.weekday(0);
3433    }
3434    if (units === 'isoWeek') {
3435        this.isoWeekday(1);
3436    }
3437
3438    // quarters are also special
3439    if (units === 'quarter') {
3440        this.month(Math.floor(this.month() / 3) * 3);
3441    }
3442
3443    return this;
3444}
3445
3446function endOf (units) {
3447    units = normalizeUnits(units);
3448    if (units === undefined || units === 'millisecond') {
3449        return this;
3450    }
3451
3452    // 'date' is an alias for 'day', so it should be considered as such.
3453    if (units === 'date') {
3454        units = 'day';
3455    }
3456
3457    return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
3458}
3459
3460function valueOf () {
3461    return this._d.valueOf() - ((this._offset || 0) * 60000);
3462}
3463
3464function unix () {
3465    return Math.floor(this.valueOf() / 1000);
3466}
3467
3468function toDate () {
3469    return new Date(this.valueOf());
3470}
3471
3472function toArray () {
3473    var m = this;
3474    return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
3475}
3476
3477function toObject () {
3478    var m = this;
3479    return {
3480        years: m.year(),
3481        months: m.month(),
3482        date: m.date(),
3483        hours: m.hours(),
3484        minutes: m.minutes(),
3485        seconds: m.seconds(),
3486        milliseconds: m.milliseconds()
3487    };
3488}
3489
3490function toJSON () {
3491    // new Date(NaN).toJSON() === null
3492    return this.isValid() ? this.toISOString() : null;
3493}
3494
3495function isValid$2 () {
3496    return isValid(this);
3497}
3498
3499function parsingFlags () {
3500    return extend({}, getParsingFlags(this));
3501}
3502
3503function invalidAt () {
3504    return getParsingFlags(this).overflow;
3505}
3506
3507function creationData() {
3508    return {
3509        input: this._i,
3510        format: this._f,
3511        locale: this._locale,
3512        isUTC: this._isUTC,
3513        strict: this._strict
3514    };
3515}
3516
3517// FORMATTING
3518
3519addFormatToken(0, ['gg', 2], 0, function () {
3520    return this.weekYear() % 100;
3521});
3522
3523addFormatToken(0, ['GG', 2], 0, function () {
3524    return this.isoWeekYear() % 100;
3525});
3526
3527function addWeekYearFormatToken (token, getter) {
3528    addFormatToken(0, [token, token.length], 0, getter);
3529}
3530
3531addWeekYearFormatToken('gggg',     'weekYear');
3532addWeekYearFormatToken('ggggg',    'weekYear');
3533addWeekYearFormatToken('GGGG',  'isoWeekYear');
3534addWeekYearFormatToken('GGGGG', 'isoWeekYear');
3535
3536// ALIASES
3537
3538addUnitAlias('weekYear', 'gg');
3539addUnitAlias('isoWeekYear', 'GG');
3540
3541// PRIORITY
3542
3543addUnitPriority('weekYear', 1);
3544addUnitPriority('isoWeekYear', 1);
3545
3546
3547// PARSING
3548
3549addRegexToken('G',      matchSigned);
3550addRegexToken('g',      matchSigned);
3551addRegexToken('GG',     match1to2, match2);
3552addRegexToken('gg',     match1to2, match2);
3553addRegexToken('GGGG',   match1to4, match4);
3554addRegexToken('gggg',   match1to4, match4);
3555addRegexToken('GGGGG',  match1to6, match6);
3556addRegexToken('ggggg',  match1to6, match6);
3557
3558addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
3559    week[token.substr(0, 2)] = toInt(input);
3560});
3561
3562addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
3563    week[token] = hooks.parseTwoDigitYear(input);
3564});
3565
3566// MOMENTS
3567
3568function getSetWeekYear (input) {
3569    return getSetWeekYearHelper.call(this,
3570            input,
3571            this.week(),
3572            this.weekday(),
3573            this.localeData()._week.dow,
3574            this.localeData()._week.doy);
3575}
3576
3577function getSetISOWeekYear (input) {
3578    return getSetWeekYearHelper.call(this,
3579            input, this.isoWeek(), this.isoWeekday(), 1, 4);
3580}
3581
3582function getISOWeeksInYear () {
3583    return weeksInYear(this.year(), 1, 4);
3584}
3585
3586function getWeeksInYear () {
3587    var weekInfo = this.localeData()._week;
3588    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
3589}
3590
3591function getSetWeekYearHelper(input, week, weekday, dow, doy) {
3592    var weeksTarget;
3593    if (input == null) {
3594        return weekOfYear(this, dow, doy).year;
3595    } else {
3596        weeksTarget = weeksInYear(input, dow, doy);
3597        if (week > weeksTarget) {
3598            week = weeksTarget;
3599        }
3600        return setWeekAll.call(this, input, week, weekday, dow, doy);
3601    }
3602}
3603
3604function setWeekAll(weekYear, week, weekday, dow, doy) {
3605    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
3606        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
3607
3608    this.year(date.getUTCFullYear());
3609    this.month(date.getUTCMonth());
3610    this.date(date.getUTCDate());
3611    return this;
3612}
3613
3614// FORMATTING
3615
3616addFormatToken('Q', 0, 'Qo', 'quarter');
3617
3618// ALIASES
3619
3620addUnitAlias('quarter', 'Q');
3621
3622// PRIORITY
3623
3624addUnitPriority('quarter', 7);
3625
3626// PARSING
3627
3628addRegexToken('Q', match1);
3629addParseToken('Q', function (input, array) {
3630    array[MONTH] = (toInt(input) - 1) * 3;
3631});
3632
3633// MOMENTS
3634
3635function getSetQuarter (input) {
3636    return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
3637}
3638
3639// FORMATTING
3640
3641addFormatToken('D', ['DD', 2], 'Do', 'date');
3642
3643// ALIASES
3644
3645addUnitAlias('date', 'D');
3646
3647// PRIOROITY
3648addUnitPriority('date', 9);
3649
3650// PARSING
3651
3652addRegexToken('D',  match1to2);
3653addRegexToken('DD', match1to2, match2);
3654addRegexToken('Do', function (isStrict, locale) {
3655    // TODO: Remove "ordinalParse" fallback in next major release.
3656    return isStrict ?
3657      (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
3658      locale._dayOfMonthOrdinalParseLenient;
3659});
3660
3661addParseToken(['D', 'DD'], DATE);
3662addParseToken('Do', function (input, array) {
3663    array[DATE] = toInt(input.match(match1to2)[0], 10);
3664});
3665
3666// MOMENTS
3667
3668var getSetDayOfMonth = makeGetSet('Date', true);
3669
3670// FORMATTING
3671
3672addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
3673
3674// ALIASES
3675
3676addUnitAlias('dayOfYear', 'DDD');
3677
3678// PRIORITY
3679addUnitPriority('dayOfYear', 4);
3680
3681// PARSING
3682
3683addRegexToken('DDD',  match1to3);
3684addRegexToken('DDDD', match3);
3685addParseToken(['DDD', 'DDDD'], function (input, array, config) {
3686    config._dayOfYear = toInt(input);
3687});
3688
3689// HELPERS
3690
3691// MOMENTS
3692
3693function getSetDayOfYear (input) {
3694    var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
3695    return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
3696}
3697
3698// FORMATTING
3699
3700addFormatToken('m', ['mm', 2], 0, 'minute');
3701
3702// ALIASES
3703
3704addUnitAlias('minute', 'm');
3705
3706// PRIORITY
3707
3708addUnitPriority('minute', 14);
3709
3710// PARSING
3711
3712addRegexToken('m',  match1to2);
3713addRegexToken('mm', match1to2, match2);
3714addParseToken(['m', 'mm'], MINUTE);
3715
3716// MOMENTS
3717
3718var getSetMinute = makeGetSet('Minutes', false);
3719
3720// FORMATTING
3721
3722addFormatToken('s', ['ss', 2], 0, 'second');
3723
3724// ALIASES
3725
3726addUnitAlias('second', 's');
3727
3728// PRIORITY
3729
3730addUnitPriority('second', 15);
3731
3732// PARSING
3733
3734addRegexToken('s',  match1to2);
3735addRegexToken('ss', match1to2, match2);
3736addParseToken(['s', 'ss'], SECOND);
3737
3738// MOMENTS
3739
3740var getSetSecond = makeGetSet('Seconds', false);
3741
3742// FORMATTING
3743
3744addFormatToken('S', 0, 0, function () {
3745    return ~~(this.millisecond() / 100);
3746});
3747
3748addFormatToken(0, ['SS', 2], 0, function () {
3749    return ~~(this.millisecond() / 10);
3750});
3751
3752addFormatToken(0, ['SSS', 3], 0, 'millisecond');
3753addFormatToken(0, ['SSSS', 4], 0, function () {
3754    return this.millisecond() * 10;
3755});
3756addFormatToken(0, ['SSSSS', 5], 0, function () {
3757    return this.millisecond() * 100;
3758});
3759addFormatToken(0, ['SSSSSS', 6], 0, function () {
3760    return this.millisecond() * 1000;
3761});
3762addFormatToken(0, ['SSSSSSS', 7], 0, function () {
3763    return this.millisecond() * 10000;
3764});
3765addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
3766    return this.millisecond() * 100000;
3767});
3768addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
3769    return this.millisecond() * 1000000;
3770});
3771
3772
3773// ALIASES
3774
3775addUnitAlias('millisecond', 'ms');
3776
3777// PRIORITY
3778
3779addUnitPriority('millisecond', 16);
3780
3781// PARSING
3782
3783addRegexToken('S',    match1to3, match1);
3784addRegexToken('SS',   match1to3, match2);
3785addRegexToken('SSS',  match1to3, match3);
3786
3787var token;
3788for (token = 'SSSS'; token.length <= 9; token += 'S') {
3789    addRegexToken(token, matchUnsigned);
3790}
3791
3792function parseMs(input, array) {
3793    array[MILLISECOND] = toInt(('0.' + input) * 1000);
3794}
3795
3796for (token = 'S'; token.length <= 9; token += 'S') {
3797    addParseToken(token, parseMs);
3798}
3799// MOMENTS
3800
3801var getSetMillisecond = makeGetSet('Milliseconds', false);
3802
3803// FORMATTING
3804
3805addFormatToken('z',  0, 0, 'zoneAbbr');
3806addFormatToken('zz', 0, 0, 'zoneName');
3807
3808// MOMENTS
3809
3810function getZoneAbbr () {
3811    return this._isUTC ? 'UTC' : '';
3812}
3813
3814function getZoneName () {
3815    return this._isUTC ? 'Coordinated Universal Time' : '';
3816}
3817
3818var proto = Moment.prototype;
3819
3820proto.add               = add;
3821proto.calendar          = calendar$1;
3822proto.clone             = clone;
3823proto.diff              = diff;
3824proto.endOf             = endOf;
3825proto.format            = format;
3826proto.from              = from;
3827proto.fromNow           = fromNow;
3828proto.to                = to;
3829proto.toNow             = toNow;
3830proto.get               = stringGet;
3831proto.invalidAt         = invalidAt;
3832proto.isAfter           = isAfter;
3833proto.isBefore          = isBefore;
3834proto.isBetween         = isBetween;
3835proto.isSame            = isSame;
3836proto.isSameOrAfter     = isSameOrAfter;
3837proto.isSameOrBefore    = isSameOrBefore;
3838proto.isValid           = isValid$2;
3839proto.lang              = lang;
3840proto.locale            = locale;
3841proto.localeData        = localeData;
3842proto.max               = prototypeMax;
3843proto.min               = prototypeMin;
3844proto.parsingFlags      = parsingFlags;
3845proto.set               = stringSet;
3846proto.startOf           = startOf;
3847proto.subtract          = subtract;
3848proto.toArray           = toArray;
3849proto.toObject          = toObject;
3850proto.toDate            = toDate;
3851proto.toISOString       = toISOString;
3852proto.inspect           = inspect;
3853proto.toJSON            = toJSON;
3854proto.toString          = toString;
3855proto.unix              = unix;
3856proto.valueOf           = valueOf;
3857proto.creationData      = creationData;
3858
3859// Year
3860proto.year       = getSetYear;
3861proto.isLeapYear = getIsLeapYear;
3862
3863// Week Year
3864proto.weekYear    = getSetWeekYear;
3865proto.isoWeekYear = getSetISOWeekYear;
3866
3867// Quarter
3868proto.quarter = proto.quarters = getSetQuarter;
3869
3870// Month
3871proto.month       = getSetMonth;
3872proto.daysInMonth = getDaysInMonth;
3873
3874// Week
3875proto.week           = proto.weeks        = getSetWeek;
3876proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;
3877proto.weeksInYear    = getWeeksInYear;
3878proto.isoWeeksInYear = getISOWeeksInYear;
3879
3880// Day
3881proto.date       = getSetDayOfMonth;
3882proto.day        = proto.days             = getSetDayOfWeek;
3883proto.weekday    = getSetLocaleDayOfWeek;
3884proto.isoWeekday = getSetISODayOfWeek;
3885proto.dayOfYear  = getSetDayOfYear;
3886
3887// Hour
3888proto.hour = proto.hours = getSetHour;
3889
3890// Minute
3891proto.minute = proto.minutes = getSetMinute;
3892
3893// Second
3894proto.second = proto.seconds = getSetSecond;
3895
3896// Millisecond
3897proto.millisecond = proto.milliseconds = getSetMillisecond;
3898
3899// Offset
3900proto.utcOffset            = getSetOffset;
3901proto.utc                  = setOffsetToUTC;
3902proto.local                = setOffsetToLocal;
3903proto.parseZone            = setOffsetToParsedOffset;
3904proto.hasAlignedHourOffset = hasAlignedHourOffset;
3905proto.isDST                = isDaylightSavingTime;
3906proto.isLocal              = isLocal;
3907proto.isUtcOffset          = isUtcOffset;
3908proto.isUtc                = isUtc;
3909proto.isUTC                = isUtc;
3910
3911// Timezone
3912proto.zoneAbbr = getZoneAbbr;
3913proto.zoneName = getZoneName;
3914
3915// Deprecations
3916proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
3917proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3918proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3919proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
3920proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
3921
3922function createUnix (input) {
3923    return createLocal(input * 1000);
3924}
3925
3926function createInZone () {
3927    return createLocal.apply(null, arguments).parseZone();
3928}
3929
3930function preParsePostFormat (string) {
3931    return string;
3932}
3933
3934var proto$1 = Locale.prototype;
3935
3936proto$1.calendar        = calendar;
3937proto$1.longDateFormat  = longDateFormat;
3938proto$1.invalidDate     = invalidDate;
3939proto$1.ordinal         = ordinal;
3940proto$1.preparse        = preParsePostFormat;
3941proto$1.postformat      = preParsePostFormat;
3942proto$1.relativeTime    = relativeTime;
3943proto$1.pastFuture      = pastFuture;
3944proto$1.set             = set;
3945
3946// Month
3947proto$1.months            =        localeMonths;
3948proto$1.monthsShort       =        localeMonthsShort;
3949proto$1.monthsParse       =        localeMonthsParse;
3950proto$1.monthsRegex       = monthsRegex;
3951proto$1.monthsShortRegex  = monthsShortRegex;
3952
3953// Week
3954proto$1.week = localeWeek;
3955proto$1.firstDayOfYear = localeFirstDayOfYear;
3956proto$1.firstDayOfWeek = localeFirstDayOfWeek;
3957
3958// Day of Week
3959proto$1.weekdays       =        localeWeekdays;
3960proto$1.weekdaysMin    =        localeWeekdaysMin;
3961proto$1.weekdaysShort  =        localeWeekdaysShort;
3962proto$1.weekdaysParse  =        localeWeekdaysParse;
3963
3964proto$1.weekdaysRegex       =        weekdaysRegex;
3965proto$1.weekdaysShortRegex  =        weekdaysShortRegex;
3966proto$1.weekdaysMinRegex    =        weekdaysMinRegex;
3967
3968// Hours
3969proto$1.isPM = localeIsPM;
3970proto$1.meridiem = localeMeridiem;
3971
3972function get$1 (format, index, field, setter) {
3973    var locale = getLocale();
3974    var utc = createUTC().set(setter, index);
3975    return locale[field](utc, format);
3976}
3977
3978function listMonthsImpl (format, index, field) {
3979    if (isNumber(format)) {
3980        index = format;
3981        format = undefined;
3982    }
3983
3984    format = format || '';
3985
3986    if (index != null) {
3987        return get$1(format, index, field, 'month');
3988    }
3989
3990    var i;
3991    var out = [];
3992    for (i = 0; i < 12; i++) {
3993        out[i] = get$1(format, i, field, 'month');
3994    }
3995    return out;
3996}
3997
3998// ()
3999// (5)
4000// (fmt, 5)
4001// (fmt)
4002// (true)
4003// (true, 5)
4004// (true, fmt, 5)
4005// (true, fmt)
4006function listWeekdaysImpl (localeSorted, format, index, field) {
4007    if (typeof localeSorted === 'boolean') {
4008        if (isNumber(format)) {
4009            index = format;
4010            format = undefined;
4011        }
4012
4013        format = format || '';
4014    } else {
4015        format = localeSorted;
4016        index = format;
4017        localeSorted = false;
4018
4019        if (isNumber(format)) {
4020            index = format;
4021            format = undefined;
4022        }
4023
4024        format = format || '';
4025    }
4026
4027    var locale = getLocale(),
4028        shift = localeSorted ? locale._week.dow : 0;
4029
4030    if (index != null) {
4031        return get$1(format, (index + shift) % 7, field, 'day');
4032    }
4033
4034    var i;
4035    var out = [];
4036    for (i = 0; i < 7; i++) {
4037        out[i] = get$1(format, (i + shift) % 7, field, 'day');
4038    }
4039    return out;
4040}
4041
4042function listMonths (format, index) {
4043    return listMonthsImpl(format, index, 'months');
4044}
4045
4046function listMonthsShort (format, index) {
4047    return listMonthsImpl(format, index, 'monthsShort');
4048}
4049
4050function listWeekdays (localeSorted, format, index) {
4051    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
4052}
4053
4054function listWeekdaysShort (localeSorted, format, index) {
4055    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
4056}
4057
4058function listWeekdaysMin (localeSorted, format, index) {
4059    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
4060}
4061
4062getSetGlobalLocale('en', {
4063    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
4064    ordinal : function (number) {
4065        var b = number % 10,
4066            output = (toInt(number % 100 / 10) === 1) ? 'th' :
4067            (b === 1) ? 'st' :
4068            (b === 2) ? 'nd' :
4069            (b === 3) ? 'rd' : 'th';
4070        return number + output;
4071    }
4072});
4073
4074// Side effect imports
4075hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
4076hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
4077
4078var mathAbs = Math.abs;
4079
4080function abs () {
4081    var data           = this._data;
4082
4083    this._milliseconds = mathAbs(this._milliseconds);
4084    this._days         = mathAbs(this._days);
4085    this._months       = mathAbs(this._months);
4086
4087    data.milliseconds  = mathAbs(data.milliseconds);
4088    data.seconds       = mathAbs(data.seconds);
4089    data.minutes       = mathAbs(data.minutes);
4090    data.hours         = mathAbs(data.hours);
4091    data.months        = mathAbs(data.months);
4092    data.years         = mathAbs(data.years);
4093
4094    return this;
4095}
4096
4097function addSubtract$1 (duration, input, value, direction) {
4098    var other = createDuration(input, value);
4099
4100    duration._milliseconds += direction * other._milliseconds;
4101    duration._days         += direction * other._days;
4102    duration._months       += direction * other._months;
4103
4104    return duration._bubble();
4105}
4106
4107// supports only 2.0-style add(1, 's') or add(duration)
4108function add$1 (input, value) {
4109    return addSubtract$1(this, input, value, 1);
4110}
4111
4112// supports only 2.0-style subtract(1, 's') or subtract(duration)
4113function subtract$1 (input, value) {
4114    return addSubtract$1(this, input, value, -1);
4115}
4116
4117function absCeil (number) {
4118    if (number < 0) {
4119        return Math.floor(number);
4120    } else {
4121        return Math.ceil(number);
4122    }
4123}
4124
4125function bubble () {
4126    var milliseconds = this._milliseconds;
4127    var days         = this._days;
4128    var months       = this._months;
4129    var data         = this._data;
4130    var seconds, minutes, hours, years, monthsFromDays;
4131
4132    // if we have a mix of positive and negative values, bubble down first
4133    // check: https://github.com/moment/moment/issues/2166
4134    if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
4135            (milliseconds <= 0 && days <= 0 && months <= 0))) {
4136        milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
4137        days = 0;
4138        months = 0;
4139    }
4140
4141    // The following code bubbles up values, see the tests for
4142    // examples of what that means.
4143    data.milliseconds = milliseconds % 1000;
4144
4145    seconds           = absFloor(milliseconds / 1000);
4146    data.seconds      = seconds % 60;
4147
4148    minutes           = absFloor(seconds / 60);
4149    data.minutes      = minutes % 60;
4150
4151    hours             = absFloor(minutes / 60);
4152    data.hours        = hours % 24;
4153
4154    days += absFloor(hours / 24);
4155
4156    // convert days to months
4157    monthsFromDays = absFloor(daysToMonths(days));
4158    months += monthsFromDays;
4159    days -= absCeil(monthsToDays(monthsFromDays));
4160
4161    // 12 months -> 1 year
4162    years = absFloor(months / 12);
4163    months %= 12;
4164
4165    data.days   = days;
4166    data.months = months;
4167    data.years  = years;
4168
4169    return this;
4170}
4171
4172function daysToMonths (days) {
4173    // 400 years have 146097 days (taking into account leap year rules)
4174    // 400 years have 12 months === 4800
4175    return days * 4800 / 146097;
4176}
4177
4178function monthsToDays (months) {
4179    // the reverse of daysToMonths
4180    return months * 146097 / 4800;
4181}
4182
4183function as (units) {
4184    if (!this.isValid()) {
4185        return NaN;
4186    }
4187    var days;
4188    var months;
4189    var milliseconds = this._milliseconds;
4190
4191    units = normalizeUnits(units);
4192
4193    if (units === 'month' || units === 'year') {
4194        days   = this._days   + milliseconds / 864e5;
4195        months = this._months + daysToMonths(days);
4196        return units === 'month' ? months : months / 12;
4197    } else {
4198        // handle milliseconds separately because of floating point math errors (issue #1867)
4199        days = this._days + Math.round(monthsToDays(this._months));
4200        switch (units) {
4201            case 'week'   : return days / 7     + milliseconds / 6048e5;
4202            case 'day'    : return days         + milliseconds / 864e5;
4203            case 'hour'   : return days * 24    + milliseconds / 36e5;
4204            case 'minute' : return days * 1440  + milliseconds / 6e4;
4205            case 'second' : return days * 86400 + milliseconds / 1000;
4206            // Math.floor prevents floating point math errors here
4207            case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
4208            default: throw new Error('Unknown unit ' + units);
4209        }
4210    }
4211}
4212
4213// TODO: Use this.as('ms')?
4214function valueOf$1 () {
4215    if (!this.isValid()) {
4216        return NaN;
4217    }
4218    return (
4219        this._milliseconds +
4220        this._days * 864e5 +
4221        (this._months % 12) * 2592e6 +
4222        toInt(this._months / 12) * 31536e6
4223    );
4224}
4225
4226function makeAs (alias) {
4227    return function () {
4228        return this.as(alias);
4229    };
4230}
4231
4232var asMilliseconds = makeAs('ms');
4233var asSeconds      = makeAs('s');
4234var asMinutes      = makeAs('m');
4235var asHours        = makeAs('h');
4236var asDays         = makeAs('d');
4237var asWeeks        = makeAs('w');
4238var asMonths       = makeAs('M');
4239var asYears        = makeAs('y');
4240
4241function clone$1 () {
4242    return createDuration(this);
4243}
4244
4245function get$2 (units) {
4246    units = normalizeUnits(units);
4247    return this.isValid() ? this[units + 's']() : NaN;
4248}
4249
4250function makeGetter(name) {
4251    return function () {
4252        return this.isValid() ? this._data[name] : NaN;
4253    };
4254}
4255
4256var milliseconds = makeGetter('milliseconds');
4257var seconds      = makeGetter('seconds');
4258var minutes      = makeGetter('minutes');
4259var hours        = makeGetter('hours');
4260var days         = makeGetter('days');
4261var months       = makeGetter('months');
4262var years        = makeGetter('years');
4263
4264function weeks () {
4265    return absFloor(this.days() / 7);
4266}
4267
4268var round = Math.round;
4269var thresholds = {
4270    ss: 44,         // a few seconds to seconds
4271    s : 45,         // seconds to minute
4272    m : 45,         // minutes to hour
4273    h : 22,         // hours to day
4274    d : 26,         // days to month
4275    M : 11          // months to year
4276};
4277
4278// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
4279function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
4280    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
4281}
4282
4283function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
4284    var duration = createDuration(posNegDuration).abs();
4285    var seconds  = round(duration.as('s'));
4286    var minutes  = round(duration.as('m'));
4287    var hours    = round(duration.as('h'));
4288    var days     = round(duration.as('d'));
4289    var months   = round(duration.as('M'));
4290    var years    = round(duration.as('y'));
4291
4292    var a = seconds <= thresholds.ss && ['s', seconds]  ||
4293            seconds < thresholds.s   && ['ss', seconds] ||
4294            minutes <= 1             && ['m']           ||
4295            minutes < thresholds.m   && ['mm', minutes] ||
4296            hours   <= 1             && ['h']           ||
4297            hours   < thresholds.h   && ['hh', hours]   ||
4298            days    <= 1             && ['d']           ||
4299            days    < thresholds.d   && ['dd', days]    ||
4300            months  <= 1             && ['M']           ||
4301            months  < thresholds.M   && ['MM', months]  ||
4302            years   <= 1             && ['y']           || ['yy', years];
4303
4304    a[2] = withoutSuffix;
4305    a[3] = +posNegDuration > 0;
4306    a[4] = locale;
4307    return substituteTimeAgo.apply(null, a);
4308}
4309
4310// This function allows you to set the rounding function for relative time strings
4311function getSetRelativeTimeRounding (roundingFunction) {
4312    if (roundingFunction === undefined) {
4313        return round;
4314    }
4315    if (typeof(roundingFunction) === 'function') {
4316        round = roundingFunction;
4317        return true;
4318    }
4319    return false;
4320}
4321
4322// This function allows you to set a threshold for relative time strings
4323function getSetRelativeTimeThreshold (threshold, limit) {
4324    if (thresholds[threshold] === undefined) {
4325        return false;
4326    }
4327    if (limit === undefined) {
4328        return thresholds[threshold];
4329    }
4330    thresholds[threshold] = limit;
4331    if (threshold === 's') {
4332        thresholds.ss = limit - 1;
4333    }
4334    return true;
4335}
4336
4337function humanize (withSuffix) {
4338    if (!this.isValid()) {
4339        return this.localeData().invalidDate();
4340    }
4341
4342    var locale = this.localeData();
4343    var output = relativeTime$1(this, !withSuffix, locale);
4344
4345    if (withSuffix) {
4346        output = locale.pastFuture(+this, output);
4347    }
4348
4349    return locale.postformat(output);
4350}
4351
4352var abs$1 = Math.abs;
4353
4354function sign(x) {
4355    return ((x > 0) - (x < 0)) || +x;
4356}
4357
4358function toISOString$1() {
4359    // for ISO strings we do not use the normal bubbling rules:
4360    //  * milliseconds bubble up until they become hours
4361    //  * days do not bubble at all
4362    //  * months bubble up until they become years
4363    // This is because there is no context-free conversion between hours and days
4364    // (think of clock changes)
4365    // and also not between days and months (28-31 days per month)
4366    if (!this.isValid()) {
4367        return this.localeData().invalidDate();
4368    }
4369
4370    var seconds = abs$1(this._milliseconds) / 1000;
4371    var days         = abs$1(this._days);
4372    var months       = abs$1(this._months);
4373    var minutes, hours, years;
4374
4375    // 3600 seconds -> 60 minutes -> 1 hour
4376    minutes           = absFloor(seconds / 60);
4377    hours             = absFloor(minutes / 60);
4378    seconds %= 60;
4379    minutes %= 60;
4380
4381    // 12 months -> 1 year
4382    years  = absFloor(months / 12);
4383    months %= 12;
4384
4385
4386    // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
4387    var Y = years;
4388    var M = months;
4389    var D = days;
4390    var h = hours;
4391    var m = minutes;
4392    var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
4393    var total = this.asSeconds();
4394
4395    if (!total) {
4396        // this is the same as C#'s (Noda) and python (isodate)...
4397        // but not other JS (goog.date)
4398        return 'P0D';
4399    }
4400
4401    var totalSign = total < 0 ? '-' : '';
4402    var ymSign = sign(this._months) !== sign(total) ? '-' : '';
4403    var daysSign = sign(this._days) !== sign(total) ? '-' : '';
4404    var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
4405
4406    return totalSign + 'P' +
4407        (Y ? ymSign + Y + 'Y' : '') +
4408        (M ? ymSign + M + 'M' : '') +
4409        (D ? daysSign + D + 'D' : '') +
4410        ((h || m || s) ? 'T' : '') +
4411        (h ? hmsSign + h + 'H' : '') +
4412        (m ? hmsSign + m + 'M' : '') +
4413        (s ? hmsSign + s + 'S' : '');
4414}
4415
4416var proto$2 = Duration.prototype;
4417
4418proto$2.isValid        = isValid$1;
4419proto$2.abs            = abs;
4420proto$2.add            = add$1;
4421proto$2.subtract       = subtract$1;
4422proto$2.as             = as;
4423proto$2.asMilliseconds = asMilliseconds;
4424proto$2.asSeconds      = asSeconds;
4425proto$2.asMinutes      = asMinutes;
4426proto$2.asHours        = asHours;
4427proto$2.asDays         = asDays;
4428proto$2.asWeeks        = asWeeks;
4429proto$2.asMonths       = asMonths;
4430proto$2.asYears        = asYears;
4431proto$2.valueOf        = valueOf$1;
4432proto$2._bubble        = bubble;
4433proto$2.clone          = clone$1;
4434proto$2.get            = get$2;
4435proto$2.milliseconds   = milliseconds;
4436proto$2.seconds        = seconds;
4437proto$2.minutes        = minutes;
4438proto$2.hours          = hours;
4439proto$2.days           = days;
4440proto$2.weeks          = weeks;
4441proto$2.months         = months;
4442proto$2.years          = years;
4443proto$2.humanize       = humanize;
4444proto$2.toISOString    = toISOString$1;
4445proto$2.toString       = toISOString$1;
4446proto$2.toJSON         = toISOString$1;
4447proto$2.locale         = locale;
4448proto$2.localeData     = localeData;
4449
4450// Deprecations
4451proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
4452proto$2.lang = lang;
4453
4454// Side effect imports
4455
4456// FORMATTING
4457
4458addFormatToken('X', 0, 0, 'unix');
4459addFormatToken('x', 0, 0, 'valueOf');
4460
4461// PARSING
4462
4463addRegexToken('x', matchSigned);
4464addRegexToken('X', matchTimestamp);
4465addParseToken('X', function (input, array, config) {
4466    config._d = new Date(parseFloat(input, 10) * 1000);
4467});
4468addParseToken('x', function (input, array, config) {
4469    config._d = new Date(toInt(input));
4470});
4471
4472// Side effect imports
4473
4474//! moment.js
4475//! version : 2.19.3
4476//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4477//! license : MIT
4478//! momentjs.com
4479
4480hooks.version = '2.19.3';
4481
4482setHookCallback(createLocal);
4483
4484hooks.fn                    = proto;
4485hooks.min                   = min;
4486hooks.max                   = max;
4487hooks.now                   = now;
4488hooks.utc                   = createUTC;
4489hooks.unix                  = createUnix;
4490hooks.months                = listMonths;
4491hooks.isDate                = isDate;
4492hooks.locale                = getSetGlobalLocale;
4493hooks.invalid               = createInvalid;
4494hooks.duration              = createDuration;
4495hooks.isMoment              = isMoment;
4496hooks.weekdays              = listWeekdays;
4497hooks.parseZone             = createInZone;
4498hooks.localeData            = getLocale;
4499hooks.isDuration            = isDuration;
4500hooks.monthsShort           = listMonthsShort;
4501hooks.weekdaysMin           = listWeekdaysMin;
4502hooks.defineLocale          = defineLocale;
4503hooks.updateLocale          = updateLocale;
4504hooks.locales               = listLocales;
4505hooks.weekdaysShort         = listWeekdaysShort;
4506hooks.normalizeUnits        = normalizeUnits;
4507hooks.relativeTimeRounding  = getSetRelativeTimeRounding;
4508hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
4509hooks.calendarFormat        = getCalendarFormat;
4510hooks.prototype             = proto;
4511
4512//! moment.js locale configuration
4513//! locale : Afrikaans [af]
4514//! author : Werner Mollentze : https://github.com/wernerm
4515
4516hooks.defineLocale('af', {
4517    months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
4518    monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
4519    weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
4520    weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
4521    weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
4522    meridiemParse: /vm|nm/i,
4523    isPM : function (input) {
4524        return /^nm$/i.test(input);
4525    },
4526    meridiem : function (hours, minutes, isLower) {
4527        if (hours < 12) {
4528            return isLower ? 'vm' : 'VM';
4529        } else {
4530            return isLower ? 'nm' : 'NM';
4531        }
4532    },
4533    longDateFormat : {
4534        LT : 'HH:mm',
4535        LTS : 'HH:mm:ss',
4536        L : 'DD/MM/YYYY',
4537        LL : 'D MMMM YYYY',
4538        LLL : 'D MMMM YYYY HH:mm',
4539        LLLL : 'dddd, D MMMM YYYY HH:mm'
4540    },
4541    calendar : {
4542        sameDay : '[Vandag om] LT',
4543        nextDay : '[Môre om] LT',
4544        nextWeek : 'dddd [om] LT',
4545        lastDay : '[Gister om] LT',
4546        lastWeek : '[Laas] dddd [om] LT',
4547        sameElse : 'L'
4548    },
4549    relativeTime : {
4550        future : 'oor %s',
4551        past : '%s gelede',
4552        s : '\'n paar sekondes',
4553        m : '\'n minuut',
4554        mm : '%d minute',
4555        h : '\'n uur',
4556        hh : '%d ure',
4557        d : '\'n dag',
4558        dd : '%d dae',
4559        M : '\'n maand',
4560        MM : '%d maande',
4561        y : '\'n jaar',
4562        yy : '%d jaar'
4563    },
4564    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
4565    ordinal : function (number) {
4566        return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
4567    },
4568    week : {
4569        dow : 1, // Maandag is die eerste dag van die week.
4570        doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
4571    }
4572});
4573
4574//! moment.js locale configuration
4575//! locale : Arabic (Algeria) [ar-dz]
4576//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
4577
4578hooks.defineLocale('ar-dz', {
4579    months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4580    monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4581    weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4582    weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4583    weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
4584    weekdaysParseExact : true,
4585    longDateFormat : {
4586        LT : 'HH:mm',
4587        LTS : 'HH:mm:ss',
4588        L : 'DD/MM/YYYY',
4589        LL : 'D MMMM YYYY',
4590        LLL : 'D MMMM YYYY HH:mm',
4591        LLLL : 'dddd D MMMM YYYY HH:mm'
4592    },
4593    calendar : {
4594        sameDay: '[اليوم على الساعة] LT',
4595        nextDay: '[غدا على الساعة] LT',
4596        nextWeek: 'dddd [على الساعة] LT',
4597        lastDay: '[أمس على الساعة] LT',
4598        lastWeek: 'dddd [على الساعة] LT',
4599        sameElse: 'L'
4600    },
4601    relativeTime : {
4602        future : 'في %s',
4603        past : 'منذ %s',
4604        s : 'ثوان',
4605        m : 'دقيقة',
4606        mm : '%d دقائق',
4607        h : 'ساعة',
4608        hh : '%d ساعات',
4609        d : 'يوم',
4610        dd : '%d أيام',
4611        M : 'شهر',
4612        MM : '%d أشهر',
4613        y : 'سنة',
4614        yy : '%d سنوات'
4615    },
4616    week : {
4617        dow : 0, // Sunday is the first day of the week.
4618        doy : 4  // The week that contains Jan 1st is the first week of the year.
4619    }
4620});
4621
4622//! moment.js locale configuration
4623//! locale : Arabic (Kuwait) [ar-kw]
4624//! author : Nusret Parlak: https://github.com/nusretparlak
4625
4626hooks.defineLocale('ar-kw', {
4627    months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4628    monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4629    weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4630    weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4631    weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4632    weekdaysParseExact : true,
4633    longDateFormat : {
4634        LT : 'HH:mm',
4635        LTS : 'HH:mm:ss',
4636        L : 'DD/MM/YYYY',
4637        LL : 'D MMMM YYYY',
4638        LLL : 'D MMMM YYYY HH:mm',
4639        LLLL : 'dddd D MMMM YYYY HH:mm'
4640    },
4641    calendar : {
4642        sameDay: '[اليوم على الساعة] LT',
4643        nextDay: '[غدا على الساعة] LT',
4644        nextWeek: 'dddd [على الساعة] LT',
4645        lastDay: '[أمس على الساعة] LT',
4646        lastWeek: 'dddd [على الساعة] LT',
4647        sameElse: 'L'
4648    },
4649    relativeTime : {
4650        future : 'في %s',
4651        past : 'منذ %s',
4652        s : 'ثوان',
4653        m : 'دقيقة',
4654        mm : '%d دقائق',
4655        h : 'ساعة',
4656        hh : '%d ساعات',
4657        d : 'يوم',
4658        dd : '%d أيام',
4659        M : 'شهر',
4660        MM : '%d أشهر',
4661        y : 'سنة',
4662        yy : '%d سنوات'
4663    },
4664    week : {
4665        dow : 0, // Sunday is the first day of the week.
4666        doy : 12  // The week that contains Jan 1st is the first week of the year.
4667    }
4668});
4669
4670//! moment.js locale configuration
4671//! locale : Arabic (Lybia) [ar-ly]
4672//! author : Ali Hmer: https://github.com/kikoanis
4673
4674var symbolMap = {
4675    '1': '1',
4676    '2': '2',
4677    '3': '3',
4678    '4': '4',
4679    '5': '5',
4680    '6': '6',
4681    '7': '7',
4682    '8': '8',
4683    '9': '9',
4684    '0': '0'
4685};
4686var pluralForm = function (n) {
4687    return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4688};
4689var plurals = {
4690    s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4691    m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4692    h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4693    d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4694    M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4695    y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4696};
4697var pluralize = function (u) {
4698    return function (number, withoutSuffix, string, isFuture) {
4699        var f = pluralForm(number),
4700            str = plurals[u][pluralForm(number)];
4701        if (f === 2) {
4702            str = str[withoutSuffix ? 0 : 1];
4703        }
4704        return str.replace(/%d/i, number);
4705    };
4706};
4707var months$1 = [
4708    'يناير',
4709    'فبراير',
4710    'مارس',
4711    'أبريل',
4712    'مايو',
4713    'يونيو',
4714    'يوليو',
4715    'أغسطس',
4716    'سبتمبر',
4717    'أكتوبر',
4718    'نوفمبر',
4719    'ديسمبر'
4720];
4721
4722hooks.defineLocale('ar-ly', {
4723    months : months$1,
4724    monthsShort : months$1,
4725    weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4726    weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4727    weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4728    weekdaysParseExact : true,
4729    longDateFormat : {
4730        LT : 'HH:mm',
4731        LTS : 'HH:mm:ss',
4732        L : 'D/\u200FM/\u200FYYYY',
4733        LL : 'D MMMM YYYY',
4734        LLL : 'D MMMM YYYY HH:mm',
4735        LLLL : 'dddd D MMMM YYYY HH:mm'
4736    },
4737    meridiemParse: /ص|م/,
4738    isPM : function (input) {
4739        return 'م' === input;
4740    },
4741    meridiem : function (hour, minute, isLower) {
4742        if (hour < 12) {
4743            return 'ص';
4744        } else {
4745            return 'م';
4746        }
4747    },
4748    calendar : {
4749        sameDay: '[اليوم عند الساعة] LT',
4750        nextDay: '[غدًا عند الساعة] LT',
4751        nextWeek: 'dddd [عند الساعة] LT',
4752        lastDay: '[أمس عند الساعة] LT',
4753        lastWeek: 'dddd [عند الساعة] LT',
4754        sameElse: 'L'
4755    },
4756    relativeTime : {
4757        future : 'بعد %s',
4758        past : 'منذ %s',
4759        s : pluralize('s'),
4760        m : pluralize('m'),
4761        mm : pluralize('m'),
4762        h : pluralize('h'),
4763        hh : pluralize('h'),
4764        d : pluralize('d'),
4765        dd : pluralize('d'),
4766        M : pluralize('M'),
4767        MM : pluralize('M'),
4768        y : pluralize('y'),
4769        yy : pluralize('y')
4770    },
4771    preparse: function (string) {
4772        return string.replace(/،/g, ',');
4773    },
4774    postformat: function (string) {
4775        return string.replace(/\d/g, function (match) {
4776            return symbolMap[match];
4777        }).replace(/,/g, '،');
4778    },
4779    week : {
4780        dow : 6, // Saturday is the first day of the week.
4781        doy : 12  // The week that contains Jan 1st is the first week of the year.
4782    }
4783});
4784
4785//! moment.js locale configuration
4786//! locale : Arabic (Morocco) [ar-ma]
4787//! author : ElFadili Yassine : https://github.com/ElFadiliY
4788//! author : Abdel Said : https://github.com/abdelsaid
4789
4790hooks.defineLocale('ar-ma', {
4791    months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4792    monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4793    weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4794    weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4795    weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4796    weekdaysParseExact : true,
4797    longDateFormat : {
4798        LT : 'HH:mm',
4799        LTS : 'HH:mm:ss',
4800        L : 'DD/MM/YYYY',
4801        LL : 'D MMMM YYYY',
4802        LLL : 'D MMMM YYYY HH:mm',
4803        LLLL : 'dddd D MMMM YYYY HH:mm'
4804    },
4805    calendar : {
4806        sameDay: '[اليوم على الساعة] LT',
4807        nextDay: '[غدا على الساعة] LT',
4808        nextWeek: 'dddd [على الساعة] LT',
4809        lastDay: '[أمس على الساعة] LT',
4810        lastWeek: 'dddd [على الساعة] LT',
4811        sameElse: 'L'
4812    },
4813    relativeTime : {
4814        future : 'في %s',
4815        past : 'منذ %s',
4816        s : 'ثوان',
4817        m : 'دقيقة',
4818        mm : '%d دقائق',
4819        h : 'ساعة',
4820        hh : '%d ساعات',
4821        d : 'يوم',
4822        dd : '%d أيام',
4823        M : 'شهر',
4824        MM : '%d أشهر',
4825        y : 'سنة',
4826        yy : '%d سنوات'
4827    },
4828    week : {
4829        dow : 6, // Saturday is the first day of the week.
4830        doy : 12  // The week that contains Jan 1st is the first week of the year.
4831    }
4832});
4833
4834//! moment.js locale configuration
4835//! locale : Arabic (Saudi Arabia) [ar-sa]
4836//! author : Suhail Alkowaileet : https://github.com/xsoh
4837
4838var symbolMap$1 = {
4839    '1': 'Ù¡',
4840    '2': 'Ù¢',
4841    '3': 'Ù£',
4842    '4': 'Ù¤',
4843    '5': 'Ù¥',
4844    '6': 'Ù¦',
4845    '7': 'Ù§',
4846    '8': 'Ù¨',
4847    '9': 'Ù©',
4848    '0': 'Ù '
4849};
4850var numberMap = {
4851    'Ù¡': '1',
4852    'Ù¢': '2',
4853    'Ù£': '3',
4854    'Ù¤': '4',
4855    'Ù¥': '5',
4856    'Ù¦': '6',
4857    'Ù§': '7',
4858    'Ù¨': '8',
4859    'Ù©': '9',
4860    'Ù ': '0'
4861};
4862
4863hooks.defineLocale('ar-sa', {
4864    months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4865    monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4866    weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4867    weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4868    weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4869    weekdaysParseExact : true,
4870    longDateFormat : {
4871        LT : 'HH:mm',
4872        LTS : 'HH:mm:ss',
4873        L : 'DD/MM/YYYY',
4874        LL : 'D MMMM YYYY',
4875        LLL : 'D MMMM YYYY HH:mm',
4876        LLLL : 'dddd D MMMM YYYY HH:mm'
4877    },
4878    meridiemParse: /ص|م/,
4879    isPM : function (input) {
4880        return 'م' === input;
4881    },
4882    meridiem : function (hour, minute, isLower) {
4883        if (hour < 12) {
4884            return 'ص';
4885        } else {
4886            return 'م';
4887        }
4888    },
4889    calendar : {
4890        sameDay: '[اليوم على الساعة] LT',
4891        nextDay: '[غدا على الساعة] LT',
4892        nextWeek: 'dddd [على الساعة] LT',
4893        lastDay: '[أمس على الساعة] LT',
4894        lastWeek: 'dddd [على الساعة] LT',
4895        sameElse: 'L'
4896    },
4897    relativeTime : {
4898        future : 'في %s',
4899        past : 'منذ %s',
4900        s : 'ثوان',
4901        m : 'دقيقة',
4902        mm : '%d دقائق',
4903        h : 'ساعة',
4904        hh : '%d ساعات',
4905        d : 'يوم',
4906        dd : '%d أيام',
4907        M : 'شهر',
4908        MM : '%d أشهر',
4909        y : 'سنة',
4910        yy : '%d سنوات'
4911    },
4912    preparse: function (string) {
4913        return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4914            return numberMap[match];
4915        }).replace(/،/g, ',');
4916    },
4917    postformat: function (string) {
4918        return string.replace(/\d/g, function (match) {
4919            return symbolMap$1[match];
4920        }).replace(/,/g, '،');
4921    },
4922    week : {
4923        dow : 0, // Sunday is the first day of the week.
4924        doy : 6  // The week that contains Jan 1st is the first week of the year.
4925    }
4926});
4927
4928//! moment.js locale configuration
4929//! locale  :  Arabic (Tunisia) [ar-tn]
4930//! author : Nader Toukabri : https://github.com/naderio
4931
4932hooks.defineLocale('ar-tn', {
4933    months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4934    monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4935    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4936    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4937    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4938    weekdaysParseExact : true,
4939    longDateFormat: {
4940        LT: 'HH:mm',
4941        LTS: 'HH:mm:ss',
4942        L: 'DD/MM/YYYY',
4943        LL: 'D MMMM YYYY',
4944        LLL: 'D MMMM YYYY HH:mm',
4945        LLLL: 'dddd D MMMM YYYY HH:mm'
4946    },
4947    calendar: {
4948        sameDay: '[اليوم على الساعة] LT',
4949        nextDay: '[غدا على الساعة] LT',
4950        nextWeek: 'dddd [على الساعة] LT',
4951        lastDay: '[أمس على الساعة] LT',
4952        lastWeek: 'dddd [على الساعة] LT',
4953        sameElse: 'L'
4954    },
4955    relativeTime: {
4956        future: 'في %s',
4957        past: 'منذ %s',
4958        s: 'ثوان',
4959        m: 'دقيقة',
4960        mm: '%d دقائق',
4961        h: 'ساعة',
4962        hh: '%d ساعات',
4963        d: 'يوم',
4964        dd: '%d أيام',
4965        M: 'شهر',
4966        MM: '%d أشهر',
4967        y: 'سنة',
4968        yy: '%d سنوات'
4969    },
4970    week: {
4971        dow: 1, // Monday is the first day of the week.
4972        doy: 4 // The week that contains Jan 4th is the first week of the year.
4973    }
4974});
4975
4976//! moment.js locale configuration
4977//! locale : Arabic [ar]
4978//! author : Abdel Said: https://github.com/abdelsaid
4979//! author : Ahmed Elkhatib
4980//! author : forabi https://github.com/forabi
4981
4982var symbolMap$2 = {
4983    '1': 'Ù¡',
4984    '2': 'Ù¢',
4985    '3': 'Ù£',
4986    '4': 'Ù¤',
4987    '5': 'Ù¥',
4988    '6': 'Ù¦',
4989    '7': 'Ù§',
4990    '8': 'Ù¨',
4991    '9': 'Ù©',
4992    '0': 'Ù '
4993};
4994var numberMap$1 = {
4995    'Ù¡': '1',
4996    'Ù¢': '2',
4997    'Ù£': '3',
4998    'Ù¤': '4',
4999    'Ù¥': '5',
5000    'Ù¦': '6',
5001    'Ù§': '7',
5002    'Ù¨': '8',
5003    'Ù©': '9',
5004    'Ù ': '0'
5005};
5006var pluralForm$1 = function (n) {
5007    return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
5008};
5009var plurals$1 = {
5010    s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
5011    m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
5012    h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
5013    d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
5014    M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
5015    y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
5016};
5017var pluralize$1 = function (u) {
5018    return function (number, withoutSuffix, string, isFuture) {
5019        var f = pluralForm$1(number),
5020            str = plurals$1[u][pluralForm$1(number)];
5021        if (f === 2) {
5022            str = str[withoutSuffix ? 0 : 1];
5023        }
5024        return str.replace(/%d/i, number);
5025    };
5026};
5027var months$2 = [
5028    'كانون الثاني يناير',
5029    'شباط فبراير',
5030    'آذار مارس',
5031    'نيسان أبريل',
5032    'أيار مايو',
5033    'حزيران يونيو',
5034    'تموز يوليو',
5035    'آب أغسطس',
5036    'أيلول سبتمبر',
5037    'تشرين الأول أكتوبر',
5038    'تشرين الثاني نوفمبر',
5039    'كانون الأول ديسمبر'
5040];
5041
5042hooks.defineLocale('ar', {
5043    months : months$2,
5044    monthsShort : months$2,
5045    weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5046    weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5047    weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5048    weekdaysParseExact : true,
5049    longDateFormat : {
5050        LT : 'HH:mm',
5051        LTS : 'HH:mm:ss',
5052        L : 'D/\u200FM/\u200FYYYY',
5053        LL : 'D MMMM YYYY',
5054        LLL : 'D MMMM YYYY HH:mm',
5055        LLLL : 'dddd D MMMM YYYY HH:mm'
5056    },
5057    meridiemParse: /ص|م/,
5058    isPM : function (input) {
5059        return 'م' === input;
5060    },
5061    meridiem : function (hour, minute, isLower) {
5062        if (hour < 12) {
5063            return 'ص';
5064        } else {
5065            return 'م';
5066        }
5067    },
5068    calendar : {
5069        sameDay: '[اليوم عند الساعة] LT',
5070        nextDay: '[غدًا عند الساعة] LT',
5071        nextWeek: 'dddd [عند الساعة] LT',
5072        lastDay: '[أمس عند الساعة] LT',
5073        lastWeek: 'dddd [عند الساعة] LT',
5074        sameElse: 'L'
5075    },
5076    relativeTime : {
5077        future : 'بعد %s',
5078        past : 'منذ %s',
5079        s : pluralize$1('s'),
5080        m : pluralize$1('m'),
5081        mm : pluralize$1('m'),
5082        h : pluralize$1('h'),
5083        hh : pluralize$1('h'),
5084        d : pluralize$1('d'),
5085        dd : pluralize$1('d'),
5086        M : pluralize$1('M'),
5087        MM : pluralize$1('M'),
5088        y : pluralize$1('y'),
5089        yy : pluralize$1('y')
5090    },
5091    preparse: function (string) {
5092        return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
5093            return numberMap$1[match];
5094        }).replace(/،/g, ',');
5095    },
5096    postformat: function (string) {
5097        return string.replace(/\d/g, function (match) {
5098            return symbolMap$2[match];
5099        }).replace(/,/g, '،');
5100    },
5101    week : {
5102        dow : 6, // Saturday is the first day of the week.
5103        doy : 12  // The week that contains Jan 1st is the first week of the year.
5104    }
5105});
5106
5107//! moment.js locale configuration
5108//! locale : Azerbaijani [az]
5109//! author : topchiyev : https://github.com/topchiyev
5110
5111var suffixes = {
5112    1: '-inci',
5113    5: '-inci',
5114    8: '-inci',
5115    70: '-inci',
5116    80: '-inci',
5117    2: '-nci',
5118    7: '-nci',
5119    20: '-nci',
5120    50: '-nci',
5121    3: '-üncü',
5122    4: '-üncü',
5123    100: '-üncü',
5124    6: '-ncı',
5125    9: '-uncu',
5126    10: '-uncu',
5127    30: '-uncu',
5128    60: '-ıncı',
5129    90: '-ıncı'
5130};
5131
5132hooks.defineLocale('az', {
5133    months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
5134    monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
5135    weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
5136    weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
5137    weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
5138    weekdaysParseExact : true,
5139    longDateFormat : {
5140        LT : 'HH:mm',
5141        LTS : 'HH:mm:ss',
5142        L : 'DD.MM.YYYY',
5143        LL : 'D MMMM YYYY',
5144        LLL : 'D MMMM YYYY HH:mm',
5145        LLLL : 'dddd, D MMMM YYYY HH:mm'
5146    },
5147    calendar : {
5148        sameDay : '[bugün saat] LT',
5149        nextDay : '[sabah saat] LT',
5150        nextWeek : '[gələn həftə] dddd [saat] LT',
5151        lastDay : '[dünən] LT',
5152        lastWeek : '[keçən həftə] dddd [saat] LT',
5153        sameElse : 'L'
5154    },
5155    relativeTime : {
5156        future : '%s sonra',
5157        past : '%s əvvəl',
5158        s : 'birneçə saniyyə',
5159        m : 'bir dəqiqə',
5160        mm : '%d dəqiqə',
5161        h : 'bir saat',
5162        hh : '%d saat',
5163        d : 'bir gün',
5164        dd : '%d gün',
5165        M : 'bir ay',
5166        MM : '%d ay',
5167        y : 'bir il',
5168        yy : '%d il'
5169    },
5170    meridiemParse: /gecə|səhər|gündüz|axşam/,
5171    isPM : function (input) {
5172        return /^(gündüz|axşam)$/.test(input);
5173    },
5174    meridiem : function (hour, minute, isLower) {
5175        if (hour < 4) {
5176            return 'gecə';
5177        } else if (hour < 12) {
5178            return 'səhər';
5179        } else if (hour < 17) {
5180            return 'gündüz';
5181        } else {
5182            return 'axşam';
5183        }
5184    },
5185    dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
5186    ordinal : function (number) {
5187        if (number === 0) {  // special case for zero
5188            return number + '-ıncı';
5189        }
5190        var a = number % 10,
5191            b = number % 100 - a,
5192            c = number >= 100 ? 100 : null;
5193        return number + (suffixes[a] || suffixes[b] || suffixes[c]);
5194    },
5195    week : {
5196        dow : 1, // Monday is the first day of the week.
5197        doy : 7  // The week that contains Jan 1st is the first week of the year.
5198    }
5199});
5200
5201//! moment.js locale configuration
5202//! locale : Belarusian [be]
5203//! author : Dmitry Demidov : https://github.com/demidov91
5204//! author: Praleska: http://praleska.pro/
5205//! Author : Menelion Elensúle : https://github.com/Oire
5206
5207function plural(word, num) {
5208    var forms = word.split('_');
5209    return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
5210}
5211function relativeTimeWithPlural(number, withoutSuffix, key) {
5212    var format = {
5213        'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
5214        'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
5215        'dd': 'дзень_дні_дзён',
5216        'MM': 'месяц_месяцы_месяцаў',
5217        'yy': 'год_гады_гадоў'
5218    };
5219    if (key === 'm') {
5220        return withoutSuffix ? 'хвіліна' : 'хвіліну';
5221    }
5222    else if (key === 'h') {
5223        return withoutSuffix ? 'гадзіна' : 'гадзіну';
5224    }
5225    else {
5226        return number + ' ' + plural(format[key], +number);
5227    }
5228}
5229
5230hooks.defineLocale('be', {
5231    months : {
5232        format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
5233        standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
5234    },
5235    monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
5236    weekdays : {
5237        format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
5238        standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
5239        isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
5240    },
5241    weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5242    weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5243    longDateFormat : {
5244        LT : 'HH:mm',
5245        LTS : 'HH:mm:ss',
5246        L : 'DD.MM.YYYY',
5247        LL : 'D MMMM YYYY г.',
5248        LLL : 'D MMMM YYYY г., HH:mm',
5249        LLLL : 'dddd, D MMMM YYYY г., HH:mm'
5250    },
5251    calendar : {
5252        sameDay: '[Сёння ў] LT',
5253        nextDay: '[Заўтра ў] LT',
5254        lastDay: '[Учора ў] LT',
5255        nextWeek: function () {
5256            return '[У] dddd [ў] LT';
5257        },
5258        lastWeek: function () {
5259            switch (this.day()) {
5260                case 0:
5261                case 3:
5262                case 5:
5263                case 6:
5264                    return '[У мінулую] dddd [ў] LT';
5265                case 1:
5266                case 2:
5267                case 4:
5268                    return '[У мінулы] dddd [ў] LT';
5269            }
5270        },
5271        sameElse: 'L'
5272    },
5273    relativeTime : {
5274        future : 'праз %s',
5275        past : '%s таму',
5276        s : 'некалькі секунд',
5277        m : relativeTimeWithPlural,
5278        mm : relativeTimeWithPlural,
5279        h : relativeTimeWithPlural,
5280        hh : relativeTimeWithPlural,
5281        d : 'дзень',
5282        dd : relativeTimeWithPlural,
5283        M : 'месяц',
5284        MM : relativeTimeWithPlural,
5285        y : 'год',
5286        yy : relativeTimeWithPlural
5287    },
5288    meridiemParse: /ночы|раніцы|дня|вечара/,
5289    isPM : function (input) {
5290        return /^(дня|вечара)$/.test(input);
5291    },
5292    meridiem : function (hour, minute, isLower) {
5293        if (hour < 4) {
5294            return 'ночы';
5295        } else if (hour < 12) {
5296            return 'раніцы';
5297        } else if (hour < 17) {
5298            return 'дня';
5299        } else {
5300            return 'вечара';
5301        }
5302    },
5303    dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
5304    ordinal: function (number, period) {
5305        switch (period) {
5306            case 'M':
5307            case 'd':
5308            case 'DDD':
5309            case 'w':
5310            case 'W':
5311                return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
5312            case 'D':
5313                return number + '-га';
5314            default:
5315                return number;
5316        }
5317    },
5318    week : {
5319        dow : 1, // Monday is the first day of the week.
5320        doy : 7  // The week that contains Jan 1st is the first week of the year.
5321    }
5322});
5323
5324//! moment.js locale configuration
5325//! locale : Bulgarian [bg]
5326//! author : Krasen Borisov : https://github.com/kraz
5327
5328hooks.defineLocale('bg', {
5329    months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
5330    monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
5331    weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
5332    weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
5333    weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
5334    longDateFormat : {
5335        LT : 'H:mm',
5336        LTS : 'H:mm:ss',
5337        L : 'D.MM.YYYY',
5338        LL : 'D MMMM YYYY',
5339        LLL : 'D MMMM YYYY H:mm',
5340        LLLL : 'dddd, D MMMM YYYY H:mm'
5341    },
5342    calendar : {
5343        sameDay : '[Днес в] LT',
5344        nextDay : '[Утре в] LT',
5345        nextWeek : 'dddd [в] LT',
5346        lastDay : '[Вчера в] LT',
5347        lastWeek : function () {
5348            switch (this.day()) {
5349                case 0:
5350                case 3:
5351                case 6:
5352                    return '[В изминалата] dddd [в] LT';
5353                case 1:
5354                case 2:
5355                case 4:
5356                case 5:
5357                    return '[В изминалия] dddd [в] LT';
5358            }
5359        },
5360        sameElse : 'L'
5361    },
5362    relativeTime : {
5363        future : 'след %s',
5364        past : 'преди %s',
5365        s : 'няколко секунди',
5366        m : 'минута',
5367        mm : '%d минути',
5368        h : 'час',
5369        hh : '%d часа',
5370        d : 'ден',
5371        dd : '%d дни',
5372        M : 'месец',
5373        MM : '%d месеца',
5374        y : 'година',
5375        yy : '%d години'
5376    },
5377    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
5378    ordinal : function (number) {
5379        var lastDigit = number % 10,
5380            last2Digits = number % 100;
5381        if (number === 0) {
5382            return number + '-ев';
5383        } else if (last2Digits === 0) {
5384            return number + '-ен';
5385        } else if (last2Digits > 10 && last2Digits < 20) {
5386            return number + '-ти';
5387        } else if (lastDigit === 1) {
5388            return number + '-ви';
5389        } else if (lastDigit === 2) {
5390            return number + '-ри';
5391        } else if (lastDigit === 7 || lastDigit === 8) {
5392            return number + '-ми';
5393        } else {
5394            return number + '-ти';
5395        }
5396    },
5397    week : {
5398        dow : 1, // Monday is the first day of the week.
5399        doy : 7  // The week that contains Jan 1st is the first week of the year.
5400    }
5401});
5402
5403//! moment.js locale configuration
5404//! locale : Bambara [bm]
5405//! author : Estelle Comment : https://github.com/estellecomment
5406// Language contact person : Abdoufata Kane : https://github.com/abdoufata
5407
5408hooks.defineLocale('bm', {
5409    months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
5410    monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
5411    weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
5412    weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
5413    weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
5414    longDateFormat : {
5415        LT : 'HH:mm',
5416        LTS : 'HH:mm:ss',
5417        L : 'DD/MM/YYYY',
5418        LL : 'MMMM [tile] D [san] YYYY',
5419        LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
5420        LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
5421    },
5422    calendar : {
5423        sameDay : '[Bi lɛrɛ] LT',
5424        nextDay : '[Sini lɛrɛ] LT',
5425        nextWeek : 'dddd [don lɛrɛ] LT',
5426        lastDay : '[Kunu lɛrɛ] LT',
5427        lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',
5428        sameElse : 'L'
5429    },
5430    relativeTime : {
5431        future : '%s kɔnɔ',
5432        past : 'a bɛ %s bɔ',
5433        s : 'sanga dama dama',
5434        m : 'miniti kelen',
5435        mm : 'miniti %d',
5436        h : 'lɛrɛ kelen',
5437        hh : 'lɛrɛ %d',
5438        d : 'tile kelen',
5439        dd : 'tile %d',
5440        M : 'kalo kelen',
5441        MM : 'kalo %d',
5442        y : 'san kelen',
5443        yy : 'san %d'
5444    },
5445    week : {
5446        dow : 1, // Monday is the first day of the week.
5447        doy : 4  // The week that contains Jan 4th is the first week of the year.
5448    }
5449});
5450
5451//! moment.js locale configuration
5452//! locale : Bengali [bn]
5453//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
5454
5455var symbolMap$3 = {
5456    '1': 'à§§',
5457    '2': '২',
5458    '3': 'à§©',
5459    '4': '৪',
5460    '5': 'à§«',
5461    '6': '৬',
5462    '7': 'à§­',
5463    '8': 'à§®',
5464    '9': '৯',
5465    '0': '০'
5466};
5467var numberMap$2 = {
5468    'à§§': '1',
5469    '২': '2',
5470    'à§©': '3',
5471    '৪': '4',
5472    'à§«': '5',
5473    '৬': '6',
5474    'à§­': '7',
5475    'à§®': '8',
5476    '৯': '9',
5477    '০': '0'
5478};
5479
5480hooks.defineLocale('bn', {
5481    months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
5482    monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
5483    weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
5484    weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
5485    weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
5486    longDateFormat : {
5487        LT : 'A h:mm সময়',
5488        LTS : 'A h:mm:ss সময়',
5489        L : 'DD/MM/YYYY',
5490        LL : 'D MMMM YYYY',
5491        LLL : 'D MMMM YYYY, A h:mm সময়',
5492        LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
5493    },
5494    calendar : {
5495        sameDay : '[আজ] LT',
5496        nextDay : '[আগামীকাল] LT',
5497        nextWeek : 'dddd, LT',
5498        lastDay : '[গতকাল] LT',
5499        lastWeek : '[গত] dddd, LT',
5500        sameElse : 'L'
5501    },
5502    relativeTime : {
5503        future : '%s পরে',
5504        past : '%s আগে',
5505        s : 'কয়েক সেকেন্ড',
5506        m : 'এক মিনিট',
5507        mm : '%d মিনিট',
5508        h : 'এক ঘন্টা',
5509        hh : '%d ঘন্টা',
5510        d : 'এক দিন',
5511        dd : '%d দিন',
5512        M : 'এক মাস',
5513        MM : '%d মাস',
5514        y : 'এক বছর',
5515        yy : '%d বছর'
5516    },
5517    preparse: function (string) {
5518        return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
5519            return numberMap$2[match];
5520        });
5521    },
5522    postformat: function (string) {
5523        return string.replace(/\d/g, function (match) {
5524            return symbolMap$3[match];
5525        });
5526    },
5527    meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
5528    meridiemHour : function (hour, meridiem) {
5529        if (hour === 12) {
5530            hour = 0;
5531        }
5532        if ((meridiem === 'রাত' && hour >= 4) ||
5533                (meridiem === 'দুপুর' && hour < 5) ||
5534                meridiem === 'বিকাল') {
5535            return hour + 12;
5536        } else {
5537            return hour;
5538        }
5539    },
5540    meridiem : function (hour, minute, isLower) {
5541        if (hour < 4) {
5542            return 'রাত';
5543        } else if (hour < 10) {
5544            return 'সকাল';
5545        } else if (hour < 17) {
5546            return 'দুপুর';
5547        } else if (hour < 20) {
5548            return 'বিকাল';
5549        } else {
5550            return 'রাত';
5551        }
5552    },
5553    week : {
5554        dow : 0, // Sunday is the first day of the week.
5555        doy : 6  // The week that contains Jan 1st is the first week of the year.
5556    }
5557});
5558
5559//! moment.js locale configuration
5560//! locale : Tibetan [bo]
5561//! author : Thupten N. Chakrishar : https://github.com/vajradog
5562
5563var symbolMap$4 = {
5564    '1': '༡',
5565    '2': '༢',
5566    '3': '༣',
5567    '4': '༤',
5568    '5': '༥',
5569    '6': '༦',
5570    '7': '༧',
5571    '8': '༨',
5572    '9': '༩',
5573    '0': '༠'
5574};
5575var numberMap$3 = {
5576    '༡': '1',
5577    '༢': '2',
5578    '༣': '3',
5579    '༤': '4',
5580    '༥': '5',
5581    '༦': '6',
5582    '༧': '7',
5583    '༨': '8',
5584    '༩': '9',
5585    '༠': '0'
5586};
5587
5588hooks.defineLocale('bo', {
5589    months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5590    monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5591    weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5592    weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5593    weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5594    longDateFormat : {
5595        LT : 'A h:mm',
5596        LTS : 'A h:mm:ss',
5597        L : 'DD/MM/YYYY',
5598        LL : 'D MMMM YYYY',
5599        LLL : 'D MMMM YYYY, A h:mm',
5600        LLLL : 'dddd, D MMMM YYYY, A h:mm'
5601    },
5602    calendar : {
5603        sameDay : '[དི་རིང] LT',
5604        nextDay : '[སང་ཉིན] LT',
5605        nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
5606        lastDay : '[ཁ་སང] LT',
5607        lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5608        sameElse : 'L'
5609    },
5610    relativeTime : {
5611        future : '%s ལ་',
5612        past : '%s སྔན་ལ',
5613        s : 'ལམ་སང',
5614        m : 'སྐར་མ་གཅིག',
5615        mm : '%d སྐར་མ',
5616        h : 'ཆུ་ཚོད་གཅིག',
5617        hh : '%d ཆུ་ཚོད',
5618        d : 'ཉིན་གཅིག',
5619        dd : '%d ཉིན་',
5620        M : 'ཟླ་བ་གཅིག',
5621        MM : '%d ཟླ་བ',
5622        y : 'ལོ་གཅིག',
5623        yy : '%d ལོ'
5624    },
5625    preparse: function (string) {
5626        return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5627            return numberMap$3[match];
5628        });
5629    },
5630    postformat: function (string) {
5631        return string.replace(/\d/g, function (match) {
5632            return symbolMap$4[match];
5633        });
5634    },
5635    meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5636    meridiemHour : function (hour, meridiem) {
5637        if (hour === 12) {
5638            hour = 0;
5639        }
5640        if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
5641                (meridiem === 'ཉིན་གུང' && hour < 5) ||
5642                meridiem === 'དགོང་དག') {
5643            return hour + 12;
5644        } else {
5645            return hour;
5646        }
5647    },
5648    meridiem : function (hour, minute, isLower) {
5649        if (hour < 4) {
5650            return 'མཚན་མོ';
5651        } else if (hour < 10) {
5652            return 'ཞོགས་ཀས';
5653        } else if (hour < 17) {
5654            return 'ཉིན་གུང';
5655        } else if (hour < 20) {
5656            return 'དགོང་དག';
5657        } else {
5658            return 'མཚན་མོ';
5659        }
5660    },
5661    week : {
5662        dow : 0, // Sunday is the first day of the week.
5663        doy : 6  // The week that contains Jan 1st is the first week of the year.
5664    }
5665});
5666
5667//! moment.js locale configuration
5668//! locale : Breton [br]
5669//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
5670
5671function relativeTimeWithMutation(number, withoutSuffix, key) {
5672    var format = {
5673        'mm': 'munutenn',
5674        'MM': 'miz',
5675        'dd': 'devezh'
5676    };
5677    return number + ' ' + mutation(format[key], number);
5678}
5679function specialMutationForYears(number) {
5680    switch (lastNumber(number)) {
5681        case 1:
5682        case 3:
5683        case 4:
5684        case 5:
5685        case 9:
5686            return number + ' bloaz';
5687        default:
5688            return number + ' vloaz';
5689    }
5690}
5691function lastNumber(number) {
5692    if (number > 9) {
5693        return lastNumber(number % 10);
5694    }
5695    return number;
5696}
5697function mutation(text, number) {
5698    if (number === 2) {
5699        return softMutation(text);
5700    }
5701    return text;
5702}
5703function softMutation(text) {
5704    var mutationTable = {
5705        'm': 'v',
5706        'b': 'v',
5707        'd': 'z'
5708    };
5709    if (mutationTable[text.charAt(0)] === undefined) {
5710        return text;
5711    }
5712    return mutationTable[text.charAt(0)] + text.substring(1);
5713}
5714
5715hooks.defineLocale('br', {
5716    months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5717    monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5718    weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
5719    weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5720    weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5721    weekdaysParseExact : true,
5722    longDateFormat : {
5723        LT : 'h[e]mm A',
5724        LTS : 'h[e]mm:ss A',
5725        L : 'DD/MM/YYYY',
5726        LL : 'D [a viz] MMMM YYYY',
5727        LLL : 'D [a viz] MMMM YYYY h[e]mm A',
5728        LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
5729    },
5730    calendar : {
5731        sameDay : '[Hiziv da] LT',
5732        nextDay : '[Warc\'hoazh da] LT',
5733        nextWeek : 'dddd [da] LT',
5734        lastDay : '[Dec\'h da] LT',
5735        lastWeek : 'dddd [paset da] LT',
5736        sameElse : 'L'
5737    },
5738    relativeTime : {
5739        future : 'a-benn %s',
5740        past : '%s \'zo',
5741        s : 'un nebeud segondennoù',
5742        m : 'ur vunutenn',
5743        mm : relativeTimeWithMutation,
5744        h : 'un eur',
5745        hh : '%d eur',
5746        d : 'un devezh',
5747        dd : relativeTimeWithMutation,
5748        M : 'ur miz',
5749        MM : relativeTimeWithMutation,
5750        y : 'ur bloaz',
5751        yy : specialMutationForYears
5752    },
5753    dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
5754    ordinal : function (number) {
5755        var output = (number === 1) ? 'añ' : 'vet';
5756        return number + output;
5757    },
5758    week : {
5759        dow : 1, // Monday is the first day of the week.
5760        doy : 4  // The week that contains Jan 4th is the first week of the year.
5761    }
5762});
5763
5764//! moment.js locale configuration
5765//! locale : Bosnian [bs]
5766//! author : Nedim Cholich : https://github.com/frontyard
5767//! based on (hr) translation by Bojan Marković
5768
5769function translate(number, withoutSuffix, key) {
5770    var result = number + ' ';
5771    switch (key) {
5772        case 'm':
5773            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5774        case 'mm':
5775            if (number === 1) {
5776                result += 'minuta';
5777            } else if (number === 2 || number === 3 || number === 4) {
5778                result += 'minute';
5779            } else {
5780                result += 'minuta';
5781            }
5782            return result;
5783        case 'h':
5784            return withoutSuffix ? 'jedan sat' : 'jednog sata';
5785        case 'hh':
5786            if (number === 1) {
5787                result += 'sat';
5788            } else if (number === 2 || number === 3 || number === 4) {
5789                result += 'sata';
5790            } else {
5791                result += 'sati';
5792            }
5793            return result;
5794        case 'dd':
5795            if (number === 1) {
5796                result += 'dan';
5797            } else {
5798                result += 'dana';
5799            }
5800            return result;
5801        case 'MM':
5802            if (number === 1) {
5803                result += 'mjesec';
5804            } else if (number === 2 || number === 3 || number === 4) {
5805                result += 'mjeseca';
5806            } else {
5807                result += 'mjeseci';
5808            }
5809            return result;
5810        case 'yy':
5811            if (number === 1) {
5812                result += 'godina';
5813            } else if (number === 2 || number === 3 || number === 4) {
5814                result += 'godine';
5815            } else {
5816                result += 'godina';
5817            }
5818            return result;
5819    }
5820}
5821
5822hooks.defineLocale('bs', {
5823    months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5824    monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5825    monthsParseExact: true,
5826    weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5827    weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5828    weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
5829    weekdaysParseExact : true,
5830    longDateFormat : {
5831        LT : 'H:mm',
5832        LTS : 'H:mm:ss',
5833        L : 'DD.MM.YYYY',
5834        LL : 'D. MMMM YYYY',
5835        LLL : 'D. MMMM YYYY H:mm',
5836        LLLL : 'dddd, D. MMMM YYYY H:mm'
5837    },
5838    calendar : {
5839        sameDay  : '[danas u] LT',
5840        nextDay  : '[sutra u] LT',
5841        nextWeek : function () {
5842            switch (this.day()) {
5843                case 0:
5844                    return '[u] [nedjelju] [u] LT';
5845                case 3:
5846                    return '[u] [srijedu] [u] LT';
5847                case 6:
5848                    return '[u] [subotu] [u] LT';
5849                case 1:
5850                case 2:
5851                case 4:
5852                case 5:
5853                    return '[u] dddd [u] LT';
5854            }
5855        },
5856        lastDay  : '[jučer u] LT',
5857        lastWeek : function () {
5858            switch (this.day()) {
5859                case 0:
5860                case 3:
5861                    return '[prošlu] dddd [u] LT';
5862                case 6:
5863                    return '[prošle] [subote] [u] LT';
5864                case 1:
5865                case 2:
5866                case 4:
5867                case 5:
5868                    return '[prošli] dddd [u] LT';
5869            }
5870        },
5871        sameElse : 'L'
5872    },
5873    relativeTime : {
5874        future : 'za %s',
5875        past   : 'prije %s',
5876        s      : 'par sekundi',
5877        m      : translate,
5878        mm     : translate,
5879        h      : translate,
5880        hh     : translate,
5881        d      : 'dan',
5882        dd     : translate,
5883        M      : 'mjesec',
5884        MM     : translate,
5885        y      : 'godinu',
5886        yy     : translate
5887    },
5888    dayOfMonthOrdinalParse: /\d{1,2}\./,
5889    ordinal : '%d.',
5890    week : {
5891        dow : 1, // Monday is the first day of the week.
5892        doy : 7  // The week that contains Jan 1st is the first week of the year.
5893    }
5894});
5895
5896//! moment.js locale configuration
5897//! locale : Catalan [ca]
5898//! author : Juan G. Hurtado : https://github.com/juanghurtado
5899
5900hooks.defineLocale('ca', {
5901    months : {
5902        standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5903        format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'),
5904        isFormat: /D[oD]?(\s)+MMMM/
5905    },
5906    monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
5907    monthsParseExact : true,
5908    weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5909    weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5910    weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
5911    weekdaysParseExact : true,
5912    longDateFormat : {
5913        LT : 'H:mm',
5914        LTS : 'H:mm:ss',
5915        L : 'DD/MM/YYYY',
5916        LL : 'D MMMM [de] YYYY',
5917        ll : 'D MMM YYYY',
5918        LLL : 'D MMMM [de] YYYY [a les] H:mm',
5919        lll : 'D MMM YYYY, H:mm',
5920        LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',
5921        llll : 'ddd D MMM YYYY, H:mm'
5922    },
5923    calendar : {
5924        sameDay : function () {
5925            return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5926        },
5927        nextDay : function () {
5928            return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5929        },
5930        nextWeek : function () {
5931            return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5932        },
5933        lastDay : function () {
5934            return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5935        },
5936        lastWeek : function () {
5937            return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5938        },
5939        sameElse : 'L'
5940    },
5941    relativeTime : {
5942        future : 'd\'aquí %s',
5943        past : 'fa %s',
5944        s : 'uns segons',
5945        m : 'un minut',
5946        mm : '%d minuts',
5947        h : 'una hora',
5948        hh : '%d hores',
5949        d : 'un dia',
5950        dd : '%d dies',
5951        M : 'un mes',
5952        MM : '%d mesos',
5953        y : 'un any',
5954        yy : '%d anys'
5955    },
5956    dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
5957    ordinal : function (number, period) {
5958        var output = (number === 1) ? 'r' :
5959            (number === 2) ? 'n' :
5960            (number === 3) ? 'r' :
5961            (number === 4) ? 't' : 'è';
5962        if (period === 'w' || period === 'W') {
5963            output = 'a';
5964        }
5965        return number + output;
5966    },
5967    week : {
5968        dow : 1, // Monday is the first day of the week.
5969        doy : 4  // The week that contains Jan 4th is the first week of the year.
5970    }
5971});
5972
5973//! moment.js locale configuration
5974//! locale : Czech [cs]
5975//! author : petrbela : https://github.com/petrbela
5976
5977var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.
5977split('_');
5978var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
5979function plural$1(n) {
5980    return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
5981}
5982function translate$1(number, withoutSuffix, key, isFuture) {
5983    var result = number + ' ';
5984    switch (key) {
5985        case 's':  // a few seconds / in a few seconds / a few seconds ago
5986            return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
5987        case 'm':  // a minute / in a minute / a minute ago
5988            return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
5989        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
5990            if (withoutSuffix || isFuture) {
5991                return result + (plural$1(number) ? 'minuty' : 'minut');
5992            } else {
5993                return result + 'minutami';
5994            }
5995            break;
5996        case 'h':  // an hour / in an hour / an hour ago
5997            return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
5998        case 'hh': // 9 hours / in 9 hours / 9 hours ago
5999            if (withoutSuffix || isFuture) {
6000                return result + (plural$1(number) ? 'hodiny' : 'hodin');
6001            } else {
6002                return result + 'hodinami';
6003            }
6004            break;
6005        case 'd':  // a day / in a day / a day ago
6006            return (withoutSuffix || isFuture) ? 'den' : 'dnem';
6007        case 'dd': // 9 days / in 9 days / 9 days ago
6008            if (withoutSuffix || isFuture) {
6009                return result + (plural$1(number) ? 'dny' : 'dní');
6010            } else {
6011                return result + 'dny';
6012            }
6013            break;
6014        case 'M':  // a month / in a month / a month ago
6015            return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
6016        case 'MM': // 9 months / in 9 months / 9 months ago
6017            if (withoutSuffix || isFuture) {
6018                return result + (plural$1(number) ? 'měsíce' : 'měsíců');
6019            } else {
6020                return result + 'měsíci';
6021            }
6022            break;
6023        case 'y':  // a year / in a year / a year ago
6024            return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
6025        case 'yy': // 9 years / in 9 years / 9 years ago
6026            if (withoutSuffix || isFuture) {
6027                return result + (plural$1(number) ? 'roky' : 'let');
6028            } else {
6029                return result + 'lety';
6030            }
6031            break;
6032    }
6033}
6034
6035hooks.defineLocale('cs', {
6036    months : months$3,
6037    monthsShort : monthsShort,
6038    monthsParse : (function (months, monthsShort) {
6039        var i, _monthsParse = [];
6040        for (i = 0; i < 12; i++) {
6041            // use custom parser to solve problem with July (červenec)
6042            _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
6043        }
6044        return _monthsParse;
6045    }(months$3, monthsShort)),
6046    shortMonthsParse : (function (monthsShort) {
6047        var i, _shortMonthsParse = [];
6048        for (i = 0; i < 12; i++) {
6049            _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
6050        }
6051        return _shortMonthsParse;
6052    }(monthsShort)),
6053    longMonthsParse : (function (months) {
6054        var i, _longMonthsParse = [];
6055        for (i = 0; i < 12; i++) {
6056            _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
6057        }
6058        return _longMonthsParse;
6059    }(months$3)),
6060    weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
6061    weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
6062    weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
6063    longDateFormat : {
6064        LT: 'H:mm',
6065        LTS : 'H:mm:ss',
6066        L : 'DD.MM.YYYY',
6067        LL : 'D. MMMM YYYY',
6068        LLL : 'D. MMMM YYYY H:mm',
6069        LLLL : 'dddd D. MMMM YYYY H:mm',
6070        l : 'D. M. YYYY'
6071    },
6072    calendar : {
6073        sameDay: '[dnes v] LT',
6074        nextDay: '[zítra v] LT',
6075        nextWeek: function () {
6076            switch (this.day()) {
6077                case 0:
6078                    return '[v neděli v] LT';
6079                case 1:
6080                case 2:
6081                    return '[v] dddd [v] LT';
6082                case 3:
6083                    return '[ve středu v] LT';
6084                case 4:
6085                    return '[ve čtvrtek v] LT';
6086                case 5:
6087                    return '[v pátek v] LT';
6088                case 6:
6089                    return '[v sobotu v] LT';
6090            }
6091        },
6092        lastDay: '[včera v] LT',
6093        lastWeek: function () {
6094            switch (this.day()) {
6095                case 0:
6096                    return '[minulou neděli v] LT';
6097                case 1:
6098                case 2:
6099                    return '[minulé] dddd [v] LT';
6100                case 3:
6101                    return '[minulou středu v] LT';
6102                case 4:
6103                case 5:
6104                    return '[minulý] dddd [v] LT';
6105                case 6:
6106                    return '[minulou sobotu v] LT';
6107            }
6108        },
6109        sameElse: 'L'
6110    },
6111    relativeTime : {
6112        future : 'za %s',
6113        past : 'před %s',
6114        s : translate$1,
6115        m : translate$1,
6116        mm : translate$1,
6117        h : translate$1,
6118        hh : translate$1,
6119        d : translate$1,
6120        dd : translate$1,
6121        M : translate$1,
6122        MM : translate$1,
6123        y : translate$1,
6124        yy : translate$1
6125    },
6126    dayOfMonthOrdinalParse : /\d{1,2}\./,
6127    ordinal : '%d.',
6128    week : {
6129        dow : 1, // Monday is the first day of the week.
6130        doy : 4  // The week that contains Jan 4th is the first week of the year.
6131    }
6132});
6133
6134//! moment.js locale configuration
6135//! locale : Chuvash [cv]
6136//! author : Anatoly Mironov : https://github.com/mirontoli
6137
6138hooks.defineLocale('cv', {
6139    months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
6140    monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
6141    weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
6142    weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
6143    weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
6144    longDateFormat : {
6145        LT : 'HH:mm',
6146        LTS : 'HH:mm:ss',
6147        L : 'DD-MM-YYYY',
6148        LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
6149        LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
6150        LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
6151    },
6152    calendar : {
6153        sameDay: '[Паян] LT [сехетре]',
6154        nextDay: '[Ыран] LT [сехетре]',
6155        lastDay: '[Ӗнер] LT [сехетре]',
6156        nextWeek: '[Ҫитес] dddd LT [сехетре]',
6157        lastWeek: '[Иртнӗ] dddd LT [сехетре]',
6158        sameElse: 'L'
6159    },
6160    relativeTime : {
6161        future : function (output) {
6162            var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
6163            return output + affix;
6164        },
6165        past : '%s каялла',
6166        s : 'пӗр-ик ҫеккунт',
6167        m : 'пӗр минут',
6168        mm : '%d минут',
6169        h : 'пӗр сехет',
6170        hh : '%d сехет',
6171        d : 'пӗр кун',
6172        dd : '%d кун',
6173        M : 'пӗр уйӑх',
6174        MM : '%d уйӑх',
6175        y : 'пӗр ҫул',
6176        yy : '%d ҫул'
6177    },
6178    dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
6179    ordinal : '%d-мӗш',
6180    week : {
6181        dow : 1, // Monday is the first day of the week.
6182        doy : 7  // The week that contains Jan 1st is the first week of the year.
6183    }
6184});
6185
6186//! moment.js locale configuration
6187//! locale : Welsh [cy]
6188//! author : Robert Allen : https://github.com/robgallen
6189//! author : https://github.com/ryangreaves
6190
6191hooks.defineLocale('cy', {
6192    months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
6193    monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
6194    weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
6195    weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
6196    weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
6197    weekdaysParseExact : true,
6198    // time formats are the same as en-gb
6199    longDateFormat: {
6200        LT: 'HH:mm',
6201        LTS : 'HH:mm:ss',
6202        L: 'DD/MM/YYYY',
6203        LL: 'D MMMM YYYY',
6204        LLL: 'D MMMM YYYY HH:mm',
6205        LLLL: 'dddd, D MMMM YYYY HH:mm'
6206    },
6207    calendar: {
6208        sameDay: '[Heddiw am] LT',
6209        nextDay: '[Yfory am] LT',
6210        nextWeek: 'dddd [am] LT',
6211        lastDay: '[Ddoe am] LT',
6212        lastWeek: 'dddd [diwethaf am] LT',
6213        sameElse: 'L'
6214    },
6215    relativeTime: {
6216        future: 'mewn %s',
6217        past: '%s yn ôl',
6218        s: 'ychydig eiliadau',
6219        m: 'munud',
6220        mm: '%d munud',
6221        h: 'awr',
6222        hh: '%d awr',
6223        d: 'diwrnod',
6224        dd: '%d diwrnod',
6225        M: 'mis',
6226        MM: '%d mis',
6227        y: 'blwyddyn',
6228        yy: '%d flynedd'
6229    },
6230    dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
6231    // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
6232    ordinal: function (number) {
6233        var b = number,
6234            output = '',
6235            lookup = [
6236                '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
6237                'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
6238            ];
6239        if (b > 20) {
6240            if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
6241                output = 'fed'; // not 30ain, 70ain or 90ain
6242            } else {
6243                output = 'ain';
6244            }
6245        } else if (b > 0) {
6246            output = lookup[b];
6247        }
6248        return number + output;
6249    },
6250    week : {
6251        dow : 1, // Monday is the first day of the week.
6252        doy : 4  // The week that contains Jan 4th is the first week of the year.
6253    }
6254});
6255
6256//! moment.js locale configuration
6257//! locale : Danish [da]
6258//! author : Ulrik Nielsen : https://github.com/mrbase
6259
6260hooks.defineLocale('da', {
6261    months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
6262    monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
6263    weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
6264    weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
6265    weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
6266    longDateFormat : {
6267        LT : 'HH:mm',
6268        LTS : 'HH:mm:ss',
6269        L : 'DD.MM.YYYY',
6270        LL : 'D. MMMM YYYY',
6271        LLL : 'D. MMMM YYYY HH:mm',
6272        LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
6273    },
6274    calendar : {
6275        sameDay : '[i dag kl.] LT',
6276        nextDay : '[i morgen kl.] LT',
6277        nextWeek : 'på dddd [kl.] LT',
6278        lastDay : '[i går kl.] LT',
6279        lastWeek : '[i] dddd[s kl.] LT',
6280        sameElse : 'L'
6281    },
6282    relativeTime : {
6283        future : 'om %s',
6284        past : '%s siden',
6285        s : 'få sekunder',
6286        m : 'et minut',
6287        mm : '%d minutter',
6288        h : 'en time',
6289        hh : '%d timer',
6290        d : 'en dag',
6291        dd : '%d dage',
6292        M : 'en måned',
6293        MM : '%d måneder',
6294        y : 'et år',
6295        yy : '%d år'
6296    },
6297    dayOfMonthOrdinalParse: /\d{1,2}\./,
6298    ordinal : '%d.',
6299    week : {
6300        dow : 1, // Monday is the first day of the week.
6301        doy : 4  // The week that contains Jan 4th is the first week of the year.
6302    }
6303});
6304
6305//! moment.js locale configuration
6306//! locale : German (Austria) [de-at]
6307//! author : lluchs : https://github.com/lluchs
6308//! author: Menelion Elensúle: https://github.com/Oire
6309//! author : Martin Groller : https://github.com/MadMG
6310//! author : Mikolaj Dadela : https://github.com/mik01aj
6311
6312function processRelativeTime(number, withoutSuffix, key, isFuture) {
6313    var format = {
6314        'm': ['eine Minute', 'einer Minute'],
6315        'h': ['eine Stunde', 'einer Stunde'],
6316        'd': ['ein Tag', 'einem Tag'],
6317        'dd': [number + ' Tage', number + ' Tagen'],
6318        'M': ['ein Monat', 'einem Monat'],
6319        'MM': [number + ' Monate', number + ' Monaten'],
6320        'y': ['ein Jahr', 'einem Jahr'],
6321        'yy': [number + ' Jahre', number + ' Jahren']
6322    };
6323    return withoutSuffix ? format[key][0] : format[key][1];
6324}
6325
6326hooks.defineLocale('de-at', {
6327    months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6328    monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6329    monthsParseExact : true,
6330    weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6331    weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6332    weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6333    weekdaysParseExact : true,
6334    longDateFormat : {
6335        LT: 'HH:mm',
6336        LTS: 'HH:mm:ss',
6337        L : 'DD.MM.YYYY',
6338        LL : 'D. MMMM YYYY',
6339        LLL : 'D. MMMM YYYY HH:mm',
6340        LLLL : 'dddd, D. MMMM YYYY HH:mm'
6341    },
6342    calendar : {
6343        sameDay: '[heute um] LT [Uhr]',
6344        sameElse: 'L',
6345        nextDay: '[morgen um] LT [Uhr]',
6346        nextWeek: 'dddd [um] LT [Uhr]',
6347        lastDay: '[gestern um] LT [Uhr]',
6348        lastWeek: '[letzten] dddd [um] LT [Uhr]'
6349    },
6350    relativeTime : {
6351        future : 'in %s',
6352        past : 'vor %s',
6353        s : 'ein paar Sekunden',
6354        m : processRelativeTime,
6355        mm : '%d Minuten',
6356        h : processRelativeTime,
6357        hh : '%d Stunden',
6358        d : processRelativeTime,
6359        dd : processRelativeTime,
6360        M : processRelativeTime,
6361        MM : processRelativeTime,
6362        y : processRelativeTime,
6363        yy : processRelativeTime
6364    },
6365    dayOfMonthOrdinalParse: /\d{1,2}\./,
6366    ordinal : '%d.',
6367    week : {
6368        dow : 1, // Monday is the first day of the week.
6369        doy : 4  // The week that contains Jan 4th is the first week of the year.
6370    }
6371});
6372
6373//! moment.js locale configuration
6374//! locale : German (Switzerland) [de-ch]
6375//! author : sschueller : https://github.com/sschueller
6376
6377// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#
6378
6379function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
6380    var format = {
6381        'm': ['eine Minute', 'einer Minute'],
6382        'h': ['eine Stunde', 'einer Stunde'],
6383        'd': ['ein Tag', 'einem Tag'],
6384        'dd': [number + ' Tage', number + ' Tagen'],
6385        'M': ['ein Monat', 'einem Monat'],
6386        'MM': [number + ' Monate', number + ' Monaten'],
6387        'y': ['ein Jahr', 'einem Jahr'],
6388        'yy': [number + ' Jahre', number + ' Jahren']
6389    };
6390    return withoutSuffix ? format[key][0] : format[key][1];
6391}
6392
6393hooks.defineLocale('de-ch', {
6394    months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6395    monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6396    monthsParseExact : true,
6397    weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6398    weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6399    weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6400    weekdaysParseExact : true,
6401    longDateFormat : {
6402        LT: 'HH.mm',
6403        LTS: 'HH.mm.ss',
6404        L : 'DD.MM.YYYY',
6405        LL : 'D. MMMM YYYY',
6406        LLL : 'D. MMMM YYYY HH.mm',
6407        LLLL : 'dddd, D. MMMM YYYY HH.mm'
6408    },
6409    calendar : {
6410        sameDay: '[heute um] LT [Uhr]',
6411        sameElse: 'L',
6412        nextDay: '[morgen um] LT [Uhr]',
6413        nextWeek: 'dddd [um] LT [Uhr]',
6414        lastDay: '[gestern um] LT [Uhr]',
6415        lastWeek: '[letzten] dddd [um] LT [Uhr]'
6416    },
6417    relativeTime : {
6418        future : 'in %s',
6419        past : 'vor %s',
6420        s : 'ein paar Sekunden',
6421        m : processRelativeTime$1,
6422        mm : '%d Minuten',
6423        h : processRelativeTime$1,
6424        hh : '%d Stunden',
6425        d : processRelativeTime$1,
6426        dd : processRelativeTime$1,
6427        M : processRelativeTime$1,
6428        MM : processRelativeTime$1,
6429        y : processRelativeTime$1,
6430        yy : processRelativeTime$1
6431    },
6432    dayOfMonthOrdinalParse: /\d{1,2}\./,
6433    ordinal : '%d.',
6434    week : {
6435        dow : 1, // Monday is the first day of the week.
6436        doy : 4  // The week that contains Jan 4th is the first week of the year.
6437    }
6438});
6439
6440//! moment.js locale configuration
6441//! locale : German [de]
6442//! author : lluchs : https://github.com/lluchs
6443//! author: Menelion Elensúle: https://github.com/Oire
6444//! author : Mikolaj Dadela : https://github.com/mik01aj
6445
6446function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
6447    var format = {
6448        'm': ['eine Minute', 'einer Minute'],
6449        'h': ['eine Stunde', 'einer Stunde'],
6450        'd': ['ein Tag', 'einem Tag'],
6451        'dd': [number + ' Tage', number + ' Tagen'],
6452        'M': ['ein Monat', 'einem Monat'],
6453        'MM': [number + ' Monate', number + ' Monaten'],
6454        'y': ['ein Jahr', 'einem Jahr'],
6455        'yy': [number + ' Jahre', number + ' Jahren']
6456    };
6457    return withoutSuffix ? format[key][0] : format[key][1];
6458}
6459
6460hooks.defineLocale('de', {
6461    months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6462    monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6463    monthsParseExact : true,
6464    weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6465    weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6466    weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6467    weekdaysParseExact : true,
6468    longDateFormat : {
6469        LT: 'HH:mm',
6470        LTS: 'HH:mm:ss',
6471        L : 'DD.MM.YYYY',
6472        LL : 'D. MMMM YYYY',
6473        LLL : 'D. MMMM YYYY HH:mm',
6474        LLLL : 'dddd, D. MMMM YYYY HH:mm'
6475    },
6476    calendar : {
6477        sameDay: '[heute um] LT [Uhr]',
6478        sameElse: 'L',
6479        nextDay: '[morgen um] LT [Uhr]',
6480        nextWeek: 'dddd [um] LT [Uhr]',
6481        lastDay: '[gestern um] LT [Uhr]',
6482        lastWeek: '[letzten] dddd [um] LT [Uhr]'
6483    },
6484    relativeTime : {
6485        future : 'in %s',
6486        past : 'vor %s',
6487        s : 'ein paar Sekunden',
6488        m : processRelativeTime$2,
6489        mm : '%d Minuten',
6490        h : processRelativeTime$2,
6491        hh : '%d Stunden',
6492        d : processRelativeTime$2,
6493        dd : processRelativeTime$2,
6494        M : processRelativeTime$2,
6495        MM : processRelativeTime$2,
6496        y : processRelativeTime$2,
6497        yy : processRelativeTime$2
6498    },
6499    dayOfMonthOrdinalParse: /\d{1,2}\./,
6500    ordinal : '%d.',
6501    week : {
6502        dow : 1, // Monday is the first day of the week.
6503        doy : 4  // The week that contains Jan 4th is the first week of the year.
6504    }
6505});
6506
6507//! moment.js locale configuration
6508//! locale : Maldivian [dv]
6509//! author : Jawish Hameed : https://github.com/jawish
6510
6511var months$4 = [
6512    'ޖެނުއަރީ',
6513    'ފެބްރުއަރީ',
6514    'މާރިޗު',
6515    'އޭޕްރީލު',
6516    'މޭ',
6517    'ޖޫން',
6518    'ޖުލައި',
6519    'އޯގަސްޓު',
6520    'ސެޕްޓެމްބަރު',
6521    'އޮކްޓޯބަރު',
6522    'ނޮވެމްބަރު',
6523    'ޑިސެމްބަރު'
6524];
6525var weekdays = [
6526    'އާދިއްތަ',
6527    'ހޯމަ',
6528    'އަންގާރަ',
6529    'ބުދަ',
6530    'ބުރާސްފަތި',
6531    'ހުކުރު',
6532    'ހޮނިހިރު'
6533];
6534
6535hooks.defineLocale('dv', {
6536    months : months$4,
6537    monthsShort : months$4,
6538    weekdays : weekdays,
6539    weekdaysShort : weekdays,
6540    weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6541    longDateFormat : {
6542
6543        LT : 'HH:mm',
6544        LTS : 'HH:mm:ss',
6545        L : 'D/M/YYYY',
6546        LL : 'D MMMM YYYY',
6547        LLL : 'D MMMM YYYY HH:mm',
6548        LLLL : 'dddd D MMMM YYYY HH:mm'
6549    },
6550    meridiemParse: /މކ|މފ/,
6551    isPM : function (input) {
6552        return 'މފ' === input;
6553    },
6554    meridiem : function (hour, minute, isLower) {
6555        if (hour < 12) {
6556            return 'މކ';
6557        } else {
6558            return 'މފ';
6559        }
6560    },
6561    calendar : {
6562        sameDay : '[މިއަދު] LT',
6563        nextDay : '[މާދަމާ] LT',
6564        nextWeek : 'dddd LT',
6565        lastDay : '[އިއްޔެ] LT',
6566        lastWeek : '[ފާއިތުވި] dddd LT',
6567        sameElse : 'L'
6568    },
6569    relativeTime : {
6570        future : 'ތެރޭގައި %s',
6571        past : 'ކުރިން %s',
6572        s : 'ސިކުންތުކޮޅެއް',
6573        m : 'މިނިޓެއް',
6574        mm : 'މިނިޓު %d',
6575        h : 'ގަޑިއިރެއް',
6576        hh : 'ގަޑިއިރު %d',
6577        d : 'ދުވަހެއް',
6578        dd : 'ދުވަސް %d',
6579        M : 'މަހެއް',
6580        MM : 'މަސް %d',
6581        y : 'އަހަރެއް',
6582        yy : 'އަހަރު %d'
6583    },
6584    preparse: function (string) {
6585        return string.replace(/،/g, ',');
6586    },
6587    postformat: function (string) {
6588        return string.replace(/,/g, '،');
6589    },
6590    week : {
6591        dow : 7,  // Sunday is the first day of the week.
6592        doy : 12  // The week that contains Jan 1st is the first week of the year.
6593    }
6594});
6595
6596//! moment.js locale configuration
6597//! locale : Greek [el]
6598//! author : Aggelos Karalias : https://github.com/mehiel
6599
6600hooks.defineLocale('el', {
6601    monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6602    monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6603    months : function (momentToFormat, format) {
6604        if (!momentToFormat) {
6605            return this._monthsNominativeEl;
6606        } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
6607            return this._monthsGenitiveEl[momentToFormat.month()];
6608        } else {
6609            return this._monthsNominativeEl[momentToFormat.month()];
6610        }
6611    },
6612    monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6613    weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6614    weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6615    weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6616    meridiem : function (hours, minutes, isLower) {
6617        if (hours > 11) {
6618            return isLower ? 'μμ' : 'ΜΜ';
6619        } else {
6620            return isLower ? 'πμ' : 'ΠΜ';
6621        }
6622    },
6623    isPM : function (input) {
6624        return ((input + '').toLowerCase()[0] === 'μ');
6625    },
6626    meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
6627    longDateFormat : {
6628        LT : 'h:mm A',
6629        LTS : 'h:mm:ss A',
6630        L : 'DD/MM/YYYY',
6631        LL : 'D MMMM YYYY',
6632        LLL : 'D MMMM YYYY h:mm A',
6633        LLLL : 'dddd, D MMMM YYYY h:mm A'
6634    },
6635    calendarEl : {
6636        sameDay : '[Σήμερα {}] LT',
6637        nextDay : '[Αύριο {}] LT',
6638        nextWeek : 'dddd [{}] LT',
6639        lastDay : '[Χθες {}] LT',
6640        lastWeek : function () {
6641            switch (this.day()) {
6642                case 6:
6643                    return '[το προηγούμενο] dddd [{}] LT';
6644                default:
6645                    return '[την προηγούμενη] dddd [{}] LT';
6646            }
6647        },
6648        sameElse : 'L'
6649    },
6650    calendar : function (key, mom) {
6651        var output = this._calendarEl[key],
6652            hours = mom && mom.hours();
6653        if (isFunction(output)) {
6654            output = output.apply(mom);
6655        }
6656        return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
6657    },
6658    relativeTime : {
6659        future : 'σε %s',
6660        past : '%s πριν',
6661        s : 'λίγα δευτερόλεπτα',
6662        m : 'ένα λεπτό',
6663        mm : '%d λεπτά',
6664        h : 'μία ώρα',
6665        hh : '%d ώρες',
6666        d : 'μία μέρα',
6667        dd : '%d μέρες',
6668        M : 'ένας μήνας',
6669        MM : '%d μήνες',
6670        y : 'ένας χρόνος',
6671        yy : '%d χρόνια'
6672    },
6673    dayOfMonthOrdinalParse: /\d{1,2}η/,
6674    ordinal: '%dη',
6675    week : {
6676        dow : 1, // Monday is the first day of the week.
6677        doy : 4  // The week that contains Jan 4st is the first week of the year.
6678    }
6679});
6680
6681//! moment.js locale configuration
6682//! locale : English (Australia) [en-au]
6683//! author : Jared Morse : https://github.com/jarcoal
6684
6685hooks.defineLocale('en-au', {
6686    months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6687    monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6688    weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6689    weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6690    weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6691    longDateFormat : {
6692        LT : 'h:mm A',
6693        LTS : 'h:mm:ss A',
6694        L : 'DD/MM/YYYY',
6695        LL : 'D MMMM YYYY',
6696        LLL : 'D MMMM YYYY h:mm A',
6697        LLLL : 'dddd, D MMMM YYYY h:mm A'
6698    },
6699    calendar : {
6700        sameDay : '[Today at] LT',
6701        nextDay : '[Tomorrow at] LT',
6702        nextWeek : 'dddd [at] LT',
6703        lastDay : '[Yesterday at] LT',
6704        lastWeek : '[Last] dddd [at] LT',
6705        sameElse : 'L'
6706    },
6707    relativeTime : {
6708        future : 'in %s',
6709        past : '%s ago',
6710        s : 'a few seconds',
6711        m : 'a minute',
6712        mm : '%d minutes',
6713        h : 'an hour',
6714        hh : '%d hours',
6715        d : 'a day',
6716        dd : '%d days',
6717        M : 'a month',
6718        MM : '%d months',
6719        y : 'a year',
6720        yy : '%d years'
6721    },
6722    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6723    ordinal : function (number) {
6724        var b = number % 10,
6725            output = (~~(number % 100 / 10) === 1) ? 'th' :
6726            (b === 1) ? 'st' :
6727            (b === 2) ? 'nd' :
6728            (b === 3) ? 'rd' : 'th';
6729        return number + output;
6730    },
6731    week : {
6732        dow : 1, // Monday is the first day of the week.
6733        doy : 4  // The week that contains Jan 4th is the first week of the year.
6734    }
6735});
6736
6737//! moment.js locale configuration
6738//! locale : English (Canada) [en-ca]
6739//! author : Jonathan Abourbih : https://github.com/jonbca
6740
6741hooks.defineLocale('en-ca', {
6742    months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6743    monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6744    weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6745    weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6746    weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6747    longDateFormat : {
6748        LT : 'h:mm A',
6749        LTS : 'h:mm:ss A',
6750        L : 'YYYY-MM-DD',
6751        LL : 'MMMM D, YYYY',
6752        LLL : 'MMMM D, YYYY h:mm A',
6753        LLLL : 'dddd, MMMM D, YYYY h:mm A'
6754    },
6755    calendar : {
6756        sameDay : '[Today at] LT',
6757        nextDay : '[Tomorrow at] LT',
6758        nextWeek : 'dddd [at] LT',
6759        lastDay : '[Yesterday at] LT',
6760        lastWeek : '[Last] dddd [at] LT',
6761        sameElse : 'L'
6762    },
6763    relativeTime : {
6764        future : 'in %s',
6765        past : '%s ago',
6766        s : 'a few seconds',
6767        m : 'a minute',
6768        mm : '%d minutes',
6769        h : 'an hour',
6770        hh : '%d hours',
6771        d : 'a day',
6772        dd : '%d days',
6773        M : 'a month',
6774        MM : '%d months',
6775        y : 'a year',
6776        yy : '%d years'
6777    },
6778    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6779    ordinal : function (number) {
6780        var b = number % 10,
6781            output = (~~(number % 100 / 10) === 1) ? 'th' :
6782            (b === 1) ? 'st' :
6783            (b === 2) ? 'nd' :
6784            (b === 3) ? 'rd' : 'th';
6785        return number + output;
6786    }
6787});
6788
6789//! moment.js locale configuration
6790//! locale : English (United Kingdom) [en-gb]
6791//! author : Chris Gedrim : https://github.com/chrisgedrim
6792
6793hooks.defineLocale('en-gb', {
6794    months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6795    monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6796    weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6797    weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6798    weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6799    longDateFormat : {
6800        LT : 'HH:mm',
6801        LTS : 'HH:mm:ss',
6802        L : 'DD/MM/YYYY',
6803        LL : 'D MMMM YYYY',
6804        LLL : 'D MMMM YYYY HH:mm',
6805        LLLL : 'dddd, D MMMM YYYY HH:mm'
6806    },
6807    calendar : {
6808        sameDay : '[Today at] LT',
6809        nextDay : '[Tomorrow at] LT',
6810        nextWeek : 'dddd [at] LT',
6811        lastDay : '[Yesterday at] LT',
6812        lastWeek : '[Last] dddd [at] LT',
6813        sameElse : 'L'
6814    },
6815    relativeTime : {
6816        future : 'in %s',
6817        past : '%s ago',
6818        s : 'a few seconds',
6819        m : 'a minute',
6820        mm : '%d minutes',
6821        h : 'an hour',
6822        hh : '%d hours',
6823        d : 'a day',
6824        dd : '%d days',
6825        M : 'a month',
6826        MM : '%d months',
6827        y : 'a year',
6828        yy : '%d years'
6829    },
6830    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6831    ordinal : function (number) {
6832        var b = number % 10,
6833            output = (~~(number % 100 / 10) === 1) ? 'th' :
6834            (b === 1) ? 'st' :
6835            (b === 2) ? 'nd' :
6836            (b === 3) ? 'rd' : 'th';
6837        return number + output;
6838    },
6839    week : {
6840        dow : 1, // Monday is the first day of the week.
6841        doy : 4  // The week that contains Jan 4th is the first week of the year.
6842    }
6843});
6844
6845//! moment.js locale configuration
6846//! locale : English (Ireland) [en-ie]
6847//! author : Chris Cartlidge : https://github.com/chriscartlidge
6848
6849hooks.defineLocale('en-ie', {
6850    months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6851    monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6852    weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6853    weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6854    weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6855    longDateFormat : {
6856        LT : 'HH:mm',
6857        LTS : 'HH:mm:ss',
6858        L : 'DD-MM-YYYY',
6859        LL : 'D MMMM YYYY',
6860        LLL : 'D MMMM YYYY HH:mm',
6861        LLLL : 'dddd D MMMM YYYY HH:mm'
6862    },
6863    calendar : {
6864        sameDay : '[Today at] LT',
6865        nextDay : '[Tomorrow at] LT',
6866        nextWeek : 'dddd [at] LT',
6867        lastDay : '[Yesterday at] LT',
6868        lastWeek : '[Last] dddd [at] LT',
6869        sameElse : 'L'
6870    },
6871    relativeTime : {
6872        future : 'in %s',
6873        past : '%s ago',
6874        s : 'a few seconds',
6875        m : 'a minute',
6876        mm : '%d minutes',
6877        h : 'an hour',
6878        hh : '%d hours',
6879        d : 'a day',
6880        dd : '%d days',
6881        M : 'a month',
6882        MM : '%d months',
6883        y : 'a year',
6884        yy : '%d years'
6885    },
6886    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6887    ordinal : function (number) {
6888        var b = number % 10,
6889            output = (~~(number % 100 / 10) === 1) ? 'th' :
6890            (b === 1) ? 'st' :
6891            (b === 2) ? 'nd' :
6892            (b === 3) ? 'rd' : 'th';
6893        return number + output;
6894    },
6895    week : {
6896        dow : 1, // Monday is the first day of the week.
6897        doy : 4  // The week that contains Jan 4th is the first week of the year.
6898    }
6899});
6900
6901//! moment.js locale configuration
6902//! locale : English (New Zealand) [en-nz]
6903//! author : Luke McGregor : https://github.com/lukemcgregor
6904
6905hooks.defineLocale('en-nz', {
6906    months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6907    monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6908    weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6909    weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6910    weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6911    longDateFormat : {
6912        LT : 'h:mm A',
6913        LTS : 'h:mm:ss A',
6914        L : 'DD/MM/YYYY',
6915        LL : 'D MMMM YYYY',
6916        LLL : 'D MMMM YYYY h:mm A',
6917        LLLL : 'dddd, D MMMM YYYY h:mm A'
6918    },
6919    calendar : {
6920        sameDay : '[Today at] LT',
6921        nextDay : '[Tomorrow at] LT',
6922        nextWeek : 'dddd [at] LT',
6923        lastDay : '[Yesterday at] LT',
6924        lastWeek : '[Last] dddd [at] LT',
6925        sameElse : 'L'
6926    },
6927    relativeTime : {
6928        future : 'in %s',
6929        past : '%s ago',
6930        s : 'a few seconds',
6931        m : 'a minute',
6932        mm : '%d minutes',
6933        h : 'an hour',
6934        hh : '%d hours',
6935        d : 'a day',
6936        dd : '%d days',
6937        M : 'a month',
6938        MM : '%d months',
6939        y : 'a year',
6940        yy : '%d years'
6941    },
6942    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6943    ordinal : function (number) {
6944        var b = number % 10,
6945            output = (~~(number % 100 / 10) === 1) ? 'th' :
6946            (b === 1) ? 'st' :
6947            (b === 2) ? 'nd' :
6948            (b === 3) ? 'rd' : 'th';
6949        return number + output;
6950    },
6951    week : {
6952        dow : 1, // Monday is the first day of the week.
6953        doy : 4  // The week that contains Jan 4th is the first week of the year.
6954    }
6955});
6956
6957//! moment.js locale configuration
6958//! locale : Esperanto [eo]
6959//! author : Colin Dean : https://github.com/colindean
6960//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
6961//! comment : miestasmia corrected the translation by colindean
6962
6963hooks.defineLocale('eo', {
6964    months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),
6965    monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'),
6966    weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
6967    weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
6968    weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
6969    longDateFormat : {
6970        LT : 'HH:mm',
6971        LTS : 'HH:mm:ss',
6972        L : 'YYYY-MM-DD',
6973        LL : 'D[-a de] MMMM, YYYY',
6974        LLL : 'D[-a de] MMMM, YYYY HH:mm',
6975        LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
6976    },
6977    meridiemParse: /[ap]\.t\.m/i,
6978    isPM: function (input) {
6979        return input.charAt(0).toLowerCase() === 'p';
6980    },
6981    meridiem : function (hours, minutes, isLower) {
6982        if (hours > 11) {
6983            return isLower ? 'p.t.m.' : 'P.T.M.';
6984        } else {
6985            return isLower ? 'a.t.m.' : 'A.T.M.';
6986        }
6987    },
6988    calendar : {
6989        sameDay : '[HodiaÅ­ je] LT',
6990        nextDay : '[MorgaÅ­ je] LT',
6991        nextWeek : 'dddd [je] LT',
6992        lastDay : '[HieraÅ­ je] LT',
6993        lastWeek : '[pasinta] dddd [je] LT',
6994        sameElse : 'L'
6995    },
6996    relativeTime : {
6997        future : 'post %s',
6998        past : 'antaÅ­ %s',
6999        s : 'sekundoj',
7000        m : 'minuto',
7001        mm : '%d minutoj',
7002        h : 'horo',
7003        hh : '%d horoj',
7004        d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
7005        dd : '%d tagoj',
7006        M : 'monato',
7007        MM : '%d monatoj',
7008        y : 'jaro',
7009        yy : '%d jaroj'
7010    },
7011    dayOfMonthOrdinalParse: /\d{1,2}a/,
7012    ordinal : '%da',
7013    week : {
7014        dow : 1, // Monday is the first day of the week.
7015        doy : 7  // The week that contains Jan 1st is the first week of the year.
7016    }
7017});
7018
7019//! moment.js locale configuration
7020//! locale : Spanish (Dominican Republic) [es-do]
7021
7022var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
7023var monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7024
7025var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
7026var monthsRegex$1 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7027
7028hooks.defineLocale('es-do', {
7029    months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7030    monthsShort : function (m, format) {
7031        if (!m) {
7032            return monthsShortDot;
7033        } else if (/-MMM-/.test(format)) {
7034            return monthsShort$1[m.month()];
7035        } else {
7036            return monthsShortDot[m.month()];
7037        }
7038    },
7039    monthsRegex: monthsRegex$1,
7040    monthsShortRegex: monthsRegex$1,
7041    monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7042    monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7043    monthsParse: monthsParse,
7044    longMonthsParse: monthsParse,
7045    shortMonthsParse: monthsParse,
7046    weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7047    weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7048    weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7049    weekdaysParseExact : true,
7050    longDateFormat : {
7051        LT : 'h:mm A',
7052        LTS : 'h:mm:ss A',
7053        L : 'DD/MM/YYYY',
7054        LL : 'D [de] MMMM [de] YYYY',
7055        LLL : 'D [de] MMMM [de] YYYY h:mm A',
7056        LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
7057    },
7058    calendar : {
7059        sameDay : function () {
7060            return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7061        },
7062        nextDay : function () {
7063            return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7064        },
7065        nextWeek : function () {
7066            return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7067        },
7068        lastDay : function () {
7069            return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7070        },
7071        lastWeek : function () {
7072            return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7073        },
7074        sameElse : 'L'
7075    },
7076    relativeTime : {
7077        future : 'en %s',
7078        past : 'hace %s',
7079        s : 'unos segundos',
7080        m : 'un minuto',
7081        mm : '%d minutos',
7082        h : 'una hora',
7083        hh : '%d horas',
7084        d : 'un día',
7085        dd : '%d días',
7086        M : 'un mes',
7087        MM : '%d meses',
7088        y : 'un año',
7089        yy : '%d años'
7090    },
7091    dayOfMonthOrdinalParse : /\d{1,2}º/,
7092    ordinal : '%dº',
7093    week : {
7094        dow : 1, // Monday is the first day of the week.
7095        doy : 4  // The week that contains Jan 4th is the first week of the year.
7096    }
7097});
7098
7099//! moment.js locale configuration
7100//! locale : Spanish (United States) [es-us]
7101//! author : bustta : https://github.com/bustta
7102
7103var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
7104var monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7105
7106hooks.defineLocale('es-us', {
7107    months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7108    monthsShort : function (m, format) {
7109        if (!m) {
7110            return monthsShortDot$1;
7111        } else if (/-MMM-/.test(format)) {
7112            return monthsShort$2[m.month()];
7113        } else {
7114            return monthsShortDot$1[m.month()];
7115        }
7116    },
7117    monthsParseExact : true,
7118    weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7119    weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7120    weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7121    weekdaysParseExact : true,
7122    longDateFormat : {
7123        LT : 'H:mm',
7124        LTS : 'H:mm:ss',
7125        L : 'MM/DD/YYYY',
7126        LL : 'MMMM [de] D [de] YYYY',
7127        LLL : 'MMMM [de] D [de] YYYY H:mm',
7128        LLLL : 'dddd, MMMM [de] D [de] YYYY H:mm'
7129    },
7130    calendar : {
7131        sameDay : function () {
7132            return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7133        },
7134        nextDay : function () {
7135            return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7136        },
7137        nextWeek : function () {
7138            return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7139        },
7140        lastDay : function () {
7141            return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7142        },
7143        lastWeek : function () {
7144            return '[e
7144l] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7145        },
7146        sameElse : 'L'
7147    },
7148    relativeTime : {
7149        future : 'en %s',
7150        past : 'hace %s',
7151        s : 'unos segundos',
7152        m : 'un minuto',
7153        mm : '%d minutos',
7154        h : 'una hora',
7155        hh : '%d horas',
7156        d : 'un día',
7157        dd : '%d días',
7158        M : 'un mes',
7159        MM : '%d meses',
7160        y : 'un año',
7161        yy : '%d años'
7162    },
7163    dayOfMonthOrdinalParse : /\d{1,2}º/,
7164    ordinal : '%dº',
7165    week : {
7166        dow : 0, // Sunday is the first day of the week.
7167        doy : 6  // The week that contains Jan 1st is the first week of the year.
7168    }
7169});
7170
7171//! moment.js locale configuration
7172//! locale : Spanish [es]
7173//! author : Julio Napurí : https://github.com/julionc
7174
7175var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
7176var monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7177
7178var monthsParse$1 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
7179var monthsRegex$2 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7180
7181hooks.defineLocale('es', {
7182    months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7183    monthsShort : function (m, format) {
7184        if (!m) {
7185            return monthsShortDot$2;
7186        } else if (/-MMM-/.test(format)) {
7187            return monthsShort$3[m.month()];
7188        } else {
7189            return monthsShortDot$2[m.month()];
7190        }
7191    },
7192    monthsRegex : monthsRegex$2,
7193    monthsShortRegex : monthsRegex$2,
7194    monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7195    monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7196    monthsParse : monthsParse$1,
7197    longMonthsParse : monthsParse$1,
7198    shortMonthsParse : monthsParse$1,
7199    weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7200    weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7201    weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7202    weekdaysParseExact : true,
7203    longDateFormat : {
7204        LT : 'H:mm',
7205        LTS : 'H:mm:ss',
7206        L : 'DD/MM/YYYY',
7207        LL : 'D [de] MMMM [de] YYYY',
7208        LLL : 'D [de] MMMM [de] YYYY H:mm',
7209        LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7210    },
7211    calendar : {
7212        sameDay : function () {
7213            return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7214        },
7215        nextDay : function () {
7216            return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7217        },
7218        nextWeek : function () {
7219            return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7220        },
7221        lastDay : function () {
7222            return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7223        },
7224        lastWeek : function () {
7225            return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7226        },
7227        sameElse : 'L'
7228    },
7229    relativeTime : {
7230        future : 'en %s',
7231        past : 'hace %s',
7232        s : 'unos segundos',
7233        m : 'un minuto',
7234        mm : '%d minutos',
7235        h : 'una hora',
7236        hh : '%d horas',
7237        d : 'un día',
7238        dd : '%d días',
7239        M : 'un mes',
7240        MM : '%d meses',
7241        y : 'un año',
7242        yy : '%d años'
7243    },
7244    dayOfMonthOrdinalParse : /\d{1,2}º/,
7245    ordinal : '%dº',
7246    week : {
7247        dow : 1, // Monday is the first day of the week.
7248        doy : 4  // The week that contains Jan 4th is the first week of the year.
7249    }
7250});
7251
7252//! moment.js locale configuration
7253//! locale : Estonian [et]
7254//! author : Henry Kehlmann : https://github.com/madhenry
7255//! improvements : Illimar Tambek : https://github.com/ragulka
7256
7257function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
7258    var format = {
7259        's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
7260        'm' : ['ühe minuti', 'üks minut'],
7261        'mm': [number + ' minuti', number + ' minutit'],
7262        'h' : ['ühe tunni', 'tund aega', 'üks tund'],
7263        'hh': [number + ' tunni', number + ' tundi'],
7264        'd' : ['ühe päeva', 'üks päev'],
7265        'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
7266        'MM': [number + ' kuu', number + ' kuud'],
7267        'y' : ['ühe aasta', 'aasta', 'üks aasta'],
7268        'yy': [number + ' aasta', number + ' aastat']
7269    };
7270    if (withoutSuffix) {
7271        return format[key][2] ? format[key][2] : format[key][1];
7272    }
7273    return isFuture ? format[key][0] : format[key][1];
7274}
7275
7276hooks.defineLocale('et', {
7277    months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
7278    monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
7279    weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
7280    weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
7281    weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),
7282    longDateFormat : {
7283        LT   : 'H:mm',
7284        LTS : 'H:mm:ss',
7285        L    : 'DD.MM.YYYY',
7286        LL   : 'D. MMMM YYYY',
7287        LLL  : 'D. MMMM YYYY H:mm',
7288        LLLL : 'dddd, D. MMMM YYYY H:mm'
7289    },
7290    calendar : {
7291        sameDay  : '[Täna,] LT',
7292        nextDay  : '[Homme,] LT',
7293        nextWeek : '[Järgmine] dddd LT',
7294        lastDay  : '[Eile,] LT',
7295        lastWeek : '[Eelmine] dddd LT',
7296        sameElse : 'L'
7297    },
7298    relativeTime : {
7299        future : '%s pärast',
7300        past   : '%s tagasi',
7301        s      : processRelativeTime$3,
7302        m      : processRelativeTime$3,
7303        mm     : processRelativeTime$3,
7304        h      : processRelativeTime$3,
7305        hh     : processRelativeTime$3,
7306        d      : processRelativeTime$3,
7307        dd     : '%d päeva',
7308        M      : processRelativeTime$3,
7309        MM     : processRelativeTime$3,
7310        y      : processRelativeTime$3,
7311        yy     : processRelativeTime$3
7312    },
7313    dayOfMonthOrdinalParse: /\d{1,2}\./,
7314    ordinal : '%d.',
7315    week : {
7316        dow : 1, // Monday is the first day of the week.
7317        doy : 4  // The week that contains Jan 4th is the first week of the year.
7318    }
7319});
7320
7321//! moment.js locale configuration
7322//! locale : Basque [eu]
7323//! author : Eneko Illarramendi : https://github.com/eillarra
7324
7325hooks.defineLocale('eu', {
7326    months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
7327    monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
7328    monthsParseExact : true,
7329    weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
7330    weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
7331    weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
7332    weekdaysParseExact : true,
7333    longDateFormat : {
7334        LT : 'HH:mm',
7335        LTS : 'HH:mm:ss',
7336        L : 'YYYY-MM-DD',
7337        LL : 'YYYY[ko] MMMM[ren] D[a]',
7338        LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
7339        LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
7340        l : 'YYYY-M-D',
7341        ll : 'YYYY[ko] MMM D[a]',
7342        lll : 'YYYY[ko] MMM D[a] HH:mm',
7343        llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
7344    },
7345    calendar : {
7346        sameDay : '[gaur] LT[etan]',
7347        nextDay : '[bihar] LT[etan]',
7348        nextWeek : 'dddd LT[etan]',
7349        lastDay : '[atzo] LT[etan]',
7350        lastWeek : '[aurreko] dddd LT[etan]',
7351        sameElse : 'L'
7352    },
7353    relativeTime : {
7354        future : '%s barru',
7355        past : 'duela %s',
7356        s : 'segundo batzuk',
7357        m : 'minutu bat',
7358        mm : '%d minutu',
7359        h : 'ordu bat',
7360        hh : '%d ordu',
7361        d : 'egun bat',
7362        dd : '%d egun',
7363        M : 'hilabete bat',
7364        MM : '%d hilabete',
7365        y : 'urte bat',
7366        yy : '%d urte'
7367    },
7368    dayOfMonthOrdinalParse: /\d{1,2}\./,
7369    ordinal : '%d.',
7370    week : {
7371        dow : 1, // Monday is the first day of the week.
7372        doy : 7  // The week that contains Jan 1st is the first week of the year.
7373    }
7374});
7375
7376//! moment.js locale configuration
7377//! locale : Persian [fa]
7378//! author : Ebrahim Byagowi : https://github.com/ebraminio
7379
7380var symbolMap$5 = {
7381    '1': 'Û±',
7382    '2': 'Û²',
7383    '3': 'Û³',
7384    '4': 'Û´',
7385    '5': 'Ûµ',
7386    '6': 'Û¶',
7387    '7': 'Û·',
7388    '8': 'Û¸',
7389    '9': 'Û¹',
7390    '0': 'Û°'
7391};
7392var numberMap$4 = {
7393    'Û±': '1',
7394    'Û²': '2',
7395    'Û³': '3',
7396    'Û´': '4',
7397    'Ûµ': '5',
7398    'Û¶': '6',
7399    'Û·': '7',
7400    'Û¸': '8',
7401    'Û¹': '9',
7402    'Û°': '0'
7403};
7404
7405hooks.defineLocale('fa', {
7406    months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7407    monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7408    weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7409    weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7410    weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
7411    weekdaysParseExact : true,
7412    longDateFormat : {
7413        LT : 'HH:mm',
7414        LTS : 'HH:mm:ss',
7415        L : 'DD/MM/YYYY',
7416        LL : 'D MMMM YYYY',
7417        LLL : 'D MMMM YYYY HH:mm',
7418        LLLL : 'dddd, D MMMM YYYY HH:mm'
7419    },
7420    meridiemParse: /قبل از ظهر|بعد از ظهر/,
7421    isPM: function (input) {
7422        return /بعد از ظهر/.test(input);
7423    },
7424    meridiem : function (hour, minute, isLower) {
7425        if (hour < 12) {
7426            return 'قبل از ظهر';
7427        } else {
7428            return 'بعد از ظهر';
7429        }
7430    },
7431    calendar : {
7432        sameDay : '[امروز ساعت] LT',
7433        nextDay : '[فردا ساعت] LT',
7434        nextWeek : 'dddd [ساعت] LT',
7435        lastDay : '[دیروز ساعت] LT',
7436        lastWeek : 'dddd [پیش] [ساعت] LT',
7437        sameElse : 'L'
7438    },
7439    relativeTime : {
7440        future : 'در %s',
7441        past : '%s پیش',
7442        s : 'چند ثانیه',
7443        m : 'یک دقیقه',
7444        mm : '%d دقیقه',
7445        h : 'یک ساعت',
7446        hh : '%d ساعت',
7447        d : 'یک روز',
7448        dd : '%d روز',
7449        M : 'یک ماه',
7450        MM : '%d ماه',
7451        y : 'یک سال',
7452        yy : '%d سال'
7453    },
7454    preparse: function (string) {
7455        return string.replace(/[Û°-Û¹]/g, function (match) {
7456            return numberMap$4[match];
7457        }).replace(/،/g, ',');
7458    },
7459    postformat: function (string) {
7460        return string.replace(/\d/g, function (match) {
7461            return symbolMap$5[match];
7462        }).replace(/,/g, '،');
7463    },
7464    dayOfMonthOrdinalParse: /\d{1,2}م/,
7465    ordinal : '%dم',
7466    week : {
7467        dow : 6, // Saturday is the first day of the week.
7468        doy : 12 // The week that contains Jan 1st is the first week of the year.
7469    }
7470});
7471
7472//! moment.js locale configuration
7473//! locale : Finnish [fi]
7474//! author : Tarmo Aidantausta : https://github.com/bleadof
7475
7476var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');
7477var numbersFuture = [
7478        'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
7479        numbersPast[7], numbersPast[8], numbersPast[9]
7480    ];
7481function translate$2(number, withoutSuffix, key, isFuture) {
7482    var result = '';
7483    switch (key) {
7484        case 's':
7485            return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7486        case 'm':
7487            return isFuture ? 'minuutin' : 'minuutti';
7488        case 'mm':
7489            result = isFuture ? 'minuutin' : 'minuuttia';
7490            break;
7491        case 'h':
7492            return isFuture ? 'tunnin' : 'tunti';
7493        case 'hh':
7494            result = isFuture ? 'tunnin' : 'tuntia';
7495            break;
7496        case 'd':
7497            return isFuture ? 'päivän' : 'päivä';
7498        case 'dd':
7499            result = isFuture ? 'päivän' : 'päivää';
7500            break;
7501        case 'M':
7502            return isFuture ? 'kuukauden' : 'kuukausi';
7503        case 'MM':
7504            result = isFuture ? 'kuukauden' : 'kuukautta';
7505            break;
7506        case 'y':
7507            return isFuture ? 'vuoden' : 'vuosi';
7508        case 'yy':
7509            result = isFuture ? 'vuoden' : 'vuotta';
7510            break;
7511    }
7512    result = verbalNumber(number, isFuture) + ' ' + result;
7513    return result;
7514}
7515function verbalNumber(number, isFuture) {
7516    return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
7517}
7518
7519hooks.defineLocale('fi', {
7520    months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
7521    monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
7522    weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
7523    weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
7524    weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
7525    longDateFormat : {
7526        LT : 'HH.mm',
7527        LTS : 'HH.mm.ss',
7528        L : 'DD.MM.YYYY',
7529        LL : 'Do MMMM[ta] YYYY',
7530        LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
7531        LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
7532        l : 'D.M.YYYY',
7533        ll : 'Do MMM YYYY',
7534        lll : 'Do MMM YYYY, [klo] HH.mm',
7535        llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
7536    },
7537    calendar : {
7538        sameDay : '[tänään] [klo] LT',
7539        nextDay : '[huomenna] [klo] LT',
7540        nextWeek : 'dddd [klo] LT',
7541        lastDay : '[eilen] [klo] LT',
7542        lastWeek : '[viime] dddd[na] [klo] LT',
7543        sameElse : 'L'
7544    },
7545    relativeTime : {
7546        future : '%s päästä',
7547        past : '%s sitten',
7548        s : translate$2,
7549        m : translate$2,
7550        mm : translate$2,
7551        h : translate$2,
7552        hh : translate$2,
7553        d : translate$2,
7554        dd : translate$2,
7555        M : translate$2,
7556        MM : translate$2,
7557        y : translate$2,
7558        yy : translate$2
7559    },
7560    dayOfMonthOrdinalParse: /\d{1,2}\./,
7561    ordinal : '%d.',
7562    week : {
7563        dow : 1, // Monday is the first day of the week.
7564        doy : 4  // The week that contains Jan 4th is the first week of the year.
7565    }
7566});
7567
7568//! moment.js locale configuration
7569//! locale : Faroese [fo]
7570//! author : Ragnar Johannesen : https://github.com/ragnar123
7571
7572hooks.defineLocale('fo', {
7573    months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7574    monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7575    weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
7576    weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
7577    weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
7578    longDateFormat : {
7579        LT : 'HH:mm',
7580        LTS : 'HH:mm:ss',
7581        L : 'DD/MM/YYYY',
7582        LL : 'D MMMM YYYY',
7583        LLL : 'D MMMM YYYY HH:mm',
7584        LLLL : 'dddd D. MMMM, YYYY HH:mm'
7585    },
7586    calendar : {
7587        sameDay : '[Í dag kl.] LT',
7588        nextDay : '[Í morgin kl.] LT',
7589        nextWeek : 'dddd [kl.] LT',
7590        lastDay : '[Í gjár kl.] LT',
7591        lastWeek : '[síðstu] dddd [kl] LT',
7592        sameElse : 'L'
7593    },
7594    relativeTime : {
7595        future : 'um %s',
7596        past : '%s síðani',
7597        s : 'fá sekund',
7598        m : 'ein minutt',
7599        mm : '%d minuttir',
7600        h : 'ein tími',
7601        hh : '%d tímar',
7602        d : 'ein dagur',
7603        dd : '%d dagar',
7604        M : 'ein mánaði',
7605        MM : '%d mánaðir',
7606        y : 'eitt ár',
7607        yy : '%d ár'
7608    },
7609    dayOfMonthOrdinalParse: /\d{1,2}\./,
7610    ordinal : '%d.',
7611    week : {
7612        dow : 1, // Monday is the first day of the week.
7613        doy : 4  // The week that contains Jan 4th is the first week of the year.
7614    }
7615});
7616
7617//! moment.js locale configuration
7618//! locale : French (Canada) [fr-ca]
7619//! author : Jonathan Abourbih : https://github.com/jonbca
7620
7621hooks.defineLocale('fr-ca', {
7622    months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7623    monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7624    monthsParseExact : true,
7625    weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7626    weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7627    weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7628    weekdaysParseExact : true,
7629    longDateFormat : {
7630        LT : 'HH:mm',
7631        LTS : 'HH:mm:ss',
7632        L : 'YYYY-MM-DD',
7633        LL : 'D MMMM YYYY',
7634        LLL : 'D MMMM YYYY HH:mm',
7635        LLLL : 'dddd D MMMM YYYY HH:mm'
7636    },
7637    calendar : {
7638        sameDay : '[Aujourd’hui à] LT',
7639        nextDay : '[Demain à] LT',
7640        nextWeek : 'dddd [à] LT',
7641        lastDay : '[Hier à] LT',
7642        lastWeek : 'dddd [dernier à] LT',
7643        sameElse : 'L'
7644    },
7645    relativeTime : {
7646        future : 'dans %s',
7647        past : 'il y a %s',
7648        s : 'quelques secondes',
7649        m : 'une minute',
7650        mm : '%d minutes',
7651        h : 'une heure',
7652        hh : '%d heures',
7653        d : 'un jour',
7654        dd : '%d jours',
7655        M : 'un mois',
7656        MM : '%d mois',
7657        y : 'un an',
7658        yy : '%d ans'
7659    },
7660    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7661    ordinal : function (number, period) {
7662        switch (period) {
7663            // Words with masculine grammatical gender: mois, trimestre, jour
7664            default:
7665            case 'M':
7666            case 'Q':
7667            case 'D':
7668            case 'DDD':
7669            case 'd':
7670                return number + (number === 1 ? 'er' : 'e');
7671
7672            // Words with feminine grammatical gender: semaine
7673            case 'w':
7674            case 'W':
7675                return number + (number === 1 ? 're' : 'e');
7676        }
7677    }
7678});
7679
7680//! moment.js locale configuration
7681//! locale : French (Switzerland) [fr-ch]
7682//! author : Gaspard Bucher : https://github.com/gaspard
7683
7684hooks.defineLocale('fr-ch', {
7685    months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7686    monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7687    monthsParseExact : true,
7688    weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7689    weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7690    weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7691    weekdaysParseExact : true,
7692    longDateFormat : {
7693        LT : 'HH:mm',
7694        LTS : 'HH:mm:ss',
7695        L : 'DD.MM.YYYY',
7696        LL : 'D MMMM YYYY',
7697        LLL : 'D MMMM YYYY HH:mm',
7698        LLLL : 'dddd D MMMM YYYY HH:mm'
7699    },
7700    calendar : {
7701        sameDay : '[Aujourd’hui à] LT',
7702        nextDay : '[Demain à] LT',
7703        nextWeek : 'dddd [à] LT',
7704        lastDay : '[Hier à] LT',
7705        lastWeek : 'dddd [dernier à] LT',
7706        sameElse : 'L'
7707    },
7708    relativeTime : {
7709        future : 'dans %s',
7710        past : 'il y a %s',
7711        s : 'quelques secondes',
7712        m : 'une minute',
7713        mm : '%d minutes',
7714        h : 'une heure',
7715        hh : '%d heures',
7716        d : 'un jour',
7717        dd : '%d jours',
7718        M : 'un mois',
7719        MM : '%d mois',
7720        y : 'un an',
7721        yy : '%d ans'
7722    },
7723    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7724    ordinal : function (number, period) {
7725        switch (period) {
7726            // Words with masculine grammatical gender: mois, trimestre, jour
7727            default:
7728            case 'M':
7729            case 'Q':
7730            case 'D':
7731            case 'DDD':
7732            case 'd':
7733                return number + (number === 1 ? 'er' : 'e');
7734
7735            // Words with feminine grammatical gender: semaine
7736            case 'w':
7737            case 'W':
7738                return number + (number === 1 ? 're' : 'e');
7739        }
7740    },
7741    week : {
7742        dow : 1, // Monday is the first day of the week.
7743        doy : 4  // The week that contains Jan 4th is the first week of the year.
7744    }
7745});
7746
7747//! moment.js locale configuration
7748//! locale : French [fr]
7749//! author : John Fischer : https://github.com/jfroffice
7750
7751hooks.defineLocale('fr', {
7752    months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7753    monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7754    monthsParseExact : true,
7755    weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7756    weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7757    weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7758    weekdaysParseExact : true,
7759    longDateFormat : {
7760        LT : 'HH:mm',
7761        LTS : 'HH:mm:ss',
7762        L : 'DD/MM/YYYY',
7763        LL : 'D MMMM YYYY',
7764        LLL : 'D MMMM YYYY HH:mm',
7765        LLLL : 'dddd D MMMM YYYY HH:mm'
7766    },
7767    calendar : {
7768        sameDay : '[Aujourd’hui à] LT',
7769        nextDay : '[Demain à] LT',
7770        nextWeek : 'dddd [à] LT',
7771        lastDay : '[Hier à] LT',
7772        lastWeek : 'dddd [dernier à] LT',
7773        sameElse : 'L'
7774    },
7775    relativeTime : {
7776        future : 'dans %s',
7777        past : 'il y a %s',
7778        s : 'quelques secondes',
7779        m : 'une minute',
7780        mm : '%d minutes',
7781        h : 'une heure',
7782        hh : '%d heures',
7783        d : 'un jour',
7784        dd : '%d jours',
7785        M : 'un mois',
7786        MM : '%d mois',
7787        y : 'un an',
7788        yy : '%d ans'
7789    },
7790    dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
7791    ordinal : function (number, period) {
7792        switch (period) {
7793            // TODO: Return 'e' when day of month > 1. Move this case inside
7794            // block for masculine words below.
7795            // See https://github.com/moment/moment/issues/3375
7796            case 'D':
7797                return number + (number === 1 ? 'er' : '');
7798
7799            // Words with masculine grammatical gender: mois, trimestre, jour
7800            default:
7801            case 'M':
7802            case 'Q':
7803            case 'DDD':
7804            case 'd':
7805                return number + (number === 1 ? 'er' : 'e');
7806
7807            // Words with feminine grammatical gender: semaine
7808            case 'w':
7809            case 'W':
7810                return number + (number === 1 ? 're' : 'e');
7811        }
7812    },
7813    week : {
7814        dow : 1, // Monday is the first day of the week.
7815        doy : 4  // The week that contains Jan 4th is the first week of the year.
7816    }
7817});
7818
7819//! moment.js locale configuration
7820//! locale : Frisian [fy]
7821//! author : Robin van der Vliet : https://github.com/robin0van0der0v
7822
7823var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');
7824var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7825
7826hooks.defineLocale('fy', {
7827    months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
7828    monthsShort : function (m, format) {
7829        if (!m) {
7830            return monthsShortWithDots;
7831        } else if (/-MMM-/.test(format)) {
7832            return monthsShortWithoutDots[m.month()];
7833        } else {
7834            return monthsShortWithDots[m.month()];
7835        }
7836    },
7837    monthsParseExact : true,
7838    weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
7839    weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
7840    weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
7841    weekdaysParseExact : true,
7842    longDateFormat : {
7843        LT : 'HH:mm',
7844        LTS : 'HH:mm:ss',
7845        L : 'DD-MM-YYYY',
7846        LL : 'D MMMM YYYY',
7847        LLL : 'D MMMM YYYY HH:mm',
7848        LLLL : 'dddd D MMMM YYYY HH:mm'
7849    },
7850    calendar : {
7851        sameDay: '[hjoed om] LT',
7852        nextDay: '[moarn om] LT',
7853        nextWeek: 'dddd [om] LT',
7854        lastDay: '[juster om] LT',
7855        lastWeek: '[ôfrûne] dddd [om] LT',
7856        sameElse: 'L'
7857    },
7858    relativeTime : {
7859        future : 'oer %s',
7860        past : '%s lyn',
7861        s : 'in pear sekonden',
7862        m : 'ien minút',
7863        mm : '%d minuten',
7864        h : 'ien oere',
7865        hh : '%d oeren',
7866        d : 'ien dei',
7867        dd : '%d dagen',
7868        M : 'ien moanne',
7869        MM : '%d moannen',
7870        y : 'ien jier',
7871        yy : '%d jierren'
7872    },
7873    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
7874    ordinal : function (number) {
7875        return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
7876    },
7877    week : {
7878        dow : 1, // Monday is the first day of the week.
7879        doy : 4  // The week that contains Jan 4th is the first week of the year.
7880    }
7881});
7882
7883//! moment.js locale configuration
7884//! locale : Scottish Gaelic [gd]
7885//! author : Jon Ashdown : https://github.com/jonashdown
7886
7887var months$5 = [
7888    'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'
7889];
7890
7891var monthsShort$4 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
7892
7893var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
7894
7895var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
7896
7897var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
7898
7899hooks.defineLocale('gd', {
7900    months : months$5,
7901    monthsShort : monthsShort$4,
7902    monthsParseExact : true,
7903    weekdays : weekdays$1,
7904    weekdaysShort : weekdaysShort,
7905    weekdaysMin : weekdaysMin,
7906    longDateFormat : {
7907        LT : 'HH:mm',
7908        LTS : 'HH:mm:ss',
7909        L : 'DD/MM/YYYY',
7910        LL : 'D MMMM YYYY',
7911        LLL : 'D MMMM YYYY HH:mm',
7912        LLLL : 'dddd, D MMMM YYYY HH:mm'
7913    },
7914    calendar : {
7915        sameDay : '[An-diugh aig] LT',
7916        nextDay : '[A-màireach aig] LT',
7917        nextWeek : 'dddd [aig] LT',
7918        lastDay : '[An-dè aig] LT',
7919        lastWeek : 'dddd [seo chaidh] [aig] LT',
7920        sameElse : 'L'
7921    },
7922    relativeTime : {
7923        future : 'ann an %s',
7924        past : 'bho chionn %s',
7925        s : 'beagan diogan',
7926        m : 'mionaid',
7927        mm : '%d mionaidean',
7928        h : 'uair',
7929        hh : '%d uairean',
7930        d : 'latha',
7931        dd : '%d latha',
7932        M : 'mìos',
7933        MM : '%d mìosan',
7934        y : 'bliadhna',
7935        yy : '%d bliadhna'
7936    },
7937    dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/,
7938    ordinal : function (number) {
7939        var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
7940        return number + output;
7941    },
7942    week : {
7943        dow : 1, // Monday is the first day of the week.
7944        doy : 4  // The week that contains Jan 4th is the first week of the year.
7945    }
7946});
7947
7948//! moment.js locale configuration
7949//! locale : Galician [gl]
7950//! author : Juan G. Hurtado : https://github.com/juanghurtado
7951
7952hooks.defineLocale('gl', {
7953    months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
7954    monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
7955    monthsParseExact: true,
7956    weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
7957    weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
7958    weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
7959    weekdaysParseExact : true,
7960    longDateFormat : {
7961        LT : 'H:mm',
7962        LTS : 'H:mm:ss',
7963        L : 'DD/MM/YYYY',
7964        LL : 'D [de] MMMM [de] YYYY',
7965        LLL : 'D [de] MMMM [de] YYYY H:mm',
7966        LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7967    },
7968    calendar : {
7969        sameDay : function () {
7970            return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7971        },
7972        nextDay : function () {
7973            return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7974        },
7975        nextWeek : function () {
7976            return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7977        },
7978        lastDay : function () {
7979            return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
7980        },
7981        lastWeek : function () {
7982            return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7983        },
7984        sameElse : 'L'
7985    },
7986    relativeTime : {
7987        future : function (str) {
7988            if (str.indexOf('un') === 0) {
7989                return 'n' + str;
7990            }
7991            return 'en ' + str;
7992        },
7993        past : 'hai %s',
7994        s : 'uns segundos',
7995        m : 'un minuto',
7996        mm : '%d minutos',
7997        h : 'unha hora',
7998        hh : '%d horas',
7999        d : 'un día',
8000        dd : '%d días',
8001        M : 'un mes',
8002        MM : '%d meses',
8003        y : 'un ano',
8004        yy : '%d anos'
8005    },
8006    dayOfMonthOrdinalParse : /\d{1,2}º/,
8007    ordinal : '%dº',
8008    week : {
8009        dow : 1, // Monday is the first day of the week.
8010        doy : 4  // The week that contains Jan 4th is the first week of the year.
8011    }
8012});
8013
8014//! moment.js locale configuration
8015//! locale : Konkani Latin script [gom-latn]
8016//! author : The Discoverer : https://github.com/WikiDiscoverer
8017
8018function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
8019    var format = {
8020        's': ['thodde secondanim', 'thodde second'],
8021        'm': ['eka mintan', 'ek minute'],
8022        'mm': [number + ' mintanim', number + ' mintam'],
8023        'h': ['eka horan', 'ek hor'],
8024        'hh': [number + ' horanim', number + ' hor'],
8025        'd': ['eka disan', 'ek dis'],
8026        'dd': [number + ' disanim', number + ' dis'],
8027        'M': ['eka mhoinean', 'ek mhoino'],
8028        'MM': [number + ' mhoineanim', number + ' mhoine'],
8029        'y': ['eka vorsan', 'ek voros'],
8030        'yy': [number + ' vorsanim', number + ' vorsam']
8031    };
8032    return withoutSuffix ? format[key][0] : format[key][1];
8033}
8034
8035hooks.defineLocale('gom-latn', {
8036    months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
8037    monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
8038    monthsParseExact : true,
8039    weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'),
8040    weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
8041    weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
8042    weekdaysParseExact : true,
8043    longDateFormat : {
8044        LT : 'A h:mm [vazta]',
8045        LTS : 'A h:mm:ss [vazta]',
8046        L : 'DD-MM-YYYY',
8047        LL : 'D MMMM YYYY',
8048        LLL : 'D MMMM YYYY A h:mm [vazta]',
8049        LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
8050        llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
8051    },
8052    calendar : {
8053        sameDay: '[Aiz] LT',
8054        nextDay: '[Faleam] LT',
8055        nextWeek: '[Ieta to] dddd[,] LT',
8056        lastDay: '[Kal] LT',
8057        lastWeek: '[Fatlo] dddd[,] LT',
8058        sameElse: 'L'
8059    },
8060    relativeTime : {
8061        future : '%s',
8062        past : '%s adim',
8063        s : processRelativeTime$4,
8064        m : processRelativeTime$4,
8065        mm : processRelativeTime$4,
8066        h : processRelativeTime$4,
8067        hh : processRelativeTime$4,
8068        d : processRelativeTime$4,
8069        dd : processRelativeTime$4,
8070        M : processRelativeTime$4,
8071        MM : processRelativeTime$4,
8072        y : processRelativeTime$4,
8073        yy : processRelativeTime$4
8074    },
8075    dayOfMonthOrdinalParse : /\d{1,2}(er)/,
8076    ordinal : function (number, period) {
8077        switch (period) {
8078            // the ordinal 'er' only applies to day of the month
8079            case 'D':
8080                return number + 'er';
8081            default:
8082            case 'M':
8083            case 'Q':
8084            case 'DDD':
8085            case 'd':
8086            case 'w':
8087            case 'W':
8088                return number;
8089        }
8090    },
8091    week : {
8092        dow : 1, // Monday is the first day of the week.
8093        doy : 4  // The week that contains Jan 4th is the first week of the year.
8094    },
8095    meridiemParse: /rati|sokalli|donparam|sanje/,
8096    meridiemHour : function (hour, meridiem) {
8097        if (hour === 12) {
8098            hour = 0;
8099        }
8100        if (meridiem === 'rati') {
8101            return hour < 4 ? hour : hour + 12;
8102        } else if (meridiem === 'sokalli') {
8103            return hour;
8104        } else if (meridiem === 'donparam') {
8105            return hour > 12 ? hour : hour + 12;
8106        } else if (meridiem === 'sanje') {
8107            return hour + 12;
8108        }
8109    },
8110    meridiem : function (hour, minute, isLower) {
8111        if (hour < 4) {
8112            return 'rati';
8113        } else if (hour < 12) {
8114            return 'sokalli';
8115        } else if (hour < 16) {
8116            return 'donparam';
8117        } else if (hour < 20) {
8118            return 'sanje';
8119        } else {
8120            return 'rati';
8121        }
8122    }
8123});
8124
8125//! moment.js locale configuration
8126//! locale : Gujarati [gu]
8127//! author : Kaushik Thanki : https://github.com/Kaushik1987
8128
8129var symbolMap$6 = {
8130        '1': 'à«§',
8131        '2': '૨',
8132        '3': 'à«©',
8133        '4': '૪',
8134        '5': 'à««',
8135        '6': '૬',
8136        '7': 'à«­',
8137        '8': 'à«®',
8138        '9': '૯',
8139        '0': '૦'
8140    };
8141var numberMap$5 = {
8142        'à«§': '1',
8143        '૨': '2',
8144        'à«©': '3',
8145        '૪': '4',
8146        'à««': '5',
8147        '૬': '6',
8148        'à«­': '7',
8149        'à«®': '8',
8150        '૯': '9',
8151        '૦': '0'
8152    };
8153
8154hooks.defineLocale('gu', {
8155    months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
8156    monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડà
8156ª¿àª¸à«‡.'.split('_'),
8157    monthsParseExact: true,
8158    weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
8159    weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
8160    weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
8161    longDateFormat: {
8162        LT: 'A h:mm વાગ્યે',
8163        LTS: 'A h:mm:ss વાગ્યે',
8164        L: 'DD/MM/YYYY',
8165        LL: 'D MMMM YYYY',
8166        LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
8167        LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
8168    },
8169    calendar: {
8170        sameDay: '[આજ] LT',
8171        nextDay: '[કાલે] LT',
8172        nextWeek: 'dddd, LT',
8173        lastDay: '[ગઇકાલે] LT',
8174        lastWeek: '[પાછલા] dddd, LT',
8175        sameElse: 'L'
8176    },
8177    relativeTime: {
8178        future: '%s મા',
8179        past: '%s પેહલા',
8180        s: 'અમુક પળો',
8181        m: 'એક મિનિટ',
8182        mm: '%d મિનિટ',
8183        h: 'એક કલાક',
8184        hh: '%d કલાક',
8185        d: 'એક દિવસ',
8186        dd: '%d દિવસ',
8187        M: 'એક મહિનો',
8188        MM: '%d મહિનો',
8189        y: 'એક વર્ષ',
8190        yy: '%d વર્ષ'
8191    },
8192    preparse: function (string) {
8193        return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
8194            return numberMap$5[match];
8195        });
8196    },
8197    postformat: function (string) {
8198        return string.replace(/\d/g, function (match) {
8199            return symbolMap$6[match];
8200        });
8201    },
8202    // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
8203    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
8204    meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
8205    meridiemHour: function (hour, meridiem) {
8206        if (hour === 12) {
8207            hour = 0;
8208        }
8209        if (meridiem === 'રાત') {
8210            return hour < 4 ? hour : hour + 12;
8211        } else if (meridiem === 'સવાર') {
8212            return hour;
8213        } else if (meridiem === 'બપોર') {
8214            return hour >= 10 ? hour : hour + 12;
8215        } else if (meridiem === 'સાંજ') {
8216            return hour + 12;
8217        }
8218    },
8219    meridiem: function (hour, minute, isLower) {
8220        if (hour < 4) {
8221            return 'રાત';
8222        } else if (hour < 10) {
8223            return 'સવાર';
8224        } else if (hour < 17) {
8225            return 'બપોર';
8226        } else if (hour < 20) {
8227            return 'સાંજ';
8228        } else {
8229            return 'રાત';
8230        }
8231    },
8232    week: {
8233        dow: 0, // Sunday is the first day of the week.
8234        doy: 6 // The week that contains Jan 1st is the first week of the year.
8235    }
8236});
8237
8238//! moment.js locale configuration
8239//! locale : Hebrew [he]
8240//! author : Tomer Cohen : https://github.com/tomer
8241//! author : Moshe Simantov : https://github.com/DevelopmentIL
8242//! author : Tal Ater : https://github.com/TalAter
8243
8244hooks.defineLocale('he', {
8245    months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
8246    monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
8247    weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
8248    weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
8249    weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
8250    longDateFormat : {
8251        LT : 'HH:mm',
8252        LTS : 'HH:mm:ss',
8253        L : 'DD/MM/YYYY',
8254        LL : 'D [ב]MMMM YYYY',
8255        LLL : 'D [ב]MMMM YYYY HH:mm',
8256        LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
8257        l : 'D/M/YYYY',
8258        ll : 'D MMM YYYY',
8259        lll : 'D MMM YYYY HH:mm',
8260        llll : 'ddd, D MMM YYYY HH:mm'
8261    },
8262    calendar : {
8263        sameDay : '[היום ב־]LT',
8264        nextDay : '[מחר ב־]LT',
8265        nextWeek : 'dddd [בשעה] LT',
8266        lastDay : '[אתמול ב־]LT',
8267        lastWeek : '[ביום] dddd [האחרון בשעה] LT',
8268        sameElse : 'L'
8269    },
8270    relativeTime : {
8271        future : 'בעוד %s',
8272        past : 'לפני %s',
8273        s : 'מספר שניות',
8274        m : 'דקה',
8275        mm : '%d דקות',
8276        h : 'שעה',
8277        hh : function (number) {
8278            if (number === 2) {
8279                return 'שעתיים';
8280            }
8281            return number + ' שעות';
8282        },
8283        d : 'יום',
8284        dd : function (number) {
8285            if (number === 2) {
8286                return 'יומיים';
8287            }
8288            return number + ' ימים';
8289        },
8290        M : 'חודש',
8291        MM : function (number) {
8292            if (number === 2) {
8293                return 'חודשיים';
8294            }
8295            return number + ' חודשים';
8296        },
8297        y : 'שנה',
8298        yy : function (number) {
8299            if (number === 2) {
8300                return 'שנתיים';
8301            } else if (number % 10 === 0 && number !== 10) {
8302                return number + ' שנה';
8303            }
8304            return number + ' שנים';
8305        }
8306    },
8307    meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
8308    isPM : function (input) {
8309        return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
8310    },
8311    meridiem : function (hour, minute, isLower) {
8312        if (hour < 5) {
8313            return 'לפנות בוקר';
8314        } else if (hour < 10) {
8315            return 'בבוקר';
8316        } else if (hour < 12) {
8317            return isLower ? 'לפנה"צ' : 'לפני הצהריים';
8318        } else if (hour < 18) {
8319            return isLower ? 'אחה"צ' : 'אחרי הצהריים';
8320        } else {
8321            return 'בערב';
8322        }
8323    }
8324});
8325
8326//! moment.js locale configuration
8327//! locale : Hindi [hi]
8328//! author : Mayank Singhal : https://github.com/mayanksinghal
8329
8330var symbolMap$7 = {
8331    '1': '१',
8332    '2': '२',
8333    '3': '३',
8334    '4': '४',
8335    '5': '५',
8336    '6': '६',
8337    '7': '७',
8338    '8': '८',
8339    '9': '९',
8340    '0': '०'
8341};
8342var numberMap$6 = {
8343    '१': '1',
8344    '२': '2',
8345    '३': '3',
8346    '४': '4',
8347    '५': '5',
8348    '६': '6',
8349    '७': '7',
8350    '८': '8',
8351    '९': '9',
8352    '०': '0'
8353};
8354
8355hooks.defineLocale('hi', {
8356    months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
8357    monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
8358    monthsParseExact: true,
8359    weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
8360    weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
8361    weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
8362    longDateFormat : {
8363        LT : 'A h:mm बजे',
8364        LTS : 'A h:mm:ss बजे',
8365        L : 'DD/MM/YYYY',
8366        LL : 'D MMMM YYYY',
8367        LLL : 'D MMMM YYYY, A h:mm बजे',
8368        LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
8369    },
8370    calendar : {
8371        sameDay : '[आज] LT',
8372        nextDay : '[कल] LT',
8373        nextWeek : 'dddd, LT',
8374        lastDay : '[कल] LT',
8375        lastWeek : '[पिछले] dddd, LT',
8376        sameElse : 'L'
8377    },
8378    relativeTime : {
8379        future : '%s में',
8380        past : '%s पहले',
8381        s : 'कुछ ही क्षण',
8382        m : 'एक मिनट',
8383        mm : '%d मिनट',
8384        h : 'एक घंटा',
8385        hh : '%d घंटे',
8386        d : 'एक दिन',
8387        dd : '%d दिन',
8388        M : 'एक महीने',
8389        MM : '%d महीने',
8390        y : 'एक वर्ष',
8391        yy : '%d वर्ष'
8392    },
8393    preparse: function (string) {
8394        return string.replace(/[१२३४५६७८९०]/g, function (match) {
8395            return numberMap$6[match];
8396        });
8397    },
8398    postformat: function (string) {
8399        return string.replace(/\d/g, function (match) {
8400            return symbolMap$7[match];
8401        });
8402    },
8403    // Hindi notation for meridiems are quite fuzzy in practice. While there exists
8404    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
8405    meridiemParse: /रात|सुबह|दोपहर|शाम/,
8406    meridiemHour : function (hour, meridiem) {
8407        if (hour === 12) {
8408            hour = 0;
8409        }
8410        if (meridiem === 'रात') {
8411            return hour < 4 ? hour : hour + 12;
8412        } else if (meridiem === 'सुबह') {
8413            return hour;
8414        } else if (meridiem === 'दोपहर') {
8415            return hour >= 10 ? hour : hour + 12;
8416        } else if (meridiem === 'शाम') {
8417            return hour + 12;
8418        }
8419    },
8420    meridiem : function (hour, minute, isLower) {
8421        if (hour < 4) {
8422            return 'रात';
8423        } else if (hour < 10) {
8424            return 'सुबह';
8425        } else if (hour < 17) {
8426            return 'दोपहर';
8427        } else if (hour < 20) {
8428            return 'शाम';
8429        } else {
8430            return 'रात';
8431        }
8432    },
8433    week : {
8434        dow : 0, // Sunday is the first day of the week.
8435        doy : 6  // The week that contains Jan 1st is the first week of the year.
8436    }
8437});
8438
8439//! moment.js locale configuration
8440//! locale : Croatian [hr]
8441//! author : Bojan Marković : https://github.com/bmarkovic
8442
8443function translate$3(number, withoutSuffix, key) {
8444    var result = number + ' ';
8445    switch (key) {
8446        case 'm':
8447            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
8448        case 'mm':
8449            if (number === 1) {
8450                result += 'minuta';
8451            } else if (number === 2 || number === 3 || number === 4) {
8452                result += 'minute';
8453            } else {
8454                result += 'minuta';
8455            }
8456            return result;
8457        case 'h':
8458            return withoutSuffix ? 'jedan sat' : 'jednog sata';
8459        case 'hh':
8460            if (number === 1) {
8461                result += 'sat';
8462            } else if (number === 2 || number === 3 || number === 4) {
8463                result += 'sata';
8464            } else {
8465                result += 'sati';
8466            }
8467            return result;
8468        case 'dd':
8469            if (number === 1) {
8470                result += 'dan';
8471            } else {
8472                result += 'dana';
8473            }
8474            return result;
8475        case 'MM':
8476            if (number === 1) {
8477                result += 'mjesec';
8478            } else if (number === 2 || number === 3 || number === 4) {
8479                result += 'mjeseca';
8480            } else {
8481                result += 'mjeseci';
8482            }
8483            return result;
8484        case 'yy':
8485            if (number === 1) {
8486                result += 'godina';
8487            } else if (number === 2 || number === 3 || number === 4) {
8488                result += 'godine';
8489            } else {
8490                result += 'godina';
8491            }
8492            return result;
8493    }
8494}
8495
8496hooks.defineLocale('hr', {
8497    months : {
8498        format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
8499        standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
8500    },
8501    monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
8502    monthsParseExact: true,
8503    weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
8504    weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
8505    weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
8506    weekdaysParseExact : true,
8507    longDateFormat : {
8508        LT : 'H:mm',
8509        LTS : 'H:mm:ss',
8510        L : 'DD.MM.YYYY',
8511        LL : 'D. MMMM YYYY',
8512        LLL : 'D. MMMM YYYY H:mm',
8513        LLLL : 'dddd, D. MMMM YYYY H:mm'
8514    },
8515    calendar : {
8516        sameDay  : '[danas u] LT',
8517        nextDay  : '[sutra u] LT',
8518        nextWeek : function () {
8519            switch (this.day()) {
8520                case 0:
8521                    return '[u] [nedjelju] [u] LT';
8522                case 3:
8523                    return '[u] [srijedu] [u] LT';
8524                case 6:
8525                    return '[u] [subotu] [u] LT';
8526                case 1:
8527                case 2:
8528                case 4:
8529                case 5:
8530                    return '[u] dddd [u] LT';
8531            }
8532        },
8533        lastDay  : '[jučer u] LT',
8534        lastWeek : function () {
8535            switch (this.day()) {
8536                case 0:
8537                case 3:
8538                    return '[prošlu] dddd [u] LT';
8539                case 6:
8540                    return '[prošle] [subote] [u] LT';
8541                case 1:
8542                case 2:
8543                case 4:
8544                case 5:
8545                    return '[prošli] dddd [u] LT';
8546            }
8547        },
8548        sameElse : 'L'
8549    },
8550    relativeTime : {
8551        future : 'za %s',
8552        past   : 'prije %s',
8553        s      : 'par sekundi',
8554        m      : translate$3,
8555        mm     : translate$3,
8556        h      : translate$3,
8557        hh     : translate$3,
8558        d      : 'dan',
8559        dd     : translate$3,
8560        M      : 'mjesec',
8561        MM     : translate$3,
8562        y      : 'godinu',
8563        yy     : translate$3
8564    },
8565    dayOfMonthOrdinalParse: /\d{1,2}\./,
8566    ordinal : '%d.',
8567    week : {
8568        dow : 1, // Monday is the first day of the week.
8569        doy : 7  // The week that contains Jan 1st is the first week of the year.
8570    }
8571});
8572
8573//! moment.js locale configuration
8574//! locale : Hungarian [hu]
8575//! author : Adam Brunner : https://github.com/adambrunner
8576
8577var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
8578function translate$4(number, withoutSuffix, key, isFuture) {
8579    var num = number;
8580    switch (key) {
8581        case 's':
8582            return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
8583        case 'm':
8584            return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
8585        case 'mm':
8586            return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
8587        case 'h':
8588            return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
8589        case 'hh':
8590            return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
8591        case 'd':
8592            return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
8593        case 'dd':
8594            return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
8595        case 'M':
8596            return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8597        case 'MM':
8598            return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8599        case 'y':
8600            return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
8601        case 'yy':
8602            return num + (isFuture || withoutSuffix ? ' év' : ' éve');
8603    }
8604    return '';
8605}
8606function week(isFuture) {
8607    return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
8608}
8609
8610hooks.defineLocale('hu', {
8611    months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
8612    monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
8613    weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
8614    weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
8615    weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
8616    longDateFormat : {
8617        LT : 'H:mm',
8618        LTS : 'H:mm:ss',
8619        L : 'YYYY.MM.DD.',
8620        LL : 'YYYY. MMMM D.',
8621        LLL : 'YYYY. MMMM D. H:mm',
8622        LLLL : 'YYYY. MMMM D., dddd H:mm'
8623    },
8624    meridiemParse: /de|du/i,
8625    isPM: function (input) {
8626        return input.charAt(1).toLowerCase() === 'u';
8627    },
8628    meridiem : function (hours, minutes, isLower) {
8629        if (hours < 12) {
8630            return isLower === true ? 'de' : 'DE';
8631        } else {
8632            return isLower === true ? 'du' : 'DU';
8633        }
8634    },
8635    calendar : {
8636        sameDay : '[ma] LT[-kor]',
8637        nextDay : '[holnap] LT[-kor]',
8638        nextWeek : function () {
8639            return week.call(this, true);
8640        },
8641        lastDay : '[tegnap] LT[-kor]',
8642        lastWeek : function () {
8643            return week.call(this, false);
8644        },
8645        sameElse : 'L'
8646    },
8647    relativeTime : {
8648        future : '%s múlva',
8649        past : '%s',
8650        s : translate$4,
8651        m : translate$4,
8652        mm : translate$4,
8653        h : translate$4,
8654        hh : translate$4,
8655        d : translate$4,
8656        dd : translate$4,
8657        M : translate$4,
8658        MM : translate$4,
8659        y : translate$4,
8660        yy : translate$4
8661    },
8662    dayOfMonthOrdinalParse: /\d{1,2}\./,
8663    ordinal : '%d.',
8664    week : {
8665        dow : 1, // Monday is the first day of the week.
8666        doy : 4  // The week that contains Jan 4th is the first week of the year.
8667    }
8668});
8669
8670//! moment.js locale configuration
8671//! locale : Armenian [hy-am]
8672//! author : Armendarabyan : https://github.com/armendarabyan
8673
8674hooks.defineLocale('hy-am', {
8675    months : {
8676        format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
8677        standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
8678    },
8679    monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
8680    weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
8681    weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8682    weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8683    longDateFormat : {
8684        LT : 'HH:mm',
8685        LTS : 'HH:mm:ss',
8686        L : 'DD.MM.YYYY',
8687        LL : 'D MMMM YYYY Õ©.',
8688        LLL : 'D MMMM YYYY Õ©., HH:mm',
8689        LLLL : 'dddd, D MMMM YYYY Õ©., HH:mm'
8690    },
8691    calendar : {
8692        sameDay: '[այսօր] LT',
8693        nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
8694        lastDay: '[երեկ] LT',
8695        nextWeek: function () {
8696            return 'dddd [օրը ժամը] LT';
8697        },
8698        lastWeek: function () {
8699            return '[անցած] dddd [օրը ժամը] LT';
8700        },
8701        sameElse: 'L'
8702    },
8703    relativeTime : {
8704        future : '%s Õ°Õ¥Õ¿Õ¸',
8705        past : '%s Õ¡Õ¼Õ¡Õ»',
8706        s : 'մի քանի վայրկյան',
8707        m : 'րոպե',
8708        mm : '%d րոպե',
8709        h : 'ÕªÕ¡Õ´',
8710        hh : '%d ÕªÕ¡Õ´',
8711        d : 'օր',
8712        dd : '%d օր',
8713        M : 'Õ¡Õ´Õ«Õ½',
8714        MM : '%d Õ¡Õ´Õ«Õ½',
8715        y : 'տարի',
8716        yy : '%d տարի'
8717    },
8718    meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
8719    isPM: function (input) {
8720        return /^(ցերեկվա|երեկոյան)$/.test(input);
8721    },
8722    meridiem : function (hour) {
8723        if (hour < 4) {
8724            return 'գիշերվա';
8725        } else if (hour < 12) {
8726            return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
8727        } else if (hour < 17) {
8728            return 'ցերեկվա';
8729        } else {
8730            return 'երեկոյան';
8731        }
8732    },
8733    dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
8734    ordinal: function (number, period) {
8735        switch (period) {
8736            case 'DDD':
8737            case 'w':
8738            case 'W':
8739            case 'DDDo':
8740                if (number === 1) {
8741                    return number + '-Õ«Õ¶';
8742                }
8743                return number + '-րդ';
8744            default:
8745                return number;
8746        }
8747    },
8748    week : {
8749        dow : 1, // Monday is the first day of the week.
8750        doy : 7  // The week that contains Jan 1st is the first week of the year.
8751    }
8752});
8753
8754//! moment.js locale configuration
8755//! locale : Indonesian [id]
8756//! author : Mohammad Satrio Utomo : https://github.com/tyok
8757//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
8758
8759hooks.defineLocale('id', {
8760    months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
8761    monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
8762    weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
8763    weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
8764    weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
8765    longDateFormat : {
8766        LT : 'HH.mm',
8767        LTS : 'HH.mm.ss',
8768        L : 'DD/MM/YYYY',
8769        LL : 'D MMMM YYYY',
8770        LLL : 'D MMMM YYYY [pukul] HH.mm',
8771        LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8772    },
8773    meridiemParse: /pagi|siang|sore|malam/,
8774    meridiemHour : function (hour, meridiem) {
8775        if (hour === 12) {
8776            hour = 0;
8777        }
8778        if (meridiem === 'pagi') {
8779            return hour;
8780        } else if (meridiem === 'siang') {
8781            return hour >= 11 ? hour : hour + 12;
8782        } else if (meridiem === 'sore' || meridiem === 'malam') {
8783            return hour + 12;
8784        }
8785    },
8786    meridiem : function (hours, minutes, isLower) {
8787        if (hours < 11) {
8788            return 'pagi';
8789        } else if (hours < 15) {
8790            return 'siang';
vendor: 4,918 bytes, lines 8791-8943
8791        } else if (hours < 19) {
8792            return 'sore';
8793        } else {
8794            return 'malam';
8795        }
8796    },
8797    calendar : {
8798        sameDay : '[Hari ini pukul] LT',
8799        nextDay : '[Besok pukul] LT',
8800        nextWeek : 'dddd [pukul] LT',
8801        lastDay : '[Kemarin pukul] LT',
8802        lastWeek : 'dddd [lalu pukul] LT',
8803        sameElse : 'L'
8804    },
8805    relativeTime : {
8806        future : 'dalam %s',
8807        past : '%s yang lalu',
8808        s : 'beberapa detik',
8809        m : 'semenit',
8810        mm : '%d menit',
8811        h : 'sejam',
8812        hh : '%d jam',
8813        d : 'sehari',
8814        dd : '%d hari',
8815        M : 'sebulan',
8816        MM : '%d bulan',
8817        y : 'setahun',
8818        yy : '%d tahun'
8819    },
8820    week : {
8821        dow : 1, // Monday is the first day of the week.
8822        doy : 7  // The week that contains Jan 1st is the first week of the year.
8823    }
8824});
8825
8826//! moment.js locale configuration
8827//! locale : Icelandic [is]
8828//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
8829
8830function plural$2(n) {
8831    if (n % 100 === 11) {
8832        return true;
8833    } else if (n % 10 === 1) {
8834        return false;
8835    }
8836    return true;
8837}
8838function translate$5(number, withoutSuffix, key, isFuture) {
8839    var result = number + ' ';
8840    switch (key) {
8841        case 's':
8842            return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
8843        case 'm':
8844            return withoutSuffix ? 'mínúta' : 'mínútu';
8845        case 'mm':
8846            if (plural$2(number)) {
8847                return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
8848            } else if (withoutSuffix) {
8849                return result + 'mínúta';
8850            }
8851            return result + 'mínútu';
8852        case 'hh':
8853            if (plural$2(number)) {
8854                return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
8855            }
8856            return result + 'klukkustund';
8857        case 'd':
8858            if (withoutSuffix) {
8859                return 'dagur';
8860            }
8861            return isFuture ? 'dag' : 'degi';
8862        case 'dd':
8863            if (plural$2(number)) {
8864                if (withoutSuffix) {
8865                    return result + 'dagar';
8866                }
8867                return result + (isFuture ? 'daga' : 'dögum');
8868            } else if (withoutSuffix) {
8869                return result + 'dagur';
8870            }
8871            return result + (isFuture ? 'dag' : 'degi');
8872        case 'M':
8873            if (withoutSuffix) {
8874                return 'mánuður';
8875            }
8876            return isFuture ? 'mánuð' : 'mánuði';
8877        case 'MM':
8878            if (plural$2(number)) {
8879                if (withoutSuffix) {
8880                    return result + 'mánuðir';
8881                }
8882                return result + (isFuture ? 'mánuði' : 'mánuðum');
8883            } else if (withoutSuffix) {
8884                return result + 'mánuður';
8885            }
8886            return result + (isFuture ? 'mánuð' : 'mánuði');
8887        case 'y':
8888            return withoutSuffix || isFuture ? 'ár' : 'ári';
8889        case 'yy':
8890            if (plural$2(number)) {
8891                return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
8892            }
8893            return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
8894    }
8895}
8896
8897hooks.defineLocale('is', {
8898    months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
8899    monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
8900    weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
8901    weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
8902    weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
8903    longDateFormat : {
8904        LT : 'H:mm',
8905        LTS : 'H:mm:ss',
8906        L : 'DD.MM.YYYY',
8907        LL : 'D. MMMM YYYY',
8908        LLL : 'D. MMMM YYYY [kl.] H:mm',
8909        LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
8910    },
8911    calendar : {
8912        sameDay : '[í dag kl.] LT',
8913        nextDay : '[á morgun kl.] LT',
8914        nextWeek : 'dddd [kl.] LT',
8915        lastDay : '[í gær kl.] LT',
8916        lastWeek : '[síðasta] dddd [kl.] LT',
8917        sameElse : 'L'
8918    },
8919    relativeTime : {
8920        future : 'eftir %s',
8921        past : 'fyrir %s síðan',
8922        s : translate$5,
8923        m : translate$5,
8924        mm : translate$5,
8925        h : 'klukkustund',
8926        hh : translate$5,
8927        d : translate$5,
8928        dd : translate$5,
8929        M : translate$5,
8930        MM : translate$5,
8931        y : translate$5,
8932        yy : translate$5
8933    },
8934    dayOfMonthOrdinalParse: /\d{1,2}\./,
8935    ordinal : '%d.',
8936    week : {
8937        dow : 1, // Monday is the first day of the week.
8938        doy : 4  // The week that contains Jan 4th is the first week of the year.
8939    }
8940});
8941
8942//! moment.js locale configuration
8943//! locale : Italian [it]
8944//! author : Lorenzo : https://github.com/aliem
8945//! author: Mattia Larentis: https://github.com/nostalgiaz
8946
8947hooks.defineLocale('it', {
8948    months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
8949    monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
8950    weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
8951    weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
8952    weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
8953    longDateFormat : {
8954        LT : 'HH:mm',
8955        LTS : 'HH:mm:ss',
8956        L : 'DD/MM/YYYY',
8957        LL : 'D MMMM YYYY',
8958        LLL : 'D MMMM YYYY HH:mm',
8959        LLLL : 'dddd, D MMMM YYYY HH:mm'
8960    },
8961    calendar : {
8962        sameDay: '[Oggi alle] LT',
8963        nextDay: '[Domani alle] LT',
8964        nextWeek: 'dddd [alle] LT',
8965        lastDay: '[Ieri alle] LT',
8966        lastWeek: function () {
8967            switch (this.day()) {
8968                case 0:
8969                    return '[la scorsa] dddd [alle] LT';
8970                default:
8971                    return '[lo scorso] dddd [alle] LT';
8972            }
8973        },
8974        sameElse: 'L'
8975    },
8976    relativeTime : {
8977        future : function (s) {
8978            return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
8979        },
8980        past : '%s fa',
8981        s : 'alcuni secondi',
8982        m : 'un minuto',
8983        mm : '%d minuti',
8984        h : 'un\'ora',
8985        hh : '%d ore',
8986        d : 'un giorno',
8987        dd : '%d giorni',
8988        M : 'un mese',
8989        MM : '%d mesi',
8990        y : 'un anno',
8991        yy : '%d anni'
8992    },
8993    dayOfMonthOrdinalParse : /\d{1,2}º/,
8994    ordinal: '%dº',
8995    week : {
8996        dow : 1, // Monday is the first day of the week.
8997        doy : 4  // The week that contains Jan 4th is the first week of the year.
8998    }
8999});
9000
9001//! moment.js locale configuration
9002//! locale : Japanese [ja]
9003//! author : LI Long : https://github.com/baryon
9004
9005hooks.defineLocale('ja', {
9006    months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
9007    monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
9008    weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
9009    weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
9010    weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
9011    longDateFormat : {
9012        LT : 'HH:mm',
9013        LTS : 'HH:mm:ss',
9014        L : 'YYYY/MM/DD',
9015        LL : 'YYYY年M月D日',
9016        LLL : 'YYYY年M月D日 HH:mm',
9017        LLLL : 'YYYY年M月D日 HH:mm dddd',
9018        l : 'YYYY/MM/DD',
9019        ll : 'YYYY年M月D日',
9020        lll : 'YYYY年M月D日 HH:mm',
9021        llll : 'YYYY年M月D日 HH:mm dddd'
9022    },
9023    meridiemParse: /午前|午後/i,
9024    isPM : function (input) {
9025        return input === '午後';
9026    },
9027    meridiem : function (hour, minute, isLower) {
9028        if (hour < 12) {
9029            return '午前';
9030        } else {
9031            return '午後';
9032        }
9033    },
9034    calendar : {
9035        sameDay : '[今日] LT',
9036        nextDay : '[明日] LT',
9037        nextWeek : '[来週]dddd LT',
9038        lastDay : '[昨日] LT',
9039        lastWeek : '[前週]dddd LT',
9040        sameElse : 'L'
9041    },
9042    dayOfMonthOrdinalParse : /\d{1,2}日/,
9043    ordinal : function (number, period) {
9044        switch (period) {
9045            case 'd':
9046            case 'D':
9047            case 'DDD':
9048                return number + '日';
9049            default:
9050                return number;
9051        }
9052    },
9053    relativeTime : {
9054        future : '%s後',
9055        past : '%s前',
9056        s : '数秒',
9057        m : '1分',
9058        mm : '%d分',
9059        h : '1時間',
9060        hh : '%d時間',
9061        d : '1日',
9062        dd : '%d日',
9063        M : '1ヶ月',
9064        MM : '%dヶ月',
9065        y : '1å¹´',
9066        yy : '%då¹´'
9067    }
9068});
9069
9070//! moment.js locale configuration
9071//! locale : Javanese [jv]
9072//! author : Rony Lantip : https://github.com/lantip
9073//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
9074
9075hooks.defineLocale('jv', {
9076    months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
9077    monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
9078    weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
9079    weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
9080    weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
9081    longDateFormat : {
9082        LT : 'HH.mm',
9083        LTS : 'HH.mm.ss',
9084        L : 'DD/MM/YYYY',
9085        LL : 'D MMMM YYYY',
9086        LLL : 'D MMMM YYYY [pukul] HH.mm',
9087        LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
9088    },
9089    meridiemParse: /enjing|siyang|sonten|ndalu/,
9090    meridiemHour : function (hour, meridiem) {
9091        if (hour === 12) {
9092            hour = 0;
9093        }
9094        if (meridiem === 'enjing') {
9095            return hour;
9096        } else if (meridiem === 'siyang') {
9097            return hour >= 11 ? hour : hour + 12;
9098        } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
9099            return hour + 12;
9100        }
9101    },
9102    meridiem : function (hours, minutes, isLower) {
9103        if (hours < 11) {
9104            return 'enjing';
9105        } else if (hours < 15) {
9106            return 'siyang';
9107        } else if (hours < 19) {
9108            return 'sonten';
9109        } else {
9110            return 'ndalu';
9111        }
9112    },
9113    calendar : {
9114        sameDay : '[Dinten puniko pukul] LT',
9115        nextDay : '[Mbenjang pukul] LT',
9116        nextWeek : 'dddd [pukul] LT',
9117        lastDay : '[Kala wingi pukul] LT',
9118        lastWeek : 'dddd [kepengker pukul] LT',
9119        sameElse : 'L'
9120    },
9121    relativeTime : {
9122        future : 'wonten ing %s',
9123        past : '%s ingkang kepengker',
9124        s : 'sawetawis detik',
9125        m : 'setunggal menit',
9126        mm : '%d menit',
9127        h : 'setunggal jam',
9128        hh : '%d jam',
9129        d : 'sedinten',
9130        dd : '%d dinten',
9131        M : 'sewulan',
9132        MM : '%d wulan',
9133        y : 'setaun',
9134        yy : '%d taun'
9135    },
9136    week : {
9137        dow : 1, // Monday is the first day of the week.
9138        doy : 7  // The week that contains Jan 1st is the first week of the year.
9139    }
9140});
9141
9142//! moment.js locale configuration
9143//! locale : Georgian [ka]
9144//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
9145
9146hooks.defineLocale('ka', {
9147    months : {
9148        standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
9149        format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
9150    },
9151    monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
9152    weekdays : {
9153        standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
9154        format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
9155        isFormat: /(წინა|შემდეგ)/
9156    },
9157    weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
9158    weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
9159    longDateFormat : {
9160        LT : 'h:mm A',
9161        LTS : 'h:mm:ss A',
9162        L : 'DD/MM/YYYY',
9163        LL : 'D MMMM YYYY',
9164        LLL : 'D MMMM YYYY h:mm A',
9165        LLLL : 'dddd, D MMMM YYYY h:mm A'
9166    },
9167    calendar : {
9168        sameDay : '[დღეს] LT[-ზე]',
9169        nextDay : '[ხვალ] LT[-ზე]',
9170        lastDay : '[გუშინ] LT[-ზე]',
9171        nextWeek : '[შემდეგ] dddd LT[-ზე]',
9172        lastWeek : '[წინა] dddd LT-ზე',
9173        sameElse : 'L'
9174    },
9175    relativeTime : {
9176        future : function (s) {
9177            return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
9178                s.replace(/ი$/, 'ში') :
9179                s + 'ში';
9180        },
9181        past : function (s) {
9182            if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
9183                return s.replace(/(ი|ე)$/, 'ის უკან');
9184            }
9185            if ((/წელი/).test(s)) {
9186                return s.replace(/წელი$/, 'წლის უკან');
9187            }
9188        },
9189        s : 'რამდენიმე წამი',
9190        m : 'წუთი',
9191        mm : '%d წუთი',
9192        h : 'საათი',
9193        hh : '%d საათი',
9194        d : 'დღე',
9195        dd : '%d დღე',
9196        M : 'თვე',
9197        MM : '%d თვე',
9198        y : 'წელი',
9199        yy : '%d წელი'
9200    },
9201    dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
9202    ordinal : function (number) {
9203        if (number === 0) {
9204            return number;
9205        }
9206        if (number === 1) {
9207            return number + '-ლი';
9208        }
9209        if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
9210            return 'მე-' + number;
9211        }
9212        return number + '-ე';
9213    },
9214    week : {
9215        dow : 1,
9216        doy : 7
9217    }
9218});
9219
9220//! moment.js locale configuration
9221//! locale : Kazakh [kk]
9222//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
9223
9224var suffixes$1 = {
9225    0: '-ші',
9226    1: '-ші',
9227    2: '-ші',
9228    3: '-ші',
9229    4: '-ші',
9230    5: '-ші',
9231    6: '-шы',
9232    7: '-ші',
9233    8: '-ші',
9234    9: '-шы',
9235    10: '-шы',
9236    20: '-шы',
9237    30: '-шы',
9238    40: '-шы',
9239    50: '-ші',
9240    60: '-шы',
9241    70: '-ші',
9242    80: '-ші',
9243    90: '-шы',
9244    100: '-ші'
9245};
9246
9247hooks.defineLocale('kk', {
9248    months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
9249    monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
9250    weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
9251    weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
9252    weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
9253    longDateFormat : {
9254        LT : 'HH:mm',
9255        LTS : 'HH:mm:ss',
9256        L : 'DD.MM.YYYY',
9257        LL : 'D MMMM YYYY',
9258        LLL : 'D MMMM YYYY HH:mm',
9259        LLLL : 'dddd, D MMMM YYYY HH:mm'
9260    },
9261    calendar : {
9262        sameDay : '[Бүгін сағат] LT',
9263        nextDay : '[Ертең сағат] LT',
9264        nextWeek : 'dddd [сағат] LT',
9265        lastDay : '[Кеше сағат] LT',
9266        lastWeek : '[Өткен аптаның] dddd [сағат] LT',
9267        sameElse : 'L'
9268    },
9269    relativeTime : {
9270        future : '%s ішінде',
9271        past : '%s бұрын',
9272        s : 'бірнеше секунд',
9273        m : 'бір минут',
9274        mm : '%d минут',
9275        h : 'бір сағат',
9276        hh : '%d сағат',
9277        d : 'бір күн',
9278        dd : '%d күн',
9279        M : 'бір ай',
9280        MM : '%d ай',
9281        y : 'бір жыл',
9282        yy : '%d жыл'
9283    },
9284    dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
9285    ordinal : function (number) {
9286        var a = number % 10,
9287            b = number >= 100 ? 100 : null;
9288        return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
9289    },
9290    week : {
9291        dow : 1, // Monday is the first day of the week.
9292        doy : 7  // The week that contains Jan 1st is the first week of the year.
9293    }
9294});
9295
9296//! moment.js locale configuration
9297//! locale : Cambodian [km]
9298//! author : Kruy Vanna : https://github.com/kruyvanna
9299
9300hooks.defineLocale('km', {
9301    months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
9302    monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
9303    weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9304    weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9305    weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9306    longDateFormat: {
9307        LT: 'HH:mm',
9308        LTS : 'HH:mm:ss',
9309        L: 'DD/MM/YYYY',
9310        LL: 'D MMMM YYYY',
9311        LLL: 'D MMMM YYYY HH:mm',
9312        LLLL: 'dddd, D MMMM YYYY HH:mm'
9313    },
9314    calendar: {
9315        sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
9316        nextDay: '[ស្អែក ម៉ោង] LT',
9317        nextWeek: 'dddd [ម៉ោង] LT',
9318        lastDay: '[ម្សិលមិញ ម៉ោង] LT',
9319        lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
9320        sameElse: 'L'
9321    },
9322    relativeTime: {
9323        future: '%sទៀត',
9324        past: '%sមុន',
9325        s: 'ប៉ុន្មានវិនាទី',
9326        m: 'មួយនាទី',
9327        mm: '%d នាទី',
9328        h: 'មួយម៉ោង',
9329        hh: '%d ម៉ោង',
9330        d: 'មួយថ្ងៃ',
9331        dd: '%d ថ្ងៃ',
9332        M: 'មួយខែ',
9333        MM: '%d ខែ',
9334        y: 'មួយឆ្នាំ',
9335        yy: '%d ឆ្នាំ'
9336    },
9337    week: {
9338        dow: 1, // Monday is the first day of the week.
9339        doy: 4 // The week that contains Jan 4th is the first week of the year.
9340    }
9341});
9342
9343//! moment.js locale configuration
9344//! locale : Kannada [kn]
9345//! author : Rajeev Naik : https://github.com/rajeevnaikte
9346
9347var symbolMap$8 = {
9348    '1': 'à³§',
9349    '2': '೨',
9350    '3': '೩',
9351    '4': '೪',
9352    '5': '೫',
9353    '6': '೬',
9354    '7': 'à³­',
9355    '8': 'à³®',
9356    '9': '೯',
9357    '0': '೦'
9358};
9359var numberMap$7 = {
9360    'à³§': '1',
9361    '೨': '2',
9362    '೩': '3',
9363    '೪': '4',
9364    '೫': '5',
9365    '೬': '6',
9366    'à³­': '7',
9367    'à³®': '8',
9368    '೯': '9',
9369    '೦': '0'
9370};
9371
9372hooks.defineLocale('kn', {
9373    months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
9374    monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'),
9375    monthsParseExact: true,
9376    weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
9377    weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
9378    weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
9379    longDateFormat : {
9380        LT : 'A h:mm',
9381        LTS : 'A h:mm:ss',
9382        L : 'DD/MM/YYYY',
9383        LL : 'D MMMM YYYY',
9384        LLL : 'D MMMM YYYY, A h:mm',
9385        LLLL : 'dddd, D MMMM YYYY, A h:mm'
9386    },
9387    calendar : {
9388        sameDay : '[ಇಂದು] LT',
9389        nextDay : '[ನಾಳೆ] LT',
9390        nextWeek : 'dddd, LT',
9391        lastDay : '[ನಿನ್ನೆ] LT',
9392        lastWeek : '[ಕೊನೆಯ] dddd, LT',
9393        sameElse : 'L'
9394    },
9395    relativeTime : {
9396        future : '%s ನಂತರ',
9397        past : '%s ಹಿಂದೆ',
9398        s : 'ಕೆಲವು ಕ್ಷಣಗಳು',
9399        m : 'ಒಂದು ನಿಮಿಷ',
9400        mm : '%d ನಿಮಿಷ',
9401        h : 'ಒಂದು ಗಂಟೆ',
9402        hh : '%d ಗಂಟೆ',
9403        d : 'ಒಂದು ದಿನ',
9404        dd : '%d ದಿನ',
9405        M : 'ಒಂದು ತಿಂಗಳು',
9406        MM : '%d ತಿಂಗಳು',
9407        y : 'ಒಂದು ವರ್ಷ',
9408        yy : '%d ವರ್ಷ'
9409    },
9410    preparse: function (string) {
9411        return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
9412            return numberMap$7[match];
9413        });
9414    },
9415    postformat: function (string) {
9416        return string.replace(/\d/g, function (match) {
9417            return symbolMap$8[match];
9418        });
9419    },
9420    meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
9421    meridiemHour : function (hour, meridiem) {
9422        if (hour === 12) {
9423            hour = 0;
9424        }
9425        if (meridiem === 'ರಾತ್ರಿ') {
9426            return hour < 4 ? hour : hour + 12;
9427        } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
9428            return hour;
9429        } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
9430            return hour >= 10 ? hour : hour + 12;
9431        } else if (meridiem === 'ಸಂಜೆ') {
9432            return hour + 12;
9433        }
9434    },
9435    meridiem : function (hour, minute, isLower) {
9436        if (hour < 4) {
9437            return 'ರಾತ್ರಿ';
9438        } else if (hour < 10) {
9439            return 'ಬೆಳಿಗ್ಗೆ';
9440        } else if (hour < 17) {
9441            return 'ಮಧ್ಯಾಹ್ನ';
9442        } else if (hour < 20) {
9443            return 'ಸಂಜೆ';
9444        } else {
9445            return 'ರಾತ್ರಿ';
9446        }
9447    },
9448    dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
9449    ordinal : function (number) {
9450        return number + 'ನೇ';
9451    },
9452    week : {
9453        dow : 0, // Sunday is the first day of the week.
9454        doy : 6  // The week that contains Jan 1st is the first week of the year.
9455    }
9456});
9457
9458//! moment.js locale configuration
9459//! locale : Korean [ko]
9460//! author : Kyungwook, Park : https://github.com/kyungw00k
9461//! author : Jeeeyul Lee <[email protected]>
9462
9463hooks.defineLocale('ko', {
9464    months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9465    monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9466    weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
9467    weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
9468    weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
9469    longDateFormat : {
9470        LT : 'A h:mm',
9471        LTS : 'A h:mm:ss',
9472        L : 'YYYY.MM.DD',
9473        LL : 'YYYY년 MMMM D일',
9474        LLL : 'YYYY년 MMMM D일 A h:mm',
9475        LLLL : 'YYYY년 MMMM D일 dddd A h:mm',
9476        l : 'YYYY.MM.DD',
9477        ll : 'YYYY년 MMMM D일',
9478        lll : 'YYYY년 MMMM D일 A h:mm',
9479        llll : 'YYYY년 MMMM D일 dddd A h:mm'
9480    },
9481    calendar : {
9482        sameDay : '오늘 LT',
9483        nextDay : '내일 LT',
9484        nextWeek : 'dddd LT',
9485        lastDay : '어제 LT',
9486        lastWeek : '지난주 dddd LT',
9487        sameElse : 'L'
9488    },
9489    relativeTime : {
9490        future : '%s 후',
9491        past : '%s 전',
9492        s : '몇 초',
9493        ss : '%d초',
9494        m : '1분',
9495        mm : '%d분',
9496        h : '한 시간',
9497        hh : '%d시간',
9498        d : '하루',
9499        dd : '%d일',
9500        M : '한 달',
9501        MM : '%d달',
9502        y : '일 년',
9503        yy : '%d년'
9504    },
9505    dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/,
9506    ordinal : function (number, period) {
9507        switch (period) {
9508            case 'd':
9509            case 'D':
9510            case 'DDD':
9511                return number + '일';
9512            case 'M':
9513                return number + '월';
9514            case 'w':
9515            case 'W':
9516                return number + '주';
9517            default:
9518                return number;
9519        }
9520    },
9521    meridiemParse : /오전|오후/,
9522    isPM : function (token) {
9523        return token === '오후';
9524    },
9525    meridiem : function (hour, minute, isUpper) {
9526        return hour < 12 ? '오전' : '오후';
9527    }
9528});
9529
9530//! moment.js locale configuration
9531//! locale : Kyrgyz [ky]
9532//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
9533
9534
9535var suffixes$2 = {
9536    0: '-чү',
9537    1: '-чи',
9538    2: '-чи',
9539    3: '-чү',
9540    4: '-чү',
9541    5: '-чи',
9542    6: '-чы',
9543    7: '-чи',
9544    8: '-чи',
9545    9: '-чу',
9546    10: '-чу',
9547    20: '-чы',
9548    30: '-чу',
9549    40: '-чы',
9550    50: '-чү',
9551    60: '-чы',
9552    70: '-чи',
9553    80: '-чи',
9554    90: '-чу',
9555    100: '-чү'
9556};
9557
9558hooks.defineLocale('ky', {
9559    months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
9560    monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
9561    weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
9562    weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
9563    weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
9564    longDateFormat : {
9565        LT : 'HH:mm',
9566        LTS : 'HH:mm:ss',
9567        L : 'DD.MM.YYYY',
9568        LL : 'D MMMM YYYY',
9569        LLL : 'D MMMM YYYY HH:mm',
9570        LLLL : 'dddd, D MMMM YYYY HH:mm'
9571    },
9572    calendar : {
9573        sameDay : '[Бүгүн саат] LT',
9574        nextDay : '[Эртең саат] LT',
9575        nextWeek : 'dddd [саат] LT',
9576        lastDay : '[Кече саат] LT',
9577        lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
9578        sameElse : 'L'
9579    },
9580    relativeTime : {
9581        future : '%s ичинде',
9582        past : '%s мурун',
9583        s : 'бирнече секунд',
9584        m : 'бир мүнөт',
9585        mm : '%d мүнөт',
9586        h : 'бир саат',
9587        hh : '%d саат',
9588        d : 'бир күн',
9589        dd : '%d күн',
9590        M : 'бир ай',
9591        MM : '%d ай',
9592        y : 'бир жыл',
9593        yy : '%d жыл'
9594    },
9595    dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
9596    ordinal : function (number) {
9597        var a = number % 10,
9598            b = number >= 100 ? 100 : null;
9599        return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
9600    },
9601    week : {
9602        dow : 1, // Monday is the first day of the week.
9603        doy : 7  // The week that contains Jan 1st is the first week of the year.
9604    }
9605});
9606
9607//! moment.js locale configuration
9608//! locale : Luxembourgish [lb]
9609//! author : mweimerskirch : https://github.com/mweimerskirch
9610//! author : David Raison : https://github.com/kwisatz
9611
9612function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
9613    var format = {
9614        'm': ['eng Minutt', 'enger Minutt'],
9615        'h': ['eng Stonn', 'enger Stonn'],
9616        'd': ['een Dag', 'engem Dag'],
9617        'M': ['ee Mount', 'engem Mount'],
9618        'y': ['ee Joer', 'engem Joer']
9619    };
9620    return withoutSuffix ? format[key][0] : format[key][1];
9621}
9622function processFutureTime(string) {
9623    var number = string.substr(0, string.indexOf(' '));
9624    if (eifelerRegelAppliesToNumber(number)) {
9625        return 'a ' + string;
9626    }
9627    return 'an ' + string;
9628}
9629function processPastTime(string) {
9630    var number = string.substr(0, string.indexOf(' '));
9631    if (eifelerRegelAppliesToNumber(number)) {
9632        return 'viru ' + string;
9633    }
9634    return 'virun ' + string;
9635}
9636/**
9637 * Returns true if the word before the given number loses the '-n' ending.
9638 * e.g. 'an 10 Deeg' but 'a 5 Deeg'
9639 *
9640 * @param number {integer}
9641 * @returns {boolean}
9642 */
9643function eifelerRegelAppliesToNumber(number) {
9644    number = parseInt(number, 10);
9645    if (isNaN(number)) {
9646        return false;
9647    }
9648    if (number < 0) {
9649        // Negative Number --> always true
9650        return true;
9651    } else if (number < 10) {
9652        // Only 1 digit
9653        if (4 <= number && number <= 7) {
9654            return true;
9655        }
9656        return false;
9657    } else if (number < 100) {
9658        // 2 digits
9659        var lastDigit = number % 10, firstDigit = number / 10;
9660        if (lastDigit === 0) {
9661            return eifelerRegelAppliesToNumber(firstDigit);
9662        }
9663        return eifelerRegelAppliesToNumber(lastDigit);
9664    } else if (number < 10000) {
9665        // 3 or 4 digits --> recursively check first digit
9666        while (number >= 10) {
9667            number = number / 10;
9668        }
9669        return eifelerRegelAppliesToNumber(number);
9670    } else {
9671        // Anything larger than 4 digits: recursively check first n-3 digits
9672        number = number / 1000;
9673        return eifelerRegelAppliesToNumber(number);
9674    }
9675}
9676
9677hooks.defineLocale('lb', {
9678    months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
9679    monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
9680    monthsParseExact : true,
9681    weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
9682    weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
9683    weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
9684    weekdaysParseExact : true,
9685    longDateFormat: {
9686        LT: 'H:mm [Auer]',
9687        LTS: 'H:mm:ss [Auer]',
9688        L: 'DD.MM.YYYY',
9689        LL: 'D. MMMM YYYY',
9690        LLL: 'D. MMMM YYYY H:mm [Auer]',
9691        LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
9692    },
9693    calendar: {
9694        sameDay: '[Haut um] LT',
9695        sameElse: 'L',
9696        nextDay: '[Muer um] LT',
9697        nextWeek: 'dddd [um] LT',
9698        lastDay: '[Gëschter um] LT',
9699        lastWeek: function () {
9700            // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
9701            switch (this.day()) {
9702                case 2:
9703                case 4:
9704                    return '[Leschten] dddd [um] LT';
9705                default:
9706                    return '[Leschte] dddd [um] LT';
9707            }
9708        }
9709    },
9710    relativeTime : {
9711        future : processFutureTime,
9712        past : processPastTime,
9713        s : 'e puer Sekonnen',
9714        m : processRelativeTime$5,
9715        mm : '%d Minutten',
9716        h : processRelativeTime$5,
9717        hh : '%d Stonnen',
9718        d : processRelativeTime$5,
9719        dd : '%d Deeg',
9720        M : processRelativeTime$5,
9721        MM : '%d Méint',
9722        y : processRelativeTime$5,
9723        yy : '%d Joer'
9724    },
9725    dayOfMonthOrdinalParse: /\d{1,2}\./,
9726    ordinal: '%d.',
9727    week: {
9728        dow: 1, // Monday is the first day of the week.
9729        doy: 4  // The week that contains Jan 4th is the first week of the year.
9730    }
9731});
9732
9733//! moment.js locale configuration
9734//! locale : Lao [lo]
9735//! author : Ryan Hart : https://github.com/ryanhart2
9736
9737hooks.defineLocale('lo', {
9738    months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
9739    monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
9740    weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9741    weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9742    weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
9743    weekdaysParseExact : true,
9744    longDateFormat : {
9745        LT : 'HH:mm',
9746        LTS : 'HH:mm:ss',
9747        L : 'DD/MM/YYYY',
9748        LL : 'D MMMM YYYY',
9749        LLL : 'D MMMM YYYY HH:mm',
9750        LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
9751    },
9752    meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
9753    isPM: function (input) {
9754        return input === 'ຕອນແລງ';
9755    },
9756    meridiem : function (hour, minute, isLower) {
9757        if (hour < 12) {
9758            return 'ຕອນເຊົ້າ';
9759        } else {
9760            return 'ຕອນແລງ';
9761        }
9762    },
9763    calendar : {
9764        sameDay : '[ມື້ນີ້ເວລາ] LT',
9765        nextDay : '[ມື້ອື່ນເວລາ] LT',
9766        nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
9767        lastDay : '[ມື້ວານນີ້ເວລາ] LT',
9768        lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
9769        sameElse : 'L'
9770    },
9771    relativeTime : {
9772        future : 'ອີກ %s',
9773        past : '%sຜ່ານມາ',
9774        s : 'ບໍ່ເທົ່າໃດວິນາທີ',
9775        m : '1 ນາທີ',
9776        mm : '%d ນາທີ',
9777        h : '1 ຊົ່ວໂມງ',
9778        hh : '%d ຊົ່ວໂມງ',
9779        d : '1 ມື້',
9780        dd : '%d ມື້',
9781        M : '1 ເດືອນ',
9782        MM : '%d ເດືອນ',
9783        y : '1 ປີ',
9784        yy : '%d ປີ'
9785    },
9786    dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
9787    ordinal : function (number) {
9788        return 'ທີ່' + number;
9789    }
9790});
9791
9792//! moment.js locale configuration
9793//! locale : Lithuanian [lt]
9794//! author : Mindaugas Mozūras : https://github.com/mmozuras
9795
9796var units = {
9797    'm' : 'minutė_minutės_minutę',
9798    'mm': 'minutės_minučių_minutes',
9799    'h' : 'valanda_valandos_valandą',
9800    'hh': 'valandos_valandų_valandas',
9801    'd' : 'diena_dienos_dieną',
9802    'dd': 'dienos_dienų_dienas',
9803    'M' : 'mėnuo_mėnesio_mėnesį',
9804    'MM': 'mėnesiai_mėnesių_mėnesius',
9805    'y' : 'metai_metų_metus',
9806    'yy': 'metai_metų_metus'
9807};
9808function translateSeconds(number, withoutSuffix, key, isFuture) {
9809    if (withoutSuffix) {
9810        return 'kelios sekundės';
9811    } else {
9812        return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
9813    }
9814}
9815function translateSingular(number, withoutSuffix, key, isFuture) {
9816    return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
9817}
9818function special(number) {
9819    return number % 10 === 0 || (number > 10 && number < 20);
9820}
9821function forms(key) {
9822    return units[key].split('_');
9823}
9824function translate$6(number, withoutSuffix, key, isFuture) {
9825    var result = number + ' ';
9826    if (number === 1) {
9827        return result + translateSingular(number, withoutSuffix, key[0], isFuture);
9828    } else if (withoutSuffix) {
9829        return result + (special(number) ? forms(key)[1] : forms(key)[0]);
9830    } else {
9831        if (isFuture) {
9832            return result + forms(key)[1];
9833        } else {
9834            return result + (special(number) ? forms(key)[1] : forms(key)[2]);
9835        }
9836    }
9837}
9838hooks.defineLocale('lt', {
9839    months : {
9840        format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
9841        standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
9842        isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
9843    },
9844    monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
9845    weekdays : {
9846        format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
9847        standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
9848        isFormat: /dddd HH:mm/
9849    },
9850    weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
9851    weekdaysMin : 'S_P_A_T_K_Pn_Å '.split('_'),
9852    weekdaysParseExact : true,
9853    longDateFormat : {
9854        LT : 'HH:mm',
9855        LTS : 'HH:mm:ss',
9856        L : 'YYYY-MM-DD',
9857        LL : 'YYYY [m.] MMMM D [d.]',
9858        LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9859        LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
9860        l : 'YYYY-MM-DD',
9861        ll : 'YYYY [m.] MMMM D [d.]',
9862        lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9863        llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
9864    },
9865    calendar : {
9866        sameDay : '[Å iandien] LT',
9867        nextDay : '[Rytoj] LT',
9868        nextWeek : 'dddd LT',
9869        lastDay : '[Vakar] LT',
9870        lastWeek : '[Praėjusį] dddd LT',
9871        sameElse : 'L'
9872    },
9873    relativeTime : {
9874        future : 'po %s',
9875        past : 'prieš %s',
9876        s : translateSeconds,
9877        m : translateSingular,
9878        mm : translate$6,
9879        h : translateSingular,
9880        hh : translate$6,
9881        d : translateSingular,
9882        dd : translate$6,
9883        M : translateSingular,
9884        MM : translate$6,
9885        y : translateSingular,
9886        yy : translate$6
9887    },
9888    dayOfMonthOrdinalParse: /\d{1,2}-oji/,
9889    ordinal : function (number) {
9890        return number + '-oji';
9891    },
9892    week : {
9893        dow : 1, // Monday is the first day of the week.
9894        doy : 4  // The week that contains Jan 4th is the first week of the year.
9895    }
9896});
9897
9898//! moment.js locale configuration
9899//! locale : Latvian [lv]
9900//! author : Kristaps Karlsons : https://github.com/skakri
9901//! author : Jānis Elmeris : https://github.com/JanisE
9902
9903var units$1 = {
9904    'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9905    'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9906    'h': 'stundas_stundām_stunda_stundas'.split('_'),
9907    'hh': 'stundas_stundām_stunda_stundas'.split('_'),
9908    'd': 'dienas_dienām_diena_dienas'.split('_'),
9909    'dd': 'dienas_dienām_diena_dienas'.split('_'),
9910    'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9911    'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9912    'y': 'gada_gadiem_gads_gadi'.split('_'),
9913    'yy': 'gada_gadiem_gads_gadi'.split('_')
9914};
9915/**
9916 * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
9917 */
9918function format$1(forms, number, withoutSuffix) {
9919    if (withoutSuffix) {
9920        // E.g. "21 minūte", "3 minūtes".
9921        return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
9922    } else {
9923        // E.g. "21 minūtes" as in "pēc 21 minūtes".
9924        // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
9925        return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
9926    }
9927}
9928function relativeTimeWithPlural$1(number, withoutSuffix, key) {
9929    return number + ' ' + format$1(units$1[key], number, withoutSuffix);
9930}
9931function relativeTimeWithSingular(number, withoutSuffix, key) {
9932    return format$1(units$1[key], number, withoutSuffix);
9933}
9934function relativeSeconds(number, withoutSuffix) {
9935    return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
9936}
9937
9938hooks.defineLocale('lv', {
9939    months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_
9939jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
9940    monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
9941    weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
9942    weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
9943    weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
9944    weekdaysParseExact : true,
9945    longDateFormat : {
9946        LT : 'HH:mm',
9947        LTS : 'HH:mm:ss',
9948        L : 'DD.MM.YYYY.',
9949        LL : 'YYYY. [gada] D. MMMM',
9950        LLL : 'YYYY. [gada] D. MMMM, HH:mm',
9951        LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
9952    },
9953    calendar : {
9954        sameDay : '[Å odien pulksten] LT',
9955        nextDay : '[Rīt pulksten] LT',
9956        nextWeek : 'dddd [pulksten] LT',
9957        lastDay : '[Vakar pulksten] LT',
9958        lastWeek : '[Pagājušā] dddd [pulksten] LT',
9959        sameElse : 'L'
9960    },
9961    relativeTime : {
9962        future : 'pēc %s',
9963        past : 'pirms %s',
9964        s : relativeSeconds,
9965        m : relativeTimeWithSingular,
9966        mm : relativeTimeWithPlural$1,
9967        h : relativeTimeWithSingular,
9968        hh : relativeTimeWithPlural$1,
9969        d : relativeTimeWithSingular,
9970        dd : relativeTimeWithPlural$1,
9971        M : relativeTimeWithSingular,
9972        MM : relativeTimeWithPlural$1,
9973        y : relativeTimeWithSingular,
9974        yy : relativeTimeWithPlural$1
9975    },
9976    dayOfMonthOrdinalParse: /\d{1,2}\./,
9977    ordinal : '%d.',
9978    week : {
9979        dow : 1, // Monday is the first day of the week.
9980        doy : 4  // The week that contains Jan 4th is the first week of the year.
9981    }
9982});
9983
9984//! moment.js locale configuration
9985//! locale : Montenegrin [me]
9986//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
9987
9988var translator = {
9989    words: { //Different grammatical cases
9990        m: ['jedan minut', 'jednog minuta'],
9991        mm: ['minut', 'minuta', 'minuta'],
9992        h: ['jedan sat', 'jednog sata'],
9993        hh: ['sat', 'sata', 'sati'],
9994        dd: ['dan', 'dana', 'dana'],
9995        MM: ['mjesec', 'mjeseca', 'mjeseci'],
9996        yy: ['godina', 'godine', 'godina']
9997    },
9998    correctGrammaticalCase: function (number, wordKey) {
9999        return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
10000    },
10001    translate: function (number, withoutSuffix, key) {
10002        var wordKey = translator.words[key];
10003        if (key.length === 1) {
10004            return withoutSuffix ? wordKey[0] : wordKey[1];
10005        } else {
10006            return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
10007        }
10008    }
10009};
10010
10011hooks.defineLocale('me', {
10012    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
10013    monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
10014    monthsParseExact : true,
10015    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
10016    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
10017    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
10018    weekdaysParseExact : true,
10019    longDateFormat: {
10020        LT: 'H:mm',
10021        LTS : 'H:mm:ss',
10022        L: 'DD.MM.YYYY',
10023        LL: 'D. MMMM YYYY',
10024        LLL: 'D. MMMM YYYY H:mm',
10025        LLLL: 'dddd, D. MMMM YYYY H:mm'
10026    },
10027    calendar: {
10028        sameDay: '[danas u] LT',
10029        nextDay: '[sjutra u] LT',
10030
10031        nextWeek: function () {
10032            switch (this.day()) {
10033                case 0:
10034                    return '[u] [nedjelju] [u] LT';
10035                case 3:
10036                    return '[u] [srijedu] [u] LT';
10037                case 6:
10038                    return '[u] [subotu] [u] LT';
10039                case 1:
10040                case 2:
10041                case 4:
10042                case 5:
10043                    return '[u] dddd [u] LT';
10044            }
10045        },
10046        lastDay  : '[juče u] LT',
10047        lastWeek : function () {
10048            var lastWeekDays = [
10049                '[prošle] [nedjelje] [u] LT',
10050                '[prošlog] [ponedjeljka] [u] LT',
10051                '[prošlog] [utorka] [u] LT',
10052                '[prošle] [srijede] [u] LT',
10053                '[prošlog] [četvrtka] [u] LT',
10054                '[prošlog] [petka] [u] LT',
10055                '[prošle] [subote] [u] LT'
10056            ];
10057            return lastWeekDays[this.day()];
10058        },
10059        sameElse : 'L'
10060    },
10061    relativeTime : {
10062        future : 'za %s',
10063        past   : 'prije %s',
10064        s      : 'nekoliko sekundi',
10065        m      : translator.translate,
10066        mm     : translator.translate,
10067        h      : translator.translate,
10068        hh     : translator.translate,
10069        d      : 'dan',
10070        dd     : translator.translate,
10071        M      : 'mjesec',
10072        MM     : translator.translate,
10073        y      : 'godinu',
10074        yy     : translator.translate
10075    },
10076    dayOfMonthOrdinalParse: /\d{1,2}\./,
10077    ordinal : '%d.',
10078    week : {
10079        dow : 1, // Monday is the first day of the week.
10080        doy : 7  // The week that contains Jan 1st is the first week of the year.
10081    }
10082});
10083
10084//! moment.js locale configuration
10085//! locale : Maori [mi]
10086//! author : John Corrigan <[email protected]> : https://github.com/johnideal
10087
10088hooks.defineLocale('mi', {
10089    months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),
10090    monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
10091    monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10092    monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10093    monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10094    monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
10095    weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
10096    weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10097    weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10098    longDateFormat: {
10099        LT: 'HH:mm',
10100        LTS: 'HH:mm:ss',
10101        L: 'DD/MM/YYYY',
10102        LL: 'D MMMM YYYY',
10103        LLL: 'D MMMM YYYY [i] HH:mm',
10104        LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
10105    },
10106    calendar: {
10107        sameDay: '[i teie mahana, i] LT',
10108        nextDay: '[apopo i] LT',
10109        nextWeek: 'dddd [i] LT',
10110        lastDay: '[inanahi i] LT',
10111        lastWeek: 'dddd [whakamutunga i] LT',
10112        sameElse: 'L'
10113    },
10114    relativeTime: {
10115        future: 'i roto i %s',
10116        past: '%s i mua',
10117        s: 'te hēkona ruarua',
10118        m: 'he meneti',
10119        mm: '%d meneti',
10120        h: 'te haora',
10121        hh: '%d haora',
10122        d: 'he ra',
10123        dd: '%d ra',
10124        M: 'he marama',
10125        MM: '%d marama',
10126        y: 'he tau',
10127        yy: '%d tau'
10128    },
10129    dayOfMonthOrdinalParse: /\d{1,2}º/,
10130    ordinal: '%dº',
10131    week : {
10132        dow : 1, // Monday is the first day of the week.
10133        doy : 4  // The week that contains Jan 4th is the first week of the year.
10134    }
10135});
10136
10137//! moment.js locale configuration
10138//! locale : Macedonian [mk]
10139//! author : Borislav Mickov : https://github.com/B0k0
10140
10141hooks.defineLocale('mk', {
10142    months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
10143    monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
10144    weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
10145    weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
10146    weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
10147    longDateFormat : {
10148        LT : 'H:mm',
10149        LTS : 'H:mm:ss',
10150        L : 'D.MM.YYYY',
10151        LL : 'D MMMM YYYY',
10152        LLL : 'D MMMM YYYY H:mm',
10153        LLLL : 'dddd, D MMMM YYYY H:mm'
10154    },
10155    calendar : {
10156        sameDay : '[Денес во] LT',
10157        nextDay : '[Утре во] LT',
10158        nextWeek : '[Во] dddd [во] LT',
10159        lastDay : '[Вчера во] LT',
10160        lastWeek : function () {
10161            switch (this.day()) {
10162                case 0:
10163                case 3:
10164                case 6:
10165                    return '[Изминатата] dddd [во] LT';
10166                case 1:
10167                case 2:
10168                case 4:
10169                case 5:
10170                    return '[Изминатиот] dddd [во] LT';
10171            }
10172        },
10173        sameElse : 'L'
10174    },
10175    relativeTime : {
10176        future : 'после %s',
10177        past : 'пред %s',
10178        s : 'неколку секунди',
10179        m : 'минута',
10180        mm : '%d минути',
10181        h : 'час',
10182        hh : '%d часа',
10183        d : 'ден',
10184        dd : '%d дена',
10185        M : 'месец',
10186        MM : '%d месеци',
10187        y : 'година',
10188        yy : '%d години'
10189    },
10190    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
10191    ordinal : function (number) {
10192        var lastDigit = number % 10,
10193            last2Digits = number % 100;
10194        if (number === 0) {
10195            return number + '-ев';
10196        } else if (last2Digits === 0) {
10197            return number + '-ен';
10198        } else if (last2Digits > 10 && last2Digits < 20) {
10199            return number + '-ти';
10200        } else if (lastDigit === 1) {
10201            return number + '-ви';
10202        } else if (lastDigit === 2) {
10203            return number + '-ри';
10204        } else if (lastDigit === 7 || lastDigit === 8) {
10205            return number + '-ми';
10206        } else {
10207            return number + '-ти';
10208        }
10209    },
10210    week : {
10211        dow : 1, // Monday is the first day of the week.
10212        doy : 7  // The week that contains Jan 1st is the first week of the year.
10213    }
10214});
10215
10216//! moment.js locale configuration
10217//! locale : Malayalam [ml]
10218//! author : Floyd Pink : https://github.com/floydpink
10219
10220hooks.defineLocale('ml', {
10221    months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ചà
10221µ_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
10222    monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
10223    monthsParseExact : true,
10224    weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
10225    weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
10226    weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
10227    longDateFormat : {
10228        LT : 'A h:mm -നു',
10229        LTS : 'A h:mm:ss -നു',
10230        L : 'DD/MM/YYYY',
10231        LL : 'D MMMM YYYY',
10232        LLL : 'D MMMM YYYY, A h:mm -നു',
10233        LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
10234    },
10235    calendar : {
10236        sameDay : '[ഇന്ന്] LT',
10237        nextDay : '[നാളെ] LT',
10238        nextWeek : 'dddd, LT',
10239        lastDay : '[ഇന്നലെ] LT',
10240        lastWeek : '[കഴിഞ്ഞ] dddd, LT',
10241        sameElse : 'L'
10242    },
10243    relativeTime : {
10244        future : '%s കഴിഞ്ഞ്',
10245        past : '%s മുൻപ്',
10246        s : 'അൽപ നിമിഷങ്ങൾ',
10247        m : 'ഒരു മിനിറ്റ്',
10248        mm : '%d മിനിറ്റ്',
10249        h : 'ഒരു മണിക്കൂർ',
10250        hh : '%d മണിക്കൂർ',
10251        d : 'ഒരു ദിവസം',
10252        dd : '%d ദിവസം',
10253        M : 'ഒരു മാസം',
10254        MM : '%d മാസം',
10255        y : 'ഒരു വർഷം',
10256        yy : '%d വർഷം'
10257    },
10258    meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
10259    meridiemHour : function (hour, meridiem) {
10260        if (hour === 12) {
10261            hour = 0;
10262        }
10263        if ((meridiem === 'രാത്രി' && hour >= 4) ||
10264                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
10265                meridiem === 'വൈകുന്നേരം') {
10266            return hour + 12;
10267        } else {
10268            return hour;
10269        }
10270    },
10271    meridiem : function (hour, minute, isLower) {
10272        if (hour < 4) {
10273            return 'രാത്രി';
10274        } else if (hour < 12) {
10275            return 'രാവിലെ';
10276        } else if (hour < 17) {
10277            return 'ഉച്ച കഴിഞ്ഞ്';
10278        } else if (hour < 20) {
10279            return 'വൈകുന്നേരം';
10280        } else {
10281            return 'രാത്രി';
10282        }
10283    }
10284});
10285
10286//! moment.js locale configuration
10287//! locale : Marathi [mr]
10288//! author : Harshad Kale : https://github.com/kalehv
10289//! author : Vivek Athalye : https://github.com/vnathalye
10290
10291var symbolMap$9 = {
10292    '1': '१',
10293    '2': '२',
10294    '3': '३',
10295    '4': '४',
10296    '5': '५',
10297    '6': '६',
10298    '7': '७',
10299    '8': '८',
10300    '9': '९',
10301    '0': '०'
10302};
10303var numberMap$8 = {
10304    '१': '1',
10305    '२': '2',
10306    '३': '3',
10307    '४': '4',
10308    '५': '5',
10309    '६': '6',
10310    '७': '7',
10311    '८': '8',
10312    '९': '9',
10313    '०': '0'
10314};
10315
10316function relativeTimeMr(number, withoutSuffix, string, isFuture)
10317{
10318    var output = '';
10319    if (withoutSuffix) {
10320        switch (string) {
10321            case 's': output = 'काही सेकंद'; break;
10322            case 'm': output = 'एक मिनिट'; break;
10323            case 'mm': output = '%d मिनिटे'; break;
10324            case 'h': output = 'एक तास'; break;
10325            case 'hh': output = '%d तास'; break;
10326            case 'd': output = 'एक दिवस'; break;
10327            case 'dd': output = '%d दिवस'; break;
10328            case 'M': output = 'एक महिना'; break;
10329            case 'MM': output = '%d महिने'; break;
10330            case 'y': output = 'एक वर्ष'; break;
10331            case 'yy': output = '%d वर्षे'; break;
10332        }
10333    }
10334    else {
10335        switch (string) {
10336            case 's': output = 'काही सेकंदाà
vendor: 6,118 bytes, lines 10336-10496
10336¤‚'; break;
10337            case 'm': output = 'एका मिनिटा'; break;
10338            case 'mm': output = '%d मिनिटां'; break;
10339            case 'h': output = 'एका तासा'; break;
10340            case 'hh': output = '%d तासां'; break;
10341            case 'd': output = 'एका दिवसा'; break;
10342            case 'dd': output = '%d दिवसां'; break;
10343            case 'M': output = 'एका महिन्या'; break;
10344            case 'MM': output = '%d महिन्यां'; break;
10345            case 'y': output = 'एका वर्षा'; break;
10346            case 'yy': output = '%d वर्षां'; break;
10347        }
10348    }
10349    return output.replace(/%d/i, number);
10350}
10351
10352hooks.defineLocale('mr', {
10353    months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
10354    monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
10355    monthsParseExact : true,
10356    weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10357    weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
10358    weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
10359    longDateFormat : {
10360        LT : 'A h:mm वाजता',
10361        LTS : 'A h:mm:ss वाजता',
10362        L : 'DD/MM/YYYY',
10363        LL : 'D MMMM YYYY',
10364        LLL : 'D MMMM YYYY, A h:mm वाजता',
10365        LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
10366    },
10367    calendar : {
10368        sameDay : '[आज] LT',
10369        nextDay : '[उद्या] LT',
10370        nextWeek : 'dddd, LT',
10371        lastDay : '[काल] LT',
10372        lastWeek: '[मागील] dddd, LT',
10373        sameElse : 'L'
10374    },
10375    relativeTime : {
10376        future: '%sमध्ये',
10377        past: '%sपूर्वी',
10378        s: relativeTimeMr,
10379        m: relativeTimeMr,
10380        mm: relativeTimeMr,
10381        h: relativeTimeMr,
10382        hh: relativeTimeMr,
10383        d: relativeTimeMr,
10384        dd: relativeTimeMr,
10385        M: relativeTimeMr,
10386        MM: relativeTimeMr,
10387        y: relativeTimeMr,
10388        yy: relativeTimeMr
10389    },
10390    preparse: function (string) {
10391        return string.replace(/[१२३४५६७८९०]/g, function (match) {
10392            return numberMap$8[match];
10393        });
10394    },
10395    postformat: function (string) {
10396        return string.replace(/\d/g, function (match) {
10397            return symbolMap$9[match];
10398        });
10399    },
10400    meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
10401    meridiemHour : function (hour, meridiem) {
10402        if (hour === 12) {
10403            hour = 0;
10404        }
10405        if (meridiem === 'रात्री') {
10406            return hour < 4 ? hour : hour + 12;
10407        } else if (meridiem === 'सकाळी') {
10408            return hour;
10409        } else if (meridiem === 'दुपारी') {
10410            return hour >= 10 ? hour : hour + 12;
10411        } else if (meridiem === 'सायंकाळी') {
10412            return hour + 12;
10413        }
10414    },
10415    meridiem: function (hour, minute, isLower) {
10416        if (hour < 4) {
10417            return 'रात्री';
10418        } else if (hour < 10) {
10419            return 'सकाळी';
10420        } else if (hour < 17) {
10421            return 'दुपारी';
10422        } else if (hour < 20) {
10423            return 'सायंकाळी';
10424        } else {
10425            return 'रात्री';
10426        }
10427    },
10428    week : {
10429        dow : 0, // Sunday is the first day of the week.
10430        doy : 6  // The week that contains Jan 1st is the first week of the year.
10431    }
10432});
10433
10434//! moment.js locale configuration
10435//! locale : Malay [ms-my]
10436//! note : DEPRECATED, the correct one is [ms]
10437//! author : Weldan Jamili : https://github.com/weldan
10438
10439hooks.defineLocale('ms-my', {
10440    months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10441    monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10442    weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10443    weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10444    weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10445    longDateFormat : {
10446        LT : 'HH.mm',
10447        LTS : 'HH.mm.ss',
10448        L : 'DD/MM/YYYY',
10449        LL : 'D MMMM YYYY',
10450        LLL : 'D MMMM YYYY [pukul] HH.mm',
10451        LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10452    },
10453    meridiemParse: /pagi|tengahari|petang|malam/,
10454    meridiemHour: function (hour, meridiem) {
10455        if (hour === 12) {
10456            hour = 0;
10457        }
10458        if (meridiem === 'pagi') {
10459            return hour;
10460        } else if (meridiem === 'tengahari') {
10461            return hour >= 11 ? hour : hour + 12;
10462        } else if (meridiem === 'petang' || meridiem === 'malam') {
10463            return hour + 12;
10464        }
10465    },
10466    meridiem : function (hours, minutes, isLower) {
10467        if (hours < 11) {
10468            return 'pagi';
10469        } else if (hours < 15) {
10470            return 'tengahari';
10471        } else if (hours < 19) {
10472            return 'petang';
10473        } else {
10474            return 'malam';
10475        }
10476    },
10477    calendar : {
10478        sameDay : '[Hari ini pukul] LT',
10479        nextDay : '[Esok pukul] LT',
10480        nextWeek : 'dddd [pukul] LT',
10481        lastDay : '[Kelmarin pukul] LT',
10482        lastWeek : 'dddd [lepas pukul] LT',
10483        sameElse : 'L'
10484    },
10485    relativeTime : {
10486        future : 'dalam %s',
10487        past : '%s yang lepas',
10488        s : 'beberapa saat',
10489        m : 'seminit',
10490        mm : '%d minit',
10491        h : 'sejam',
10492        hh : '%d jam',
10493        d : 'sehari',
10494        dd : '%d hari',
10495        M : 'sebulan',
10496        MM : '%d bulan',
10497        y : 'setahun',
10498        yy : '%d tahun'
10499    },
10500    week : {
10501        dow : 1, // Monday is the first day of the week.
10502        doy : 7  // The week that contains Jan 1st is the first week of the year.
10503    }
10504});
10505
10506//! moment.js locale configuration
10507//! locale : Malay [ms]
10508//! author : Weldan Jamili : https://github.com/weldan
10509
10510hooks.defineLocale('ms', {
10511    months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10512    monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10513    weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10514    weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10515    weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10516    longDateFormat : {
10517        LT : 'HH.mm',
10518        LTS : 'HH.mm.ss',
10519        L : 'DD/MM/YYYY',
10520        LL : 'D MMMM YYYY',
10521        LLL : 'D MMMM YYYY [pukul] HH.mm',
10522        LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10523    },
10524    meridiemParse: /pagi|tengahari|petang|malam/,
10525    meridiemHour: function (hour, meridiem) {
10526        if (hour === 12) {
10527            hour = 0;
10528        }
10529        if (meridiem === 'pagi') {
10530            return hour;
10531        } else if (meridiem === 'tengahari') {
10532            return hour >= 11 ? hour : hour + 12;
10533        } else if (meridiem === 'petang' || meridiem === 'malam') {
10534            return hour + 12;
10535        }
10536    },
10537    meridiem : function (hours, minutes, isLower) {
10538        if (hours < 11) {
10539            return 'pagi';
10540        } else if (hours < 15) {
10541            return 'tengahari';
10542        } else if (hours < 19) {
10543            return 'petang';
10544        } else {
10545            return 'malam';
10546        }
10547    },
10548    calendar : {
10549        sameDay : '[Hari ini pukul] LT',
10550        nextDay : '[Esok pukul] LT',
10551        nextWeek : 'dddd [pukul] LT',
10552        lastDay : '[Kelmarin pukul] LT',
10553        lastWeek : 'dddd [lepas pukul] LT',
10554        sameElse : 'L'
10555    },
10556    relativeTime : {
10557        future : 'dalam %s',
10558        past : '%s yang lepas',
10559        s : 'beberapa saat',
10560        m : 'seminit',
10561        mm : '%d minit',
10562        h : 'sejam',
10563        hh : '%d jam',
10564        d : 'sehari',
10565        dd : '%d hari',
10566        M : 'sebulan',
10567        MM : '%d bulan',
10568        y : 'setahun',
10569        yy : '%d tahun'
10570    },
10571    week : {
10572        dow : 1, // Monday is the first day of the week.
10573        doy : 7  // The week that contains Jan 1st is the first week of the year.
10574    }
10575});
10576
10577//! moment.js locale configuration
10578//! locale : Burmese [my]
10579//! author : Squar team, mysquar.com
10580//! author : David Rossellat : https://github.com/gholadr
10581//! author : Tin Aung Lin : https://github.com/thanyawzinmin
10582
10583var symbolMap$10 = {
10584    '1': '၁',
10585    '2': '၂',
10586    '3': '၃',
10587    '4': '၄',
10588    '5': '၅',
10589    '6': '၆',
10590    '7': '၇',
10591    '8': '၈',
10592    '9': '၉',
10593    '0': '၀'
10594};
10595var numberMap$9 = {
10596    '၁': '1',
10597    '၂': '2',
10598    '၃': '3',
10599    '၄': '4',
10600    '၅': '5',
10601    '၆': '6',
10602    '၇': '7',
10603    '၈': '8',
10604    '၉': '9',
10605    '၀': '0'
10606};
10607
10608hooks.defineLocale('my', {
10609    months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
10610    monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
10611    weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
10612    weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10613    weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10614
10615    longDateFormat: {
10616        LT: 'HH:mm',
10617        LTS: 'HH:mm:ss',
10618        L: 'DD/MM/YYYY',
10619        LL: 'D MMMM YYYY',
10620        LLL: 'D MMMM YYYY HH:mm',
10621        LLLL: 'dddd D MMMM YYYY HH:mm'
10622    },
10623    calendar: {
10624        sameDay: '[ယနေ.] LT [မှာ]',
10625        nextDay: '[မနက်ဖြန်] LT [မှာ]',
10626        nextWeek: 'dddd LT [မှာ]',
10627        lastDay: '[မနေ.က] LT [မှာ]',
10628        lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
10629        sameElse: 'L'
10630    },
10631    relativeTime: {
10632        future: 'လာမည့် %s မှာ',
10633        past: 'လွန်ခဲ့သော %s က',
10634        s: 'စက္ကန်.အနည်းငယ်',
10635        m: 'တစ်မိနစ်',
10636        mm: '%d မိနစ်',
10637        h: 'တစ်နာရီ',
10638        hh: '%d နာရီ',
10639        d: 'တစ်ရက်',
10640        dd: '%d ရက်',
10641        M: 'တစ်လ',
10642        MM: '%d လ',
10643        y: 'တစ်နှစ်',
10644        yy: '%d နှစ်'
10645    },
10646    preparse: function (string) {
10647        return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
10648            return numberMap$9[match];
10649        });
10650    },
10651    postformat: function (string) {
10652        return string.replace(/\d/g, function (match) {
10653            return symbolMap$10[match];
10654        });
10655    },
10656    week: {
10657        dow: 1, // Monday is the first day of the week.
10658        doy: 4 // The week that contains Jan 1st is the first week of the year.
10659    }
10660});
10661
10662//! moment.js locale configuration
10663//! locale : Norwegian Bokmål [nb]
10664//! authors : Espen Hovlandsdal : https://github.com/rexxars
10665//!           Sigurd Gartmann : https://github.com/sigurdga
10666
10667hooks.defineLocale('nb', {
10668    months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
10669    monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
10670    monthsParseExact : true,
10671    weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
10672    weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
10673    weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
10674    weekdaysParseExact : true,
10675    longDateFormat : {
10676        LT : 'HH:mm',
10677        LTS : 'HH:mm:ss',
10678        L : 'DD.MM.YYYY',
10679        LL : 'D. MMMM YYYY',
10680        LLL : 'D. MMMM YYYY [kl.] HH:mm',
10681        LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
10682    },
10683    calendar : {
10684        sameDay: '[i dag kl.] LT',
10685        nextDay: '[i morgen kl.] LT',
10686        nextWeek: 'dddd [kl.] LT',
10687        lastDay: '[i går kl.] LT',
10688        lastWeek: '[forrige] dddd [kl.] LT',
10689        sameElse: 'L'
10690    },
10691    relativeTime : {
10692        future : 'om %s',
10693        past : '%s siden',
10694        s : 'noen sekunder',
10695        m : 'ett minutt',
10696        mm : '%d minutter',
10697        h : 'en time',
10698        hh : '%d timer',
10699        d : 'en dag',
10700        dd : '%d dager',
10701        M : 'en måned',
10702        MM : '%d måneder',
10703        y : 'ett år',
10704        yy : '%d år'
10705    },
10706    dayOfMonthOrdinalParse: /\d{1,2}\./,
10707    ordinal : '%d.',
10708    week : {
10709        dow : 1, // Monday is the first day of the week.
10710        doy : 4  // The week that contains Jan 4th is the first week of the year.
10711    }
10712});
10713
10714//! moment.js locale configuration
10715//! locale : Nepalese [ne]
10716//! author : suvash : https://github.com/suvash
10717
10718var symbolMap$11 = {
10719    '1': '१',
10720    '2': '२',
10721    '3': '३',
10722    '4': '४',
10723    '5': '५',
10724    '6': '६',
10725    '7': '७',
10726    '8': '८',
10727    '9': '९',
10728    '0': '०'
10729};
10730var numberMap$10 = {
10731    '१': '1',
10732    '२': '2',
10733    '३': '3',
10734    '४': '4',
10735    '५': '5',
10736    '६': '6',
10737    '७': '7',
10738    '८': '8',
10739    '९': '9',
10740    '०': '0'
10741};
10742
10743hooks.defineLocale('ne', {
10744    months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
10745    monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
10746    monthsParseExact : true,
10747    weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
10748    weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
10749    weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
10750    weekdaysParseExact : true,
10751    longDateFormat : {
10752        LT : 'Aको h:mm बजे',
10753        LTS : 'Aको h:mm:ss बजे',
10754        L : 'DD/MM/YYYY',
10755        LL : 'D MMMM YYYY',
10756        LLL : 'D MMMM YYYY, Aको h:mm बजे',
10757        LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
10758    },
10759    preparse: function (string) {
10760        return string.replace(/[१२३४५६७८९०]/g, function (match) {
10761            return numberMap$10[match];
10762        });
10763    },
10764    postformat: function (string) {
10765        return string.replace(/\d/g, function (match) {
10766            return symbolMap$11[match];
10767        });
10768    },
10769    meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
10770    meridiemHour : function (hour, meridiem) {
10771        if (hour === 12) {
10772            hour = 0;
10773        }
10774        if (meridiem === 'राति') {
10775            return hour < 4 ? hour : hour + 12;
10776        } else if (meridiem === 'बिहान') {
10777            return hour;
10778        } else if (meridiem === 'दिउँसो') {
10779            return hour >= 10 ? hour : hour + 12;
10780        } else if (meridiem === 'साँझ') {
10781            return hour + 12;
10782        }
10783    },
10784    meridiem : function (hour, minute, isLower) {
10785        if (hour < 3) {
10786            return 'राति';
10787        } else if (hour < 12) {
10788            return 'बिहान';
10789        } else if (hour < 16) {
10790            return 'दिउँसो';
10791        } else if (hour < 20) {
10792            return 'साँझ';
10793        } else {
10794            return 'राति';
10795        }
10796    },
10797    calendar : {
10798        sameDay : '[आज] LT',
10799        nextDay : '[भोलि] LT',
10800        nextWeek : '[आउँदो] dddd[,] LT',
10801        lastDay : '[हिजो] LT',
10802        lastWeek : '[गएको] dddd[,] LT',
10803        sameElse : 'L'
10804    },
10805    relativeTime : {
10806        future : '%sमा',
10807        past : '%s अगाडि',
10808        s : 'केही क्षण',
10809        m : 'एक मिनेट',
10810        mm : '%d मिनेट',
10811        h : 'एक घण्टा',
10812        hh : '%d घण्टा',
10813        d : 'एक दिन',
10814        dd : '%d दिन',
10815        M : 'एक महिना',
10816        MM : '%d महिना',
10817        y : 'एक बर्ष',
10818        yy : '%d बर्ष'
10819    },
10820    week : {
10821        dow : 0, // Sunday is the first day of the week.
10822        doy : 6  // The week that contains Jan 1st is the first week of the year.
10823    }
10824});
10825
10826//! moment.js locale configuration
10827//! locale : Dutch (Belgium) [nl-be]
10828//! author : Joris Röling : https://github.com/jorisroling
10829//! author : Jacob Middag : https://github.com/middagj
10830
10831var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
10832var monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
10833
10834var monthsParse$2 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
10835var monthsRegex$3 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
10836
10837hooks.defineLocale('nl-be', {
10838    months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
10839    monthsShort : function (m, format) {
10840        if (!m) {
10841            return monthsShortWithDots$1;
10842        } else if (/-MMM-/.test(format)) {
10843            return monthsShortWithoutDots$1[m.month()];
10844        } else {
10845            return monthsShortWithDots$1[m.month()];
10846        }
10847    },
10848
10849    monthsRegex: monthsRegex$3,
10850    monthsShortRegex: monthsRegex$3,
10851    monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
10852    monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
10853
10854    monthsParse : monthsParse$2,
10855    longMonthsParse : monthsParse$2,
10856    shortMonthsParse : monthsParse$2,
10857
10858    weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
10859    weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
10860    weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
10861    weekdaysParseExact : true,
10862    longDateFormat : {
10863        LT : 'HH:mm',
10864        LTS : 'HH:mm:ss',
10865        L : 'DD/MM/YYYY',
10866        LL : 'D MMMM YYYY',
10867        LLL : 'D MMMM YYYY HH:mm',
10868        LLLL : 'dddd D MMMM YYYY HH:mm'
10869    },
10870    calendar : {
10871        sameDay: '[vandaag om] LT',
10872        nextDay: '[morgen om] LT',
10873        nextWeek: 'dddd [om] LT',
10874        lastDay: '[gisteren om] LT',
10875        lastWeek: '[afgelopen] dddd [om] LT',
10876        sameElse: 'L'
10877    },
10878    relativeTime : {
10879        future : 'over %s',
10880        past : '%s geleden',
10881        s : 'een paar seconden',
10882        m : 'één minuut',
10883        mm : '%d minuten',
10884        h : 'één uur',
10885        hh : '%d uur',
10886        d : 'één dag',
10887        dd : '%d dagen',
10888        M : 'één maand',
10889        MM : '%d maanden',
10890        y : 'één jaar',
10891        yy : '%d jaar'
10892    },
10893    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
10894    ordinal : function (number) {
10895        return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10896    },
10897    week : {
10898        dow : 1, // Monday is the first day of the week.
10899        doy : 4  // The week that contains Jan 4th is the first week of the year.
10900    }
10901});
10902
10903//! moment.js locale configuration
10904//! locale : Dutch [nl]
10905//! author : Joris Röling : https://github.com/jorisroling
10906//! author : Jacob Middag : https://github.com/middagj
10907
10908var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
10909var monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
10910
10911var monthsParse$3 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
10912var monthsRegex$4 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
10913
10914hooks.defineLocale('nl', {
10915    months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
10916    monthsShort : function (m, format) {
10917        if (!m) {
10918            return monthsShortWithDots$2;
10919        } else if (/-MMM-/.test(format)) {
10920            return monthsShortWithoutDots$2[m.month()];
10921        } else {
10922            return monthsShortWithDots$2[m.month()];
10923        }
10924    },
10925
10926    monthsRegex: monthsRegex$4,
10927    monthsShortRegex: monthsRegex$4,
10928    monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
10929    monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
10930
10931    monthsParse : monthsParse$3,
10932    longMonthsParse : monthsParse$3,
10933    shortMonthsParse : monthsParse$3,
10934
10935    weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
10936    weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
10937    weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
10938    weekdaysParseExact : true,
10939    longDateFormat : {
10940        LT : 'HH:mm',
10941        LTS : 'HH:mm:ss',
10942        L : 'DD-MM-YYYY',
10943        LL : 'D MMMM YYYY',
10944        LLL : 'D MMMM YYYY HH:mm',
10945        LLLL : 'dddd D MMMM YYYY HH:mm'
10946    },
10947    calendar : {
10948        sameDay: '[vandaag om] LT',
10949        nextDay: '[morgen om] LT',
10950        nextWeek: 'dddd [om] LT',
10951        lastDay: '[gisteren om] LT',
10952        lastWeek: '[afgelopen] dddd [om] LT',
10953        sameElse: 'L'
10954    },
10955    relativeTime : {
10956        future : 'over %s',
10957        past : '%s geleden',
10958        s : 'een paar seconden',
10959        m : 'één minuut',
10960        mm : '%d minuten',
10961        h : 'één uur',
10962        hh : '%d uur',
10963        d : 'één dag',
10964        dd : '%d dagen',
10965        M : 'één maand',
10966        MM : '%d maanden',
10967        y : 'één jaar',
10968        yy : '%d jaar'
10969    },
10970    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
10971    ordinal : function (number) {
10972        return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10973    },
10974    week : {
10975        dow : 1, // Monday is the first day of the week.
10976        doy : 4  // The week that contains Jan 4th is the first week of the year.
10977    }
10978});
10979
10980//! moment.js locale configuration
10981//! locale : Nynorsk [nn]
10982//! author : https://github.com/mechuwind
10983
10984hooks.defineLocale('nn', {
10985    months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
10986    monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
10987    weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
10988    weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
10989    weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
10990    longDateFormat : {
10991        LT : 'HH:mm',
10992        LTS : 'HH:mm:ss',
10993        L : 'DD.MM.YYYY',
10994        LL : 'D. MMMM YYYY',
10995        LLL : 'D. MMMM YYYY [kl.] H:mm',
10996        LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
10997    },
10998    calendar : {
10999        sameDay: '[I dag klokka] LT',
11000        nextDay: '[I morgon klokka] LT',
11001        nextWeek: 'dddd [klokka] LT',
11002        lastDay: '[I går klokka] LT',
11003        lastWeek: '[Føregåande] dddd [klokka] LT',
11004        sameElse: 'L'
11005    },
11006    relativeTime : {
11007        future : 'om %s',
11008        past : '%s sidan',
11009        s : 'nokre sekund',
11010        m : 'eit minutt',
11011        mm : '%d minutt',
11012        h : 'ein time',
11013        hh : '%d timar',
11014        d : 'ein dag',
11015        dd : '%d dagar',
11016        M : 'ein månad',
11017        MM : '%d månader',
11018        y : 'eit år',
11019        yy : '%d år'
11020    },
11021    dayOfMonthOrdinalParse: /\d{1,2}\./,
11022    ordinal : '%d.',
11023    week : {
11024        dow : 1, // Monday is the first day of the week.
11025        doy : 4  // The week that contains Jan 4th is the first week of the year.
11026    }
11027});
11028
11029//! moment.js locale configuration
11030//! locale : Punjabi (India) [pa-in]
11031//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
11032
11033var symbolMap$12 = {
11034    '1': 'à©§',
11035    '2': '੨',
11036    '3': 'à©©',
11037    '4': '੪',
11038    '5': 'à©«',
11039    '6': '੬',
11040    '7': 'à©­',
11041    '8': 'à©®',
11042    '9': '੯',
11043    '0': '੦'
11044};
11045var numberMap$11 = {
11046    'à©§': '1',
11047    '੨': '2',
11048    'à©©': '3',
11049    '੪': '4',
11050    'à©«': '5',
11051    '੬': '6',
11052    'à©­': '7',
11053    'à©®': '8',
11054    '੯': '9',
11055    '੦': '0'
11056};
11057
11058hooks.defineLocale('pa-in', {
11059    // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
11060    months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11061    monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11062    weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
11063    weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11064    weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11065    longDateFormat : {
11066        LT : 'A h:mm ਵਜੇ',
11067        LTS : 'A h:mm:ss ਵਜੇ',
11068        L : 'DD/MM/YYYY',
11069        LL : 'D MMMM YYYY',
11070        LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
11071        LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
11072    },
11073    calendar : {
11074        sameDay : '[ਅਜ] LT',
11075        nextDay : '[ਕਲ] LT',
11076        nextWeek : 'dddd, LT',
11077        lastDay : '[ਕਲ] LT',
11078        lastWeek : '[ਪਿਛਲੇ] dddd, LT',
11079        sameElse : 'L'
11080    },
11081    relativeTime : {
11082        future : '%s ਵਿੱਚ',
11083        past : '%s ਪਿਛਲੇ',
11084        s : 'ਕੁਝ ਸਕਿੰਟ',
11085        m : 'ਇਕ ਮਿੰਟ',
11086        mm : '%d ਮਿੰਟ',
11087        h : 'ਇੱਕ ਘੰਟਾ',
11088        hh : '%d ਘੰਟੇ',
11089        d : 'ਇੱਕ ਦਿਨ',
11090        dd : '%d ਦਿਨ',
11091        M : 'ਇੱਕ ਮਹੀਨਾ',
11092        MM : '%d ਮਹੀਨੇ',
11093        y : 'ਇੱਕ ਸਾਲ',
11094        yy : '%d ਸਾਲ'
11095    },
11096    preparse: function (string) {
11097        return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
11098            return numberMap$11[match];
11099        });
11100    },
11101    postformat: function (string) {
11102        return string.replace(/\d/g, function (match) {
11103            return symbolMap$12[match];
11104        });
11105    },
11106    // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
11107    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
11108    meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
11109    meridiemHour : function (hour, meridiem) {
11110        if (hour === 12) {
11111            hour = 0;
11112        }
11113        if (meridiem === 'ਰਾਤ') {
11114            return hour < 4 ? hour : hour + 12;
11115        } else if (meridiem === 'ਸਵੇਰ') {
11116            return hour;
11117        } else if (meridiem === 'ਦੁਪਹਿਰ') {
11118            return hour >= 10 ? hour : hour + 12;
11119        } else if (meridiem === 'ਸ਼ਾਮ') {
11120            return hour + 12;
11121        }
11122    },
11123    meridiem : function (hour, minute, isLower) {
11124        if (hour < 4) {
11125            return 'ਰਾਤ';
11126        } else if (hour < 10) {
11127            return 'ਸਵੇਰ';
11128        } else if (hour < 17) {
11129            return 'ਦੁਪਹਿਰ';
11130        } else if (hour < 20) {
11131            return 'ਸ਼ਾਮ';
11132        } else {
11133            return 'ਰਾਤ';
11134        }
11135    },
11136    week : {
11137        dow : 0, // Sunday is the first day of the week.
11138        doy : 6  // The week that contains Jan 1st is the first week of the year.
11139    }
11140});
11141
11142//! moment.js locale configuration
11143//! locale : Polish [pl]
11144//! author : Rafal Hirsz : https://github.com/evoL
11145
11146var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');
11147var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
11148function plural$3(n) {
11149    return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
11150}
11151function translate$7(number, withoutSuffix, key) {
11152    var result = number + ' ';
11153    switch (key) {
11154        case 'm':
11155            return withoutSuffix ? 'minuta' : 'minutę';
11156        case 'mm':
11157            return result + (plural$3(number) ? 'minuty' : 'minut');
11158        case 'h':
11159            return withoutSuffix  ? 'godzina'  : 'godzinę';
11160        case 'hh':
11161            return result + (plural$3(number) ? 'godziny' : 'godzin');
11162        case 'MM':
11163            return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
11164        case 'yy':
11165            return result + (plural$3(number) ? 'lata' : 'lat');
11166    }
11167}
11168
11169hooks.defineLocale('pl', {
11170    months : function (momentToFormat, format) {
11171        if (!momentToFormat) {
11172            return monthsNominative;
11173        } else if (format === '') {
11174            // Hack: if format empty we know this is used to generate
11175            // RegExp by moment. Give then back both valid forms of months
11176            // in RegExp ready format.
11177            return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
11178        } else if (/D MMMM/.test(format)) {
11179            return monthsSubjective[momentToFormat.month()];
11180        } else {
11181            return monthsNominative[momentToFormat.month()];
11182        }
11183    },
11184    monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
11185    weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
11186    weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
11187    weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
11188    longDateFormat : {
11189        LT : 'HH:mm',
11190        LTS : 'HH:mm:ss',
11191        L : 'DD.MM.YYYY',
11192        LL : 'D MMMM YYYY',
11193        LLL : 'D MMMM YYYY HH:mm',
11194        LLLL : 'dddd, D MMMM YYYY HH:mm'
11195    },
11196    calendar : {
11197        sameDay: '[Dziś o] LT',
11198        nextDay: '[Jutro o] LT',
11199        nextWeek: function () {
11200            switch (this.day()) {
11201                case 0:
11202                    return '[W niedzielę o] LT';
11203
11204                case 2:
11205                    return '[We wtorek o] LT';
11206
11207                case 3:
11208                    return '[W środę o] LT';
11209
11210                case 6:
11211                    return '[W sobotę o] LT';
11212
11213                default:
11214                    return '[W] dddd [o] LT';
11215            }
11216        },
11217        lastDay: '[Wczoraj o] LT',
11218        lastWeek: function () {
11219            switch (this.day()) {
11220                case 0:
11221                    return '[W zeszłą niedzielę o] LT';
11222                case 3:
11223                    return '[W zeszłą środę o] LT';
11224                case 6:
11225                    return '[W zeszłą sobotę o] LT';
11226                default:
11227                    return '[W zeszły] dddd [o] LT';
11228            }
11229        },
11230        sameElse: 'L'
11231    },
11232    relativeTime : {
11233        future : 'za %s',
11234        past : '%s temu',
11235        s : 'kilka sekund',
11236        m : translate$7,
11237        mm : translate$7,
11238        h : translate$7,
11239        hh : translate$7,
11240        d : '1 dzień',
11241        dd : '%d dni',
11242        M : 'miesiąc',
11243        MM : translate$7,
11244        y : 'rok',
11245        yy : translate$7
11246    },
11247    dayOfMonthOrdinalParse: /\d{1,2}\./,
11248    ordinal : '%d.',
11249    week : {
11250        dow : 1, // Monday is the first day of the week.
11251        doy : 4  // The week that contains Jan 4th is the first week of the year.
11252    }
11253});
11254
11255//! moment.js locale configuration
11256//! locale : Portuguese (Brazil) [pt-br]
11257//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
11258
11259hooks.defineLocale('pt-br', {
11260    months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
11261    monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
11262    weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11263    weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11264    weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11265    weekdaysParseExact : true,
11266    longDateFormat : {
11267        LT : 'HH:mm',
11268        LTS : 'HH:mm:ss',
11269        L : 'DD/MM/YYYY',
11270        LL : 'D [de] MMMM [de] YYYY',
11271        LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
11272        LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
11273    },
11274    calendar : {
11275        sameDay: '[Hoje às] LT',
11276        nextDay: '[Amanhã às] LT',
11277        nextWeek: 'dddd [às] LT',
11278        lastDay: '[Ontem às] LT',
11279        lastWeek: function () {
11280            return (this.day() === 0 || this.day() === 6) ?
11281                '[Último] dddd [às] LT' : // Saturday + Sunday
11282                '[Última] dddd [às] LT'; // Monday - Friday
11283        },
11284        sameElse: 'L'
11285    },
11286    relativeTime : {
11287        future : 'em %s',
11288        past : '%s atrás',
11289        s : 'poucos segundos',
11290        ss : '%d segundos',
11291        m : 'um minuto',
11292        mm : '%d minutos',
11293        h : 'uma hora',
11294        hh : '%d horas',
11295        d : 'um dia',
11296        dd : '%d dias',
11297        M : 'um mês',
11298        MM : '%d meses',
11299        y : 'um ano',
11300        yy : '%d anos'
11301    },
11302    dayOfMonthOrdinalParse: /\d{1,2}º/,
11303    ordinal : '%dº'
11304});
11305
11306//! moment.js locale configuration
11307//! locale : Portuguese [pt]
11308//! author : Jefferson : https://github.com/jalex79
11309
11310hooks.defineLocale('pt', {
11311    months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
11312    monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
11313    weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11314    weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11315    weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11316    weekdaysParseExact : true,
11317    longDateFormat : {
11318        LT : 'HH:mm',
11319        LTS : 'HH:mm:ss',
11320        L : 'DD/MM/YYYY',
11321        LL : 'D [de] MMMM [de] YYYY',
11322        LLL : 'D [de] MMMM [de] YYYY HH:mm',
11323        LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
11324    },
11325    calendar : {
11326        sameDay: '[Hoje às] LT',
11327        nextDay: '[Amanhã às] LT',
11328        nextWeek: 'dddd [às] LT',
11329        lastDay: '[Ontem às] LT',
11330        lastWeek: function () {
11331            return (this.day() === 0 || this.day() === 6) ?
11332                '[Último] dddd [às] LT' : // Saturday + Sunday
11333                '[Última] dddd [às] LT'; // Monday - Friday
11334        },
11335        sameElse: 'L'
11336    },
11337    relativeTime : {
11338        future : 'em %s',
11339        past : 'há %s',
11340        s : 'segundos',
11341        m : 'um minuto',
11342        mm : '%d minutos',
11343        h : 'uma hora',
11344        hh : '%d horas',
11345        d : 'um dia',
11346        dd : '%d dias',
11347        M : 'um mês',
11348        MM : '%d meses',
11349        y : 'um ano',
11350        yy : '%d anos'
11351    },
11352    dayOfMonthOrdinalParse: /\d{1,2}º/,
11353    ordinal : '%dº',
11354    week : {
11355        dow : 1, // Monday is the first day of the week.
11356        doy : 4  // The week that contains Jan 4th is the first week of the year.
11357    }
11358});
11359
11360//! moment.js locale configuration
11361//! locale : Romanian [ro]
11362//! author : Vlad Gurdiga : https://github.com/gurdiga
11363//! author : Valentin Agachi : https://github.com/avaly
11364
11365function relativeTimeWithPlural$2(number, withoutSuffix, key) {
11366    var format = {
11367            'mm': 'minute',
11368            'hh': 'ore',
11369            'dd': 'zile',
11370            'MM': 'luni',
11371            'yy': 'ani'
11372        },
11373        separator = ' ';
11374    if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
11375        separator = ' de ';
11376    }
11377    return number + separator + format[key];
11378}
11379
11380hooks.defineLocale('ro', {
11381    months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
11382    monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
11383    monthsParseExact: true,
11384    weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
11385    weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
11386    weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
11387    longDateFormat : {
11388        LT : 'H:mm',
11389        LTS : 'H:mm:ss',
11390        L : 'DD.MM.YYYY',
11391        LL : 'D MMMM YYYY',
11392        LLL : 'D MMMM YYYY H:mm',
11393        LLLL : 'dddd, D MMMM YYYY H:mm'
11394    },
11395    calendar : {
11396        sameDay: '[azi la] LT',
11397        nextDay: '[mâine la] LT',
11398        nextWeek: 'dddd [la] LT',
11399        lastDay: '[ieri la] LT',
11400        lastWeek: '[fosta] dddd [la] LT',
11401        sameElse: 'L'
11402    },
11403    relativeTime : {
11404        future : 'peste %s',
11405        past : '%s în urmă',
11406        s : 'câteva secunde',
11407        m : 'un minut',
11408        mm : relativeTimeWithPlural$2,
11409        h : 'o oră',
11410        hh : relativeTimeWithPlural$2,
11411        d : 'o zi',
11412        dd : relativeTimeWithPlural$2,
11413        M : 'o lună',
11414        MM : relativeTimeWithPlural$2,
11415        y : 'un an',
11416        yy : relativeTimeWithPlural$2
11417    },
11418    week : {
11419        dow : 1, // Monday is the first day of the week.
11420        doy : 7  // The week that contains Jan 1st is the first week of the year.
11421    }
11422});
11423
11424//! moment.js locale configuration
11425//! locale : Russian [ru]
11426//! author : Viktorminator : https://github.com/Viktorminator
11427//! Author : Menelion Elensúle : https://github.com/Oire
11428//! author : Коренберг Марк : https://github.com/socketpair
11429
11430function plural$4(word, num) {
11431    var forms = word.split('_');
11432    return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
11433}
11434function relativeTimeWithPlural$3(number, withoutSuffix, key) {
11435    var format = {
11436        'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
11437        'hh': 'час_часа_часов',
11438        'dd': 'день_дня_дней',
11439        'MM': 'месяц_месяца_месяцев',
11440        'yy': 'год_года_лет'
11441    };
11442    if (key === 'm') {
11443        return withoutSuffix ? 'минута' : 'минуту';
11444    }
11445    else {
vendor: 10,869 bytes, lines 11446-11736
11446        return number + ' ' + plural$4(format[key], +number);
11447    }
11448}
11449var monthsParse$4 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
11450
11451// http://new.gramota.ru/spravka/rules/139-prop : § 103
11452// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
11453// CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
11454hooks.defineLocale('ru', {
11455    months : {
11456        format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
11457        standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
11458    },
11459    monthsShort : {
11460        // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
11461        format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
11462        standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
11463    },
11464    weekdays : {
11465        standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
11466        format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
11467        isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
11468    },
11469    weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
11470    weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
11471    monthsParse : monthsParse$4,
11472    longMonthsParse : monthsParse$4,
11473    shortMonthsParse : monthsParse$4,
11474
11475    // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
11476    monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
11477
11478    // копия предыдущего
11479    monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
11480
11481    // полные названия с падежами
11482    monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
11483
11484    // Выражение, которое соотвествует только сокращённым формам
11485    monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
11486    longDateFormat : {
11487        LT : 'HH:mm',
11488        LTS : 'HH:mm:ss',
11489        L : 'DD.MM.YYYY',
11490        LL : 'D MMMM YYYY г.',
11491        LLL : 'D MMMM YYYY г., HH:mm',
11492        LLLL : 'dddd, D MMMM YYYY г., HH:mm'
11493    },
11494    calendar : {
11495        sameDay: '[Сегодня в] LT',
11496        nextDay: '[Завтра в] LT',
11497        lastDay: '[Вчера в] LT',
11498        nextWeek: function (now) {
11499            if (now.week() !== this.week()) {
11500                switch (this.day()) {
11501                    case 0:
11502                        return '[В следующее] dddd [в] LT';
11503                    case 1:
11504                    case 2:
11505                    case 4:
11506                        return '[В следующий] dddd [в] LT';
11507                    case 3:
11508                    case 5:
11509                    case 6:
11510                        return '[В следующую] dddd [в] LT';
11511                }
11512            } else {
11513                if (this.day() === 2) {
11514                    return '[Во] dddd [в] LT';
11515                } else {
11516                    return '[В] dddd [в] LT';
11517                }
11518            }
11519        },
11520        lastWeek: function (now) {
11521            if (now.week() !== this.week()) {
11522                switch (this.day()) {
11523                    case 0:
11524                        return '[В прошлое] dddd [в] LT';
11525                    case 1:
11526                    case 2:
11527                    case 4:
11528                        return '[В прошлый] dddd [в] LT';
11529                    case 3:
11530                    case 5:
11531                    case 6:
11532                        return '[В прошлую] dddd [в] LT';
11533                }
11534            } else {
11535                if (this.day() === 2) {
11536                    return '[Во] dddd [в] LT';
11537                } else {
11538                    return '[В] dddd [в] LT';
11539                }
11540            }
11541        },
11542        sameElse: 'L'
11543    },
11544    relativeTime : {
11545        future : 'через %s',
11546        past : '%s назад',
11547        s : 'несколько секунд',
11548        m : relativeTimeWithPlural$3,
11549        mm : relativeTimeWithPlural$3,
11550        h : 'час',
11551        hh : relativeTimeWithPlural$3,
11552        d : 'день',
11553        dd : relativeTimeWithPlural$3,
11554        M : 'месяц',
11555        MM : relativeTimeWithPlural$3,
11556        y : 'год',
11557        yy : relativeTimeWithPlural$3
11558    },
11559    meridiemParse: /ночи|утра|дня|вечера/i,
11560    isPM : function (input) {
11561        return /^(дня|вечера)$/.test(input);
11562    },
11563    meridiem : function (hour, minute, isLower) {
11564        if (hour < 4) {
11565            return 'ночи';
11566        } else if (hour < 12) {
11567            return 'утра';
11568        } else if (hour < 17) {
11569            return 'дня';
11570        } else {
11571            return 'вечера';
11572        }
11573    },
11574    dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
11575    ordinal: function (number, period) {
11576        switch (period) {
11577            case 'M':
11578            case 'd':
11579            case 'DDD':
11580                return number + '-й';
11581            case 'D':
11582                return number + '-го';
11583            case 'w':
11584            case 'W':
11585                return number + '-я';
11586            default:
11587                return number;
11588        }
11589    },
11590    week : {
11591        dow : 1, // Monday is the first day of the week.
11592        doy : 4  // The week that contains Jan 4th is the first week of the year.
11593    }
11594});
11595
11596//! moment.js locale configuration
11597//! locale : Sindhi [sd]
11598//! author : Narain Sagar : https://github.com/narainsagar
11599
11600var months$6 = [
11601    'جنوري',
11602    'فيبروري',
11603    'مارچ',
11604    'اپريل',
11605    'مئي',
11606    'جون',
11607    'جولاءِ',
11608    'آگسٽ',
11609    'سيپٽمبر',
11610    'آڪٽوبر',
11611    'نومبر',
11612    'ڊسمبر'
11613];
11614var days$1 = [
11615    'آچر',
11616    'سومر',
11617    'اڱارو',
11618    'اربع',
11619    'خميس',
11620    'جمع',
11621    'ڇنڇر'
11622];
11623
11624hooks.defineLocale('sd', {
11625    months : months$6,
11626    monthsShort : months$6,
11627    weekdays : days$1,
11628    weekdaysShort : days$1,
11629    weekdaysMin : days$1,
11630    longDateFormat : {
11631        LT : 'HH:mm',
11632        LTS : 'HH:mm:ss',
11633        L : 'DD/MM/YYYY',
11634        LL : 'D MMMM YYYY',
11635        LLL : 'D MMMM YYYY HH:mm',
11636        LLLL : 'dddd، D MMMM YYYY HH:mm'
11637    },
11638    meridiemParse: /صبح|شام/,
11639    isPM : function (input) {
11640        return 'شام' === input;
11641    },
11642    meridiem : function (hour, minute, isLower) {
11643        if (hour < 12) {
11644            return 'صبح';
11645        }
11646        return 'شام';
11647    },
11648    calendar : {
11649        sameDay : '[اڄ] LT',
11650        nextDay : '[سڀاڻي] LT',
11651        nextWeek : 'dddd [اڳين هفتي تي] LT',
11652        lastDay : '[ڪالهه] LT',
11653        lastWeek : '[گزريل هفتي] dddd [تي] LT',
11654        sameElse : 'L'
11655    },
11656    relativeTime : {
11657        future : '%s پوء',
11658        past : '%s اڳ',
11659        s : 'چند سيڪنڊ',
11660        m : 'هڪ منٽ',
11661        mm : '%d منٽ',
11662        h : 'هڪ ڪلاڪ',
11663        hh : '%d ڪلاڪ',
11664        d : 'هڪ ڏينهن',
11665        dd : '%d ڏينهن',
11666        M : 'هڪ مهينو',
11667        MM : '%d مهينا',
11668        y : 'هڪ سال',
11669        yy : '%d سال'
11670    },
11671    preparse: function (string) {
11672        return string.replace(/،/g, ',');
11673    },
11674    postformat: function (string) {
11675        return string.replace(/,/g, '،');
11676    },
11677    week : {
11678        dow : 1, // Monday is the first day of the week.
11679        doy : 4  // The week that contains Jan 4th is the first week of the year.
11680    }
11681});
11682
11683//! moment.js locale configuration
11684//! locale : Northern Sami [se]
11685//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
11686
11687
11688hooks.defineLocale('se', {
11689    months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
11690    monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
11691    weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
11692    weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
11693    weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
11694    longDateFormat : {
11695        LT : 'HH:mm',
11696        LTS : 'HH:mm:ss',
11697        L : 'DD.MM.YYYY',
11698        LL : 'MMMM D. [b.] YYYY',
11699        LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
11700        LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
11701    },
11702    calendar : {
11703        sameDay: '[otne ti] LT',
11704        nextDay: '[ihttin ti] LT',
11705        nextWeek: 'dddd [ti] LT',
11706        lastDay: '[ikte ti] LT',
11707        lastWeek: '[ovddit] dddd [ti] LT',
11708        sameElse: 'L'
11709    },
11710    relativeTime : {
11711        future : '%s geažes',
11712        past : 'maŋit %s',
11713        s : 'moadde sekunddat',
11714        m : 'okta minuhta',
11715        mm : '%d minuhtat',
11716        h : 'okta diimmu',
11717        hh : '%d diimmut',
11718        d : 'okta beaivi',
11719        dd : '%d beaivvit',
11720        M : 'okta mánnu',
11721        MM : '%d mánut',
11722        y : 'okta jahki',
11723        yy : '%d jagit'
11724    },
11725    dayOfMonthOrdinalParse: /\d{1,2}\./,
11726    ordinal : '%d.',
11727    week : {
11728        dow : 1, // Monday is the first day of the week.
11729        doy : 4  // The week that contains Jan 4th is the first week of the year.
11730    }
11731});
11732
11733//! moment.js locale configuration
11734//! locale : Sinhalese [si]
11735//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
11736
11737/*jshint -W100*/
11738hooks.defineLocale('si', {
11739    months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
11740    monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
11741    weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
11742    weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
11743    weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
11744    weekdaysParseExact : true,
11745    longDateFormat : {
11746        LT : 'a h:mm',
11747        LTS : 'a h:mm:ss',
11748        L : 'YYYY/MM/DD',
11749        LL : 'YYYY MMMM D',
11750        LLL : 'YYYY MMMM D, a h:mm',
11751        LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
11752    },
11753    calendar : {
11754        sameDay : '[අද] LT[ට]',
11755        nextDay : '[හෙට] LT[ට]',
11756        nextWeek : 'dddd LT[à¶§]',
11757        lastDay : '[ඊයේ] LT[ට]',
11758        lastWeek : '[පසුගිය] dddd LT[ට]',
11759        sameElse : 'L'
11760    },
11761    relativeTime : {
11762        future : '%sකින්',
11763        past : '%sකට පෙර',
11764        s : 'තත්පර කිහිපය',
11765        m : 'මිනිත්තුව',
11766        mm : 'මිනිත්තු %d',
11767        h : 'පැය',
11768        hh : 'පැය %d',
11769        d : 'දිනය',
11770        dd : 'දින %d',
11771        M : 'මාසය',
11772        MM : 'මාස %d',
11773        y : 'වසර',
11774        yy : 'වසර %d'
11775    },
11776    dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
11777    ordinal : function (number) {
11778        return number + ' වැනි';
11779    },
11780    meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
11781    isPM : function (input) {
11782        return input === 'ප.ව.' || input === 'පස් වරු';
11783    },
11784    meridiem : function (hours, minutes, isLower) {
11785        if (hours > 11) {
11786            return isLower ? 'ප.ව.' : 'පස් වරු';
11787        } else {
11788            return isLower ? 'පෙ.ව.' : 'පෙර වරු';
11789        }
11790    }
11791});
11792
11793//! moment.js locale configuration
11794//! locale : Slovak [sk]
11795//! author : Martin Minka : https://github.com/k2s
11796//! based on work of petrbela : https://github.com/petrbela
11797
11798var months$7 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');
11799var monthsShort$5 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
11800function plural$5(n) {
11801    return (n > 1) && (n < 5);
11802}
11803function translate$8(number, withoutSuffix, key, isFuture) {
11804    var result = number + ' ';
11805    switch (key) {
11806        case 's':  // a few seconds / in a few seconds / a few seconds ago
11807            return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
11808        case 'm':  // a minute / in a minute / a minute ago
11809            return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
11810        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
11811            if (withoutSuffix || isFuture) {
11812                return result + (plural$5(number) ? 'minúty' : 'minút');
11813            } else {
11814                return result + 'minútami';
11815            }
11816            break;
11817        case 'h':  // an hour / in an hour / an hour ago
11818            return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
11819        case 'hh': // 9 hours / in 9 hours / 9 hours ago
11820            if (withoutSuffix || isFuture) {
11821                return result + (plural$5(number) ? 'hodiny' : 'hodín');
11822            } else {
11823                return result + 'hodinami';
11824            }
11825            break;
11826        case 'd':  // a day / in a day / a day ago
11827            return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
11828        case 'dd': // 9 days / in 9 days / 9 days ago
11829            if (withoutSuffix || isFuture) {
11830                return result + (plural$5(number) ? 'dni' : 'dní');
11831            } else {
11832                return result + 'dňami';
11833            }
11834            break;
11835        case 'M':  // a month / in a month / a month ago
11836            return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
11837        case 'MM': // 9 months / in 9 months / 9 months ago
11838            if (withoutSuffix || isFuture) {
11839                return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
11840            } else {
11841                return result + 'mesiacmi';
11842            }
11843            break;
11844        case 'y':  // a year / in a year / a year ago
11845            return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
11846        case 'yy': // 9 years / in 9 years / 9 years ago
11847            if (withoutSuffix || isFuture) {
11848                return result + (plural$5(number) ? 'roky' : 'rokov');
11849            } else {
11850                return result + 'rokmi';
11851            }
11852            break;
11853    }
11854}
11855
11856hooks.defineLocale('sk', {
11857    months : months$7,
11858    monthsShort : monthsShort$5,
11859    weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
11860    weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
11861    weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
11862    longDateFormat : {
11863        LT: 'H:mm',
11864        LTS : 'H:mm:ss',
11865        L : 'DD.MM.YYYY',
11866        LL : 'D. MMMM YYYY',
11867        LLL : 'D. MMMM YYYY H:mm',
11868        LLLL : 'dddd D. MMMM YYYY H:mm'
11869    },
11870    calendar : {
11871        sameDay: '[dnes o] LT',
11872        nextDay: '[zajtra o] LT',
11873        nextWeek: function () {
11874            switch (this.day()) {
11875                case 0:
11876                    return '[v nedeľu o] LT';
11877                case 1:
11878                case 2:
11879                    return '[v] dddd [o] LT';
11880                case 3:
11881                    return '[v stredu o] LT';
11882                case 4:
11883                    return '[vo štvrtok o] LT';
11884                case 5:
11885                    return '[v piatok o] LT';
11886                case 6:
11887                    return '[v sobotu o] LT';
11888            }
11889        },
11890        lastDay: '[včera o] LT',
11891        lastWeek: function () {
11892            switch (this.day()) {
11893                case 0:
11894                    return '[minulú nedeľu o] LT';
11895                case 1:
11896                case 2:
11897                    return '[minulý] dddd [o] LT';
11898                case 3:
11899                    return '[minulú stredu o] LT';
11900                case 4:
11901                case 5:
11902                    return '[minulý] dddd [o] LT';
11903                case 6:
11904                    return '[minulú sobotu o] LT';
11905            }
11906        },
11907        sameElse: 'L'
11908    },
11909    relativeTime : {
11910        future : 'za %s',
11911        past : 'pred %s',
11912        s : translate$8,
11913        m : translate$8,
11914        mm : translate$8,
11915        h : translate$8,
11916        hh : translate$8,
11917        d : translate$8,
11918        dd : translate$8,
11919        M : translate$8,
11920        MM : translate$8,
11921        y : translate$8,
11922        yy : translate$8
11923    },
11924    dayOfMonthOrdinalParse: /\d{1,2}\./,
11925    ordinal : '%d.',
11926    week : {
11927        dow : 1, // Monday is the first day of the week.
11928        doy : 4  // The week that contains Jan 4th is the first week of the year.
11929    }
11930});
11931
11932//! moment.js locale configuration
11933//! locale : Slovenian [sl]
11934//! author : Robert Sedovšek : https://github.com/sedovsek
11935
11936function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
11937    var result = number + ' ';
11938    switch (key) {
11939        case 's':
11940            return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
11941        case 'm':
11942            return withoutSuffix ? 'ena minuta' : 'eno minuto';
11943        case 'mm':
11944            if (number === 1) {
11945                result += withoutSuffix ? 'minuta' : 'minuto';
11946            } else if (number === 2) {
11947                result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
11948            } else if (number < 5) {
11949                result += withoutSuffix || isFuture ? 'minute' : 'minutami';
11950            } else {
11951                result += withoutSuffix || isFuture ? 'minut' : 'minutami';
11952            }
11953            return result;
11954        case 'h':
11955            return withoutSuffix ? 'ena ura' : 'eno uro';
11956        case 'hh':
11957            if (number === 1) {
11958                result += withoutSuffix ? 'ura' : 'uro';
11959            } else if (number === 2) {
11960                result += withoutSuffix || isFuture ? 'uri' : 'urama';
11961            } else if (number < 5) {
11962                result += withoutSuffix || isFuture ? 'ure' : 'urami';
11963            } else {
11964                result += withoutSuffix || isFuture ? 'ur' : 'urami';
11965            }
11966            return result;
11967        case 'd':
11968            return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
11969        case 'dd':
11970            if (number === 1) {
11971                result += withoutSuffix || isFuture ? 'dan' : 'dnem';
11972            } else if (number === 2) {
11973                result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
11974            } else {
11975                result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
11976            }
11977            return result;
11978        case 'M':
11979            return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
11980        case 'MM':
11981            if (number === 1) {
11982                result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
11983            } else if (number === 2) {
11984                result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
11985            } else if (number < 5) {
11986                result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
11987            } else {
11988                result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
11989            }
11990            return result;
11991        case 'y':
11992            return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
11993        case 'yy':
11994            if (number === 1) {
11995                result += withoutSuffix || isFuture ? 'leto' : 'letom';
11996            } else if (number === 2) {
11997                result += withoutSuffix || isFuture ? 'leti' : 'letoma';
11998            } else if (number < 5) {
11999                result += withoutSuffix || isFuture ? 'leta' : 'leti';
12000            } else {
12001                result += withoutSuffix || isFuture ? 'let' : 'leti';
12002            }
12003            return result;
12004    }
12005}
12006
12007hooks.defineLocale('sl', {
12008    months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
12009    monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
12010    monthsParseExact: true,
12011    weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
12012    weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
12013    weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
12014    weekdaysParseExact : true,
12015    longDateFormat : {
12016        LT : 'H:mm',
12017        LTS : 'H:mm:ss',
12018        L : 'DD.MM.YYYY',
12019        LL : 'D. MMMM YYYY',
12020        LLL : 'D. MMMM YYYY H:mm',
12021        LLLL : 'dddd, D. MMMM YYYY H:mm'
12022    },
12023    calendar : {
12024        sameDay  : '[danes ob] LT',
12025        nextDay  : '[jutri ob] LT',
12026
12027        nextWeek : function () {
12028            switch (this.day()) {
12029                case 0:
12030                    return '[v] [nedeljo] [ob] LT';
12031                case 3:
12032                    return '[v] [sredo] [ob] LT';
12033                case 6:
12034                    return '[v] [soboto] [ob] LT';
12035                case 1:
12036                case 2:
12037                case 4:
12038                case 5:
12039                    return '[v] dddd [ob] LT';
12040            }
12041        },
12042        lastDay  : '[včeraj ob] LT',
12043        lastWeek : function () {
12044            switch (this.day()) {
12045                case 0:
12046                    return '[prejšnjo] [nedeljo] [ob] LT';
12047                case 3:
12048                    return '[prejšnjo] [sredo] [ob] LT';
12049                case 6:
12050                    return '[prejšnjo] [soboto] [ob] LT';
12051                case 1:
12052                case 2:
12053                case 4:
12054                case 5:
12055                    return '[prejšnji] dddd [ob] LT';
12056            }
12057        },
12058        sameElse : 'L'
12059    },
12060    relativeTime : {
12061        future : 'čez %s',
12062        past   : 'pred %s',
12063        s      : processRelativeTime$6,
12064        m      : processRelativeTime$6,
12065        mm     : processRelativeTime$6,
12066        h      : processRelativeTime$6,
12067        hh     : processRelativeTime$6,
12068        d      : processRelativeTime$6,
12069        dd     : processRelativeTime$6,
12070        M      : processRelativeTime$6,
12071        MM     : processRelativeTime$6,
12072        y      : processRelativeTime$6,
12073        yy     : processRelativeTime$6
12074    },
12075    dayOfMonthOrdinalParse: /\d{1,2}\./,
12076    ordinal : '%d.',
12077    week : {
12078        dow : 1, // Monday is the first day of the week.
12079        doy : 7  // The week that contains Jan 1st is the first week of the year.
12080    }
12081});
12082
12083//! moment.js locale configuration
12084//! locale : Albanian [sq]
12085//! author : Flakërim Ismani : https://github.com/flakerimi
12086//! author : Menelion Elensúle : https://github.com/Oire
12087//! author : Oerd Cukalla : https://github.com/oerd
12088
12089hooks.defineLocale('sq', {
12090    months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
12091    monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
12092    weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
12093    weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
12094    weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
12095    weekdaysParseExact : true,
12096    meridiemParse: /PD|MD/,
12097    isPM: function (input) {
12098        return input.charAt(0) === 'M';
12099    },
12100    meridiem : function (hours, minutes, isLower) {
12101        return hours < 12 ? 'PD' : 'MD';
12102    },
12103    longDateFormat : {
12104        LT : 'HH:mm',
12105        LTS : 'HH:mm:ss',
12106        L : 'DD/MM/YYYY',
12107        LL : 'D MMMM YYYY',
12108        LLL : 'D MMMM YYYY HH:mm',
12109        LLLL : 'dddd, D MMMM YYYY HH:mm'
12110    },
12111    calendar : {
12112        sameDay : '[Sot në] LT',
12113        nextDay : '[Nesër në] LT',
12114        nextWeek : 'dddd [në] LT',
12115        lastDay : '[Dje në] LT',
12116        lastWeek : 'dddd [e kaluar në] LT',
12117        sameElse : 'L'
12118    },
12119    relativeTime : {
12120        future : 'në %s',
12121        past : '%s më parë',
12122        s : 'disa sekonda',
12123        m : 'një minutë',
12124        mm : '%d minuta',
12125        h : 'një orë',
12126        hh : '%d orë',
12127        d : 'një ditë',
12128        dd : '%d ditë',
12129        M : 'një muaj',
12130        MM : '%d muaj',
12131        y : 'një vit',
12132        yy : '%d vite'
12133    },
12134    dayOfMonthOrdinalParse: /\d{1,2}\./,
12135    ordinal : '%d.',
12136    week : {
12137        dow : 1, // Monday is the first day of the week.
12138        doy : 4  // The week that contains Jan 4th is the first week of the year.
12139    }
12140});
12141
12142//! moment.js locale configuration
12143//! locale : Serbian Cyrillic [sr-cyrl]
12144//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
12145
12146var translator$1 = {
12147    words: { //Different grammatical cases
12148        m: ['један минут', 'једне минуте'],
12149        mm: ['минут', 'минуте', 'минута'],
12150        h: ['један сат', 'једног сата'],
12151        hh: ['сат', 'сата', 'сати'],
12152        dd: ['дан', 'дана', 'дана'],
12153        MM: ['месец', 'месеца', 'месеци'],
12154        yy: ['година', 'године', 'година']
12155    },
12156    correctGrammaticalCase: function (number, wordKey) {
12157        return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12158    },
12159    translate: function (number, withoutSuffix, key) {
12160        var wordKey = translator$1.words[key];
12161        if (key.length === 1) {
12162            return withoutSuffix ? wordKey[0] : wordKey[1];
12163        } else {
12164            return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);
12165        }
12166    }
12167};
12168
12169hooks.defineLocale('sr-cyrl', {
12170    months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
12171    monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
12172    monthsParseExact: true,
12173    weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
12174    weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
12175    weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
12176    weekdaysParseExact : true,
12177    longDateFormat: {
12178        LT: 'H:mm',
12179        LTS : 'H:mm:ss',
12180        L: 'DD.MM.YYYY',
12181        LL: 'D. MMMM YYYY',
12182        LLL: 'D. MMMM YYYY H:mm',
12183        LLLL: 'dddd, D. MMMM YYYY H:mm'
12184    },
12185    calendar: {
12186        sameDay: '[данас у] LT',
12187        nextDay: '[сутра у] LT',
12188        nextWeek: function () {
12189            switch (this.day()) {
12190                case 0:
12191                    return '[у] [недељу] [у] LT';
12192                case 3:
12193                    return '[у] [среду] [у] LT';
12194                case 6:
12195                    return '[у] [суботу] [у] LT';
12196                case 1:
12197                case 2:
12198                case 4:
12199                case 5:
12200                    return '[у] dddd [у] LT';
12201            }
12202        },
12203        lastDay  : '[јуче у] LT',
12204        lastWeek : function () {
12205            var lastWeekDays = [
12206                '[прошле] [недеље] [у] LT',
12207                '[прошлог] [понедељка] [у] LT',
12208                '[прошлог] [уторка] [у] LT',
12209                '[прошле] [среде] [у] LT',
12210                '[прошлог] [четвртка] [у] LT',
12211                '[прошлог] [петка] [у] LT',
12212                '[прошле] [суботе] [у] LT'
12213            ];
12214            return lastWeekDays[this.day()];
12215        },
12216        sameElse : 'L'
12217    },
12218    relativeTime : {
12219        future : 'за %s',
12220        past   : 'пре %s',
12221        s      : 'неколико секунди',
12222        m      : translator$1.translate,
12223        mm     : translator$1.translate,
12224        h      : translator$1.translate,
12225        hh     : translator$1.translate,
12226        d      : 'дан',
12227        dd     : translator$1.translate,
12228        M      : 'месец',
12229        MM     : translator$1.translate,
12230        y      : 'годину',
12231        yy     : translator$1.translate
12232    },
12233    dayOfMonthOrdinalParse: /\d{1,2}\./,
12234    ordinal : '%d.',
12235    week : {
12236        dow : 1, // Monday is the first day of the week.
12237        doy : 7  // The week that contains Jan 1st is the first week of the year.
12238    }
12239});
12240
12241//! moment.js locale configuration
12242//! locale : Serbian [sr]
12243//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
12244
12245var translator$2 = {
12246    words: { //Different grammatical cases
12247        m: ['jedan minut', 'jedne minute'],
12248        mm: ['minut', 'minute', 'minuta'],
12249        h: ['jedan sat', 'jednog sata'],
12250        hh: ['sat', 'sata', 'sati'],
12251        dd: ['dan', 'dana', 'dana'],
12252        MM: ['mesec', 'meseca', 'meseci'],
12253        yy: ['godina', 'godine', 'godina']
12254    },
12255    correctGrammaticalCase: function (number, wordKey) {
12256        return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12257    },
12258    translate: function (number, withoutSuffix, key) {
12259        var wordKey = translator$2.words[key];
12260        if (key.length === 1) {
12261            return withoutSuffix ? wordKey[0] : wordKey[1];
12262        } else {
12263            return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);
12264        }
12265    }
12266};
12267
12268hooks.defineLocale('sr', {
12269    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
12270    monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
12271    monthsParseExact: true,
12272    weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
12273    weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
12274    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
12275    weekdaysParseExact : true,
12276    longDateFormat: {
12277        LT: 'H:mm',
12278        LTS : 'H:mm:ss',
12279        L: 'DD.MM.YYYY',
12280        LL: 'D. MMMM YYYY',
12281        LLL: 'D. MMMM YYYY H:mm',
12282        LLLL: 'dddd, D. MMMM YYYY H:mm'
12283    },
12284    calendar: {
12285        sameDay: '[danas u] LT',
12286        nextDay: '[sutra u] LT',
12287        nextWeek: function () {
12288            switch (this.day()) {
12289                case 0:
12290                    return '[u] [nedelju] [u] LT';
12291                case 3:
12292                    return '[u] [sredu] [u] LT';
12293                case 6:
12294                    return '[u] [subotu] [u] LT';
12295                case 1:
12296                case 2:
12297                case 4:
12298                case 5:
12299                    return '[u] dddd [u] LT';
12300            }
12301        },
12302        lastDay  : '[juče u] LT',
12303        lastWeek : function () {
12304            var lastWeekDays = [
12305                '[prošle] [nedelje] [u] LT',
12306                '[prošlog] [ponedeljka] [u] LT',
12307                '[prošlog] [utorka] [u] LT',
12308                '[prošle] [srede] [u] LT',
12309                '[prošlog] [četvrtka] [u] LT',
12310                '[prošlog] [petka] [u] LT',
12311                '[prošle] [subote] [u] LT'
12312            ];
12313            return lastWeekDays[this.day()];
12314        },
12315        sameElse : 'L'
12316    },
12317    relativeTime : {
12318        future : 'za %s',
12319        past   : 'pre %s',
12320        s      : 'nekoliko sekundi',
12321        m      : translator$2.translate,
12322        mm     : translator$2.translate,
12323        h      : translator$2.translate,
12324        hh     : translator$2.translate,
12325        d      : 'dan',
12326        dd     : translator$2.translate,
12327        M      : 'mesec',
12328        MM     : translator$2.translate,
12329        y      : 'godinu',
12330        yy     : translator$2.translate
12331    },
12332    dayOfMonthOrdinalParse: /\d{1,2}\./,
12333    ordinal : '%d.',
12334    week : {
12335        dow : 1, // Monday is the first day of the week.
12336        doy : 7  // The week that contains Jan 1st is the first week of the year.
12337    }
12338});
12339
12340//! moment.js locale configuration
12341//! locale : siSwati [ss]
12342//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
12343
12344
12345hooks.defineLocale('ss', {
12346    months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
12347    monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
12348    weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
12349    weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
12350    weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
12351    weekdaysParseExact : true,
12352    longDateFormat : {
12353        LT : 'h:mm A',
12354        LTS : 'h:mm:ss A',
12355        L : 'DD/MM/YYYY',
12356        LL : 'D MMMM YYYY',
12357        LLL : 'D MMMM YYYY h:mm A',
12358        LLLL : 'dddd, D MMMM YYYY h:mm A'
12359    },
12360    calendar : {
12361        sameDay : '[Namuhla nga] LT',
12362        nextDay : '[Kusasa nga] LT',
12363        nextWeek : 'dddd [nga] LT',
12364        lastDay : '[Itolo nga] LT',
12365        lastWeek : 'dddd [leliphelile] [nga] LT',
12366        sameElse : 'L'
12367    },
12368    relativeTime : {
12369        future : 'nga %s',
12370        past : 'wenteka nga %s',
12371        s : 'emizuzwana lomcane',
12372        m : 'umzuzu',
12373        mm : '%d emizuzu',
12374        h : 'lihora',
12375        hh : '%d emahora',
12376        d : 'lilanga',
12377        dd : '%d emalanga',
12378        M : 'inyanga',
12379        MM : '%d tinyanga',
12380        y : 'umnyaka',
12381        yy : '%d iminyaka'
12382    },
12383    meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
12384    meridiem : function (hours, minutes, isLower) {
12385        if (hours < 11) {
12386            return 'ekuseni';
12387        } else if (hours < 15) {
12388            return 'emini';
12389        } else if (hours < 19) {
12390            return 'entsambama';
12391        } else {
12392            return 'ebusuku';
12393        }
12394    },
12395    meridiemHour : function (hour, meridiem) {
12396        if (hour === 12) {
12397            hour = 0;
12398        }
12399        if (meridiem === 'ekuseni') {
12400            return hour;
12401        } else if (meridiem === 'emini') {
12402            return hour >= 11 ? hour : hour + 12;
12403        } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
12404            if (hour === 0) {
12405                return 0;
12406            }
12407            return hour + 12;
12408        }
12409    },
12410    dayOfMonthOrdinalParse: /\d{1,2}/,
12411    ordinal : '%d',
12412    week : {
12413        dow : 1, // Monday is the first day of the week.
12414        doy : 4  // The week that contains Jan 4th is the first week of the year.
12415    }
12416});
12417
12418//! moment.js locale configuration
12419//! locale : Swedish [sv]
12420//! author : Jens Alm : https://github.com/ulmus
12421
12422hooks.defineLocale('sv', {
12423    months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
12424    monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
12425    weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
12426    weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
12427    weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
12428    longDateFormat : {
12429        LT : 'HH:mm',
12430        LTS : 'HH:mm:ss',
12431        L : 'YYYY-MM-DD',
12432        LL : 'D MMMM YYYY',
12433        LLL : 'D MMMM YYYY [kl.] HH:mm',
12434        LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
12435        lll : 'D MMM YYYY HH:mm',
12436        llll : 'ddd D MMM YYYY HH:mm'
12437    },
12438    calendar : {
12439        sameDay: '[Idag] LT',
12440        nextDay: '[Imorgon] LT',
12441        lastDay: '[Igår] LT',
12442        nextWeek: '[PÃ¥] dddd LT',
12443        lastWeek: '[I] dddd[s] LT',
12444        sameElse: 'L'
12445    },
12446    relativeTime : {
12447        future : 'om %s',
12448        past : 'för %s sedan',
12449        s : 'några sekunder',
12450        m : 'en minut',
12451        mm : '%d minuter',
12452        h : 'en timme',
12453        hh : '%d timmar',
12454        d : 'en dag',
12455        dd : '%d dagar',
12456        M : 'en månad',
12457        MM : '%d månader',
12458        y : 'ett år',
12459        yy : '%d år'
12460    },
12461    dayOfMonthOrdinalParse: /\d{1,2}(e|a)/,
12462    ordinal : function (number) {
12463        var b = number % 10,
12464            output = (~~(number % 100 / 10) === 1) ? 'e' :
12465            (b === 1) ? 'a' :
12466            (b === 2) ? 'a' :
12467            (b === 3) ? 'e' : 'e';
12468        return number + output;
12469    },
12470    week : {
12471        dow : 1, // Monday is the first day of the week.
12472        doy : 4  // The week that contains Jan 4th is the first week of the year.
12473    }
12474});
12475
12476//! moment.js locale configuration
12477//! locale : Swahili [sw]
12478//! author : Fahad Kassim : https://github.com/fadsel
12479
12480hooks.defineLocale('sw', {
12481    months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
12482    monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
12483    weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
12484    weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
12485    weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
12486    weekdaysParseExact : true,
12487    longDateFormat : {
12488        LT : 'HH:mm',
12489        LTS : 'HH:mm:ss',
12490        L : 'DD.MM.YYYY',
12491        LL : 'D MMMM YYYY',
12492        LLL : 'D MMMM YYYY HH:mm',
12493        LLLL : 'dddd, D MMMM YYYY HH:mm'
12494    },
12495    calendar : {
12496        sameDay : '[leo saa] LT',
12497        nextDay : '[kesho saa] LT',
12498        nextWeek : '[wiki ijayo] dddd [saat] LT',
12499        lastDay : '[jana] LT',
12500        lastWeek : '[wiki iliyopita] dddd [saat] LT',
12501        sameElse : 'L'
12502    },
12503    relativeTime : {
12504        future : '%s baadaye',
12505        past : 'tokea %s',
12506        s : 'hivi punde',
12507        m : 'dakika moja',
12508        mm : 'dakika %d',
12509        h : 'saa limoja',
12510        hh : 'masaa %d',
12511        d : 'siku moja',
12512        dd : 'masiku %d',
12513        M : 'mwezi mmoja',
12514        MM : 'miezi %d',
12515        y : 'mwaka mmoja',
12516        yy : 'miaka %d'
12517    },
12518    week : {
12519        dow : 1, // Monday is the first day of the week.
12520        doy : 7  // The week that contains Jan 1st is the first week of the year.
12521    }
12522});
12523
12524//! moment.js locale configuration
12525//! locale : Tamil [ta]
12526//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
12527
12528var symbolMap$13 = {
12529    '1': '௧',
12530    '2': '௨',
12531    '3': '௩',
12532    '4': '௪',
12533    '5': '௫',
12534    '6': '௬',
12535    '7': '௭',
12536    '8': '௮',
12537    '9': '௯',
12538    '0': '௦'
12539};
12540var numberMap$12 = {
12541    '௧': '1',
12542    '௨': '2',
12543    '௩': '3',
12544    '௪': '4',
12545    '௫': '5',
12546    '௬': '6',
12547    '௭': '7',
12548    '௮': '8',
12549    '௯': '9',
12550    '௦': '0'
12551};
12552
12553hooks.defineLocale('ta', {
12554    months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்ப
vendor: 5,815 bytes, lines 12554-12681
12554ர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
12555    monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
12556    weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
12557    weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
12558    weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
12559    longDateFormat : {
12560        LT : 'HH:mm',
12561        LTS : 'HH:mm:ss',
12562        L : 'DD/MM/YYYY',
12563        LL : 'D MMMM YYYY',
12564        LLL : 'D MMMM YYYY, HH:mm',
12565        LLLL : 'dddd, D MMMM YYYY, HH:mm'
12566    },
12567    calendar : {
12568        sameDay : '[இன்று] LT',
12569        nextDay : '[நாளை] LT',
12570        nextWeek : 'dddd, LT',
12571        lastDay : '[நேற்று] LT',
12572        lastWeek : '[கடந்த வாரம்] dddd, LT',
12573        sameElse : 'L'
12574    },
12575    relativeTime : {
12576        future : '%s இல்',
12577        past : '%s முன்',
12578        s : 'ஒரு சில விநாடிகள்',
12579        m : 'ஒரு நிமிடம்',
12580        mm : '%d நிமிடங்கள்',
12581        h : 'ஒரு மணி நேரம்',
12582        hh : '%d மணி நேரம்',
12583        d : 'ஒரு நாள்',
12584        dd : '%d நாட்கள்',
12585        M : 'ஒரு மாதம்',
12586        MM : '%d மாதங்கள்',
12587        y : 'ஒரு வருடம்',
12588        yy : '%d ஆண்டுகள்'
12589    },
12590    dayOfMonthOrdinalParse: /\d{1,2}வது/,
12591    ordinal : function (number) {
12592        return number + 'வது';
12593    },
12594    preparse: function (string) {
12595        return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
12596            return numberMap$12[match];
12597        });
12598    },
12599    postformat: function (string) {
12600        return string.replace(/\d/g, function (match) {
12601            return symbolMap$13[match];
12602        });
12603    },
12604    // refer http://ta.wikipedia.org/s/1er1
12605    meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
12606    meridiem : function (hour, minute, isLower) {
12607        if (hour < 2) {
12608            return ' யாமம்';
12609        } else if (hour < 6) {
12610            return ' வைகறை';  // வைகறை
12611        } else if (hour < 10) {
12612            return ' காலை'; // காலை
12613        } else if (hour < 14) {
12614            return ' நண்பகல்'; // நண்பகல்
12615        } else if (hour < 18) {
12616            return ' எற்பாடு'; // எற்பாடு
12617        } else if (hour < 22) {
12618            return ' மாலை'; // மாலை
12619        } else {
12620            return ' யாமம்';
12621        }
12622    },
12623    meridiemHour : function (hour, meridiem) {
12624        if (hour === 12) {
12625            hour = 0;
12626        }
12627        if (meridiem === 'யாமம்') {
12628            return hour < 2 ? hour : hour + 12;
12629        } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
12630            return hour;
12631        } else if (meridiem === 'நண்பகல்') {
12632            return hour >= 10 ? hour : hour + 12;
12633        } else {
12634            return hour + 12;
12635        }
12636    },
12637    week : {
12638        dow : 0, // Sunday is the first day of the week.
12639        doy : 6  // The week that contains Jan 1st is the first week of the year.
12640    }
12641});
12642
12643//! moment.js locale configuration
12644//! locale : Telugu [te]
12645//! author : Krishna Chaitanya Thota : https://github.com/kcthota
12646
12647hooks.defineLocale('te', {
12648    months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
12649    monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
12650    monthsParseExact : true,
12651    weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
12652    weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
12653    weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
12654    longDateFormat : {
12655        LT : 'A h:mm',
12656        LTS : 'A h:mm:ss',
12657        L : 'DD/MM/YYYY',
12658        LL : 'D MMMM YYYY',
12659        LLL : 'D MMMM YYYY, A h:mm',
12660        LLLL : 'dddd, D MMMM YYYY, A h:mm'
12661    },
12662    calendar : {
12663        sameDay : '[నేడు] LT',
12664        nextDay : '[రేపు] LT',
12665        nextWeek : 'dddd, LT',
12666        lastDay : '[నిన్న] LT',
12667        lastWeek : '[గత] dddd, LT',
12668        sameElse : 'L'
12669    },
12670    relativeTime : {
12671        future : '%s లో',
12672        past : '%s క్రితం',
12673        s : 'కొన్ని క్షణాలు',
12674        m : 'ఒక నిమిషం',
12675        mm : '%d నిమిషాలు',
12676        h : 'ఒక గంట',
12677        hh : '%d గంటలు',
12678        d : 'ఒక రోజు',
12679        dd : '%d రోజులు',
12680        M : 'ఒక నెల',
12681        MM : '%d నెలలు',
12682        y : 'ఒక సంవత్సరం',
12683        yy : '%d సంవత్సరాలు'
12684    },
12685    dayOfMonthOrdinalParse : /\d{1,2}à°µ/,
12686    ordinal : '%dà°µ',
12687    meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
12688    meridiemHour : function (hour, meridiem) {
12689        if (hour === 12) {
12690            hour = 0;
12691        }
12692        if (meridiem === 'రాత్రి') {
12693            return hour < 4 ? hour : hour + 12;
12694        } else if (meridiem === 'ఉదయం') {
12695            return hour;
12696        } else if (meridiem === 'మధ్యాహ్నం') {
12697            return hour >= 10 ? hour : hour + 12;
12698        } else if (meridiem === 'సాయంత్రం') {
12699            return hour + 12;
12700        }
12701    },
12702    meridiem : function (hour, minute, isLower) {
12703        if (hour < 4) {
12704            return 'రాత్రి';
12705        } else if (hour < 10) {
12706            return 'ఉదయం';
12707        } else if (hour < 17) {
12708            return 'మధ్యాహ్నం';
12709        } else if (hour < 20) {
12710            return 'సాయంత్రం';
12711        } else {
12712            return 'రాత్రి';
12713        }
12714    },
12715    week : {
12716        dow : 0, // Sunday is the first day of the week.
12717        doy : 6  // The week that contains Jan 1st is the first week of the year.
12718    }
12719});
12720
12721//! moment.js locale configuration
12722//! locale : Tetun Dili (East Timor) [tet]
12723//! author : Joshua Brooks : https://github.com/joshbrooks
12724//! author : Onorio De J. Afonso : https://github.com/marobo
12725
12726hooks.defineLocale('tet', {
12727    months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
12728    monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),
12729    weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),
12730    weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),
12731    weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),
12732    longDateFormat : {
12733        LT : 'HH:mm',
12734        LTS : 'HH:mm:ss',
12735        L : 'DD/MM/YYYY',
12736        LL : 'D MMMM YYYY',
12737        LLL : 'D MMMM YYYY HH:mm',
12738        LLLL : 'dddd, D MMMM YYYY HH:mm'
12739    },
12740    calendar : {
12741        sameDay: '[Ohin iha] LT',
12742        nextDay: '[Aban iha] LT',
12743        nextWeek: 'dddd [iha] LT',
12744        lastDay: '[Horiseik iha] LT',
12745        lastWeek: 'dddd [semana kotuk] [iha] LT',
12746        sameElse: 'L'
12747    },
12748    relativeTime : {
12749        future : 'iha %s',
12750        past : '%s liuba',
12751        s : 'minutu balun',
12752        m : 'minutu ida',
12753        mm : 'minutus %d',
12754        h : 'horas ida',
12755        hh : 'horas %d',
12756        d : 'loron ida',
12757        dd : 'loron %d',
12758        M : 'fulan ida',
12759        MM : 'fulan %d',
12760        y : 'tinan ida',
12761        yy : 'tinan %d'
12762    },
12763    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
12764    ordinal : function (number) {
12765        var b = number % 10,
12766            output = (~~(number % 100 / 10) === 1) ? 'th' :
12767            (b === 1) ? 'st' :
12768            (b === 2) ? 'nd' :
12769            (b === 3) ? 'rd' : 'th';
12770        return number + output;
12771    },
12772    week : {
12773        dow : 1, // Monday is the first day of the week.
12774        doy : 4  // The week that contains Jan 4th is the first week of the year.
12775    }
12776});
12777
12778//! moment.js locale configuration
12779//! locale : Thai [th]
12780//! author : Kridsada Thanabulpong : https://github.com/sirn
12781
12782hooks.defineLocale('th', {
12783    months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
12784    monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
12785    monthsParseExact: true,
12786    weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
12787    weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.
12787split('_'), // yes, three characters difference
12788    weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
12789    weekdaysParseExact : true,
12790    longDateFormat : {
12791        LT : 'H:mm',
12792        LTS : 'H:mm:ss',
12793        L : 'DD/MM/YYYY',
12794        LL : 'D MMMM YYYY',
12795        LLL : 'D MMMM YYYY เวลา H:mm',
12796        LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
12797    },
12798    meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
12799    isPM: function (input) {
12800        return input === 'หลังเที่ยง';
12801    },
12802    meridiem : function (hour, minute, isLower) {
12803        if (hour < 12) {
12804            return 'ก่อนเที่ยง';
12805        } else {
12806            return 'หลังเที่ยง';
12807        }
12808    },
12809    calendar : {
12810        sameDay : '[วันนี้ เวลา] LT',
12811        nextDay : '[พรุ่งนี้ เวลา] LT',
12812        nextWeek : 'dddd[หน้า เวลา] LT',
12813        lastDay : '[เมื่อวานนี้ เวลา] LT',
12814        lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
12815        sameElse : 'L'
12816    },
12817    relativeTime : {
12818        future : 'อีก %s',
12819        past : '%sที่แล้ว',
12820        s : 'ไม่กี่วินาที',
12821        m : '1 นาที',
12822        mm : '%d นาที',
12823        h : '1 ชั่วโมง',
12824        hh : '%d ชั่วโมง',
12825        d : '1 วัน',
12826        dd : '%d วัน',
12827        M : '1 เดือน',
12828        MM : '%d เดือน',
12829        y : '1 ปี',
12830        yy : '%d ปี'
12831    }
12832});
12833
12834//! moment.js locale configuration
12835//! locale : Tagalog (Philippines) [tl-ph]
12836//! author : Dan Hagman : https://github.com/hagmandan
12837
12838hooks.defineLocale('tl-ph', {
12839    months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
12840    monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
12841    weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
12842    weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
12843    weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
12844    longDateFormat : {
12845        LT : 'HH:mm',
12846        LTS : 'HH:mm:ss',
12847        L : 'MM/D/YYYY',
12848        LL : 'MMMM D, YYYY',
12849        LLL : 'MMMM D, YYYY HH:mm',
12850        LLLL : 'dddd, MMMM DD, YYYY HH:mm'
12851    },
12852    calendar : {
12853        sameDay: 'LT [ngayong araw]',
12854        nextDay: '[Bukas ng] LT',
12855        nextWeek: 'LT [sa susunod na] dddd',
12856        lastDay: 'LT [kahapon]',
12857        lastWeek: 'LT [noong nakaraang] dddd',
12858        sameElse: 'L'
12859    },
12860    relativeTime : {
12861        future : 'sa loob ng %s',
12862        past : '%s ang nakalipas',
12863        s : 'ilang segundo',
12864        m : 'isang minuto',
12865        mm : '%d minuto',
12866        h : 'isang oras',
12867        hh : '%d oras',
12868        d : 'isang araw',
12869        dd : '%d araw',
12870        M : 'isang buwan',
12871        MM : '%d buwan',
12872        y : 'isang taon',
12873        yy : '%d taon'
12874    },
12875    dayOfMonthOrdinalParse: /\d{1,2}/,
12876    ordinal : function (number) {
12877        return number;
12878    },
12879    week : {
12880        dow : 1, // Monday is the first day of the week.
12881        doy : 4  // The week that contains Jan 4th is the first week of the year.
12882    }
12883});
12884
12885//! moment.js locale configuration
12886//! locale : Klingon [tlh]
12887//! author : Dominika Kruk : https://github.com/amaranthrose
12888
12889var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
12890
12891function translateFuture(output) {
12892    var time = output;
12893    time = (output.indexOf('jaj') !== -1) ?
12894    time.slice(0, -3) + 'leS' :
12895    (output.indexOf('jar') !== -1) ?
12896    time.slice(0, -3) + 'waQ' :
12897    (output.indexOf('DIS') !== -1) ?
12898    time.slice(0, -3) + 'nem' :
12899    time + ' pIq';
12900    return time;
12901}
12902
12903function translatePast(output) {
12904    var time = output;
12905    time = (output.indexOf('jaj') !== -1) ?
12906    time.slice(0, -3) + 'Hu’' :
12907    (output.indexOf('jar') !== -1) ?
12908    time.slice(0, -3) + 'wen' :
12909    (output.indexOf('DIS') !== -1) ?
12910    time.slice(0, -3) + 'ben' :
12911    time + ' ret';
12912    return time;
12913}
12914
12915function translate$9(number, withoutSuffix, string, isFuture) {
12916    var numberNoun = numberAsNoun(number);
12917    switch (string) {
12918        case 'mm':
12919            return numberNoun + ' tup';
12920        case 'hh':
12921            return numberNoun + ' rep';
12922        case 'dd':
12923            return numberNoun + ' jaj';
12924        case 'MM':
12925            return numberNoun + ' jar';
12926        case 'yy':
12927            return numberNoun + ' DIS';
12928    }
12929}
12930
12931function numberAsNoun(number) {
12932    var hundred = Math.floor((number % 1000) / 100),
12933    ten = Math.floor((number % 100) / 10),
12934    one = number % 10,
12935    word = '';
12936    if (hundred > 0) {
12937        word += numbersNouns[hundred] + 'vatlh';
12938    }
12939    if (ten > 0) {
12940        word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
12941    }
12942    if (one > 0) {
12943        word += ((word !== '') ? ' ' : '') + numbersNouns[one];
12944    }
12945    return (word === '') ? 'pagh' : word;
12946}
12947
12948hooks.defineLocale('tlh', {
12949    months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
12950    monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
12951    monthsParseExact : true,
12952    weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
12953    weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
12954    weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
12955    longDateFormat : {
12956        LT : 'HH:mm',
12957        LTS : 'HH:mm:ss',
12958        L : 'DD.MM.YYYY',
12959        LL : 'D MMMM YYYY',
12960        LLL : 'D MMMM YYYY HH:mm',
12961        LLLL : 'dddd, D MMMM YYYY HH:mm'
12962    },
12963    calendar : {
12964        sameDay: '[DaHjaj] LT',
12965        nextDay: '[wa’leS] LT',
12966        nextWeek: 'LLL',
12967        lastDay: '[wa’Hu’] LT',
12968        lastWeek: 'LLL',
12969        sameElse: 'L'
12970    },
12971    relativeTime : {
12972        future : translateFuture,
12973        past : translatePast,
12974        s : 'puS lup',
12975        m : 'wa’ tup',
12976        mm : translate$9,
12977        h : 'wa’ rep',
12978        hh : translate$9,
12979        d : 'wa’ jaj',
12980        dd : translate$9,
12981        M : 'wa’ jar',
12982        MM : translate$9,
12983        y : 'wa’ DIS',
12984        yy : translate$9
12985    },
12986    dayOfMonthOrdinalParse: /\d{1,2}\./,
12987    ordinal : '%d.',
12988    week : {
12989        dow : 1, // Monday is the first day of the week.
12990        doy : 4  // The week that contains Jan 4th is the first week of the year.
12991    }
12992});
12993
12994//! moment.js locale configuration
12995//! locale : Turkish [tr]
12996//! authors : Erhan Gundogan : https://github.com/erhangundogan,
12997//!           Burak Yiğit Kaya: https://github.com/BYK
12998
12999var suffixes$3 = {
13000    1: '\'inci',
13001    5: '\'inci',
13002    8: '\'inci',
13003    70: '\'inci',
13004    80: '\'inci',
13005    2: '\'nci',
13006    7: '\'nci',
13007    20: '\'nci',
13008    50: '\'nci',
13009    3: '\'üncü',
13010    4: '\'üncü',
13011    100: '\'üncü',
13012    6: '\'ncı',
13013    9: '\'uncu',
13014    10: '\'uncu',
13015    30: '\'uncu',
13016    60: '\'ıncı',
13017    90: '\'ıncı'
13018};
13019
13020hooks.defineLocale('tr', {
13021    months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
13022    monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
13023    weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
13024    weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
13025    weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
13026    longDateFormat : {
13027        LT : 'HH:mm',
13028        LTS : 'HH:mm:ss',
13029        L : 'DD.MM.YYYY',
13030        LL : 'D MMMM YYYY',
13031        LLL : 'D MMMM YYYY HH:mm',
13032        LLLL : 'dddd, D MMMM YYYY HH:mm'
13033    },
13034    calendar : {
13035        sameDay : '[bugün saat] LT',
13036        nextDay : '[yarın saat] LT',
13037        nextWeek : '[gelecek] dddd [saat] LT',
13038        lastDay : '[dün] LT',
13039        lastWeek : '[geçen] dddd [saat] LT',
13040        sameElse : 'L'
13041    },
13042    relativeTime : {
13043        future : '%s sonra',
13044        past : '%s önce',
13045        s : 'birkaç saniye',
13046        m : 'bir dakika',
13047        mm : '%d dakika',
13048        h : 'bir saat',
13049        hh : '%d saat',
13050        d : 'bir gün',
13051        dd : '%d gün',
13052        M : 'bir ay',
13053        MM : '%d ay',
13054        y : 'bir yıl',
13055        yy : '%d yıl'
13056    },
13057    dayOfMonthOrdinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
13058    ordinal : function (number) {
13059        if (number === 0) {  // special case for zero
13060            return number + '\'ıncı';
13061        }
13062        var a = number % 10,
13063            b = number % 100 - a,
13064            c = number >= 100 ? 100 : null;
13065        return number + (suffixes$3[a] || suffixes$3[b] || suffixes$3[c]);
13066    },
13067    week : {
13068        dow : 1, // Monday is the first day of the week.
13069        doy : 7  // The week that contains Jan 1st is the first week of the year.
13070    }
13071});
13072
13073//! moment.js locale configuration
13074//! locale : Talossan [tzl]
13075//! author : Robin van der Vliet : https://github.com/robin0van0der0v
13076//! author : Iustì Canun
13077
13078// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
13079// This is currently too difficult (maybe even impossible) to add.
13080hooks.defineLocale('tzl', {
13081    months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
13082    monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
13083    weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
13084    weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
13085    weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
13086    longDateFormat : {
13087        LT : 'HH.mm',
13088        LTS : 'HH.mm.ss',
13089        L : 'DD.MM.YYYY',
13090        LL : 'D. MMMM [dallas] YYYY',
13091        LLL : 'D. MMMM [dallas] YYYY HH.mm',
13092        LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
13093    },
13094    meridiemParse: /d\'o|d\'a/i,
13095    isPM : function (input) {
13096        return 'd\'o' === input.toLowerCase();
13097    },
13098    meridiem : function (hours, minutes, isLower) {
13099        if (hours > 11) {
13100            return isLower ? 'd\'o' : 'D\'O';
13101        } else {
13102            return isLower ? 'd\'a' : 'D\'A';
13103        }
13104    },
13105    calendar : {
13106        sameDay : '[oxhi à] LT',
13107        nextDay : '[demà à] LT',
13108        nextWeek : 'dddd [à] LT',
13109        lastDay : '[ieiri à] LT',
13110        lastWeek : '[sür el] dddd [lasteu à] LT',
13111        sameElse : 'L'
13112    },
13113    relativeTime : {
13114        future : 'osprei %s',
13115        past : 'ja%s',
13116        s : processRelativeTime$7,
13117        m : processRelativeTime$7,
13118        mm : processRelativeTime$7,
13119        h : processRelativeTime$7,
13120        hh : processRelativeTime$7,
13121        d : processRelativeTime$7,
13122        dd : processRelativeTime$7,
13123        M : processRelativeTime$7,
13124        MM : processRelativeTime$7,
13125        y : processRelativeTime$7,
13126        yy : processRelativeTime$7
13127    },
13128    dayOfMonthOrdinalParse: /\d{1,2}\./,
13129    ordinal : '%d.',
13130    week : {
13131        dow : 1, // Monday is the first day of the week.
13132        doy : 4  // The week that contains Jan 4th is the first week of the year.
13133    }
13134});
13135
13136function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
13137    var format = {
13138        's': ['viensas secunds', '\'iensas secunds'],
13139        'm': ['\'n míut', '\'iens míut'],
13140        'mm': [number + ' míuts', '' + number + ' míuts'],
13141        'h': ['\'n þora', '\'iensa þora'],
13142        'hh': [number + ' þoras', '' + number + ' þoras'],
13143        'd': ['\'n ziua', '\'iensa ziua'],
13144        'dd': [number + ' ziuas', '' + number + ' ziuas'],
13145        'M': ['\'n mes', '\'iens mes'],
13146        'MM': [number + ' mesen', '' + number + ' mesen'],
13147        'y': ['\'n ar', '\'iens ar'],
13148        'yy': [number + ' ars', '' + number + ' ars']
13149    };
13150    return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
13151}
13152
13153//! moment.js locale configuration
13154//! locale : Central Atlas Tamazight Latin [tzm-latn]
13155//! author : Abdel Said : https://github.com/abdelsaid
13156
13157hooks.defineLocale('tzm-latn', {
13158    months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13159    monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13160    weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13161    weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13162    weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13163    longDateFormat : {
13164        LT : 'HH:mm',
13165        LTS : 'HH:mm:ss',
13166        L : 'DD/MM/YYYY',
13167        LL : 'D MMMM YYYY',
13168        LLL : 'D MMMM YYYY HH:mm',
13169        LLLL : 'dddd D MMMM YYYY HH:mm'
13170    },
13171    calendar : {
13172        sameDay: '[asdkh g] LT',
13173        nextDay: '[aska g] LT',
13174        nextWeek: 'dddd [g] LT',
13175        lastDay: '[assant g] LT',
13176        lastWeek: 'dddd [g] LT',
13177        sameElse: 'L'
13178    },
13179    relativeTime : {
13180        future : 'dadkh s yan %s',
13181        past : 'yan %s',
13182        s : 'imik',
13183        m : 'minuḍ',
13184        mm : '%d minuḍ',
13185        h : 'saɛa',
13186        hh : '%d tassaɛin',
13187        d : 'ass',
13188        dd : '%d ossan',
13189        M : 'ayowr',
13190        MM : '%d iyyirn',
13191        y : 'asgas',
13192        yy : '%d isgasn'
13193    },
13194    week : {
13195        dow : 6, // Saturday is the first day of the week.
13196        doy : 12  // The week that contains Jan 1st is the first week of the year.
13197    }
13198});
13199
13200//! moment.js locale configuration
13201//! locale : Central Atlas Tamazight [tzm]
13202//! author : Abdel Said : https://github.com/abdelsaid
13203
13204hooks.defineLocale('tzm', {
13205    months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13206    monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13207    weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13208    weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13209    weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13210    longDateFormat : {
13211        LT : 'HH:mm',
13212        LTS: 'HH:mm:ss',
13213        L : 'DD/MM/YYYY',
13214        LL : 'D MMMM YYYY',
13215        LLL : 'D MMMM YYYY HH:mm',
13216        LLLL : 'dddd D MMMM YYYY HH:mm'
13217    },
13218    calendar : {
13219        sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
13220        nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
13221        nextWeek: 'dddd [â´´] LT',
13222        lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
13223        lastWeek: 'dddd [â´´] LT',
13224        sameElse: 'L'
13225    },
13226    relativeTime : {
13227        future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
13228        past : 'ⵢⴰⵏ %s',
13229        s : 'ⵉⵎⵉⴽ',
13230        m : 'ⵎⵉⵏⵓⴺ',
13231        mm : '%d ⵎⵉⵏⵓⴺ',
13232        h : 'ⵙⴰⵄⴰ',
13233        hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
13234        d : 'ⴰⵙⵙ',
13235        dd : '%d oⵙⵙⴰⵏ',
13236        M : 'ⴰⵢoⵓⵔ',
13237        MM : '%d ⵉⵢⵢⵉⵔⵏ',
13238        y : 'ⴰⵙⴳⴰⵙ',
13239        yy : '%d ⵉⵙⴳⴰⵙⵏ'
13240    },
13241    week : {
13242        dow : 6, // Saturday is the first day of the week.
13243        doy : 12  // The week that contains Jan 1st is the first week of the year.
13244    }
13245});
13246
13247//! moment.js locale configuration
13248//! locale : Ukrainian [uk]
13249//! author : zemlanin : https://github.com/zemlanin
13250//! Author : Menelion Elensúle : https://github.com/Oire
13251
13252function plural$6(word, num) {
13253    var forms = word.split('_');
13254    return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
13255}
13256function relativeTimeWithPlural$4(number, withoutSuffix, key) {
13257    var format = {
13258        'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
13259        'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
13260        'dd': 'день_дні_днів',
13261        'MM': 'місяць_місяці_місяців',
13262        'yy': 'рік_роки_років'
13263    };
13264    if (key === 'm') {
13265        return withoutSuffix ? 'хвилина' : 'хвилину';
13266    }
13267    else if (key === 'h') {
13268        return withoutSuffix ? 'година' : 'годину';
13269    }
13270    else {
13271        return number + ' ' + plural$6(format[key], +number);
13272    }
13273}
13274function weekdaysCaseReplace(m, format) {
13275    var weekdays = {
13276        'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
13277        'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
13278        'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
13279    };
13280
13281    if (!m) {
13282        return weekdays['nominative'];
13283    }
13284
13285    var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
13286        'accusative' :
13287        ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
13288            'genitive' :
13289            'nominative');
13290    return weekdays[nounCase][m.day()];
13291}
13292function processHoursFunction(str) {
13293    return function () {
13294        return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
13295    };
13296}
13297
13298hooks.defineLocale('uk', {
13299    months : {
13300        'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
13301        'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
13302    },
13303    monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
13304    weekdays : weekdaysCaseReplace,
13305    weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
13306    weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
13307    longDateFormat : {
13308        LT : 'HH:mm',
13309        LTS : 'HH:mm:ss',
13310        L : 'DD.MM.YYYY',
13311        LL : 'D MMMM YYYY р.',
13312        LLL : 'D MMMM YYYY р., HH:mm',
13313        LLLL : 'dddd, D MMMM YYYY р., HH:mm'
13314    },
13315    calendar : {
13316        sameDay: processHoursFunction('[Сьогодні '),
13317        nextDay: processHoursFunction('[Завтра '),
13318        lastDay: processHoursFunction('[Вчора '),
13319        nextWeek: processHoursFunction('[У] dddd ['),
13320        lastWeek: function () {
13321            switch (this.day()) {
13322                case 0:
13323                case 3:
13324                case 5:
13325                case 6:
13326                    return processHoursFunction('[Минулої] dddd [').call(this);
13327                case 1:
13328                case 2:
13329                case 4:
13330                    return processHoursFunction('[Минулого] dddd [').call(this);
13331            }
13332        },
13333        sameElse: 'L'
13334    },
13335    relativeTime : {
13336        future : 'за %s',
13337        past : '%s тому',
13338        s : 'декілька секунд',
13339        m : relativeTimeWithPlural$4,
13340        mm : relativeTimeWithPlural$4,
13341        h : 'годину',
13342        hh : relativeTimeWithPlural$4,
13343        d : 'день',
13344        dd : relativeTimeWithPlural$4,
13345        M : 'місяць',
13346        MM : relativeTimeWithPlural$4,
13347        y : 'рік',
13348        yy : relativeTimeWithPlural$4
13349    },
13350    // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
13351    meridiemParse: /ночі|ранку|дня|вечора/,
13352    isPM: function (input) {
13353        return /^(дня|вечора)$/.test(input);
13354    },
13355    meridiem : function (hour, minute, isLower) {
13356        if (hour < 4) {
13357            return 'ночі';
13358        } else if (hour < 12) {
13359            return 'ранку';
13360        } else if (hour < 17) {
13361            return 'дня';
13362        } else {
13363            return 'вечора';
13364        }
13365    },
13366    dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
13367    ordinal: function (number, period) {
13368        switch (period) {
13369            case 'M':
13370            case 'd':
13371            case 'DDD':
13372            case 'w':
13373            case 'W':
13374                return number + '-й';
13375            case 'D':
13376                return number + '-го';
13377            default:
13378                return number;
13379        }
13380    },
13381    week : {
13382        dow : 1, // Monday is the first day of the week.
13383        doy : 7  // The week that contains Jan 1st is the first week of the year.
13384    }
13385});
13386
13387//! moment.js locale configuration
13388//! locale : Urdu [ur]
13389//! author : Sawood Alam : https://github.com/ibnesayeed
13390//! author : Zack : https://github.com/ZackVision
13391
13392var months$8 = [
13393    'جنوری',
13394    'فروری',
13395    'مارچ',
13396    'اپریل',
13397    'مئی',
13398    'جون',
13399    'جولائی',
13400    'اگست',
13401    'ستمبر',
13402    'اکتوبر',
13403    'نومبر',
13404    'دسمبر'
13405];
13406var days$2 = [
13407    'اتوار',
13408    'پیر',
13409    'منگل',
13410    'بدھ',
13411    'جمعرات',
13412    'جمعہ',
13413    'ہفتہ'
13414];
13415
13416hooks.defineLocale('ur', {
13417    months : months$8,
13418    monthsShort : months$8,
13419    weekdays : days$2,
13420    weekdaysShort : days$2,
13421    weekdaysMin : days$2,
13422    longDateFormat : {
13423        LT : 'HH:mm',
13424        LTS : 'HH:mm:ss',
13425        L : 'DD/MM/YYYY',
13426        LL : 'D MMMM YYYY',
13427        LLL : 'D MMMM YYYY HH:mm',
13428        LLLL : 'dddd، D MMMM YYYY HH:mm'
13429    },
13430    meridiemParse: /صبح|شام/,
13431    isPM : function (input) {
13432        return 'شام' === input;
13433    },
13434    meridiem : function (hour, minute, isLower) {
13435        if (hour < 12) {
13436            return 'صبح';
13437        }
13438        return 'شام';
13439    },
13440    calendar : {
13441        sameDay : '[آج بوقت] LT',
13442        nextDay : '[کل بوقت] LT',
13443        nextWeek : 'dddd [بوقت] LT',
13444        lastDay : '[گذشتہ روز بوقت] LT',
13445        lastWeek : '[گذشتہ] dddd [بوقت] LT',
13446        sameElse : 'L'
13447    },
13448    relativeTime : {
13449        future : '%s بعد',
13450        past : '%s قبل',
13451        s : 'چند سیکنڈ',
13452        m : 'ایک منٹ',
13453        mm : '%d منٹ',
13454        h : 'ایک گھنٹہ',
13455        hh : '%d گھنٹے',
13456        d : 'ایک دن',
13457        dd : '%d دن',
13458        M : 'ایک ماہ',
13459        MM : '%d ماہ',
13460        y : 'ایک سال',
13461        yy : '%d سال'
13462    },
13463    preparse: function (string) {
13464        return string.replace(/،/g, ',');
13465    },
13466    postformat: function (string) {
13467        return string.replace(/,/g, '،');
13468    },
13469    week : {
13470        dow : 1, // Monday is the first day of the week.
13471        doy : 4  // The week that contains Jan 4th is the first week of the year.
13472    }
13473});
13474
13475//! moment.js locale configuration
vendor: 5,971 bytes, lines 13476-13643
13476//! locale : Uzbek Latin [uz-latn]
13477//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
13478
13479hooks.defineLocale('uz-latn', {
13480    months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
13481    monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
13482    weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
13483    weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
13484    weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
13485    longDateFormat : {
13486        LT : 'HH:mm',
13487        LTS : 'HH:mm:ss',
13488        L : 'DD/MM/YYYY',
13489        LL : 'D MMMM YYYY',
13490        LLL : 'D MMMM YYYY HH:mm',
13491        LLLL : 'D MMMM YYYY, dddd HH:mm'
13492    },
13493    calendar : {
13494        sameDay : '[Bugun soat] LT [da]',
13495        nextDay : '[Ertaga] LT [da]',
13496        nextWeek : 'dddd [kuni soat] LT [da]',
13497        lastDay : '[Kecha soat] LT [da]',
13498        lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]',
13499        sameElse : 'L'
13500    },
13501    relativeTime : {
13502        future : 'Yaqin %s ichida',
13503        past : 'Bir necha %s oldin',
13504        s : 'soniya',
13505        m : 'bir daqiqa',
13506        mm : '%d daqiqa',
13507        h : 'bir soat',
13508        hh : '%d soat',
13509        d : 'bir kun',
13510        dd : '%d kun',
13511        M : 'bir oy',
13512        MM : '%d oy',
13513        y : 'bir yil',
13514        yy : '%d yil'
13515    },
13516    week : {
13517        dow : 1, // Monday is the first day of the week.
13518        doy : 7  // The week that contains Jan 1st is the first week of the year.
13519    }
13520});
13521
13522//! moment.js locale configuration
13523//! locale : Uzbek [uz]
13524//! author : Sardor Muminov : https://github.com/muminoff
13525
13526hooks.defineLocale('uz', {
13527    months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
13528    monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
13529    weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
13530    weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
13531    weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
13532    longDateFormat : {
13533        LT : 'HH:mm',
13534        LTS : 'HH:mm:ss',
13535        L : 'DD/MM/YYYY',
13536        LL : 'D MMMM YYYY',
13537        LLL : 'D MMMM YYYY HH:mm',
13538        LLLL : 'D MMMM YYYY, dddd HH:mm'
13539    },
13540    calendar : {
13541        sameDay : '[Бугун соат] LT [да]',
13542        nextDay : '[Эртага] LT [да]',
13543        nextWeek : 'dddd [куни соат] LT [да]',
13544        lastDay : '[Кеча соат] LT [да]',
13545        lastWeek : '[Утган] dddd [куни соат] LT [да]',
13546        sameElse : 'L'
13547    },
13548    relativeTime : {
13549        future : 'Якин %s ичида',
13550        past : 'Бир неча %s олдин',
13551        s : 'фурсат',
13552        m : 'бир дакика',
13553        mm : '%d дакика',
13554        h : 'бир соат',
13555        hh : '%d соат',
13556        d : 'бир кун',
13557        dd : '%d кун',
13558        M : 'бир ой',
13559        MM : '%d ой',
13560        y : 'бир йил',
13561        yy : '%d йил'
13562    },
13563    week : {
13564        dow : 1, // Monday is the first day of the week.
13565        doy : 7  // The week that contains Jan 4th is the first week of the year.
13566    }
13567});
13568
13569//! moment.js locale configuration
13570//! locale : Vietnamese [vi]
13571//! author : Bang Nguyen : https://github.com/bangnk
13572
13573hooks.defineLocale('vi', {
13574    months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
13575    monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
13576    monthsParseExact : true,
13577    weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
13578    weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
13579    weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
13580    weekdaysParseExact : true,
13581    meridiemParse: /sa|ch/i,
13582    isPM : function (input) {
13583        return /^ch$/i.test(input);
13584    },
13585    meridiem : function (hours, minutes, isLower) {
13586        if (hours < 12) {
13587            return isLower ? 'sa' : 'SA';
13588        } else {
13589            return isLower ? 'ch' : 'CH';
13590        }
13591    },
13592    longDateFormat : {
13593        LT : 'HH:mm',
13594        LTS : 'HH:mm:ss',
13595        L : 'DD/MM/YYYY',
13596        LL : 'D MMMM [năm] YYYY',
13597        LLL : 'D MMMM [năm] YYYY HH:mm',
13598        LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
13599        l : 'DD/M/YYYY',
13600        ll : 'D MMM YYYY',
13601        lll : 'D MMM YYYY HH:mm',
13602        llll : 'ddd, D MMM YYYY HH:mm'
13603    },
13604    calendar : {
13605        sameDay: '[Hôm nay lúc] LT',
13606        nextDay: '[Ngày mai lúc] LT',
13607        nextWeek: 'dddd [tuần tới lúc] LT',
13608        lastDay: '[Hôm qua lúc] LT',
13609        lastWeek: 'dddd [tuần rồi lúc] LT',
13610        sameElse: 'L'
13611    },
13612    relativeTime : {
13613        future : '%s tới',
13614        past : '%s trước',
13615        s : 'vài giây',
13616        m : 'một phút',
13617        mm : '%d phút',
13618        h : 'một giờ',
13619        hh : '%d giờ',
13620        d : 'một ngày',
13621        dd : '%d ngày',
13622        M : 'một tháng',
13623        MM : '%d tháng',
13624        y : 'một năm',
13625        yy : '%d năm'
13626    },
13627    dayOfMonthOrdinalParse: /\d{1,2}/,
13628    ordinal : function (number) {
13629        return number;
13630    },
13631    week : {
13632        dow : 1, // Monday is the first day of the week.
13633        doy : 4  // The week that contains Jan 4th is the first week of the year.
13634    }
13635});
13636
13637//! moment.js locale configuration
13638//! locale : Pseudo [x-pseudo]
13639//! author : Andrew Hood : https://github.com/andrewhood125
13640
13641hooks.defineLocale('x-pseudo', {
13642    months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),
13643    monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.
13643split('_'),
13644    monthsParseExact : true,
13645    weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
13646    weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
13647    weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
13648    weekdaysParseExact : true,
13649    longDateFormat : {
13650        LT : 'HH:mm',
13651        L : 'DD/MM/YYYY',
13652        LL : 'D MMMM YYYY',
13653        LLL : 'D MMMM YYYY HH:mm',
13654        LLLL : 'dddd, D MMMM YYYY HH:mm'
13655    },
13656    calendar : {
13657        sameDay : '[T~ódá~ý át] LT',
13658        nextDay : '[T~ómó~rró~w át] LT',
13659        nextWeek : 'dddd [át] LT',
13660        lastDay : '[Ý~ést~érdá~ý át] LT',
13661        lastWeek : '[L~ást] dddd [át] LT',
13662        sameElse : 'L'
13663    },
13664    relativeTime : {
13665        future : 'í~ñ %s',
13666        past : '%s á~gó',
13667        s : 'á ~féw ~sécó~ñds',
13668        m : 'á ~míñ~úté',
13669        mm : '%d m~íñú~tés',
13670        h : 'á~ñ hó~úr',
13671        hh : '%d h~óúrs',
13672        d : 'á ~dáý',
13673        dd : '%d d~áýs',
13674        M : 'á ~móñ~th',
13675        MM : '%d m~óñt~hs',
13676        y : 'á ~ýéár',
13677        yy : '%d ý~éárs'
13678    },
13679    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
13680    ordinal : function (number) {
13681        var b = number % 10,
13682            output = (~~(number % 100 / 10) === 1) ? 'th' :
13683            (b === 1) ? 'st' :
13684            (b === 2) ? 'nd' :
13685            (b === 3) ? 'rd' : 'th';
13686        return number + output;
13687    },
13688    week : {
13689        dow : 1, // Monday is the first day of the week.
13690        doy : 4  // The week that contains Jan 4th is the first week of the year.
13691    }
13692});
13693
13694//! moment.js locale configuration
13695//! locale : Yoruba Nigeria [yo]
13696//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
13697
13698hooks.defineLocale('yo', {
13699    months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
13700    monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
13701    weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
13702    weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
13703    weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
13704    longDateFormat : {
13705        LT : 'h:mm A',
13706        LTS : 'h:mm:ss A',
13707        L : 'DD/MM/YYYY',
13708        LL : 'D MMMM YYYY',
13709        LLL : 'D MMMM YYYY h:mm A',
13710        LLLL : 'dddd, D MMMM YYYY h:mm A'
13711    },
13712    calendar : {
13713        sameDay : '[Ònì ni] LT',
13714        nextDay : '[Ọ̀la ni] LT',
13715        nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
13716        lastDay : '[Àna ni] LT',
13717        lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
13718        sameElse : 'L'
13719    },
13720    relativeTime : {
13721        future : 'ní %s',
13722        past : '%s kọjá',
13723        s : 'ìsẹjú aayá die',
13724        m : 'ìsẹjú kan',
13725        mm : 'ìsẹjú %d',
13726        h : 'wákati kan',
13727        hh : 'wákati %d',
13728        d : 'ọjọ́ kan',
13729        dd : 'ọjọ́ %d',
13730        M : 'osù kan',
13731        MM : 'osù %d',
13732        y : 'ọdún kan',
13733        yy : 'ọdún %d'
13734    },
13735    dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/,
13736    ordinal : 'ọjọ́ %d',
13737    week : {
13738        dow : 1, // Monday is the first day of the week.
13739        doy : 4 // The week that contains Jan 4th is the first week of the year.
13740    }
13741});
13742
13743//! moment.js locale configuration
13744//! locale : Chinese (China) [zh-cn]
13745//! author : suupic : https://github.com/suupic
13746//! author : Zeno Zeng : https://github.com/zenozeng
13747
13748hooks.defineLocale('zh-cn', {
13749    months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
13750    monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
13751    weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
13752    weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
13753    weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
13754    longDateFormat : {
13755        LT : 'HH:mm',
13756        LTS : 'HH:mm:ss',
13757        L : 'YYYY年MMMD日',
13758        LL : 'YYYY年MMMD日',
13759        LLL : 'YYYY年MMMD日Ah点mm分',
13760        LLLL : 'YYYY年MMMD日ddddAh点mm分',
13761        l : 'YYYY年MMMD日',
13762        ll : 'YYYY年MMMD日',
13763        lll : 'YYYY年MMMD日 HH:mm',
13764        llll : 'YYYY年MMMD日dddd HH:mm'
13765    },
13766    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
13767    meridiemHour: function (hour, meridiem) {
13768        if (hour === 12) {
13769            hour = 0;
13770        }
13771        if (meridiem === '凌晨' || meridiem === '早上' ||
13772                meridiem === '上午') {
13773            return hour;
13774        } else if (meridiem === '下午' || meridiem === '晚上') {
13775            return hour + 12;
13776        } else {
13777            // '中午'
13778            return hour >= 11 ? hour : hour + 12;
13779        }
13780    },
13781    meridiem : function (hour, minute, isLower) {
13782        var hm = hour * 100 + minute;
13783        if (hm < 600) {
13784            return '凌晨';
13785        } else if (hm < 900) {
13786            return '早上';
13787        } else if (hm < 1130) {
13788            return '上午';
13789        } else if (hm < 1230) {
13790            return '中午';
13791        } else if (hm < 1800) {
13792            return '下午';
13793        } else {
13794            return '晚上';
13795        }
13796    },
13797    calendar : {
13798        sameDay : '[今天]LT',
13799        nextDay : '[明天]LT',
13800        nextWeek : '[下]ddddLT',
13801        lastDay : '[昨天]LT',
13802        lastWeek : '[上]ddddLT',
13803        sameElse : 'L'
13804    },
13805    dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
13806    ordinal : function (number, period) {
13807        switch (period) {
13808            case 'd':
13809            case 'D':
13810            case 'DDD':
13811                return number + '日';
13812            case 'M':
13813                return number + '月';
13814            case 'w':
13815            case 'W':
13816                return number + '周';
13817            default:
13818                return number;
13819        }
13820    },
13821    relativeTime : {
13822        future : '%s内',
13823        past : '%s前',
13824        s : '几秒',
13825        m : '1 分钟',
13826        mm : '%d 分钟',
13827        h : '1 小时',
13828        hh : '%d 小时',
13829        d : '1 天',
13830        dd : '%d 天',
13831        M : '1 个月',
13832        MM : '%d 个月',
13833        y : '1 å¹´',
13834        yy : '%d å¹´'
13835    },
13836    week : {
13837        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
13838        dow : 1, // Monday is the first day of the week.
13839        doy : 4  // The week that contains Jan 4th is the first week of the year.
13840    }
13841});
13842
13843//! moment.js locale configuration
13844//! locale : Chinese (Hong Kong) [zh-hk]
13845//! author : Ben : https://github.com/ben-lin
13846//! author : Chris Lam : https://github.com/hehachris
13847//! author : Konstantin : https://github.com/skfd
13848
13849hooks.defineLocale('zh-hk', {
13850    months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
13851    monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
13852    weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
13853    weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
13854    weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
13855    longDateFormat : {
13856        LT : 'HH:mm',
13857        LTS : 'HH:mm:ss',
13858        L : 'YYYY年MMMD日',
13859        LL : 'YYYY年MMMD日',
13860        LLL : 'YYYY年MMMD日 HH:mm',
13861        LLLL : 'YYYY年MMMD日dddd HH:mm',
13862        l : 'YYYY年MMMD日',
13863        ll : 'YYYY年MMMD日',
13864        lll : 'YYYY年MMMD日 HH:mm',
13865        llll : 'YYYY年MMMD日dddd HH:mm'
13866    },
13867    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
13868    meridiemHour : function (hour, meridiem) {
13869        if (hour === 12) {
13870            hour = 0;
13871        }
13872        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
13873            return hour;
13874        } else if (meridiem === '中午') {
13875            return hour >= 11 ? hour : hour + 12;
13876        } else if (meridiem === '下午' || meridiem === '晚上') {
13877            return hour + 12;
13878        }
13879    },
13880    meridiem : function (hour, minute, isLower) {
13881        var hm = hour * 100 + minute;
13882        if (hm < 600) {
13883            return '凌晨';
13884        } else if (hm < 900) {
13885            return '早上';
13886        } else if (hm < 1130) {
13887            return '上午';
13888        } else if (hm < 1230) {
13889            return '中午';
13890        } else if (hm < 1800) {
13891            return '下午';
13892        } else {
13893            return '晚上';
13894        }
13895    },
13896    calendar : {
13897        sameDay : '[今天]LT',
13898        nextDay : '[明天]LT',
13899        nextWeek : '[下]ddddLT',
13900        lastDay : '[昨天]LT',
13901        lastWeek : '[上]ddddLT',
13902        sameElse : 'L'
13903    },
13904    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
13905    ordinal : function (number, period) {
13906        switch (period) {
13907            case 'd' :
13908            case 'D' :
13909            case 'DDD' :
13910                return number + '日';
13911            case 'M' :
13912                return number + '月';
13913            case 'w' :
13914            case 'W' :
13915                return number + '週';
13916            default :
13917                return number;
13918        }
13919    },
13920    relativeTime : {
13921        future : '%s內',
13922        past : '%s前',
13923        s : '幾秒',
13924        m : '1 分鐘',
13925        mm : '%d 分鐘',
13926        h : '1 小時',
13927        hh : '%d 小時',
13928        d : '1 天',
13929        dd : '%d 天',
13930        M : '1 個月',
13931        MM : '%d 個月',
13932        y : '1 å¹´',
13933        yy : '%d å¹´'
13934    }
13935});
13936
13937//! moment.js locale configuration
13938//! locale : Chinese (Taiwan) [zh-tw]
13939//! author : Ben : https://github.com/ben-lin
13940//! author : Chris Lam : https://github.com/hehachris
13941
13942hooks.defineLocale('zh-tw', {
13943    months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
13944    monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
13945    weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
13946    weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
13947    weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
13948    longDateFormat : {
13949        LT : 'HH:mm',
13950        LTS : 'HH:mm:ss',
13951        L : 'YYYY年MMMD日',
13952        LL : 'YYYY年MMMD日',
13953        LLL : 'YYYY年MMMD日 HH:mm',
13954        LLLL : 'YYYY年MMMD日dddd HH:mm',
13955        l : 'YYYY年MMMD日',
13956        ll : 'YYYY年MMMD日',
13957        lll : 'YYYY年MMMD日 HH:mm',
13958        llll : 'YYYY年MMMD日dddd HH:mm'
13959    },
13960    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
13961    meridiemHour : function (hour, meridiem) {
13962        if (hour === 12) {
13963            hour = 0;
13964        }
13965        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
13966            return hour;
13967        } else if (meridiem === '中午') {
13968            return hour >= 11 ? hour : hour + 12;
13969        } else if (meridiem === '下午' || meridiem === '晚上') {
13970            return hour + 12;
13971        }
13972    },
13973    meridiem : function (hour, minute, isLower) {
13974        var hm = hour * 100 + minute;
13975        if (hm < 600) {
13976            return '凌晨';
13977        } else if (hm < 900) {
13978            return '早上';
13979        } else if (hm < 1130) {
13980            return '上午';
13981        } else if (hm < 1230) {
13982            return '中午';
13983        } else if (hm < 1800) {
13984            return '下午';
13985        } else {
13986            return '晚上';
13987        }
13988    },
13989    calendar : {
13990        sameDay : '[今天]LT',
13991        nextDay : '[明天]LT',
13992        nextWeek : '[下]ddddLT',
13993        lastDay : '[昨天]LT',
13994        lastWeek : '[上]ddddLT',
13995        sameElse : 'L'
13996    },
13997    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
13998    ordinal : function (number, period) {
13999        switch (period) {
14000            case 'd' :
14001            case 'D' :
14002            case 'DDD' :
14003                return number + '日';
14004            case 'M' :
14005                return number + '月';
14006            case 'w' :
14007            case 'W' :
14008                return number + '週';
14009            default :
14010                return number;
14011        }
14012    },
14013    relativeTime : {
14014        future : '%s內',
14015        past : '%s前',
14016        s : '幾秒',
14017        m : '1 分鐘',
14018        mm : '%d 分鐘',
14019        h : '1 小時',
14020        hh : '%d 小時',
14021        d : '1 天',
14022        dd : '%d 天',
14023        M : '1 個月',
14024        MM : '%d 個月',
14025        y : '1 å¹´',
14026        yy : '%d å¹´'
14027    }
14028});
14029
14030hooks.locale('en');
14031
14032return hooks;
14033
14034})));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.