UNPKG

622 kBJavaScriptView Raw
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
7 var hookCallback;
8
9 function 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.
15 function setHookCallback(callback) {
16 hookCallback = callback;
17 }
18
19 function isArray(input) {
20 return (
21 input instanceof Array ||
22 Object.prototype.toString.call(input) === '[object Array]'
23 );
24 }
25
26 function isObject(input) {
27 // IE8 will treat undefined and null as object if it wasn't for
28 // input != null
29 return (
30 input != null &&
31 Object.prototype.toString.call(input) === '[object Object]'
32 );
33 }
34
35 function hasOwnProp(a, b) {
36 return Object.prototype.hasOwnProperty.call(a, b);
37 }
38
39 function isObjectEmpty(obj) {
40 if (Object.getOwnPropertyNames) {
41 return Object.getOwnPropertyNames(obj).length === 0;
42 } else {
43 var k;
44 for (k in obj) {
45 if (hasOwnProp(obj, k)) {
46 return false;
47 }
48 }
49 return true;
50 }
51 }
52
53 function isUndefined(input) {
54 return input === void 0;
55 }
56
57 function isNumber(input) {
58 return (
59 typeof input === 'number' ||
60 Object.prototype.toString.call(input) === '[object Number]'
61 );
62 }
63
64 function isDate(input) {
65 return (
66 input instanceof Date ||
67 Object.prototype.toString.call(input) === '[object Date]'
68 );
69 }
70
71 function map(arr, fn) {
72 var res = [],
73 i,
74 arrLen = arr.length;
75 for (i = 0; i < arrLen; ++i) {
76 res.push(fn(arr[i], i));
77 }
78 return res;
79 }
80
81 function extend(a, b) {
82 for (var i in b) {
83 if (hasOwnProp(b, i)) {
84 a[i] = b[i];
85 }
86 }
87
88 if (hasOwnProp(b, 'toString')) {
89 a.toString = b.toString;
90 }
91
92 if (hasOwnProp(b, 'valueOf')) {
93 a.valueOf = b.valueOf;
94 }
95
96 return a;
97 }
98
99 function createUTC(input, format, locale, strict) {
100 return createLocalOrUTC(input, format, locale, strict, true).utc();
101 }
102
103 function defaultParsingFlags() {
104 // We need to deep clone this object.
105 return {
106 empty: false,
107 unusedTokens: [],
108 unusedInput: [],
109 overflow: -2,
110 charsLeftOver: 0,
111 nullInput: false,
112 invalidEra: null,
113 invalidMonth: null,
114 invalidFormat: false,
115 userInvalidated: false,
116 iso: false,
117 parsedDateParts: [],
118 era: null,
119 meridiem: null,
120 rfc2822: false,
121 weekdayMismatch: false,
122 };
123 }
124
125 function getParsingFlags(m) {
126 if (m._pf == null) {
127 m._pf = defaultParsingFlags();
128 }
129 return m._pf;
130 }
131
132 var some;
133 if (Array.prototype.some) {
134 some = Array.prototype.some;
135 } else {
136 some = function (fun) {
137 var t = Object(this),
138 len = t.length >>> 0,
139 i;
140
141 for (i = 0; i < len; i++) {
142 if (i in t && fun.call(this, t[i], i, t)) {
143 return true;
144 }
145 }
146
147 return false;
148 };
149 }
150
151 function isValid(m) {
152 if (m._isValid == null) {
153 var flags = getParsingFlags(m),
154 parsedParts = some.call(flags.parsedDateParts, function (i) {
155 return i != null;
156 }),
157 isNowValid =
158 !isNaN(m._d.getTime()) &&
159 flags.overflow < 0 &&
160 !flags.empty &&
161 !flags.invalidEra &&
162 !flags.invalidMonth &&
163 !flags.invalidWeekday &&
164 !flags.weekdayMismatch &&
165 !flags.nullInput &&
166 !flags.invalidFormat &&
167 !flags.userInvalidated &&
168 (!flags.meridiem || (flags.meridiem && parsedParts));
169
170 if (m._strict) {
171 isNowValid =
172 isNowValid &&
173 flags.charsLeftOver === 0 &&
174 flags.unusedTokens.length === 0 &&
175 flags.bigHour === undefined;
176 }
177
178 if (Object.isFrozen == null || !Object.isFrozen(m)) {
179 m._isValid = isNowValid;
180 } else {
181 return isNowValid;
182 }
183 }
184 return m._isValid;
185 }
186
187 function createInvalid(flags) {
188 var m = createUTC(NaN);
189 if (flags != null) {
190 extend(getParsingFlags(m), flags);
191 } else {
192 getParsingFlags(m).userInvalidated = true;
193 }
194
195 return m;
196 }
197
198 // Plugins that add properties should also add the key here (null value),
199 // so we can properly clone ourselves.
200 var momentProperties = (hooks.momentProperties = []),
201 updateInProgress = false;
202
203 function copyConfig(to, from) {
204 var i,
205 prop,
206 val,
207 momentPropertiesLen = momentProperties.length;
208
209 if (!isUndefined(from._isAMomentObject)) {
210 to._isAMomentObject = from._isAMomentObject;
211 }
212 if (!isUndefined(from._i)) {
213 to._i = from._i;
214 }
215 if (!isUndefined(from._f)) {
216 to._f = from._f;
217 }
218 if (!isUndefined(from._l)) {
219 to._l = from._l;
220 }
221 if (!isUndefined(from._strict)) {
222 to._strict = from._strict;
223 }
224 if (!isUndefined(from._tzm)) {
225 to._tzm = from._tzm;
226 }
227 if (!isUndefined(from._isUTC)) {
228 to._isUTC = from._isUTC;
229 }
230 if (!isUndefined(from._offset)) {
231 to._offset = from._offset;
232 }
233 if (!isUndefined(from._pf)) {
234 to._pf = getParsingFlags(from);
235 }
236 if (!isUndefined(from._locale)) {
237 to._locale = from._locale;
238 }
239
240 if (momentPropertiesLen > 0) {
241 for (i = 0; i < momentPropertiesLen; i++) {
242 prop = momentProperties[i];
243 val = from[prop];
244 if (!isUndefined(val)) {
245 to[prop] = val;
246 }
247 }
248 }
249
250 return to;
251 }
252
253 // Moment prototype object
254 function Moment(config) {
255 copyConfig(this, config);
256 this._d = new Date(config._d != null ? config._d.getTime() : NaN);
257 if (!this.isValid()) {
258 this._d = new Date(NaN);
259 }
260 // Prevent infinite loop in case updateOffset creates new moment
261 // objects.
262 if (updateInProgress === false) {
263 updateInProgress = true;
264 hooks.updateOffset(this);
265 updateInProgress = false;
266 }
267 }
268
269 function isMoment(obj) {
270 return (
271 obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
272 );
273 }
274
275 function warn(msg) {
276 if (
277 hooks.suppressDeprecationWarnings === false &&
278 typeof console !== 'undefined' &&
279 console.warn
280 ) {
281 console.warn('Deprecation warning: ' + msg);
282 }
283 }
284
285 function deprecate(msg, fn) {
286 var firstTime = true;
287
288 return extend(function () {
289 if (hooks.deprecationHandler != null) {
290 hooks.deprecationHandler(null, msg);
291 }
292 if (firstTime) {
293 var args = [],
294 arg,
295 i,
296 key,
297 argLen = arguments.length;
298 for (i = 0; i < argLen; i++) {
299 arg = '';
300 if (typeof arguments[i] === 'object') {
301 arg += '\n[' + i + '] ';
302 for (key in arguments[0]) {
303 if (hasOwnProp(arguments[0], key)) {
304 arg += key + ': ' + arguments[0][key] + ', ';
305 }
306 }
307 arg = arg.slice(0, -2); // Remove trailing comma and space
308 } else {
309 arg = arguments[i];
310 }
311 args.push(arg);
312 }
313 warn(
314 msg +
315 '\nArguments: ' +
316 Array.prototype.slice.call(args).join('') +
317 '\n' +
318 new Error().stack
319 );
320 firstTime = false;
321 }
322 return fn.apply(this, arguments);
323 }, fn);
324 }
325
326 var deprecations = {};
327
328 function deprecateSimple(name, msg) {
329 if (hooks.deprecationHandler != null) {
330 hooks.deprecationHandler(name, msg);
331 }
332 if (!deprecations[name]) {
333 warn(msg);
334 deprecations[name] = true;
335 }
336 }
337
338 hooks.suppressDeprecationWarnings = false;
339 hooks.deprecationHandler = null;
340
341 function isFunction(input) {
342 return (
343 (typeof Function !== 'undefined' && input instanceof Function) ||
344 Object.prototype.toString.call(input) === '[object Function]'
345 );
346 }
347
348 function set(config) {
349 var prop, i;
350 for (i in config) {
351 if (hasOwnProp(config, i)) {
352 prop = config[i];
353 if (isFunction(prop)) {
354 this[i] = prop;
355 } else {
356 this['_' + i] = prop;
357 }
358 }
359 }
360 this._config = config;
361 // Lenient ordinal parsing accepts just a number in addition to
362 // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
363 // TODO: Remove "ordinalParse" fallback in next major release.
364 this._dayOfMonthOrdinalParseLenient = new RegExp(
365 (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
366 '|' +
367 /\d{1,2}/.source
368 );
369 }
370
371 function mergeConfigs(parentConfig, childConfig) {
372 var res = extend({}, parentConfig),
373 prop;
374 for (prop in childConfig) {
375 if (hasOwnProp(childConfig, prop)) {
376 if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
377 res[prop] = {};
378 extend(res[prop], parentConfig[prop]);
379 extend(res[prop], childConfig[prop]);
380 } else if (childConfig[prop] != null) {
381 res[prop] = childConfig[prop];
382 } else {
383 delete res[prop];
384 }
385 }
386 }
387 for (prop in parentConfig) {
388 if (
389 hasOwnProp(parentConfig, prop) &&
390 !hasOwnProp(childConfig, prop) &&
391 isObject(parentConfig[prop])
392 ) {
393 // make sure changes to properties don't modify parent config
394 res[prop] = extend({}, res[prop]);
395 }
396 }
397 return res;
398 }
399
400 function Locale(config) {
401 if (config != null) {
402 this.set(config);
403 }
404 }
405
406 var keys;
407
408 if (Object.keys) {
409 keys = Object.keys;
410 } else {
411 keys = function (obj) {
412 var i,
413 res = [];
414 for (i in obj) {
415 if (hasOwnProp(obj, i)) {
416 res.push(i);
417 }
418 }
419 return res;
420 };
421 }
422
423 var defaultCalendar = {
424 sameDay: '[Today at] LT',
425 nextDay: '[Tomorrow at] LT',
426 nextWeek: 'dddd [at] LT',
427 lastDay: '[Yesterday at] LT',
428 lastWeek: '[Last] dddd [at] LT',
429 sameElse: 'L',
430 };
431
432 function calendar(key, mom, now) {
433 var output = this._calendar[key] || this._calendar['sameElse'];
434 return isFunction(output) ? output.call(mom, now) : output;
435 }
436
437 function zeroFill(number, targetLength, forceSign) {
438 var absNumber = '' + Math.abs(number),
439 zerosToFill = targetLength - absNumber.length,
440 sign = number >= 0;
441 return (
442 (sign ? (forceSign ? '+' : '') : '-') +
443 Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
444 absNumber
445 );
446 }
447
448 var formattingTokens =
449 /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
450 localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
451 formatFunctions = {},
452 formatTokenFunctions = {};
453
454 // token: 'M'
455 // padded: ['MM', 2]
456 // ordinal: 'Mo'
457 // callback: function () { this.month() + 1 }
458 function addFormatToken(token, padded, ordinal, callback) {
459 var func = callback;
460 if (typeof callback === 'string') {
461 func = function () {
462 return this[callback]();
463 };
464 }
465 if (token) {
466 formatTokenFunctions[token] = func;
467 }
468 if (padded) {
469 formatTokenFunctions[padded[0]] = function () {
470 return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
471 };
472 }
473 if (ordinal) {
474 formatTokenFunctions[ordinal] = function () {
475 return this.localeData().ordinal(
476 func.apply(this, arguments),
477 token
478 );
479 };
480 }
481 }
482
483 function removeFormattingTokens(input) {
484 if (input.match(/\[[\s\S]/)) {
485 return input.replace(/^\[|\]$/g, '');
486 }
487 return input.replace(/\\/g, '');
488 }
489
490 function makeFormatFunction(format) {
491 var array = format.match(formattingTokens),
492 i,
493 length;
494
495 for (i = 0, length = array.length; i < length; i++) {
496 if (formatTokenFunctions[array[i]]) {
497 array[i] = formatTokenFunctions[array[i]];
498 } else {
499 array[i] = removeFormattingTokens(array[i]);
500 }
501 }
502
503 return function (mom) {
504 var output = '',
505 i;
506 for (i = 0; i < length; i++) {
507 output += isFunction(array[i])
508 ? array[i].call(mom, format)
509 : array[i];
510 }
511 return output;
512 };
513 }
514
515 // format date using native date object
516 function formatMoment(m, format) {
517 if (!m.isValid()) {
518 return m.localeData().invalidDate();
519 }
520
521 format = expandFormat(format, m.localeData());
522 formatFunctions[format] =
523 formatFunctions[format] || makeFormatFunction(format);
524
525 return formatFunctions[format](m);
526 }
527
528 function expandFormat(format, locale) {
529 var i = 5;
530
531 function replaceLongDateFormatTokens(input) {
532 return locale.longDateFormat(input) || input;
533 }
534
535 localFormattingTokens.lastIndex = 0;
536 while (i >= 0 && localFormattingTokens.test(format)) {
537 format = format.replace(
538 localFormattingTokens,
539 replaceLongDateFormatTokens
540 );
541 localFormattingTokens.lastIndex = 0;
542 i -= 1;
543 }
544
545 return format;
546 }
547
548 var defaultLongDateFormat = {
549 LTS: 'h:mm:ss A',
550 LT: 'h:mm A',
551 L: 'MM/DD/YYYY',
552 LL: 'MMMM D, YYYY',
553 LLL: 'MMMM D, YYYY h:mm A',
554 LLLL: 'dddd, MMMM D, YYYY h:mm A',
555 };
556
557 function longDateFormat(key) {
558 var format = this._longDateFormat[key],
559 formatUpper = this._longDateFormat[key.toUpperCase()];
560
561 if (format || !formatUpper) {
562 return format;
563 }
564
565 this._longDateFormat[key] = formatUpper
566 .match(formattingTokens)
567 .map(function (tok) {
568 if (
569 tok === 'MMMM' ||
570 tok === 'MM' ||
571 tok === 'DD' ||
572 tok === 'dddd'
573 ) {
574 return tok.slice(1);
575 }
576 return tok;
577 })
578 .join('');
579
580 return this._longDateFormat[key];
581 }
582
583 var defaultInvalidDate = 'Invalid date';
584
585 function invalidDate() {
586 return this._invalidDate;
587 }
588
589 var defaultOrdinal = '%d',
590 defaultDayOfMonthOrdinalParse = /\d{1,2}/;
591
592 function ordinal(number) {
593 return this._ordinal.replace('%d', number);
594 }
595
596 var defaultRelativeTime = {
597 future: 'in %s',
598 past: '%s ago',
599 s: 'a few seconds',
600 ss: '%d seconds',
601 m: 'a minute',
602 mm: '%d minutes',
603 h: 'an hour',
604 hh: '%d hours',
605 d: 'a day',
606 dd: '%d days',
607 w: 'a week',
608 ww: '%d weeks',
609 M: 'a month',
610 MM: '%d months',
611 y: 'a year',
612 yy: '%d years',
613 };
614
615 function relativeTime(number, withoutSuffix, string, isFuture) {
616 var output = this._relativeTime[string];
617 return isFunction(output)
618 ? output(number, withoutSuffix, string, isFuture)
619 : output.replace(/%d/i, number);
620 }
621
622 function pastFuture(diff, output) {
623 var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
624 return isFunction(format) ? format(output) : format.replace(/%s/i, output);
625 }
626
627 var aliases = {};
628
629 function addUnitAlias(unit, shorthand) {
630 var lowerCase = unit.toLowerCase();
631 aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
632 }
633
634 function normalizeUnits(units) {
635 return typeof units === 'string'
636 ? aliases[units] || aliases[units.toLowerCase()]
637 : undefined;
638 }
639
640 function normalizeObjectUnits(inputObject) {
641 var normalizedInput = {},
642 normalizedProp,
643 prop;
644
645 for (prop in inputObject) {
646 if (hasOwnProp(inputObject, prop)) {
647 normalizedProp = normalizeUnits(prop);
648 if (normalizedProp) {
649 normalizedInput[normalizedProp] = inputObject[prop];
650 }
651 }
652 }
653
654 return normalizedInput;
655 }
656
657 var priorities = {};
658
659 function addUnitPriority(unit, priority) {
660 priorities[unit] = priority;
661 }
662
663 function getPrioritizedUnits(unitsObj) {
664 var units = [],
665 u;
666 for (u in unitsObj) {
667 if (hasOwnProp(unitsObj, u)) {
668 units.push({ unit: u, priority: priorities[u] });
669 }
670 }
671 units.sort(function (a, b) {
672 return a.priority - b.priority;
673 });
674 return units;
675 }
676
677 function isLeapYear(year) {
678 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
679 }
680
681 function absFloor(number) {
682 if (number < 0) {
683 // -0 -> 0
684 return Math.ceil(number) || 0;
685 } else {
686 return Math.floor(number);
687 }
688 }
689
690 function toInt(argumentForCoercion) {
691 var coercedNumber = +argumentForCoercion,
692 value = 0;
693
694 if (coercedNumber !== 0 && isFinite(coercedNumber)) {
695 value = absFloor(coercedNumber);
696 }
697
698 return value;
699 }
700
701 function makeGetSet(unit, keepTime) {
702 return function (value) {
703 if (value != null) {
704 set$1(this, unit, value);
705 hooks.updateOffset(this, keepTime);
706 return this;
707 } else {
708 return get(this, unit);
709 }
710 };
711 }
712
713 function get(mom, unit) {
714 return mom.isValid()
715 ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
716 : NaN;
717 }
718
719 function set$1(mom, unit, value) {
720 if (mom.isValid() && !isNaN(value)) {
721 if (
722 unit === 'FullYear' &&
723 isLeapYear(mom.year()) &&
724 mom.month() === 1 &&
725 mom.date() === 29
726 ) {
727 value = toInt(value);
728 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
729 value,
730 mom.month(),
731 daysInMonth(value, mom.month())
732 );
733 } else {
734 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
735 }
736 }
737 }
738
739 // MOMENTS
740
741 function stringGet(units) {
742 units = normalizeUnits(units);
743 if (isFunction(this[units])) {
744 return this[units]();
745 }
746 return this;
747 }
748
749 function stringSet(units, value) {
750 if (typeof units === 'object') {
751 units = normalizeObjectUnits(units);
752 var prioritized = getPrioritizedUnits(units),
753 i,
754 prioritizedLen = prioritized.length;
755 for (i = 0; i < prioritizedLen; i++) {
756 this[prioritized[i].unit](units[prioritized[i].unit]);
757 }
758 } else {
759 units = normalizeUnits(units);
760 if (isFunction(this[units])) {
761 return this[units](value);
762 }
763 }
764 return this;
765 }
766
767 var match1 = /\d/, // 0 - 9
768 match2 = /\d\d/, // 00 - 99
769 match3 = /\d{3}/, // 000 - 999
770 match4 = /\d{4}/, // 0000 - 9999
771 match6 = /[+-]?\d{6}/, // -999999 - 999999
772 match1to2 = /\d\d?/, // 0 - 99
773 match3to4 = /\d\d\d\d?/, // 999 - 9999
774 match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999
775 match1to3 = /\d{1,3}/, // 0 - 999
776 match1to4 = /\d{1,4}/, // 0 - 9999
777 match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
778 matchUnsigned = /\d+/, // 0 - inf
779 matchSigned = /[+-]?\d+/, // -inf - inf
780 matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
781 matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
782 matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
783 // any word (or two) characters or numbers including two/three word month in arabic.
784 // includes scottish gaelic two word and hyphenated months
785 matchWord =
786 /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
787 regexes;
788
789 regexes = {};
790
791 function addRegexToken(token, regex, strictRegex) {
792 regexes[token] = isFunction(regex)
793 ? regex
794 : function (isStrict, localeData) {
795 return isStrict && strictRegex ? strictRegex : regex;
796 };
797 }
798
799 function getParseRegexForToken(token, config) {
800 if (!hasOwnProp(regexes, token)) {
801 return new RegExp(unescapeFormat(token));
802 }
803
804 return regexes[token](config._strict, config._locale);
805 }
806
807 // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
808 function unescapeFormat(s) {
809 return regexEscape(
810 s
811 .replace('\\', '')
812 .replace(
813 /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
814 function (matched, p1, p2, p3, p4) {
815 return p1 || p2 || p3 || p4;
816 }
817 )
818 );
819 }
820
821 function regexEscape(s) {
822 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
823 }
824
825 var tokens = {};
826
827 function addParseToken(token, callback) {
828 var i,
829 func = callback,
830 tokenLen;
831 if (typeof token === 'string') {
832 token = [token];
833 }
834 if (isNumber(callback)) {
835 func = function (input, array) {
836 array[callback] = toInt(input);
837 };
838 }
839 tokenLen = token.length;
840 for (i = 0; i < tokenLen; i++) {
841 tokens[token[i]] = func;
842 }
843 }
844
845 function addWeekParseToken(token, callback) {
846 addParseToken(token, function (input, array, config, token) {
847 config._w = config._w || {};
848 callback(input, config._w, config, token);
849 });
850 }
851
852 function addTimeToArrayFromToken(token, input, config) {
853 if (input != null && hasOwnProp(tokens, token)) {
854 tokens[token](input, config._a, config, token);
855 }
856 }
857
858 var YEAR = 0,
859 MONTH = 1,
860 DATE = 2,
861 HOUR = 3,
862 MINUTE = 4,
863 SECOND = 5,
864 MILLISECOND = 6,
865 WEEK = 7,
866 WEEKDAY = 8;
867
868 function mod(n, x) {
869 return ((n % x) + x) % x;
870 }
871
872 var indexOf;
873
874 if (Array.prototype.indexOf) {
875 indexOf = Array.prototype.indexOf;
876 } else {
877 indexOf = function (o) {
878 // I know
879 var i;
880 for (i = 0; i < this.length; ++i) {
881 if (this[i] === o) {
882 return i;
883 }
884 }
885 return -1;
886 };
887 }
888
889 function daysInMonth(year, month) {
890 if (isNaN(year) || isNaN(month)) {
891 return NaN;
892 }
893 var modMonth = mod(month, 12);
894 year += (month - modMonth) / 12;
895 return modMonth === 1
896 ? isLeapYear(year)
897 ? 29
898 : 28
899 : 31 - ((modMonth % 7) % 2);
900 }
901
902 // FORMATTING
903
904 addFormatToken('M', ['MM', 2], 'Mo', function () {
905 return this.month() + 1;
906 });
907
908 addFormatToken('MMM', 0, 0, function (format) {
909 return this.localeData().monthsShort(this, format);
910 });
911
912 addFormatToken('MMMM', 0, 0, function (format) {
913 return this.localeData().months(this, format);
914 });
915
916 // ALIASES
917
918 addUnitAlias('month', 'M');
919
920 // PRIORITY
921
922 addUnitPriority('month', 8);
923
924 // PARSING
925
926 addRegexToken('M', match1to2);
927 addRegexToken('MM', match1to2, match2);
928 addRegexToken('MMM', function (isStrict, locale) {
929 return locale.monthsShortRegex(isStrict);
930 });
931 addRegexToken('MMMM', function (isStrict, locale) {
932 return locale.monthsRegex(isStrict);
933 });
934
935 addParseToken(['M', 'MM'], function (input, array) {
936 array[MONTH] = toInt(input) - 1;
937 });
938
939 addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
940 var month = config._locale.monthsParse(input, token, config._strict);
941 // if we didn't find a month name, mark the date as invalid.
942 if (month != null) {
943 array[MONTH] = month;
944 } else {
945 getParsingFlags(config).invalidMonth = input;
946 }
947 });
948
949 // LOCALES
950
951 var defaultLocaleMonths =
952 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
953 '_'
954 ),
955 defaultLocaleMonthsShort =
956 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
957 MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
958 defaultMonthsShortRegex = matchWord,
959 defaultMonthsRegex = matchWord;
960
961 function localeMonths(m, format) {
962 if (!m) {
963 return isArray(this._months)
964 ? this._months
965 : this._months['standalone'];
966 }
967 return isArray(this._months)
968 ? this._months[m.month()]
969 : this._months[
970 (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
971 ? 'format'
972 : 'standalone'
973 ][m.month()];
974 }
975
976 function localeMonthsShort(m, format) {
977 if (!m) {
978 return isArray(this._monthsShort)
979 ? this._monthsShort
980 : this._monthsShort['standalone'];
981 }
982 return isArray(this._monthsShort)
983 ? this._monthsShort[m.month()]
984 : this._monthsShort[
985 MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
986 ][m.month()];
987 }
988
989 function handleStrictParse(monthName, format, strict) {
990 var i,
991 ii,
992 mom,
993 llc = monthName.toLocaleLowerCase();
994 if (!this._monthsParse) {
995 // this is not used
996 this._monthsParse = [];
997 this._longMonthsParse = [];
998 this._shortMonthsParse = [];
999 for (i = 0; i < 12; ++i) {
1000 mom = createUTC([2000, i]);
1001 this._shortMonthsParse[i] = this.monthsShort(
1002 mom,
1003 ''
1004 ).toLocaleLowerCase();
1005 this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
1006 }
1007 }
1008
1009 if (strict) {
1010 if (format === 'MMM') {
1011 ii = indexOf.call(this._shortMonthsParse, llc);
1012 return ii !== -1 ? ii : null;
1013 } else {
1014 ii = indexOf.call(this._longMonthsParse, llc);
1015 return ii !== -1 ? ii : null;
1016 }
1017 } else {
1018 if (format === 'MMM') {
1019 ii = indexOf.call(this._shortMonthsParse, llc);
1020 if (ii !== -1) {
1021 return ii;
1022 }
1023 ii = indexOf.call(this._longMonthsParse, llc);
1024 return ii !== -1 ? ii : null;
1025 } else {
1026 ii = indexOf.call(this._longMonthsParse, llc);
1027 if (ii !== -1) {
1028 return ii;
1029 }
1030 ii = indexOf.call(this._shortMonthsParse, llc);
1031 return ii !== -1 ? ii : null;
1032 }
1033 }
1034 }
1035
1036 function localeMonthsParse(monthName, format, strict) {
1037 var i, mom, regex;
1038
1039 if (this._monthsParseExact) {
1040 return handleStrictParse.call(this, monthName, format, strict);
1041 }
1042
1043 if (!this._monthsParse) {
1044 this._monthsParse = [];
1045 this._longMonthsParse = [];
1046 this._shortMonthsParse = [];
1047 }
1048
1049 // TODO: add sorting
1050 // Sorting makes sure if one month (or abbr) is a prefix of another
1051 // see sorting in computeMonthsParse
1052 for (i = 0; i < 12; i++) {
1053 // make the regex if we don't have it already
1054 mom = createUTC([2000, i]);
1055 if (strict && !this._longMonthsParse[i]) {
1056 this._longMonthsParse[i] = new RegExp(
1057 '^' + this.months(mom, '').replace('.', '') + '$',
1058 'i'
1059 );
1060 this._shortMonthsParse[i] = new RegExp(
1061 '^' + this.monthsShort(mom, '').replace('.', '') + '$',
1062 'i'
1063 );
1064 }
1065 if (!strict && !this._monthsParse[i]) {
1066 regex =
1067 '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1068 this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1069 }
1070 // test the regex
1071 if (
1072 strict &&
1073 format === 'MMMM' &&
1074 this._longMonthsParse[i].test(monthName)
1075 ) {
1076 return i;
1077 } else if (
1078 strict &&
1079 format === 'MMM' &&
1080 this._shortMonthsParse[i].test(monthName)
1081 ) {
1082 return i;
1083 } else if (!strict && this._monthsParse[i].test(monthName)) {
1084 return i;
1085 }
1086 }
1087 }
1088
1089 // MOMENTS
1090
1091 function setMonth(mom, value) {
1092 var dayOfMonth;
1093
1094 if (!mom.isValid()) {
1095 // No op
1096 return mom;
1097 }
1098
1099 if (typeof value === 'string') {
1100 if (/^\d+$/.test(value)) {
1101 value = toInt(value);
1102 } else {
1103 value = mom.localeData().monthsParse(value);
1104 // TODO: Another silent failure?
1105 if (!isNumber(value)) {
1106 return mom;
1107 }
1108 }
1109 }
1110
1111 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1112 mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1113 return mom;
1114 }
1115
1116 function getSetMonth(value) {
1117 if (value != null) {
1118 setMonth(this, value);
1119 hooks.updateOffset(this, true);
1120 return this;
1121 } else {
1122 return get(this, 'Month');
1123 }
1124 }
1125
1126 function getDaysInMonth() {
1127 return daysInMonth(this.year(), this.month());
1128 }
1129
1130 function monthsShortRegex(isStrict) {
1131 if (this._monthsParseExact) {
1132 if (!hasOwnProp(this, '_monthsRegex')) {
1133 computeMonthsParse.call(this);
1134 }
1135 if (isStrict) {
1136 return this._monthsShortStrictRegex;
1137 } else {
1138 return this._monthsShortRegex;
1139 }
1140 } else {
1141 if (!hasOwnProp(this, '_monthsShortRegex')) {
1142 this._monthsShortRegex = defaultMonthsShortRegex;
1143 }
1144 return this._monthsShortStrictRegex && isStrict
1145 ? this._monthsShortStrictRegex
1146 : this._monthsShortRegex;
1147 }
1148 }
1149
1150 function monthsRegex(isStrict) {
1151 if (this._monthsParseExact) {
1152 if (!hasOwnProp(this, '_monthsRegex')) {
1153 computeMonthsParse.call(this);
1154 }
1155 if (isStrict) {
1156 return this._monthsStrictRegex;
1157 } else {
1158 return this._monthsRegex;
1159 }
1160 } else {
1161 if (!hasOwnProp(this, '_monthsRegex')) {
1162 this._monthsRegex = defaultMonthsRegex;
1163 }
1164 return this._monthsStrictRegex && isStrict
1165 ? this._monthsStrictRegex
1166 : this._monthsRegex;
1167 }
1168 }
1169
1170 function computeMonthsParse() {
1171 function cmpLenRev(a, b) {
1172 return b.length - a.length;
1173 }
1174
1175 var shortPieces = [],
1176 longPieces = [],
1177 mixedPieces = [],
1178 i,
1179 mom;
1180 for (i = 0; i < 12; i++) {
1181 // make the regex if we don't have it already
1182 mom = createUTC([2000, i]);
1183 shortPieces.push(this.monthsShort(mom, ''));
1184 longPieces.push(this.months(mom, ''));
1185 mixedPieces.push(this.months(mom, ''));
1186 mixedPieces.push(this.monthsShort(mom, ''));
1187 }
1188 // Sorting makes sure if one month (or abbr) is a prefix of another it
1189 // will match the longer piece.
1190 shortPieces.sort(cmpLenRev);
1191 longPieces.sort(cmpLenRev);
1192 mixedPieces.sort(cmpLenRev);
1193 for (i = 0; i < 12; i++) {
1194 shortPieces[i] = regexEscape(shortPieces[i]);
1195 longPieces[i] = regexEscape(longPieces[i]);
1196 }
1197 for (i = 0; i < 24; i++) {
1198 mixedPieces[i] = regexEscape(mixedPieces[i]);
1199 }
1200
1201 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1202 this._monthsShortRegex = this._monthsRegex;
1203 this._monthsStrictRegex = new RegExp(
1204 '^(' + longPieces.join('|') + ')',
1205 'i'
1206 );
1207 this._monthsShortStrictRegex = new RegExp(
1208 '^(' + shortPieces.join('|') + ')',
1209 'i'
1210 );
1211 }
1212
1213 // FORMATTING
1214
1215 addFormatToken('Y', 0, 0, function () {
1216 var y = this.year();
1217 return y <= 9999 ? zeroFill(y, 4) : '+' + y;
1218 });
1219
1220 addFormatToken(0, ['YY', 2], 0, function () {
1221 return this.year() % 100;
1222 });
1223
1224 addFormatToken(0, ['YYYY', 4], 0, 'year');
1225 addFormatToken(0, ['YYYYY', 5], 0, 'year');
1226 addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1227
1228 // ALIASES
1229
1230 addUnitAlias('year', 'y');
1231
1232 // PRIORITIES
1233
1234 addUnitPriority('year', 1);
1235
1236 // PARSING
1237
1238 addRegexToken('Y', matchSigned);
1239 addRegexToken('YY', match1to2, match2);
1240 addRegexToken('YYYY', match1to4, match4);
1241 addRegexToken('YYYYY', match1to6, match6);
1242 addRegexToken('YYYYYY', match1to6, match6);
1243
1244 addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1245 addParseToken('YYYY', function (input, array) {
1246 array[YEAR] =
1247 input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1248 });
1249 addParseToken('YY', function (input, array) {
1250 array[YEAR] = hooks.parseTwoDigitYear(input);
1251 });
1252 addParseToken('Y', function (input, array) {
1253 array[YEAR] = parseInt(input, 10);
1254 });
1255
1256 // HELPERS
1257
1258 function daysInYear(year) {
1259 return isLeapYear(year) ? 366 : 365;
1260 }
1261
1262 // HOOKS
1263
1264 hooks.parseTwoDigitYear = function (input) {
1265 return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1266 };
1267
1268 // MOMENTS
1269
1270 var getSetYear = makeGetSet('FullYear', true);
1271
1272 function getIsLeapYear() {
1273 return isLeapYear(this.year());
1274 }
1275
1276 function createDate(y, m, d, h, M, s, ms) {
1277 // can't just apply() to create a date:
1278 // https://stackoverflow.com/q/181348
1279 var date;
1280 // the date constructor remaps years 0-99 to 1900-1999
1281 if (y < 100 && y >= 0) {
1282 // preserve leap years using a full 400 year cycle, then reset
1283 date = new Date(y + 400, m, d, h, M, s, ms);
1284 if (isFinite(date.getFullYear())) {
1285 date.setFullYear(y);
1286 }
1287 } else {
1288 date = new Date(y, m, d, h, M, s, ms);
1289 }
1290
1291 return date;
1292 }
1293
1294 function createUTCDate(y) {
1295 var date, args;
1296 // the Date.UTC function remaps years 0-99 to 1900-1999
1297 if (y < 100 && y >= 0) {
1298 args = Array.prototype.slice.call(arguments);
1299 // preserve leap years using a full 400 year cycle, then reset
1300 args[0] = y + 400;
1301 date = new Date(Date.UTC.apply(null, args));
1302 if (isFinite(date.getUTCFullYear())) {
1303 date.setUTCFullYear(y);
1304 }
1305 } else {
1306 date = new Date(Date.UTC.apply(null, arguments));
1307 }
1308
1309 return date;
1310 }
1311
1312 // start-of-first-week - start-of-year
1313 function firstWeekOffset(year, dow, doy) {
1314 var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1315 fwd = 7 + dow - doy,
1316 // first-week day local weekday -- which local weekday is fwd
1317 fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1318
1319 return -fwdlw + fwd - 1;
1320 }
1321
1322 // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1323 function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1324 var localWeekday = (7 + weekday - dow) % 7,
1325 weekOffset = firstWeekOffset(year, dow, doy),
1326 dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1327 resYear,
1328 resDayOfYear;
1329
1330 if (dayOfYear <= 0) {
1331 resYear = year - 1;
1332 resDayOfYear = daysInYear(resYear) + dayOfYear;
1333 } else if (dayOfYear > daysInYear(year)) {
1334 resYear = year + 1;
1335 resDayOfYear = dayOfYear - daysInYear(year);
1336 } else {
1337 resYear = year;
1338 resDayOfYear = dayOfYear;
1339 }
1340
1341 return {
1342 year: resYear,
1343 dayOfYear: resDayOfYear,
1344 };
1345 }
1346
1347 function weekOfYear(mom, dow, doy) {
1348 var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1349 week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1350 resWeek,
1351 resYear;
1352
1353 if (week < 1) {
1354 resYear = mom.year() - 1;
1355 resWeek = week + weeksInYear(resYear, dow, doy);
1356 } else if (week > weeksInYear(mom.year(), dow, doy)) {
1357 resWeek = week - weeksInYear(mom.year(), dow, doy);
1358 resYear = mom.year() + 1;
1359 } else {
1360 resYear = mom.year();
1361 resWeek = week;
1362 }
1363
1364 return {
1365 week: resWeek,
1366 year: resYear,
1367 };
1368 }
1369
1370 function weeksInYear(year, dow, doy) {
1371 var weekOffset = firstWeekOffset(year, dow, doy),
1372 weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1373 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1374 }
1375
1376 // FORMATTING
1377
1378 addFormatToken('w', ['ww', 2], 'wo', 'week');
1379 addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1380
1381 // ALIASES
1382
1383 addUnitAlias('week', 'w');
1384 addUnitAlias('isoWeek', 'W');
1385
1386 // PRIORITIES
1387
1388 addUnitPriority('week', 5);
1389 addUnitPriority('isoWeek', 5);
1390
1391 // PARSING
1392
1393 addRegexToken('w', match1to2);
1394 addRegexToken('ww', match1to2, match2);
1395 addRegexToken('W', match1to2);
1396 addRegexToken('WW', match1to2, match2);
1397
1398 addWeekParseToken(
1399 ['w', 'ww', 'W', 'WW'],
1400 function (input, week, config, token) {
1401 week[token.substr(0, 1)] = toInt(input);
1402 }
1403 );
1404
1405 // HELPERS
1406
1407 // LOCALES
1408
1409 function localeWeek(mom) {
1410 return weekOfYear(mom, this._week.dow, this._week.doy).week;
1411 }
1412
1413 var defaultLocaleWeek = {
1414 dow: 0, // Sunday is the first day of the week.
1415 doy: 6, // The week that contains Jan 6th is the first week of the year.
1416 };
1417
1418 function localeFirstDayOfWeek() {
1419 return this._week.dow;
1420 }
1421
1422 function localeFirstDayOfYear() {
1423 return this._week.doy;
1424 }
1425
1426 // MOMENTS
1427
1428 function getSetWeek(input) {
1429 var week = this.localeData().week(this);
1430 return input == null ? week : this.add((input - week) * 7, 'd');
1431 }
1432
1433 function getSetISOWeek(input) {
1434 var week = weekOfYear(this, 1, 4).week;
1435 return input == null ? week : this.add((input - week) * 7, 'd');
1436 }
1437
1438 // FORMATTING
1439
1440 addFormatToken('d', 0, 'do', 'day');
1441
1442 addFormatToken('dd', 0, 0, function (format) {
1443 return this.localeData().weekdaysMin(this, format);
1444 });
1445
1446 addFormatToken('ddd', 0, 0, function (format) {
1447 return this.localeData().weekdaysShort(this, format);
1448 });
1449
1450 addFormatToken('dddd', 0, 0, function (format) {
1451 return this.localeData().weekdays(this, format);
1452 });
1453
1454 addFormatToken('e', 0, 0, 'weekday');
1455 addFormatToken('E', 0, 0, 'isoWeekday');
1456
1457 // ALIASES
1458
1459 addUnitAlias('day', 'd');
1460 addUnitAlias('weekday', 'e');
1461 addUnitAlias('isoWeekday', 'E');
1462
1463 // PRIORITY
1464 addUnitPriority('day', 11);
1465 addUnitPriority('weekday', 11);
1466 addUnitPriority('isoWeekday', 11);
1467
1468 // PARSING
1469
1470 addRegexToken('d', match1to2);
1471 addRegexToken('e', match1to2);
1472 addRegexToken('E', match1to2);
1473 addRegexToken('dd', function (isStrict, locale) {
1474 return locale.weekdaysMinRegex(isStrict);
1475 });
1476 addRegexToken('ddd', function (isStrict, locale) {
1477 return locale.weekdaysShortRegex(isStrict);
1478 });
1479 addRegexToken('dddd', function (isStrict, locale) {
1480 return locale.weekdaysRegex(isStrict);
1481 });
1482
1483 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1484 var weekday = config._locale.weekdaysParse(input, token, config._strict);
1485 // if we didn't get a weekday name, mark the date as invalid
1486 if (weekday != null) {
1487 week.d = weekday;
1488 } else {
1489 getParsingFlags(config).invalidWeekday = input;
1490 }
1491 });
1492
1493 addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1494 week[token] = toInt(input);
1495 });
1496
1497 // HELPERS
1498
1499 function parseWeekday(input, locale) {
1500 if (typeof input !== 'string') {
1501 return input;
1502 }
1503
1504 if (!isNaN(input)) {
1505 return parseInt(input, 10);
1506 }
1507
1508 input = locale.weekdaysParse(input);
1509 if (typeof input === 'number') {
1510 return input;
1511 }
1512
1513 return null;
1514 }
1515
1516 function parseIsoWeekday(input, locale) {
1517 if (typeof input === 'string') {
1518 return locale.weekdaysParse(input) % 7 || 7;
1519 }
1520 return isNaN(input) ? null : input;
1521 }
1522
1523 // LOCALES
1524 function shiftWeekdays(ws, n) {
1525 return ws.slice(n, 7).concat(ws.slice(0, n));
1526 }
1527
1528 var defaultLocaleWeekdays =
1529 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
1530 defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
1531 defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
1532 defaultWeekdaysRegex = matchWord,
1533 defaultWeekdaysShortRegex = matchWord,
1534 defaultWeekdaysMinRegex = matchWord;
1535
1536 function localeWeekdays(m, format) {
1537 var weekdays = isArray(this._weekdays)
1538 ? this._weekdays
1539 : this._weekdays[
1540 m && m !== true && this._weekdays.isFormat.test(format)
1541 ? 'format'
1542 : 'standalone'
1543 ];
1544 return m === true
1545 ? shiftWeekdays(weekdays, this._week.dow)
1546 : m
1547 ? weekdays[m.day()]
1548 : weekdays;
1549 }
1550
1551 function localeWeekdaysShort(m) {
1552 return m === true
1553 ? shiftWeekdays(this._weekdaysShort, this._week.dow)
1554 : m
1555 ? this._weekdaysShort[m.day()]
1556 : this._weekdaysShort;
1557 }
1558
1559 function localeWeekdaysMin(m) {
1560 return m === true
1561 ? shiftWeekdays(this._weekdaysMin, this._week.dow)
1562 : m
1563 ? this._weekdaysMin[m.day()]
1564 : this._weekdaysMin;
1565 }
1566
1567 function handleStrictParse$1(weekdayName, format, strict) {
1568 var i,
1569 ii,
1570 mom,
1571 llc = weekdayName.toLocaleLowerCase();
1572 if (!this._weekdaysParse) {
1573 this._weekdaysParse = [];
1574 this._shortWeekdaysParse = [];
1575 this._minWeekdaysParse = [];
1576
1577 for (i = 0; i < 7; ++i) {
1578 mom = createUTC([2000, 1]).day(i);
1579 this._minWeekdaysParse[i] = this.weekdaysMin(
1580 mom,
1581 ''
1582 ).toLocaleLowerCase();
1583 this._shortWeekdaysParse[i] = this.weekdaysShort(
1584 mom,
1585 ''
1586 ).toLocaleLowerCase();
1587 this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1588 }
1589 }
1590
1591 if (strict) {
1592 if (format === 'dddd') {
1593 ii = indexOf.call(this._weekdaysParse, llc);
1594 return ii !== -1 ? ii : null;
1595 } else if (format === 'ddd') {
1596 ii = indexOf.call(this._shortWeekdaysParse, llc);
1597 return ii !== -1 ? ii : null;
1598 } else {
1599 ii = indexOf.call(this._minWeekdaysParse, llc);
1600 return ii !== -1 ? ii : null;
1601 }
1602 } else {
1603 if (format === 'dddd') {
1604 ii = indexOf.call(this._weekdaysParse, llc);
1605 if (ii !== -1) {
1606 return ii;
1607 }
1608 ii = indexOf.call(this._shortWeekdaysParse, llc);
1609 if (ii !== -1) {
1610 return ii;
1611 }
1612 ii = indexOf.call(this._minWeekdaysParse, llc);
1613 return ii !== -1 ? ii : null;
1614 } else if (format === 'ddd') {
1615 ii = indexOf.call(this._shortWeekdaysParse, llc);
1616 if (ii !== -1) {
1617 return ii;
1618 }
1619 ii = indexOf.call(this._weekdaysParse, llc);
1620 if (ii !== -1) {
1621 return ii;
1622 }
1623 ii = indexOf.call(this._minWeekdaysParse, llc);
1624 return ii !== -1 ? ii : null;
1625 } else {
1626 ii = indexOf.call(this._minWeekdaysParse, llc);
1627 if (ii !== -1) {
1628 return ii;
1629 }
1630 ii = indexOf.call(this._weekdaysParse, llc);
1631 if (ii !== -1) {
1632 return ii;
1633 }
1634 ii = indexOf.call(this._shortWeekdaysParse, llc);
1635 return ii !== -1 ? ii : null;
1636 }
1637 }
1638 }
1639
1640 function localeWeekdaysParse(weekdayName, format, strict) {
1641 var i, mom, regex;
1642
1643 if (this._weekdaysParseExact) {
1644 return handleStrictParse$1.call(this, weekdayName, format, strict);
1645 }
1646
1647 if (!this._weekdaysParse) {
1648 this._weekdaysParse = [];
1649 this._minWeekdaysParse = [];
1650 this._shortWeekdaysParse = [];
1651 this._fullWeekdaysParse = [];
1652 }
1653
1654 for (i = 0; i < 7; i++) {
1655 // make the regex if we don't have it already
1656
1657 mom = createUTC([2000, 1]).day(i);
1658 if (strict && !this._fullWeekdaysParse[i]) {
1659 this._fullWeekdaysParse[i] = new RegExp(
1660 '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
1661 'i'
1662 );
1663 this._shortWeekdaysParse[i] = new RegExp(
1664 '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
1665 'i'
1666 );
1667 this._minWeekdaysParse[i] = new RegExp(
1668 '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
1669 'i'
1670 );
1671 }
1672 if (!this._weekdaysParse[i]) {
1673 regex =
1674 '^' +
1675 this.weekdays(mom, '') +
1676 '|^' +
1677 this.weekdaysShort(mom, '') +
1678 '|^' +
1679 this.weekdaysMin(mom, '');
1680 this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1681 }
1682 // test the regex
1683 if (
1684 strict &&
1685 format === 'dddd' &&
1686 this._fullWeekdaysParse[i].test(weekdayName)
1687 ) {
1688 return i;
1689 } else if (
1690 strict &&
1691 format === 'ddd' &&
1692 this._shortWeekdaysParse[i].test(weekdayName)
1693 ) {
1694 return i;
1695 } else if (
1696 strict &&
1697 format === 'dd' &&
1698 this._minWeekdaysParse[i].test(weekdayName)
1699 ) {
1700 return i;
1701 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1702 return i;
1703 }
1704 }
1705 }
1706
1707 // MOMENTS
1708
1709 function getSetDayOfWeek(input) {
1710 if (!this.isValid()) {
1711 return input != null ? this : NaN;
1712 }
1713 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1714 if (input != null) {
1715 input = parseWeekday(input, this.localeData());
1716 return this.add(input - day, 'd');
1717 } else {
1718 return day;
1719 }
1720 }
1721
1722 function getSetLocaleDayOfWeek(input) {
1723 if (!this.isValid()) {
1724 return input != null ? this : NaN;
1725 }
1726 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1727 return input == null ? weekday : this.add(input - weekday, 'd');
1728 }
1729
1730 function getSetISODayOfWeek(input) {
1731 if (!this.isValid()) {
1732 return input != null ? this : NaN;
1733 }
1734
1735 // behaves the same as moment#day except
1736 // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1737 // as a setter, sunday should belong to the previous week.
1738
1739 if (input != null) {
1740 var weekday = parseIsoWeekday(input, this.localeData());
1741 return this.day(this.day() % 7 ? weekday : weekday - 7);
1742 } else {
1743 return this.day() || 7;
1744 }
1745 }
1746
1747 function weekdaysRegex(isStrict) {
1748 if (this._weekdaysParseExact) {
1749 if (!hasOwnProp(this, '_weekdaysRegex')) {
1750 computeWeekdaysParse.call(this);
1751 }
1752 if (isStrict) {
1753 return this._weekdaysStrictRegex;
1754 } else {
1755 return this._weekdaysRegex;
1756 }
1757 } else {
1758 if (!hasOwnProp(this, '_weekdaysRegex')) {
1759 this._weekdaysRegex = defaultWeekdaysRegex;
1760 }
1761 return this._weekdaysStrictRegex && isStrict
1762 ? this._weekdaysStrictRegex
1763 : this._weekdaysRegex;
1764 }
1765 }
1766
1767 function weekdaysShortRegex(isStrict) {
1768 if (this._weekdaysParseExact) {
1769 if (!hasOwnProp(this, '_weekdaysRegex')) {
1770 computeWeekdaysParse.call(this);
1771 }
1772 if (isStrict) {
1773 return this._weekdaysShortStrictRegex;
1774 } else {
1775 return this._weekdaysShortRegex;
1776 }
1777 } else {
1778 if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1779 this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1780 }
1781 return this._weekdaysShortStrictRegex && isStrict
1782 ? this._weekdaysShortStrictRegex
1783 : this._weekdaysShortRegex;
1784 }
1785 }
1786
1787 function weekdaysMinRegex(isStrict) {
1788 if (this._weekdaysParseExact) {
1789 if (!hasOwnProp(this, '_weekdaysRegex')) {
1790 computeWeekdaysParse.call(this);
1791 }
1792 if (isStrict) {
1793 return this._weekdaysMinStrictRegex;
1794 } else {
1795 return this._weekdaysMinRegex;
1796 }
1797 } else {
1798 if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1799 this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1800 }
1801 return this._weekdaysMinStrictRegex && isStrict
1802 ? this._weekdaysMinStrictRegex
1803 : this._weekdaysMinRegex;
1804 }
1805 }
1806
1807 function computeWeekdaysParse() {
1808 function cmpLenRev(a, b) {
1809 return b.length - a.length;
1810 }
1811
1812 var minPieces = [],
1813 shortPieces = [],
1814 longPieces = [],
1815 mixedPieces = [],
1816 i,
1817 mom,
1818 minp,
1819 shortp,
1820 longp;
1821 for (i = 0; i < 7; i++) {
1822 // make the regex if we don't have it already
1823 mom = createUTC([2000, 1]).day(i);
1824 minp = regexEscape(this.weekdaysMin(mom, ''));
1825 shortp = regexEscape(this.weekdaysShort(mom, ''));
1826 longp = regexEscape(this.weekdays(mom, ''));
1827 minPieces.push(minp);
1828 shortPieces.push(shortp);
1829 longPieces.push(longp);
1830 mixedPieces.push(minp);
1831 mixedPieces.push(shortp);
1832 mixedPieces.push(longp);
1833 }
1834 // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1835 // will match the longer piece.
1836 minPieces.sort(cmpLenRev);
1837 shortPieces.sort(cmpLenRev);
1838 longPieces.sort(cmpLenRev);
1839 mixedPieces.sort(cmpLenRev);
1840
1841 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1842 this._weekdaysShortRegex = this._weekdaysRegex;
1843 this._weekdaysMinRegex = this._weekdaysRegex;
1844
1845 this._weekdaysStrictRegex = new RegExp(
1846 '^(' + longPieces.join('|') + ')',
1847 'i'
1848 );
1849 this._weekdaysShortStrictRegex = new RegExp(
1850 '^(' + shortPieces.join('|') + ')',
1851 'i'
1852 );
1853 this._weekdaysMinStrictRegex = new RegExp(
1854 '^(' + minPieces.join('|') + ')',
1855 'i'
1856 );
1857 }
1858
1859 // FORMATTING
1860
1861 function hFormat() {
1862 return this.hours() % 12 || 12;
1863 }
1864
1865 function kFormat() {
1866 return this.hours() || 24;
1867 }
1868
1869 addFormatToken('H', ['HH', 2], 0, 'hour');
1870 addFormatToken('h', ['hh', 2], 0, hFormat);
1871 addFormatToken('k', ['kk', 2], 0, kFormat);
1872
1873 addFormatToken('hmm', 0, 0, function () {
1874 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1875 });
1876
1877 addFormatToken('hmmss', 0, 0, function () {
1878 return (
1879 '' +
1880 hFormat.apply(this) +
1881 zeroFill(this.minutes(), 2) +
1882 zeroFill(this.seconds(), 2)
1883 );
1884 });
1885
1886 addFormatToken('Hmm', 0, 0, function () {
1887 return '' + this.hours() + zeroFill(this.minutes(), 2);
1888 });
1889
1890 addFormatToken('Hmmss', 0, 0, function () {
1891 return (
1892 '' +
1893 this.hours() +
1894 zeroFill(this.minutes(), 2) +
1895 zeroFill(this.seconds(), 2)
1896 );
1897 });
1898
1899 function meridiem(token, lowercase) {
1900 addFormatToken(token, 0, 0, function () {
1901 return this.localeData().meridiem(
1902 this.hours(),
1903 this.minutes(),
1904 lowercase
1905 );
1906 });
1907 }
1908
1909 meridiem('a', true);
1910 meridiem('A', false);
1911
1912 // ALIASES
1913
1914 addUnitAlias('hour', 'h');
1915
1916 // PRIORITY
1917 addUnitPriority('hour', 13);
1918
1919 // PARSING
1920
1921 function matchMeridiem(isStrict, locale) {
1922 return locale._meridiemParse;
1923 }
1924
1925 addRegexToken('a', matchMeridiem);
1926 addRegexToken('A', matchMeridiem);
1927 addRegexToken('H', match1to2);
1928 addRegexToken('h', match1to2);
1929 addRegexToken('k', match1to2);
1930 addRegexToken('HH', match1to2, match2);
1931 addRegexToken('hh', match1to2, match2);
1932 addRegexToken('kk', match1to2, match2);
1933
1934 addRegexToken('hmm', match3to4);
1935 addRegexToken('hmmss', match5to6);
1936 addRegexToken('Hmm', match3to4);
1937 addRegexToken('Hmmss', match5to6);
1938
1939 addParseToken(['H', 'HH'], HOUR);
1940 addParseToken(['k', 'kk'], function (input, array, config) {
1941 var kInput = toInt(input);
1942 array[HOUR] = kInput === 24 ? 0 : kInput;
1943 });
1944 addParseToken(['a', 'A'], function (input, array, config) {
1945 config._isPm = config._locale.isPM(input);
1946 config._meridiem = input;
1947 });
1948 addParseToken(['h', 'hh'], function (input, array, config) {
1949 array[HOUR] = toInt(input);
1950 getParsingFlags(config).bigHour = true;
1951 });
1952 addParseToken('hmm', function (input, array, config) {
1953 var pos = input.length - 2;
1954 array[HOUR] = toInt(input.substr(0, pos));
1955 array[MINUTE] = toInt(input.substr(pos));
1956 getParsingFlags(config).bigHour = true;
1957 });
1958 addParseToken('hmmss', function (input, array, config) {
1959 var pos1 = input.length - 4,
1960 pos2 = input.length - 2;
1961 array[HOUR] = toInt(input.substr(0, pos1));
1962 array[MINUTE] = toInt(input.substr(pos1, 2));
1963 array[SECOND] = toInt(input.substr(pos2));
1964 getParsingFlags(config).bigHour = true;
1965 });
1966 addParseToken('Hmm', function (input, array, config) {
1967 var pos = input.length - 2;
1968 array[HOUR] = toInt(input.substr(0, pos));
1969 array[MINUTE] = toInt(input.substr(pos));
1970 });
1971 addParseToken('Hmmss', function (input, array, config) {
1972 var pos1 = input.length - 4,
1973 pos2 = input.length - 2;
1974 array[HOUR] = toInt(input.substr(0, pos1));
1975 array[MINUTE] = toInt(input.substr(pos1, 2));
1976 array[SECOND] = toInt(input.substr(pos2));
1977 });
1978
1979 // LOCALES
1980
1981 function localeIsPM(input) {
1982 // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1983 // Using charAt should be more compatible.
1984 return (input + '').toLowerCase().charAt(0) === 'p';
1985 }
1986
1987 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
1988 // Setting the hour should keep the time, because the user explicitly
1989 // specified which hour they want. So trying to maintain the same hour (in
1990 // a new timezone) makes sense. Adding/subtracting hours does not follow
1991 // this rule.
1992 getSetHour = makeGetSet('Hours', true);
1993
1994 function localeMeridiem(hours, minutes, isLower) {
1995 if (hours > 11) {
1996 return isLower ? 'pm' : 'PM';
1997 } else {
1998 return isLower ? 'am' : 'AM';
1999 }
2000 }
2001
2002 var baseConfig = {
2003 calendar: defaultCalendar,
2004 longDateFormat: defaultLongDateFormat,
2005 invalidDate: defaultInvalidDate,
2006 ordinal: defaultOrdinal,
2007 dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
2008 relativeTime: defaultRelativeTime,
2009
2010 months: defaultLocaleMonths,
2011 monthsShort: defaultLocaleMonthsShort,
2012
2013 week: defaultLocaleWeek,
2014
2015 weekdays: defaultLocaleWeekdays,
2016 weekdaysMin: defaultLocaleWeekdaysMin,
2017 weekdaysShort: defaultLocaleWeekdaysShort,
2018
2019 meridiemParse: defaultLocaleMeridiemParse,
2020 };
2021
2022 // internal storage for locale config files
2023 var locales = {},
2024 localeFamilies = {},
2025 globalLocale;
2026
2027 function commonPrefix(arr1, arr2) {
2028 var i,
2029 minl = Math.min(arr1.length, arr2.length);
2030 for (i = 0; i < minl; i += 1) {
2031 if (arr1[i] !== arr2[i]) {
2032 return i;
2033 }
2034 }
2035 return minl;
2036 }
2037
2038 function normalizeLocale(key) {
2039 return key ? key.toLowerCase().replace('_', '-') : key;
2040 }
2041
2042 // pick the locale from the array
2043 // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
2044 // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
2045 function chooseLocale(names) {
2046 var i = 0,
2047 j,
2048 next,
2049 locale,
2050 split;
2051
2052 while (i < names.length) {
2053 split = normalizeLocale(names[i]).split('-');
2054 j = split.length;
2055 next = normalizeLocale(names[i + 1]);
2056 next = next ? next.split('-') : null;
2057 while (j > 0) {
2058 locale = loadLocale(split.slice(0, j).join('-'));
2059 if (locale) {
2060 return locale;
2061 }
2062 if (
2063 next &&
2064 next.length >= j &&
2065 commonPrefix(split, next) >= j - 1
2066 ) {
2067 //the next array item is better than a shallower substring of this one
2068 break;
2069 }
2070 j--;
2071 }
2072 i++;
2073 }
2074 return globalLocale;
2075 }
2076
2077 function isLocaleNameSane(name) {
2078 // Prevent names that look like filesystem paths, i.e contain '/' or '\'
2079 return name.match('^[^/\\\\]*$') != null;
2080 }
2081
2082 function loadLocale(name) {
2083 var oldLocale = null,
2084 aliasedRequire;
2085 // TODO: Find a better way to register and load all the locales in Node
2086 if (
2087 locales[name] === undefined &&
2088 typeof module !== 'undefined' &&
2089 module &&
2090 module.exports &&
2091 isLocaleNameSane(name)
2092 ) {
2093 try {
2094 oldLocale = globalLocale._abbr;
2095 aliasedRequire = require;
2096 aliasedRequire('./locale/' + name);
2097 getSetGlobalLocale(oldLocale);
2098 } catch (e) {
2099 // mark as not found to avoid repeating expensive file require call causing high CPU
2100 // when trying to find en-US, en_US, en-us for every format call
2101 locales[name] = null; // null means not found
2102 }
2103 }
2104 return locales[name];
2105 }
2106
2107 // This function will load locale and then set the global locale. If
2108 // no arguments are passed in, it will simply return the current global
2109 // locale key.
2110 function getSetGlobalLocale(key, values) {
2111 var data;
2112 if (key) {
2113 if (isUndefined(values)) {
2114 data = getLocale(key);
2115 } else {
2116 data = defineLocale(key, values);
2117 }
2118
2119 if (data) {
2120 // moment.duration._locale = moment._locale = data;
2121 globalLocale = data;
2122 } else {
2123 if (typeof console !== 'undefined' && console.warn) {
2124 //warn user if arguments are passed but the locale could not be set
2125 console.warn(
2126 'Locale ' + key + ' not found. Did you forget to load it?'
2127 );
2128 }
2129 }
2130 }
2131
2132 return globalLocale._abbr;
2133 }
2134
2135 function defineLocale(name, config) {
2136 if (config !== null) {
2137 var locale,
2138 parentConfig = baseConfig;
2139 config.abbr = name;
2140 if (locales[name] != null) {
2141 deprecateSimple(
2142 'defineLocaleOverride',
2143 'use moment.updateLocale(localeName, config) to change ' +
2144 'an existing locale. moment.defineLocale(localeName, ' +
2145 'config) should only be used for creating a new locale ' +
2146 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
2147 );
2148 parentConfig = locales[name]._config;
2149 } else if (config.parentLocale != null) {
2150 if (locales[config.parentLocale] != null) {
2151 parentConfig = locales[config.parentLocale]._config;
2152 } else {
2153 locale = loadLocale(config.parentLocale);
2154 if (locale != null) {
2155 parentConfig = locale._config;
2156 } else {
2157 if (!localeFamilies[config.parentLocale]) {
2158 localeFamilies[config.parentLocale] = [];
2159 }
2160 localeFamilies[config.parentLocale].push({
2161 name: name,
2162 config: config,
2163 });
2164 return null;
2165 }
2166 }
2167 }
2168 locales[name] = new Locale(mergeConfigs(parentConfig, config));
2169
2170 if (localeFamilies[name]) {
2171 localeFamilies[name].forEach(function (x) {
2172 defineLocale(x.name, x.config);
2173 });
2174 }
2175
2176 // backwards compat for now: also set the locale
2177 // make sure we set the locale AFTER all child locales have been
2178 // created, so we won't end up with the child locale set.
2179 getSetGlobalLocale(name);
2180
2181 return locales[name];
2182 } else {
2183 // useful for testing
2184 delete locales[name];
2185 return null;
2186 }
2187 }
2188
2189 function updateLocale(name, config) {
2190 if (config != null) {
2191 var locale,
2192 tmpLocale,
2193 parentConfig = baseConfig;
2194
2195 if (locales[name] != null && locales[name].parentLocale != null) {
2196 // Update existing child locale in-place to avoid memory-leaks
2197 locales[name].set(mergeConfigs(locales[name]._config, config));
2198 } else {
2199 // MERGE
2200 tmpLocale = loadLocale(name);
2201 if (tmpLocale != null) {
2202 parentConfig = tmpLocale._config;
2203 }
2204 config = mergeConfigs(parentConfig, config);
2205 if (tmpLocale == null) {
2206 // updateLocale is called for creating a new locale
2207 // Set abbr so it will have a name (getters return
2208 // undefined otherwise).
2209 config.abbr = name;
2210 }
2211 locale = new Locale(config);
2212 locale.parentLocale = locales[name];
2213 locales[name] = locale;
2214 }
2215
2216 // backwards compat for now: also set the locale
2217 getSetGlobalLocale(name);
2218 } else {
2219 // pass null for config to unupdate, useful for tests
2220 if (locales[name] != null) {
2221 if (locales[name].parentLocale != null) {
2222 locales[name] = locales[name].parentLocale;
2223 if (name === getSetGlobalLocale()) {
2224 getSetGlobalLocale(name);
2225 }
2226 } else if (locales[name] != null) {
2227 delete locales[name];
2228 }
2229 }
2230 }
2231 return locales[name];
2232 }
2233
2234 // returns locale data
2235 function getLocale(key) {
2236 var locale;
2237
2238 if (key && key._locale && key._locale._abbr) {
2239 key = key._locale._abbr;
2240 }
2241
2242 if (!key) {
2243 return globalLocale;
2244 }
2245
2246 if (!isArray(key)) {
2247 //short-circuit everything else
2248 locale = loadLocale(key);
2249 if (locale) {
2250 return locale;
2251 }
2252 key = [key];
2253 }
2254
2255 return chooseLocale(key);
2256 }
2257
2258 function listLocales() {
2259 return keys(locales);
2260 }
2261
2262 function checkOverflow(m) {
2263 var overflow,
2264 a = m._a;
2265
2266 if (a && getParsingFlags(m).overflow === -2) {
2267 overflow =
2268 a[MONTH] < 0 || a[MONTH] > 11
2269 ? MONTH
2270 : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
2271 ? DATE
2272 : a[HOUR] < 0 ||
2273 a[HOUR] > 24 ||
2274 (a[HOUR] === 24 &&
2275 (a[MINUTE] !== 0 ||
2276 a[SECOND] !== 0 ||
2277 a[MILLISECOND] !== 0))
2278 ? HOUR
2279 : a[MINUTE] < 0 || a[MINUTE] > 59
2280 ? MINUTE
2281 : a[SECOND] < 0 || a[SECOND] > 59
2282 ? SECOND
2283 : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
2284 ? MILLISECOND
2285 : -1;
2286
2287 if (
2288 getParsingFlags(m)._overflowDayOfYear &&
2289 (overflow < YEAR || overflow > DATE)
2290 ) {
2291 overflow = DATE;
2292 }
2293 if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
2294 overflow = WEEK;
2295 }
2296 if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
2297 overflow = WEEKDAY;
2298 }
2299
2300 getParsingFlags(m).overflow = overflow;
2301 }
2302
2303 return m;
2304 }
2305
2306 // iso 8601 regex
2307 // 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)
2308 var extendedIsoRegex =
2309 /^\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)?)?$/,
2310 basicIsoRegex =
2311 /^\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)?)?$/,
2312 tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
2313 isoDates = [
2314 ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2315 ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2316 ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2317 ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2318 ['YYYY-DDD', /\d{4}-\d{3}/],
2319 ['YYYY-MM', /\d{4}-\d\d/, false],
2320 ['YYYYYYMMDD', /[+-]\d{10}/],
2321 ['YYYYMMDD', /\d{8}/],
2322 ['GGGG[W]WWE', /\d{4}W\d{3}/],
2323 ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2324 ['YYYYDDD', /\d{7}/],
2325 ['YYYYMM', /\d{6}/, false],
2326 ['YYYY', /\d{4}/, false],
2327 ],
2328 // iso time formats and regexes
2329 isoTimes = [
2330 ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2331 ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2332 ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2333 ['HH:mm', /\d\d:\d\d/],
2334 ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2335 ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2336 ['HHmmss', /\d\d\d\d\d\d/],
2337 ['HHmm', /\d\d\d\d/],
2338 ['HH', /\d\d/],
2339 ],
2340 aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
2341 // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2342 rfc2822 =
2343 /^(?:(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}))$/,
2344 obsOffsets = {
2345 UT: 0,
2346 GMT: 0,
2347 EDT: -4 * 60,
2348 EST: -5 * 60,
2349 CDT: -5 * 60,
2350 CST: -6 * 60,
2351 MDT: -6 * 60,
2352 MST: -7 * 60,
2353 PDT: -7 * 60,
2354 PST: -8 * 60,
2355 };
2356
2357 // date from iso format
2358 function configFromISO(config) {
2359 var i,
2360 l,
2361 string = config._i,
2362 match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2363 allowTime,
2364 dateFormat,
2365 timeFormat,
2366 tzFormat,
2367 isoDatesLen = isoDates.length,
2368 isoTimesLen = isoTimes.length;
2369
2370 if (match) {
2371 getParsingFlags(config).iso = true;
2372 for (i = 0, l = isoDatesLen; i < l; i++) {
2373 if (isoDates[i][1].exec(match[1])) {
2374 dateFormat = isoDates[i][0];
2375 allowTime = isoDates[i][2] !== false;
2376 break;
2377 }
2378 }
2379 if (dateFormat == null) {
2380 config._isValid = false;
2381 return;
2382 }
2383 if (match[3]) {
2384 for (i = 0, l = isoTimesLen; i < l; i++) {
2385 if (isoTimes[i][1].exec(match[3])) {
2386 // match[2] should be 'T' or space
2387 timeFormat = (match[2] || ' ') + isoTimes[i][0];
2388 break;
2389 }
2390 }
2391 if (timeFormat == null) {
2392 config._isValid = false;
2393 return;
2394 }
2395 }
2396 if (!allowTime && timeFormat != null) {
2397 config._isValid = false;
2398 return;
2399 }
2400 if (match[4]) {
2401 if (tzRegex.exec(match[4])) {
2402 tzFormat = 'Z';
2403 } else {
2404 config._isValid = false;
2405 return;
2406 }
2407 }
2408 config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2409 configFromStringAndFormat(config);
2410 } else {
2411 config._isValid = false;
2412 }
2413 }
2414
2415 function extractFromRFC2822Strings(
2416 yearStr,
2417 monthStr,
2418 dayStr,
2419 hourStr,
2420 minuteStr,
2421 secondStr
2422 ) {
2423 var result = [
2424 untruncateYear(yearStr),
2425 defaultLocaleMonthsShort.indexOf(monthStr),
2426 parseInt(dayStr, 10),
2427 parseInt(hourStr, 10),
2428 parseInt(minuteStr, 10),
2429 ];
2430
2431 if (secondStr) {
2432 result.push(parseInt(secondStr, 10));
2433 }
2434
2435 return result;
2436 }
2437
2438 function untruncateYear(yearStr) {
2439 var year = parseInt(yearStr, 10);
2440 if (year <= 49) {
2441 return 2000 + year;
2442 } else if (year <= 999) {
2443 return 1900 + year;
2444 }
2445 return year;
2446 }
2447
2448 function preprocessRFC2822(s) {
2449 // Remove comments and folding whitespace and replace multiple-spaces with a single space
2450 return s
2451 .replace(/\([^()]*\)|[\n\t]/g, ' ')
2452 .replace(/(\s\s+)/g, ' ')
2453 .replace(/^\s\s*/, '')
2454 .replace(/\s\s*$/, '');
2455 }
2456
2457 function checkWeekday(weekdayStr, parsedInput, config) {
2458 if (weekdayStr) {
2459 // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
2460 var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2461 weekdayActual = new Date(
2462 parsedInput[0],
2463 parsedInput[1],
2464 parsedInput[2]
2465 ).getDay();
2466 if (weekdayProvided !== weekdayActual) {
2467 getParsingFlags(config).weekdayMismatch = true;
2468 config._isValid = false;
2469 return false;
2470 }
2471 }
2472 return true;
2473 }
2474
2475 function calculateOffset(obsOffset, militaryOffset, numOffset) {
2476 if (obsOffset) {
2477 return obsOffsets[obsOffset];
2478 } else if (militaryOffset) {
2479 // the only allowed military tz is Z
2480 return 0;
2481 } else {
2482 var hm = parseInt(numOffset, 10),
2483 m = hm % 100,
2484 h = (hm - m) / 100;
2485 return h * 60 + m;
2486 }
2487 }
2488
2489 // date and time from ref 2822 format
2490 function configFromRFC2822(config) {
2491 var match = rfc2822.exec(preprocessRFC2822(config._i)),
2492 parsedArray;
2493 if (match) {
2494 parsedArray = extractFromRFC2822Strings(
2495 match[4],
2496 match[3],
2497 match[2],
2498 match[5],
2499 match[6],
2500 match[7]
2501 );
2502 if (!checkWeekday(match[1], parsedArray, config)) {
2503 return;
2504 }
2505
2506 config._a = parsedArray;
2507 config._tzm = calculateOffset(match[8], match[9], match[10]);
2508
2509 config._d = createUTCDate.apply(null, config._a);
2510 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2511
2512 getParsingFlags(config).rfc2822 = true;
2513 } else {
2514 config._isValid = false;
2515 }
2516 }
2517
2518 // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
2519 function configFromString(config) {
2520 var matched = aspNetJsonRegex.exec(config._i);
2521 if (matched !== null) {
2522 config._d = new Date(+matched[1]);
2523 return;
2524 }
2525
2526 configFromISO(config);
2527 if (config._isValid === false) {
2528 delete config._isValid;
2529 } else {
2530 return;
2531 }
2532
2533 configFromRFC2822(config);
2534 if (config._isValid === false) {
2535 delete config._isValid;
2536 } else {
2537 return;
2538 }
2539
2540 if (config._strict) {
2541 config._isValid = false;
2542 } else {
2543 // Final attempt, use Input Fallback
2544 hooks.createFromInputFallback(config);
2545 }
2546 }
2547
2548 hooks.createFromInputFallback = deprecate(
2549 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2550 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2551 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2552 function (config) {
2553 config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2554 }
2555 );
2556
2557 // Pick the first defined of two or three arguments.
2558 function defaults(a, b, c) {
2559 if (a != null) {
2560 return a;
2561 }
2562 if (b != null) {
2563 return b;
2564 }
2565 return c;
2566 }
2567
2568 function currentDateArray(config) {
2569 // hooks is actually the exported moment object
2570 var nowValue = new Date(hooks.now());
2571 if (config._useUTC) {
2572 return [
2573 nowValue.getUTCFullYear(),
2574 nowValue.getUTCMonth(),
2575 nowValue.getUTCDate(),
2576 ];
2577 }
2578 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2579 }
2580
2581 // convert an array to a date.
2582 // the array should mirror the parameters below
2583 // note: all values past the year are optional and will default to the lowest possible value.
2584 // [year, month, day , hour, minute, second, millisecond]
2585 function configFromArray(config) {
2586 var i,
2587 date,
2588 input = [],
2589 currentDate,
2590 expectedWeekday,
2591 yearToUse;
2592
2593 if (config._d) {
2594 return;
2595 }
2596
2597 currentDate = currentDateArray(config);
2598
2599 //compute day of the year from weeks and weekdays
2600 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2601 dayOfYearFromWeekInfo(config);
2602 }
2603
2604 //if the day of the year is set, figure out what it is
2605 if (config._dayOfYear != null) {
2606 yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2607
2608 if (
2609 config._dayOfYear > daysInYear(yearToUse) ||
2610 config._dayOfYear === 0
2611 ) {
2612 getParsingFlags(config)._overflowDayOfYear = true;
2613 }
2614
2615 date = createUTCDate(yearToUse, 0, config._dayOfYear);
2616 config._a[MONTH] = date.getUTCMonth();
2617 config._a[DATE] = date.getUTCDate();
2618 }
2619
2620 // Default to current date.
2621 // * if no year, month, day of month are given, default to today
2622 // * if day of month is given, default month and year
2623 // * if month is given, default only year
2624 // * if year is given, don't default anything
2625 for (i = 0; i < 3 && config._a[i] == null; ++i) {
2626 config._a[i] = input[i] = currentDate[i];
2627 }
2628
2629 // Zero out whatever was not defaulted, including time
2630 for (; i < 7; i++) {
2631 config._a[i] = input[i] =
2632 config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
2633 }
2634
2635 // Check for 24:00:00.000
2636 if (
2637 config._a[HOUR] === 24 &&
2638 config._a[MINUTE] === 0 &&
2639 config._a[SECOND] === 0 &&
2640 config._a[MILLISECOND] === 0
2641 ) {
2642 config._nextDay = true;
2643 config._a[HOUR] = 0;
2644 }
2645
2646 config._d = (config._useUTC ? createUTCDate : createDate).apply(
2647 null,
2648 input
2649 );
2650 expectedWeekday = config._useUTC
2651 ? config._d.getUTCDay()
2652 : config._d.getDay();
2653
2654 // Apply timezone offset from input. The actual utcOffset can be changed
2655 // with parseZone.
2656 if (config._tzm != null) {
2657 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2658 }
2659
2660 if (config._nextDay) {
2661 config._a[HOUR] = 24;
2662 }
2663
2664 // check for mismatching day of week
2665 if (
2666 config._w &&
2667 typeof config._w.d !== 'undefined' &&
2668 config._w.d !== expectedWeekday
2669 ) {
2670 getParsingFlags(config).weekdayMismatch = true;
2671 }
2672 }
2673
2674 function dayOfYearFromWeekInfo(config) {
2675 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
2676
2677 w = config._w;
2678 if (w.GG != null || w.W != null || w.E != null) {
2679 dow = 1;
2680 doy = 4;
2681
2682 // TODO: We need to take the current isoWeekYear, but that depends on
2683 // how we interpret now (local, utc, fixed offset). So create
2684 // a now version of current config (take local/utc/offset flags, and
2685 // create now).
2686 weekYear = defaults(
2687 w.GG,
2688 config._a[YEAR],
2689 weekOfYear(createLocal(), 1, 4).year
2690 );
2691 week = defaults(w.W, 1);
2692 weekday = defaults(w.E, 1);
2693 if (weekday < 1 || weekday > 7) {
2694 weekdayOverflow = true;
2695 }
2696 } else {
2697 dow = config._locale._week.dow;
2698 doy = config._locale._week.doy;
2699
2700 curWeek = weekOfYear(createLocal(), dow, doy);
2701
2702 weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2703
2704 // Default to current week.
2705 week = defaults(w.w, curWeek.week);
2706
2707 if (w.d != null) {
2708 // weekday -- low day numbers are considered next week
2709 weekday = w.d;
2710 if (weekday < 0 || weekday > 6) {
2711 weekdayOverflow = true;
2712 }
2713 } else if (w.e != null) {
2714 // local weekday -- counting starts from beginning of week
2715 weekday = w.e + dow;
2716 if (w.e < 0 || w.e > 6) {
2717 weekdayOverflow = true;
2718 }
2719 } else {
2720 // default to beginning of week
2721 weekday = dow;
2722 }
2723 }
2724 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2725 getParsingFlags(config)._overflowWeeks = true;
2726 } else if (weekdayOverflow != null) {
2727 getParsingFlags(config)._overflowWeekday = true;
2728 } else {
2729 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2730 config._a[YEAR] = temp.year;
2731 config._dayOfYear = temp.dayOfYear;
2732 }
2733 }
2734
2735 // constant that refers to the ISO standard
2736 hooks.ISO_8601 = function () {};
2737
2738 // constant that refers to the RFC 2822 form
2739 hooks.RFC_2822 = function () {};
2740
2741 // date from string and format string
2742 function configFromStringAndFormat(config) {
2743 // TODO: Move this to another part of the creation flow to prevent circular deps
2744 if (config._f === hooks.ISO_8601) {
2745 configFromISO(config);
2746 return;
2747 }
2748 if (config._f === hooks.RFC_2822) {
2749 configFromRFC2822(config);
2750 return;
2751 }
2752 config._a = [];
2753 getParsingFlags(config).empty = true;
2754
2755 // This array is used to make a Date, either with `new Date` or `Date.UTC`
2756 var string = '' + config._i,
2757 i,
2758 parsedInput,
2759 tokens,
2760 token,
2761 skipped,
2762 stringLength = string.length,
2763 totalParsedInputLength = 0,
2764 era,
2765 tokenLen;
2766
2767 tokens =
2768 expandFormat(config._f, config._locale).match(formattingTokens) || [];
2769 tokenLen = tokens.length;
2770 for (i = 0; i < tokenLen; i++) {
2771 token = tokens[i];
2772 parsedInput = (string.match(getParseRegexForToken(token, config)) ||
2773 [])[0];
2774 if (parsedInput) {
2775 skipped = string.substr(0, string.indexOf(parsedInput));
2776 if (skipped.length > 0) {
2777 getParsingFlags(config).unusedInput.push(skipped);
2778 }
2779 string = string.slice(
2780 string.indexOf(parsedInput) + parsedInput.length
2781 );
2782 totalParsedInputLength += parsedInput.length;
2783 }
2784 // don't parse if it's not a known token
2785 if (formatTokenFunctions[token]) {
2786 if (parsedInput) {
2787 getParsingFlags(config).empty = false;
2788 } else {
2789 getParsingFlags(config).unusedTokens.push(token);
2790 }
2791 addTimeToArrayFromToken(token, parsedInput, config);
2792 } else if (config._strict && !parsedInput) {
2793 getParsingFlags(config).unusedTokens.push(token);
2794 }
2795 }
2796
2797 // add remaining unparsed input length to the string
2798 getParsingFlags(config).charsLeftOver =
2799 stringLength - totalParsedInputLength;
2800 if (string.length > 0) {
2801 getParsingFlags(config).unusedInput.push(string);
2802 }
2803
2804 // clear _12h flag if hour is <= 12
2805 if (
2806 config._a[HOUR] <= 12 &&
2807 getParsingFlags(config).bigHour === true &&
2808 config._a[HOUR] > 0
2809 ) {
2810 getParsingFlags(config).bigHour = undefined;
2811 }
2812
2813 getParsingFlags(config).parsedDateParts = config._a.slice(0);
2814 getParsingFlags(config).meridiem = config._meridiem;
2815 // handle meridiem
2816 config._a[HOUR] = meridiemFixWrap(
2817 config._locale,
2818 config._a[HOUR],
2819 config._meridiem
2820 );
2821
2822 // handle era
2823 era = getParsingFlags(config).era;
2824 if (era !== null) {
2825 config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
2826 }
2827
2828 configFromArray(config);
2829 checkOverflow(config);
2830 }
2831
2832 function meridiemFixWrap(locale, hour, meridiem) {
2833 var isPm;
2834
2835 if (meridiem == null) {
2836 // nothing to do
2837 return hour;
2838 }
2839 if (locale.meridiemHour != null) {
2840 return locale.meridiemHour(hour, meridiem);
2841 } else if (locale.isPM != null) {
2842 // Fallback
2843 isPm = locale.isPM(meridiem);
2844 if (isPm && hour < 12) {
2845 hour += 12;
2846 }
2847 if (!isPm && hour === 12) {
2848 hour = 0;
2849 }
2850 return hour;
2851 } else {
2852 // this is not supposed to happen
2853 return hour;
2854 }
2855 }
2856
2857 // date from string and array of format strings
2858 function configFromStringAndArray(config) {
2859 var tempConfig,
2860 bestMoment,
2861 scoreToBeat,
2862 i,
2863 currentScore,
2864 validFormatFound,
2865 bestFormatIsValid = false,
2866 configfLen = config._f.length;
2867
2868 if (configfLen === 0) {
2869 getParsingFlags(config).invalidFormat = true;
2870 config._d = new Date(NaN);
2871 return;
2872 }
2873
2874 for (i = 0; i < configfLen; i++) {
2875 currentScore = 0;
2876 validFormatFound = false;
2877 tempConfig = copyConfig({}, config);
2878 if (config._useUTC != null) {
2879 tempConfig._useUTC = config._useUTC;
2880 }
2881 tempConfig._f = config._f[i];
2882 configFromStringAndFormat(tempConfig);
2883
2884 if (isValid(tempConfig)) {
2885 validFormatFound = true;
2886 }
2887
2888 // if there is any input that was not parsed add a penalty for that format
2889 currentScore += getParsingFlags(tempConfig).charsLeftOver;
2890
2891 //or tokens
2892 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2893
2894 getParsingFlags(tempConfig).score = currentScore;
2895
2896 if (!bestFormatIsValid) {
2897 if (
2898 scoreToBeat == null ||
2899 currentScore < scoreToBeat ||
2900 validFormatFound
2901 ) {
2902 scoreToBeat = currentScore;
2903 bestMoment = tempConfig;
2904 if (validFormatFound) {
2905 bestFormatIsValid = true;
2906 }
2907 }
2908 } else {
2909 if (currentScore < scoreToBeat) {
2910 scoreToBeat = currentScore;
2911 bestMoment = tempConfig;
2912 }
2913 }
2914 }
2915
2916 extend(config, bestMoment || tempConfig);
2917 }
2918
2919 function configFromObject(config) {
2920 if (config._d) {
2921 return;
2922 }
2923
2924 var i = normalizeObjectUnits(config._i),
2925 dayOrDate = i.day === undefined ? i.date : i.day;
2926 config._a = map(
2927 [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
2928 function (obj) {
2929 return obj && parseInt(obj, 10);
2930 }
2931 );
2932
2933 configFromArray(config);
2934 }
2935
2936 function createFromConfig(config) {
2937 var res = new Moment(checkOverflow(prepareConfig(config)));
2938 if (res._nextDay) {
2939 // Adding is smart enough around DST
2940 res.add(1, 'd');
2941 res._nextDay = undefined;
2942 }
2943
2944 return res;
2945 }
2946
2947 function prepareConfig(config) {
2948 var input = config._i,
2949 format = config._f;
2950
2951 config._locale = config._locale || getLocale(config._l);
2952
2953 if (input === null || (format === undefined && input === '')) {
2954 return createInvalid({ nullInput: true });
2955 }
2956
2957 if (typeof input === 'string') {
2958 config._i = input = config._locale.preparse(input);
2959 }
2960
2961 if (isMoment(input)) {
2962 return new Moment(checkOverflow(input));
2963 } else if (isDate(input)) {
2964 config._d = input;
2965 } else if (isArray(format)) {
2966 configFromStringAndArray(config);
2967 } else if (format) {
2968 configFromStringAndFormat(config);
2969 } else {
2970 configFromInput(config);
2971 }
2972
2973 if (!isValid(config)) {
2974 config._d = null;
2975 }
2976
2977 return config;
2978 }
2979
2980 function configFromInput(config) {
2981 var input = config._i;
2982 if (isUndefined(input)) {
2983 config._d = new Date(hooks.now());
2984 } else if (isDate(input)) {
2985 config._d = new Date(input.valueOf());
2986 } else if (typeof input === 'string') {
2987 configFromString(config);
2988 } else if (isArray(input)) {
2989 config._a = map(input.slice(0), function (obj) {
2990 return parseInt(obj, 10);
2991 });
2992 configFromArray(config);
2993 } else if (isObject(input)) {
2994 configFromObject(config);
2995 } else if (isNumber(input)) {
2996 // from milliseconds
2997 config._d = new Date(input);
2998 } else {
2999 hooks.createFromInputFallback(config);
3000 }
3001 }
3002
3003 function createLocalOrUTC(input, format, locale, strict, isUTC) {
3004 var c = {};
3005
3006 if (format === true || format === false) {
3007 strict = format;
3008 format = undefined;
3009 }
3010
3011 if (locale === true || locale === false) {
3012 strict = locale;
3013 locale = undefined;
3014 }
3015
3016 if (
3017 (isObject(input) && isObjectEmpty(input)) ||
3018 (isArray(input) && input.length === 0)
3019 ) {
3020 input = undefined;
3021 }
3022 // object construction must be done this way.
3023 // https://github.com/moment/moment/issues/1423
3024 c._isAMomentObject = true;
3025 c._useUTC = c._isUTC = isUTC;
3026 c._l = locale;
3027 c._i = input;
3028 c._f = format;
3029 c._strict = strict;
3030
3031 return createFromConfig(c);
3032 }
3033
3034 function createLocal(input, format, locale, strict) {
3035 return createLocalOrUTC(input, format, locale, strict, false);
3036 }
3037
3038 var prototypeMin = deprecate(
3039 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
3040 function () {
3041 var other = createLocal.apply(null, arguments);
3042 if (this.isValid() && other.isValid()) {
3043 return other < this ? this : other;
3044 } else {
3045 return createInvalid();
3046 }
3047 }
3048 ),
3049 prototypeMax = deprecate(
3050 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
3051 function () {
3052 var other = createLocal.apply(null, arguments);
3053 if (this.isValid() && other.isValid()) {
3054 return other > this ? this : other;
3055 } else {
3056 return createInvalid();
3057 }
3058 }
3059 );
3060
3061 // Pick a moment m from moments so that m[fn](other) is true for all
3062 // other. This relies on the function fn to be transitive.
3063 //
3064 // moments should either be an array of moment objects or an array, whose
3065 // first element is an array of moment objects.
3066 function pickBy(fn, moments) {
3067 var res, i;
3068 if (moments.length === 1 && isArray(moments[0])) {
3069 moments = moments[0];
3070 }
3071 if (!moments.length) {
3072 return createLocal();
3073 }
3074 res = moments[0];
3075 for (i = 1; i < moments.length; ++i) {
3076 if (!moments[i].isValid() || moments[i][fn](res)) {
3077 res = moments[i];
3078 }
3079 }
3080 return res;
3081 }
3082
3083 // TODO: Use [].sort instead?
3084 function min() {
3085 var args = [].slice.call(arguments, 0);
3086
3087 return pickBy('isBefore', args);
3088 }
3089
3090 function max() {
3091 var args = [].slice.call(arguments, 0);
3092
3093 return pickBy('isAfter', args);
3094 }
3095
3096 var now = function () {
3097 return Date.now ? Date.now() : +new Date();
3098 };
3099
3100 var ordering = [
3101 'year',
3102 'quarter',
3103 'month',
3104 'week',
3105 'day',
3106 'hour',
3107 'minute',
3108 'second',
3109 'millisecond',
3110 ];
3111
3112 function isDurationValid(m) {
3113 var key,
3114 unitHasDecimal = false,
3115 i,
3116 orderLen = ordering.length;
3117 for (key in m) {
3118 if (
3119 hasOwnProp(m, key) &&
3120 !(
3121 indexOf.call(ordering, key) !== -1 &&
3122 (m[key] == null || !isNaN(m[key]))
3123 )
3124 ) {
3125 return false;
3126 }
3127 }
3128
3129 for (i = 0; i < orderLen; ++i) {
3130 if (m[ordering[i]]) {
3131 if (unitHasDecimal) {
3132 return false; // only allow non-integers for smallest unit
3133 }
3134 if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
3135 unitHasDecimal = true;
3136 }
3137 }
3138 }
3139
3140 return true;
3141 }
3142
3143 function isValid$1() {
3144 return this._isValid;
3145 }
3146
3147 function createInvalid$1() {
3148 return createDuration(NaN);
3149 }
3150
3151 function Duration(duration) {
3152 var normalizedInput = normalizeObjectUnits(duration),
3153 years = normalizedInput.year || 0,
3154 quarters = normalizedInput.quarter || 0,
3155 months = normalizedInput.month || 0,
3156 weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
3157 days = normalizedInput.day || 0,
3158 hours = normalizedInput.hour || 0,
3159 minutes = normalizedInput.minute || 0,
3160 seconds = normalizedInput.second || 0,
3161 milliseconds = normalizedInput.millisecond || 0;
3162
3163 this._isValid = isDurationValid(normalizedInput);
3164
3165 // representation for dateAddRemove
3166 this._milliseconds =
3167 +milliseconds +
3168 seconds * 1e3 + // 1000
3169 minutes * 6e4 + // 1000 * 60
3170 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
3171 // Because of dateAddRemove treats 24 hours as different from a
3172 // day when working around DST, we need to store them separately
3173 this._days = +days + weeks * 7;
3174 // It is impossible to translate months into days without knowing
3175 // which months you are are talking about, so we have to store
3176 // it separately.
3177 this._months = +months + quarters * 3 + years * 12;
3178
3179 this._data = {};
3180
3181 this._locale = getLocale();
3182
3183 this._bubble();
3184 }
3185
3186 function isDuration(obj) {
3187 return obj instanceof Duration;
3188 }
3189
3190 function absRound(number) {
3191 if (number < 0) {
3192 return Math.round(-1 * number) * -1;
3193 } else {
3194 return Math.round(number);
3195 }
3196 }
3197
3198 // compare two arrays, return the number of differences
3199 function compareArrays(array1, array2, dontConvert) {
3200 var len = Math.min(array1.length, array2.length),
3201 lengthDiff = Math.abs(array1.length - array2.length),
3202 diffs = 0,
3203 i;
3204 for (i = 0; i < len; i++) {
3205 if (
3206 (dontConvert && array1[i] !== array2[i]) ||
3207 (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
3208 ) {
3209 diffs++;
3210 }
3211 }
3212 return diffs + lengthDiff;
3213 }
3214
3215 // FORMATTING
3216
3217 function offset(token, separator) {
3218 addFormatToken(token, 0, 0, function () {
3219 var offset = this.utcOffset(),
3220 sign = '+';
3221 if (offset < 0) {
3222 offset = -offset;
3223 sign = '-';
3224 }
3225 return (
3226 sign +
3227 zeroFill(~~(offset / 60), 2) +
3228 separator +
3229 zeroFill(~~offset % 60, 2)
3230 );
3231 });
3232 }
3233
3234 offset('Z', ':');
3235 offset('ZZ', '');
3236
3237 // PARSING
3238
3239 addRegexToken('Z', matchShortOffset);
3240 addRegexToken('ZZ', matchShortOffset);
3241 addParseToken(['Z', 'ZZ'], function (input, array, config) {
3242 config._useUTC = true;
3243 config._tzm = offsetFromString(matchShortOffset, input);
3244 });
3245
3246 // HELPERS
3247
3248 // timezone chunker
3249 // '+10:00' > ['10', '00']
3250 // '-1530' > ['-15', '30']
3251 var chunkOffset = /([\+\-]|\d\d)/gi;
3252
3253 function offsetFromString(matcher, string) {
3254 var matches = (string || '').match(matcher),
3255 chunk,
3256 parts,
3257 minutes;
3258
3259 if (matches === null) {
3260 return null;
3261 }
3262
3263 chunk = matches[matches.length - 1] || [];
3264 parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
3265 minutes = +(parts[1] * 60) + toInt(parts[2]);
3266
3267 return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
3268 }
3269
3270 // Return a moment from input, that is local/utc/zone equivalent to model.
3271 function cloneWithOffset(input, model) {
3272 var res, diff;
3273 if (model._isUTC) {
3274 res = model.clone();
3275 diff =
3276 (isMoment(input) || isDate(input)
3277 ? input.valueOf()
3278 : createLocal(input).valueOf()) - res.valueOf();
3279 // Use low-level api, because this fn is low-level api.
3280 res._d.setTime(res._d.valueOf() + diff);
3281 hooks.updateOffset(res, false);
3282 return res;
3283 } else {
3284 return createLocal(input).local();
3285 }
3286 }
3287
3288 function getDateOffset(m) {
3289 // On Firefox.24 Date#getTimezoneOffset returns a floating point.
3290 // https://github.com/moment/moment/pull/1871
3291 return -Math.round(m._d.getTimezoneOffset());
3292 }
3293
3294 // HOOKS
3295
3296 // This function will be called whenever a moment is mutated.
3297 // It is intended to keep the offset in sync with the timezone.
3298 hooks.updateOffset = function () {};
3299
3300 // MOMENTS
3301
3302 // keepLocalTime = true means only change the timezone, without
3303 // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
3304 // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
3305 // +0200, so we adjust the time as needed, to be valid.
3306 //
3307 // Keeping the time actually adds/subtracts (one hour)
3308 // from the actual represented time. That is why we call updateOffset
3309 // a second time. In case it wants us to change the offset again
3310 // _changeInProgress == true case, then we have to adjust, because
3311 // there is no such time in the given timezone.
3312 function getSetOffset(input, keepLocalTime, keepMinutes) {
3313 var offset = this._offset || 0,
3314 localAdjust;
3315 if (!this.isValid()) {
3316 return input != null ? this : NaN;
3317 }
3318 if (input != null) {
3319 if (typeof input === 'string') {
3320 input = offsetFromString(matchShortOffset, input);
3321 if (input === null) {
3322 return this;
3323 }
3324 } else if (Math.abs(input) < 16 && !keepMinutes) {
3325 input = input * 60;
3326 }
3327 if (!this._isUTC && keepLocalTime) {
3328 localAdjust = getDateOffset(this);
3329 }
3330 this._offset = input;
3331 this._isUTC = true;
3332 if (localAdjust != null) {
3333 this.add(localAdjust, 'm');
3334 }
3335 if (offset !== input) {
3336 if (!keepLocalTime || this._changeInProgress) {
3337 addSubtract(
3338 this,
3339 createDuration(input - offset, 'm'),
3340 1,
3341 false
3342 );
3343 } else if (!this._changeInProgress) {
3344 this._changeInProgress = true;
3345 hooks.updateOffset(this, true);
3346 this._changeInProgress = null;
3347 }
3348 }
3349 return this;
3350 } else {
3351 return this._isUTC ? offset : getDateOffset(this);
3352 }
3353 }
3354
3355 function getSetZone(input, keepLocalTime) {
3356 if (input != null) {
3357 if (typeof input !== 'string') {
3358 input = -input;
3359 }
3360
3361 this.utcOffset(input, keepLocalTime);
3362
3363 return this;
3364 } else {
3365 return -this.utcOffset();
3366 }
3367 }
3368
3369 function setOffsetToUTC(keepLocalTime) {
3370 return this.utcOffset(0, keepLocalTime);
3371 }
3372
3373 function setOffsetToLocal(keepLocalTime) {
3374 if (this._isUTC) {
3375 this.utcOffset(0, keepLocalTime);
3376 this._isUTC = false;
3377
3378 if (keepLocalTime) {
3379 this.subtract(getDateOffset(this), 'm');
3380 }
3381 }
3382 return this;
3383 }
3384
3385 function setOffsetToParsedOffset() {
3386 if (this._tzm != null) {
3387 this.utcOffset(this._tzm, false, true);
3388 } else if (typeof this._i === 'string') {
3389 var tZone = offsetFromString(matchOffset, this._i);
3390 if (tZone != null) {
3391 this.utcOffset(tZone);
3392 } else {
3393 this.utcOffset(0, true);
3394 }
3395 }
3396 return this;
3397 }
3398
3399 function hasAlignedHourOffset(input) {
3400 if (!this.isValid()) {
3401 return false;
3402 }
3403 input = input ? createLocal(input).utcOffset() : 0;
3404
3405 return (this.utcOffset() - input) % 60 === 0;
3406 }
3407
3408 function isDaylightSavingTime() {
3409 return (
3410 this.utcOffset() > this.clone().month(0).utcOffset() ||
3411 this.utcOffset() > this.clone().month(5).utcOffset()
3412 );
3413 }
3414
3415 function isDaylightSavingTimeShifted() {
3416 if (!isUndefined(this._isDSTShifted)) {
3417 return this._isDSTShifted;
3418 }
3419
3420 var c = {},
3421 other;
3422
3423 copyConfig(c, this);
3424 c = prepareConfig(c);
3425
3426 if (c._a) {
3427 other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
3428 this._isDSTShifted =
3429 this.isValid() && compareArrays(c._a, other.toArray()) > 0;
3430 } else {
3431 this._isDSTShifted = false;
3432 }
3433
3434 return this._isDSTShifted;
3435 }
3436
3437 function isLocal() {
3438 return this.isValid() ? !this._isUTC : false;
3439 }
3440
3441 function isUtcOffset() {
3442 return this.isValid() ? this._isUTC : false;
3443 }
3444
3445 function isUtc() {
3446 return this.isValid() ? this._isUTC && this._offset === 0 : false;
3447 }
3448
3449 // ASP.NET json date format regex
3450 var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
3451 // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3452 // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3453 // and further modified to allow for strings containing both week and day
3454 isoRegex =
3455 /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
3456
3457 function createDuration(input, key) {
3458 var duration = input,
3459 // matching against regexp is expensive, do it on demand
3460 match = null,
3461 sign,
3462 ret,
3463 diffRes;
3464
3465 if (isDuration(input)) {
3466 duration = {
3467 ms: input._milliseconds,
3468 d: input._days,
3469 M: input._months,
3470 };
3471 } else if (isNumber(input) || !isNaN(+input)) {
3472 duration = {};
3473 if (key) {
3474 duration[key] = +input;
3475 } else {
3476 duration.milliseconds = +input;
3477 }
3478 } else if ((match = aspNetRegex.exec(input))) {
3479 sign = match[1] === '-' ? -1 : 1;
3480 duration = {
3481 y: 0,
3482 d: toInt(match[DATE]) * sign,
3483 h: toInt(match[HOUR]) * sign,
3484 m: toInt(match[MINUTE]) * sign,
3485 s: toInt(match[SECOND]) * sign,
3486 ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
3487 };
3488 } else if ((match = isoRegex.exec(input))) {
3489 sign = match[1] === '-' ? -1 : 1;
3490 duration = {
3491 y: parseIso(match[2], sign),
3492 M: parseIso(match[3], sign),
3493 w: parseIso(match[4], sign),
3494 d: parseIso(match[5], sign),
3495 h: parseIso(match[6], sign),
3496 m: parseIso(match[7], sign),
3497 s: parseIso(match[8], sign),
3498 };
3499 } else if (duration == null) {
3500 // checks for null or undefined
3501 duration = {};
3502 } else if (
3503 typeof duration === 'object' &&
3504 ('from' in duration || 'to' in duration)
3505 ) {
3506 diffRes = momentsDifference(
3507 createLocal(duration.from),
3508 createLocal(duration.to)
3509 );
3510
3511 duration = {};
3512 duration.ms = diffRes.milliseconds;
3513 duration.M = diffRes.months;
3514 }
3515
3516 ret = new Duration(duration);
3517
3518 if (isDuration(input) && hasOwnProp(input, '_locale')) {
3519 ret._locale = input._locale;
3520 }
3521
3522 if (isDuration(input) && hasOwnProp(input, '_isValid')) {
3523 ret._isValid = input._isValid;
3524 }
3525
3526 return ret;
3527 }
3528
3529 createDuration.fn = Duration.prototype;
3530 createDuration.invalid = createInvalid$1;
3531
3532 function parseIso(inp, sign) {
3533 // We'd normally use ~~inp for this, but unfortunately it also
3534 // converts floats to ints.
3535 // inp may be undefined, so careful calling replace on it.
3536 var res = inp && parseFloat(inp.replace(',', '.'));
3537 // apply sign while we're at it
3538 return (isNaN(res) ? 0 : res) * sign;
3539 }
3540
3541 function positiveMomentsDifference(base, other) {
3542 var res = {};
3543
3544 res.months =
3545 other.month() - base.month() + (other.year() - base.year()) * 12;
3546 if (base.clone().add(res.months, 'M').isAfter(other)) {
3547 --res.months;
3548 }
3549
3550 res.milliseconds = +other - +base.clone().add(res.months, 'M');
3551
3552 return res;
3553 }
3554
3555 function momentsDifference(base, other) {
3556 var res;
3557 if (!(base.isValid() && other.isValid())) {
3558 return { milliseconds: 0, months: 0 };
3559 }
3560
3561 other = cloneWithOffset(other, base);
3562 if (base.isBefore(other)) {
3563 res = positiveMomentsDifference(base, other);
3564 } else {
3565 res = positiveMomentsDifference(other, base);
3566 res.milliseconds = -res.milliseconds;
3567 res.months = -res.months;
3568 }
3569
3570 return res;
3571 }
3572
3573 // TODO: remove 'name' arg after deprecation is removed
3574 function createAdder(direction, name) {
3575 return function (val, period) {
3576 var dur, tmp;
3577 //invert the arguments, but complain about it
3578 if (period !== null && !isNaN(+period)) {
3579 deprecateSimple(
3580 name,
3581 'moment().' +
3582 name +
3583 '(period, number) is deprecated. Please use moment().' +
3584 name +
3585 '(number, period). ' +
3586 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
3587 );
3588 tmp = val;
3589 val = period;
3590 period = tmp;
3591 }
3592
3593 dur = createDuration(val, period);
3594 addSubtract(this, dur, direction);
3595 return this;
3596 };
3597 }
3598
3599 function addSubtract(mom, duration, isAdding, updateOffset) {
3600 var milliseconds = duration._milliseconds,
3601 days = absRound(duration._days),
3602 months = absRound(duration._months);
3603
3604 if (!mom.isValid()) {
3605 // No op
3606 return;
3607 }
3608
3609 updateOffset = updateOffset == null ? true : updateOffset;
3610
3611 if (months) {
3612 setMonth(mom, get(mom, 'Month') + months * isAdding);
3613 }
3614 if (days) {
3615 set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3616 }
3617 if (milliseconds) {
3618 mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3619 }
3620 if (updateOffset) {
3621 hooks.updateOffset(mom, days || months);
3622 }
3623 }
3624
3625 var add = createAdder(1, 'add'),
3626 subtract = createAdder(-1, 'subtract');
3627
3628 function isString(input) {
3629 return typeof input === 'string' || input instanceof String;
3630 }
3631
3632 // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
3633 function isMomentInput(input) {
3634 return (
3635 isMoment(input) ||
3636 isDate(input) ||
3637 isString(input) ||
3638 isNumber(input) ||
3639 isNumberOrStringArray(input) ||
3640 isMomentInputObject(input) ||
3641 input === null ||
3642 input === undefined
3643 );
3644 }
3645
3646 function isMomentInputObject(input) {
3647 var objectTest = isObject(input) && !isObjectEmpty(input),
3648 propertyTest = false,
3649 properties = [
3650 'years',
3651 'year',
3652 'y',
3653 'months',
3654 'month',
3655 'M',
3656 'days',
3657 'day',
3658 'd',
3659 'dates',
3660 'date',
3661 'D',
3662 'hours',
3663 'hour',
3664 'h',
3665 'minutes',
3666 'minute',
3667 'm',
3668 'seconds',
3669 'second',
3670 's',
3671 'milliseconds',
3672 'millisecond',
3673 'ms',
3674 ],
3675 i,
3676 property,
3677 propertyLen = properties.length;
3678
3679 for (i = 0; i < propertyLen; i += 1) {
3680 property = properties[i];
3681 propertyTest = propertyTest || hasOwnProp(input, property);
3682 }
3683
3684 return objectTest && propertyTest;
3685 }
3686
3687 function isNumberOrStringArray(input) {
3688 var arrayTest = isArray(input),
3689 dataTypeTest = false;
3690 if (arrayTest) {
3691 dataTypeTest =
3692 input.filter(function (item) {
3693 return !isNumber(item) && isString(input);
3694 }).length === 0;
3695 }
3696 return arrayTest && dataTypeTest;
3697 }
3698
3699 function isCalendarSpec(input) {
3700 var objectTest = isObject(input) && !isObjectEmpty(input),
3701 propertyTest = false,
3702 properties = [
3703 'sameDay',
3704 'nextDay',
3705 'lastDay',
3706 'nextWeek',
3707 'lastWeek',
3708 'sameElse',
3709 ],
3710 i,
3711 property;
3712
3713 for (i = 0; i < properties.length; i += 1) {
3714 property = properties[i];
3715 propertyTest = propertyTest || hasOwnProp(input, property);
3716 }
3717
3718 return objectTest && propertyTest;
3719 }
3720
3721 function getCalendarFormat(myMoment, now) {
3722 var diff = myMoment.diff(now, 'days', true);
3723 return diff < -6
3724 ? 'sameElse'
3725 : diff < -1
3726 ? 'lastWeek'
3727 : diff < 0
3728 ? 'lastDay'
3729 : diff < 1
3730 ? 'sameDay'
3731 : diff < 2
3732 ? 'nextDay'
3733 : diff < 7
3734 ? 'nextWeek'
3735 : 'sameElse';
3736 }
3737
3738 function calendar$1(time, formats) {
3739 // Support for single parameter, formats only overload to the calendar function
3740 if (arguments.length === 1) {
3741 if (!arguments[0]) {
3742 time = undefined;
3743 formats = undefined;
3744 } else if (isMomentInput(arguments[0])) {
3745 time = arguments[0];
3746 formats = undefined;
3747 } else if (isCalendarSpec(arguments[0])) {
3748 formats = arguments[0];
3749 time = undefined;
3750 }
3751 }
3752 // We want to compare the start of today, vs this.
3753 // Getting start-of-today depends on whether we're local/utc/offset or not.
3754 var now = time || createLocal(),
3755 sod = cloneWithOffset(now, this).startOf('day'),
3756 format = hooks.calendarFormat(this, sod) || 'sameElse',
3757 output =
3758 formats &&
3759 (isFunction(formats[format])
3760 ? formats[format].call(this, now)
3761 : formats[format]);
3762
3763 return this.format(
3764 output || this.localeData().calendar(format, this, createLocal(now))
3765 );
3766 }
3767
3768 function clone() {
3769 return new Moment(this);
3770 }
3771
3772 function isAfter(input, units) {
3773 var localInput = isMoment(input) ? input : createLocal(input);
3774 if (!(this.isValid() && localInput.isValid())) {
3775 return false;
3776 }
3777 units = normalizeUnits(units) || 'millisecond';
3778 if (units === 'millisecond') {
3779 return this.valueOf() > localInput.valueOf();
3780 } else {
3781 return localInput.valueOf() < this.clone().startOf(units).valueOf();
3782 }
3783 }
3784
3785 function isBefore(input, units) {
3786 var localInput = isMoment(input) ? input : createLocal(input);
3787 if (!(this.isValid() && localInput.isValid())) {
3788 return false;
3789 }
3790 units = normalizeUnits(units) || 'millisecond';
3791 if (units === 'millisecond') {
3792 return this.valueOf() < localInput.valueOf();
3793 } else {
3794 return this.clone().endOf(units).valueOf() < localInput.valueOf();
3795 }
3796 }
3797
3798 function isBetween(from, to, units, inclusivity) {
3799 var localFrom = isMoment(from) ? from : createLocal(from),
3800 localTo = isMoment(to) ? to : createLocal(to);
3801 if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
3802 return false;
3803 }
3804 inclusivity = inclusivity || '()';
3805 return (
3806 (inclusivity[0] === '('
3807 ? this.isAfter(localFrom, units)
3808 : !this.isBefore(localFrom, units)) &&
3809 (inclusivity[1] === ')'
3810 ? this.isBefore(localTo, units)
3811 : !this.isAfter(localTo, units))
3812 );
3813 }
3814
3815 function isSame(input, units) {
3816 var localInput = isMoment(input) ? input : createLocal(input),
3817 inputMs;
3818 if (!(this.isValid() && localInput.isValid())) {
3819 return false;
3820 }
3821 units = normalizeUnits(units) || 'millisecond';
3822 if (units === 'millisecond') {
3823 return this.valueOf() === localInput.valueOf();
3824 } else {
3825 inputMs = localInput.valueOf();
3826 return (
3827 this.clone().startOf(units).valueOf() <= inputMs &&
3828 inputMs <= this.clone().endOf(units).valueOf()
3829 );
3830 }
3831 }
3832
3833 function isSameOrAfter(input, units) {
3834 return this.isSame(input, units) || this.isAfter(input, units);
3835 }
3836
3837 function isSameOrBefore(input, units) {
3838 return this.isSame(input, units) || this.isBefore(input, units);
3839 }
3840
3841 function diff(input, units, asFloat) {
3842 var that, zoneDelta, output;
3843
3844 if (!this.isValid()) {
3845 return NaN;
3846 }
3847
3848 that = cloneWithOffset(input, this);
3849
3850 if (!that.isValid()) {
3851 return NaN;
3852 }
3853
3854 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3855
3856 units = normalizeUnits(units);
3857
3858 switch (units) {
3859 case 'year':
3860 output = monthDiff(this, that) / 12;
3861 break;
3862 case 'month':
3863 output = monthDiff(this, that);
3864 break;
3865 case 'quarter':
3866 output = monthDiff(this, that) / 3;
3867 break;
3868 case 'second':
3869 output = (this - that) / 1e3;
3870 break; // 1000
3871 case 'minute':
3872 output = (this - that) / 6e4;
3873 break; // 1000 * 60
3874 case 'hour':
3875 output = (this - that) / 36e5;
3876 break; // 1000 * 60 * 60
3877 case 'day':
3878 output = (this - that - zoneDelta) / 864e5;
3879 break; // 1000 * 60 * 60 * 24, negate dst
3880 case 'week':
3881 output = (this - that - zoneDelta) / 6048e5;
3882 break; // 1000 * 60 * 60 * 24 * 7, negate dst
3883 default:
3884 output = this - that;
3885 }
3886
3887 return asFloat ? output : absFloor(output);
3888 }
3889
3890 function monthDiff(a, b) {
3891 if (a.date() < b.date()) {
3892 // end-of-month calculations work correct when the start month has more
3893 // days than the end month.
3894 return -monthDiff(b, a);
3895 }
3896 // difference in months
3897 var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
3898 // b is in (anchor - 1 month, anchor + 1 month)
3899 anchor = a.clone().add(wholeMonthDiff, 'months'),
3900 anchor2,
3901 adjust;
3902
3903 if (b - anchor < 0) {
3904 anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3905 // linear across the month
3906 adjust = (b - anchor) / (anchor - anchor2);
3907 } else {
3908 anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3909 // linear across the month
3910 adjust = (b - anchor) / (anchor2 - anchor);
3911 }
3912
3913 //check for negative zero, return zero if negative zero
3914 return -(wholeMonthDiff + adjust) || 0;
3915 }
3916
3917 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3918 hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3919
3920 function toString() {
3921 return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3922 }
3923
3924 function toISOString(keepOffset) {
3925 if (!this.isValid()) {
3926 return null;
3927 }
3928 var utc = keepOffset !== true,
3929 m = utc ? this.clone().utc() : this;
3930 if (m.year() < 0 || m.year() > 9999) {
3931 return formatMoment(
3932 m,
3933 utc
3934 ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
3935 : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
3936 );
3937 }
3938 if (isFunction(Date.prototype.toISOString)) {
3939 // native implementation is ~50x faster, use it when we can
3940 if (utc) {
3941 return this.toDate().toISOString();
3942 } else {
3943 return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
3944 .toISOString()
3945 .replace('Z', formatMoment(m, 'Z'));
3946 }
3947 }
3948 return formatMoment(
3949 m,
3950 utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
3951 );
3952 }
3953
3954 /**
3955 * Return a human readable representation of a moment that can
3956 * also be evaluated to get a new moment which is the same
3957 *
3958 * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3959 */
3960 function inspect() {
3961 if (!this.isValid()) {
3962 return 'moment.invalid(/* ' + this._i + ' */)';
3963 }
3964 var func = 'moment',
3965 zone = '',
3966 prefix,
3967 year,
3968 datetime,
3969 suffix;
3970 if (!this.isLocal()) {
3971 func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3972 zone = 'Z';
3973 }
3974 prefix = '[' + func + '("]';
3975 year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
3976 datetime = '-MM-DD[T]HH:mm:ss.SSS';
3977 suffix = zone + '[")]';
3978
3979 return this.format(prefix + year + datetime + suffix);
3980 }
3981
3982 function format(inputString) {
3983 if (!inputString) {
3984 inputString = this.isUtc()
3985 ? hooks.defaultFormatUtc
3986 : hooks.defaultFormat;
3987 }
3988 var output = formatMoment(this, inputString);
3989 return this.localeData().postformat(output);
3990 }
3991
3992 function from(time, withoutSuffix) {
3993 if (
3994 this.isValid() &&
3995 ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
3996 ) {
3997 return createDuration({ to: this, from: time })
3998 .locale(this.locale())
3999 .humanize(!withoutSuffix);
4000 } else {
4001 return this.localeData().invalidDate();
4002 }
4003 }
4004
4005 function fromNow(withoutSuffix) {
4006 return this.from(createLocal(), withoutSuffix);
4007 }
4008
4009 function to(time, withoutSuffix) {
4010 if (
4011 this.isValid() &&
4012 ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
4013 ) {
4014 return createDuration({ from: this, to: time })
4015 .locale(this.locale())
4016 .humanize(!withoutSuffix);
4017 } else {
4018 return this.localeData().invalidDate();
4019 }
4020 }
4021
4022 function toNow(withoutSuffix) {
4023 return this.to(createLocal(), withoutSuffix);
4024 }
4025
4026 // If passed a locale key, it will set the locale for this
4027 // instance. Otherwise, it will return the locale configuration
4028 // variables for this instance.
4029 function locale(key) {
4030 var newLocaleData;
4031
4032 if (key === undefined) {
4033 return this._locale._abbr;
4034 } else {
4035 newLocaleData = getLocale(key);
4036 if (newLocaleData != null) {
4037 this._locale = newLocaleData;
4038 }
4039 return this;
4040 }
4041 }
4042
4043 var lang = deprecate(
4044 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
4045 function (key) {
4046 if (key === undefined) {
4047 return this.localeData();
4048 } else {
4049 return this.locale(key);
4050 }
4051 }
4052 );
4053
4054 function localeData() {
4055 return this._locale;
4056 }
4057
4058 var MS_PER_SECOND = 1000,
4059 MS_PER_MINUTE = 60 * MS_PER_SECOND,
4060 MS_PER_HOUR = 60 * MS_PER_MINUTE,
4061 MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
4062
4063 // actual modulo - handles negative numbers (for dates before 1970):
4064 function mod$1(dividend, divisor) {
4065 return ((dividend % divisor) + divisor) % divisor;
4066 }
4067
4068 function localStartOfDate(y, m, d) {
4069 // the date constructor remaps years 0-99 to 1900-1999
4070 if (y < 100 && y >= 0) {
4071 // preserve leap years using a full 400 year cycle, then reset
4072 return new Date(y + 400, m, d) - MS_PER_400_YEARS;
4073 } else {
4074 return new Date(y, m, d).valueOf();
4075 }
4076 }
4077
4078 function utcStartOfDate(y, m, d) {
4079 // Date.UTC remaps years 0-99 to 1900-1999
4080 if (y < 100 && y >= 0) {
4081 // preserve leap years using a full 400 year cycle, then reset
4082 return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
4083 } else {
4084 return Date.UTC(y, m, d);
4085 }
4086 }
4087
4088 function startOf(units) {
4089 var time, startOfDate;
4090 units = normalizeUnits(units);
4091 if (units === undefined || units === 'millisecond' || !this.isValid()) {
4092 return this;
4093 }
4094
4095 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4096
4097 switch (units) {
4098 case 'year':
4099 time = startOfDate(this.year(), 0, 1);
4100 break;
4101 case 'quarter':
4102 time = startOfDate(
4103 this.year(),
4104 this.month() - (this.month() % 3),
4105 1
4106 );
4107 break;
4108 case 'month':
4109 time = startOfDate(this.year(), this.month(), 1);
4110 break;
4111 case 'week':
4112 time = startOfDate(
4113 this.year(),
4114 this.month(),
4115 this.date() - this.weekday()
4116 );
4117 break;
4118 case 'isoWeek':
4119 time = startOfDate(
4120 this.year(),
4121 this.month(),
4122 this.date() - (this.isoWeekday() - 1)
4123 );
4124 break;
4125 case 'day':
4126 case 'date':
4127 time = startOfDate(this.year(), this.month(), this.date());
4128 break;
4129 case 'hour':
4130 time = this._d.valueOf();
4131 time -= mod$1(
4132 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4133 MS_PER_HOUR
4134 );
4135 break;
4136 case 'minute':
4137 time = this._d.valueOf();
4138 time -= mod$1(time, MS_PER_MINUTE);
4139 break;
4140 case 'second':
4141 time = this._d.valueOf();
4142 time -= mod$1(time, MS_PER_SECOND);
4143 break;
4144 }
4145
4146 this._d.setTime(time);
4147 hooks.updateOffset(this, true);
4148 return this;
4149 }
4150
4151 function endOf(units) {
4152 var time, startOfDate;
4153 units = normalizeUnits(units);
4154 if (units === undefined || units === 'millisecond' || !this.isValid()) {
4155 return this;
4156 }
4157
4158 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4159
4160 switch (units) {
4161 case 'year':
4162 time = startOfDate(this.year() + 1, 0, 1) - 1;
4163 break;
4164 case 'quarter':
4165 time =
4166 startOfDate(
4167 this.year(),
4168 this.month() - (this.month() % 3) + 3,
4169 1
4170 ) - 1;
4171 break;
4172 case 'month':
4173 time = startOfDate(this.year(), this.month() + 1, 1) - 1;
4174 break;
4175 case 'week':
4176 time =
4177 startOfDate(
4178 this.year(),
4179 this.month(),
4180 this.date() - this.weekday() + 7
4181 ) - 1;
4182 break;
4183 case 'isoWeek':
4184 time =
4185 startOfDate(
4186 this.year(),
4187 this.month(),
4188 this.date() - (this.isoWeekday() - 1) + 7
4189 ) - 1;
4190 break;
4191 case 'day':
4192 case 'date':
4193 time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
4194 break;
4195 case 'hour':
4196 time = this._d.valueOf();
4197 time +=
4198 MS_PER_HOUR -
4199 mod$1(
4200 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4201 MS_PER_HOUR
4202 ) -
4203 1;
4204 break;
4205 case 'minute':
4206 time = this._d.valueOf();
4207 time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
4208 break;
4209 case 'second':
4210 time = this._d.valueOf();
4211 time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
4212 break;
4213 }
4214
4215 this._d.setTime(time);
4216 hooks.updateOffset(this, true);
4217 return this;
4218 }
4219
4220 function valueOf() {
4221 return this._d.valueOf() - (this._offset || 0) * 60000;
4222 }
4223
4224 function unix() {
4225 return Math.floor(this.valueOf() / 1000);
4226 }
4227
4228 function toDate() {
4229 return new Date(this.valueOf());
4230 }
4231
4232 function toArray() {
4233 var m = this;
4234 return [
4235 m.year(),
4236 m.month(),
4237 m.date(),
4238 m.hour(),
4239 m.minute(),
4240 m.second(),
4241 m.millisecond(),
4242 ];
4243 }
4244
4245 function toObject() {
4246 var m = this;
4247 return {
4248 years: m.year(),
4249 months: m.month(),
4250 date: m.date(),
4251 hours: m.hours(),
4252 minutes: m.minutes(),
4253 seconds: m.seconds(),
4254 milliseconds: m.milliseconds(),
4255 };
4256 }
4257
4258 function toJSON() {
4259 // new Date(NaN).toJSON() === null
4260 return this.isValid() ? this.toISOString() : null;
4261 }
4262
4263 function isValid$2() {
4264 return isValid(this);
4265 }
4266
4267 function parsingFlags() {
4268 return extend({}, getParsingFlags(this));
4269 }
4270
4271 function invalidAt() {
4272 return getParsingFlags(this).overflow;
4273 }
4274
4275 function creationData() {
4276 return {
4277 input: this._i,
4278 format: this._f,
4279 locale: this._locale,
4280 isUTC: this._isUTC,
4281 strict: this._strict,
4282 };
4283 }
4284
4285 addFormatToken('N', 0, 0, 'eraAbbr');
4286 addFormatToken('NN', 0, 0, 'eraAbbr');
4287 addFormatToken('NNN', 0, 0, 'eraAbbr');
4288 addFormatToken('NNNN', 0, 0, 'eraName');
4289 addFormatToken('NNNNN', 0, 0, 'eraNarrow');
4290
4291 addFormatToken('y', ['y', 1], 'yo', 'eraYear');
4292 addFormatToken('y', ['yy', 2], 0, 'eraYear');
4293 addFormatToken('y', ['yyy', 3], 0, 'eraYear');
4294 addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
4295
4296 addRegexToken('N', matchEraAbbr);
4297 addRegexToken('NN', matchEraAbbr);
4298 addRegexToken('NNN', matchEraAbbr);
4299 addRegexToken('NNNN', matchEraName);
4300 addRegexToken('NNNNN', matchEraNarrow);
4301
4302 addParseToken(
4303 ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
4304 function (input, array, config, token) {
4305 var era = config._locale.erasParse(input, token, config._strict);
4306 if (era) {
4307 getParsingFlags(config).era = era;
4308 } else {
4309 getParsingFlags(config).invalidEra = input;
4310 }
4311 }
4312 );
4313
4314 addRegexToken('y', matchUnsigned);
4315 addRegexToken('yy', matchUnsigned);
4316 addRegexToken('yyy', matchUnsigned);
4317 addRegexToken('yyyy', matchUnsigned);
4318 addRegexToken('yo', matchEraYearOrdinal);
4319
4320 addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
4321 addParseToken(['yo'], function (input, array, config, token) {
4322 var match;
4323 if (config._locale._eraYearOrdinalRegex) {
4324 match = input.match(config._locale._eraYearOrdinalRegex);
4325 }
4326
4327 if (config._locale.eraYearOrdinalParse) {
4328 array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
4329 } else {
4330 array[YEAR] = parseInt(input, 10);
4331 }
4332 });
4333
4334 function localeEras(m, format) {
4335 var i,
4336 l,
4337 date,
4338 eras = this._eras || getLocale('en')._eras;
4339 for (i = 0, l = eras.length; i < l; ++i) {
4340 switch (typeof eras[i].since) {
4341 case 'string':
4342 // truncate time
4343 date = hooks(eras[i].since).startOf('day');
4344 eras[i].since = date.valueOf();
4345 break;
4346 }
4347
4348 switch (typeof eras[i].until) {
4349 case 'undefined':
4350 eras[i].until = +Infinity;
4351 break;
4352 case 'string':
4353 // truncate time
4354 date = hooks(eras[i].until).startOf('day').valueOf();
4355 eras[i].until = date.valueOf();
4356 break;
4357 }
4358 }
4359 return eras;
4360 }
4361
4362 function localeErasParse(eraName, format, strict) {
4363 var i,
4364 l,
4365 eras = this.eras(),
4366 name,
4367 abbr,
4368 narrow;
4369 eraName = eraName.toUpperCase();
4370
4371 for (i = 0, l = eras.length; i < l; ++i) {
4372 name = eras[i].name.toUpperCase();
4373 abbr = eras[i].abbr.toUpperCase();
4374 narrow = eras[i].narrow.toUpperCase();
4375
4376 if (strict) {
4377 switch (format) {
4378 case 'N':
4379 case 'NN':
4380 case 'NNN':
4381 if (abbr === eraName) {
4382 return eras[i];
4383 }
4384 break;
4385
4386 case 'NNNN':
4387 if (name === eraName) {
4388 return eras[i];
4389 }
4390 break;
4391
4392 case 'NNNNN':
4393 if (narrow === eraName) {
4394 return eras[i];
4395 }
4396 break;
4397 }
4398 } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
4399 return eras[i];
4400 }
4401 }
4402 }
4403
4404 function localeErasConvertYear(era, year) {
4405 var dir = era.since <= era.until ? +1 : -1;
4406 if (year === undefined) {
4407 return hooks(era.since).year();
4408 } else {
4409 return hooks(era.since).year() + (year - era.offset) * dir;
4410 }
4411 }
4412
4413 function getEraName() {
4414 var i,
4415 l,
4416 val,
4417 eras = this.localeData().eras();
4418 for (i = 0, l = eras.length; i < l; ++i) {
4419 // truncate time
4420 val = this.clone().startOf('day').valueOf();
4421
4422 if (eras[i].since <= val && val <= eras[i].until) {
4423 return eras[i].name;
4424 }
4425 if (eras[i].until <= val && val <= eras[i].since) {
4426 return eras[i].name;
4427 }
4428 }
4429
4430 return '';
4431 }
4432
4433 function getEraNarrow() {
4434 var i,
4435 l,
4436 val,
4437 eras = this.localeData().eras();
4438 for (i = 0, l = eras.length; i < l; ++i) {
4439 // truncate time
4440 val = this.clone().startOf('day').valueOf();
4441
4442 if (eras[i].since <= val && val <= eras[i].until) {
4443 return eras[i].narrow;
4444 }
4445 if (eras[i].until <= val && val <= eras[i].since) {
4446 return eras[i].narrow;
4447 }
4448 }
4449
4450 return '';
4451 }
4452
4453 function getEraAbbr() {
4454 var i,
4455 l,
4456 val,
4457 eras = this.localeData().eras();
4458 for (i = 0, l = eras.length; i < l; ++i) {
4459 // truncate time
4460 val = this.clone().startOf('day').valueOf();
4461
4462 if (eras[i].since <= val && val <= eras[i].until) {
4463 return eras[i].abbr;
4464 }
4465 if (eras[i].until <= val && val <= eras[i].since) {
4466 return eras[i].abbr;
4467 }
4468 }
4469
4470 return '';
4471 }
4472
4473 function getEraYear() {
4474 var i,
4475 l,
4476 dir,
4477 val,
4478 eras = this.localeData().eras();
4479 for (i = 0, l = eras.length; i < l; ++i) {
4480 dir = eras[i].since <= eras[i].until ? +1 : -1;
4481
4482 // truncate time
4483 val = this.clone().startOf('day').valueOf();
4484
4485 if (
4486 (eras[i].since <= val && val <= eras[i].until) ||
4487 (eras[i].until <= val && val <= eras[i].since)
4488 ) {
4489 return (
4490 (this.year() - hooks(eras[i].since).year()) * dir +
4491 eras[i].offset
4492 );
4493 }
4494 }
4495
4496 return this.year();
4497 }
4498
4499 function erasNameRegex(isStrict) {
4500 if (!hasOwnProp(this, '_erasNameRegex')) {
4501 computeErasParse.call(this);
4502 }
4503 return isStrict ? this._erasNameRegex : this._erasRegex;
4504 }
4505
4506 function erasAbbrRegex(isStrict) {
4507 if (!hasOwnProp(this, '_erasAbbrRegex')) {
4508 computeErasParse.call(this);
4509 }
4510 return isStrict ? this._erasAbbrRegex : this._erasRegex;
4511 }
4512
4513 function erasNarrowRegex(isStrict) {
4514 if (!hasOwnProp(this, '_erasNarrowRegex')) {
4515 computeErasParse.call(this);
4516 }
4517 return isStrict ? this._erasNarrowRegex : this._erasRegex;
4518 }
4519
4520 function matchEraAbbr(isStrict, locale) {
4521 return locale.erasAbbrRegex(isStrict);
4522 }
4523
4524 function matchEraName(isStrict, locale) {
4525 return locale.erasNameRegex(isStrict);
4526 }
4527
4528 function matchEraNarrow(isStrict, locale) {
4529 return locale.erasNarrowRegex(isStrict);
4530 }
4531
4532 function matchEraYearOrdinal(isStrict, locale) {
4533 return locale._eraYearOrdinalRegex || matchUnsigned;
4534 }
4535
4536 function computeErasParse() {
4537 var abbrPieces = [],
4538 namePieces = [],
4539 narrowPieces = [],
4540 mixedPieces = [],
4541 i,
4542 l,
4543 eras = this.eras();
4544
4545 for (i = 0, l = eras.length; i < l; ++i) {
4546 namePieces.push(regexEscape(eras[i].name));
4547 abbrPieces.push(regexEscape(eras[i].abbr));
4548 narrowPieces.push(regexEscape(eras[i].narrow));
4549
4550 mixedPieces.push(regexEscape(eras[i].name));
4551 mixedPieces.push(regexEscape(eras[i].abbr));
4552 mixedPieces.push(regexEscape(eras[i].narrow));
4553 }
4554
4555 this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
4556 this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
4557 this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
4558 this._erasNarrowRegex = new RegExp(
4559 '^(' + narrowPieces.join('|') + ')',
4560 'i'
4561 );
4562 }
4563
4564 // FORMATTING
4565
4566 addFormatToken(0, ['gg', 2], 0, function () {
4567 return this.weekYear() % 100;
4568 });
4569
4570 addFormatToken(0, ['GG', 2], 0, function () {
4571 return this.isoWeekYear() % 100;
4572 });
4573
4574 function addWeekYearFormatToken(token, getter) {
4575 addFormatToken(0, [token, token.length], 0, getter);
4576 }
4577
4578 addWeekYearFormatToken('gggg', 'weekYear');
4579 addWeekYearFormatToken('ggggg', 'weekYear');
4580 addWeekYearFormatToken('GGGG', 'isoWeekYear');
4581 addWeekYearFormatToken('GGGGG', 'isoWeekYear');
4582
4583 // ALIASES
4584
4585 addUnitAlias('weekYear', 'gg');
4586 addUnitAlias('isoWeekYear', 'GG');
4587
4588 // PRIORITY
4589
4590 addUnitPriority('weekYear', 1);
4591 addUnitPriority('isoWeekYear', 1);
4592
4593 // PARSING
4594
4595 addRegexToken('G', matchSigned);
4596 addRegexToken('g', matchSigned);
4597 addRegexToken('GG', match1to2, match2);
4598 addRegexToken('gg', match1to2, match2);
4599 addRegexToken('GGGG', match1to4, match4);
4600 addRegexToken('gggg', match1to4, match4);
4601 addRegexToken('GGGGG', match1to6, match6);
4602 addRegexToken('ggggg', match1to6, match6);
4603
4604 addWeekParseToken(
4605 ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
4606 function (input, week, config, token) {
4607 week[token.substr(0, 2)] = toInt(input);
4608 }
4609 );
4610
4611 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
4612 week[token] = hooks.parseTwoDigitYear(input);
4613 });
4614
4615 // MOMENTS
4616
4617 function getSetWeekYear(input) {
4618 return getSetWeekYearHelper.call(
4619 this,
4620 input,
4621 this.week(),
4622 this.weekday(),
4623 this.localeData()._week.dow,
4624 this.localeData()._week.doy
4625 );
4626 }
4627
4628 function getSetISOWeekYear(input) {
4629 return getSetWeekYearHelper.call(
4630 this,
4631 input,
4632 this.isoWeek(),
4633 this.isoWeekday(),
4634 1,
4635 4
4636 );
4637 }
4638
4639 function getISOWeeksInYear() {
4640 return weeksInYear(this.year(), 1, 4);
4641 }
4642
4643 function getISOWeeksInISOWeekYear() {
4644 return weeksInYear(this.isoWeekYear(), 1, 4);
4645 }
4646
4647 function getWeeksInYear() {
4648 var weekInfo = this.localeData()._week;
4649 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
4650 }
4651
4652 function getWeeksInWeekYear() {
4653 var weekInfo = this.localeData()._week;
4654 return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
4655 }
4656
4657 function getSetWeekYearHelper(input, week, weekday, dow, doy) {
4658 var weeksTarget;
4659 if (input == null) {
4660 return weekOfYear(this, dow, doy).year;
4661 } else {
4662 weeksTarget = weeksInYear(input, dow, doy);
4663 if (week > weeksTarget) {
4664 week = weeksTarget;
4665 }
4666 return setWeekAll.call(this, input, week, weekday, dow, doy);
4667 }
4668 }
4669
4670 function setWeekAll(weekYear, week, weekday, dow, doy) {
4671 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
4672 date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
4673
4674 this.year(date.getUTCFullYear());
4675 this.month(date.getUTCMonth());
4676 this.date(date.getUTCDate());
4677 return this;
4678 }
4679
4680 // FORMATTING
4681
4682 addFormatToken('Q', 0, 'Qo', 'quarter');
4683
4684 // ALIASES
4685
4686 addUnitAlias('quarter', 'Q');
4687
4688 // PRIORITY
4689
4690 addUnitPriority('quarter', 7);
4691
4692 // PARSING
4693
4694 addRegexToken('Q', match1);
4695 addParseToken('Q', function (input, array) {
4696 array[MONTH] = (toInt(input) - 1) * 3;
4697 });
4698
4699 // MOMENTS
4700
4701 function getSetQuarter(input) {
4702 return input == null
4703 ? Math.ceil((this.month() + 1) / 3)
4704 : this.month((input - 1) * 3 + (this.month() % 3));
4705 }
4706
4707 // FORMATTING
4708
4709 addFormatToken('D', ['DD', 2], 'Do', 'date');
4710
4711 // ALIASES
4712
4713 addUnitAlias('date', 'D');
4714
4715 // PRIORITY
4716 addUnitPriority('date', 9);
4717
4718 // PARSING
4719
4720 addRegexToken('D', match1to2);
4721 addRegexToken('DD', match1to2, match2);
4722 addRegexToken('Do', function (isStrict, locale) {
4723 // TODO: Remove "ordinalParse" fallback in next major release.
4724 return isStrict
4725 ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
4726 : locale._dayOfMonthOrdinalParseLenient;
4727 });
4728
4729 addParseToken(['D', 'DD'], DATE);
4730 addParseToken('Do', function (input, array) {
4731 array[DATE] = toInt(input.match(match1to2)[0]);
4732 });
4733
4734 // MOMENTS
4735
4736 var getSetDayOfMonth = makeGetSet('Date', true);
4737
4738 // FORMATTING
4739
4740 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
4741
4742 // ALIASES
4743
4744 addUnitAlias('dayOfYear', 'DDD');
4745
4746 // PRIORITY
4747 addUnitPriority('dayOfYear', 4);
4748
4749 // PARSING
4750
4751 addRegexToken('DDD', match1to3);
4752 addRegexToken('DDDD', match3);
4753 addParseToken(['DDD', 'DDDD'], function (input, array, config) {
4754 config._dayOfYear = toInt(input);
4755 });
4756
4757 // HELPERS
4758
4759 // MOMENTS
4760
4761 function getSetDayOfYear(input) {
4762 var dayOfYear =
4763 Math.round(
4764 (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
4765 ) + 1;
4766 return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
4767 }
4768
4769 // FORMATTING
4770
4771 addFormatToken('m', ['mm', 2], 0, 'minute');
4772
4773 // ALIASES
4774
4775 addUnitAlias('minute', 'm');
4776
4777 // PRIORITY
4778
4779 addUnitPriority('minute', 14);
4780
4781 // PARSING
4782
4783 addRegexToken('m', match1to2);
4784 addRegexToken('mm', match1to2, match2);
4785 addParseToken(['m', 'mm'], MINUTE);
4786
4787 // MOMENTS
4788
4789 var getSetMinute = makeGetSet('Minutes', false);
4790
4791 // FORMATTING
4792
4793 addFormatToken('s', ['ss', 2], 0, 'second');
4794
4795 // ALIASES
4796
4797 addUnitAlias('second', 's');
4798
4799 // PRIORITY
4800
4801 addUnitPriority('second', 15);
4802
4803 // PARSING
4804
4805 addRegexToken('s', match1to2);
4806 addRegexToken('ss', match1to2, match2);
4807 addParseToken(['s', 'ss'], SECOND);
4808
4809 // MOMENTS
4810
4811 var getSetSecond = makeGetSet('Seconds', false);
4812
4813 // FORMATTING
4814
4815 addFormatToken('S', 0, 0, function () {
4816 return ~~(this.millisecond() / 100);
4817 });
4818
4819 addFormatToken(0, ['SS', 2], 0, function () {
4820 return ~~(this.millisecond() / 10);
4821 });
4822
4823 addFormatToken(0, ['SSS', 3], 0, 'millisecond');
4824 addFormatToken(0, ['SSSS', 4], 0, function () {
4825 return this.millisecond() * 10;
4826 });
4827 addFormatToken(0, ['SSSSS', 5], 0, function () {
4828 return this.millisecond() * 100;
4829 });
4830 addFormatToken(0, ['SSSSSS', 6], 0, function () {
4831 return this.millisecond() * 1000;
4832 });
4833 addFormatToken(0, ['SSSSSSS', 7], 0, function () {
4834 return this.millisecond() * 10000;
4835 });
4836 addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
4837 return this.millisecond() * 100000;
4838 });
4839 addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
4840 return this.millisecond() * 1000000;
4841 });
4842
4843 // ALIASES
4844
4845 addUnitAlias('millisecond', 'ms');
4846
4847 // PRIORITY
4848
4849 addUnitPriority('millisecond', 16);
4850
4851 // PARSING
4852
4853 addRegexToken('S', match1to3, match1);
4854 addRegexToken('SS', match1to3, match2);
4855 addRegexToken('SSS', match1to3, match3);
4856
4857 var token, getSetMillisecond;
4858 for (token = 'SSSS'; token.length <= 9; token += 'S') {
4859 addRegexToken(token, matchUnsigned);
4860 }
4861
4862 function parseMs(input, array) {
4863 array[MILLISECOND] = toInt(('0.' + input) * 1000);
4864 }
4865
4866 for (token = 'S'; token.length <= 9; token += 'S') {
4867 addParseToken(token, parseMs);
4868 }
4869
4870 getSetMillisecond = makeGetSet('Milliseconds', false);
4871
4872 // FORMATTING
4873
4874 addFormatToken('z', 0, 0, 'zoneAbbr');
4875 addFormatToken('zz', 0, 0, 'zoneName');
4876
4877 // MOMENTS
4878
4879 function getZoneAbbr() {
4880 return this._isUTC ? 'UTC' : '';
4881 }
4882
4883 function getZoneName() {
4884 return this._isUTC ? 'Coordinated Universal Time' : '';
4885 }
4886
4887 var proto = Moment.prototype;
4888
4889 proto.add = add;
4890 proto.calendar = calendar$1;
4891 proto.clone = clone;
4892 proto.diff = diff;
4893 proto.endOf = endOf;
4894 proto.format = format;
4895 proto.from = from;
4896 proto.fromNow = fromNow;
4897 proto.to = to;
4898 proto.toNow = toNow;
4899 proto.get = stringGet;
4900 proto.invalidAt = invalidAt;
4901 proto.isAfter = isAfter;
4902 proto.isBefore = isBefore;
4903 proto.isBetween = isBetween;
4904 proto.isSame = isSame;
4905 proto.isSameOrAfter = isSameOrAfter;
4906 proto.isSameOrBefore = isSameOrBefore;
4907 proto.isValid = isValid$2;
4908 proto.lang = lang;
4909 proto.locale = locale;
4910 proto.localeData = localeData;
4911 proto.max = prototypeMax;
4912 proto.min = prototypeMin;
4913 proto.parsingFlags = parsingFlags;
4914 proto.set = stringSet;
4915 proto.startOf = startOf;
4916 proto.subtract = subtract;
4917 proto.toArray = toArray;
4918 proto.toObject = toObject;
4919 proto.toDate = toDate;
4920 proto.toISOString = toISOString;
4921 proto.inspect = inspect;
4922 if (typeof Symbol !== 'undefined' && Symbol.for != null) {
4923 proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
4924 return 'Moment<' + this.format() + '>';
4925 };
4926 }
4927 proto.toJSON = toJSON;
4928 proto.toString = toString;
4929 proto.unix = unix;
4930 proto.valueOf = valueOf;
4931 proto.creationData = creationData;
4932 proto.eraName = getEraName;
4933 proto.eraNarrow = getEraNarrow;
4934 proto.eraAbbr = getEraAbbr;
4935 proto.eraYear = getEraYear;
4936 proto.year = getSetYear;
4937 proto.isLeapYear = getIsLeapYear;
4938 proto.weekYear = getSetWeekYear;
4939 proto.isoWeekYear = getSetISOWeekYear;
4940 proto.quarter = proto.quarters = getSetQuarter;
4941 proto.month = getSetMonth;
4942 proto.daysInMonth = getDaysInMonth;
4943 proto.week = proto.weeks = getSetWeek;
4944 proto.isoWeek = proto.isoWeeks = getSetISOWeek;
4945 proto.weeksInYear = getWeeksInYear;
4946 proto.weeksInWeekYear = getWeeksInWeekYear;
4947 proto.isoWeeksInYear = getISOWeeksInYear;
4948 proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
4949 proto.date = getSetDayOfMonth;
4950 proto.day = proto.days = getSetDayOfWeek;
4951 proto.weekday = getSetLocaleDayOfWeek;
4952 proto.isoWeekday = getSetISODayOfWeek;
4953 proto.dayOfYear = getSetDayOfYear;
4954 proto.hour = proto.hours = getSetHour;
4955 proto.minute = proto.minutes = getSetMinute;
4956 proto.second = proto.seconds = getSetSecond;
4957 proto.millisecond = proto.milliseconds = getSetMillisecond;
4958 proto.utcOffset = getSetOffset;
4959 proto.utc = setOffsetToUTC;
4960 proto.local = setOffsetToLocal;
4961 proto.parseZone = setOffsetToParsedOffset;
4962 proto.hasAlignedHourOffset = hasAlignedHourOffset;
4963 proto.isDST = isDaylightSavingTime;
4964 proto.isLocal = isLocal;
4965 proto.isUtcOffset = isUtcOffset;
4966 proto.isUtc = isUtc;
4967 proto.isUTC = isUtc;
4968 proto.zoneAbbr = getZoneAbbr;
4969 proto.zoneName = getZoneName;
4970 proto.dates = deprecate(
4971 'dates accessor is deprecated. Use date instead.',
4972 getSetDayOfMonth
4973 );
4974 proto.months = deprecate(
4975 'months accessor is deprecated. Use month instead',
4976 getSetMonth
4977 );
4978 proto.years = deprecate(
4979 'years accessor is deprecated. Use year instead',
4980 getSetYear
4981 );
4982 proto.zone = deprecate(
4983 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
4984 getSetZone
4985 );
4986 proto.isDSTShifted = deprecate(
4987 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
4988 isDaylightSavingTimeShifted
4989 );
4990
4991 function createUnix(input) {
4992 return createLocal(input * 1000);
4993 }
4994
4995 function createInZone() {
4996 return createLocal.apply(null, arguments).parseZone();
4997 }
4998
4999 function preParsePostFormat(string) {
5000 return string;
5001 }
5002
5003 var proto$1 = Locale.prototype;
5004
5005 proto$1.calendar = calendar;
5006 proto$1.longDateFormat = longDateFormat;
5007 proto$1.invalidDate = invalidDate;
5008 proto$1.ordinal = ordinal;
5009 proto$1.preparse = preParsePostFormat;
5010 proto$1.postformat = preParsePostFormat;
5011 proto$1.relativeTime = relativeTime;
5012 proto$1.pastFuture = pastFuture;
5013 proto$1.set = set;
5014 proto$1.eras = localeEras;
5015 proto$1.erasParse = localeErasParse;
5016 proto$1.erasConvertYear = localeErasConvertYear;
5017 proto$1.erasAbbrRegex = erasAbbrRegex;
5018 proto$1.erasNameRegex = erasNameRegex;
5019 proto$1.erasNarrowRegex = erasNarrowRegex;
5020
5021 proto$1.months = localeMonths;
5022 proto$1.monthsShort = localeMonthsShort;
5023 proto$1.monthsParse = localeMonthsParse;
5024 proto$1.monthsRegex = monthsRegex;
5025 proto$1.monthsShortRegex = monthsShortRegex;
5026 proto$1.week = localeWeek;
5027 proto$1.firstDayOfYear = localeFirstDayOfYear;
5028 proto$1.firstDayOfWeek = localeFirstDayOfWeek;
5029
5030 proto$1.weekdays = localeWeekdays;
5031 proto$1.weekdaysMin = localeWeekdaysMin;
5032 proto$1.weekdaysShort = localeWeekdaysShort;
5033 proto$1.weekdaysParse = localeWeekdaysParse;
5034
5035 proto$1.weekdaysRegex = weekdaysRegex;
5036 proto$1.weekdaysShortRegex = weekdaysShortRegex;
5037 proto$1.weekdaysMinRegex = weekdaysMinRegex;
5038
5039 proto$1.isPM = localeIsPM;
5040 proto$1.meridiem = localeMeridiem;
5041
5042 function get$1(format, index, field, setter) {
5043 var locale = getLocale(),
5044 utc = createUTC().set(setter, index);
5045 return locale[field](utc, format);
5046 }
5047
5048 function listMonthsImpl(format, index, field) {
5049 if (isNumber(format)) {
5050 index = format;
5051 format = undefined;
5052 }
5053
5054 format = format || '';
5055
5056 if (index != null) {
5057 return get$1(format, index, field, 'month');
5058 }
5059
5060 var i,
5061 out = [];
5062 for (i = 0; i < 12; i++) {
5063 out[i] = get$1(format, i, field, 'month');
5064 }
5065 return out;
5066 }
5067
5068 // ()
5069 // (5)
5070 // (fmt, 5)
5071 // (fmt)
5072 // (true)
5073 // (true, 5)
5074 // (true, fmt, 5)
5075 // (true, fmt)
5076 function listWeekdaysImpl(localeSorted, format, index, field) {
5077 if (typeof localeSorted === 'boolean') {
5078 if (isNumber(format)) {
5079 index = format;
5080 format = undefined;
5081 }
5082
5083 format = format || '';
5084 } else {
5085 format = localeSorted;
5086 index = format;
5087 localeSorted = false;
5088
5089 if (isNumber(format)) {
5090 index = format;
5091 format = undefined;
5092 }
5093
5094 format = format || '';
5095 }
5096
5097 var locale = getLocale(),
5098 shift = localeSorted ? locale._week.dow : 0,
5099 i,
5100 out = [];
5101
5102 if (index != null) {
5103 return get$1(format, (index + shift) % 7, field, 'day');
5104 }
5105
5106 for (i = 0; i < 7; i++) {
5107 out[i] = get$1(format, (i + shift) % 7, field, 'day');
5108 }
5109 return out;
5110 }
5111
5112 function listMonths(format, index) {
5113 return listMonthsImpl(format, index, 'months');
5114 }
5115
5116 function listMonthsShort(format, index) {
5117 return listMonthsImpl(format, index, 'monthsShort');
5118 }
5119
5120 function listWeekdays(localeSorted, format, index) {
5121 return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
5122 }
5123
5124 function listWeekdaysShort(localeSorted, format, index) {
5125 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
5126 }
5127
5128 function listWeekdaysMin(localeSorted, format, index) {
5129 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
5130 }
5131
5132 getSetGlobalLocale('en', {
5133 eras: [
5134 {
5135 since: '0001-01-01',
5136 until: +Infinity,
5137 offset: 1,
5138 name: 'Anno Domini',
5139 narrow: 'AD',
5140 abbr: 'AD',
5141 },
5142 {
5143 since: '0000-12-31',
5144 until: -Infinity,
5145 offset: 1,
5146 name: 'Before Christ',
5147 narrow: 'BC',
5148 abbr: 'BC',
5149 },
5150 ],
5151 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
5152 ordinal: function (number) {
5153 var b = number % 10,
5154 output =
5155 toInt((number % 100) / 10) === 1
5156 ? 'th'
5157 : b === 1
5158 ? 'st'
5159 : b === 2
5160 ? 'nd'
5161 : b === 3
5162 ? 'rd'
5163 : 'th';
5164 return number + output;
5165 },
5166 });
5167
5168 // Side effect imports
5169
5170 hooks.lang = deprecate(
5171 'moment.lang is deprecated. Use moment.locale instead.',
5172 getSetGlobalLocale
5173 );
5174 hooks.langData = deprecate(
5175 'moment.langData is deprecated. Use moment.localeData instead.',
5176 getLocale
5177 );
5178
5179 var mathAbs = Math.abs;
5180
5181 function abs() {
5182 var data = this._data;
5183
5184 this._milliseconds = mathAbs(this._milliseconds);
5185 this._days = mathAbs(this._days);
5186 this._months = mathAbs(this._months);
5187
5188 data.milliseconds = mathAbs(data.milliseconds);
5189 data.seconds = mathAbs(data.seconds);
5190 data.minutes = mathAbs(data.minutes);
5191 data.hours = mathAbs(data.hours);
5192 data.months = mathAbs(data.months);
5193 data.years = mathAbs(data.years);
5194
5195 return this;
5196 }
5197
5198 function addSubtract$1(duration, input, value, direction) {
5199 var other = createDuration(input, value);
5200
5201 duration._milliseconds += direction * other._milliseconds;
5202 duration._days += direction * other._days;
5203 duration._months += direction * other._months;
5204
5205 return duration._bubble();
5206 }
5207
5208 // supports only 2.0-style add(1, 's') or add(duration)
5209 function add$1(input, value) {
5210 return addSubtract$1(this, input, value, 1);
5211 }
5212
5213 // supports only 2.0-style subtract(1, 's') or subtract(duration)
5214 function subtract$1(input, value) {
5215 return addSubtract$1(this, input, value, -1);
5216 }
5217
5218 function absCeil(number) {
5219 if (number < 0) {
5220 return Math.floor(number);
5221 } else {
5222 return Math.ceil(number);
5223 }
5224 }
5225
5226 function bubble() {
5227 var milliseconds = this._milliseconds,
5228 days = this._days,
5229 months = this._months,
5230 data = this._data,
5231 seconds,
5232 minutes,
5233 hours,
5234 years,
5235 monthsFromDays;
5236
5237 // if we have a mix of positive and negative values, bubble down first
5238 // check: https://github.com/moment/moment/issues/2166
5239 if (
5240 !(
5241 (milliseconds >= 0 && days >= 0 && months >= 0) ||
5242 (milliseconds <= 0 && days <= 0 && months <= 0)
5243 )
5244 ) {
5245 milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
5246 days = 0;
5247 months = 0;
5248 }
5249
5250 // The following code bubbles up values, see the tests for
5251 // examples of what that means.
5252 data.milliseconds = milliseconds % 1000;
5253
5254 seconds = absFloor(milliseconds / 1000);
5255 data.seconds = seconds % 60;
5256
5257 minutes = absFloor(seconds / 60);
5258 data.minutes = minutes % 60;
5259
5260 hours = absFloor(minutes / 60);
5261 data.hours = hours % 24;
5262
5263 days += absFloor(hours / 24);
5264
5265 // convert days to months
5266 monthsFromDays = absFloor(daysToMonths(days));
5267 months += monthsFromDays;
5268 days -= absCeil(monthsToDays(monthsFromDays));
5269
5270 // 12 months -> 1 year
5271 years = absFloor(months / 12);
5272 months %= 12;
5273
5274 data.days = days;
5275 data.months = months;
5276 data.years = years;
5277
5278 return this;
5279 }
5280
5281 function daysToMonths(days) {
5282 // 400 years have 146097 days (taking into account leap year rules)
5283 // 400 years have 12 months === 4800
5284 return (days * 4800) / 146097;
5285 }
5286
5287 function monthsToDays(months) {
5288 // the reverse of daysToMonths
5289 return (months * 146097) / 4800;
5290 }
5291
5292 function as(units) {
5293 if (!this.isValid()) {
5294 return NaN;
5295 }
5296 var days,
5297 months,
5298 milliseconds = this._milliseconds;
5299
5300 units = normalizeUnits(units);
5301
5302 if (units === 'month' || units === 'quarter' || units === 'year') {
5303 days = this._days + milliseconds / 864e5;
5304 months = this._months + daysToMonths(days);
5305 switch (units) {
5306 case 'month':
5307 return months;
5308 case 'quarter':
5309 return months / 3;
5310 case 'year':
5311 return months / 12;
5312 }
5313 } else {
5314 // handle milliseconds separately because of floating point math errors (issue #1867)
5315 days = this._days + Math.round(monthsToDays(this._months));
5316 switch (units) {
5317 case 'week':
5318 return days / 7 + milliseconds / 6048e5;
5319 case 'day':
5320 return days + milliseconds / 864e5;
5321 case 'hour':
5322 return days * 24 + milliseconds / 36e5;
5323 case 'minute':
5324 return days * 1440 + milliseconds / 6e4;
5325 case 'second':
5326 return days * 86400 + milliseconds / 1000;
5327 // Math.floor prevents floating point math errors here
5328 case 'millisecond':
5329 return Math.floor(days * 864e5) + milliseconds;
5330 default:
5331 throw new Error('Unknown unit ' + units);
5332 }
5333 }
5334 }
5335
5336 // TODO: Use this.as('ms')?
5337 function valueOf$1() {
5338 if (!this.isValid()) {
5339 return NaN;
5340 }
5341 return (
5342 this._milliseconds +
5343 this._days * 864e5 +
5344 (this._months % 12) * 2592e6 +
5345 toInt(this._months / 12) * 31536e6
5346 );
5347 }
5348
5349 function makeAs(alias) {
5350 return function () {
5351 return this.as(alias);
5352 };
5353 }
5354
5355 var asMilliseconds = makeAs('ms'),
5356 asSeconds = makeAs('s'),
5357 asMinutes = makeAs('m'),
5358 asHours = makeAs('h'),
5359 asDays = makeAs('d'),
5360 asWeeks = makeAs('w'),
5361 asMonths = makeAs('M'),
5362 asQuarters = makeAs('Q'),
5363 asYears = makeAs('y');
5364
5365 function clone$1() {
5366 return createDuration(this);
5367 }
5368
5369 function get$2(units) {
5370 units = normalizeUnits(units);
5371 return this.isValid() ? this[units + 's']() : NaN;
5372 }
5373
5374 function makeGetter(name) {
5375 return function () {
5376 return this.isValid() ? this._data[name] : NaN;
5377 };
5378 }
5379
5380 var milliseconds = makeGetter('milliseconds'),
5381 seconds = makeGetter('seconds'),
5382 minutes = makeGetter('minutes'),
5383 hours = makeGetter('hours'),
5384 days = makeGetter('days'),
5385 months = makeGetter('months'),
5386 years = makeGetter('years');
5387
5388 function weeks() {
5389 return absFloor(this.days() / 7);
5390 }
5391
5392 var round = Math.round,
5393 thresholds = {
5394 ss: 44, // a few seconds to seconds
5395 s: 45, // seconds to minute
5396 m: 45, // minutes to hour
5397 h: 22, // hours to day
5398 d: 26, // days to month/week
5399 w: null, // weeks to month
5400 M: 11, // months to year
5401 };
5402
5403 // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
5404 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
5405 return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
5406 }
5407
5408 function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
5409 var duration = createDuration(posNegDuration).abs(),
5410 seconds = round(duration.as('s')),
5411 minutes = round(duration.as('m')),
5412 hours = round(duration.as('h')),
5413 days = round(duration.as('d')),
5414 months = round(duration.as('M')),
5415 weeks = round(duration.as('w')),
5416 years = round(duration.as('y')),
5417 a =
5418 (seconds <= thresholds.ss && ['s', seconds]) ||
5419 (seconds < thresholds.s && ['ss', seconds]) ||
5420 (minutes <= 1 && ['m']) ||
5421 (minutes < thresholds.m && ['mm', minutes]) ||
5422 (hours <= 1 && ['h']) ||
5423 (hours < thresholds.h && ['hh', hours]) ||
5424 (days <= 1 && ['d']) ||
5425 (days < thresholds.d && ['dd', days]);
5426
5427 if (thresholds.w != null) {
5428 a =
5429 a ||
5430 (weeks <= 1 && ['w']) ||
5431 (weeks < thresholds.w && ['ww', weeks]);
5432 }
5433 a = a ||
5434 (months <= 1 && ['M']) ||
5435 (months < thresholds.M && ['MM', months]) ||
5436 (years <= 1 && ['y']) || ['yy', years];
5437
5438 a[2] = withoutSuffix;
5439 a[3] = +posNegDuration > 0;
5440 a[4] = locale;
5441 return substituteTimeAgo.apply(null, a);
5442 }
5443
5444 // This function allows you to set the rounding function for relative time strings
5445 function getSetRelativeTimeRounding(roundingFunction) {
5446 if (roundingFunction === undefined) {
5447 return round;
5448 }
5449 if (typeof roundingFunction === 'function') {
5450 round = roundingFunction;
5451 return true;
5452 }
5453 return false;
5454 }
5455
5456 // This function allows you to set a threshold for relative time strings
5457 function getSetRelativeTimeThreshold(threshold, limit) {
5458 if (thresholds[threshold] === undefined) {
5459 return false;
5460 }
5461 if (limit === undefined) {
5462 return thresholds[threshold];
5463 }
5464 thresholds[threshold] = limit;
5465 if (threshold === 's') {
5466 thresholds.ss = limit - 1;
5467 }
5468 return true;
5469 }
5470
5471 function humanize(argWithSuffix, argThresholds) {
5472 if (!this.isValid()) {
5473 return this.localeData().invalidDate();
5474 }
5475
5476 var withSuffix = false,
5477 th = thresholds,
5478 locale,
5479 output;
5480
5481 if (typeof argWithSuffix === 'object') {
5482 argThresholds = argWithSuffix;
5483 argWithSuffix = false;
5484 }
5485 if (typeof argWithSuffix === 'boolean') {
5486 withSuffix = argWithSuffix;
5487 }
5488 if (typeof argThresholds === 'object') {
5489 th = Object.assign({}, thresholds, argThresholds);
5490 if (argThresholds.s != null && argThresholds.ss == null) {
5491 th.ss = argThresholds.s - 1;
5492 }
5493 }
5494
5495 locale = this.localeData();
5496 output = relativeTime$1(this, !withSuffix, th, locale);
5497
5498 if (withSuffix) {
5499 output = locale.pastFuture(+this, output);
5500 }
5501
5502 return locale.postformat(output);
5503 }
5504
5505 var abs$1 = Math.abs;
5506
5507 function sign(x) {
5508 return (x > 0) - (x < 0) || +x;
5509 }
5510
5511 function toISOString$1() {
5512 // for ISO strings we do not use the normal bubbling rules:
5513 // * milliseconds bubble up until they become hours
5514 // * days do not bubble at all
5515 // * months bubble up until they become years
5516 // This is because there is no context-free conversion between hours and days
5517 // (think of clock changes)
5518 // and also not between days and months (28-31 days per month)
5519 if (!this.isValid()) {
5520 return this.localeData().invalidDate();
5521 }
5522
5523 var seconds = abs$1(this._milliseconds) / 1000,
5524 days = abs$1(this._days),
5525 months = abs$1(this._months),
5526 minutes,
5527 hours,
5528 years,
5529 s,
5530 total = this.asSeconds(),
5531 totalSign,
5532 ymSign,
5533 daysSign,
5534 hmsSign;
5535
5536 if (!total) {
5537 // this is the same as C#'s (Noda) and python (isodate)...
5538 // but not other JS (goog.date)
5539 return 'P0D';
5540 }
5541
5542 // 3600 seconds -> 60 minutes -> 1 hour
5543 minutes = absFloor(seconds / 60);
5544 hours = absFloor(minutes / 60);
5545 seconds %= 60;
5546 minutes %= 60;
5547
5548 // 12 months -> 1 year
5549 years = absFloor(months / 12);
5550 months %= 12;
5551
5552 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
5553 s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
5554
5555 totalSign = total < 0 ? '-' : '';
5556 ymSign = sign(this._months) !== sign(total) ? '-' : '';
5557 daysSign = sign(this._days) !== sign(total) ? '-' : '';
5558 hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
5559
5560 return (
5561 totalSign +
5562 'P' +
5563 (years ? ymSign + years + 'Y' : '') +
5564 (months ? ymSign + months + 'M' : '') +
5565 (days ? daysSign + days + 'D' : '') +
5566 (hours || minutes || seconds ? 'T' : '') +
5567 (hours ? hmsSign + hours + 'H' : '') +
5568 (minutes ? hmsSign + minutes + 'M' : '') +
5569 (seconds ? hmsSign + s + 'S' : '')
5570 );
5571 }
5572
5573 var proto$2 = Duration.prototype;
5574
5575 proto$2.isValid = isValid$1;
5576 proto$2.abs = abs;
5577 proto$2.add = add$1;
5578 proto$2.subtract = subtract$1;
5579 proto$2.as = as;
5580 proto$2.asMilliseconds = asMilliseconds;
5581 proto$2.asSeconds = asSeconds;
5582 proto$2.asMinutes = asMinutes;
5583 proto$2.asHours = asHours;
5584 proto$2.asDays = asDays;
5585 proto$2.asWeeks = asWeeks;
5586 proto$2.asMonths = asMonths;
5587 proto$2.asQuarters = asQuarters;
5588 proto$2.asYears = asYears;
5589 proto$2.valueOf = valueOf$1;
5590 proto$2._bubble = bubble;
5591 proto$2.clone = clone$1;
5592 proto$2.get = get$2;
5593 proto$2.milliseconds = milliseconds;
5594 proto$2.seconds = seconds;
5595 proto$2.minutes = minutes;
5596 proto$2.hours = hours;
5597 proto$2.days = days;
5598 proto$2.weeks = weeks;
5599 proto$2.months = months;
5600 proto$2.years = years;
5601 proto$2.humanize = humanize;
5602 proto$2.toISOString = toISOString$1;
5603 proto$2.toString = toISOString$1;
5604 proto$2.toJSON = toISOString$1;
5605 proto$2.locale = locale;
5606 proto$2.localeData = localeData;
5607
5608 proto$2.toIsoString = deprecate(
5609 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
5610 toISOString$1
5611 );
5612 proto$2.lang = lang;
5613
5614 // FORMATTING
5615
5616 addFormatToken('X', 0, 0, 'unix');
5617 addFormatToken('x', 0, 0, 'valueOf');
5618
5619 // PARSING
5620
5621 addRegexToken('x', matchSigned);
5622 addRegexToken('X', matchTimestamp);
5623 addParseToken('X', function (input, array, config) {
5624 config._d = new Date(parseFloat(input) * 1000);
5625 });
5626 addParseToken('x', function (input, array, config) {
5627 config._d = new Date(toInt(input));
5628 });
5629
5630 //! moment.js
5631
5632 hooks.version = '2.29.4';
5633
5634 setHookCallback(createLocal);
5635
5636 hooks.fn = proto;
5637 hooks.min = min;
5638 hooks.max = max;
5639 hooks.now = now;
5640 hooks.utc = createUTC;
5641 hooks.unix = createUnix;
5642 hooks.months = listMonths;
5643 hooks.isDate = isDate;
5644 hooks.locale = getSetGlobalLocale;
5645 hooks.invalid = createInvalid;
5646 hooks.duration = createDuration;
5647 hooks.isMoment = isMoment;
5648 hooks.weekdays = listWeekdays;
5649 hooks.parseZone = createInZone;
5650 hooks.localeData = getLocale;
5651 hooks.isDuration = isDuration;
5652 hooks.monthsShort = listMonthsShort;
5653 hooks.weekdaysMin = listWeekdaysMin;
5654 hooks.defineLocale = defineLocale;
5655 hooks.updateLocale = updateLocale;
5656 hooks.locales = listLocales;
5657 hooks.weekdaysShort = listWeekdaysShort;
5658 hooks.normalizeUnits = normalizeUnits;
5659 hooks.relativeTimeRounding = getSetRelativeTimeRounding;
5660 hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
5661 hooks.calendarFormat = getCalendarFormat;
5662 hooks.prototype = proto;
5663
5664 // currently HTML5 input type only supports 24-hour formats
5665 hooks.HTML5_FMT = {
5666 DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
5667 DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
5668 DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
5669 DATE: 'YYYY-MM-DD', // <input type="date" />
5670 TIME: 'HH:mm', // <input type="time" />
5671 TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
5672 TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
5673 WEEK: 'GGGG-[W]WW', // <input type="week" />
5674 MONTH: 'YYYY-MM', // <input type="month" />
5675 };
5676
5677 //! moment.js locale configuration
5678
5679 hooks.defineLocale('af', {
5680 months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
5681 '_'
5682 ),
5683 monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
5684 weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
5685 '_'
5686 ),
5687 weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
5688 weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
5689 meridiemParse: /vm|nm/i,
5690 isPM: function (input) {
5691 return /^nm$/i.test(input);
5692 },
5693 meridiem: function (hours, minutes, isLower) {
5694 if (hours < 12) {
5695 return isLower ? 'vm' : 'VM';
5696 } else {
5697 return isLower ? 'nm' : 'NM';
5698 }
5699 },
5700 longDateFormat: {
5701 LT: 'HH:mm',
5702 LTS: 'HH:mm:ss',
5703 L: 'DD/MM/YYYY',
5704 LL: 'D MMMM YYYY',
5705 LLL: 'D MMMM YYYY HH:mm',
5706 LLLL: 'dddd, D MMMM YYYY HH:mm',
5707 },
5708 calendar: {
5709 sameDay: '[Vandag om] LT',
5710 nextDay: '[Môre om] LT',
5711 nextWeek: 'dddd [om] LT',
5712 lastDay: '[Gister om] LT',
5713 lastWeek: '[Laas] dddd [om] LT',
5714 sameElse: 'L',
5715 },
5716 relativeTime: {
5717 future: 'oor %s',
5718 past: '%s gelede',
5719 s: "'n paar sekondes",
5720 ss: '%d sekondes',
5721 m: "'n minuut",
5722 mm: '%d minute',
5723 h: "'n uur",
5724 hh: '%d ure',
5725 d: "'n dag",
5726 dd: '%d dae',
5727 M: "'n maand",
5728 MM: '%d maande',
5729 y: "'n jaar",
5730 yy: '%d jaar',
5731 },
5732 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
5733 ordinal: function (number) {
5734 return (
5735 number +
5736 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
5737 ); // Thanks to Joris Röling : https://github.com/jjupiter
5738 },
5739 week: {
5740 dow: 1, // Maandag is die eerste dag van die week.
5741 doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
5742 },
5743 });
5744
5745 //! moment.js locale configuration
5746
5747 var pluralForm = function (n) {
5748 return n === 0
5749 ? 0
5750 : n === 1
5751 ? 1
5752 : n === 2
5753 ? 2
5754 : n % 100 >= 3 && n % 100 <= 10
5755 ? 3
5756 : n % 100 >= 11
5757 ? 4
5758 : 5;
5759 },
5760 plurals = {
5761 s: [
5762 'أقل من ثانية',
5763 'ثانية واحدة',
5764 ['ثانيتان', 'ثانيتين'],
5765 '%d ثوان',
5766 '%d ثانية',
5767 '%d ثانية',
5768 ],
5769 m: [
5770 'أقل من دقيقة',
5771 'دقيقة واحدة',
5772 ['دقيقتان', 'دقيقتين'],
5773 '%d دقائق',
5774 '%d دقيقة',
5775 '%d دقيقة',
5776 ],
5777 h: [
5778 'أقل من ساعة',
5779 'ساعة واحدة',
5780 ['ساعتان', 'ساعتين'],
5781 '%d ساعات',
5782 '%d ساعة',
5783 '%d ساعة',
5784 ],
5785 d: [
5786 'أقل من يوم',
5787 'يوم واحد',
5788 ['يومان', 'يومين'],
5789 '%d أيام',
5790 '%d يومًا',
5791 '%d يوم',
5792 ],
5793 M: [
5794 'أقل من شهر',
5795 'شهر واحد',
5796 ['شهران', 'شهرين'],
5797 '%d أشهر',
5798 '%d شهرا',
5799 '%d شهر',
5800 ],
5801 y: [
5802 'أقل من عام',
5803 'عام واحد',
5804 ['عامان', 'عامين'],
5805 '%d أعوام',
5806 '%d عامًا',
5807 '%d عام',
5808 ],
5809 },
5810 pluralize = function (u) {
5811 return function (number, withoutSuffix, string, isFuture) {
5812 var f = pluralForm(number),
5813 str = plurals[u][pluralForm(number)];
5814 if (f === 2) {
5815 str = str[withoutSuffix ? 0 : 1];
5816 }
5817 return str.replace(/%d/i, number);
5818 };
5819 },
5820 months$1 = [
5821 'جانفي',
5822 'فيفري',
5823 'مارس',
5824 'أفريل',
5825 'ماي',
5826 'جوان',
5827 'جويلية',
5828 'أوت',
5829 'سبتمبر',
5830 'أكتوبر',
5831 'نوفمبر',
5832 'ديسمبر',
5833 ];
5834
5835 hooks.defineLocale('ar-dz', {
5836 months: months$1,
5837 monthsShort: months$1,
5838 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5839 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5840 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5841 weekdaysParseExact: true,
5842 longDateFormat: {
5843 LT: 'HH:mm',
5844 LTS: 'HH:mm:ss',
5845 L: 'D/\u200FM/\u200FYYYY',
5846 LL: 'D MMMM YYYY',
5847 LLL: 'D MMMM YYYY HH:mm',
5848 LLLL: 'dddd D MMMM YYYY HH:mm',
5849 },
5850 meridiemParse: /ص|م/,
5851 isPM: function (input) {
5852 return 'م' === input;
5853 },
5854 meridiem: function (hour, minute, isLower) {
5855 if (hour < 12) {
5856 return 'ص';
5857 } else {
5858 return 'م';
5859 }
5860 },
5861 calendar: {
5862 sameDay: '[اليوم عند الساعة] LT',
5863 nextDay: '[غدًا عند الساعة] LT',
5864 nextWeek: 'dddd [عند الساعة] LT',
5865 lastDay: '[أمس عند الساعة] LT',
5866 lastWeek: 'dddd [عند الساعة] LT',
5867 sameElse: 'L',
5868 },
5869 relativeTime: {
5870 future: 'بعد %s',
5871 past: 'منذ %s',
5872 s: pluralize('s'),
5873 ss: pluralize('s'),
5874 m: pluralize('m'),
5875 mm: pluralize('m'),
5876 h: pluralize('h'),
5877 hh: pluralize('h'),
5878 d: pluralize('d'),
5879 dd: pluralize('d'),
5880 M: pluralize('M'),
5881 MM: pluralize('M'),
5882 y: pluralize('y'),
5883 yy: pluralize('y'),
5884 },
5885 postformat: function (string) {
5886 return string.replace(/,/g, '،');
5887 },
5888 week: {
5889 dow: 0, // Sunday is the first day of the week.
5890 doy: 4, // The week that contains Jan 4th is the first week of the year.
5891 },
5892 });
5893
5894 //! moment.js locale configuration
5895
5896 hooks.defineLocale('ar-kw', {
5897 months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
5898 '_'
5899 ),
5900 monthsShort:
5901 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
5902 '_'
5903 ),
5904 weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5905 weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
5906 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5907 weekdaysParseExact: true,
5908 longDateFormat: {
5909 LT: 'HH:mm',
5910 LTS: 'HH:mm:ss',
5911 L: 'DD/MM/YYYY',
5912 LL: 'D MMMM YYYY',
5913 LLL: 'D MMMM YYYY HH:mm',
5914 LLLL: 'dddd D MMMM YYYY HH:mm',
5915 },
5916 calendar: {
5917 sameDay: '[اليوم على الساعة] LT',
5918 nextDay: '[غدا على الساعة] LT',
5919 nextWeek: 'dddd [على الساعة] LT',
5920 lastDay: '[أمس على الساعة] LT',
5921 lastWeek: 'dddd [على الساعة] LT',
5922 sameElse: 'L',
5923 },
5924 relativeTime: {
5925 future: 'في %s',
5926 past: 'منذ %s',
5927 s: 'ثوان',
5928 ss: '%d ثانية',
5929 m: 'دقيقة',
5930 mm: '%d دقائق',
5931 h: 'ساعة',
5932 hh: '%d ساعات',
5933 d: 'يوم',
5934 dd: '%d أيام',
5935 M: 'شهر',
5936 MM: '%d أشهر',
5937 y: 'سنة',
5938 yy: '%d سنوات',
5939 },
5940 week: {
5941 dow: 0, // Sunday is the first day of the week.
5942 doy: 12, // The week that contains Jan 12th is the first week of the year.
5943 },
5944 });
5945
5946 //! moment.js locale configuration
5947
5948 var symbolMap = {
5949 1: '1',
5950 2: '2',
5951 3: '3',
5952 4: '4',
5953 5: '5',
5954 6: '6',
5955 7: '7',
5956 8: '8',
5957 9: '9',
5958 0: '0',
5959 },
5960 pluralForm$1 = function (n) {
5961 return n === 0
5962 ? 0
5963 : n === 1
5964 ? 1
5965 : n === 2
5966 ? 2
5967 : n % 100 >= 3 && n % 100 <= 10
5968 ? 3
5969 : n % 100 >= 11
5970 ? 4
5971 : 5;
5972 },
5973 plurals$1 = {
5974 s: [
5975 'أقل من ثانية',
5976 'ثانية واحدة',
5977 ['ثانيتان', 'ثانيتين'],
5978 '%d ثوان',
5979 '%d ثانية',
5980 '%d ثانية',
5981 ],
5982 m: [
5983 'أقل من دقيقة',
5984 'دقيقة واحدة',
5985 ['دقيقتان', 'دقيقتين'],
5986 '%d دقائق',
5987 '%d دقيقة',
5988 '%d دقيقة',
5989 ],
5990 h: [
5991 'أقل من ساعة',
5992 'ساعة واحدة',
5993 ['ساعتان', 'ساعتين'],
5994 '%d ساعات',
5995 '%d ساعة',
5996 '%d ساعة',
5997 ],
5998 d: [
5999 'أقل من يوم',
6000 'يوم واحد',
6001 ['يومان', 'يومين'],
6002 '%d أيام',
6003 '%d يومًا',
6004 '%d يوم',
6005 ],
6006 M: [
6007 'أقل من شهر',
6008 'شهر واحد',
6009 ['شهران', 'شهرين'],
6010 '%d أشهر',
6011 '%d شهرا',
6012 '%d شهر',
6013 ],
6014 y: [
6015 'أقل من عام',
6016 'عام واحد',
6017 ['عامان', 'عامين'],
6018 '%d أعوام',
6019 '%d عامًا',
6020 '%d عام',
6021 ],
6022 },
6023 pluralize$1 = function (u) {
6024 return function (number, withoutSuffix, string, isFuture) {
6025 var f = pluralForm$1(number),
6026 str = plurals$1[u][pluralForm$1(number)];
6027 if (f === 2) {
6028 str = str[withoutSuffix ? 0 : 1];
6029 }
6030 return str.replace(/%d/i, number);
6031 };
6032 },
6033 months$2 = [
6034 'يناير',
6035 'فبراير',
6036 'مارس',
6037 'أبريل',
6038 'مايو',
6039 'يونيو',
6040 'يوليو',
6041 'أغسطس',
6042 'سبتمبر',
6043 'أكتوبر',
6044 'نوفمبر',
6045 'ديسمبر',
6046 ];
6047
6048 hooks.defineLocale('ar-ly', {
6049 months: months$2,
6050 monthsShort: months$2,
6051 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6052 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6053 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6054 weekdaysParseExact: true,
6055 longDateFormat: {
6056 LT: 'HH:mm',
6057 LTS: 'HH:mm:ss',
6058 L: 'D/\u200FM/\u200FYYYY',
6059 LL: 'D MMMM YYYY',
6060 LLL: 'D MMMM YYYY HH:mm',
6061 LLLL: 'dddd D MMMM YYYY HH:mm',
6062 },
6063 meridiemParse: /ص|م/,
6064 isPM: function (input) {
6065 return 'م' === input;
6066 },
6067 meridiem: function (hour, minute, isLower) {
6068 if (hour < 12) {
6069 return 'ص';
6070 } else {
6071 return 'م';
6072 }
6073 },
6074 calendar: {
6075 sameDay: '[اليوم عند الساعة] LT',
6076 nextDay: '[غدًا عند الساعة] LT',
6077 nextWeek: 'dddd [عند الساعة] LT',
6078 lastDay: '[أمس عند الساعة] LT',
6079 lastWeek: 'dddd [عند الساعة] LT',
6080 sameElse: 'L',
6081 },
6082 relativeTime: {
6083 future: 'بعد %s',
6084 past: 'منذ %s',
6085 s: pluralize$1('s'),
6086 ss: pluralize$1('s'),
6087 m: pluralize$1('m'),
6088 mm: pluralize$1('m'),
6089 h: pluralize$1('h'),
6090 hh: pluralize$1('h'),
6091 d: pluralize$1('d'),
6092 dd: pluralize$1('d'),
6093 M: pluralize$1('M'),
6094 MM: pluralize$1('M'),
6095 y: pluralize$1('y'),
6096 yy: pluralize$1('y'),
6097 },
6098 preparse: function (string) {
6099 return string.replace(/،/g, ',');
6100 },
6101 postformat: function (string) {
6102 return string
6103 .replace(/\d/g, function (match) {
6104 return symbolMap[match];
6105 })
6106 .replace(/,/g, '،');
6107 },
6108 week: {
6109 dow: 6, // Saturday is the first day of the week.
6110 doy: 12, // The week that contains Jan 12th is the first week of the year.
6111 },
6112 });
6113
6114 //! moment.js locale configuration
6115
6116 hooks.defineLocale('ar-ma', {
6117 months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
6118 '_'
6119 ),
6120 monthsShort:
6121 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
6122 '_'
6123 ),
6124 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6125 weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
6126 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6127 weekdaysParseExact: true,
6128 longDateFormat: {
6129 LT: 'HH:mm',
6130 LTS: 'HH:mm:ss',
6131 L: 'DD/MM/YYYY',
6132 LL: 'D MMMM YYYY',
6133 LLL: 'D MMMM YYYY HH:mm',
6134 LLLL: 'dddd D MMMM YYYY HH:mm',
6135 },
6136 calendar: {
6137 sameDay: '[اليوم على الساعة] LT',
6138 nextDay: '[غدا على الساعة] LT',
6139 nextWeek: 'dddd [على الساعة] LT',
6140 lastDay: '[أمس على الساعة] LT',
6141 lastWeek: 'dddd [على الساعة] LT',
6142 sameElse: 'L',
6143 },
6144 relativeTime: {
6145 future: 'في %s',
6146 past: 'منذ %s',
6147 s: 'ثوان',
6148 ss: '%d ثانية',
6149 m: 'دقيقة',
6150 mm: '%d دقائق',
6151 h: 'ساعة',
6152 hh: '%d ساعات',
6153 d: 'يوم',
6154 dd: '%d أيام',
6155 M: 'شهر',
6156 MM: '%d أشهر',
6157 y: 'سنة',
6158 yy: '%d سنوات',
6159 },
6160 week: {
6161 dow: 1, // Monday is the first day of the week.
6162 doy: 4, // The week that contains Jan 4th is the first week of the year.
6163 },
6164 });
6165
6166 //! moment.js locale configuration
6167
6168 var symbolMap$1 = {
6169 1: '١',
6170 2: '٢',
6171 3: '٣',
6172 4: '٤',
6173 5: '٥',
6174 6: '٦',
6175 7: '٧',
6176 8: '٨',
6177 9: '٩',
6178 0: '٠',
6179 },
6180 numberMap = {
6181 '١': '1',
6182 '٢': '2',
6183 '٣': '3',
6184 '٤': '4',
6185 '٥': '5',
6186 '٦': '6',
6187 '٧': '7',
6188 '٨': '8',
6189 '٩': '9',
6190 '٠': '0',
6191 };
6192
6193 hooks.defineLocale('ar-sa', {
6194 months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6195 '_'
6196 ),
6197 monthsShort:
6198 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6199 '_'
6200 ),
6201 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6202 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6203 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6204 weekdaysParseExact: true,
6205 longDateFormat: {
6206 LT: 'HH:mm',
6207 LTS: 'HH:mm:ss',
6208 L: 'DD/MM/YYYY',
6209 LL: 'D MMMM YYYY',
6210 LLL: 'D MMMM YYYY HH:mm',
6211 LLLL: 'dddd D MMMM YYYY HH:mm',
6212 },
6213 meridiemParse: /ص|م/,
6214 isPM: function (input) {
6215 return 'م' === input;
6216 },
6217 meridiem: function (hour, minute, isLower) {
6218 if (hour < 12) {
6219 return 'ص';
6220 } else {
6221 return 'م';
6222 }
6223 },
6224 calendar: {
6225 sameDay: '[اليوم على الساعة] LT',
6226 nextDay: '[غدا على الساعة] LT',
6227 nextWeek: 'dddd [على الساعة] LT',
6228 lastDay: '[أمس على الساعة] LT',
6229 lastWeek: 'dddd [على الساعة] LT',
6230 sameElse: 'L',
6231 },
6232 relativeTime: {
6233 future: 'في %s',
6234 past: 'منذ %s',
6235 s: 'ثوان',
6236 ss: '%d ثانية',
6237 m: 'دقيقة',
6238 mm: '%d دقائق',
6239 h: 'ساعة',
6240 hh: '%d ساعات',
6241 d: 'يوم',
6242 dd: '%d أيام',
6243 M: 'شهر',
6244 MM: '%d أشهر',
6245 y: 'سنة',
6246 yy: '%d سنوات',
6247 },
6248 preparse: function (string) {
6249 return string
6250 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
6251 return numberMap[match];
6252 })
6253 .replace(/،/g, ',');
6254 },
6255 postformat: function (string) {
6256 return string
6257 .replace(/\d/g, function (match) {
6258 return symbolMap$1[match];
6259 })
6260 .replace(/,/g, '،');
6261 },
6262 week: {
6263 dow: 0, // Sunday is the first day of the week.
6264 doy: 6, // The week that contains Jan 6th is the first week of the year.
6265 },
6266 });
6267
6268 //! moment.js locale configuration
6269
6270 hooks.defineLocale('ar-tn', {
6271 months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6272 '_'
6273 ),
6274 monthsShort:
6275 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6276 '_'
6277 ),
6278 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6279 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6280 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6281 weekdaysParseExact: true,
6282 longDateFormat: {
6283 LT: 'HH:mm',
6284 LTS: 'HH:mm:ss',
6285 L: 'DD/MM/YYYY',
6286 LL: 'D MMMM YYYY',
6287 LLL: 'D MMMM YYYY HH:mm',
6288 LLLL: 'dddd D MMMM YYYY HH:mm',
6289 },
6290 calendar: {
6291 sameDay: '[اليوم على الساعة] LT',
6292 nextDay: '[غدا على الساعة] LT',
6293 nextWeek: 'dddd [على الساعة] LT',
6294 lastDay: '[أمس على الساعة] LT',
6295 lastWeek: 'dddd [على الساعة] LT',
6296 sameElse: 'L',
6297 },
6298 relativeTime: {
6299 future: 'في %s',
6300 past: 'منذ %s',
6301 s: 'ثوان',
6302 ss: '%d ثانية',
6303 m: 'دقيقة',
6304 mm: '%d دقائق',
6305 h: 'ساعة',
6306 hh: '%d ساعات',
6307 d: 'يوم',
6308 dd: '%d أيام',
6309 M: 'شهر',
6310 MM: '%d أشهر',
6311 y: 'سنة',
6312 yy: '%d سنوات',
6313 },
6314 week: {
6315 dow: 1, // Monday is the first day of the week.
6316 doy: 4, // The week that contains Jan 4th is the first week of the year.
6317 },
6318 });
6319
6320 //! moment.js locale configuration
6321
6322 var symbolMap$2 = {
6323 1: '١',
6324 2: '٢',
6325 3: '٣',
6326 4: '٤',
6327 5: '٥',
6328 6: '٦',
6329 7: '٧',
6330 8: '٨',
6331 9: '٩',
6332 0: '٠',
6333 },
6334 numberMap$1 = {
6335 '١': '1',
6336 '٢': '2',
6337 '٣': '3',
6338 '٤': '4',
6339 '٥': '5',
6340 '٦': '6',
6341 '٧': '7',
6342 '٨': '8',
6343 '٩': '9',
6344 '٠': '0',
6345 },
6346 pluralForm$2 = function (n) {
6347 return n === 0
6348 ? 0
6349 : n === 1
6350 ? 1
6351 : n === 2
6352 ? 2
6353 : n % 100 >= 3 && n % 100 <= 10
6354 ? 3
6355 : n % 100 >= 11
6356 ? 4
6357 : 5;
6358 },
6359 plurals$2 = {
6360 s: [
6361 'أقل من ثانية',
6362 'ثانية واحدة',
6363 ['ثانيتان', 'ثانيتين'],
6364 '%d ثوان',
6365 '%d ثانية',
6366 '%d ثانية',
6367 ],
6368 m: [
6369 'أقل من دقيقة',
6370 'دقيقة واحدة',
6371 ['دقيقتان', 'دقيقتين'],
6372 '%d دقائق',
6373 '%d دقيقة',
6374 '%d دقيقة',
6375 ],
6376 h: [
6377 'أقل من ساعة',
6378 'ساعة واحدة',
6379 ['ساعتان', 'ساعتين'],
6380 '%d ساعات',
6381 '%d ساعة',
6382 '%d ساعة',
6383 ],
6384 d: [
6385 'أقل من يوم',
6386 'يوم واحد',
6387 ['يومان', 'يومين'],
6388 '%d أيام',
6389 '%d يومًا',
6390 '%d يوم',
6391 ],
6392 M: [
6393 'أقل من شهر',
6394 'شهر واحد',
6395 ['شهران', 'شهرين'],
6396 '%d أشهر',
6397 '%d شهرا',
6398 '%d شهر',
6399 ],
6400 y: [
6401 'أقل من عام',
6402 'عام واحد',
6403 ['عامان', 'عامين'],
6404 '%d أعوام',
6405 '%d عامًا',
6406 '%d عام',
6407 ],
6408 },
6409 pluralize$2 = function (u) {
6410 return function (number, withoutSuffix, string, isFuture) {
6411 var f = pluralForm$2(number),
6412 str = plurals$2[u][pluralForm$2(number)];
6413 if (f === 2) {
6414 str = str[withoutSuffix ? 0 : 1];
6415 }
6416 return str.replace(/%d/i, number);
6417 };
6418 },
6419 months$3 = [
6420 'يناير',
6421 'فبراير',
6422 'مارس',
6423 'أبريل',
6424 'مايو',
6425 'يونيو',
6426 'يوليو',
6427 'أغسطس',
6428 'سبتمبر',
6429 'أكتوبر',
6430 'نوفمبر',
6431 'ديسمبر',
6432 ];
6433
6434 hooks.defineLocale('ar', {
6435 months: months$3,
6436 monthsShort: months$3,
6437 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6438 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6439 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6440 weekdaysParseExact: true,
6441 longDateFormat: {
6442 LT: 'HH:mm',
6443 LTS: 'HH:mm:ss',
6444 L: 'D/\u200FM/\u200FYYYY',
6445 LL: 'D MMMM YYYY',
6446 LLL: 'D MMMM YYYY HH:mm',
6447 LLLL: 'dddd D MMMM YYYY HH:mm',
6448 },
6449 meridiemParse: /ص|م/,
6450 isPM: function (input) {
6451 return 'م' === input;
6452 },
6453 meridiem: function (hour, minute, isLower) {
6454 if (hour < 12) {
6455 return 'ص';
6456 } else {
6457 return 'م';
6458 }
6459 },
6460 calendar: {
6461 sameDay: '[اليوم عند الساعة] LT',
6462 nextDay: '[غدًا عند الساعة] LT',
6463 nextWeek: 'dddd [عند الساعة] LT',
6464 lastDay: '[أمس عند الساعة] LT',
6465 lastWeek: 'dddd [عند الساعة] LT',
6466 sameElse: 'L',
6467 },
6468 relativeTime: {
6469 future: 'بعد %s',
6470 past: 'منذ %s',
6471 s: pluralize$2('s'),
6472 ss: pluralize$2('s'),
6473 m: pluralize$2('m'),
6474 mm: pluralize$2('m'),
6475 h: pluralize$2('h'),
6476 hh: pluralize$2('h'),
6477 d: pluralize$2('d'),
6478 dd: pluralize$2('d'),
6479 M: pluralize$2('M'),
6480 MM: pluralize$2('M'),
6481 y: pluralize$2('y'),
6482 yy: pluralize$2('y'),
6483 },
6484 preparse: function (string) {
6485 return string
6486 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
6487 return numberMap$1[match];
6488 })
6489 .replace(/،/g, ',');
6490 },
6491 postformat: function (string) {
6492 return string
6493 .replace(/\d/g, function (match) {
6494 return symbolMap$2[match];
6495 })
6496 .replace(/,/g, '،');
6497 },
6498 week: {
6499 dow: 6, // Saturday is the first day of the week.
6500 doy: 12, // The week that contains Jan 12th is the first week of the year.
6501 },
6502 });
6503
6504 //! moment.js locale configuration
6505
6506 var suffixes = {
6507 1: '-inci',
6508 5: '-inci',
6509 8: '-inci',
6510 70: '-inci',
6511 80: '-inci',
6512 2: '-nci',
6513 7: '-nci',
6514 20: '-nci',
6515 50: '-nci',
6516 3: '-üncü',
6517 4: '-üncü',
6518 100: '-üncü',
6519 6: '-ncı',
6520 9: '-uncu',
6521 10: '-uncu',
6522 30: '-uncu',
6523 60: '-ıncı',
6524 90: '-ıncı',
6525 };
6526
6527 hooks.defineLocale('az', {
6528 months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
6529 '_'
6530 ),
6531 monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
6532 weekdays:
6533 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
6534 '_'
6535 ),
6536 weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
6537 weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
6538 weekdaysParseExact: true,
6539 longDateFormat: {
6540 LT: 'HH:mm',
6541 LTS: 'HH:mm:ss',
6542 L: 'DD.MM.YYYY',
6543 LL: 'D MMMM YYYY',
6544 LLL: 'D MMMM YYYY HH:mm',
6545 LLLL: 'dddd, D MMMM YYYY HH:mm',
6546 },
6547 calendar: {
6548 sameDay: '[bugün saat] LT',
6549 nextDay: '[sabah saat] LT',
6550 nextWeek: '[gələn həftə] dddd [saat] LT',
6551 lastDay: '[dünən] LT',
6552 lastWeek: '[keçən həftə] dddd [saat] LT',
6553 sameElse: 'L',
6554 },
6555 relativeTime: {
6556 future: '%s sonra',
6557 past: '%s əvvəl',
6558 s: 'bir neçə saniyə',
6559 ss: '%d saniyə',
6560 m: 'bir dəqiqə',
6561 mm: '%d dəqiqə',
6562 h: 'bir saat',
6563 hh: '%d saat',
6564 d: 'bir gün',
6565 dd: '%d gün',
6566 M: 'bir ay',
6567 MM: '%d ay',
6568 y: 'bir il',
6569 yy: '%d il',
6570 },
6571 meridiemParse: /gecə|səhər|gündüz|axşam/,
6572 isPM: function (input) {
6573 return /^(gündüz|axşam)$/.test(input);
6574 },
6575 meridiem: function (hour, minute, isLower) {
6576 if (hour < 4) {
6577 return 'gecə';
6578 } else if (hour < 12) {
6579 return 'səhər';
6580 } else if (hour < 17) {
6581 return 'gündüz';
6582 } else {
6583 return 'axşam';
6584 }
6585 },
6586 dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
6587 ordinal: function (number) {
6588 if (number === 0) {
6589 // special case for zero
6590 return number + '-ıncı';
6591 }
6592 var a = number % 10,
6593 b = (number % 100) - a,
6594 c = number >= 100 ? 100 : null;
6595 return number + (suffixes[a] || suffixes[b] || suffixes[c]);
6596 },
6597 week: {
6598 dow: 1, // Monday is the first day of the week.
6599 doy: 7, // The week that contains Jan 7th is the first week of the year.
6600 },
6601 });
6602
6603 //! moment.js locale configuration
6604
6605 function plural(word, num) {
6606 var forms = word.split('_');
6607 return num % 10 === 1 && num % 100 !== 11
6608 ? forms[0]
6609 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
6610 ? forms[1]
6611 : forms[2];
6612 }
6613 function relativeTimeWithPlural(number, withoutSuffix, key) {
6614 var format = {
6615 ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
6616 mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
6617 hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
6618 dd: 'дзень_дні_дзён',
6619 MM: 'месяц_месяцы_месяцаў',
6620 yy: 'год_гады_гадоў',
6621 };
6622 if (key === 'm') {
6623 return withoutSuffix ? 'хвіліна' : 'хвіліну';
6624 } else if (key === 'h') {
6625 return withoutSuffix ? 'гадзіна' : 'гадзіну';
6626 } else {
6627 return number + ' ' + plural(format[key], +number);
6628 }
6629 }
6630
6631 hooks.defineLocale('be', {
6632 months: {
6633 format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
6634 '_'
6635 ),
6636 standalone:
6637 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
6638 '_'
6639 ),
6640 },
6641 monthsShort:
6642 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
6643 weekdays: {
6644 format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
6645 '_'
6646 ),
6647 standalone:
6648 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
6649 '_'
6650 ),
6651 isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
6652 },
6653 weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
6654 weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
6655 longDateFormat: {
6656 LT: 'HH:mm',
6657 LTS: 'HH:mm:ss',
6658 L: 'DD.MM.YYYY',
6659 LL: 'D MMMM YYYY г.',
6660 LLL: 'D MMMM YYYY г., HH:mm',
6661 LLLL: 'dddd, D MMMM YYYY г., HH:mm',
6662 },
6663 calendar: {
6664 sameDay: '[Сёння ў] LT',
6665 nextDay: '[Заўтра ў] LT',
6666 lastDay: '[Учора ў] LT',
6667 nextWeek: function () {
6668 return '[У] dddd [ў] LT';
6669 },
6670 lastWeek: function () {
6671 switch (this.day()) {
6672 case 0:
6673 case 3:
6674 case 5:
6675 case 6:
6676 return '[У мінулую] dddd [ў] LT';
6677 case 1:
6678 case 2:
6679 case 4:
6680 return '[У мінулы] dddd [ў] LT';
6681 }
6682 },
6683 sameElse: 'L',
6684 },
6685 relativeTime: {
6686 future: 'праз %s',
6687 past: '%s таму',
6688 s: 'некалькі секунд',
6689 m: relativeTimeWithPlural,
6690 mm: relativeTimeWithPlural,
6691 h: relativeTimeWithPlural,
6692 hh: relativeTimeWithPlural,
6693 d: 'дзень',
6694 dd: relativeTimeWithPlural,
6695 M: 'месяц',
6696 MM: relativeTimeWithPlural,
6697 y: 'год',
6698 yy: relativeTimeWithPlural,
6699 },
6700 meridiemParse: /ночы|раніцы|дня|вечара/,
6701 isPM: function (input) {
6702 return /^(дня|вечара)$/.test(input);
6703 },
6704 meridiem: function (hour, minute, isLower) {
6705 if (hour < 4) {
6706 return 'ночы';
6707 } else if (hour < 12) {
6708 return 'раніцы';
6709 } else if (hour < 17) {
6710 return 'дня';
6711 } else {
6712 return 'вечара';
6713 }
6714 },
6715 dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
6716 ordinal: function (number, period) {
6717 switch (period) {
6718 case 'M':
6719 case 'd':
6720 case 'DDD':
6721 case 'w':
6722 case 'W':
6723 return (number % 10 === 2 || number % 10 === 3) &&
6724 number % 100 !== 12 &&
6725 number % 100 !== 13
6726 ? number + '-і'
6727 : number + '-ы';
6728 case 'D':
6729 return number + '-га';
6730 default:
6731 return number;
6732 }
6733 },
6734 week: {
6735 dow: 1, // Monday is the first day of the week.
6736 doy: 7, // The week that contains Jan 7th is the first week of the year.
6737 },
6738 });
6739
6740 //! moment.js locale configuration
6741
6742 hooks.defineLocale('bg', {
6743 months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
6744 '_'
6745 ),
6746 monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
6747 weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
6748 '_'
6749 ),
6750 weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
6751 weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
6752 longDateFormat: {
6753 LT: 'H:mm',
6754 LTS: 'H:mm:ss',
6755 L: 'D.MM.YYYY',
6756 LL: 'D MMMM YYYY',
6757 LLL: 'D MMMM YYYY H:mm',
6758 LLLL: 'dddd, D MMMM YYYY H:mm',
6759 },
6760 calendar: {
6761 sameDay: '[Днес в] LT',
6762 nextDay: '[Утре в] LT',
6763 nextWeek: 'dddd [в] LT',
6764 lastDay: '[Вчера в] LT',
6765 lastWeek: function () {
6766 switch (this.day()) {
6767 case 0:
6768 case 3:
6769 case 6:
6770 return '[Миналата] dddd [в] LT';
6771 case 1:
6772 case 2:
6773 case 4:
6774 case 5:
6775 return '[Миналия] dddd [в] LT';
6776 }
6777 },
6778 sameElse: 'L',
6779 },
6780 relativeTime: {
6781 future: 'след %s',
6782 past: 'преди %s',
6783 s: 'няколко секунди',
6784 ss: '%d секунди',
6785 m: 'минута',
6786 mm: '%d минути',
6787 h: 'час',
6788 hh: '%d часа',
6789 d: 'ден',
6790 dd: '%d дена',
6791 w: 'седмица',
6792 ww: '%d седмици',
6793 M: 'месец',
6794 MM: '%d месеца',
6795 y: 'година',
6796 yy: '%d години',
6797 },
6798 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
6799 ordinal: function (number) {
6800 var lastDigit = number % 10,
6801 last2Digits = number % 100;
6802 if (number === 0) {
6803 return number + '-ев';
6804 } else if (last2Digits === 0) {
6805 return number + '-ен';
6806 } else if (last2Digits > 10 && last2Digits < 20) {
6807 return number + '-ти';
6808 } else if (lastDigit === 1) {
6809 return number + '-ви';
6810 } else if (lastDigit === 2) {
6811 return number + '-ри';
6812 } else if (lastDigit === 7 || lastDigit === 8) {
6813 return number + '-ми';
6814 } else {
6815 return number + '-ти';
6816 }
6817 },
6818 week: {
6819 dow: 1, // Monday is the first day of the week.
6820 doy: 7, // The week that contains Jan 7th is the first week of the year.
6821 },
6822 });
6823
6824 //! moment.js locale configuration
6825
6826 hooks.defineLocale('bm', {
6827 months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
6828 '_'
6829 ),
6830 monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
6831 weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
6832 weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
6833 weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
6834 longDateFormat: {
6835 LT: 'HH:mm',
6836 LTS: 'HH:mm:ss',
6837 L: 'DD/MM/YYYY',
6838 LL: 'MMMM [tile] D [san] YYYY',
6839 LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
6840 LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
6841 },
6842 calendar: {
6843 sameDay: '[Bi lɛrɛ] LT',
6844 nextDay: '[Sini lɛrɛ] LT',
6845 nextWeek: 'dddd [don lɛrɛ] LT',
6846 lastDay: '[Kunu lɛrɛ] LT',
6847 lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
6848 sameElse: 'L',
6849 },
6850 relativeTime: {
6851 future: '%s kɔnɔ',
6852 past: 'a bɛ %s bɔ',
6853 s: 'sanga dama dama',
6854 ss: 'sekondi %d',
6855 m: 'miniti kelen',
6856 mm: 'miniti %d',
6857 h: 'lɛrɛ kelen',
6858 hh: 'lɛrɛ %d',
6859 d: 'tile kelen',
6860 dd: 'tile %d',
6861 M: 'kalo kelen',
6862 MM: 'kalo %d',
6863 y: 'san kelen',
6864 yy: 'san %d',
6865 },
6866 week: {
6867 dow: 1, // Monday is the first day of the week.
6868 doy: 4, // The week that contains Jan 4th is the first week of the year.
6869 },
6870 });
6871
6872 //! moment.js locale configuration
6873
6874 var symbolMap$3 = {
6875 1: '১',
6876 2: '২',
6877 3: '৩',
6878 4: '৪',
6879 5: '৫',
6880 6: '৬',
6881 7: '৭',
6882 8: '৮',
6883 9: '৯',
6884 0: '০',
6885 },
6886 numberMap$2 = {
6887 '১': '1',
6888 '২': '2',
6889 '৩': '3',
6890 '৪': '4',
6891 '৫': '5',
6892 '৬': '6',
6893 '৭': '7',
6894 '৮': '8',
6895 '৯': '9',
6896 '০': '0',
6897 };
6898
6899 hooks.defineLocale('bn-bd', {
6900 months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
6901 '_'
6902 ),
6903 monthsShort:
6904 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
6905 '_'
6906 ),
6907 weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
6908 '_'
6909 ),
6910 weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
6911 weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
6912 longDateFormat: {
6913 LT: 'A h:mm সময়',
6914 LTS: 'A h:mm:ss সময়',
6915 L: 'DD/MM/YYYY',
6916 LL: 'D MMMM YYYY',
6917 LLL: 'D MMMM YYYY, A h:mm সময়',
6918 LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
6919 },
6920 calendar: {
6921 sameDay: '[আজ] LT',
6922 nextDay: '[আগামীকাল] LT',
6923 nextWeek: 'dddd, LT',
6924 lastDay: '[গতকাল] LT',
6925 lastWeek: '[গত] dddd, LT',
6926 sameElse: 'L',
6927 },
6928 relativeTime: {
6929 future: '%s পরে',
6930 past: '%s আগে',
6931 s: 'কয়েক সেকেন্ড',
6932 ss: '%d সেকেন্ড',
6933 m: 'এক মিনিট',
6934 mm: '%d মিনিট',
6935 h: 'এক ঘন্টা',
6936 hh: '%d ঘন্টা',
6937 d: 'এক দিন',
6938 dd: '%d দিন',
6939 M: 'এক মাস',
6940 MM: '%d মাস',
6941 y: 'এক বছর',
6942 yy: '%d বছর',
6943 },
6944 preparse: function (string) {
6945 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
6946 return numberMap$2[match];
6947 });
6948 },
6949 postformat: function (string) {
6950 return string.replace(/\d/g, function (match) {
6951 return symbolMap$3[match];
6952 });
6953 },
6954
6955 meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
6956 meridiemHour: function (hour, meridiem) {
6957 if (hour === 12) {
6958 hour = 0;
6959 }
6960 if (meridiem === 'রাত') {
6961 return hour < 4 ? hour : hour + 12;
6962 } else if (meridiem === 'ভোর') {
6963 return hour;
6964 } else if (meridiem === 'সকাল') {
6965 return hour;
6966 } else if (meridiem === 'দুপুর') {
6967 return hour >= 3 ? hour : hour + 12;
6968 } else if (meridiem === 'বিকাল') {
6969 return hour + 12;
6970 } else if (meridiem === 'সন্ধ্যা') {
6971 return hour + 12;
6972 }
6973 },
6974
6975 meridiem: function (hour, minute, isLower) {
6976 if (hour < 4) {
6977 return 'রাত';
6978 } else if (hour < 6) {
6979 return 'ভোর';
6980 } else if (hour < 12) {
6981 return 'সকাল';
6982 } else if (hour < 15) {
6983 return 'দুপুর';
6984 } else if (hour < 18) {
6985 return 'বিকাল';
6986 } else if (hour < 20) {
6987 return 'সন্ধ্যা';
6988 } else {
6989 return 'রাত';
6990 }
6991 },
6992 week: {
6993 dow: 0, // Sunday is the first day of the week.
6994 doy: 6, // The week that contains Jan 6th is the first week of the year.
6995 },
6996 });
6997
6998 //! moment.js locale configuration
6999
7000 var symbolMap$4 = {
7001 1: '১',
7002 2: '২',
7003 3: '৩',
7004 4: '৪',
7005 5: '৫',
7006 6: '৬',
7007 7: '৭',
7008 8: '৮',
7009 9: '৯',
7010 0: '০',
7011 },
7012 numberMap$3 = {
7013 '১': '1',
7014 '২': '2',
7015 '৩': '3',
7016 '৪': '4',
7017 '৫': '5',
7018 '৬': '6',
7019 '৭': '7',
7020 '৮': '8',
7021 '৯': '9',
7022 '০': '0',
7023 };
7024
7025 hooks.defineLocale('bn', {
7026 months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
7027 '_'
7028 ),
7029 monthsShort:
7030 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
7031 '_'
7032 ),
7033 weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
7034 '_'
7035 ),
7036 weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
7037 weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
7038 longDateFormat: {
7039 LT: 'A h:mm সময়',
7040 LTS: 'A h:mm:ss সময়',
7041 L: 'DD/MM/YYYY',
7042 LL: 'D MMMM YYYY',
7043 LLL: 'D MMMM YYYY, A h:mm সময়',
7044 LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
7045 },
7046 calendar: {
7047 sameDay: '[আজ] LT',
7048 nextDay: '[আগামীকাল] LT',
7049 nextWeek: 'dddd, LT',
7050 lastDay: '[গতকাল] LT',
7051 lastWeek: '[গত] dddd, LT',
7052 sameElse: 'L',
7053 },
7054 relativeTime: {
7055 future: '%s পরে',
7056 past: '%s আগে',
7057 s: 'কয়েক সেকেন্ড',
7058 ss: '%d সেকেন্ড',
7059 m: 'এক মিনিট',
7060 mm: '%d মিনিট',
7061 h: 'এক ঘন্টা',
7062 hh: '%d ঘন্টা',
7063 d: 'এক দিন',
7064 dd: '%d দিন',
7065 M: 'এক মাস',
7066 MM: '%d মাস',
7067 y: 'এক বছর',
7068 yy: '%d বছর',
7069 },
7070 preparse: function (string) {
7071 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
7072 return numberMap$3[match];
7073 });
7074 },
7075 postformat: function (string) {
7076 return string.replace(/\d/g, function (match) {
7077 return symbolMap$4[match];
7078 });
7079 },
7080 meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
7081 meridiemHour: function (hour, meridiem) {
7082 if (hour === 12) {
7083 hour = 0;
7084 }
7085 if (
7086 (meridiem === 'রাত' && hour >= 4) ||
7087 (meridiem === 'দুপুর' && hour < 5) ||
7088 meridiem === 'বিকাল'
7089 ) {
7090 return hour + 12;
7091 } else {
7092 return hour;
7093 }
7094 },
7095 meridiem: function (hour, minute, isLower) {
7096 if (hour < 4) {
7097 return 'রাত';
7098 } else if (hour < 10) {
7099 return 'সকাল';
7100 } else if (hour < 17) {
7101 return 'দুপুর';
7102 } else if (hour < 20) {
7103 return 'বিকাল';
7104 } else {
7105 return 'রাত';
7106 }
7107 },
7108 week: {
7109 dow: 0, // Sunday is the first day of the week.
7110 doy: 6, // The week that contains Jan 6th is the first week of the year.
7111 },
7112 });
7113
7114 //! moment.js locale configuration
7115
7116 var symbolMap$5 = {
7117 1: '༡',
7118 2: '༢',
7119 3: '༣',
7120 4: '༤',
7121 5: '༥',
7122 6: '༦',
7123 7: '༧',
7124 8: '༨',
7125 9: '༩',
7126 0: '༠',
7127 },
7128 numberMap$4 = {
7129 '༡': '1',
7130 '༢': '2',
7131 '༣': '3',
7132 '༤': '4',
7133 '༥': '5',
7134 '༦': '6',
7135 '༧': '7',
7136 '༨': '8',
7137 '༩': '9',
7138 '༠': '0',
7139 };
7140
7141 hooks.defineLocale('bo', {
7142 months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
7143 '_'
7144 ),
7145 monthsShort:
7146 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
7147 '_'
7148 ),
7149 monthsShortRegex: /^(ཟླ་\d{1,2})/,
7150 monthsParseExact: true,
7151 weekdays:
7152 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
7153 '_'
7154 ),
7155 weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
7156 '_'
7157 ),
7158 weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
7159 longDateFormat: {
7160 LT: 'A h:mm',
7161 LTS: 'A h:mm:ss',
7162 L: 'DD/MM/YYYY',
7163 LL: 'D MMMM YYYY',
7164 LLL: 'D MMMM YYYY, A h:mm',
7165 LLLL: 'dddd, D MMMM YYYY, A h:mm',
7166 },
7167 calendar: {
7168 sameDay: '[དི་རིང] LT',
7169 nextDay: '[སང་ཉིན] LT',
7170 nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
7171 lastDay: '[ཁ་སང] LT',
7172 lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
7173 sameElse: 'L',
7174 },
7175 relativeTime: {
7176 future: '%s ལ་',
7177 past: '%s སྔན་ལ',
7178 s: 'ལམ་སང',
7179 ss: '%d སྐར་ཆ།',
7180 m: 'སྐར་མ་གཅིག',
7181 mm: '%d སྐར་མ',
7182 h: 'ཆུ་ཚོད་གཅིག',
7183 hh: '%d ཆུ་ཚོད',
7184 d: 'ཉིན་གཅིག',
7185 dd: '%d ཉིན་',
7186 M: 'ཟླ་བ་གཅིག',
7187 MM: '%d ཟླ་བ',
7188 y: 'ལོ་གཅིག',
7189 yy: '%d ལོ',
7190 },
7191 preparse: function (string) {
7192 return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
7193 return numberMap$4[match];
7194 });
7195 },
7196 postformat: function (string) {
7197 return string.replace(/\d/g, function (match) {
7198 return symbolMap$5[match];
7199 });
7200 },
7201 meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
7202 meridiemHour: function (hour, meridiem) {
7203 if (hour === 12) {
7204 hour = 0;
7205 }
7206 if (
7207 (meridiem === 'མཚན་མོ' && hour >= 4) ||
7208 (meridiem === 'ཉིན་གུང' && hour < 5) ||
7209 meridiem === 'དགོང་དག'
7210 ) {
7211 return hour + 12;
7212 } else {
7213 return hour;
7214 }
7215 },
7216 meridiem: function (hour, minute, isLower) {
7217 if (hour < 4) {
7218 return 'མཚན་མོ';
7219 } else if (hour < 10) {
7220 return 'ཞོགས་ཀས';
7221 } else if (hour < 17) {
7222 return 'ཉིན་གུང';
7223 } else if (hour < 20) {
7224 return 'དགོང་དག';
7225 } else {
7226 return 'མཚན་མོ';
7227 }
7228 },
7229 week: {
7230 dow: 0, // Sunday is the first day of the week.
7231 doy: 6, // The week that contains Jan 6th is the first week of the year.
7232 },
7233 });
7234
7235 //! moment.js locale configuration
7236
7237 function relativeTimeWithMutation(number, withoutSuffix, key) {
7238 var format = {
7239 mm: 'munutenn',
7240 MM: 'miz',
7241 dd: 'devezh',
7242 };
7243 return number + ' ' + mutation(format[key], number);
7244 }
7245 function specialMutationForYears(number) {
7246 switch (lastNumber(number)) {
7247 case 1:
7248 case 3:
7249 case 4:
7250 case 5:
7251 case 9:
7252 return number + ' bloaz';
7253 default:
7254 return number + ' vloaz';
7255 }
7256 }
7257 function lastNumber(number) {
7258 if (number > 9) {
7259 return lastNumber(number % 10);
7260 }
7261 return number;
7262 }
7263 function mutation(text, number) {
7264 if (number === 2) {
7265 return softMutation(text);
7266 }
7267 return text;
7268 }
7269 function softMutation(text) {
7270 var mutationTable = {
7271 m: 'v',
7272 b: 'v',
7273 d: 'z',
7274 };
7275 if (mutationTable[text.charAt(0)] === undefined) {
7276 return text;
7277 }
7278 return mutationTable[text.charAt(0)] + text.substring(1);
7279 }
7280
7281 var monthsParse = [
7282 /^gen/i,
7283 /^c[ʼ\']hwe/i,
7284 /^meu/i,
7285 /^ebr/i,
7286 /^mae/i,
7287 /^(mez|eve)/i,
7288 /^gou/i,
7289 /^eos/i,
7290 /^gwe/i,
7291 /^her/i,
7292 /^du/i,
7293 /^ker/i,
7294 ],
7295 monthsRegex$1 =
7296 /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
7297 monthsStrictRegex =
7298 /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
7299 monthsShortStrictRegex =
7300 /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
7301 fullWeekdaysParse = [
7302 /^sul/i,
7303 /^lun/i,
7304 /^meurzh/i,
7305 /^merc[ʼ\']her/i,
7306 /^yaou/i,
7307 /^gwener/i,
7308 /^sadorn/i,
7309 ],
7310 shortWeekdaysParse = [
7311 /^Sul/i,
7312 /^Lun/i,
7313 /^Meu/i,
7314 /^Mer/i,
7315 /^Yao/i,
7316 /^Gwe/i,
7317 /^Sad/i,
7318 ],
7319 minWeekdaysParse = [
7320 /^Su/i,
7321 /^Lu/i,
7322 /^Me([^r]|$)/i,
7323 /^Mer/i,
7324 /^Ya/i,
7325 /^Gw/i,
7326 /^Sa/i,
7327 ];
7328
7329 hooks.defineLocale('br', {
7330 months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
7331 '_'
7332 ),
7333 monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
7334 weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
7335 weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
7336 weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
7337 weekdaysParse: minWeekdaysParse,
7338 fullWeekdaysParse: fullWeekdaysParse,
7339 shortWeekdaysParse: shortWeekdaysParse,
7340 minWeekdaysParse: minWeekdaysParse,
7341
7342 monthsRegex: monthsRegex$1,
7343 monthsShortRegex: monthsRegex$1,
7344 monthsStrictRegex: monthsStrictRegex,
7345 monthsShortStrictRegex: monthsShortStrictRegex,
7346 monthsParse: monthsParse,
7347 longMonthsParse: monthsParse,
7348 shortMonthsParse: monthsParse,
7349
7350 longDateFormat: {
7351 LT: 'HH:mm',
7352 LTS: 'HH:mm:ss',
7353 L: 'DD/MM/YYYY',
7354 LL: 'D [a viz] MMMM YYYY',
7355 LLL: 'D [a viz] MMMM YYYY HH:mm',
7356 LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
7357 },
7358 calendar: {
7359 sameDay: '[Hiziv da] LT',
7360 nextDay: '[Warcʼhoazh da] LT',
7361 nextWeek: 'dddd [da] LT',
7362 lastDay: '[Decʼh da] LT',
7363 lastWeek: 'dddd [paset da] LT',
7364 sameElse: 'L',
7365 },
7366 relativeTime: {
7367 future: 'a-benn %s',
7368 past: '%s ʼzo',
7369 s: 'un nebeud segondennoù',
7370 ss: '%d eilenn',
7371 m: 'ur vunutenn',
7372 mm: relativeTimeWithMutation,
7373 h: 'un eur',
7374 hh: '%d eur',
7375 d: 'un devezh',
7376 dd: relativeTimeWithMutation,
7377 M: 'ur miz',
7378 MM: relativeTimeWithMutation,
7379 y: 'ur bloaz',
7380 yy: specialMutationForYears,
7381 },
7382 dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
7383 ordinal: function (number) {
7384 var output = number === 1 ? 'añ' : 'vet';
7385 return number + output;
7386 },
7387 week: {
7388 dow: 1, // Monday is the first day of the week.
7389 doy: 4, // The week that contains Jan 4th is the first week of the year.
7390 },
7391 meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
7392 isPM: function (token) {
7393 return token === 'g.m.';
7394 },
7395 meridiem: function (hour, minute, isLower) {
7396 return hour < 12 ? 'a.m.' : 'g.m.';
7397 },
7398 });
7399
7400 //! moment.js locale configuration
7401
7402 function translate(number, withoutSuffix, key) {
7403 var result = number + ' ';
7404 switch (key) {
7405 case 'ss':
7406 if (number === 1) {
7407 result += 'sekunda';
7408 } else if (number === 2 || number === 3 || number === 4) {
7409 result += 'sekunde';
7410 } else {
7411 result += 'sekundi';
7412 }
7413 return result;
7414 case 'm':
7415 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
7416 case 'mm':
7417 if (number === 1) {
7418 result += 'minuta';
7419 } else if (number === 2 || number === 3 || number === 4) {
7420 result += 'minute';
7421 } else {
7422 result += 'minuta';
7423 }
7424 return result;
7425 case 'h':
7426 return withoutSuffix ? 'jedan sat' : 'jednog sata';
7427 case 'hh':
7428 if (number === 1) {
7429 result += 'sat';
7430 } else if (number === 2 || number === 3 || number === 4) {
7431 result += 'sata';
7432 } else {
7433 result += 'sati';
7434 }
7435 return result;
7436 case 'dd':
7437 if (number === 1) {
7438 result += 'dan';
7439 } else {
7440 result += 'dana';
7441 }
7442 return result;
7443 case 'MM':
7444 if (number === 1) {
7445 result += 'mjesec';
7446 } else if (number === 2 || number === 3 || number === 4) {
7447 result += 'mjeseca';
7448 } else {
7449 result += 'mjeseci';
7450 }
7451 return result;
7452 case 'yy':
7453 if (number === 1) {
7454 result += 'godina';
7455 } else if (number === 2 || number === 3 || number === 4) {
7456 result += 'godine';
7457 } else {
7458 result += 'godina';
7459 }
7460 return result;
7461 }
7462 }
7463
7464 hooks.defineLocale('bs', {
7465 months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
7466 '_'
7467 ),
7468 monthsShort:
7469 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
7470 '_'
7471 ),
7472 monthsParseExact: true,
7473 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
7474 '_'
7475 ),
7476 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
7477 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
7478 weekdaysParseExact: true,
7479 longDateFormat: {
7480 LT: 'H:mm',
7481 LTS: 'H:mm:ss',
7482 L: 'DD.MM.YYYY',
7483 LL: 'D. MMMM YYYY',
7484 LLL: 'D. MMMM YYYY H:mm',
7485 LLLL: 'dddd, D. MMMM YYYY H:mm',
7486 },
7487 calendar: {
7488 sameDay: '[danas u] LT',
7489 nextDay: '[sutra u] LT',
7490 nextWeek: function () {
7491 switch (this.day()) {
7492 case 0:
7493 return '[u] [nedjelju] [u] LT';
7494 case 3:
7495 return '[u] [srijedu] [u] LT';
7496 case 6:
7497 return '[u] [subotu] [u] LT';
7498 case 1:
7499 case 2:
7500 case 4:
7501 case 5:
7502 return '[u] dddd [u] LT';
7503 }
7504 },
7505 lastDay: '[jučer u] LT',
7506 lastWeek: function () {
7507 switch (this.day()) {
7508 case 0:
7509 case 3:
7510 return '[prošlu] dddd [u] LT';
7511 case 6:
7512 return '[prošle] [subote] [u] LT';
7513 case 1:
7514 case 2:
7515 case 4:
7516 case 5:
7517 return '[prošli] dddd [u] LT';
7518 }
7519 },
7520 sameElse: 'L',
7521 },
7522 relativeTime: {
7523 future: 'za %s',
7524 past: 'prije %s',
7525 s: 'par sekundi',
7526 ss: translate,
7527 m: translate,
7528 mm: translate,
7529 h: translate,
7530 hh: translate,
7531 d: 'dan',
7532 dd: translate,
7533 M: 'mjesec',
7534 MM: translate,
7535 y: 'godinu',
7536 yy: translate,
7537 },
7538 dayOfMonthOrdinalParse: /\d{1,2}\./,
7539 ordinal: '%d.',
7540 week: {
7541 dow: 1, // Monday is the first day of the week.
7542 doy: 7, // The week that contains Jan 7th is the first week of the year.
7543 },
7544 });
7545
7546 //! moment.js locale configuration
7547
7548 hooks.defineLocale('ca', {
7549 months: {
7550 standalone:
7551 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
7552 '_'
7553 ),
7554 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(
7555 '_'
7556 ),
7557 isFormat: /D[oD]?(\s)+MMMM/,
7558 },
7559 monthsShort:
7560 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
7561 '_'
7562 ),
7563 monthsParseExact: true,
7564 weekdays:
7565 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
7566 '_'
7567 ),
7568 weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
7569 weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
7570 weekdaysParseExact: true,
7571 longDateFormat: {
7572 LT: 'H:mm',
7573 LTS: 'H:mm:ss',
7574 L: 'DD/MM/YYYY',
7575 LL: 'D MMMM [de] YYYY',
7576 ll: 'D MMM YYYY',
7577 LLL: 'D MMMM [de] YYYY [a les] H:mm',
7578 lll: 'D MMM YYYY, H:mm',
7579 LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
7580 llll: 'ddd D MMM YYYY, H:mm',
7581 },
7582 calendar: {
7583 sameDay: function () {
7584 return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7585 },
7586 nextDay: function () {
7587 return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7588 },
7589 nextWeek: function () {
7590 return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7591 },
7592 lastDay: function () {
7593 return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7594 },
7595 lastWeek: function () {
7596 return (
7597 '[el] dddd [passat a ' +
7598 (this.hours() !== 1 ? 'les' : 'la') +
7599 '] LT'
7600 );
7601 },
7602 sameElse: 'L',
7603 },
7604 relativeTime: {
7605 future: "d'aquí %s",
7606 past: 'fa %s',
7607 s: 'uns segons',
7608 ss: '%d segons',
7609 m: 'un minut',
7610 mm: '%d minuts',
7611 h: 'una hora',
7612 hh: '%d hores',
7613 d: 'un dia',
7614 dd: '%d dies',
7615 M: 'un mes',
7616 MM: '%d mesos',
7617 y: 'un any',
7618 yy: '%d anys',
7619 },
7620 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
7621 ordinal: function (number, period) {
7622 var output =
7623 number === 1
7624 ? 'r'
7625 : number === 2
7626 ? 'n'
7627 : number === 3
7628 ? 'r'
7629 : number === 4
7630 ? 't'
7631 : 'è';
7632 if (period === 'w' || period === 'W') {
7633 output = 'a';
7634 }
7635 return number + output;
7636 },
7637 week: {
7638 dow: 1, // Monday is the first day of the week.
7639 doy: 4, // The week that contains Jan 4th is the first week of the year.
7640 },
7641 });
7642
7643 //! moment.js locale configuration
7644
7645 var months$4 = {
7646 format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
7647 '_'
7648 ),
7649 standalone:
7650 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
7651 '_'
7652 ),
7653 },
7654 monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
7655 monthsParse$1 = [
7656 /^led/i,
7657 /^úno/i,
7658 /^bře/i,
7659 /^dub/i,
7660 /^kvě/i,
7661 /^(čvn|červen$|června)/i,
7662 /^(čvc|červenec|července)/i,
7663 /^srp/i,
7664 /^zář/i,
7665 /^říj/i,
7666 /^lis/i,
7667 /^pro/i,
7668 ],
7669 // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
7670 // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
7671 monthsRegex$2 =
7672 /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
7673
7674 function plural$1(n) {
7675 return n > 1 && n < 5 && ~~(n / 10) !== 1;
7676 }
7677 function translate$1(number, withoutSuffix, key, isFuture) {
7678 var result = number + ' ';
7679 switch (key) {
7680 case 's': // a few seconds / in a few seconds / a few seconds ago
7681 return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
7682 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
7683 if (withoutSuffix || isFuture) {
7684 return result + (plural$1(number) ? 'sekundy' : 'sekund');
7685 } else {
7686 return result + 'sekundami';
7687 }
7688 case 'm': // a minute / in a minute / a minute ago
7689 return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
7690 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
7691 if (withoutSuffix || isFuture) {
7692 return result + (plural$1(number) ? 'minuty' : 'minut');
7693 } else {
7694 return result + 'minutami';
7695 }
7696 case 'h': // an hour / in an hour / an hour ago
7697 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
7698 case 'hh': // 9 hours / in 9 hours / 9 hours ago
7699 if (withoutSuffix || isFuture) {
7700 return result + (plural$1(number) ? 'hodiny' : 'hodin');
7701 } else {
7702 return result + 'hodinami';
7703 }
7704 case 'd': // a day / in a day / a day ago
7705 return withoutSuffix || isFuture ? 'den' : 'dnem';
7706 case 'dd': // 9 days / in 9 days / 9 days ago
7707 if (withoutSuffix || isFuture) {
7708 return result + (plural$1(number) ? 'dny' : 'dní');
7709 } else {
7710 return result + 'dny';
7711 }
7712 case 'M': // a month / in a month / a month ago
7713 return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
7714 case 'MM': // 9 months / in 9 months / 9 months ago
7715 if (withoutSuffix || isFuture) {
7716 return result + (plural$1(number) ? 'měsíce' : 'měsíců');
7717 } else {
7718 return result + 'měsíci';
7719 }
7720 case 'y': // a year / in a year / a year ago
7721 return withoutSuffix || isFuture ? 'rok' : 'rokem';
7722 case 'yy': // 9 years / in 9 years / 9 years ago
7723 if (withoutSuffix || isFuture) {
7724 return result + (plural$1(number) ? 'roky' : 'let');
7725 } else {
7726 return result + 'lety';
7727 }
7728 }
7729 }
7730
7731 hooks.defineLocale('cs', {
7732 months: months$4,
7733 monthsShort: monthsShort,
7734 monthsRegex: monthsRegex$2,
7735 monthsShortRegex: monthsRegex$2,
7736 // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
7737 // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
7738 monthsStrictRegex:
7739 /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
7740 monthsShortStrictRegex:
7741 /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
7742 monthsParse: monthsParse$1,
7743 longMonthsParse: monthsParse$1,
7744 shortMonthsParse: monthsParse$1,
7745 weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
7746 weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
7747 weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
7748 longDateFormat: {
7749 LT: 'H:mm',
7750 LTS: 'H:mm:ss',
7751 L: 'DD.MM.YYYY',
7752 LL: 'D. MMMM YYYY',
7753 LLL: 'D. MMMM YYYY H:mm',
7754 LLLL: 'dddd D. MMMM YYYY H:mm',
7755 l: 'D. M. YYYY',
7756 },
7757 calendar: {
7758 sameDay: '[dnes v] LT',
7759 nextDay: '[zítra v] LT',
7760 nextWeek: function () {
7761 switch (this.day()) {
7762 case 0:
7763 return '[v neděli v] LT';
7764 case 1:
7765 case 2:
7766 return '[v] dddd [v] LT';
7767 case 3:
7768 return '[ve středu v] LT';
7769 case 4:
7770 return '[ve čtvrtek v] LT';
7771 case 5:
7772 return '[v pátek v] LT';
7773 case 6:
7774 return '[v sobotu v] LT';
7775 }
7776 },
7777 lastDay: '[včera v] LT',
7778 lastWeek: function () {
7779 switch (this.day()) {
7780 case 0:
7781 return '[minulou neděli v] LT';
7782 case 1:
7783 case 2:
7784 return '[minulé] dddd [v] LT';
7785 case 3:
7786 return '[minulou středu v] LT';
7787 case 4:
7788 case 5:
7789 return '[minulý] dddd [v] LT';
7790 case 6:
7791 return '[minulou sobotu v] LT';
7792 }
7793 },
7794 sameElse: 'L',
7795 },
7796 relativeTime: {
7797 future: 'za %s',
7798 past: 'před %s',
7799 s: translate$1,
7800 ss: translate$1,
7801 m: translate$1,
7802 mm: translate$1,
7803 h: translate$1,
7804 hh: translate$1,
7805 d: translate$1,
7806 dd: translate$1,
7807 M: translate$1,
7808 MM: translate$1,
7809 y: translate$1,
7810 yy: translate$1,
7811 },
7812 dayOfMonthOrdinalParse: /\d{1,2}\./,
7813 ordinal: '%d.',
7814 week: {
7815 dow: 1, // Monday is the first day of the week.
7816 doy: 4, // The week that contains Jan 4th is the first week of the year.
7817 },
7818 });
7819
7820 //! moment.js locale configuration
7821
7822 hooks.defineLocale('cv', {
7823 months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
7824 '_'
7825 ),
7826 monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
7827 weekdays:
7828 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
7829 '_'
7830 ),
7831 weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
7832 weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
7833 longDateFormat: {
7834 LT: 'HH:mm',
7835 LTS: 'HH:mm:ss',
7836 L: 'DD-MM-YYYY',
7837 LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
7838 LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
7839 LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
7840 },
7841 calendar: {
7842 sameDay: '[Паян] LT [сехетре]',
7843 nextDay: '[Ыран] LT [сехетре]',
7844 lastDay: '[Ӗнер] LT [сехетре]',
7845 nextWeek: '[Ҫитес] dddd LT [сехетре]',
7846 lastWeek: '[Иртнӗ] dddd LT [сехетре]',
7847 sameElse: 'L',
7848 },
7849 relativeTime: {
7850 future: function (output) {
7851 var affix = /сехет$/i.exec(output)
7852 ? 'рен'
7853 : /ҫул$/i.exec(output)
7854 ? 'тан'
7855 : 'ран';
7856 return output + affix;
7857 },
7858 past: '%s каялла',
7859 s: 'пӗр-ик ҫеккунт',
7860 ss: '%d ҫеккунт',
7861 m: 'пӗр минут',
7862 mm: '%d минут',
7863 h: 'пӗр сехет',
7864 hh: '%d сехет',
7865 d: 'пӗр кун',
7866 dd: '%d кун',
7867 M: 'пӗр уйӑх',
7868 MM: '%d уйӑх',
7869 y: 'пӗр ҫул',
7870 yy: '%d ҫул',
7871 },
7872 dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
7873 ordinal: '%d-мӗш',
7874 week: {
7875 dow: 1, // Monday is the first day of the week.
7876 doy: 7, // The week that contains Jan 7th is the first week of the year.
7877 },
7878 });
7879
7880 //! moment.js locale configuration
7881
7882 hooks.defineLocale('cy', {
7883 months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
7884 '_'
7885 ),
7886 monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
7887 '_'
7888 ),
7889 weekdays:
7890 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
7891 '_'
7892 ),
7893 weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
7894 weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
7895 weekdaysParseExact: true,
7896 // time formats are the same as en-gb
7897 longDateFormat: {
7898 LT: 'HH:mm',
7899 LTS: 'HH:mm:ss',
7900 L: 'DD/MM/YYYY',
7901 LL: 'D MMMM YYYY',
7902 LLL: 'D MMMM YYYY HH:mm',
7903 LLLL: 'dddd, D MMMM YYYY HH:mm',
7904 },
7905 calendar: {
7906 sameDay: '[Heddiw am] LT',
7907 nextDay: '[Yfory am] LT',
7908 nextWeek: 'dddd [am] LT',
7909 lastDay: '[Ddoe am] LT',
7910 lastWeek: 'dddd [diwethaf am] LT',
7911 sameElse: 'L',
7912 },
7913 relativeTime: {
7914 future: 'mewn %s',
7915 past: '%s yn ôl',
7916 s: 'ychydig eiliadau',
7917 ss: '%d eiliad',
7918 m: 'munud',
7919 mm: '%d munud',
7920 h: 'awr',
7921 hh: '%d awr',
7922 d: 'diwrnod',
7923 dd: '%d diwrnod',
7924 M: 'mis',
7925 MM: '%d mis',
7926 y: 'blwyddyn',
7927 yy: '%d flynedd',
7928 },
7929 dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
7930 // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
7931 ordinal: function (number) {
7932 var b = number,
7933 output = '',
7934 lookup = [
7935 '',
7936 'af',
7937 'il',
7938 'ydd',
7939 'ydd',
7940 'ed',
7941 'ed',
7942 'ed',
7943 'fed',
7944 'fed',
7945 'fed', // 1af to 10fed
7946 'eg',
7947 'fed',
7948 'eg',
7949 'eg',
7950 'fed',
7951 'eg',
7952 'eg',
7953 'fed',
7954 'eg',
7955 'fed', // 11eg to 20fed
7956 ];
7957 if (b > 20) {
7958 if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
7959 output = 'fed'; // not 30ain, 70ain or 90ain
7960 } else {
7961 output = 'ain';
7962 }
7963 } else if (b > 0) {
7964 output = lookup[b];
7965 }
7966 return number + output;
7967 },
7968 week: {
7969 dow: 1, // Monday is the first day of the week.
7970 doy: 4, // The week that contains Jan 4th is the first week of the year.
7971 },
7972 });
7973
7974 //! moment.js locale configuration
7975
7976 hooks.defineLocale('da', {
7977 months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
7978 '_'
7979 ),
7980 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
7981 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
7982 weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
7983 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
7984 longDateFormat: {
7985 LT: 'HH:mm',
7986 LTS: 'HH:mm:ss',
7987 L: 'DD.MM.YYYY',
7988 LL: 'D. MMMM YYYY',
7989 LLL: 'D. MMMM YYYY HH:mm',
7990 LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
7991 },
7992 calendar: {
7993 sameDay: '[i dag kl.] LT',
7994 nextDay: '[i morgen kl.] LT',
7995 nextWeek: 'på dddd [kl.] LT',
7996 lastDay: '[i går kl.] LT',
7997 lastWeek: '[i] dddd[s kl.] LT',
7998 sameElse: 'L',
7999 },
8000 relativeTime: {
8001 future: 'om %s',
8002 past: '%s siden',
8003 s: 'få sekunder',
8004 ss: '%d sekunder',
8005 m: 'et minut',
8006 mm: '%d minutter',
8007 h: 'en time',
8008 hh: '%d timer',
8009 d: 'en dag',
8010 dd: '%d dage',
8011 M: 'en måned',
8012 MM: '%d måneder',
8013 y: 'et år',
8014 yy: '%d år',
8015 },
8016 dayOfMonthOrdinalParse: /\d{1,2}\./,
8017 ordinal: '%d.',
8018 week: {
8019 dow: 1, // Monday is the first day of the week.
8020 doy: 4, // The week that contains Jan 4th is the first week of the year.
8021 },
8022 });
8023
8024 //! moment.js locale configuration
8025
8026 function processRelativeTime(number, withoutSuffix, key, isFuture) {
8027 var format = {
8028 m: ['eine Minute', 'einer Minute'],
8029 h: ['eine Stunde', 'einer Stunde'],
8030 d: ['ein Tag', 'einem Tag'],
8031 dd: [number + ' Tage', number + ' Tagen'],
8032 w: ['eine Woche', 'einer Woche'],
8033 M: ['ein Monat', 'einem Monat'],
8034 MM: [number + ' Monate', number + ' Monaten'],
8035 y: ['ein Jahr', 'einem Jahr'],
8036 yy: [number + ' Jahre', number + ' Jahren'],
8037 };
8038 return withoutSuffix ? format[key][0] : format[key][1];
8039 }
8040
8041 hooks.defineLocale('de-at', {
8042 months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8043 '_'
8044 ),
8045 monthsShort:
8046 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
8047 monthsParseExact: true,
8048 weekdays:
8049 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8050 '_'
8051 ),
8052 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
8053 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8054 weekdaysParseExact: true,
8055 longDateFormat: {
8056 LT: 'HH:mm',
8057 LTS: 'HH:mm:ss',
8058 L: 'DD.MM.YYYY',
8059 LL: 'D. MMMM YYYY',
8060 LLL: 'D. MMMM YYYY HH:mm',
8061 LLLL: 'dddd, D. MMMM YYYY HH:mm',
8062 },
8063 calendar: {
8064 sameDay: '[heute um] LT [Uhr]',
8065 sameElse: 'L',
8066 nextDay: '[morgen um] LT [Uhr]',
8067 nextWeek: 'dddd [um] LT [Uhr]',
8068 lastDay: '[gestern um] LT [Uhr]',
8069 lastWeek: '[letzten] dddd [um] LT [Uhr]',
8070 },
8071 relativeTime: {
8072 future: 'in %s',
8073 past: 'vor %s',
8074 s: 'ein paar Sekunden',
8075 ss: '%d Sekunden',
8076 m: processRelativeTime,
8077 mm: '%d Minuten',
8078 h: processRelativeTime,
8079 hh: '%d Stunden',
8080 d: processRelativeTime,
8081 dd: processRelativeTime,
8082 w: processRelativeTime,
8083 ww: '%d Wochen',
8084 M: processRelativeTime,
8085 MM: processRelativeTime,
8086 y: processRelativeTime,
8087 yy: processRelativeTime,
8088 },
8089 dayOfMonthOrdinalParse: /\d{1,2}\./,
8090 ordinal: '%d.',
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 });
8096
8097 //! moment.js locale configuration
8098
8099 function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
8100 var format = {
8101 m: ['eine Minute', 'einer Minute'],
8102 h: ['eine Stunde', 'einer Stunde'],
8103 d: ['ein Tag', 'einem Tag'],
8104 dd: [number + ' Tage', number + ' Tagen'],
8105 w: ['eine Woche', 'einer Woche'],
8106 M: ['ein Monat', 'einem Monat'],
8107 MM: [number + ' Monate', number + ' Monaten'],
8108 y: ['ein Jahr', 'einem Jahr'],
8109 yy: [number + ' Jahre', number + ' Jahren'],
8110 };
8111 return withoutSuffix ? format[key][0] : format[key][1];
8112 }
8113
8114 hooks.defineLocale('de-ch', {
8115 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8116 '_'
8117 ),
8118 monthsShort:
8119 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
8120 monthsParseExact: true,
8121 weekdays:
8122 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8123 '_'
8124 ),
8125 weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8126 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8127 weekdaysParseExact: true,
8128 longDateFormat: {
8129 LT: 'HH:mm',
8130 LTS: 'HH:mm:ss',
8131 L: 'DD.MM.YYYY',
8132 LL: 'D. MMMM YYYY',
8133 LLL: 'D. MMMM YYYY HH:mm',
8134 LLLL: 'dddd, D. MMMM YYYY HH:mm',
8135 },
8136 calendar: {
8137 sameDay: '[heute um] LT [Uhr]',
8138 sameElse: 'L',
8139 nextDay: '[morgen um] LT [Uhr]',
8140 nextWeek: 'dddd [um] LT [Uhr]',
8141 lastDay: '[gestern um] LT [Uhr]',
8142 lastWeek: '[letzten] dddd [um] LT [Uhr]',
8143 },
8144 relativeTime: {
8145 future: 'in %s',
8146 past: 'vor %s',
8147 s: 'ein paar Sekunden',
8148 ss: '%d Sekunden',
8149 m: processRelativeTime$1,
8150 mm: '%d Minuten',
8151 h: processRelativeTime$1,
8152 hh: '%d Stunden',
8153 d: processRelativeTime$1,
8154 dd: processRelativeTime$1,
8155 w: processRelativeTime$1,
8156 ww: '%d Wochen',
8157 M: processRelativeTime$1,
8158 MM: processRelativeTime$1,
8159 y: processRelativeTime$1,
8160 yy: processRelativeTime$1,
8161 },
8162 dayOfMonthOrdinalParse: /\d{1,2}\./,
8163 ordinal: '%d.',
8164 week: {
8165 dow: 1, // Monday is the first day of the week.
8166 doy: 4, // The week that contains Jan 4th is the first week of the year.
8167 },
8168 });
8169
8170 //! moment.js locale configuration
8171
8172 function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
8173 var format = {
8174 m: ['eine Minute', 'einer Minute'],
8175 h: ['eine Stunde', 'einer Stunde'],
8176 d: ['ein Tag', 'einem Tag'],
8177 dd: [number + ' Tage', number + ' Tagen'],
8178 w: ['eine Woche', 'einer Woche'],
8179 M: ['ein Monat', 'einem Monat'],
8180 MM: [number + ' Monate', number + ' Monaten'],
8181 y: ['ein Jahr', 'einem Jahr'],
8182 yy: [number + ' Jahre', number + ' Jahren'],
8183 };
8184 return withoutSuffix ? format[key][0] : format[key][1];
8185 }
8186
8187 hooks.defineLocale('de', {
8188 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8189 '_'
8190 ),
8191 monthsShort:
8192 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
8193 monthsParseExact: true,
8194 weekdays:
8195 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8196 '_'
8197 ),
8198 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
8199 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8200 weekdaysParseExact: true,
8201 longDateFormat: {
8202 LT: 'HH:mm',
8203 LTS: 'HH:mm:ss',
8204 L: 'DD.MM.YYYY',
8205 LL: 'D. MMMM YYYY',
8206 LLL: 'D. MMMM YYYY HH:mm',
8207 LLLL: 'dddd, D. MMMM YYYY HH:mm',
8208 },
8209 calendar: {
8210 sameDay: '[heute um] LT [Uhr]',
8211 sameElse: 'L',
8212 nextDay: '[morgen um] LT [Uhr]',
8213 nextWeek: 'dddd [um] LT [Uhr]',
8214 lastDay: '[gestern um] LT [Uhr]',
8215 lastWeek: '[letzten] dddd [um] LT [Uhr]',
8216 },
8217 relativeTime: {
8218 future: 'in %s',
8219 past: 'vor %s',
8220 s: 'ein paar Sekunden',
8221 ss: '%d Sekunden',
8222 m: processRelativeTime$2,
8223 mm: '%d Minuten',
8224 h: processRelativeTime$2,
8225 hh: '%d Stunden',
8226 d: processRelativeTime$2,
8227 dd: processRelativeTime$2,
8228 w: processRelativeTime$2,
8229 ww: '%d Wochen',
8230 M: processRelativeTime$2,
8231 MM: processRelativeTime$2,
8232 y: processRelativeTime$2,
8233 yy: processRelativeTime$2,
8234 },
8235 dayOfMonthOrdinalParse: /\d{1,2}\./,
8236 ordinal: '%d.',
8237 week: {
8238 dow: 1, // Monday is the first day of the week.
8239 doy: 4, // The week that contains Jan 4th is the first week of the year.
8240 },
8241 });
8242
8243 //! moment.js locale configuration
8244
8245 var months$5 = [
8246 'ޖެނުއަރީ',
8247 'ފެބްރުއަރީ',
8248 'މާރިޗު',
8249 'އޭޕްރީލު',
8250 'މޭ',
8251 'ޖޫން',
8252 'ޖުލައި',
8253 'އޯގަސްޓު',
8254 'ސެޕްޓެމްބަރު',
8255 'އޮކްޓޯބަރު',
8256 'ނޮވެމްބަރު',
8257 'ޑިސެމްބަރު',
8258 ],
8259 weekdays = [
8260 'އާދިއްތަ',
8261 'ހޯމަ',
8262 'އަންގާރަ',
8263 'ބުދަ',
8264 'ބުރާސްފަތި',
8265 'ހުކުރު',
8266 'ހޮނިހިރު',
8267 ];
8268
8269 hooks.defineLocale('dv', {
8270 months: months$5,
8271 monthsShort: months$5,
8272 weekdays: weekdays,
8273 weekdaysShort: weekdays,
8274 weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
8275 longDateFormat: {
8276 LT: 'HH:mm',
8277 LTS: 'HH:mm:ss',
8278 L: 'D/M/YYYY',
8279 LL: 'D MMMM YYYY',
8280 LLL: 'D MMMM YYYY HH:mm',
8281 LLLL: 'dddd D MMMM YYYY HH:mm',
8282 },
8283 meridiemParse: /މކ|މފ/,
8284 isPM: function (input) {
8285 return 'މފ' === input;
8286 },
8287 meridiem: function (hour, minute, isLower) {
8288 if (hour < 12) {
8289 return 'މކ';
8290 } else {
8291 return 'މފ';
8292 }
8293 },
8294 calendar: {
8295 sameDay: '[މިއަދު] LT',
8296 nextDay: '[މާދަމާ] LT',
8297 nextWeek: 'dddd LT',
8298 lastDay: '[އިއްޔެ] LT',
8299 lastWeek: '[ފާއިތުވި] dddd LT',
8300 sameElse: 'L',
8301 },
8302 relativeTime: {
8303 future: 'ތެރޭގައި %s',
8304 past: 'ކުރިން %s',
8305 s: 'ސިކުންތުކޮޅެއް',
8306 ss: 'd% ސިކުންތު',
8307 m: 'މިނިޓެއް',
8308 mm: 'މިނިޓު %d',
8309 h: 'ގަޑިއިރެއް',
8310 hh: 'ގަޑިއިރު %d',
8311 d: 'ދުވަހެއް',
8312 dd: 'ދުވަސް %d',
8313 M: 'މަހެއް',
8314 MM: 'މަސް %d',
8315 y: 'އަހަރެއް',
8316 yy: 'އަހަރު %d',
8317 },
8318 preparse: function (string) {
8319 return string.replace(/،/g, ',');
8320 },
8321 postformat: function (string) {
8322 return string.replace(/,/g, '،');
8323 },
8324 week: {
8325 dow: 7, // Sunday is the first day of the week.
8326 doy: 12, // The week that contains Jan 12th is the first week of the year.
8327 },
8328 });
8329
8330 //! moment.js locale configuration
8331
8332 function isFunction$1(input) {
8333 return (
8334 (typeof Function !== 'undefined' && input instanceof Function) ||
8335 Object.prototype.toString.call(input) === '[object Function]'
8336 );
8337 }
8338
8339 hooks.defineLocale('el', {
8340 monthsNominativeEl:
8341 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
8342 '_'
8343 ),
8344 monthsGenitiveEl:
8345 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
8346 '_'
8347 ),
8348 months: function (momentToFormat, format) {
8349 if (!momentToFormat) {
8350 return this._monthsNominativeEl;
8351 } else if (
8352 typeof format === 'string' &&
8353 /D/.test(format.substring(0, format.indexOf('MMMM')))
8354 ) {
8355 // if there is a day number before 'MMMM'
8356 return this._monthsGenitiveEl[momentToFormat.month()];
8357 } else {
8358 return this._monthsNominativeEl[momentToFormat.month()];
8359 }
8360 },
8361 monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
8362 weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
8363 '_'
8364 ),
8365 weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
8366 weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
8367 meridiem: function (hours, minutes, isLower) {
8368 if (hours > 11) {
8369 return isLower ? 'μμ' : 'ΜΜ';
8370 } else {
8371 return isLower ? 'πμ' : 'ΠΜ';
8372 }
8373 },
8374 isPM: function (input) {
8375 return (input + '').toLowerCase()[0] === 'μ';
8376 },
8377 meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
8378 longDateFormat: {
8379 LT: 'h:mm A',
8380 LTS: 'h:mm:ss A',
8381 L: 'DD/MM/YYYY',
8382 LL: 'D MMMM YYYY',
8383 LLL: 'D MMMM YYYY h:mm A',
8384 LLLL: 'dddd, D MMMM YYYY h:mm A',
8385 },
8386 calendarEl: {
8387 sameDay: '[Σήμερα {}] LT',
8388 nextDay: '[Αύριο {}] LT',
8389 nextWeek: 'dddd [{}] LT',
8390 lastDay: '[Χθες {}] LT',
8391 lastWeek: function () {
8392 switch (this.day()) {
8393 case 6:
8394 return '[το προηγούμενο] dddd [{}] LT';
8395 default:
8396 return '[την προηγούμενη] dddd [{}] LT';
8397 }
8398 },
8399 sameElse: 'L',
8400 },
8401 calendar: function (key, mom) {
8402 var output = this._calendarEl[key],
8403 hours = mom && mom.hours();
8404 if (isFunction$1(output)) {
8405 output = output.apply(mom);
8406 }
8407 return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
8408 },
8409 relativeTime: {
8410 future: 'σε %s',
8411 past: '%s πριν',
8412 s: 'λίγα δευτερόλεπτα',
8413 ss: '%d δευτερόλεπτα',
8414 m: 'ένα λεπτό',
8415 mm: '%d λεπτά',
8416 h: 'μία ώρα',
8417 hh: '%d ώρες',
8418 d: 'μία μέρα',
8419 dd: '%d μέρες',
8420 M: 'ένας μήνας',
8421 MM: '%d μήνες',
8422 y: 'ένας χρόνος',
8423 yy: '%d χρόνια',
8424 },
8425 dayOfMonthOrdinalParse: /\d{1,2}η/,
8426 ordinal: '%dη',
8427 week: {
8428 dow: 1, // Monday is the first day of the week.
8429 doy: 4, // The week that contains Jan 4st is the first week of the year.
8430 },
8431 });
8432
8433 //! moment.js locale configuration
8434
8435 hooks.defineLocale('en-au', {
8436 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8437 '_'
8438 ),
8439 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8440 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8441 '_'
8442 ),
8443 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8444 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8445 longDateFormat: {
8446 LT: 'h:mm A',
8447 LTS: 'h:mm:ss A',
8448 L: 'DD/MM/YYYY',
8449 LL: 'D MMMM YYYY',
8450 LLL: 'D MMMM YYYY h:mm A',
8451 LLLL: 'dddd, D MMMM YYYY h:mm A',
8452 },
8453 calendar: {
8454 sameDay: '[Today at] LT',
8455 nextDay: '[Tomorrow at] LT',
8456 nextWeek: 'dddd [at] LT',
8457 lastDay: '[Yesterday at] LT',
8458 lastWeek: '[Last] dddd [at] LT',
8459 sameElse: 'L',
8460 },
8461 relativeTime: {
8462 future: 'in %s',
8463 past: '%s ago',
8464 s: 'a few seconds',
8465 ss: '%d seconds',
8466 m: 'a minute',
8467 mm: '%d minutes',
8468 h: 'an hour',
8469 hh: '%d hours',
8470 d: 'a day',
8471 dd: '%d days',
8472 M: 'a month',
8473 MM: '%d months',
8474 y: 'a year',
8475 yy: '%d years',
8476 },
8477 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8478 ordinal: function (number) {
8479 var b = number % 10,
8480 output =
8481 ~~((number % 100) / 10) === 1
8482 ? 'th'
8483 : b === 1
8484 ? 'st'
8485 : b === 2
8486 ? 'nd'
8487 : b === 3
8488 ? 'rd'
8489 : 'th';
8490 return number + output;
8491 },
8492 week: {
8493 dow: 0, // Sunday is the first day of the week.
8494 doy: 4, // The week that contains Jan 4th is the first week of the year.
8495 },
8496 });
8497
8498 //! moment.js locale configuration
8499
8500 hooks.defineLocale('en-ca', {
8501 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8502 '_'
8503 ),
8504 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8505 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8506 '_'
8507 ),
8508 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8509 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8510 longDateFormat: {
8511 LT: 'h:mm A',
8512 LTS: 'h:mm:ss A',
8513 L: 'YYYY-MM-DD',
8514 LL: 'MMMM D, YYYY',
8515 LLL: 'MMMM D, YYYY h:mm A',
8516 LLLL: 'dddd, MMMM D, YYYY h:mm A',
8517 },
8518 calendar: {
8519 sameDay: '[Today at] LT',
8520 nextDay: '[Tomorrow at] LT',
8521 nextWeek: 'dddd [at] LT',
8522 lastDay: '[Yesterday at] LT',
8523 lastWeek: '[Last] dddd [at] LT',
8524 sameElse: 'L',
8525 },
8526 relativeTime: {
8527 future: 'in %s',
8528 past: '%s ago',
8529 s: 'a few seconds',
8530 ss: '%d seconds',
8531 m: 'a minute',
8532 mm: '%d minutes',
8533 h: 'an hour',
8534 hh: '%d hours',
8535 d: 'a day',
8536 dd: '%d days',
8537 M: 'a month',
8538 MM: '%d months',
8539 y: 'a year',
8540 yy: '%d years',
8541 },
8542 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8543 ordinal: function (number) {
8544 var b = number % 10,
8545 output =
8546 ~~((number % 100) / 10) === 1
8547 ? 'th'
8548 : b === 1
8549 ? 'st'
8550 : b === 2
8551 ? 'nd'
8552 : b === 3
8553 ? 'rd'
8554 : 'th';
8555 return number + output;
8556 },
8557 });
8558
8559 //! moment.js locale configuration
8560
8561 hooks.defineLocale('en-gb', {
8562 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8563 '_'
8564 ),
8565 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8566 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8567 '_'
8568 ),
8569 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8570 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8571 longDateFormat: {
8572 LT: 'HH:mm',
8573 LTS: 'HH:mm:ss',
8574 L: 'DD/MM/YYYY',
8575 LL: 'D MMMM YYYY',
8576 LLL: 'D MMMM YYYY HH:mm',
8577 LLLL: 'dddd, D MMMM YYYY HH:mm',
8578 },
8579 calendar: {
8580 sameDay: '[Today at] LT',
8581 nextDay: '[Tomorrow at] LT',
8582 nextWeek: 'dddd [at] LT',
8583 lastDay: '[Yesterday at] LT',
8584 lastWeek: '[Last] dddd [at] LT',
8585 sameElse: 'L',
8586 },
8587 relativeTime: {
8588 future: 'in %s',
8589 past: '%s ago',
8590 s: 'a few seconds',
8591 ss: '%d seconds',
8592 m: 'a minute',
8593 mm: '%d minutes',
8594 h: 'an hour',
8595 hh: '%d hours',
8596 d: 'a day',
8597 dd: '%d days',
8598 M: 'a month',
8599 MM: '%d months',
8600 y: 'a year',
8601 yy: '%d years',
8602 },
8603 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8604 ordinal: function (number) {
8605 var b = number % 10,
8606 output =
8607 ~~((number % 100) / 10) === 1
8608 ? 'th'
8609 : b === 1
8610 ? 'st'
8611 : b === 2
8612 ? 'nd'
8613 : b === 3
8614 ? 'rd'
8615 : 'th';
8616 return number + output;
8617 },
8618 week: {
8619 dow: 1, // Monday is the first day of the week.
8620 doy: 4, // The week that contains Jan 4th is the first week of the year.
8621 },
8622 });
8623
8624 //! moment.js locale configuration
8625
8626 hooks.defineLocale('en-ie', {
8627 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8628 '_'
8629 ),
8630 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8631 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8632 '_'
8633 ),
8634 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8635 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8636 longDateFormat: {
8637 LT: 'HH:mm',
8638 LTS: 'HH:mm:ss',
8639 L: 'DD/MM/YYYY',
8640 LL: 'D MMMM YYYY',
8641 LLL: 'D MMMM YYYY HH:mm',
8642 LLLL: 'dddd D MMMM YYYY HH:mm',
8643 },
8644 calendar: {
8645 sameDay: '[Today at] LT',
8646 nextDay: '[Tomorrow at] LT',
8647 nextWeek: 'dddd [at] LT',
8648 lastDay: '[Yesterday at] LT',
8649 lastWeek: '[Last] dddd [at] LT',
8650 sameElse: 'L',
8651 },
8652 relativeTime: {
8653 future: 'in %s',
8654 past: '%s ago',
8655 s: 'a few seconds',
8656 ss: '%d seconds',
8657 m: 'a minute',
8658 mm: '%d minutes',
8659 h: 'an hour',
8660 hh: '%d hours',
8661 d: 'a day',
8662 dd: '%d days',
8663 M: 'a month',
8664 MM: '%d months',
8665 y: 'a year',
8666 yy: '%d years',
8667 },
8668 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8669 ordinal: function (number) {
8670 var b = number % 10,
8671 output =
8672 ~~((number % 100) / 10) === 1
8673 ? 'th'
8674 : b === 1
8675 ? 'st'
8676 : b === 2
8677 ? 'nd'
8678 : b === 3
8679 ? 'rd'
8680 : 'th';
8681 return number + output;
8682 },
8683 week: {
8684 dow: 1, // Monday is the first day of the week.
8685 doy: 4, // The week that contains Jan 4th is the first week of the year.
8686 },
8687 });
8688
8689 //! moment.js locale configuration
8690
8691 hooks.defineLocale('en-il', {
8692 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8693 '_'
8694 ),
8695 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8696 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8697 '_'
8698 ),
8699 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8700 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8701 longDateFormat: {
8702 LT: 'HH:mm',
8703 LTS: 'HH:mm:ss',
8704 L: 'DD/MM/YYYY',
8705 LL: 'D MMMM YYYY',
8706 LLL: 'D MMMM YYYY HH:mm',
8707 LLLL: 'dddd, D MMMM YYYY HH:mm',
8708 },
8709 calendar: {
8710 sameDay: '[Today at] LT',
8711 nextDay: '[Tomorrow at] LT',
8712 nextWeek: 'dddd [at] LT',
8713 lastDay: '[Yesterday at] LT',
8714 lastWeek: '[Last] dddd [at] LT',
8715 sameElse: 'L',
8716 },
8717 relativeTime: {
8718 future: 'in %s',
8719 past: '%s ago',
8720 s: 'a few seconds',
8721 ss: '%d seconds',
8722 m: 'a minute',
8723 mm: '%d minutes',
8724 h: 'an hour',
8725 hh: '%d hours',
8726 d: 'a day',
8727 dd: '%d days',
8728 M: 'a month',
8729 MM: '%d months',
8730 y: 'a year',
8731 yy: '%d years',
8732 },
8733 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8734 ordinal: function (number) {
8735 var b = number % 10,
8736 output =
8737 ~~((number % 100) / 10) === 1
8738 ? 'th'
8739 : b === 1
8740 ? 'st'
8741 : b === 2
8742 ? 'nd'
8743 : b === 3
8744 ? 'rd'
8745 : 'th';
8746 return number + output;
8747 },
8748 });
8749
8750 //! moment.js locale configuration
8751
8752 hooks.defineLocale('en-in', {
8753 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8754 '_'
8755 ),
8756 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8757 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8758 '_'
8759 ),
8760 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8761 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8762 longDateFormat: {
8763 LT: 'h:mm A',
8764 LTS: 'h:mm:ss A',
8765 L: 'DD/MM/YYYY',
8766 LL: 'D MMMM YYYY',
8767 LLL: 'D MMMM YYYY h:mm A',
8768 LLLL: 'dddd, D MMMM YYYY h:mm A',
8769 },
8770 calendar: {
8771 sameDay: '[Today at] LT',
8772 nextDay: '[Tomorrow at] LT',
8773 nextWeek: 'dddd [at] LT',
8774 lastDay: '[Yesterday at] LT',
8775 lastWeek: '[Last] dddd [at] LT',
8776 sameElse: 'L',
8777 },
8778 relativeTime: {
8779 future: 'in %s',
8780 past: '%s ago',
8781 s: 'a few seconds',
8782 ss: '%d seconds',
8783 m: 'a minute',
8784 mm: '%d minutes',
8785 h: 'an hour',
8786 hh: '%d hours',
8787 d: 'a day',
8788 dd: '%d days',
8789 M: 'a month',
8790 MM: '%d months',
8791 y: 'a year',
8792 yy: '%d years',
8793 },
8794 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8795 ordinal: function (number) {
8796 var b = number % 10,
8797 output =
8798 ~~((number % 100) / 10) === 1
8799 ? 'th'
8800 : b === 1
8801 ? 'st'
8802 : b === 2
8803 ? 'nd'
8804 : b === 3
8805 ? 'rd'
8806 : 'th';
8807 return number + output;
8808 },
8809 week: {
8810 dow: 0, // Sunday is the first day of the week.
8811 doy: 6, // The week that contains Jan 1st is the first week of the year.
8812 },
8813 });
8814
8815 //! moment.js locale configuration
8816
8817 hooks.defineLocale('en-nz', {
8818 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8819 '_'
8820 ),
8821 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8822 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8823 '_'
8824 ),
8825 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8826 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8827 longDateFormat: {
8828 LT: 'h:mm A',
8829 LTS: 'h:mm:ss A',
8830 L: 'DD/MM/YYYY',
8831 LL: 'D MMMM YYYY',
8832 LLL: 'D MMMM YYYY h:mm A',
8833 LLLL: 'dddd, D MMMM YYYY h:mm A',
8834 },
8835 calendar: {
8836 sameDay: '[Today at] LT',
8837 nextDay: '[Tomorrow at] LT',
8838 nextWeek: 'dddd [at] LT',
8839 lastDay: '[Yesterday at] LT',
8840 lastWeek: '[Last] dddd [at] LT',
8841 sameElse: 'L',
8842 },
8843 relativeTime: {
8844 future: 'in %s',
8845 past: '%s ago',
8846 s: 'a few seconds',
8847 ss: '%d seconds',
8848 m: 'a minute',
8849 mm: '%d minutes',
8850 h: 'an hour',
8851 hh: '%d hours',
8852 d: 'a day',
8853 dd: '%d days',
8854 M: 'a month',
8855 MM: '%d months',
8856 y: 'a year',
8857 yy: '%d years',
8858 },
8859 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8860 ordinal: function (number) {
8861 var b = number % 10,
8862 output =
8863 ~~((number % 100) / 10) === 1
8864 ? 'th'
8865 : b === 1
8866 ? 'st'
8867 : b === 2
8868 ? 'nd'
8869 : b === 3
8870 ? 'rd'
8871 : 'th';
8872 return number + output;
8873 },
8874 week: {
8875 dow: 1, // Monday is the first day of the week.
8876 doy: 4, // The week that contains Jan 4th is the first week of the year.
8877 },
8878 });
8879
8880 //! moment.js locale configuration
8881
8882 hooks.defineLocale('en-sg', {
8883 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8884 '_'
8885 ),
8886 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8887 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8888 '_'
8889 ),
8890 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8891 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8892 longDateFormat: {
8893 LT: 'HH:mm',
8894 LTS: 'HH:mm:ss',
8895 L: 'DD/MM/YYYY',
8896 LL: 'D MMMM YYYY',
8897 LLL: 'D MMMM YYYY HH:mm',
8898 LLLL: 'dddd, D MMMM YYYY HH:mm',
8899 },
8900 calendar: {
8901 sameDay: '[Today at] LT',
8902 nextDay: '[Tomorrow at] LT',
8903 nextWeek: 'dddd [at] LT',
8904 lastDay: '[Yesterday at] LT',
8905 lastWeek: '[Last] dddd [at] LT',
8906 sameElse: 'L',
8907 },
8908 relativeTime: {
8909 future: 'in %s',
8910 past: '%s ago',
8911 s: 'a few seconds',
8912 ss: '%d seconds',
8913 m: 'a minute',
8914 mm: '%d minutes',
8915 h: 'an hour',
8916 hh: '%d hours',
8917 d: 'a day',
8918 dd: '%d days',
8919 M: 'a month',
8920 MM: '%d months',
8921 y: 'a year',
8922 yy: '%d years',
8923 },
8924 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8925 ordinal: function (number) {
8926 var b = number % 10,
8927 output =
8928 ~~((number % 100) / 10) === 1
8929 ? 'th'
8930 : b === 1
8931 ? 'st'
8932 : b === 2
8933 ? 'nd'
8934 : b === 3
8935 ? 'rd'
8936 : 'th';
8937 return number + output;
8938 },
8939 week: {
8940 dow: 1, // Monday is the first day of the week.
8941 doy: 4, // The week that contains Jan 4th is the first week of the year.
8942 },
8943 });
8944
8945 //! moment.js locale configuration
8946
8947 hooks.defineLocale('eo', {
8948 months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
8949 '_'
8950 ),
8951 monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
8952 weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
8953 weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
8954 weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
8955 longDateFormat: {
8956 LT: 'HH:mm',
8957 LTS: 'HH:mm:ss',
8958 L: 'YYYY-MM-DD',
8959 LL: '[la] D[-an de] MMMM, YYYY',
8960 LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
8961 LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
8962 llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
8963 },
8964 meridiemParse: /[ap]\.t\.m/i,
8965 isPM: function (input) {
8966 return input.charAt(0).toLowerCase() === 'p';
8967 },
8968 meridiem: function (hours, minutes, isLower) {
8969 if (hours > 11) {
8970 return isLower ? 'p.t.m.' : 'P.T.M.';
8971 } else {
8972 return isLower ? 'a.t.m.' : 'A.T.M.';
8973 }
8974 },
8975 calendar: {
8976 sameDay: '[Hodiaŭ je] LT',
8977 nextDay: '[Morgaŭ je] LT',
8978 nextWeek: 'dddd[n je] LT',
8979 lastDay: '[Hieraŭ je] LT',
8980 lastWeek: '[pasintan] dddd[n je] LT',
8981 sameElse: 'L',
8982 },
8983 relativeTime: {
8984 future: 'post %s',
8985 past: 'antaŭ %s',
8986 s: 'kelkaj sekundoj',
8987 ss: '%d sekundoj',
8988 m: 'unu minuto',
8989 mm: '%d minutoj',
8990 h: 'unu horo',
8991 hh: '%d horoj',
8992 d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
8993 dd: '%d tagoj',
8994 M: 'unu monato',
8995 MM: '%d monatoj',
8996 y: 'unu jaro',
8997 yy: '%d jaroj',
8998 },
8999 dayOfMonthOrdinalParse: /\d{1,2}a/,
9000 ordinal: '%da',
9001 week: {
9002 dow: 1, // Monday is the first day of the week.
9003 doy: 7, // The week that contains Jan 7th is the first week of the year.
9004 },
9005 });
9006
9007 //! moment.js locale configuration
9008
9009 var monthsShortDot =
9010 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9011 '_'
9012 ),
9013 monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9014 monthsParse$2 = [
9015 /^ene/i,
9016 /^feb/i,
9017 /^mar/i,
9018 /^abr/i,
9019 /^may/i,
9020 /^jun/i,
9021 /^jul/i,
9022 /^ago/i,
9023 /^sep/i,
9024 /^oct/i,
9025 /^nov/i,
9026 /^dic/i,
9027 ],
9028 monthsRegex$3 =
9029 /^(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;
9030
9031 hooks.defineLocale('es-do', {
9032 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9033 '_'
9034 ),
9035 monthsShort: function (m, format) {
9036 if (!m) {
9037 return monthsShortDot;
9038 } else if (/-MMM-/.test(format)) {
9039 return monthsShort$1[m.month()];
9040 } else {
9041 return monthsShortDot[m.month()];
9042 }
9043 },
9044 monthsRegex: monthsRegex$3,
9045 monthsShortRegex: monthsRegex$3,
9046 monthsStrictRegex:
9047 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9048 monthsShortStrictRegex:
9049 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9050 monthsParse: monthsParse$2,
9051 longMonthsParse: monthsParse$2,
9052 shortMonthsParse: monthsParse$2,
9053 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9054 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9055 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9056 weekdaysParseExact: true,
9057 longDateFormat: {
9058 LT: 'h:mm A',
9059 LTS: 'h:mm:ss A',
9060 L: 'DD/MM/YYYY',
9061 LL: 'D [de] MMMM [de] YYYY',
9062 LLL: 'D [de] MMMM [de] YYYY h:mm A',
9063 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
9064 },
9065 calendar: {
9066 sameDay: function () {
9067 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9068 },
9069 nextDay: function () {
9070 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9071 },
9072 nextWeek: function () {
9073 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9074 },
9075 lastDay: function () {
9076 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9077 },
9078 lastWeek: function () {
9079 return (
9080 '[el] dddd [pasado a la' +
9081 (this.hours() !== 1 ? 's' : '') +
9082 '] LT'
9083 );
9084 },
9085 sameElse: 'L',
9086 },
9087 relativeTime: {
9088 future: 'en %s',
9089 past: 'hace %s',
9090 s: 'unos segundos',
9091 ss: '%d segundos',
9092 m: 'un minuto',
9093 mm: '%d minutos',
9094 h: 'una hora',
9095 hh: '%d horas',
9096 d: 'un día',
9097 dd: '%d días',
9098 w: 'una semana',
9099 ww: '%d semanas',
9100 M: 'un mes',
9101 MM: '%d meses',
9102 y: 'un año',
9103 yy: '%d años',
9104 },
9105 dayOfMonthOrdinalParse: /\d{1,2}º/,
9106 ordinal: '%dº',
9107 week: {
9108 dow: 1, // Monday is the first day of the week.
9109 doy: 4, // The week that contains Jan 4th is the first week of the year.
9110 },
9111 });
9112
9113 //! moment.js locale configuration
9114
9115 var monthsShortDot$1 =
9116 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9117 '_'
9118 ),
9119 monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9120 monthsParse$3 = [
9121 /^ene/i,
9122 /^feb/i,
9123 /^mar/i,
9124 /^abr/i,
9125 /^may/i,
9126 /^jun/i,
9127 /^jul/i,
9128 /^ago/i,
9129 /^sep/i,
9130 /^oct/i,
9131 /^nov/i,
9132 /^dic/i,
9133 ],
9134 monthsRegex$4 =
9135 /^(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;
9136
9137 hooks.defineLocale('es-mx', {
9138 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9139 '_'
9140 ),
9141 monthsShort: function (m, format) {
9142 if (!m) {
9143 return monthsShortDot$1;
9144 } else if (/-MMM-/.test(format)) {
9145 return monthsShort$2[m.month()];
9146 } else {
9147 return monthsShortDot$1[m.month()];
9148 }
9149 },
9150 monthsRegex: monthsRegex$4,
9151 monthsShortRegex: monthsRegex$4,
9152 monthsStrictRegex:
9153 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9154 monthsShortStrictRegex:
9155 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9156 monthsParse: monthsParse$3,
9157 longMonthsParse: monthsParse$3,
9158 shortMonthsParse: monthsParse$3,
9159 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9160 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9161 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9162 weekdaysParseExact: true,
9163 longDateFormat: {
9164 LT: 'H:mm',
9165 LTS: 'H:mm:ss',
9166 L: 'DD/MM/YYYY',
9167 LL: 'D [de] MMMM [de] YYYY',
9168 LLL: 'D [de] MMMM [de] YYYY H:mm',
9169 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
9170 },
9171 calendar: {
9172 sameDay: function () {
9173 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9174 },
9175 nextDay: function () {
9176 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9177 },
9178 nextWeek: function () {
9179 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9180 },
9181 lastDay: function () {
9182 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9183 },
9184 lastWeek: function () {
9185 return (
9186 '[el] dddd [pasado a la' +
9187 (this.hours() !== 1 ? 's' : '') +
9188 '] LT'
9189 );
9190 },
9191 sameElse: 'L',
9192 },
9193 relativeTime: {
9194 future: 'en %s',
9195 past: 'hace %s',
9196 s: 'unos segundos',
9197 ss: '%d segundos',
9198 m: 'un minuto',
9199 mm: '%d minutos',
9200 h: 'una hora',
9201 hh: '%d horas',
9202 d: 'un día',
9203 dd: '%d días',
9204 w: 'una semana',
9205 ww: '%d semanas',
9206 M: 'un mes',
9207 MM: '%d meses',
9208 y: 'un año',
9209 yy: '%d años',
9210 },
9211 dayOfMonthOrdinalParse: /\d{1,2}º/,
9212 ordinal: '%dº',
9213 week: {
9214 dow: 0, // Sunday is the first day of the week.
9215 doy: 4, // The week that contains Jan 4th is the first week of the year.
9216 },
9217 invalidDate: 'Fecha inválida',
9218 });
9219
9220 //! moment.js locale configuration
9221
9222 var monthsShortDot$2 =
9223 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9224 '_'
9225 ),
9226 monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9227 monthsParse$4 = [
9228 /^ene/i,
9229 /^feb/i,
9230 /^mar/i,
9231 /^abr/i,
9232 /^may/i,
9233 /^jun/i,
9234 /^jul/i,
9235 /^ago/i,
9236 /^sep/i,
9237 /^oct/i,
9238 /^nov/i,
9239 /^dic/i,
9240 ],
9241 monthsRegex$5 =
9242 /^(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;
9243
9244 hooks.defineLocale('es-us', {
9245 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9246 '_'
9247 ),
9248 monthsShort: function (m, format) {
9249 if (!m) {
9250 return monthsShortDot$2;
9251 } else if (/-MMM-/.test(format)) {
9252 return monthsShort$3[m.month()];
9253 } else {
9254 return monthsShortDot$2[m.month()];
9255 }
9256 },
9257 monthsRegex: monthsRegex$5,
9258 monthsShortRegex: monthsRegex$5,
9259 monthsStrictRegex:
9260 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9261 monthsShortStrictRegex:
9262 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9263 monthsParse: monthsParse$4,
9264 longMonthsParse: monthsParse$4,
9265 shortMonthsParse: monthsParse$4,
9266 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9267 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9268 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9269 weekdaysParseExact: true,
9270 longDateFormat: {
9271 LT: 'h:mm A',
9272 LTS: 'h:mm:ss A',
9273 L: 'MM/DD/YYYY',
9274 LL: 'D [de] MMMM [de] YYYY',
9275 LLL: 'D [de] MMMM [de] YYYY h:mm A',
9276 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
9277 },
9278 calendar: {
9279 sameDay: function () {
9280 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9281 },
9282 nextDay: function () {
9283 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9284 },
9285 nextWeek: function () {
9286 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9287 },
9288 lastDay: function () {
9289 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9290 },
9291 lastWeek: function () {
9292 return (
9293 '[el] dddd [pasado a la' +
9294 (this.hours() !== 1 ? 's' : '') +
9295 '] LT'
9296 );
9297 },
9298 sameElse: 'L',
9299 },
9300 relativeTime: {
9301 future: 'en %s',
9302 past: 'hace %s',
9303 s: 'unos segundos',
9304 ss: '%d segundos',
9305 m: 'un minuto',
9306 mm: '%d minutos',
9307 h: 'una hora',
9308 hh: '%d horas',
9309 d: 'un día',
9310 dd: '%d días',
9311 w: 'una semana',
9312 ww: '%d semanas',
9313 M: 'un mes',
9314 MM: '%d meses',
9315 y: 'un año',
9316 yy: '%d años',
9317 },
9318 dayOfMonthOrdinalParse: /\d{1,2}º/,
9319 ordinal: '%dº',
9320 week: {
9321 dow: 0, // Sunday is the first day of the week.
9322 doy: 6, // The week that contains Jan 6th is the first week of the year.
9323 },
9324 });
9325
9326 //! moment.js locale configuration
9327
9328 var monthsShortDot$3 =
9329 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9330 '_'
9331 ),
9332 monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9333 monthsParse$5 = [
9334 /^ene/i,
9335 /^feb/i,
9336 /^mar/i,
9337 /^abr/i,
9338 /^may/i,
9339 /^jun/i,
9340 /^jul/i,
9341 /^ago/i,
9342 /^sep/i,
9343 /^oct/i,
9344 /^nov/i,
9345 /^dic/i,
9346 ],
9347 monthsRegex$6 =
9348 /^(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;
9349
9350 hooks.defineLocale('es', {
9351 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9352 '_'
9353 ),
9354 monthsShort: function (m, format) {
9355 if (!m) {
9356 return monthsShortDot$3;
9357 } else if (/-MMM-/.test(format)) {
9358 return monthsShort$4[m.month()];
9359 } else {
9360 return monthsShortDot$3[m.month()];
9361 }
9362 },
9363 monthsRegex: monthsRegex$6,
9364 monthsShortRegex: monthsRegex$6,
9365 monthsStrictRegex:
9366 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9367 monthsShortStrictRegex:
9368 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9369 monthsParse: monthsParse$5,
9370 longMonthsParse: monthsParse$5,
9371 shortMonthsParse: monthsParse$5,
9372 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9373 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9374 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9375 weekdaysParseExact: true,
9376 longDateFormat: {
9377 LT: 'H:mm',
9378 LTS: 'H:mm:ss',
9379 L: 'DD/MM/YYYY',
9380 LL: 'D [de] MMMM [de] YYYY',
9381 LLL: 'D [de] MMMM [de] YYYY H:mm',
9382 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
9383 },
9384 calendar: {
9385 sameDay: function () {
9386 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9387 },
9388 nextDay: function () {
9389 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9390 },
9391 nextWeek: function () {
9392 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9393 },
9394 lastDay: function () {
9395 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9396 },
9397 lastWeek: function () {
9398 return (
9399 '[el] dddd [pasado a la' +
9400 (this.hours() !== 1 ? 's' : '') +
9401 '] LT'
9402 );
9403 },
9404 sameElse: 'L',
9405 },
9406 relativeTime: {
9407 future: 'en %s',
9408 past: 'hace %s',
9409 s: 'unos segundos',
9410 ss: '%d segundos',
9411 m: 'un minuto',
9412 mm: '%d minutos',
9413 h: 'una hora',
9414 hh: '%d horas',
9415 d: 'un día',
9416 dd: '%d días',
9417 w: 'una semana',
9418 ww: '%d semanas',
9419 M: 'un mes',
9420 MM: '%d meses',
9421 y: 'un año',
9422 yy: '%d años',
9423 },
9424 dayOfMonthOrdinalParse: /\d{1,2}º/,
9425 ordinal: '%dº',
9426 week: {
9427 dow: 1, // Monday is the first day of the week.
9428 doy: 4, // The week that contains Jan 4th is the first week of the year.
9429 },
9430 invalidDate: 'Fecha inválida',
9431 });
9432
9433 //! moment.js locale configuration
9434
9435 function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
9436 var format = {
9437 s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
9438 ss: [number + 'sekundi', number + 'sekundit'],
9439 m: ['ühe minuti', 'üks minut'],
9440 mm: [number + ' minuti', number + ' minutit'],
9441 h: ['ühe tunni', 'tund aega', 'üks tund'],
9442 hh: [number + ' tunni', number + ' tundi'],
9443 d: ['ühe päeva', 'üks päev'],
9444 M: ['kuu aja', 'kuu aega', 'üks kuu'],
9445 MM: [number + ' kuu', number + ' kuud'],
9446 y: ['ühe aasta', 'aasta', 'üks aasta'],
9447 yy: [number + ' aasta', number + ' aastat'],
9448 };
9449 if (withoutSuffix) {
9450 return format[key][2] ? format[key][2] : format[key][1];
9451 }
9452 return isFuture ? format[key][0] : format[key][1];
9453 }
9454
9455 hooks.defineLocale('et', {
9456 months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
9457 '_'
9458 ),
9459 monthsShort:
9460 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
9461 weekdays:
9462 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
9463 '_'
9464 ),
9465 weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
9466 weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
9467 longDateFormat: {
9468 LT: 'H:mm',
9469 LTS: 'H:mm:ss',
9470 L: 'DD.MM.YYYY',
9471 LL: 'D. MMMM YYYY',
9472 LLL: 'D. MMMM YYYY H:mm',
9473 LLLL: 'dddd, D. MMMM YYYY H:mm',
9474 },
9475 calendar: {
9476 sameDay: '[Täna,] LT',
9477 nextDay: '[Homme,] LT',
9478 nextWeek: '[Järgmine] dddd LT',
9479 lastDay: '[Eile,] LT',
9480 lastWeek: '[Eelmine] dddd LT',
9481 sameElse: 'L',
9482 },
9483 relativeTime: {
9484 future: '%s pärast',
9485 past: '%s tagasi',
9486 s: processRelativeTime$3,
9487 ss: processRelativeTime$3,
9488 m: processRelativeTime$3,
9489 mm: processRelativeTime$3,
9490 h: processRelativeTime$3,
9491 hh: processRelativeTime$3,
9492 d: processRelativeTime$3,
9493 dd: '%d päeva',
9494 M: processRelativeTime$3,
9495 MM: processRelativeTime$3,
9496 y: processRelativeTime$3,
9497 yy: processRelativeTime$3,
9498 },
9499 dayOfMonthOrdinalParse: /\d{1,2}\./,
9500 ordinal: '%d.',
9501 week: {
9502 dow: 1, // Monday is the first day of the week.
9503 doy: 4, // The week that contains Jan 4th is the first week of the year.
9504 },
9505 });
9506
9507 //! moment.js locale configuration
9508
9509 hooks.defineLocale('eu', {
9510 months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
9511 '_'
9512 ),
9513 monthsShort:
9514 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
9515 '_'
9516 ),
9517 monthsParseExact: true,
9518 weekdays:
9519 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
9520 '_'
9521 ),
9522 weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
9523 weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
9524 weekdaysParseExact: true,
9525 longDateFormat: {
9526 LT: 'HH:mm',
9527 LTS: 'HH:mm:ss',
9528 L: 'YYYY-MM-DD',
9529 LL: 'YYYY[ko] MMMM[ren] D[a]',
9530 LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
9531 LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
9532 l: 'YYYY-M-D',
9533 ll: 'YYYY[ko] MMM D[a]',
9534 lll: 'YYYY[ko] MMM D[a] HH:mm',
9535 llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
9536 },
9537 calendar: {
9538 sameDay: '[gaur] LT[etan]',
9539 nextDay: '[bihar] LT[etan]',
9540 nextWeek: 'dddd LT[etan]',
9541 lastDay: '[atzo] LT[etan]',
9542 lastWeek: '[aurreko] dddd LT[etan]',
9543 sameElse: 'L',
9544 },
9545 relativeTime: {
9546 future: '%s barru',
9547 past: 'duela %s',
9548 s: 'segundo batzuk',
9549 ss: '%d segundo',
9550 m: 'minutu bat',
9551 mm: '%d minutu',
9552 h: 'ordu bat',
9553 hh: '%d ordu',
9554 d: 'egun bat',
9555 dd: '%d egun',
9556 M: 'hilabete bat',
9557 MM: '%d hilabete',
9558 y: 'urte bat',
9559 yy: '%d urte',
9560 },
9561 dayOfMonthOrdinalParse: /\d{1,2}\./,
9562 ordinal: '%d.',
9563 week: {
9564 dow: 1, // Monday is the first day of the week.
9565 doy: 7, // The week that contains Jan 7th is the first week of the year.
9566 },
9567 });
9568
9569 //! moment.js locale configuration
9570
9571 var symbolMap$6 = {
9572 1: '۱',
9573 2: '۲',
9574 3: '۳',
9575 4: '۴',
9576 5: '۵',
9577 6: '۶',
9578 7: '۷',
9579 8: '۸',
9580 9: '۹',
9581 0: '۰',
9582 },
9583 numberMap$5 = {
9584 '۱': '1',
9585 '۲': '2',
9586 '۳': '3',
9587 '۴': '4',
9588 '۵': '5',
9589 '۶': '6',
9590 '۷': '7',
9591 '۸': '8',
9592 '۹': '9',
9593 '۰': '0',
9594 };
9595
9596 hooks.defineLocale('fa', {
9597 months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
9598 '_'
9599 ),
9600 monthsShort:
9601 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
9602 '_'
9603 ),
9604 weekdays:
9605 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
9606 '_'
9607 ),
9608 weekdaysShort:
9609 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
9610 '_'
9611 ),
9612 weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
9613 weekdaysParseExact: true,
9614 longDateFormat: {
9615 LT: 'HH:mm',
9616 LTS: 'HH:mm:ss',
9617 L: 'DD/MM/YYYY',
9618 LL: 'D MMMM YYYY',
9619 LLL: 'D MMMM YYYY HH:mm',
9620 LLLL: 'dddd, D MMMM YYYY HH:mm',
9621 },
9622 meridiemParse: /قبل از ظهر|بعد از ظهر/,
9623 isPM: function (input) {
9624 return /بعد از ظهر/.test(input);
9625 },
9626 meridiem: function (hour, minute, isLower) {
9627 if (hour < 12) {
9628 return 'قبل از ظهر';
9629 } else {
9630 return 'بعد از ظهر';
9631 }
9632 },
9633 calendar: {
9634 sameDay: '[امروز ساعت] LT',
9635 nextDay: '[فردا ساعت] LT',
9636 nextWeek: 'dddd [ساعت] LT',
9637 lastDay: '[دیروز ساعت] LT',
9638 lastWeek: 'dddd [پیش] [ساعت] LT',
9639 sameElse: 'L',
9640 },
9641 relativeTime: {
9642 future: 'در %s',
9643 past: '%s پیش',
9644 s: 'چند ثانیه',
9645 ss: '%d ثانیه',
9646 m: 'یک دقیقه',
9647 mm: '%d دقیقه',
9648 h: 'یک ساعت',
9649 hh: '%d ساعت',
9650 d: 'یک روز',
9651 dd: '%d روز',
9652 M: 'یک ماه',
9653 MM: '%d ماه',
9654 y: 'یک سال',
9655 yy: '%d سال',
9656 },
9657 preparse: function (string) {
9658 return string
9659 .replace(/[۰-۹]/g, function (match) {
9660 return numberMap$5[match];
9661 })
9662 .replace(/،/g, ',');
9663 },
9664 postformat: function (string) {
9665 return string
9666 .replace(/\d/g, function (match) {
9667 return symbolMap$6[match];
9668 })
9669 .replace(/,/g, '،');
9670 },
9671 dayOfMonthOrdinalParse: /\d{1,2}م/,
9672 ordinal: '%dم',
9673 week: {
9674 dow: 6, // Saturday is the first day of the week.
9675 doy: 12, // The week that contains Jan 12th is the first week of the year.
9676 },
9677 });
9678
9679 //! moment.js locale configuration
9680
9681 var numbersPast =
9682 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
9683 ' '
9684 ),
9685 numbersFuture = [
9686 'nolla',
9687 'yhden',
9688 'kahden',
9689 'kolmen',
9690 'neljän',
9691 'viiden',
9692 'kuuden',
9693 numbersPast[7],
9694 numbersPast[8],
9695 numbersPast[9],
9696 ];
9697 function translate$2(number, withoutSuffix, key, isFuture) {
9698 var result = '';
9699 switch (key) {
9700 case 's':
9701 return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
9702 case 'ss':
9703 result = isFuture ? 'sekunnin' : 'sekuntia';
9704 break;
9705 case 'm':
9706 return isFuture ? 'minuutin' : 'minuutti';
9707 case 'mm':
9708 result = isFuture ? 'minuutin' : 'minuuttia';
9709 break;
9710 case 'h':
9711 return isFuture ? 'tunnin' : 'tunti';
9712 case 'hh':
9713 result = isFuture ? 'tunnin' : 'tuntia';
9714 break;
9715 case 'd':
9716 return isFuture ? 'päivän' : 'päivä';
9717 case 'dd':
9718 result = isFuture ? 'päivän' : 'päivää';
9719 break;
9720 case 'M':
9721 return isFuture ? 'kuukauden' : 'kuukausi';
9722 case 'MM':
9723 result = isFuture ? 'kuukauden' : 'kuukautta';
9724 break;
9725 case 'y':
9726 return isFuture ? 'vuoden' : 'vuosi';
9727 case 'yy':
9728 result = isFuture ? 'vuoden' : 'vuotta';
9729 break;
9730 }
9731 result = verbalNumber(number, isFuture) + ' ' + result;
9732 return result;
9733 }
9734 function verbalNumber(number, isFuture) {
9735 return number < 10
9736 ? isFuture
9737 ? numbersFuture[number]
9738 : numbersPast[number]
9739 : number;
9740 }
9741
9742 hooks.defineLocale('fi', {
9743 months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
9744 '_'
9745 ),
9746 monthsShort:
9747 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
9748 '_'
9749 ),
9750 weekdays:
9751 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
9752 '_'
9753 ),
9754 weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
9755 weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
9756 longDateFormat: {
9757 LT: 'HH.mm',
9758 LTS: 'HH.mm.ss',
9759 L: 'DD.MM.YYYY',
9760 LL: 'Do MMMM[ta] YYYY',
9761 LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
9762 LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
9763 l: 'D.M.YYYY',
9764 ll: 'Do MMM YYYY',
9765 lll: 'Do MMM YYYY, [klo] HH.mm',
9766 llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
9767 },
9768 calendar: {
9769 sameDay: '[tänään] [klo] LT',
9770 nextDay: '[huomenna] [klo] LT',
9771 nextWeek: 'dddd [klo] LT',
9772 lastDay: '[eilen] [klo] LT',
9773 lastWeek: '[viime] dddd[na] [klo] LT',
9774 sameElse: 'L',
9775 },
9776 relativeTime: {
9777 future: '%s päästä',
9778 past: '%s sitten',
9779 s: translate$2,
9780 ss: translate$2,
9781 m: translate$2,
9782 mm: translate$2,
9783 h: translate$2,
9784 hh: translate$2,
9785 d: translate$2,
9786 dd: translate$2,
9787 M: translate$2,
9788 MM: translate$2,
9789 y: translate$2,
9790 yy: translate$2,
9791 },
9792 dayOfMonthOrdinalParse: /\d{1,2}\./,
9793 ordinal: '%d.',
9794 week: {
9795 dow: 1, // Monday is the first day of the week.
9796 doy: 4, // The week that contains Jan 4th is the first week of the year.
9797 },
9798 });
9799
9800 //! moment.js locale configuration
9801
9802 hooks.defineLocale('fil', {
9803 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
9804 '_'
9805 ),
9806 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
9807 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
9808 '_'
9809 ),
9810 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
9811 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
9812 longDateFormat: {
9813 LT: 'HH:mm',
9814 LTS: 'HH:mm:ss',
9815 L: 'MM/D/YYYY',
9816 LL: 'MMMM D, YYYY',
9817 LLL: 'MMMM D, YYYY HH:mm',
9818 LLLL: 'dddd, MMMM DD, YYYY HH:mm',
9819 },
9820 calendar: {
9821 sameDay: 'LT [ngayong araw]',
9822 nextDay: '[Bukas ng] LT',
9823 nextWeek: 'LT [sa susunod na] dddd',
9824 lastDay: 'LT [kahapon]',
9825 lastWeek: 'LT [noong nakaraang] dddd',
9826 sameElse: 'L',
9827 },
9828 relativeTime: {
9829 future: 'sa loob ng %s',
9830 past: '%s ang nakalipas',
9831 s: 'ilang segundo',
9832 ss: '%d segundo',
9833 m: 'isang minuto',
9834 mm: '%d minuto',
9835 h: 'isang oras',
9836 hh: '%d oras',
9837 d: 'isang araw',
9838 dd: '%d araw',
9839 M: 'isang buwan',
9840 MM: '%d buwan',
9841 y: 'isang taon',
9842 yy: '%d taon',
9843 },
9844 dayOfMonthOrdinalParse: /\d{1,2}/,
9845 ordinal: function (number) {
9846 return number;
9847 },
9848 week: {
9849 dow: 1, // Monday is the first day of the week.
9850 doy: 4, // The week that contains Jan 4th is the first week of the year.
9851 },
9852 });
9853
9854 //! moment.js locale configuration
9855
9856 hooks.defineLocale('fo', {
9857 months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
9858 '_'
9859 ),
9860 monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
9861 weekdays:
9862 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
9863 '_'
9864 ),
9865 weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
9866 weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
9867 longDateFormat: {
9868 LT: 'HH:mm',
9869 LTS: 'HH:mm:ss',
9870 L: 'DD/MM/YYYY',
9871 LL: 'D MMMM YYYY',
9872 LLL: 'D MMMM YYYY HH:mm',
9873 LLLL: 'dddd D. MMMM, YYYY HH:mm',
9874 },
9875 calendar: {
9876 sameDay: '[Í dag kl.] LT',
9877 nextDay: '[Í morgin kl.] LT',
9878 nextWeek: 'dddd [kl.] LT',
9879 lastDay: '[Í gjár kl.] LT',
9880 lastWeek: '[síðstu] dddd [kl] LT',
9881 sameElse: 'L',
9882 },
9883 relativeTime: {
9884 future: 'um %s',
9885 past: '%s síðani',
9886 s: 'fá sekund',
9887 ss: '%d sekundir',
9888 m: 'ein minuttur',
9889 mm: '%d minuttir',
9890 h: 'ein tími',
9891 hh: '%d tímar',
9892 d: 'ein dagur',
9893 dd: '%d dagar',
9894 M: 'ein mánaður',
9895 MM: '%d mánaðir',
9896 y: 'eitt ár',
9897 yy: '%d ár',
9898 },
9899 dayOfMonthOrdinalParse: /\d{1,2}\./,
9900 ordinal: '%d.',
9901 week: {
9902 dow: 1, // Monday is the first day of the week.
9903 doy: 4, // The week that contains Jan 4th is the first week of the year.
9904 },
9905 });
9906
9907 //! moment.js locale configuration
9908
9909 hooks.defineLocale('fr-ca', {
9910 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9911 '_'
9912 ),
9913 monthsShort:
9914 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9915 '_'
9916 ),
9917 monthsParseExact: true,
9918 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
9919 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
9920 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
9921 weekdaysParseExact: true,
9922 longDateFormat: {
9923 LT: 'HH:mm',
9924 LTS: 'HH:mm:ss',
9925 L: 'YYYY-MM-DD',
9926 LL: 'D MMMM YYYY',
9927 LLL: 'D MMMM YYYY HH:mm',
9928 LLLL: 'dddd D MMMM YYYY HH:mm',
9929 },
9930 calendar: {
9931 sameDay: '[Aujourd’hui à] LT',
9932 nextDay: '[Demain à] LT',
9933 nextWeek: 'dddd [à] LT',
9934 lastDay: '[Hier à] LT',
9935 lastWeek: 'dddd [dernier à] LT',
9936 sameElse: 'L',
9937 },
9938 relativeTime: {
9939 future: 'dans %s',
9940 past: 'il y a %s',
9941 s: 'quelques secondes',
9942 ss: '%d secondes',
9943 m: 'une minute',
9944 mm: '%d minutes',
9945 h: 'une heure',
9946 hh: '%d heures',
9947 d: 'un jour',
9948 dd: '%d jours',
9949 M: 'un mois',
9950 MM: '%d mois',
9951 y: 'un an',
9952 yy: '%d ans',
9953 },
9954 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
9955 ordinal: function (number, period) {
9956 switch (period) {
9957 // Words with masculine grammatical gender: mois, trimestre, jour
9958 default:
9959 case 'M':
9960 case 'Q':
9961 case 'D':
9962 case 'DDD':
9963 case 'd':
9964 return number + (number === 1 ? 'er' : 'e');
9965
9966 // Words with feminine grammatical gender: semaine
9967 case 'w':
9968 case 'W':
9969 return number + (number === 1 ? 're' : 'e');
9970 }
9971 },
9972 });
9973
9974 //! moment.js locale configuration
9975
9976 hooks.defineLocale('fr-ch', {
9977 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9978 '_'
9979 ),
9980 monthsShort:
9981 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9982 '_'
9983 ),
9984 monthsParseExact: true,
9985 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
9986 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
9987 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
9988 weekdaysParseExact: true,
9989 longDateFormat: {
9990 LT: 'HH:mm',
9991 LTS: 'HH:mm:ss',
9992 L: 'DD.MM.YYYY',
9993 LL: 'D MMMM YYYY',
9994 LLL: 'D MMMM YYYY HH:mm',
9995 LLLL: 'dddd D MMMM YYYY HH:mm',
9996 },
9997 calendar: {
9998 sameDay: '[Aujourd’hui à] LT',
9999 nextDay: '[Demain à] LT',
10000 nextWeek: 'dddd [à] LT',
10001 lastDay: '[Hier à] LT',
10002 lastWeek: 'dddd [dernier à] LT',
10003 sameElse: 'L',
10004 },
10005 relativeTime: {
10006 future: 'dans %s',
10007 past: 'il y a %s',
10008 s: 'quelques secondes',
10009 ss: '%d secondes',
10010 m: 'une minute',
10011 mm: '%d minutes',
10012 h: 'une heure',
10013 hh: '%d heures',
10014 d: 'un jour',
10015 dd: '%d jours',
10016 M: 'un mois',
10017 MM: '%d mois',
10018 y: 'un an',
10019 yy: '%d ans',
10020 },
10021 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
10022 ordinal: function (number, period) {
10023 switch (period) {
10024 // Words with masculine grammatical gender: mois, trimestre, jour
10025 default:
10026 case 'M':
10027 case 'Q':
10028 case 'D':
10029 case 'DDD':
10030 case 'd':
10031 return number + (number === 1 ? 'er' : 'e');
10032
10033 // Words with feminine grammatical gender: semaine
10034 case 'w':
10035 case 'W':
10036 return number + (number === 1 ? 're' : 'e');
10037 }
10038 },
10039 week: {
10040 dow: 1, // Monday is the first day of the week.
10041 doy: 4, // The week that contains Jan 4th is the first week of the year.
10042 },
10043 });
10044
10045 //! moment.js locale configuration
10046
10047 var monthsStrictRegex$1 =
10048 /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
10049 monthsShortStrictRegex$1 =
10050 /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
10051 monthsRegex$7 =
10052 /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
10053 monthsParse$6 = [
10054 /^janv/i,
10055 /^févr/i,
10056 /^mars/i,
10057 /^avr/i,
10058 /^mai/i,
10059 /^juin/i,
10060 /^juil/i,
10061 /^août/i,
10062 /^sept/i,
10063 /^oct/i,
10064 /^nov/i,
10065 /^déc/i,
10066 ];
10067
10068 hooks.defineLocale('fr', {
10069 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
10070 '_'
10071 ),
10072 monthsShort:
10073 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
10074 '_'
10075 ),
10076 monthsRegex: monthsRegex$7,
10077 monthsShortRegex: monthsRegex$7,
10078 monthsStrictRegex: monthsStrictRegex$1,
10079 monthsShortStrictRegex: monthsShortStrictRegex$1,
10080 monthsParse: monthsParse$6,
10081 longMonthsParse: monthsParse$6,
10082 shortMonthsParse: monthsParse$6,
10083 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
10084 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
10085 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
10086 weekdaysParseExact: true,
10087 longDateFormat: {
10088 LT: 'HH:mm',
10089 LTS: 'HH:mm:ss',
10090 L: 'DD/MM/YYYY',
10091 LL: 'D MMMM YYYY',
10092 LLL: 'D MMMM YYYY HH:mm',
10093 LLLL: 'dddd D MMMM YYYY HH:mm',
10094 },
10095 calendar: {
10096 sameDay: '[Aujourd’hui à] LT',
10097 nextDay: '[Demain à] LT',
10098 nextWeek: 'dddd [à] LT',
10099 lastDay: '[Hier à] LT',
10100 lastWeek: 'dddd [dernier à] LT',
10101 sameElse: 'L',
10102 },
10103 relativeTime: {
10104 future: 'dans %s',
10105 past: 'il y a %s',
10106 s: 'quelques secondes',
10107 ss: '%d secondes',
10108 m: 'une minute',
10109 mm: '%d minutes',
10110 h: 'une heure',
10111 hh: '%d heures',
10112 d: 'un jour',
10113 dd: '%d jours',
10114 w: 'une semaine',
10115 ww: '%d semaines',
10116 M: 'un mois',
10117 MM: '%d mois',
10118 y: 'un an',
10119 yy: '%d ans',
10120 },
10121 dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
10122 ordinal: function (number, period) {
10123 switch (period) {
10124 // TODO: Return 'e' when day of month > 1. Move this case inside
10125 // block for masculine words below.
10126 // See https://github.com/moment/moment/issues/3375
10127 case 'D':
10128 return number + (number === 1 ? 'er' : '');
10129
10130 // Words with masculine grammatical gender: mois, trimestre, jour
10131 default:
10132 case 'M':
10133 case 'Q':
10134 case 'DDD':
10135 case 'd':
10136 return number + (number === 1 ? 'er' : 'e');
10137
10138 // Words with feminine grammatical gender: semaine
10139 case 'w':
10140 case 'W':
10141 return number + (number === 1 ? 're' : 'e');
10142 }
10143 },
10144 week: {
10145 dow: 1, // Monday is the first day of the week.
10146 doy: 4, // The week that contains Jan 4th is the first week of the year.
10147 },
10148 });
10149
10150 //! moment.js locale configuration
10151
10152 var monthsShortWithDots =
10153 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
10154 monthsShortWithoutDots =
10155 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
10156
10157 hooks.defineLocale('fy', {
10158 months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
10159 '_'
10160 ),
10161 monthsShort: function (m, format) {
10162 if (!m) {
10163 return monthsShortWithDots;
10164 } else if (/-MMM-/.test(format)) {
10165 return monthsShortWithoutDots[m.month()];
10166 } else {
10167 return monthsShortWithDots[m.month()];
10168 }
10169 },
10170 monthsParseExact: true,
10171 weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
10172 '_'
10173 ),
10174 weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
10175 weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
10176 weekdaysParseExact: true,
10177 longDateFormat: {
10178 LT: 'HH:mm',
10179 LTS: 'HH:mm:ss',
10180 L: 'DD-MM-YYYY',
10181 LL: 'D MMMM YYYY',
10182 LLL: 'D MMMM YYYY HH:mm',
10183 LLLL: 'dddd D MMMM YYYY HH:mm',
10184 },
10185 calendar: {
10186 sameDay: '[hjoed om] LT',
10187 nextDay: '[moarn om] LT',
10188 nextWeek: 'dddd [om] LT',
10189 lastDay: '[juster om] LT',
10190 lastWeek: '[ôfrûne] dddd [om] LT',
10191 sameElse: 'L',
10192 },
10193 relativeTime: {
10194 future: 'oer %s',
10195 past: '%s lyn',
10196 s: 'in pear sekonden',
10197 ss: '%d sekonden',
10198 m: 'ien minút',
10199 mm: '%d minuten',
10200 h: 'ien oere',
10201 hh: '%d oeren',
10202 d: 'ien dei',
10203 dd: '%d dagen',
10204 M: 'ien moanne',
10205 MM: '%d moannen',
10206 y: 'ien jier',
10207 yy: '%d jierren',
10208 },
10209 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
10210 ordinal: function (number) {
10211 return (
10212 number +
10213 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
10214 );
10215 },
10216 week: {
10217 dow: 1, // Monday is the first day of the week.
10218 doy: 4, // The week that contains Jan 4th is the first week of the year.
10219 },
10220 });
10221
10222 //! moment.js locale configuration
10223
10224 var months$6 = [
10225 'Eanáir',
10226 'Feabhra',
10227 'Márta',
10228 'Aibreán',
10229 'Bealtaine',
10230 'Meitheamh',
10231 'Iúil',
10232 'Lúnasa',
10233 'Meán Fómhair',
10234 'Deireadh Fómhair',
10235 'Samhain',
10236 'Nollaig',
10237 ],
10238 monthsShort$5 = [
10239 'Ean',
10240 'Feabh',
10241 'Márt',
10242 'Aib',
10243 'Beal',
10244 'Meith',
10245 'Iúil',
10246 'Lún',
10247 'M.F.',
10248 'D.F.',
10249 'Samh',
10250 'Noll',
10251 ],
10252 weekdays$1 = [
10253 'Dé Domhnaigh',
10254 'Dé Luain',
10255 'Dé Máirt',
10256 'Dé Céadaoin',
10257 'Déardaoin',
10258 'Dé hAoine',
10259 'Dé Sathairn',
10260 ],
10261 weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
10262 weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
10263
10264 hooks.defineLocale('ga', {
10265 months: months$6,
10266 monthsShort: monthsShort$5,
10267 monthsParseExact: true,
10268 weekdays: weekdays$1,
10269 weekdaysShort: weekdaysShort,
10270 weekdaysMin: weekdaysMin,
10271 longDateFormat: {
10272 LT: 'HH:mm',
10273 LTS: 'HH:mm:ss',
10274 L: 'DD/MM/YYYY',
10275 LL: 'D MMMM YYYY',
10276 LLL: 'D MMMM YYYY HH:mm',
10277 LLLL: 'dddd, D MMMM YYYY HH:mm',
10278 },
10279 calendar: {
10280 sameDay: '[Inniu ag] LT',
10281 nextDay: '[Amárach ag] LT',
10282 nextWeek: 'dddd [ag] LT',
10283 lastDay: '[Inné ag] LT',
10284 lastWeek: 'dddd [seo caite] [ag] LT',
10285 sameElse: 'L',
10286 },
10287 relativeTime: {
10288 future: 'i %s',
10289 past: '%s ó shin',
10290 s: 'cúpla soicind',
10291 ss: '%d soicind',
10292 m: 'nóiméad',
10293 mm: '%d nóiméad',
10294 h: 'uair an chloig',
10295 hh: '%d uair an chloig',
10296 d: 'lá',
10297 dd: '%d lá',
10298 M: 'mí',
10299 MM: '%d míonna',
10300 y: 'bliain',
10301 yy: '%d bliain',
10302 },
10303 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
10304 ordinal: function (number) {
10305 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
10306 return number + output;
10307 },
10308 week: {
10309 dow: 1, // Monday is the first day of the week.
10310 doy: 4, // The week that contains Jan 4th is the first week of the year.
10311 },
10312 });
10313
10314 //! moment.js locale configuration
10315
10316 var months$7 = [
10317 'Am Faoilleach',
10318 'An Gearran',
10319 'Am Màrt',
10320 'An Giblean',
10321 'An Cèitean',
10322 'An t-Ògmhios',
10323 'An t-Iuchar',
10324 'An Lùnastal',
10325 'An t-Sultain',
10326 'An Dàmhair',
10327 'An t-Samhain',
10328 'An Dùbhlachd',
10329 ],
10330 monthsShort$6 = [
10331 'Faoi',
10332 'Gear',
10333 'Màrt',
10334 'Gibl',
10335 'Cèit',
10336 'Ògmh',
10337 'Iuch',
10338 'Lùn',
10339 'Sult',
10340 'Dàmh',
10341 'Samh',
10342 'Dùbh',
10343 ],
10344 weekdays$2 = [
10345 'Didòmhnaich',
10346 'Diluain',
10347 'Dimàirt',
10348 'Diciadain',
10349 'Diardaoin',
10350 'Dihaoine',
10351 'Disathairne',
10352 ],
10353 weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
10354 weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
10355
10356 hooks.defineLocale('gd', {
10357 months: months$7,
10358 monthsShort: monthsShort$6,
10359 monthsParseExact: true,
10360 weekdays: weekdays$2,
10361 weekdaysShort: weekdaysShort$1,
10362 weekdaysMin: weekdaysMin$1,
10363 longDateFormat: {
10364 LT: 'HH:mm',
10365 LTS: 'HH:mm:ss',
10366 L: 'DD/MM/YYYY',
10367 LL: 'D MMMM YYYY',
10368 LLL: 'D MMMM YYYY HH:mm',
10369 LLLL: 'dddd, D MMMM YYYY HH:mm',
10370 },
10371 calendar: {
10372 sameDay: '[An-diugh aig] LT',
10373 nextDay: '[A-màireach aig] LT',
10374 nextWeek: 'dddd [aig] LT',
10375 lastDay: '[An-dè aig] LT',
10376 lastWeek: 'dddd [seo chaidh] [aig] LT',
10377 sameElse: 'L',
10378 },
10379 relativeTime: {
10380 future: 'ann an %s',
10381 past: 'bho chionn %s',
10382 s: 'beagan diogan',
10383 ss: '%d diogan',
10384 m: 'mionaid',
10385 mm: '%d mionaidean',
10386 h: 'uair',
10387 hh: '%d uairean',
10388 d: 'latha',
10389 dd: '%d latha',
10390 M: 'mìos',
10391 MM: '%d mìosan',
10392 y: 'bliadhna',
10393 yy: '%d bliadhna',
10394 },
10395 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
10396 ordinal: function (number) {
10397 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
10398 return number + output;
10399 },
10400 week: {
10401 dow: 1, // Monday is the first day of the week.
10402 doy: 4, // The week that contains Jan 4th is the first week of the year.
10403 },
10404 });
10405
10406 //! moment.js locale configuration
10407
10408 hooks.defineLocale('gl', {
10409 months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
10410 '_'
10411 ),
10412 monthsShort:
10413 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
10414 '_'
10415 ),
10416 monthsParseExact: true,
10417 weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
10418 weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
10419 weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
10420 weekdaysParseExact: true,
10421 longDateFormat: {
10422 LT: 'H:mm',
10423 LTS: 'H:mm:ss',
10424 L: 'DD/MM/YYYY',
10425 LL: 'D [de] MMMM [de] YYYY',
10426 LLL: 'D [de] MMMM [de] YYYY H:mm',
10427 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
10428 },
10429 calendar: {
10430 sameDay: function () {
10431 return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
10432 },
10433 nextDay: function () {
10434 return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
10435 },
10436 nextWeek: function () {
10437 return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
10438 },
10439 lastDay: function () {
10440 return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
10441 },
10442 lastWeek: function () {
10443 return (
10444 '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
10445 );
10446 },
10447 sameElse: 'L',
10448 },
10449 relativeTime: {
10450 future: function (str) {
10451 if (str.indexOf('un') === 0) {
10452 return 'n' + str;
10453 }
10454 return 'en ' + str;
10455 },
10456 past: 'hai %s',
10457 s: 'uns segundos',
10458 ss: '%d segundos',
10459 m: 'un minuto',
10460 mm: '%d minutos',
10461 h: 'unha hora',
10462 hh: '%d horas',
10463 d: 'un día',
10464 dd: '%d días',
10465 M: 'un mes',
10466 MM: '%d meses',
10467 y: 'un ano',
10468 yy: '%d anos',
10469 },
10470 dayOfMonthOrdinalParse: /\d{1,2}º/,
10471 ordinal: '%dº',
10472 week: {
10473 dow: 1, // Monday is the first day of the week.
10474 doy: 4, // The week that contains Jan 4th is the first week of the year.
10475 },
10476 });
10477
10478 //! moment.js locale configuration
10479
10480 function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
10481 var format = {
10482 s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
10483 ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
10484 m: ['एका मिणटान', 'एक मिनूट'],
10485 mm: [number + ' मिणटांनी', number + ' मिणटां'],
10486 h: ['एका वरान', 'एक वर'],
10487 hh: [number + ' वरांनी', number + ' वरां'],
10488 d: ['एका दिसान', 'एक दीस'],
10489 dd: [number + ' दिसांनी', number + ' दीस'],
10490 M: ['एका म्हयन्यान', 'एक म्हयनो'],
10491 MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
10492 y: ['एका वर्सान', 'एक वर्स'],
10493 yy: [number + ' वर्सांनी', number + ' वर्सां'],
10494 };
10495 return isFuture ? format[key][0] : format[key][1];
10496 }
10497
10498 hooks.defineLocale('gom-deva', {
10499 months: {
10500 standalone:
10501 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
10502 '_'
10503 ),
10504 format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
10505 '_'
10506 ),
10507 isFormat: /MMMM(\s)+D[oD]?/,
10508 },
10509 monthsShort:
10510 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
10511 '_'
10512 ),
10513 monthsParseExact: true,
10514 weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
10515 weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
10516 weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
10517 weekdaysParseExact: true,
10518 longDateFormat: {
10519 LT: 'A h:mm [वाजतां]',
10520 LTS: 'A h:mm:ss [वाजतां]',
10521 L: 'DD-MM-YYYY',
10522 LL: 'D MMMM YYYY',
10523 LLL: 'D MMMM YYYY A h:mm [वाजतां]',
10524 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
10525 llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
10526 },
10527 calendar: {
10528 sameDay: '[आयज] LT',
10529 nextDay: '[फाल्यां] LT',
10530 nextWeek: '[फुडलो] dddd[,] LT',
10531 lastDay: '[काल] LT',
10532 lastWeek: '[फाटलो] dddd[,] LT',
10533 sameElse: 'L',
10534 },
10535 relativeTime: {
10536 future: '%s',
10537 past: '%s आदीं',
10538 s: processRelativeTime$4,
10539 ss: processRelativeTime$4,
10540 m: processRelativeTime$4,
10541 mm: processRelativeTime$4,
10542 h: processRelativeTime$4,
10543 hh: processRelativeTime$4,
10544 d: processRelativeTime$4,
10545 dd: processRelativeTime$4,
10546 M: processRelativeTime$4,
10547 MM: processRelativeTime$4,
10548 y: processRelativeTime$4,
10549 yy: processRelativeTime$4,
10550 },
10551 dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
10552 ordinal: function (number, period) {
10553 switch (period) {
10554 // the ordinal 'वेर' only applies to day of the month
10555 case 'D':
10556 return number + 'वेर';
10557 default:
10558 case 'M':
10559 case 'Q':
10560 case 'DDD':
10561 case 'd':
10562 case 'w':
10563 case 'W':
10564 return number;
10565 }
10566 },
10567 week: {
10568 dow: 0, // Sunday is the first day of the week
10569 doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
10570 },
10571 meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
10572 meridiemHour: function (hour, meridiem) {
10573 if (hour === 12) {
10574 hour = 0;
10575 }
10576 if (meridiem === 'राती') {
10577 return hour < 4 ? hour : hour + 12;
10578 } else if (meridiem === 'सकाळीं') {
10579 return hour;
10580 } else if (meridiem === 'दनपारां') {
10581 return hour > 12 ? hour : hour + 12;
10582 } else if (meridiem === 'सांजे') {
10583 return hour + 12;
10584 }
10585 },
10586 meridiem: function (hour, minute, isLower) {
10587 if (hour < 4) {
10588 return 'राती';
10589 } else if (hour < 12) {
10590 return 'सकाळीं';
10591 } else if (hour < 16) {
10592 return 'दनपारां';
10593 } else if (hour < 20) {
10594 return 'सांजे';
10595 } else {
10596 return 'राती';
10597 }
10598 },
10599 });
10600
10601 //! moment.js locale configuration
10602
10603 function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
10604 var format = {
10605 s: ['thoddea sekondamni', 'thodde sekond'],
10606 ss: [number + ' sekondamni', number + ' sekond'],
10607 m: ['eka mintan', 'ek minut'],
10608 mm: [number + ' mintamni', number + ' mintam'],
10609 h: ['eka voran', 'ek vor'],
10610 hh: [number + ' voramni', number + ' voram'],
10611 d: ['eka disan', 'ek dis'],
10612 dd: [number + ' disamni', number + ' dis'],
10613 M: ['eka mhoinean', 'ek mhoino'],
10614 MM: [number + ' mhoineamni', number + ' mhoine'],
10615 y: ['eka vorsan', 'ek voros'],
10616 yy: [number + ' vorsamni', number + ' vorsam'],
10617 };
10618 return isFuture ? format[key][0] : format[key][1];
10619 }
10620
10621 hooks.defineLocale('gom-latn', {
10622 months: {
10623 standalone:
10624 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
10625 '_'
10626 ),
10627 format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
10628 '_'
10629 ),
10630 isFormat: /MMMM(\s)+D[oD]?/,
10631 },
10632 monthsShort:
10633 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
10634 monthsParseExact: true,
10635 weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
10636 weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
10637 weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
10638 weekdaysParseExact: true,
10639 longDateFormat: {
10640 LT: 'A h:mm [vazta]',
10641 LTS: 'A h:mm:ss [vazta]',
10642 L: 'DD-MM-YYYY',
10643 LL: 'D MMMM YYYY',
10644 LLL: 'D MMMM YYYY A h:mm [vazta]',
10645 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
10646 llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
10647 },
10648 calendar: {
10649 sameDay: '[Aiz] LT',
10650 nextDay: '[Faleam] LT',
10651 nextWeek: '[Fuddlo] dddd[,] LT',
10652 lastDay: '[Kal] LT',
10653 lastWeek: '[Fattlo] dddd[,] LT',
10654 sameElse: 'L',
10655 },
10656 relativeTime: {
10657 future: '%s',
10658 past: '%s adim',
10659 s: processRelativeTime$5,
10660 ss: processRelativeTime$5,
10661 m: processRelativeTime$5,
10662 mm: processRelativeTime$5,
10663 h: processRelativeTime$5,
10664 hh: processRelativeTime$5,
10665 d: processRelativeTime$5,
10666 dd: processRelativeTime$5,
10667 M: processRelativeTime$5,
10668 MM: processRelativeTime$5,
10669 y: processRelativeTime$5,
10670 yy: processRelativeTime$5,
10671 },
10672 dayOfMonthOrdinalParse: /\d{1,2}(er)/,
10673 ordinal: function (number, period) {
10674 switch (period) {
10675 // the ordinal 'er' only applies to day of the month
10676 case 'D':
10677 return number + 'er';
10678 default:
10679 case 'M':
10680 case 'Q':
10681 case 'DDD':
10682 case 'd':
10683 case 'w':
10684 case 'W':
10685 return number;
10686 }
10687 },
10688 week: {
10689 dow: 0, // Sunday is the first day of the week
10690 doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
10691 },
10692 meridiemParse: /rati|sokallim|donparam|sanje/,
10693 meridiemHour: function (hour, meridiem) {
10694 if (hour === 12) {
10695 hour = 0;
10696 }
10697 if (meridiem === 'rati') {
10698 return hour < 4 ? hour : hour + 12;
10699 } else if (meridiem === 'sokallim') {
10700 return hour;
10701 } else if (meridiem === 'donparam') {
10702 return hour > 12 ? hour : hour + 12;
10703 } else if (meridiem === 'sanje') {
10704 return hour + 12;
10705 }
10706 },
10707 meridiem: function (hour, minute, isLower) {
10708 if (hour < 4) {
10709 return 'rati';
10710 } else if (hour < 12) {
10711 return 'sokallim';
10712 } else if (hour < 16) {
10713 return 'donparam';
10714 } else if (hour < 20) {
10715 return 'sanje';
10716 } else {
10717 return 'rati';
10718 }
10719 },
10720 });
10721
10722 //! moment.js locale configuration
10723
10724 var symbolMap$7 = {
10725 1: '૧',
10726 2: '૨',
10727 3: '૩',
10728 4: '૪',
10729 5: '૫',
10730 6: '૬',
10731 7: '૭',
10732 8: '૮',
10733 9: '૯',
10734 0: '૦',
10735 },
10736 numberMap$6 = {
10737 '૧': '1',
10738 '૨': '2',
10739 '૩': '3',
10740 '૪': '4',
10741 '૫': '5',
10742 '૬': '6',
10743 '૭': '7',
10744 '૮': '8',
10745 '૯': '9',
10746 '૦': '0',
10747 };
10748
10749 hooks.defineLocale('gu', {
10750 months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
10751 '_'
10752 ),
10753 monthsShort:
10754 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
10755 '_'
10756 ),
10757 monthsParseExact: true,
10758 weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
10759 '_'
10760 ),
10761 weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
10762 weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
10763 longDateFormat: {
10764 LT: 'A h:mm વાગ્યે',
10765 LTS: 'A h:mm:ss વાગ્યે',
10766 L: 'DD/MM/YYYY',
10767 LL: 'D MMMM YYYY',
10768 LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
10769 LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
10770 },
10771 calendar: {
10772 sameDay: '[આજ] LT',
10773 nextDay: '[કાલે] LT',
10774 nextWeek: 'dddd, LT',
10775 lastDay: '[ગઇકાલે] LT',
10776 lastWeek: '[પાછલા] dddd, LT',
10777 sameElse: 'L',
10778 },
10779 relativeTime: {
10780 future: '%s મા',
10781 past: '%s પહેલા',
10782 s: 'અમુક પળો',
10783 ss: '%d સેકંડ',
10784 m: 'એક મિનિટ',
10785 mm: '%d મિનિટ',
10786 h: 'એક કલાક',
10787 hh: '%d કલાક',
10788 d: 'એક દિવસ',
10789 dd: '%d દિવસ',
10790 M: 'એક મહિનો',
10791 MM: '%d મહિનો',
10792 y: 'એક વર્ષ',
10793 yy: '%d વર્ષ',
10794 },
10795 preparse: function (string) {
10796 return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
10797 return numberMap$6[match];
10798 });
10799 },
10800 postformat: function (string) {
10801 return string.replace(/\d/g, function (match) {
10802 return symbolMap$7[match];
10803 });
10804 },
10805 // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
10806 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
10807 meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
10808 meridiemHour: function (hour, meridiem) {
10809 if (hour === 12) {
10810 hour = 0;
10811 }
10812 if (meridiem === 'રાત') {
10813 return hour < 4 ? hour : hour + 12;
10814 } else if (meridiem === 'સવાર') {
10815 return hour;
10816 } else if (meridiem === 'બપોર') {
10817 return hour >= 10 ? hour : hour + 12;
10818 } else if (meridiem === 'સાંજ') {
10819 return hour + 12;
10820 }
10821 },
10822 meridiem: function (hour, minute, isLower) {
10823 if (hour < 4) {
10824 return 'રાત';
10825 } else if (hour < 10) {
10826 return 'સવાર';
10827 } else if (hour < 17) {
10828 return 'બપોર';
10829 } else if (hour < 20) {
10830 return 'સાંજ';
10831 } else {
10832 return 'રાત';
10833 }
10834 },
10835 week: {
10836 dow: 0, // Sunday is the first day of the week.
10837 doy: 6, // The week that contains Jan 6th is the first week of the year.
10838 },
10839 });
10840
10841 //! moment.js locale configuration
10842
10843 hooks.defineLocale('he', {
10844 months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
10845 '_'
10846 ),
10847 monthsShort:
10848 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
10849 weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
10850 weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
10851 weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
10852 longDateFormat: {
10853 LT: 'HH:mm',
10854 LTS: 'HH:mm:ss',
10855 L: 'DD/MM/YYYY',
10856 LL: 'D [ב]MMMM YYYY',
10857 LLL: 'D [ב]MMMM YYYY HH:mm',
10858 LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
10859 l: 'D/M/YYYY',
10860 ll: 'D MMM YYYY',
10861 lll: 'D MMM YYYY HH:mm',
10862 llll: 'ddd, D MMM YYYY HH:mm',
10863 },
10864 calendar: {
10865 sameDay: '[היום ב־]LT',
10866 nextDay: '[מחר ב־]LT',
10867 nextWeek: 'dddd [בשעה] LT',
10868 lastDay: '[אתמול ב־]LT',
10869 lastWeek: '[ביום] dddd [האחרון בשעה] LT',
10870 sameElse: 'L',
10871 },
10872 relativeTime: {
10873 future: 'בעוד %s',
10874 past: 'לפני %s',
10875 s: 'מספר שניות',
10876 ss: '%d שניות',
10877 m: 'דקה',
10878 mm: '%d דקות',
10879 h: 'שעה',
10880 hh: function (number) {
10881 if (number === 2) {
10882 return 'שעתיים';
10883 }
10884 return number + ' שעות';
10885 },
10886 d: 'יום',
10887 dd: function (number) {
10888 if (number === 2) {
10889 return 'יומיים';
10890 }
10891 return number + ' ימים';
10892 },
10893 M: 'חודש',
10894 MM: function (number) {
10895 if (number === 2) {
10896 return 'חודשיים';
10897 }
10898 return number + ' חודשים';
10899 },
10900 y: 'שנה',
10901 yy: function (number) {
10902 if (number === 2) {
10903 return 'שנתיים';
10904 } else if (number % 10 === 0 && number !== 10) {
10905 return number + ' שנה';
10906 }
10907 return number + ' שנים';
10908 },
10909 },
10910 meridiemParse:
10911 /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
10912 isPM: function (input) {
10913 return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
10914 },
10915 meridiem: function (hour, minute, isLower) {
10916 if (hour < 5) {
10917 return 'לפנות בוקר';
10918 } else if (hour < 10) {
10919 return 'בבוקר';
10920 } else if (hour < 12) {
10921 return isLower ? 'לפנה"צ' : 'לפני הצהריים';
10922 } else if (hour < 18) {
10923 return isLower ? 'אחה"צ' : 'אחרי הצהריים';
10924 } else {
10925 return 'בערב';
10926 }
10927 },
10928 });
10929
10930 //! moment.js locale configuration
10931
10932 var symbolMap$8 = {
10933 1: '१',
10934 2: '२',
10935 3: '३',
10936 4: '४',
10937 5: '५',
10938 6: '६',
10939 7: '७',
10940 8: '८',
10941 9: '९',
10942 0: '०',
10943 },
10944 numberMap$7 = {
10945 '१': '1',
10946 '२': '2',
10947 '३': '3',
10948 '४': '4',
10949 '५': '5',
10950 '६': '6',
10951 '७': '7',
10952 '८': '8',
10953 '९': '9',
10954 '०': '0',
10955 },
10956 monthsParse$7 = [
10957 /^जन/i,
10958 /^फ़र|फर/i,
10959 /^मार्च/i,
10960 /^अप्रै/i,
10961 /^मई/i,
10962 /^जून/i,
10963 /^जुल/i,
10964 /^अग/i,
10965 /^सितं|सित/i,
10966 /^अक्टू/i,
10967 /^नव|नवं/i,
10968 /^दिसं|दिस/i,
10969 ],
10970 shortMonthsParse = [
10971 /^जन/i,
10972 /^फ़र/i,
10973 /^मार्च/i,
10974 /^अप्रै/i,
10975 /^मई/i,
10976 /^जून/i,
10977 /^जुल/i,
10978 /^अग/i,
10979 /^सित/i,
10980 /^अक्टू/i,
10981 /^नव/i,
10982 /^दिस/i,
10983 ];
10984
10985 hooks.defineLocale('hi', {
10986 months: {
10987 format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
10988 '_'
10989 ),
10990 standalone:
10991 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
10992 '_'
10993 ),
10994 },
10995 monthsShort:
10996 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
10997 weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10998 weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
10999 weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
11000 longDateFormat: {
11001 LT: 'A h:mm बजे',
11002 LTS: 'A h:mm:ss बजे',
11003 L: 'DD/MM/YYYY',
11004 LL: 'D MMMM YYYY',
11005 LLL: 'D MMMM YYYY, A h:mm बजे',
11006 LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
11007 },
11008
11009 monthsParse: monthsParse$7,
11010 longMonthsParse: monthsParse$7,
11011 shortMonthsParse: shortMonthsParse,
11012
11013 monthsRegex:
11014 /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
11015
11016 monthsShortRegex:
11017 /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
11018
11019 monthsStrictRegex:
11020 /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
11021
11022 monthsShortStrictRegex:
11023 /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
11024
11025 calendar: {
11026 sameDay: '[आज] LT',
11027 nextDay: '[कल] LT',
11028 nextWeek: 'dddd, LT',
11029 lastDay: '[कल] LT',
11030 lastWeek: '[पिछले] dddd, LT',
11031 sameElse: 'L',
11032 },
11033 relativeTime: {
11034 future: '%s में',
11035 past: '%s पहले',
11036 s: 'कुछ ही क्षण',
11037 ss: '%d सेकंड',
11038 m: 'एक मिनट',
11039 mm: '%d मिनट',
11040 h: 'एक घंटा',
11041 hh: '%d घंटे',
11042 d: 'एक दिन',
11043 dd: '%d दिन',
11044 M: 'एक महीने',
11045 MM: '%d महीने',
11046 y: 'एक वर्ष',
11047 yy: '%d वर्ष',
11048 },
11049 preparse: function (string) {
11050 return string.replace(/[१२३४५६७८९०]/g, function (match) {
11051 return numberMap$7[match];
11052 });
11053 },
11054 postformat: function (string) {
11055 return string.replace(/\d/g, function (match) {
11056 return symbolMap$8[match];
11057 });
11058 },
11059 // Hindi notation for meridiems are quite fuzzy in practice. While there exists
11060 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
11061 meridiemParse: /रात|सुबह|दोपहर|शाम/,
11062 meridiemHour: function (hour, meridiem) {
11063 if (hour === 12) {
11064 hour = 0;
11065 }
11066 if (meridiem === 'रात') {
11067 return hour < 4 ? hour : hour + 12;
11068 } else if (meridiem === 'सुबह') {
11069 return hour;
11070 } else if (meridiem === 'दोपहर') {
11071 return hour >= 10 ? hour : hour + 12;
11072 } else if (meridiem === 'शाम') {
11073 return hour + 12;
11074 }
11075 },
11076 meridiem: function (hour, minute, isLower) {
11077 if (hour < 4) {
11078 return 'रात';
11079 } else if (hour < 10) {
11080 return 'सुबह';
11081 } else if (hour < 17) {
11082 return 'दोपहर';
11083 } else if (hour < 20) {
11084 return 'शाम';
11085 } else {
11086 return 'रात';
11087 }
11088 },
11089 week: {
11090 dow: 0, // Sunday is the first day of the week.
11091 doy: 6, // The week that contains Jan 6th is the first week of the year.
11092 },
11093 });
11094
11095 //! moment.js locale configuration
11096
11097 function translate$3(number, withoutSuffix, key) {
11098 var result = number + ' ';
11099 switch (key) {
11100 case 'ss':
11101 if (number === 1) {
11102 result += 'sekunda';
11103 } else if (number === 2 || number === 3 || number === 4) {
11104 result += 'sekunde';
11105 } else {
11106 result += 'sekundi';
11107 }
11108 return result;
11109 case 'm':
11110 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
11111 case 'mm':
11112 if (number === 1) {
11113 result += 'minuta';
11114 } else if (number === 2 || number === 3 || number === 4) {
11115 result += 'minute';
11116 } else {
11117 result += 'minuta';
11118 }
11119 return result;
11120 case 'h':
11121 return withoutSuffix ? 'jedan sat' : 'jednog sata';
11122 case 'hh':
11123 if (number === 1) {
11124 result += 'sat';
11125 } else if (number === 2 || number === 3 || number === 4) {
11126 result += 'sata';
11127 } else {
11128 result += 'sati';
11129 }
11130 return result;
11131 case 'dd':
11132 if (number === 1) {
11133 result += 'dan';
11134 } else {
11135 result += 'dana';
11136 }
11137 return result;
11138 case 'MM':
11139 if (number === 1) {
11140 result += 'mjesec';
11141 } else if (number === 2 || number === 3 || number === 4) {
11142 result += 'mjeseca';
11143 } else {
11144 result += 'mjeseci';
11145 }
11146 return result;
11147 case 'yy':
11148 if (number === 1) {
11149 result += 'godina';
11150 } else if (number === 2 || number === 3 || number === 4) {
11151 result += 'godine';
11152 } else {
11153 result += 'godina';
11154 }
11155 return result;
11156 }
11157 }
11158
11159 hooks.defineLocale('hr', {
11160 months: {
11161 format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
11162 '_'
11163 ),
11164 standalone:
11165 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
11166 '_'
11167 ),
11168 },
11169 monthsShort:
11170 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
11171 '_'
11172 ),
11173 monthsParseExact: true,
11174 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
11175 '_'
11176 ),
11177 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
11178 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
11179 weekdaysParseExact: true,
11180 longDateFormat: {
11181 LT: 'H:mm',
11182 LTS: 'H:mm:ss',
11183 L: 'DD.MM.YYYY',
11184 LL: 'Do MMMM YYYY',
11185 LLL: 'Do MMMM YYYY H:mm',
11186 LLLL: 'dddd, Do MMMM YYYY H:mm',
11187 },
11188 calendar: {
11189 sameDay: '[danas u] LT',
11190 nextDay: '[sutra u] LT',
11191 nextWeek: function () {
11192 switch (this.day()) {
11193 case 0:
11194 return '[u] [nedjelju] [u] LT';
11195 case 3:
11196 return '[u] [srijedu] [u] LT';
11197 case 6:
11198 return '[u] [subotu] [u] LT';
11199 case 1:
11200 case 2:
11201 case 4:
11202 case 5:
11203 return '[u] dddd [u] LT';
11204 }
11205 },
11206 lastDay: '[jučer u] LT',
11207 lastWeek: function () {
11208 switch (this.day()) {
11209 case 0:
11210 return '[prošlu] [nedjelju] [u] LT';
11211 case 3:
11212 return '[prošlu] [srijedu] [u] LT';
11213 case 6:
11214 return '[prošle] [subote] [u] LT';
11215 case 1:
11216 case 2:
11217 case 4:
11218 case 5:
11219 return '[prošli] dddd [u] LT';
11220 }
11221 },
11222 sameElse: 'L',
11223 },
11224 relativeTime: {
11225 future: 'za %s',
11226 past: 'prije %s',
11227 s: 'par sekundi',
11228 ss: translate$3,
11229 m: translate$3,
11230 mm: translate$3,
11231 h: translate$3,
11232 hh: translate$3,
11233 d: 'dan',
11234 dd: translate$3,
11235 M: 'mjesec',
11236 MM: translate$3,
11237 y: 'godinu',
11238 yy: translate$3,
11239 },
11240 dayOfMonthOrdinalParse: /\d{1,2}\./,
11241 ordinal: '%d.',
11242 week: {
11243 dow: 1, // Monday is the first day of the week.
11244 doy: 7, // The week that contains Jan 7th is the first week of the year.
11245 },
11246 });
11247
11248 //! moment.js locale configuration
11249
11250 var weekEndings =
11251 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
11252 function translate$4(number, withoutSuffix, key, isFuture) {
11253 var num = number;
11254 switch (key) {
11255 case 's':
11256 return isFuture || withoutSuffix
11257 ? 'néhány másodperc'
11258 : 'néhány másodperce';
11259 case 'ss':
11260 return num + (isFuture || withoutSuffix)
11261 ? ' másodperc'
11262 : ' másodperce';
11263 case 'm':
11264 return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
11265 case 'mm':
11266 return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
11267 case 'h':
11268 return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
11269 case 'hh':
11270 return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
11271 case 'd':
11272 return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
11273 case 'dd':
11274 return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
11275 case 'M':
11276 return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
11277 case 'MM':
11278 return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
11279 case 'y':
11280 return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
11281 case 'yy':
11282 return num + (isFuture || withoutSuffix ? ' év' : ' éve');
11283 }
11284 return '';
11285 }
11286 function week(isFuture) {
11287 return (
11288 (isFuture ? '' : '[múlt] ') +
11289 '[' +
11290 weekEndings[this.day()] +
11291 '] LT[-kor]'
11292 );
11293 }
11294
11295 hooks.defineLocale('hu', {
11296 months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
11297 '_'
11298 ),
11299 monthsShort:
11300 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
11301 '_'
11302 ),
11303 monthsParseExact: true,
11304 weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
11305 weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
11306 weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
11307 longDateFormat: {
11308 LT: 'H:mm',
11309 LTS: 'H:mm:ss',
11310 L: 'YYYY.MM.DD.',
11311 LL: 'YYYY. MMMM D.',
11312 LLL: 'YYYY. MMMM D. H:mm',
11313 LLLL: 'YYYY. MMMM D., dddd H:mm',
11314 },
11315 meridiemParse: /de|du/i,
11316 isPM: function (input) {
11317 return input.charAt(1).toLowerCase() === 'u';
11318 },
11319 meridiem: function (hours, minutes, isLower) {
11320 if (hours < 12) {
11321 return isLower === true ? 'de' : 'DE';
11322 } else {
11323 return isLower === true ? 'du' : 'DU';
11324 }
11325 },
11326 calendar: {
11327 sameDay: '[ma] LT[-kor]',
11328 nextDay: '[holnap] LT[-kor]',
11329 nextWeek: function () {
11330 return week.call(this, true);
11331 },
11332 lastDay: '[tegnap] LT[-kor]',
11333 lastWeek: function () {
11334 return week.call(this, false);
11335 },
11336 sameElse: 'L',
11337 },
11338 relativeTime: {
11339 future: '%s múlva',
11340 past: '%s',
11341 s: translate$4,
11342 ss: translate$4,
11343 m: translate$4,
11344 mm: translate$4,
11345 h: translate$4,
11346 hh: translate$4,
11347 d: translate$4,
11348 dd: translate$4,
11349 M: translate$4,
11350 MM: translate$4,
11351 y: translate$4,
11352 yy: translate$4,
11353 },
11354 dayOfMonthOrdinalParse: /\d{1,2}\./,
11355 ordinal: '%d.',
11356 week: {
11357 dow: 1, // Monday is the first day of the week.
11358 doy: 4, // The week that contains Jan 4th is the first week of the year.
11359 },
11360 });
11361
11362 //! moment.js locale configuration
11363
11364 hooks.defineLocale('hy-am', {
11365 months: {
11366 format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
11367 '_'
11368 ),
11369 standalone:
11370 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
11371 '_'
11372 ),
11373 },
11374 monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
11375 weekdays:
11376 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
11377 '_'
11378 ),
11379 weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
11380 weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
11381 longDateFormat: {
11382 LT: 'HH:mm',
11383 LTS: 'HH:mm:ss',
11384 L: 'DD.MM.YYYY',
11385 LL: 'D MMMM YYYY թ.',
11386 LLL: 'D MMMM YYYY թ., HH:mm',
11387 LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
11388 },
11389 calendar: {
11390 sameDay: '[այսօր] LT',
11391 nextDay: '[վաղը] LT',
11392 lastDay: '[երեկ] LT',
11393 nextWeek: function () {
11394 return 'dddd [օրը ժամը] LT';
11395 },
11396 lastWeek: function () {
11397 return '[անցած] dddd [օրը ժամը] LT';
11398 },
11399 sameElse: 'L',
11400 },
11401 relativeTime: {
11402 future: '%s հետո',
11403 past: '%s առաջ',
11404 s: 'մի քանի վայրկյան',
11405 ss: '%d վայրկյան',
11406 m: 'րոպե',
11407 mm: '%d րոպե',
11408 h: 'ժամ',
11409 hh: '%d ժամ',
11410 d: 'օր',
11411 dd: '%d օր',
11412 M: 'ամիս',
11413 MM: '%d ամիս',
11414 y: 'տարի',
11415 yy: '%d տարի',
11416 },
11417 meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
11418 isPM: function (input) {
11419 return /^(ցերեկվա|երեկոյան)$/.test(input);
11420 },
11421 meridiem: function (hour) {
11422 if (hour < 4) {
11423 return 'գիշերվա';
11424 } else if (hour < 12) {
11425 return 'առավոտվա';
11426 } else if (hour < 17) {
11427 return 'ցերեկվա';
11428 } else {
11429 return 'երեկոյան';
11430 }
11431 },
11432 dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
11433 ordinal: function (number, period) {
11434 switch (period) {
11435 case 'DDD':
11436 case 'w':
11437 case 'W':
11438 case 'DDDo':
11439 if (number === 1) {
11440 return number + '-ին';
11441 }
11442 return number + '-րդ';
11443 default:
11444 return number;
11445 }
11446 },
11447 week: {
11448 dow: 1, // Monday is the first day of the week.
11449 doy: 7, // The week that contains Jan 7th is the first week of the year.
11450 },
11451 });
11452
11453 //! moment.js locale configuration
11454
11455 hooks.defineLocale('id', {
11456 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
11457 '_'
11458 ),
11459 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
11460 weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
11461 weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
11462 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
11463 longDateFormat: {
11464 LT: 'HH.mm',
11465 LTS: 'HH.mm.ss',
11466 L: 'DD/MM/YYYY',
11467 LL: 'D MMMM YYYY',
11468 LLL: 'D MMMM YYYY [pukul] HH.mm',
11469 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
11470 },
11471 meridiemParse: /pagi|siang|sore|malam/,
11472 meridiemHour: function (hour, meridiem) {
11473 if (hour === 12) {
11474 hour = 0;
11475 }
11476 if (meridiem === 'pagi') {
11477 return hour;
11478 } else if (meridiem === 'siang') {
11479 return hour >= 11 ? hour : hour + 12;
11480 } else if (meridiem === 'sore' || meridiem === 'malam') {
11481 return hour + 12;
11482 }
11483 },
11484 meridiem: function (hours, minutes, isLower) {
11485 if (hours < 11) {
11486 return 'pagi';
11487 } else if (hours < 15) {
11488 return 'siang';
11489 } else if (hours < 19) {
11490 return 'sore';
11491 } else {
11492 return 'malam';
11493 }
11494 },
11495 calendar: {
11496 sameDay: '[Hari ini pukul] LT',
11497 nextDay: '[Besok pukul] LT',
11498 nextWeek: 'dddd [pukul] LT',
11499 lastDay: '[Kemarin pukul] LT',
11500 lastWeek: 'dddd [lalu pukul] LT',
11501 sameElse: 'L',
11502 },
11503 relativeTime: {
11504 future: 'dalam %s',
11505 past: '%s yang lalu',
11506 s: 'beberapa detik',
11507 ss: '%d detik',
11508 m: 'semenit',
11509 mm: '%d menit',
11510 h: 'sejam',
11511 hh: '%d jam',
11512 d: 'sehari',
11513 dd: '%d hari',
11514 M: 'sebulan',
11515 MM: '%d bulan',
11516 y: 'setahun',
11517 yy: '%d tahun',
11518 },
11519 week: {
11520 dow: 0, // Sunday is the first day of the week.
11521 doy: 6, // The week that contains Jan 6th is the first week of the year.
11522 },
11523 });
11524
11525 //! moment.js locale configuration
11526
11527 function plural$2(n) {
11528 if (n % 100 === 11) {
11529 return true;
11530 } else if (n % 10 === 1) {
11531 return false;
11532 }
11533 return true;
11534 }
11535 function translate$5(number, withoutSuffix, key, isFuture) {
11536 var result = number + ' ';
11537 switch (key) {
11538 case 's':
11539 return withoutSuffix || isFuture
11540 ? 'nokkrar sekúndur'
11541 : 'nokkrum sekúndum';
11542 case 'ss':
11543 if (plural$2(number)) {
11544 return (
11545 result +
11546 (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
11547 );
11548 }
11549 return result + 'sekúnda';
11550 case 'm':
11551 return withoutSuffix ? 'mínúta' : 'mínútu';
11552 case 'mm':
11553 if (plural$2(number)) {
11554 return (
11555 result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
11556 );
11557 } else if (withoutSuffix) {
11558 return result + 'mínúta';
11559 }
11560 return result + 'mínútu';
11561 case 'hh':
11562 if (plural$2(number)) {
11563 return (
11564 result +
11565 (withoutSuffix || isFuture
11566 ? 'klukkustundir'
11567 : 'klukkustundum')
11568 );
11569 }
11570 return result + 'klukkustund';
11571 case 'd':
11572 if (withoutSuffix) {
11573 return 'dagur';
11574 }
11575 return isFuture ? 'dag' : 'degi';
11576 case 'dd':
11577 if (plural$2(number)) {
11578 if (withoutSuffix) {
11579 return result + 'dagar';
11580 }
11581 return result + (isFuture ? 'daga' : 'dögum');
11582 } else if (withoutSuffix) {
11583 return result + 'dagur';
11584 }
11585 return result + (isFuture ? 'dag' : 'degi');
11586 case 'M':
11587 if (withoutSuffix) {
11588 return 'mánuður';
11589 }
11590 return isFuture ? 'mánuð' : 'mánuði';
11591 case 'MM':
11592 if (plural$2(number)) {
11593 if (withoutSuffix) {
11594 return result + 'mánuðir';
11595 }
11596 return result + (isFuture ? 'mánuði' : 'mánuðum');
11597 } else if (withoutSuffix) {
11598 return result + 'mánuður';
11599 }
11600 return result + (isFuture ? 'mánuð' : 'mánuði');
11601 case 'y':
11602 return withoutSuffix || isFuture ? 'ár' : 'ári';
11603 case 'yy':
11604 if (plural$2(number)) {
11605 return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
11606 }
11607 return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
11608 }
11609 }
11610
11611 hooks.defineLocale('is', {
11612 months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
11613 '_'
11614 ),
11615 monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
11616 weekdays:
11617 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
11618 '_'
11619 ),
11620 weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
11621 weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
11622 longDateFormat: {
11623 LT: 'H:mm',
11624 LTS: 'H:mm:ss',
11625 L: 'DD.MM.YYYY',
11626 LL: 'D. MMMM YYYY',
11627 LLL: 'D. MMMM YYYY [kl.] H:mm',
11628 LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
11629 },
11630 calendar: {
11631 sameDay: '[í dag kl.] LT',
11632 nextDay: '[á morgun kl.] LT',
11633 nextWeek: 'dddd [kl.] LT',
11634 lastDay: '[í gær kl.] LT',
11635 lastWeek: '[síðasta] dddd [kl.] LT',
11636 sameElse: 'L',
11637 },
11638 relativeTime: {
11639 future: 'eftir %s',
11640 past: 'fyrir %s síðan',
11641 s: translate$5,
11642 ss: translate$5,
11643 m: translate$5,
11644 mm: translate$5,
11645 h: 'klukkustund',
11646 hh: translate$5,
11647 d: translate$5,
11648 dd: translate$5,
11649 M: translate$5,
11650 MM: translate$5,
11651 y: translate$5,
11652 yy: translate$5,
11653 },
11654 dayOfMonthOrdinalParse: /\d{1,2}\./,
11655 ordinal: '%d.',
11656 week: {
11657 dow: 1, // Monday is the first day of the week.
11658 doy: 4, // The week that contains Jan 4th is the first week of the year.
11659 },
11660 });
11661
11662 //! moment.js locale configuration
11663
11664 hooks.defineLocale('it-ch', {
11665 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
11666 '_'
11667 ),
11668 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
11669 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
11670 '_'
11671 ),
11672 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
11673 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
11674 longDateFormat: {
11675 LT: 'HH:mm',
11676 LTS: 'HH:mm:ss',
11677 L: 'DD.MM.YYYY',
11678 LL: 'D MMMM YYYY',
11679 LLL: 'D MMMM YYYY HH:mm',
11680 LLLL: 'dddd D MMMM YYYY HH:mm',
11681 },
11682 calendar: {
11683 sameDay: '[Oggi alle] LT',
11684 nextDay: '[Domani alle] LT',
11685 nextWeek: 'dddd [alle] LT',
11686 lastDay: '[Ieri alle] LT',
11687 lastWeek: function () {
11688 switch (this.day()) {
11689 case 0:
11690 return '[la scorsa] dddd [alle] LT';
11691 default:
11692 return '[lo scorso] dddd [alle] LT';
11693 }
11694 },
11695 sameElse: 'L',
11696 },
11697 relativeTime: {
11698 future: function (s) {
11699 return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
11700 },
11701 past: '%s fa',
11702 s: 'alcuni secondi',
11703 ss: '%d secondi',
11704 m: 'un minuto',
11705 mm: '%d minuti',
11706 h: "un'ora",
11707 hh: '%d ore',
11708 d: 'un giorno',
11709 dd: '%d giorni',
11710 M: 'un mese',
11711 MM: '%d mesi',
11712 y: 'un anno',
11713 yy: '%d anni',
11714 },
11715 dayOfMonthOrdinalParse: /\d{1,2}º/,
11716 ordinal: '%dº',
11717 week: {
11718 dow: 1, // Monday is the first day of the week.
11719 doy: 4, // The week that contains Jan 4th is the first week of the year.
11720 },
11721 });
11722
11723 //! moment.js locale configuration
11724
11725 hooks.defineLocale('it', {
11726 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
11727 '_'
11728 ),
11729 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
11730 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
11731 '_'
11732 ),
11733 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
11734 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
11735 longDateFormat: {
11736 LT: 'HH:mm',
11737 LTS: 'HH:mm:ss',
11738 L: 'DD/MM/YYYY',
11739 LL: 'D MMMM YYYY',
11740 LLL: 'D MMMM YYYY HH:mm',
11741 LLLL: 'dddd D MMMM YYYY HH:mm',
11742 },
11743 calendar: {
11744 sameDay: function () {
11745 return (
11746 '[Oggi a' +
11747 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11748 ']LT'
11749 );
11750 },
11751 nextDay: function () {
11752 return (
11753 '[Domani a' +
11754 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11755 ']LT'
11756 );
11757 },
11758 nextWeek: function () {
11759 return (
11760 'dddd [a' +
11761 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11762 ']LT'
11763 );
11764 },
11765 lastDay: function () {
11766 return (
11767 '[Ieri a' +
11768 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11769 ']LT'
11770 );
11771 },
11772 lastWeek: function () {
11773 switch (this.day()) {
11774 case 0:
11775 return (
11776 '[La scorsa] dddd [a' +
11777 (this.hours() > 1
11778 ? 'lle '
11779 : this.hours() === 0
11780 ? ' '
11781 : "ll'") +
11782 ']LT'
11783 );
11784 default:
11785 return (
11786 '[Lo scorso] dddd [a' +
11787 (this.hours() > 1
11788 ? 'lle '
11789 : this.hours() === 0
11790 ? ' '
11791 : "ll'") +
11792 ']LT'
11793 );
11794 }
11795 },
11796 sameElse: 'L',
11797 },
11798 relativeTime: {
11799 future: 'tra %s',
11800 past: '%s fa',
11801 s: 'alcuni secondi',
11802 ss: '%d secondi',
11803 m: 'un minuto',
11804 mm: '%d minuti',
11805 h: "un'ora",
11806 hh: '%d ore',
11807 d: 'un giorno',
11808 dd: '%d giorni',
11809 w: 'una settimana',
11810 ww: '%d settimane',
11811 M: 'un mese',
11812 MM: '%d mesi',
11813 y: 'un anno',
11814 yy: '%d anni',
11815 },
11816 dayOfMonthOrdinalParse: /\d{1,2}º/,
11817 ordinal: '%dº',
11818 week: {
11819 dow: 1, // Monday is the first day of the week.
11820 doy: 4, // The week that contains Jan 4th is the first week of the year.
11821 },
11822 });
11823
11824 //! moment.js locale configuration
11825
11826 hooks.defineLocale('ja', {
11827 eras: [
11828 {
11829 since: '2019-05-01',
11830 offset: 1,
11831 name: '令和',
11832 narrow: '㋿',
11833 abbr: 'R',
11834 },
11835 {
11836 since: '1989-01-08',
11837 until: '2019-04-30',
11838 offset: 1,
11839 name: '平成',
11840 narrow: '㍻',
11841 abbr: 'H',
11842 },
11843 {
11844 since: '1926-12-25',
11845 until: '1989-01-07',
11846 offset: 1,
11847 name: '昭和',
11848 narrow: '㍼',
11849 abbr: 'S',
11850 },
11851 {
11852 since: '1912-07-30',
11853 until: '1926-12-24',
11854 offset: 1,
11855 name: '大正',
11856 narrow: '㍽',
11857 abbr: 'T',
11858 },
11859 {
11860 since: '1873-01-01',
11861 until: '1912-07-29',
11862 offset: 6,
11863 name: '明治',
11864 narrow: '㍾',
11865 abbr: 'M',
11866 },
11867 {
11868 since: '0001-01-01',
11869 until: '1873-12-31',
11870 offset: 1,
11871 name: '西暦',
11872 narrow: 'AD',
11873 abbr: 'AD',
11874 },
11875 {
11876 since: '0000-12-31',
11877 until: -Infinity,
11878 offset: 1,
11879 name: '紀元前',
11880 narrow: 'BC',
11881 abbr: 'BC',
11882 },
11883 ],
11884 eraYearOrdinalRegex: /(元|\d+)年/,
11885 eraYearOrdinalParse: function (input, match) {
11886 return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
11887 },
11888 months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
11889 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
11890 '_'
11891 ),
11892 weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
11893 weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
11894 weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
11895 longDateFormat: {
11896 LT: 'HH:mm',
11897 LTS: 'HH:mm:ss',
11898 L: 'YYYY/MM/DD',
11899 LL: 'YYYY年M月D日',
11900 LLL: 'YYYY年M月D日 HH:mm',
11901 LLLL: 'YYYY年M月D日 dddd HH:mm',
11902 l: 'YYYY/MM/DD',
11903 ll: 'YYYY年M月D日',
11904 lll: 'YYYY年M月D日 HH:mm',
11905 llll: 'YYYY年M月D日(ddd) HH:mm',
11906 },
11907 meridiemParse: /午前|午後/i,
11908 isPM: function (input) {
11909 return input === '午後';
11910 },
11911 meridiem: function (hour, minute, isLower) {
11912 if (hour < 12) {
11913 return '午前';
11914 } else {
11915 return '午後';
11916 }
11917 },
11918 calendar: {
11919 sameDay: '[今日] LT',
11920 nextDay: '[明日] LT',
11921 nextWeek: function (now) {
11922 if (now.week() !== this.week()) {
11923 return '[来週]dddd LT';
11924 } else {
11925 return 'dddd LT';
11926 }
11927 },
11928 lastDay: '[昨日] LT',
11929 lastWeek: function (now) {
11930 if (this.week() !== now.week()) {
11931 return '[先週]dddd LT';
11932 } else {
11933 return 'dddd LT';
11934 }
11935 },
11936 sameElse: 'L',
11937 },
11938 dayOfMonthOrdinalParse: /\d{1,2}日/,
11939 ordinal: function (number, period) {
11940 switch (period) {
11941 case 'y':
11942 return number === 1 ? '元年' : number + '年';
11943 case 'd':
11944 case 'D':
11945 case 'DDD':
11946 return number + '日';
11947 default:
11948 return number;
11949 }
11950 },
11951 relativeTime: {
11952 future: '%s後',
11953 past: '%s前',
11954 s: '数秒',
11955 ss: '%d秒',
11956 m: '1分',
11957 mm: '%d分',
11958 h: '1時間',
11959 hh: '%d時間',
11960 d: '1日',
11961 dd: '%d日',
11962 M: '1ヶ月',
11963 MM: '%dヶ月',
11964 y: '1年',
11965 yy: '%d年',
11966 },
11967 });
11968
11969 //! moment.js locale configuration
11970
11971 hooks.defineLocale('jv', {
11972 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
11973 '_'
11974 ),
11975 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
11976 weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
11977 weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
11978 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
11979 longDateFormat: {
11980 LT: 'HH.mm',
11981 LTS: 'HH.mm.ss',
11982 L: 'DD/MM/YYYY',
11983 LL: 'D MMMM YYYY',
11984 LLL: 'D MMMM YYYY [pukul] HH.mm',
11985 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
11986 },
11987 meridiemParse: /enjing|siyang|sonten|ndalu/,
11988 meridiemHour: function (hour, meridiem) {
11989 if (hour === 12) {
11990 hour = 0;
11991 }
11992 if (meridiem === 'enjing') {
11993 return hour;
11994 } else if (meridiem === 'siyang') {
11995 return hour >= 11 ? hour : hour + 12;
11996 } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
11997 return hour + 12;
11998 }
11999 },
12000 meridiem: function (hours, minutes, isLower) {
12001 if (hours < 11) {
12002 return 'enjing';
12003 } else if (hours < 15) {
12004 return 'siyang';
12005 } else if (hours < 19) {
12006 return 'sonten';
12007 } else {
12008 return 'ndalu';
12009 }
12010 },
12011 calendar: {
12012 sameDay: '[Dinten puniko pukul] LT',
12013 nextDay: '[Mbenjang pukul] LT',
12014 nextWeek: 'dddd [pukul] LT',
12015 lastDay: '[Kala wingi pukul] LT',
12016 lastWeek: 'dddd [kepengker pukul] LT',
12017 sameElse: 'L',
12018 },
12019 relativeTime: {
12020 future: 'wonten ing %s',
12021 past: '%s ingkang kepengker',
12022 s: 'sawetawis detik',
12023 ss: '%d detik',
12024 m: 'setunggal menit',
12025 mm: '%d menit',
12026 h: 'setunggal jam',
12027 hh: '%d jam',
12028 d: 'sedinten',
12029 dd: '%d dinten',
12030 M: 'sewulan',
12031 MM: '%d wulan',
12032 y: 'setaun',
12033 yy: '%d taun',
12034 },
12035 week: {
12036 dow: 1, // Monday is the first day of the week.
12037 doy: 7, // The week that contains Jan 7th is the first week of the year.
12038 },
12039 });
12040
12041 //! moment.js locale configuration
12042
12043 hooks.defineLocale('ka', {
12044 months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
12045 '_'
12046 ),
12047 monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
12048 weekdays: {
12049 standalone:
12050 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
12051 '_'
12052 ),
12053 format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
12054 '_'
12055 ),
12056 isFormat: /(წინა|შემდეგ)/,
12057 },
12058 weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
12059 weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
12060 longDateFormat: {
12061 LT: 'HH:mm',
12062 LTS: 'HH:mm:ss',
12063 L: 'DD/MM/YYYY',
12064 LL: 'D MMMM YYYY',
12065 LLL: 'D MMMM YYYY HH:mm',
12066 LLLL: 'dddd, D MMMM YYYY HH:mm',
12067 },
12068 calendar: {
12069 sameDay: '[დღეს] LT[-ზე]',
12070 nextDay: '[ხვალ] LT[-ზე]',
12071 lastDay: '[გუშინ] LT[-ზე]',
12072 nextWeek: '[შემდეგ] dddd LT[-ზე]',
12073 lastWeek: '[წინა] dddd LT-ზე',
12074 sameElse: 'L',
12075 },
12076 relativeTime: {
12077 future: function (s) {
12078 return s.replace(
12079 /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
12080 function ($0, $1, $2) {
12081 return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
12082 }
12083 );
12084 },
12085 past: function (s) {
12086 if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
12087 return s.replace(/(ი|ე)$/, 'ის წინ');
12088 }
12089 if (/წელი/.test(s)) {
12090 return s.replace(/წელი$/, 'წლის წინ');
12091 }
12092 return s;
12093 },
12094 s: 'რამდენიმე წამი',
12095 ss: '%d წამი',
12096 m: 'წუთი',
12097 mm: '%d წუთი',
12098 h: 'საათი',
12099 hh: '%d საათი',
12100 d: 'დღე',
12101 dd: '%d დღე',
12102 M: 'თვე',
12103 MM: '%d თვე',
12104 y: 'წელი',
12105 yy: '%d წელი',
12106 },
12107 dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
12108 ordinal: function (number) {
12109 if (number === 0) {
12110 return number;
12111 }
12112 if (number === 1) {
12113 return number + '-ლი';
12114 }
12115 if (
12116 number < 20 ||
12117 (number <= 100 && number % 20 === 0) ||
12118 number % 100 === 0
12119 ) {
12120 return 'მე-' + number;
12121 }
12122 return number + '-ე';
12123 },
12124 week: {
12125 dow: 1,
12126 doy: 7,
12127 },
12128 });
12129
12130 //! moment.js locale configuration
12131
12132 var suffixes$1 = {
12133 0: '-ші',
12134 1: '-ші',
12135 2: '-ші',
12136 3: '-ші',
12137 4: '-ші',
12138 5: '-ші',
12139 6: '-шы',
12140 7: '-ші',
12141 8: '-ші',
12142 9: '-шы',
12143 10: '-шы',
12144 20: '-шы',
12145 30: '-шы',
12146 40: '-шы',
12147 50: '-ші',
12148 60: '-шы',
12149 70: '-ші',
12150 80: '-ші',
12151 90: '-шы',
12152 100: '-ші',
12153 };
12154
12155 hooks.defineLocale('kk', {
12156 months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
12157 '_'
12158 ),
12159 monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
12160 weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
12161 '_'
12162 ),
12163 weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
12164 weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
12165 longDateFormat: {
12166 LT: 'HH:mm',
12167 LTS: 'HH:mm:ss',
12168 L: 'DD.MM.YYYY',
12169 LL: 'D MMMM YYYY',
12170 LLL: 'D MMMM YYYY HH:mm',
12171 LLLL: 'dddd, D MMMM YYYY HH:mm',
12172 },
12173 calendar: {
12174 sameDay: '[Бүгін сағат] LT',
12175 nextDay: '[Ертең сағат] LT',
12176 nextWeek: 'dddd [сағат] LT',
12177 lastDay: '[Кеше сағат] LT',
12178 lastWeek: '[Өткен аптаның] dddd [сағат] LT',
12179 sameElse: 'L',
12180 },
12181 relativeTime: {
12182 future: '%s ішінде',
12183 past: '%s бұрын',
12184 s: 'бірнеше секунд',
12185 ss: '%d секунд',
12186 m: 'бір минут',
12187 mm: '%d минут',
12188 h: 'бір сағат',
12189 hh: '%d сағат',
12190 d: 'бір күн',
12191 dd: '%d күн',
12192 M: 'бір ай',
12193 MM: '%d ай',
12194 y: 'бір жыл',
12195 yy: '%d жыл',
12196 },
12197 dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
12198 ordinal: function (number) {
12199 var a = number % 10,
12200 b = number >= 100 ? 100 : null;
12201 return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
12202 },
12203 week: {
12204 dow: 1, // Monday is the first day of the week.
12205 doy: 7, // The week that contains Jan 7th is the first week of the year.
12206 },
12207 });
12208
12209 //! moment.js locale configuration
12210
12211 var symbolMap$9 = {
12212 1: '១',
12213 2: '២',
12214 3: '៣',
12215 4: '៤',
12216 5: '៥',
12217 6: '៦',
12218 7: '៧',
12219 8: '៨',
12220 9: '៩',
12221 0: '០',
12222 },
12223 numberMap$8 = {
12224 '១': '1',
12225 '២': '2',
12226 '៣': '3',
12227 '៤': '4',
12228 '៥': '5',
12229 '៦': '6',
12230 '៧': '7',
12231 '៨': '8',
12232 '៩': '9',
12233 '០': '0',
12234 };
12235
12236 hooks.defineLocale('km', {
12237 months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
12238 '_'
12239 ),
12240 monthsShort:
12241 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
12242 '_'
12243 ),
12244 weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
12245 weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
12246 weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
12247 weekdaysParseExact: true,
12248 longDateFormat: {
12249 LT: 'HH:mm',
12250 LTS: 'HH:mm:ss',
12251 L: 'DD/MM/YYYY',
12252 LL: 'D MMMM YYYY',
12253 LLL: 'D MMMM YYYY HH:mm',
12254 LLLL: 'dddd, D MMMM YYYY HH:mm',
12255 },
12256 meridiemParse: /ព្រឹក|ល្ងាច/,
12257 isPM: function (input) {
12258 return input === 'ល្ងាច';
12259 },
12260 meridiem: function (hour, minute, isLower) {
12261 if (hour < 12) {
12262 return 'ព្រឹក';
12263 } else {
12264 return 'ល្ងាច';
12265 }
12266 },
12267 calendar: {
12268 sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
12269 nextDay: '[ស្អែក ម៉ោង] LT',
12270 nextWeek: 'dddd [ម៉ោង] LT',
12271 lastDay: '[ម្សិលមិញ ម៉ោង] LT',
12272 lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
12273 sameElse: 'L',
12274 },
12275 relativeTime: {
12276 future: '%sទៀត',
12277 past: '%sមុន',
12278 s: 'ប៉ុន្មានវិនាទី',
12279 ss: '%d វិនាទី',
12280 m: 'មួយនាទី',
12281 mm: '%d នាទី',
12282 h: 'មួយម៉ោង',
12283 hh: '%d ម៉ោង',
12284 d: 'មួយថ្ងៃ',
12285 dd: '%d ថ្ងៃ',
12286 M: 'មួយខែ',
12287 MM: '%d ខែ',
12288 y: 'មួយឆ្នាំ',
12289 yy: '%d ឆ្នាំ',
12290 },
12291 dayOfMonthOrdinalParse: /ទី\d{1,2}/,
12292 ordinal: 'ទី%d',
12293 preparse: function (string) {
12294 return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
12295 return numberMap$8[match];
12296 });
12297 },
12298 postformat: function (string) {
12299 return string.replace(/\d/g, function (match) {
12300 return symbolMap$9[match];
12301 });
12302 },
12303 week: {
12304 dow: 1, // Monday is the first day of the week.
12305 doy: 4, // The week that contains Jan 4th is the first week of the year.
12306 },
12307 });
12308
12309 //! moment.js locale configuration
12310
12311 var symbolMap$a = {
12312 1: '೧',
12313 2: '೨',
12314 3: '೩',
12315 4: '೪',
12316 5: '೫',
12317 6: '೬',
12318 7: '೭',
12319 8: '೮',
12320 9: '೯',
12321 0: '೦',
12322 },
12323 numberMap$9 = {
12324 '೧': '1',
12325 '೨': '2',
12326 '೩': '3',
12327 '೪': '4',
12328 '೫': '5',
12329 '೬': '6',
12330 '೭': '7',
12331 '೮': '8',
12332 '೯': '9',
12333 '೦': '0',
12334 };
12335
12336 hooks.defineLocale('kn', {
12337 months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
12338 '_'
12339 ),
12340 monthsShort:
12341 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
12342 '_'
12343 ),
12344 monthsParseExact: true,
12345 weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
12346 '_'
12347 ),
12348 weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
12349 weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
12350 longDateFormat: {
12351 LT: 'A h:mm',
12352 LTS: 'A h:mm:ss',
12353 L: 'DD/MM/YYYY',
12354 LL: 'D MMMM YYYY',
12355 LLL: 'D MMMM YYYY, A h:mm',
12356 LLLL: 'dddd, D MMMM YYYY, A h:mm',
12357 },
12358 calendar: {
12359 sameDay: '[ಇಂದು] LT',
12360 nextDay: '[ನಾಳೆ] LT',
12361 nextWeek: 'dddd, LT',
12362 lastDay: '[ನಿನ್ನೆ] LT',
12363 lastWeek: '[ಕೊನೆಯ] dddd, LT',
12364 sameElse: 'L',
12365 },
12366 relativeTime: {
12367 future: '%s ನಂತರ',
12368 past: '%s ಹಿಂದೆ',
12369 s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
12370 ss: '%d ಸೆಕೆಂಡುಗಳು',
12371 m: 'ಒಂದು ನಿಮಿಷ',
12372 mm: '%d ನಿಮಿಷ',
12373 h: 'ಒಂದು ಗಂಟೆ',
12374 hh: '%d ಗಂಟೆ',
12375 d: 'ಒಂದು ದಿನ',
12376 dd: '%d ದಿನ',
12377 M: 'ಒಂದು ತಿಂಗಳು',
12378 MM: '%d ತಿಂಗಳು',
12379 y: 'ಒಂದು ವರ್ಷ',
12380 yy: '%d ವರ್ಷ',
12381 },
12382 preparse: function (string) {
12383 return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
12384 return numberMap$9[match];
12385 });
12386 },
12387 postformat: function (string) {
12388 return string.replace(/\d/g, function (match) {
12389 return symbolMap$a[match];
12390 });
12391 },
12392 meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
12393 meridiemHour: function (hour, meridiem) {
12394 if (hour === 12) {
12395 hour = 0;
12396 }
12397 if (meridiem === 'ರಾತ್ರಿ') {
12398 return hour < 4 ? hour : hour + 12;
12399 } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
12400 return hour;
12401 } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
12402 return hour >= 10 ? hour : hour + 12;
12403 } else if (meridiem === 'ಸಂಜೆ') {
12404 return hour + 12;
12405 }
12406 },
12407 meridiem: function (hour, minute, isLower) {
12408 if (hour < 4) {
12409 return 'ರಾತ್ರಿ';
12410 } else if (hour < 10) {
12411 return 'ಬೆಳಿಗ್ಗೆ';
12412 } else if (hour < 17) {
12413 return 'ಮಧ್ಯಾಹ್ನ';
12414 } else if (hour < 20) {
12415 return 'ಸಂಜೆ';
12416 } else {
12417 return 'ರಾತ್ರಿ';
12418 }
12419 },
12420 dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
12421 ordinal: function (number) {
12422 return number + 'ನೇ';
12423 },
12424 week: {
12425 dow: 0, // Sunday is the first day of the week.
12426 doy: 6, // The week that contains Jan 6th is the first week of the year.
12427 },
12428 });
12429
12430 //! moment.js locale configuration
12431
12432 hooks.defineLocale('ko', {
12433 months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
12434 monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
12435 '_'
12436 ),
12437 weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
12438 weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
12439 weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
12440 longDateFormat: {
12441 LT: 'A h:mm',
12442 LTS: 'A h:mm:ss',
12443 L: 'YYYY.MM.DD.',
12444 LL: 'YYYY년 MMMM D일',
12445 LLL: 'YYYY년 MMMM D일 A h:mm',
12446 LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
12447 l: 'YYYY.MM.DD.',
12448 ll: 'YYYY년 MMMM D일',
12449 lll: 'YYYY년 MMMM D일 A h:mm',
12450 llll: 'YYYY년 MMMM D일 dddd A h:mm',
12451 },
12452 calendar: {
12453 sameDay: '오늘 LT',
12454 nextDay: '내일 LT',
12455 nextWeek: 'dddd LT',
12456 lastDay: '어제 LT',
12457 lastWeek: '지난주 dddd LT',
12458 sameElse: 'L',
12459 },
12460 relativeTime: {
12461 future: '%s 후',
12462 past: '%s 전',
12463 s: '몇 초',
12464 ss: '%d초',
12465 m: '1분',
12466 mm: '%d분',
12467 h: '한 시간',
12468 hh: '%d시간',
12469 d: '하루',
12470 dd: '%d일',
12471 M: '한 달',
12472 MM: '%d달',
12473 y: '일 년',
12474 yy: '%d년',
12475 },
12476 dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
12477 ordinal: function (number, period) {
12478 switch (period) {
12479 case 'd':
12480 case 'D':
12481 case 'DDD':
12482 return number + '일';
12483 case 'M':
12484 return number + '월';
12485 case 'w':
12486 case 'W':
12487 return number + '주';
12488 default:
12489 return number;
12490 }
12491 },
12492 meridiemParse: /오전|오후/,
12493 isPM: function (token) {
12494 return token === '오후';
12495 },
12496 meridiem: function (hour, minute, isUpper) {
12497 return hour < 12 ? '오전' : '오후';
12498 },
12499 });
12500
12501 //! moment.js locale configuration
12502
12503 var symbolMap$b = {
12504 1: '١',
12505 2: '٢',
12506 3: '٣',
12507 4: '٤',
12508 5: '٥',
12509 6: '٦',
12510 7: '٧',
12511 8: '٨',
12512 9: '٩',
12513 0: '٠',
12514 },
12515 numberMap$a = {
12516 '١': '1',
12517 '٢': '2',
12518 '٣': '3',
12519 '٤': '4',
12520 '٥': '5',
12521 '٦': '6',
12522 '٧': '7',
12523 '٨': '8',
12524 '٩': '9',
12525 '٠': '0',
12526 },
12527 months$8 = [
12528 'کانونی دووەم',
12529 'شوبات',
12530 'ئازار',
12531 'نیسان',
12532 'ئایار',
12533 'حوزەیران',
12534 'تەمموز',
12535 'ئاب',
12536 'ئەیلوول',
12537 'تشرینی یەكەم',
12538 'تشرینی دووەم',
12539 'كانونی یەکەم',
12540 ];
12541
12542 hooks.defineLocale('ku', {
12543 months: months$8,
12544 monthsShort: months$8,
12545 weekdays:
12546 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
12547 '_'
12548 ),
12549 weekdaysShort:
12550 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
12551 weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
12552 weekdaysParseExact: true,
12553 longDateFormat: {
12554 LT: 'HH:mm',
12555 LTS: 'HH:mm:ss',
12556 L: 'DD/MM/YYYY',
12557 LL: 'D MMMM YYYY',
12558 LLL: 'D MMMM YYYY HH:mm',
12559 LLLL: 'dddd, D MMMM YYYY HH:mm',
12560 },
12561 meridiemParse: /ئێواره‌|به‌یانی/,
12562 isPM: function (input) {
12563 return /ئێواره‌/.test(input);
12564 },
12565 meridiem: function (hour, minute, isLower) {
12566 if (hour < 12) {
12567 return 'به‌یانی';
12568 } else {
12569 return 'ئێواره‌';
12570 }
12571 },
12572 calendar: {
12573 sameDay: '[ئه‌مرۆ كاتژمێر] LT',
12574 nextDay: '[به‌یانی كاتژمێر] LT',
12575 nextWeek: 'dddd [كاتژمێر] LT',
12576 lastDay: '[دوێنێ كاتژمێر] LT',
12577 lastWeek: 'dddd [كاتژمێر] LT',
12578 sameElse: 'L',
12579 },
12580 relativeTime: {
12581 future: 'له‌ %s',
12582 past: '%s',
12583 s: 'چه‌ند چركه‌یه‌ك',
12584 ss: 'چركه‌ %d',
12585 m: 'یه‌ك خوله‌ك',
12586 mm: '%d خوله‌ك',
12587 h: 'یه‌ك كاتژمێر',
12588 hh: '%d كاتژمێر',
12589 d: 'یه‌ك ڕۆژ',
12590 dd: '%d ڕۆژ',
12591 M: 'یه‌ك مانگ',
12592 MM: '%d مانگ',
12593 y: 'یه‌ك ساڵ',
12594 yy: '%d ساڵ',
12595 },
12596 preparse: function (string) {
12597 return string
12598 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
12599 return numberMap$a[match];
12600 })
12601 .replace(/،/g, ',');
12602 },
12603 postformat: function (string) {
12604 return string
12605 .replace(/\d/g, function (match) {
12606 return symbolMap$b[match];
12607 })
12608 .replace(/,/g, '،');
12609 },
12610 week: {
12611 dow: 6, // Saturday is the first day of the week.
12612 doy: 12, // The week that contains Jan 12th is the first week of the year.
12613 },
12614 });
12615
12616 //! moment.js locale configuration
12617
12618 var suffixes$2 = {
12619 0: '-чү',
12620 1: '-чи',
12621 2: '-чи',
12622 3: '-чү',
12623 4: '-чү',
12624 5: '-чи',
12625 6: '-чы',
12626 7: '-чи',
12627 8: '-чи',
12628 9: '-чу',
12629 10: '-чу',
12630 20: '-чы',
12631 30: '-чу',
12632 40: '-чы',
12633 50: '-чү',
12634 60: '-чы',
12635 70: '-чи',
12636 80: '-чи',
12637 90: '-чу',
12638 100: '-чү',
12639 };
12640
12641 hooks.defineLocale('ky', {
12642 months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
12643 '_'
12644 ),
12645 monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
12646 '_'
12647 ),
12648 weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
12649 '_'
12650 ),
12651 weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
12652 weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
12653 longDateFormat: {
12654 LT: 'HH:mm',
12655 LTS: 'HH:mm:ss',
12656 L: 'DD.MM.YYYY',
12657 LL: 'D MMMM YYYY',
12658 LLL: 'D MMMM YYYY HH:mm',
12659 LLLL: 'dddd, D MMMM YYYY HH:mm',
12660 },
12661 calendar: {
12662 sameDay: '[Бүгүн саат] LT',
12663 nextDay: '[Эртең саат] LT',
12664 nextWeek: 'dddd [саат] LT',
12665 lastDay: '[Кечээ саат] LT',
12666 lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
12667 sameElse: 'L',
12668 },
12669 relativeTime: {
12670 future: '%s ичинде',
12671 past: '%s мурун',
12672 s: 'бирнече секунд',
12673 ss: '%d секунд',
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: function (number) {
12687 var a = number % 10,
12688 b = number >= 100 ? 100 : null;
12689 return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
12690 },
12691 week: {
12692 dow: 1, // Monday is the first day of the week.
12693 doy: 7, // The week that contains Jan 7th is the first week of the year.
12694 },
12695 });
12696
12697 //! moment.js locale configuration
12698
12699 function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
12700 var format = {
12701 m: ['eng Minutt', 'enger Minutt'],
12702 h: ['eng Stonn', 'enger Stonn'],
12703 d: ['een Dag', 'engem Dag'],
12704 M: ['ee Mount', 'engem Mount'],
12705 y: ['ee Joer', 'engem Joer'],
12706 };
12707 return withoutSuffix ? format[key][0] : format[key][1];
12708 }
12709 function processFutureTime(string) {
12710 var number = string.substr(0, string.indexOf(' '));
12711 if (eifelerRegelAppliesToNumber(number)) {
12712 return 'a ' + string;
12713 }
12714 return 'an ' + string;
12715 }
12716 function processPastTime(string) {
12717 var number = string.substr(0, string.indexOf(' '));
12718 if (eifelerRegelAppliesToNumber(number)) {
12719 return 'viru ' + string;
12720 }
12721 return 'virun ' + string;
12722 }
12723 /**
12724 * Returns true if the word before the given number loses the '-n' ending.
12725 * e.g. 'an 10 Deeg' but 'a 5 Deeg'
12726 *
12727 * @param number {integer}
12728 * @returns {boolean}
12729 */
12730 function eifelerRegelAppliesToNumber(number) {
12731 number = parseInt(number, 10);
12732 if (isNaN(number)) {
12733 return false;
12734 }
12735 if (number < 0) {
12736 // Negative Number --> always true
12737 return true;
12738 } else if (number < 10) {
12739 // Only 1 digit
12740 if (4 <= number && number <= 7) {
12741 return true;
12742 }
12743 return false;
12744 } else if (number < 100) {
12745 // 2 digits
12746 var lastDigit = number % 10,
12747 firstDigit = number / 10;
12748 if (lastDigit === 0) {
12749 return eifelerRegelAppliesToNumber(firstDigit);
12750 }
12751 return eifelerRegelAppliesToNumber(lastDigit);
12752 } else if (number < 10000) {
12753 // 3 or 4 digits --> recursively check first digit
12754 while (number >= 10) {
12755 number = number / 10;
12756 }
12757 return eifelerRegelAppliesToNumber(number);
12758 } else {
12759 // Anything larger than 4 digits: recursively check first n-3 digits
12760 number = number / 1000;
12761 return eifelerRegelAppliesToNumber(number);
12762 }
12763 }
12764
12765 hooks.defineLocale('lb', {
12766 months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
12767 '_'
12768 ),
12769 monthsShort:
12770 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
12771 '_'
12772 ),
12773 monthsParseExact: true,
12774 weekdays:
12775 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
12776 '_'
12777 ),
12778 weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
12779 weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
12780 weekdaysParseExact: true,
12781 longDateFormat: {
12782 LT: 'H:mm [Auer]',
12783 LTS: 'H:mm:ss [Auer]',
12784 L: 'DD.MM.YYYY',
12785 LL: 'D. MMMM YYYY',
12786 LLL: 'D. MMMM YYYY H:mm [Auer]',
12787 LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
12788 },
12789 calendar: {
12790 sameDay: '[Haut um] LT',
12791 sameElse: 'L',
12792 nextDay: '[Muer um] LT',
12793 nextWeek: 'dddd [um] LT',
12794 lastDay: '[Gëschter um] LT',
12795 lastWeek: function () {
12796 // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
12797 switch (this.day()) {
12798 case 2:
12799 case 4:
12800 return '[Leschten] dddd [um] LT';
12801 default:
12802 return '[Leschte] dddd [um] LT';
12803 }
12804 },
12805 },
12806 relativeTime: {
12807 future: processFutureTime,
12808 past: processPastTime,
12809 s: 'e puer Sekonnen',
12810 ss: '%d Sekonnen',
12811 m: processRelativeTime$6,
12812 mm: '%d Minutten',
12813 h: processRelativeTime$6,
12814 hh: '%d Stonnen',
12815 d: processRelativeTime$6,
12816 dd: '%d Deeg',
12817 M: processRelativeTime$6,
12818 MM: '%d Méint',
12819 y: processRelativeTime$6,
12820 yy: '%d Joer',
12821 },
12822 dayOfMonthOrdinalParse: /\d{1,2}\./,
12823 ordinal: '%d.',
12824 week: {
12825 dow: 1, // Monday is the first day of the week.
12826 doy: 4, // The week that contains Jan 4th is the first week of the year.
12827 },
12828 });
12829
12830 //! moment.js locale configuration
12831
12832 hooks.defineLocale('lo', {
12833 months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
12834 '_'
12835 ),
12836 monthsShort:
12837 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
12838 '_'
12839 ),
12840 weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
12841 weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
12842 weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
12843 weekdaysParseExact: true,
12844 longDateFormat: {
12845 LT: 'HH:mm',
12846 LTS: 'HH:mm:ss',
12847 L: 'DD/MM/YYYY',
12848 LL: 'D MMMM YYYY',
12849 LLL: 'D MMMM YYYY HH:mm',
12850 LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
12851 },
12852 meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
12853 isPM: function (input) {
12854 return input === 'ຕອນແລງ';
12855 },
12856 meridiem: function (hour, minute, isLower) {
12857 if (hour < 12) {
12858 return 'ຕອນເຊົ້າ';
12859 } else {
12860 return 'ຕອນແລງ';
12861 }
12862 },
12863 calendar: {
12864 sameDay: '[ມື້ນີ້ເວລາ] LT',
12865 nextDay: '[ມື້ອື່ນເວລາ] LT',
12866 nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
12867 lastDay: '[ມື້ວານນີ້ເວລາ] LT',
12868 lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
12869 sameElse: 'L',
12870 },
12871 relativeTime: {
12872 future: 'ອີກ %s',
12873 past: '%sຜ່ານມາ',
12874 s: 'ບໍ່ເທົ່າໃດວິນາທີ',
12875 ss: '%d ວິນາທີ',
12876 m: '1 ນາທີ',
12877 mm: '%d ນາທີ',
12878 h: '1 ຊົ່ວໂມງ',
12879 hh: '%d ຊົ່ວໂມງ',
12880 d: '1 ມື້',
12881 dd: '%d ມື້',
12882 M: '1 ເດືອນ',
12883 MM: '%d ເດືອນ',
12884 y: '1 ປີ',
12885 yy: '%d ປີ',
12886 },
12887 dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
12888 ordinal: function (number) {
12889 return 'ທີ່' + number;
12890 },
12891 });
12892
12893 //! moment.js locale configuration
12894
12895 var units = {
12896 ss: 'sekundė_sekundžių_sekundes',
12897 m: 'minutė_minutės_minutę',
12898 mm: 'minutės_minučių_minutes',
12899 h: 'valanda_valandos_valandą',
12900 hh: 'valandos_valandų_valandas',
12901 d: 'diena_dienos_dieną',
12902 dd: 'dienos_dienų_dienas',
12903 M: 'mėnuo_mėnesio_mėnesį',
12904 MM: 'mėnesiai_mėnesių_mėnesius',
12905 y: 'metai_metų_metus',
12906 yy: 'metai_metų_metus',
12907 };
12908 function translateSeconds(number, withoutSuffix, key, isFuture) {
12909 if (withoutSuffix) {
12910 return 'kelios sekundės';
12911 } else {
12912 return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
12913 }
12914 }
12915 function translateSingular(number, withoutSuffix, key, isFuture) {
12916 return withoutSuffix
12917 ? forms(key)[0]
12918 : isFuture
12919 ? forms(key)[1]
12920 : forms(key)[2];
12921 }
12922 function special(number) {
12923 return number % 10 === 0 || (number > 10 && number < 20);
12924 }
12925 function forms(key) {
12926 return units[key].split('_');
12927 }
12928 function translate$6(number, withoutSuffix, key, isFuture) {
12929 var result = number + ' ';
12930 if (number === 1) {
12931 return (
12932 result + translateSingular(number, withoutSuffix, key[0], isFuture)
12933 );
12934 } else if (withoutSuffix) {
12935 return result + (special(number) ? forms(key)[1] : forms(key)[0]);
12936 } else {
12937 if (isFuture) {
12938 return result + forms(key)[1];
12939 } else {
12940 return result + (special(number) ? forms(key)[1] : forms(key)[2]);
12941 }
12942 }
12943 }
12944 hooks.defineLocale('lt', {
12945 months: {
12946 format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
12947 '_'
12948 ),
12949 standalone:
12950 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
12951 '_'
12952 ),
12953 isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
12954 },
12955 monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
12956 weekdays: {
12957 format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
12958 '_'
12959 ),
12960 standalone:
12961 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
12962 '_'
12963 ),
12964 isFormat: /dddd HH:mm/,
12965 },
12966 weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
12967 weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
12968 weekdaysParseExact: true,
12969 longDateFormat: {
12970 LT: 'HH:mm',
12971 LTS: 'HH:mm:ss',
12972 L: 'YYYY-MM-DD',
12973 LL: 'YYYY [m.] MMMM D [d.]',
12974 LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
12975 LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
12976 l: 'YYYY-MM-DD',
12977 ll: 'YYYY [m.] MMMM D [d.]',
12978 lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
12979 llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
12980 },
12981 calendar: {
12982 sameDay: '[Šiandien] LT',
12983 nextDay: '[Rytoj] LT',
12984 nextWeek: 'dddd LT',
12985 lastDay: '[Vakar] LT',
12986 lastWeek: '[Praėjusį] dddd LT',
12987 sameElse: 'L',
12988 },
12989 relativeTime: {
12990 future: 'po %s',
12991 past: 'prieš %s',
12992 s: translateSeconds,
12993 ss: translate$6,
12994 m: translateSingular,
12995 mm: translate$6,
12996 h: translateSingular,
12997 hh: translate$6,
12998 d: translateSingular,
12999 dd: translate$6,
13000 M: translateSingular,
13001 MM: translate$6,
13002 y: translateSingular,
13003 yy: translate$6,
13004 },
13005 dayOfMonthOrdinalParse: /\d{1,2}-oji/,
13006 ordinal: function (number) {
13007 return number + '-oji';
13008 },
13009 week: {
13010 dow: 1, // Monday is the first day of the week.
13011 doy: 4, // The week that contains Jan 4th is the first week of the year.
13012 },
13013 });
13014
13015 //! moment.js locale configuration
13016
13017 var units$1 = {
13018 ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
13019 m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
13020 mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
13021 h: 'stundas_stundām_stunda_stundas'.split('_'),
13022 hh: 'stundas_stundām_stunda_stundas'.split('_'),
13023 d: 'dienas_dienām_diena_dienas'.split('_'),
13024 dd: 'dienas_dienām_diena_dienas'.split('_'),
13025 M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
13026 MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
13027 y: 'gada_gadiem_gads_gadi'.split('_'),
13028 yy: 'gada_gadiem_gads_gadi'.split('_'),
13029 };
13030 /**
13031 * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
13032 */
13033 function format$1(forms, number, withoutSuffix) {
13034 if (withoutSuffix) {
13035 // E.g. "21 minūte", "3 minūtes".
13036 return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
13037 } else {
13038 // E.g. "21 minūtes" as in "pēc 21 minūtes".
13039 // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
13040 return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
13041 }
13042 }
13043 function relativeTimeWithPlural$1(number, withoutSuffix, key) {
13044 return number + ' ' + format$1(units$1[key], number, withoutSuffix);
13045 }
13046 function relativeTimeWithSingular(number, withoutSuffix, key) {
13047 return format$1(units$1[key], number, withoutSuffix);
13048 }
13049 function relativeSeconds(number, withoutSuffix) {
13050 return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
13051 }
13052
13053 hooks.defineLocale('lv', {
13054 months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
13055 '_'
13056 ),
13057 monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
13058 weekdays:
13059 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
13060 '_'
13061 ),
13062 weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
13063 weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
13064 weekdaysParseExact: true,
13065 longDateFormat: {
13066 LT: 'HH:mm',
13067 LTS: 'HH:mm:ss',
13068 L: 'DD.MM.YYYY.',
13069 LL: 'YYYY. [gada] D. MMMM',
13070 LLL: 'YYYY. [gada] D. MMMM, HH:mm',
13071 LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
13072 },
13073 calendar: {
13074 sameDay: '[Šodien pulksten] LT',
13075 nextDay: '[Rīt pulksten] LT',
13076 nextWeek: 'dddd [pulksten] LT',
13077 lastDay: '[Vakar pulksten] LT',
13078 lastWeek: '[Pagājušā] dddd [pulksten] LT',
13079 sameElse: 'L',
13080 },
13081 relativeTime: {
13082 future: 'pēc %s',
13083 past: 'pirms %s',
13084 s: relativeSeconds,
13085 ss: relativeTimeWithPlural$1,
13086 m: relativeTimeWithSingular,
13087 mm: relativeTimeWithPlural$1,
13088 h: relativeTimeWithSingular,
13089 hh: relativeTimeWithPlural$1,
13090 d: relativeTimeWithSingular,
13091 dd: relativeTimeWithPlural$1,
13092 M: relativeTimeWithSingular,
13093 MM: relativeTimeWithPlural$1,
13094 y: relativeTimeWithSingular,
13095 yy: relativeTimeWithPlural$1,
13096 },
13097 dayOfMonthOrdinalParse: /\d{1,2}\./,
13098 ordinal: '%d.',
13099 week: {
13100 dow: 1, // Monday is the first day of the week.
13101 doy: 4, // The week that contains Jan 4th is the first week of the year.
13102 },
13103 });
13104
13105 //! moment.js locale configuration
13106
13107 var translator = {
13108 words: {
13109 //Different grammatical cases
13110 ss: ['sekund', 'sekunda', 'sekundi'],
13111 m: ['jedan minut', 'jednog minuta'],
13112 mm: ['minut', 'minuta', 'minuta'],
13113 h: ['jedan sat', 'jednog sata'],
13114 hh: ['sat', 'sata', 'sati'],
13115 dd: ['dan', 'dana', 'dana'],
13116 MM: ['mjesec', 'mjeseca', 'mjeseci'],
13117 yy: ['godina', 'godine', 'godina'],
13118 },
13119 correctGrammaticalCase: function (number, wordKey) {
13120 return number === 1
13121 ? wordKey[0]
13122 : number >= 2 && number <= 4
13123 ? wordKey[1]
13124 : wordKey[2];
13125 },
13126 translate: function (number, withoutSuffix, key) {
13127 var wordKey = translator.words[key];
13128 if (key.length === 1) {
13129 return withoutSuffix ? wordKey[0] : wordKey[1];
13130 } else {
13131 return (
13132 number +
13133 ' ' +
13134 translator.correctGrammaticalCase(number, wordKey)
13135 );
13136 }
13137 },
13138 };
13139
13140 hooks.defineLocale('me', {
13141 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
13142 '_'
13143 ),
13144 monthsShort:
13145 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
13146 monthsParseExact: true,
13147 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
13148 '_'
13149 ),
13150 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
13151 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
13152 weekdaysParseExact: true,
13153 longDateFormat: {
13154 LT: 'H:mm',
13155 LTS: 'H:mm:ss',
13156 L: 'DD.MM.YYYY',
13157 LL: 'D. MMMM YYYY',
13158 LLL: 'D. MMMM YYYY H:mm',
13159 LLLL: 'dddd, D. MMMM YYYY H:mm',
13160 },
13161 calendar: {
13162 sameDay: '[danas u] LT',
13163 nextDay: '[sjutra u] LT',
13164
13165 nextWeek: function () {
13166 switch (this.day()) {
13167 case 0:
13168 return '[u] [nedjelju] [u] LT';
13169 case 3:
13170 return '[u] [srijedu] [u] LT';
13171 case 6:
13172 return '[u] [subotu] [u] LT';
13173 case 1:
13174 case 2:
13175 case 4:
13176 case 5:
13177 return '[u] dddd [u] LT';
13178 }
13179 },
13180 lastDay: '[juče u] LT',
13181 lastWeek: function () {
13182 var lastWeekDays = [
13183 '[prošle] [nedjelje] [u] LT',
13184 '[prošlog] [ponedjeljka] [u] LT',
13185 '[prošlog] [utorka] [u] LT',
13186 '[prošle] [srijede] [u] LT',
13187 '[prošlog] [četvrtka] [u] LT',
13188 '[prošlog] [petka] [u] LT',
13189 '[prošle] [subote] [u] LT',
13190 ];
13191 return lastWeekDays[this.day()];
13192 },
13193 sameElse: 'L',
13194 },
13195 relativeTime: {
13196 future: 'za %s',
13197 past: 'prije %s',
13198 s: 'nekoliko sekundi',
13199 ss: translator.translate,
13200 m: translator.translate,
13201 mm: translator.translate,
13202 h: translator.translate,
13203 hh: translator.translate,
13204 d: 'dan',
13205 dd: translator.translate,
13206 M: 'mjesec',
13207 MM: translator.translate,
13208 y: 'godinu',
13209 yy: translator.translate,
13210 },
13211 dayOfMonthOrdinalParse: /\d{1,2}\./,
13212 ordinal: '%d.',
13213 week: {
13214 dow: 1, // Monday is the first day of the week.
13215 doy: 7, // The week that contains Jan 7th is the first week of the year.
13216 },
13217 });
13218
13219 //! moment.js locale configuration
13220
13221 hooks.defineLocale('mi', {
13222 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(
13223 '_'
13224 ),
13225 monthsShort:
13226 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
13227 '_'
13228 ),
13229 monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13230 monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13231 monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13232 monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
13233 weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
13234 weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
13235 weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
13236 longDateFormat: {
13237 LT: 'HH:mm',
13238 LTS: 'HH:mm:ss',
13239 L: 'DD/MM/YYYY',
13240 LL: 'D MMMM YYYY',
13241 LLL: 'D MMMM YYYY [i] HH:mm',
13242 LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
13243 },
13244 calendar: {
13245 sameDay: '[i teie mahana, i] LT',
13246 nextDay: '[apopo i] LT',
13247 nextWeek: 'dddd [i] LT',
13248 lastDay: '[inanahi i] LT',
13249 lastWeek: 'dddd [whakamutunga i] LT',
13250 sameElse: 'L',
13251 },
13252 relativeTime: {
13253 future: 'i roto i %s',
13254 past: '%s i mua',
13255 s: 'te hēkona ruarua',
13256 ss: '%d hēkona',
13257 m: 'he meneti',
13258 mm: '%d meneti',
13259 h: 'te haora',
13260 hh: '%d haora',
13261 d: 'he ra',
13262 dd: '%d ra',
13263 M: 'he marama',
13264 MM: '%d marama',
13265 y: 'he tau',
13266 yy: '%d tau',
13267 },
13268 dayOfMonthOrdinalParse: /\d{1,2}º/,
13269 ordinal: '%dº',
13270 week: {
13271 dow: 1, // Monday is the first day of the week.
13272 doy: 4, // The week that contains Jan 4th is the first week of the year.
13273 },
13274 });
13275
13276 //! moment.js locale configuration
13277
13278 hooks.defineLocale('mk', {
13279 months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
13280 '_'
13281 ),
13282 monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
13283 weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
13284 '_'
13285 ),
13286 weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
13287 weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
13288 longDateFormat: {
13289 LT: 'H:mm',
13290 LTS: 'H:mm:ss',
13291 L: 'D.MM.YYYY',
13292 LL: 'D MMMM YYYY',
13293 LLL: 'D MMMM YYYY H:mm',
13294 LLLL: 'dddd, D MMMM YYYY H:mm',
13295 },
13296 calendar: {
13297 sameDay: '[Денес во] LT',
13298 nextDay: '[Утре во] LT',
13299 nextWeek: '[Во] dddd [во] LT',
13300 lastDay: '[Вчера во] LT',
13301 lastWeek: function () {
13302 switch (this.day()) {
13303 case 0:
13304 case 3:
13305 case 6:
13306 return '[Изминатата] dddd [во] LT';
13307 case 1:
13308 case 2:
13309 case 4:
13310 case 5:
13311 return '[Изминатиот] dddd [во] LT';
13312 }
13313 },
13314 sameElse: 'L',
13315 },
13316 relativeTime: {
13317 future: 'за %s',
13318 past: 'пред %s',
13319 s: 'неколку секунди',
13320 ss: '%d секунди',
13321 m: 'една минута',
13322 mm: '%d минути',
13323 h: 'еден час',
13324 hh: '%d часа',
13325 d: 'еден ден',
13326 dd: '%d дена',
13327 M: 'еден месец',
13328 MM: '%d месеци',
13329 y: 'една година',
13330 yy: '%d години',
13331 },
13332 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
13333 ordinal: function (number) {
13334 var lastDigit = number % 10,
13335 last2Digits = number % 100;
13336 if (number === 0) {
13337 return number + '-ев';
13338 } else if (last2Digits === 0) {
13339 return number + '-ен';
13340 } else if (last2Digits > 10 && last2Digits < 20) {
13341 return number + '-ти';
13342 } else if (lastDigit === 1) {
13343 return number + '-ви';
13344 } else if (lastDigit === 2) {
13345 return number + '-ри';
13346 } else if (lastDigit === 7 || lastDigit === 8) {
13347 return number + '-ми';
13348 } else {
13349 return number + '-ти';
13350 }
13351 },
13352 week: {
13353 dow: 1, // Monday is the first day of the week.
13354 doy: 7, // The week that contains Jan 7th is the first week of the year.
13355 },
13356 });
13357
13358 //! moment.js locale configuration
13359
13360 hooks.defineLocale('ml', {
13361 months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
13362 '_'
13363 ),
13364 monthsShort:
13365 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
13366 '_'
13367 ),
13368 monthsParseExact: true,
13369 weekdays:
13370 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
13371 '_'
13372 ),
13373 weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
13374 weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
13375 longDateFormat: {
13376 LT: 'A h:mm -നു',
13377 LTS: 'A h:mm:ss -നു',
13378 L: 'DD/MM/YYYY',
13379 LL: 'D MMMM YYYY',
13380 LLL: 'D MMMM YYYY, A h:mm -നു',
13381 LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
13382 },
13383 calendar: {
13384 sameDay: '[ഇന്ന്] LT',
13385 nextDay: '[നാളെ] LT',
13386 nextWeek: 'dddd, LT',
13387 lastDay: '[ഇന്നലെ] LT',
13388 lastWeek: '[കഴിഞ്ഞ] dddd, LT',
13389 sameElse: 'L',
13390 },
13391 relativeTime: {
13392 future: '%s കഴിഞ്ഞ്',
13393 past: '%s മുൻപ്',
13394 s: 'അൽപ നിമിഷങ്ങൾ',
13395 ss: '%d സെക്കൻഡ്',
13396 m: 'ഒരു മിനിറ്റ്',
13397 mm: '%d മിനിറ്റ്',
13398 h: 'ഒരു മണിക്കൂർ',
13399 hh: '%d മണിക്കൂർ',
13400 d: 'ഒരു ദിവസം',
13401 dd: '%d ദിവസം',
13402 M: 'ഒരു മാസം',
13403 MM: '%d മാസം',
13404 y: 'ഒരു വർഷം',
13405 yy: '%d വർഷം',
13406 },
13407 meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
13408 meridiemHour: function (hour, meridiem) {
13409 if (hour === 12) {
13410 hour = 0;
13411 }
13412 if (
13413 (meridiem === 'രാത്രി' && hour >= 4) ||
13414 meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
13415 meridiem === 'വൈകുന്നേരം'
13416 ) {
13417 return hour + 12;
13418 } else {
13419 return hour;
13420 }
13421 },
13422 meridiem: function (hour, minute, isLower) {
13423 if (hour < 4) {
13424 return 'രാത്രി';
13425 } else if (hour < 12) {
13426 return 'രാവിലെ';
13427 } else if (hour < 17) {
13428 return 'ഉച്ച കഴിഞ്ഞ്';
13429 } else if (hour < 20) {
13430 return 'വൈകുന്നേരം';
13431 } else {
13432 return 'രാത്രി';
13433 }
13434 },
13435 });
13436
13437 //! moment.js locale configuration
13438
13439 function translate$7(number, withoutSuffix, key, isFuture) {
13440 switch (key) {
13441 case 's':
13442 return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
13443 case 'ss':
13444 return number + (withoutSuffix ? ' секунд' : ' секундын');
13445 case 'm':
13446 case 'mm':
13447 return number + (withoutSuffix ? ' минут' : ' минутын');
13448 case 'h':
13449 case 'hh':
13450 return number + (withoutSuffix ? ' цаг' : ' цагийн');
13451 case 'd':
13452 case 'dd':
13453 return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
13454 case 'M':
13455 case 'MM':
13456 return number + (withoutSuffix ? ' сар' : ' сарын');
13457 case 'y':
13458 case 'yy':
13459 return number + (withoutSuffix ? ' жил' : ' жилийн');
13460 default:
13461 return number;
13462 }
13463 }
13464
13465 hooks.defineLocale('mn', {
13466 months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
13467 '_'
13468 ),
13469 monthsShort:
13470 '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
13471 '_'
13472 ),
13473 monthsParseExact: true,
13474 weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
13475 weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
13476 weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
13477 weekdaysParseExact: true,
13478 longDateFormat: {
13479 LT: 'HH:mm',
13480 LTS: 'HH:mm:ss',
13481 L: 'YYYY-MM-DD',
13482 LL: 'YYYY оны MMMMын D',
13483 LLL: 'YYYY оны MMMMын D HH:mm',
13484 LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
13485 },
13486 meridiemParse: /ҮӨ|ҮХ/i,
13487 isPM: function (input) {
13488 return input === 'ҮХ';
13489 },
13490 meridiem: function (hour, minute, isLower) {
13491 if (hour < 12) {
13492 return 'ҮӨ';
13493 } else {
13494 return 'ҮХ';
13495 }
13496 },
13497 calendar: {
13498 sameDay: '[Өнөөдөр] LT',
13499 nextDay: '[Маргааш] LT',
13500 nextWeek: '[Ирэх] dddd LT',
13501 lastDay: '[Өчигдөр] LT',
13502 lastWeek: '[Өнгөрсөн] dddd LT',
13503 sameElse: 'L',
13504 },
13505 relativeTime: {
13506 future: '%s дараа',
13507 past: '%s өмнө',
13508 s: translate$7,
13509 ss: translate$7,
13510 m: translate$7,
13511 mm: translate$7,
13512 h: translate$7,
13513 hh: translate$7,
13514 d: translate$7,
13515 dd: translate$7,
13516 M: translate$7,
13517 MM: translate$7,
13518 y: translate$7,
13519 yy: translate$7,
13520 },
13521 dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
13522 ordinal: function (number, period) {
13523 switch (period) {
13524 case 'd':
13525 case 'D':
13526 case 'DDD':
13527 return number + ' өдөр';
13528 default:
13529 return number;
13530 }
13531 },
13532 });
13533
13534 //! moment.js locale configuration
13535
13536 var symbolMap$c = {
13537 1: '१',
13538 2: '२',
13539 3: '३',
13540 4: '४',
13541 5: '५',
13542 6: '६',
13543 7: '७',
13544 8: '८',
13545 9: '९',
13546 0: '०',
13547 },
13548 numberMap$b = {
13549 '१': '1',
13550 '२': '2',
13551 '३': '3',
13552 '४': '4',
13553 '५': '5',
13554 '६': '6',
13555 '७': '7',
13556 '८': '8',
13557 '९': '9',
13558 '०': '0',
13559 };
13560
13561 function relativeTimeMr(number, withoutSuffix, string, isFuture) {
13562 var output = '';
13563 if (withoutSuffix) {
13564 switch (string) {
13565 case 's':
13566 output = 'काही सेकंद';
13567 break;
13568 case 'ss':
13569 output = '%d सेकंद';
13570 break;
13571 case 'm':
13572 output = 'एक मिनिट';
13573 break;
13574 case 'mm':
13575 output = '%d मिनिटे';
13576 break;
13577 case 'h':
13578 output = 'एक तास';
13579 break;
13580 case 'hh':
13581 output = '%d तास';
13582 break;
13583 case 'd':
13584 output = 'एक दिवस';
13585 break;
13586 case 'dd':
13587 output = '%d दिवस';
13588 break;
13589 case 'M':
13590 output = 'एक महिना';
13591 break;
13592 case 'MM':
13593 output = '%d महिने';
13594 break;
13595 case 'y':
13596 output = 'एक वर्ष';
13597 break;
13598 case 'yy':
13599 output = '%d वर्षे';
13600 break;
13601 }
13602 } else {
13603 switch (string) {
13604 case 's':
13605 output = 'काही सेकंदां';
13606 break;
13607 case 'ss':
13608 output = '%d सेकंदां';
13609 break;
13610 case 'm':
13611 output = 'एका मिनिटा';
13612 break;
13613 case 'mm':
13614 output = '%d मिनिटां';
13615 break;
13616 case 'h':
13617 output = 'एका तासा';
13618 break;
13619 case 'hh':
13620 output = '%d तासां';
13621 break;
13622 case 'd':
13623 output = 'एका दिवसा';
13624 break;
13625 case 'dd':
13626 output = '%d दिवसां';
13627 break;
13628 case 'M':
13629 output = 'एका महिन्या';
13630 break;
13631 case 'MM':
13632 output = '%d महिन्यां';
13633 break;
13634 case 'y':
13635 output = 'एका वर्षा';
13636 break;
13637 case 'yy':
13638 output = '%d वर्षां';
13639 break;
13640 }
13641 }
13642 return output.replace(/%d/i, number);
13643 }
13644
13645 hooks.defineLocale('mr', {
13646 months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
13647 '_'
13648 ),
13649 monthsShort:
13650 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
13651 '_'
13652 ),
13653 monthsParseExact: true,
13654 weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
13655 weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
13656 weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
13657 longDateFormat: {
13658 LT: 'A h:mm वाजता',
13659 LTS: 'A h:mm:ss वाजता',
13660 L: 'DD/MM/YYYY',
13661 LL: 'D MMMM YYYY',
13662 LLL: 'D MMMM YYYY, A h:mm वाजता',
13663 LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
13664 },
13665 calendar: {
13666 sameDay: '[आज] LT',
13667 nextDay: '[उद्या] LT',
13668 nextWeek: 'dddd, LT',
13669 lastDay: '[काल] LT',
13670 lastWeek: '[मागील] dddd, LT',
13671 sameElse: 'L',
13672 },
13673 relativeTime: {
13674 future: '%sमध्ये',
13675 past: '%sपूर्वी',
13676 s: relativeTimeMr,
13677 ss: relativeTimeMr,
13678 m: relativeTimeMr,
13679 mm: relativeTimeMr,
13680 h: relativeTimeMr,
13681 hh: relativeTimeMr,
13682 d: relativeTimeMr,
13683 dd: relativeTimeMr,
13684 M: relativeTimeMr,
13685 MM: relativeTimeMr,
13686 y: relativeTimeMr,
13687 yy: relativeTimeMr,
13688 },
13689 preparse: function (string) {
13690 return string.replace(/[१२३४५६७८९०]/g, function (match) {
13691 return numberMap$b[match];
13692 });
13693 },
13694 postformat: function (string) {
13695 return string.replace(/\d/g, function (match) {
13696 return symbolMap$c[match];
13697 });
13698 },
13699 meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
13700 meridiemHour: function (hour, meridiem) {
13701 if (hour === 12) {
13702 hour = 0;
13703 }
13704 if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
13705 return hour;
13706 } else if (
13707 meridiem === 'दुपारी' ||
13708 meridiem === 'सायंकाळी' ||
13709 meridiem === 'रात्री'
13710 ) {
13711 return hour >= 12 ? hour : hour + 12;
13712 }
13713 },
13714 meridiem: function (hour, minute, isLower) {
13715 if (hour >= 0 && hour < 6) {
13716 return 'पहाटे';
13717 } else if (hour < 12) {
13718 return 'सकाळी';
13719 } else if (hour < 17) {
13720 return 'दुपारी';
13721 } else if (hour < 20) {
13722 return 'सायंकाळी';
13723 } else {
13724 return 'रात्री';
13725 }
13726 },
13727 week: {
13728 dow: 0, // Sunday is the first day of the week.
13729 doy: 6, // The week that contains Jan 6th is the first week of the year.
13730 },
13731 });
13732
13733 //! moment.js locale configuration
13734
13735 hooks.defineLocale('ms-my', {
13736 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
13737 '_'
13738 ),
13739 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
13740 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
13741 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
13742 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
13743 longDateFormat: {
13744 LT: 'HH.mm',
13745 LTS: 'HH.mm.ss',
13746 L: 'DD/MM/YYYY',
13747 LL: 'D MMMM YYYY',
13748 LLL: 'D MMMM YYYY [pukul] HH.mm',
13749 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
13750 },
13751 meridiemParse: /pagi|tengahari|petang|malam/,
13752 meridiemHour: function (hour, meridiem) {
13753 if (hour === 12) {
13754 hour = 0;
13755 }
13756 if (meridiem === 'pagi') {
13757 return hour;
13758 } else if (meridiem === 'tengahari') {
13759 return hour >= 11 ? hour : hour + 12;
13760 } else if (meridiem === 'petang' || meridiem === 'malam') {
13761 return hour + 12;
13762 }
13763 },
13764 meridiem: function (hours, minutes, isLower) {
13765 if (hours < 11) {
13766 return 'pagi';
13767 } else if (hours < 15) {
13768 return 'tengahari';
13769 } else if (hours < 19) {
13770 return 'petang';
13771 } else {
13772 return 'malam';
13773 }
13774 },
13775 calendar: {
13776 sameDay: '[Hari ini pukul] LT',
13777 nextDay: '[Esok pukul] LT',
13778 nextWeek: 'dddd [pukul] LT',
13779 lastDay: '[Kelmarin pukul] LT',
13780 lastWeek: 'dddd [lepas pukul] LT',
13781 sameElse: 'L',
13782 },
13783 relativeTime: {
13784 future: 'dalam %s',
13785 past: '%s yang lepas',
13786 s: 'beberapa saat',
13787 ss: '%d saat',
13788 m: 'seminit',
13789 mm: '%d minit',
13790 h: 'sejam',
13791 hh: '%d jam',
13792 d: 'sehari',
13793 dd: '%d hari',
13794 M: 'sebulan',
13795 MM: '%d bulan',
13796 y: 'setahun',
13797 yy: '%d tahun',
13798 },
13799 week: {
13800 dow: 1, // Monday is the first day of the week.
13801 doy: 7, // The week that contains Jan 7th is the first week of the year.
13802 },
13803 });
13804
13805 //! moment.js locale configuration
13806
13807 hooks.defineLocale('ms', {
13808 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
13809 '_'
13810 ),
13811 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
13812 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
13813 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
13814 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
13815 longDateFormat: {
13816 LT: 'HH.mm',
13817 LTS: 'HH.mm.ss',
13818 L: 'DD/MM/YYYY',
13819 LL: 'D MMMM YYYY',
13820 LLL: 'D MMMM YYYY [pukul] HH.mm',
13821 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
13822 },
13823 meridiemParse: /pagi|tengahari|petang|malam/,
13824 meridiemHour: function (hour, meridiem) {
13825 if (hour === 12) {
13826 hour = 0;
13827 }
13828 if (meridiem === 'pagi') {
13829 return hour;
13830 } else if (meridiem === 'tengahari') {
13831 return hour >= 11 ? hour : hour + 12;
13832 } else if (meridiem === 'petang' || meridiem === 'malam') {
13833 return hour + 12;
13834 }
13835 },
13836 meridiem: function (hours, minutes, isLower) {
13837 if (hours < 11) {
13838 return 'pagi';
13839 } else if (hours < 15) {
13840 return 'tengahari';
13841 } else if (hours < 19) {
13842 return 'petang';
13843 } else {
13844 return 'malam';
13845 }
13846 },
13847 calendar: {
13848 sameDay: '[Hari ini pukul] LT',
13849 nextDay: '[Esok pukul] LT',
13850 nextWeek: 'dddd [pukul] LT',
13851 lastDay: '[Kelmarin pukul] LT',
13852 lastWeek: 'dddd [lepas pukul] LT',
13853 sameElse: 'L',
13854 },
13855 relativeTime: {
13856 future: 'dalam %s',
13857 past: '%s yang lepas',
13858 s: 'beberapa saat',
13859 ss: '%d saat',
13860 m: 'seminit',
13861 mm: '%d minit',
13862 h: 'sejam',
13863 hh: '%d jam',
13864 d: 'sehari',
13865 dd: '%d hari',
13866 M: 'sebulan',
13867 MM: '%d bulan',
13868 y: 'setahun',
13869 yy: '%d tahun',
13870 },
13871 week: {
13872 dow: 1, // Monday is the first day of the week.
13873 doy: 7, // The week that contains Jan 7th is the first week of the year.
13874 },
13875 });
13876
13877 //! moment.js locale configuration
13878
13879 hooks.defineLocale('mt', {
13880 months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
13881 '_'
13882 ),
13883 monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
13884 weekdays:
13885 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
13886 '_'
13887 ),
13888 weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
13889 weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
13890 longDateFormat: {
13891 LT: 'HH:mm',
13892 LTS: 'HH:mm:ss',
13893 L: 'DD/MM/YYYY',
13894 LL: 'D MMMM YYYY',
13895 LLL: 'D MMMM YYYY HH:mm',
13896 LLLL: 'dddd, D MMMM YYYY HH:mm',
13897 },
13898 calendar: {
13899 sameDay: '[Illum fil-]LT',
13900 nextDay: '[Għada fil-]LT',
13901 nextWeek: 'dddd [fil-]LT',
13902 lastDay: '[Il-bieraħ fil-]LT',
13903 lastWeek: 'dddd [li għadda] [fil-]LT',
13904 sameElse: 'L',
13905 },
13906 relativeTime: {
13907 future: 'f’ %s',
13908 past: '%s ilu',
13909 s: 'ftit sekondi',
13910 ss: '%d sekondi',
13911 m: 'minuta',
13912 mm: '%d minuti',
13913 h: 'siegħa',
13914 hh: '%d siegħat',
13915 d: 'ġurnata',
13916 dd: '%d ġranet',
13917 M: 'xahar',
13918 MM: '%d xhur',
13919 y: 'sena',
13920 yy: '%d sni',
13921 },
13922 dayOfMonthOrdinalParse: /\d{1,2}º/,
13923 ordinal: '%dº',
13924 week: {
13925 dow: 1, // Monday is the first day of the week.
13926 doy: 4, // The week that contains Jan 4th is the first week of the year.
13927 },
13928 });
13929
13930 //! moment.js locale configuration
13931
13932 var symbolMap$d = {
13933 1: '၁',
13934 2: '၂',
13935 3: '၃',
13936 4: '၄',
13937 5: '၅',
13938 6: '၆',
13939 7: '၇',
13940 8: '၈',
13941 9: '၉',
13942 0: '၀',
13943 },
13944 numberMap$c = {
13945 '၁': '1',
13946 '၂': '2',
13947 '၃': '3',
13948 '၄': '4',
13949 '၅': '5',
13950 '၆': '6',
13951 '၇': '7',
13952 '၈': '8',
13953 '၉': '9',
13954 '၀': '0',
13955 };
13956
13957 hooks.defineLocale('my', {
13958 months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
13959 '_'
13960 ),
13961 monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
13962 weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
13963 '_'
13964 ),
13965 weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13966 weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13967
13968 longDateFormat: {
13969 LT: 'HH:mm',
13970 LTS: 'HH:mm:ss',
13971 L: 'DD/MM/YYYY',
13972 LL: 'D MMMM YYYY',
13973 LLL: 'D MMMM YYYY HH:mm',
13974 LLLL: 'dddd D MMMM YYYY HH:mm',
13975 },
13976 calendar: {
13977 sameDay: '[ယနေ.] LT [မှာ]',
13978 nextDay: '[မနက်ဖြန်] LT [မှာ]',
13979 nextWeek: 'dddd LT [မှာ]',
13980 lastDay: '[မနေ.က] LT [မှာ]',
13981 lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
13982 sameElse: 'L',
13983 },
13984 relativeTime: {
13985 future: 'လာမည့် %s မှာ',
13986 past: 'လွန်ခဲ့သော %s က',
13987 s: 'စက္ကန်.အနည်းငယ်',
13988 ss: '%d စက္ကန့်',
13989 m: 'တစ်မိနစ်',
13990 mm: '%d မိနစ်',
13991 h: 'တစ်နာရီ',
13992 hh: '%d နာရီ',
13993 d: 'တစ်ရက်',
13994 dd: '%d ရက်',
13995 M: 'တစ်လ',
13996 MM: '%d လ',
13997 y: 'တစ်နှစ်',
13998 yy: '%d နှစ်',
13999 },
14000 preparse: function (string) {
14001 return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
14002 return numberMap$c[match];
14003 });
14004 },
14005 postformat: function (string) {
14006 return string.replace(/\d/g, function (match) {
14007 return symbolMap$d[match];
14008 });
14009 },
14010 week: {
14011 dow: 1, // Monday is the first day of the week.
14012 doy: 4, // The week that contains Jan 4th is the first week of the year.
14013 },
14014 });
14015
14016 //! moment.js locale configuration
14017
14018 hooks.defineLocale('nb', {
14019 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
14020 '_'
14021 ),
14022 monthsShort:
14023 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
14024 monthsParseExact: true,
14025 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
14026 weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
14027 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
14028 weekdaysParseExact: true,
14029 longDateFormat: {
14030 LT: 'HH:mm',
14031 LTS: 'HH:mm:ss',
14032 L: 'DD.MM.YYYY',
14033 LL: 'D. MMMM YYYY',
14034 LLL: 'D. MMMM YYYY [kl.] HH:mm',
14035 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
14036 },
14037 calendar: {
14038 sameDay: '[i dag kl.] LT',
14039 nextDay: '[i morgen kl.] LT',
14040 nextWeek: 'dddd [kl.] LT',
14041 lastDay: '[i går kl.] LT',
14042 lastWeek: '[forrige] dddd [kl.] LT',
14043 sameElse: 'L',
14044 },
14045 relativeTime: {
14046 future: 'om %s',
14047 past: '%s siden',
14048 s: 'noen sekunder',
14049 ss: '%d sekunder',
14050 m: 'ett minutt',
14051 mm: '%d minutter',
14052 h: 'en time',
14053 hh: '%d timer',
14054 d: 'en dag',
14055 dd: '%d dager',
14056 w: 'en uke',
14057 ww: '%d uker',
14058 M: 'en måned',
14059 MM: '%d måneder',
14060 y: 'ett år',
14061 yy: '%d år',
14062 },
14063 dayOfMonthOrdinalParse: /\d{1,2}\./,
14064 ordinal: '%d.',
14065 week: {
14066 dow: 1, // Monday is the first day of the week.
14067 doy: 4, // The week that contains Jan 4th is the first week of the year.
14068 },
14069 });
14070
14071 //! moment.js locale configuration
14072
14073 var symbolMap$e = {
14074 1: '१',
14075 2: '२',
14076 3: '३',
14077 4: '४',
14078 5: '५',
14079 6: '६',
14080 7: '७',
14081 8: '८',
14082 9: '९',
14083 0: '०',
14084 },
14085 numberMap$d = {
14086 '१': '1',
14087 '२': '2',
14088 '३': '3',
14089 '४': '4',
14090 '५': '5',
14091 '६': '6',
14092 '७': '7',
14093 '८': '8',
14094 '९': '9',
14095 '०': '0',
14096 };
14097
14098 hooks.defineLocale('ne', {
14099 months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
14100 '_'
14101 ),
14102 monthsShort:
14103 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
14104 '_'
14105 ),
14106 monthsParseExact: true,
14107 weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
14108 '_'
14109 ),
14110 weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
14111 weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
14112 weekdaysParseExact: true,
14113 longDateFormat: {
14114 LT: 'Aको h:mm बजे',
14115 LTS: 'Aको h:mm:ss बजे',
14116 L: 'DD/MM/YYYY',
14117 LL: 'D MMMM YYYY',
14118 LLL: 'D MMMM YYYY, Aको h:mm बजे',
14119 LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
14120 },
14121 preparse: function (string) {
14122 return string.replace(/[१२३४५६७८९०]/g, function (match) {
14123 return numberMap$d[match];
14124 });
14125 },
14126 postformat: function (string) {
14127 return string.replace(/\d/g, function (match) {
14128 return symbolMap$e[match];
14129 });
14130 },
14131 meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
14132 meridiemHour: function (hour, meridiem) {
14133 if (hour === 12) {
14134 hour = 0;
14135 }
14136 if (meridiem === 'राति') {
14137 return hour < 4 ? hour : hour + 12;
14138 } else if (meridiem === 'बिहान') {
14139 return hour;
14140 } else if (meridiem === 'दिउँसो') {
14141 return hour >= 10 ? hour : hour + 12;
14142 } else if (meridiem === 'साँझ') {
14143 return hour + 12;
14144 }
14145 },
14146 meridiem: function (hour, minute, isLower) {
14147 if (hour < 3) {
14148 return 'राति';
14149 } else if (hour < 12) {
14150 return 'बिहान';
14151 } else if (hour < 16) {
14152 return 'दिउँसो';
14153 } else if (hour < 20) {
14154 return 'साँझ';
14155 } else {
14156 return 'राति';
14157 }
14158 },
14159 calendar: {
14160 sameDay: '[आज] LT',
14161 nextDay: '[भोलि] LT',
14162 nextWeek: '[आउँदो] dddd[,] LT',
14163 lastDay: '[हिजो] LT',
14164 lastWeek: '[गएको] dddd[,] LT',
14165 sameElse: 'L',
14166 },
14167 relativeTime: {
14168 future: '%sमा',
14169 past: '%s अगाडि',
14170 s: 'केही क्षण',
14171 ss: '%d सेकेण्ड',
14172 m: 'एक मिनेट',
14173 mm: '%d मिनेट',
14174 h: 'एक घण्टा',
14175 hh: '%d घण्टा',
14176 d: 'एक दिन',
14177 dd: '%d दिन',
14178 M: 'एक महिना',
14179 MM: '%d महिना',
14180 y: 'एक बर्ष',
14181 yy: '%d बर्ष',
14182 },
14183 week: {
14184 dow: 0, // Sunday is the first day of the week.
14185 doy: 6, // The week that contains Jan 6th is the first week of the year.
14186 },
14187 });
14188
14189 //! moment.js locale configuration
14190
14191 var monthsShortWithDots$1 =
14192 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
14193 monthsShortWithoutDots$1 =
14194 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
14195 monthsParse$8 = [
14196 /^jan/i,
14197 /^feb/i,
14198 /^maart|mrt.?$/i,
14199 /^apr/i,
14200 /^mei$/i,
14201 /^jun[i.]?$/i,
14202 /^jul[i.]?$/i,
14203 /^aug/i,
14204 /^sep/i,
14205 /^okt/i,
14206 /^nov/i,
14207 /^dec/i,
14208 ],
14209 monthsRegex$8 =
14210 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
14211
14212 hooks.defineLocale('nl-be', {
14213 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
14214 '_'
14215 ),
14216 monthsShort: function (m, format) {
14217 if (!m) {
14218 return monthsShortWithDots$1;
14219 } else if (/-MMM-/.test(format)) {
14220 return monthsShortWithoutDots$1[m.month()];
14221 } else {
14222 return monthsShortWithDots$1[m.month()];
14223 }
14224 },
14225
14226 monthsRegex: monthsRegex$8,
14227 monthsShortRegex: monthsRegex$8,
14228 monthsStrictRegex:
14229 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
14230 monthsShortStrictRegex:
14231 /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
14232
14233 monthsParse: monthsParse$8,
14234 longMonthsParse: monthsParse$8,
14235 shortMonthsParse: monthsParse$8,
14236
14237 weekdays:
14238 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
14239 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
14240 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
14241 weekdaysParseExact: true,
14242 longDateFormat: {
14243 LT: 'HH:mm',
14244 LTS: 'HH:mm:ss',
14245 L: 'DD/MM/YYYY',
14246 LL: 'D MMMM YYYY',
14247 LLL: 'D MMMM YYYY HH:mm',
14248 LLLL: 'dddd D MMMM YYYY HH:mm',
14249 },
14250 calendar: {
14251 sameDay: '[vandaag om] LT',
14252 nextDay: '[morgen om] LT',
14253 nextWeek: 'dddd [om] LT',
14254 lastDay: '[gisteren om] LT',
14255 lastWeek: '[afgelopen] dddd [om] LT',
14256 sameElse: 'L',
14257 },
14258 relativeTime: {
14259 future: 'over %s',
14260 past: '%s geleden',
14261 s: 'een paar seconden',
14262 ss: '%d seconden',
14263 m: 'één minuut',
14264 mm: '%d minuten',
14265 h: 'één uur',
14266 hh: '%d uur',
14267 d: 'één dag',
14268 dd: '%d dagen',
14269 M: 'één maand',
14270 MM: '%d maanden',
14271 y: 'één jaar',
14272 yy: '%d jaar',
14273 },
14274 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
14275 ordinal: function (number) {
14276 return (
14277 number +
14278 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
14279 );
14280 },
14281 week: {
14282 dow: 1, // Monday is the first day of the week.
14283 doy: 4, // The week that contains Jan 4th is the first week of the year.
14284 },
14285 });
14286
14287 //! moment.js locale configuration
14288
14289 var monthsShortWithDots$2 =
14290 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
14291 monthsShortWithoutDots$2 =
14292 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
14293 monthsParse$9 = [
14294 /^jan/i,
14295 /^feb/i,
14296 /^maart|mrt.?$/i,
14297 /^apr/i,
14298 /^mei$/i,
14299 /^jun[i.]?$/i,
14300 /^jul[i.]?$/i,
14301 /^aug/i,
14302 /^sep/i,
14303 /^okt/i,
14304 /^nov/i,
14305 /^dec/i,
14306 ],
14307 monthsRegex$9 =
14308 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
14309
14310 hooks.defineLocale('nl', {
14311 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
14312 '_'
14313 ),
14314 monthsShort: function (m, format) {
14315 if (!m) {
14316 return monthsShortWithDots$2;
14317 } else if (/-MMM-/.test(format)) {
14318 return monthsShortWithoutDots$2[m.month()];
14319 } else {
14320 return monthsShortWithDots$2[m.month()];
14321 }
14322 },
14323
14324 monthsRegex: monthsRegex$9,
14325 monthsShortRegex: monthsRegex$9,
14326 monthsStrictRegex:
14327 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
14328 monthsShortStrictRegex:
14329 /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
14330
14331 monthsParse: monthsParse$9,
14332 longMonthsParse: monthsParse$9,
14333 shortMonthsParse: monthsParse$9,
14334
14335 weekdays:
14336 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
14337 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
14338 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
14339 weekdaysParseExact: true,
14340 longDateFormat: {
14341 LT: 'HH:mm',
14342 LTS: 'HH:mm:ss',
14343 L: 'DD-MM-YYYY',
14344 LL: 'D MMMM YYYY',
14345 LLL: 'D MMMM YYYY HH:mm',
14346 LLLL: 'dddd D MMMM YYYY HH:mm',
14347 },
14348 calendar: {
14349 sameDay: '[vandaag om] LT',
14350 nextDay: '[morgen om] LT',
14351 nextWeek: 'dddd [om] LT',
14352 lastDay: '[gisteren om] LT',
14353 lastWeek: '[afgelopen] dddd [om] LT',
14354 sameElse: 'L',
14355 },
14356 relativeTime: {
14357 future: 'over %s',
14358 past: '%s geleden',
14359 s: 'een paar seconden',
14360 ss: '%d seconden',
14361 m: 'één minuut',
14362 mm: '%d minuten',
14363 h: 'één uur',
14364 hh: '%d uur',
14365 d: 'één dag',
14366 dd: '%d dagen',
14367 w: 'één week',
14368 ww: '%d weken',
14369 M: 'één maand',
14370 MM: '%d maanden',
14371 y: 'één jaar',
14372 yy: '%d jaar',
14373 },
14374 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
14375 ordinal: function (number) {
14376 return (
14377 number +
14378 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
14379 );
14380 },
14381 week: {
14382 dow: 1, // Monday is the first day of the week.
14383 doy: 4, // The week that contains Jan 4th is the first week of the year.
14384 },
14385 });
14386
14387 //! moment.js locale configuration
14388
14389 hooks.defineLocale('nn', {
14390 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
14391 '_'
14392 ),
14393 monthsShort:
14394 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
14395 monthsParseExact: true,
14396 weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
14397 weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
14398 weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
14399 weekdaysParseExact: true,
14400 longDateFormat: {
14401 LT: 'HH:mm',
14402 LTS: 'HH:mm:ss',
14403 L: 'DD.MM.YYYY',
14404 LL: 'D. MMMM YYYY',
14405 LLL: 'D. MMMM YYYY [kl.] H:mm',
14406 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
14407 },
14408 calendar: {
14409 sameDay: '[I dag klokka] LT',
14410 nextDay: '[I morgon klokka] LT',
14411 nextWeek: 'dddd [klokka] LT',
14412 lastDay: '[I går klokka] LT',
14413 lastWeek: '[Føregåande] dddd [klokka] LT',
14414 sameElse: 'L',
14415 },
14416 relativeTime: {
14417 future: 'om %s',
14418 past: '%s sidan',
14419 s: 'nokre sekund',
14420 ss: '%d sekund',
14421 m: 'eit minutt',
14422 mm: '%d minutt',
14423 h: 'ein time',
14424 hh: '%d timar',
14425 d: 'ein dag',
14426 dd: '%d dagar',
14427 w: 'ei veke',
14428 ww: '%d veker',
14429 M: 'ein månad',
14430 MM: '%d månader',
14431 y: 'eit år',
14432 yy: '%d år',
14433 },
14434 dayOfMonthOrdinalParse: /\d{1,2}\./,
14435 ordinal: '%d.',
14436 week: {
14437 dow: 1, // Monday is the first day of the week.
14438 doy: 4, // The week that contains Jan 4th is the first week of the year.
14439 },
14440 });
14441
14442 //! moment.js locale configuration
14443
14444 hooks.defineLocale('oc-lnc', {
14445 months: {
14446 standalone:
14447 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
14448 '_'
14449 ),
14450 format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
14451 '_'
14452 ),
14453 isFormat: /D[oD]?(\s)+MMMM/,
14454 },
14455 monthsShort:
14456 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
14457 '_'
14458 ),
14459 monthsParseExact: true,
14460 weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
14461 '_'
14462 ),
14463 weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
14464 weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
14465 weekdaysParseExact: true,
14466 longDateFormat: {
14467 LT: 'H:mm',
14468 LTS: 'H:mm:ss',
14469 L: 'DD/MM/YYYY',
14470 LL: 'D MMMM [de] YYYY',
14471 ll: 'D MMM YYYY',
14472 LLL: 'D MMMM [de] YYYY [a] H:mm',
14473 lll: 'D MMM YYYY, H:mm',
14474 LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
14475 llll: 'ddd D MMM YYYY, H:mm',
14476 },
14477 calendar: {
14478 sameDay: '[uèi a] LT',
14479 nextDay: '[deman a] LT',
14480 nextWeek: 'dddd [a] LT',
14481 lastDay: '[ièr a] LT',
14482 lastWeek: 'dddd [passat a] LT',
14483 sameElse: 'L',
14484 },
14485 relativeTime: {
14486 future: "d'aquí %s",
14487 past: 'fa %s',
14488 s: 'unas segondas',
14489 ss: '%d segondas',
14490 m: 'una minuta',
14491 mm: '%d minutas',
14492 h: 'una ora',
14493 hh: '%d oras',
14494 d: 'un jorn',
14495 dd: '%d jorns',
14496 M: 'un mes',
14497 MM: '%d meses',
14498 y: 'un an',
14499 yy: '%d ans',
14500 },
14501 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
14502 ordinal: function (number, period) {
14503 var output =
14504 number === 1
14505 ? 'r'
14506 : number === 2
14507 ? 'n'
14508 : number === 3
14509 ? 'r'
14510 : number === 4
14511 ? 't'
14512 : 'è';
14513 if (period === 'w' || period === 'W') {
14514 output = 'a';
14515 }
14516 return number + output;
14517 },
14518 week: {
14519 dow: 1, // Monday is the first day of the week.
14520 doy: 4,
14521 },
14522 });
14523
14524 //! moment.js locale configuration
14525
14526 var symbolMap$f = {
14527 1: '੧',
14528 2: '੨',
14529 3: '੩',
14530 4: '੪',
14531 5: '੫',
14532 6: '੬',
14533 7: '੭',
14534 8: '੮',
14535 9: '੯',
14536 0: '੦',
14537 },
14538 numberMap$e = {
14539 '੧': '1',
14540 '੨': '2',
14541 '੩': '3',
14542 '੪': '4',
14543 '੫': '5',
14544 '੬': '6',
14545 '੭': '7',
14546 '੮': '8',
14547 '੯': '9',
14548 '੦': '0',
14549 };
14550
14551 hooks.defineLocale('pa-in', {
14552 // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
14553 months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
14554 '_'
14555 ),
14556 monthsShort:
14557 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
14558 '_'
14559 ),
14560 weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
14561 '_'
14562 ),
14563 weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
14564 weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
14565 longDateFormat: {
14566 LT: 'A h:mm ਵਜੇ',
14567 LTS: 'A h:mm:ss ਵਜੇ',
14568 L: 'DD/MM/YYYY',
14569 LL: 'D MMMM YYYY',
14570 LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
14571 LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
14572 },
14573 calendar: {
14574 sameDay: '[ਅਜ] LT',
14575 nextDay: '[ਕਲ] LT',
14576 nextWeek: '[ਅਗਲਾ] dddd, LT',
14577 lastDay: '[ਕਲ] LT',
14578 lastWeek: '[ਪਿਛਲੇ] dddd, LT',
14579 sameElse: 'L',
14580 },
14581 relativeTime: {
14582 future: '%s ਵਿੱਚ',
14583 past: '%s ਪਿਛਲੇ',
14584 s: 'ਕੁਝ ਸਕਿੰਟ',
14585 ss: '%d ਸਕਿੰਟ',
14586 m: 'ਇਕ ਮਿੰਟ',
14587 mm: '%d ਮਿੰਟ',
14588 h: 'ਇੱਕ ਘੰਟਾ',
14589 hh: '%d ਘੰਟੇ',
14590 d: 'ਇੱਕ ਦਿਨ',
14591 dd: '%d ਦਿਨ',
14592 M: 'ਇੱਕ ਮਹੀਨਾ',
14593 MM: '%d ਮਹੀਨੇ',
14594 y: 'ਇੱਕ ਸਾਲ',
14595 yy: '%d ਸਾਲ',
14596 },
14597 preparse: function (string) {
14598 return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
14599 return numberMap$e[match];
14600 });
14601 },
14602 postformat: function (string) {
14603 return string.replace(/\d/g, function (match) {
14604 return symbolMap$f[match];
14605 });
14606 },
14607 // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
14608 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
14609 meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
14610 meridiemHour: function (hour, meridiem) {
14611 if (hour === 12) {
14612 hour = 0;
14613 }
14614 if (meridiem === 'ਰਾਤ') {
14615 return hour < 4 ? hour : hour + 12;
14616 } else if (meridiem === 'ਸਵੇਰ') {
14617 return hour;
14618 } else if (meridiem === 'ਦੁਪਹਿਰ') {
14619 return hour >= 10 ? hour : hour + 12;
14620 } else if (meridiem === 'ਸ਼ਾਮ') {
14621 return hour + 12;
14622 }
14623 },
14624 meridiem: function (hour, minute, isLower) {
14625 if (hour < 4) {
14626 return 'ਰਾਤ';
14627 } else if (hour < 10) {
14628 return 'ਸਵੇਰ';
14629 } else if (hour < 17) {
14630 return 'ਦੁਪਹਿਰ';
14631 } else if (hour < 20) {
14632 return 'ਸ਼ਾਮ';
14633 } else {
14634 return 'ਰਾਤ';
14635 }
14636 },
14637 week: {
14638 dow: 0, // Sunday is the first day of the week.
14639 doy: 6, // The week that contains Jan 6th is the first week of the year.
14640 },
14641 });
14642
14643 //! moment.js locale configuration
14644
14645 var monthsNominative =
14646 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
14647 '_'
14648 ),
14649 monthsSubjective =
14650 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
14651 '_'
14652 ),
14653 monthsParse$a = [
14654 /^sty/i,
14655 /^lut/i,
14656 /^mar/i,
14657 /^kwi/i,
14658 /^maj/i,
14659 /^cze/i,
14660 /^lip/i,
14661 /^sie/i,
14662 /^wrz/i,
14663 /^paź/i,
14664 /^lis/i,
14665 /^gru/i,
14666 ];
14667 function plural$3(n) {
14668 return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
14669 }
14670 function translate$8(number, withoutSuffix, key) {
14671 var result = number + ' ';
14672 switch (key) {
14673 case 'ss':
14674 return result + (plural$3(number) ? 'sekundy' : 'sekund');
14675 case 'm':
14676 return withoutSuffix ? 'minuta' : 'minutę';
14677 case 'mm':
14678 return result + (plural$3(number) ? 'minuty' : 'minut');
14679 case 'h':
14680 return withoutSuffix ? 'godzina' : 'godzinę';
14681 case 'hh':
14682 return result + (plural$3(number) ? 'godziny' : 'godzin');
14683 case 'ww':
14684 return result + (plural$3(number) ? 'tygodnie' : 'tygodni');
14685 case 'MM':
14686 return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
14687 case 'yy':
14688 return result + (plural$3(number) ? 'lata' : 'lat');
14689 }
14690 }
14691
14692 hooks.defineLocale('pl', {
14693 months: function (momentToFormat, format) {
14694 if (!momentToFormat) {
14695 return monthsNominative;
14696 } else if (/D MMMM/.test(format)) {
14697 return monthsSubjective[momentToFormat.month()];
14698 } else {
14699 return monthsNominative[momentToFormat.month()];
14700 }
14701 },
14702 monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
14703 monthsParse: monthsParse$a,
14704 longMonthsParse: monthsParse$a,
14705 shortMonthsParse: monthsParse$a,
14706 weekdays:
14707 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
14708 weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
14709 weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
14710 longDateFormat: {
14711 LT: 'HH:mm',
14712 LTS: 'HH:mm:ss',
14713 L: 'DD.MM.YYYY',
14714 LL: 'D MMMM YYYY',
14715 LLL: 'D MMMM YYYY HH:mm',
14716 LLLL: 'dddd, D MMMM YYYY HH:mm',
14717 },
14718 calendar: {
14719 sameDay: '[Dziś o] LT',
14720 nextDay: '[Jutro o] LT',
14721 nextWeek: function () {
14722 switch (this.day()) {
14723 case 0:
14724 return '[W niedzielę o] LT';
14725
14726 case 2:
14727 return '[We wtorek o] LT';
14728
14729 case 3:
14730 return '[W środę o] LT';
14731
14732 case 6:
14733 return '[W sobotę o] LT';
14734
14735 default:
14736 return '[W] dddd [o] LT';
14737 }
14738 },
14739 lastDay: '[Wczoraj o] LT',
14740 lastWeek: function () {
14741 switch (this.day()) {
14742 case 0:
14743 return '[W zeszłą niedzielę o] LT';
14744 case 3:
14745 return '[W zeszłą środę o] LT';
14746 case 6:
14747 return '[W zeszłą sobotę o] LT';
14748 default:
14749 return '[W zeszły] dddd [o] LT';
14750 }
14751 },
14752 sameElse: 'L',
14753 },
14754 relativeTime: {
14755 future: 'za %s',
14756 past: '%s temu',
14757 s: 'kilka sekund',
14758 ss: translate$8,
14759 m: translate$8,
14760 mm: translate$8,
14761 h: translate$8,
14762 hh: translate$8,
14763 d: '1 dzień',
14764 dd: '%d dni',
14765 w: 'tydzień',
14766 ww: translate$8,
14767 M: 'miesiąc',
14768 MM: translate$8,
14769 y: 'rok',
14770 yy: translate$8,
14771 },
14772 dayOfMonthOrdinalParse: /\d{1,2}\./,
14773 ordinal: '%d.',
14774 week: {
14775 dow: 1, // Monday is the first day of the week.
14776 doy: 4, // The week that contains Jan 4th is the first week of the year.
14777 },
14778 });
14779
14780 //! moment.js locale configuration
14781
14782 hooks.defineLocale('pt-br', {
14783 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
14784 '_'
14785 ),
14786 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14787 weekdays:
14788 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
14789 '_'
14790 ),
14791 weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
14792 weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
14793 weekdaysParseExact: true,
14794 longDateFormat: {
14795 LT: 'HH:mm',
14796 LTS: 'HH:mm:ss',
14797 L: 'DD/MM/YYYY',
14798 LL: 'D [de] MMMM [de] YYYY',
14799 LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
14800 LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
14801 },
14802 calendar: {
14803 sameDay: '[Hoje às] LT',
14804 nextDay: '[Amanhã às] LT',
14805 nextWeek: 'dddd [às] LT',
14806 lastDay: '[Ontem às] LT',
14807 lastWeek: function () {
14808 return this.day() === 0 || this.day() === 6
14809 ? '[Último] dddd [às] LT' // Saturday + Sunday
14810 : '[Última] dddd [às] LT'; // Monday - Friday
14811 },
14812 sameElse: 'L',
14813 },
14814 relativeTime: {
14815 future: 'em %s',
14816 past: 'há %s',
14817 s: 'poucos segundos',
14818 ss: '%d segundos',
14819 m: 'um minuto',
14820 mm: '%d minutos',
14821 h: 'uma hora',
14822 hh: '%d horas',
14823 d: 'um dia',
14824 dd: '%d dias',
14825 M: 'um mês',
14826 MM: '%d meses',
14827 y: 'um ano',
14828 yy: '%d anos',
14829 },
14830 dayOfMonthOrdinalParse: /\d{1,2}º/,
14831 ordinal: '%dº',
14832 invalidDate: 'Data inválida',
14833 });
14834
14835 //! moment.js locale configuration
14836
14837 hooks.defineLocale('pt', {
14838 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
14839 '_'
14840 ),
14841 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14842 weekdays:
14843 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
14844 '_'
14845 ),
14846 weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
14847 weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
14848 weekdaysParseExact: true,
14849 longDateFormat: {
14850 LT: 'HH:mm',
14851 LTS: 'HH:mm:ss',
14852 L: 'DD/MM/YYYY',
14853 LL: 'D [de] MMMM [de] YYYY',
14854 LLL: 'D [de] MMMM [de] YYYY HH:mm',
14855 LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
14856 },
14857 calendar: {
14858 sameDay: '[Hoje às] LT',
14859 nextDay: '[Amanhã às] LT',
14860 nextWeek: 'dddd [às] LT',
14861 lastDay: '[Ontem às] LT',
14862 lastWeek: function () {
14863 return this.day() === 0 || this.day() === 6
14864 ? '[Último] dddd [às] LT' // Saturday + Sunday
14865 : '[Última] dddd [às] LT'; // Monday - Friday
14866 },
14867 sameElse: 'L',
14868 },
14869 relativeTime: {
14870 future: 'em %s',
14871 past: 'há %s',
14872 s: 'segundos',
14873 ss: '%d segundos',
14874 m: 'um minuto',
14875 mm: '%d minutos',
14876 h: 'uma hora',
14877 hh: '%d horas',
14878 d: 'um dia',
14879 dd: '%d dias',
14880 w: 'uma semana',
14881 ww: '%d semanas',
14882 M: 'um mês',
14883 MM: '%d meses',
14884 y: 'um ano',
14885 yy: '%d anos',
14886 },
14887 dayOfMonthOrdinalParse: /\d{1,2}º/,
14888 ordinal: '%dº',
14889 week: {
14890 dow: 1, // Monday is the first day of the week.
14891 doy: 4, // The week that contains Jan 4th is the first week of the year.
14892 },
14893 });
14894
14895 //! moment.js locale configuration
14896
14897 function relativeTimeWithPlural$2(number, withoutSuffix, key) {
14898 var format = {
14899 ss: 'secunde',
14900 mm: 'minute',
14901 hh: 'ore',
14902 dd: 'zile',
14903 ww: 'săptămâni',
14904 MM: 'luni',
14905 yy: 'ani',
14906 },
14907 separator = ' ';
14908 if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
14909 separator = ' de ';
14910 }
14911 return number + separator + format[key];
14912 }
14913
14914 hooks.defineLocale('ro', {
14915 months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
14916 '_'
14917 ),
14918 monthsShort:
14919 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
14920 '_'
14921 ),
14922 monthsParseExact: true,
14923 weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
14924 weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
14925 weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
14926 longDateFormat: {
14927 LT: 'H:mm',
14928 LTS: 'H:mm:ss',
14929 L: 'DD.MM.YYYY',
14930 LL: 'D MMMM YYYY',
14931 LLL: 'D MMMM YYYY H:mm',
14932 LLLL: 'dddd, D MMMM YYYY H:mm',
14933 },
14934 calendar: {
14935 sameDay: '[azi la] LT',
14936 nextDay: '[mâine la] LT',
14937 nextWeek: 'dddd [la] LT',
14938 lastDay: '[ieri la] LT',
14939 lastWeek: '[fosta] dddd [la] LT',
14940 sameElse: 'L',
14941 },
14942 relativeTime: {
14943 future: 'peste %s',
14944 past: '%s în urmă',
14945 s: 'câteva secunde',
14946 ss: relativeTimeWithPlural$2,
14947 m: 'un minut',
14948 mm: relativeTimeWithPlural$2,
14949 h: 'o oră',
14950 hh: relativeTimeWithPlural$2,
14951 d: 'o zi',
14952 dd: relativeTimeWithPlural$2,
14953 w: 'o săptămână',
14954 ww: relativeTimeWithPlural$2,
14955 M: 'o lună',
14956 MM: relativeTimeWithPlural$2,
14957 y: 'un an',
14958 yy: relativeTimeWithPlural$2,
14959 },
14960 week: {
14961 dow: 1, // Monday is the first day of the week.
14962 doy: 7, // The week that contains Jan 7th is the first week of the year.
14963 },
14964 });
14965
14966 //! moment.js locale configuration
14967
14968 function plural$4(word, num) {
14969 var forms = word.split('_');
14970 return num % 10 === 1 && num % 100 !== 11
14971 ? forms[0]
14972 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
14973 ? forms[1]
14974 : forms[2];
14975 }
14976 function relativeTimeWithPlural$3(number, withoutSuffix, key) {
14977 var format = {
14978 ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
14979 mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
14980 hh: 'час_часа_часов',
14981 dd: 'день_дня_дней',
14982 ww: 'неделя_недели_недель',
14983 MM: 'месяц_месяца_месяцев',
14984 yy: 'год_года_лет',
14985 };
14986 if (key === 'm') {
14987 return withoutSuffix ? 'минута' : 'минуту';
14988 } else {
14989 return number + ' ' + plural$4(format[key], +number);
14990 }
14991 }
14992 var monthsParse$b = [
14993 /^янв/i,
14994 /^фев/i,
14995 /^мар/i,
14996 /^апр/i,
14997 /^ма[йя]/i,
14998 /^июн/i,
14999 /^июл/i,
15000 /^авг/i,
15001 /^сен/i,
15002 /^окт/i,
15003 /^ноя/i,
15004 /^дек/i,
15005 ];
15006
15007 // http://new.gramota.ru/spravka/rules/139-prop : § 103
15008 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
15009 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
15010 hooks.defineLocale('ru', {
15011 months: {
15012 format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
15013 '_'
15014 ),
15015 standalone:
15016 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
15017 '_'
15018 ),
15019 },
15020 monthsShort: {
15021 // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
15022 format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
15023 '_'
15024 ),
15025 standalone:
15026 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
15027 '_'
15028 ),
15029 },
15030 weekdays: {
15031 standalone:
15032 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
15033 '_'
15034 ),
15035 format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
15036 '_'
15037 ),
15038 isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
15039 },
15040 weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
15041 weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
15042 monthsParse: monthsParse$b,
15043 longMonthsParse: monthsParse$b,
15044 shortMonthsParse: monthsParse$b,
15045
15046 // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
15047 monthsRegex:
15048 /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
15049
15050 // копия предыдущего
15051 monthsShortRegex:
15052 /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
15053
15054 // полные названия с падежами
15055 monthsStrictRegex:
15056 /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
15057
15058 // Выражение, которое соответствует только сокращённым формам
15059 monthsShortStrictRegex:
15060 /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
15061 longDateFormat: {
15062 LT: 'H:mm',
15063 LTS: 'H:mm:ss',
15064 L: 'DD.MM.YYYY',
15065 LL: 'D MMMM YYYY г.',
15066 LLL: 'D MMMM YYYY г., H:mm',
15067 LLLL: 'dddd, D MMMM YYYY г., H:mm',
15068 },
15069 calendar: {
15070 sameDay: '[Сегодня, в] LT',
15071 nextDay: '[Завтра, в] LT',
15072 lastDay: '[Вчера, в] LT',
15073 nextWeek: function (now) {
15074 if (now.week() !== this.week()) {
15075 switch (this.day()) {
15076 case 0:
15077 return '[В следующее] dddd, [в] LT';
15078 case 1:
15079 case 2:
15080 case 4:
15081 return '[В следующий] dddd, [в] LT';
15082 case 3:
15083 case 5:
15084 case 6:
15085 return '[В следующую] dddd, [в] LT';
15086 }
15087 } else {
15088 if (this.day() === 2) {
15089 return '[Во] dddd, [в] LT';
15090 } else {
15091 return '[В] dddd, [в] LT';
15092 }
15093 }
15094 },
15095 lastWeek: function (now) {
15096 if (now.week() !== this.week()) {
15097 switch (this.day()) {
15098 case 0:
15099 return '[В прошлое] dddd, [в] LT';
15100 case 1:
15101 case 2:
15102 case 4:
15103 return '[В прошлый] dddd, [в] LT';
15104 case 3:
15105 case 5:
15106 case 6:
15107 return '[В прошлую] dddd, [в] LT';
15108 }
15109 } else {
15110 if (this.day() === 2) {
15111 return '[Во] dddd, [в] LT';
15112 } else {
15113 return '[В] dddd, [в] LT';
15114 }
15115 }
15116 },
15117 sameElse: 'L',
15118 },
15119 relativeTime: {
15120 future: 'через %s',
15121 past: '%s назад',
15122 s: 'несколько секунд',
15123 ss: relativeTimeWithPlural$3,
15124 m: relativeTimeWithPlural$3,
15125 mm: relativeTimeWithPlural$3,
15126 h: 'час',
15127 hh: relativeTimeWithPlural$3,
15128 d: 'день',
15129 dd: relativeTimeWithPlural$3,
15130 w: 'неделя',
15131 ww: relativeTimeWithPlural$3,
15132 M: 'месяц',
15133 MM: relativeTimeWithPlural$3,
15134 y: 'год',
15135 yy: relativeTimeWithPlural$3,
15136 },
15137 meridiemParse: /ночи|утра|дня|вечера/i,
15138 isPM: function (input) {
15139 return /^(дня|вечера)$/.test(input);
15140 },
15141 meridiem: function (hour, minute, isLower) {
15142 if (hour < 4) {
15143 return 'ночи';
15144 } else if (hour < 12) {
15145 return 'утра';
15146 } else if (hour < 17) {
15147 return 'дня';
15148 } else {
15149 return 'вечера';
15150 }
15151 },
15152 dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
15153 ordinal: function (number, period) {
15154 switch (period) {
15155 case 'M':
15156 case 'd':
15157 case 'DDD':
15158 return number + '-й';
15159 case 'D':
15160 return number + '-го';
15161 case 'w':
15162 case 'W':
15163 return number + '-я';
15164 default:
15165 return number;
15166 }
15167 },
15168 week: {
15169 dow: 1, // Monday is the first day of the week.
15170 doy: 4, // The week that contains Jan 4th is the first week of the year.
15171 },
15172 });
15173
15174 //! moment.js locale configuration
15175
15176 var months$9 = [
15177 'جنوري',
15178 'فيبروري',
15179 'مارچ',
15180 'اپريل',
15181 'مئي',
15182 'جون',
15183 'جولاءِ',
15184 'آگسٽ',
15185 'سيپٽمبر',
15186 'آڪٽوبر',
15187 'نومبر',
15188 'ڊسمبر',
15189 ],
15190 days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
15191
15192 hooks.defineLocale('sd', {
15193 months: months$9,
15194 monthsShort: months$9,
15195 weekdays: days$1,
15196 weekdaysShort: days$1,
15197 weekdaysMin: days$1,
15198 longDateFormat: {
15199 LT: 'HH:mm',
15200 LTS: 'HH:mm:ss',
15201 L: 'DD/MM/YYYY',
15202 LL: 'D MMMM YYYY',
15203 LLL: 'D MMMM YYYY HH:mm',
15204 LLLL: 'dddd، D MMMM YYYY HH:mm',
15205 },
15206 meridiemParse: /صبح|شام/,
15207 isPM: function (input) {
15208 return 'شام' === input;
15209 },
15210 meridiem: function (hour, minute, isLower) {
15211 if (hour < 12) {
15212 return 'صبح';
15213 }
15214 return 'شام';
15215 },
15216 calendar: {
15217 sameDay: '[اڄ] LT',
15218 nextDay: '[سڀاڻي] LT',
15219 nextWeek: 'dddd [اڳين هفتي تي] LT',
15220 lastDay: '[ڪالهه] LT',
15221 lastWeek: '[گزريل هفتي] dddd [تي] LT',
15222 sameElse: 'L',
15223 },
15224 relativeTime: {
15225 future: '%s پوء',
15226 past: '%s اڳ',
15227 s: 'چند سيڪنڊ',
15228 ss: '%d سيڪنڊ',
15229 m: 'هڪ منٽ',
15230 mm: '%d منٽ',
15231 h: 'هڪ ڪلاڪ',
15232 hh: '%d ڪلاڪ',
15233 d: 'هڪ ڏينهن',
15234 dd: '%d ڏينهن',
15235 M: 'هڪ مهينو',
15236 MM: '%d مهينا',
15237 y: 'هڪ سال',
15238 yy: '%d سال',
15239 },
15240 preparse: function (string) {
15241 return string.replace(/،/g, ',');
15242 },
15243 postformat: function (string) {
15244 return string.replace(/,/g, '،');
15245 },
15246 week: {
15247 dow: 1, // Monday is the first day of the week.
15248 doy: 4, // The week that contains Jan 4th is the first week of the year.
15249 },
15250 });
15251
15252 //! moment.js locale configuration
15253
15254 hooks.defineLocale('se', {
15255 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(
15256 '_'
15257 ),
15258 monthsShort:
15259 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
15260 weekdays:
15261 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
15262 '_'
15263 ),
15264 weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
15265 weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
15266 longDateFormat: {
15267 LT: 'HH:mm',
15268 LTS: 'HH:mm:ss',
15269 L: 'DD.MM.YYYY',
15270 LL: 'MMMM D. [b.] YYYY',
15271 LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
15272 LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
15273 },
15274 calendar: {
15275 sameDay: '[otne ti] LT',
15276 nextDay: '[ihttin ti] LT',
15277 nextWeek: 'dddd [ti] LT',
15278 lastDay: '[ikte ti] LT',
15279 lastWeek: '[ovddit] dddd [ti] LT',
15280 sameElse: 'L',
15281 },
15282 relativeTime: {
15283 future: '%s geažes',
15284 past: 'maŋit %s',
15285 s: 'moadde sekunddat',
15286 ss: '%d sekunddat',
15287 m: 'okta minuhta',
15288 mm: '%d minuhtat',
15289 h: 'okta diimmu',
15290 hh: '%d diimmut',
15291 d: 'okta beaivi',
15292 dd: '%d beaivvit',
15293 M: 'okta mánnu',
15294 MM: '%d mánut',
15295 y: 'okta jahki',
15296 yy: '%d jagit',
15297 },
15298 dayOfMonthOrdinalParse: /\d{1,2}\./,
15299 ordinal: '%d.',
15300 week: {
15301 dow: 1, // Monday is the first day of the week.
15302 doy: 4, // The week that contains Jan 4th is the first week of the year.
15303 },
15304 });
15305
15306 //! moment.js locale configuration
15307
15308 /*jshint -W100*/
15309 hooks.defineLocale('si', {
15310 months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
15311 '_'
15312 ),
15313 monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
15314 '_'
15315 ),
15316 weekdays:
15317 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
15318 '_'
15319 ),
15320 weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
15321 weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
15322 weekdaysParseExact: true,
15323 longDateFormat: {
15324 LT: 'a h:mm',
15325 LTS: 'a h:mm:ss',
15326 L: 'YYYY/MM/DD',
15327 LL: 'YYYY MMMM D',
15328 LLL: 'YYYY MMMM D, a h:mm',
15329 LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
15330 },
15331 calendar: {
15332 sameDay: '[අද] LT[ට]',
15333 nextDay: '[හෙට] LT[ට]',
15334 nextWeek: 'dddd LT[ට]',
15335 lastDay: '[ඊයේ] LT[ට]',
15336 lastWeek: '[පසුගිය] dddd LT[ට]',
15337 sameElse: 'L',
15338 },
15339 relativeTime: {
15340 future: '%sකින්',
15341 past: '%sකට පෙර',
15342 s: 'තත්පර කිහිපය',
15343 ss: 'තත්පර %d',
15344 m: 'මිනිත්තුව',
15345 mm: 'මිනිත්තු %d',
15346 h: 'පැය',
15347 hh: 'පැය %d',
15348 d: 'දිනය',
15349 dd: 'දින %d',
15350 M: 'මාසය',
15351 MM: 'මාස %d',
15352 y: 'වසර',
15353 yy: 'වසර %d',
15354 },
15355 dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
15356 ordinal: function (number) {
15357 return number + ' වැනි';
15358 },
15359 meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
15360 isPM: function (input) {
15361 return input === 'ප.ව.' || input === 'පස් වරු';
15362 },
15363 meridiem: function (hours, minutes, isLower) {
15364 if (hours > 11) {
15365 return isLower ? 'ප.ව.' : 'පස් වරු';
15366 } else {
15367 return isLower ? 'පෙ.ව.' : 'පෙර වරු';
15368 }
15369 },
15370 });
15371
15372 //! moment.js locale configuration
15373
15374 var months$a =
15375 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
15376 '_'
15377 ),
15378 monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
15379 function plural$5(n) {
15380 return n > 1 && n < 5;
15381 }
15382 function translate$9(number, withoutSuffix, key, isFuture) {
15383 var result = number + ' ';
15384 switch (key) {
15385 case 's': // a few seconds / in a few seconds / a few seconds ago
15386 return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
15387 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
15388 if (withoutSuffix || isFuture) {
15389 return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
15390 } else {
15391 return result + 'sekundami';
15392 }
15393 case 'm': // a minute / in a minute / a minute ago
15394 return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
15395 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
15396 if (withoutSuffix || isFuture) {
15397 return result + (plural$5(number) ? 'minúty' : 'minút');
15398 } else {
15399 return result + 'minútami';
15400 }
15401 case 'h': // an hour / in an hour / an hour ago
15402 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
15403 case 'hh': // 9 hours / in 9 hours / 9 hours ago
15404 if (withoutSuffix || isFuture) {
15405 return result + (plural$5(number) ? 'hodiny' : 'hodín');
15406 } else {
15407 return result + 'hodinami';
15408 }
15409 case 'd': // a day / in a day / a day ago
15410 return withoutSuffix || isFuture ? 'deň' : 'dňom';
15411 case 'dd': // 9 days / in 9 days / 9 days ago
15412 if (withoutSuffix || isFuture) {
15413 return result + (plural$5(number) ? 'dni' : 'dní');
15414 } else {
15415 return result + 'dňami';
15416 }
15417 case 'M': // a month / in a month / a month ago
15418 return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
15419 case 'MM': // 9 months / in 9 months / 9 months ago
15420 if (withoutSuffix || isFuture) {
15421 return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
15422 } else {
15423 return result + 'mesiacmi';
15424 }
15425 case 'y': // a year / in a year / a year ago
15426 return withoutSuffix || isFuture ? 'rok' : 'rokom';
15427 case 'yy': // 9 years / in 9 years / 9 years ago
15428 if (withoutSuffix || isFuture) {
15429 return result + (plural$5(number) ? 'roky' : 'rokov');
15430 } else {
15431 return result + 'rokmi';
15432 }
15433 }
15434 }
15435
15436 hooks.defineLocale('sk', {
15437 months: months$a,
15438 monthsShort: monthsShort$7,
15439 weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
15440 weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
15441 weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
15442 longDateFormat: {
15443 LT: 'H:mm',
15444 LTS: 'H:mm:ss',
15445 L: 'DD.MM.YYYY',
15446 LL: 'D. MMMM YYYY',
15447 LLL: 'D. MMMM YYYY H:mm',
15448 LLLL: 'dddd D. MMMM YYYY H:mm',
15449 },
15450 calendar: {
15451 sameDay: '[dnes o] LT',
15452 nextDay: '[zajtra o] LT',
15453 nextWeek: function () {
15454 switch (this.day()) {
15455 case 0:
15456 return '[v nedeľu o] LT';
15457 case 1:
15458 case 2:
15459 return '[v] dddd [o] LT';
15460 case 3:
15461 return '[v stredu o] LT';
15462 case 4:
15463 return '[vo štvrtok o] LT';
15464 case 5:
15465 return '[v piatok o] LT';
15466 case 6:
15467 return '[v sobotu o] LT';
15468 }
15469 },
15470 lastDay: '[včera o] LT',
15471 lastWeek: function () {
15472 switch (this.day()) {
15473 case 0:
15474 return '[minulú nedeľu o] LT';
15475 case 1:
15476 case 2:
15477 return '[minulý] dddd [o] LT';
15478 case 3:
15479 return '[minulú stredu o] LT';
15480 case 4:
15481 case 5:
15482 return '[minulý] dddd [o] LT';
15483 case 6:
15484 return '[minulú sobotu o] LT';
15485 }
15486 },
15487 sameElse: 'L',
15488 },
15489 relativeTime: {
15490 future: 'za %s',
15491 past: 'pred %s',
15492 s: translate$9,
15493 ss: translate$9,
15494 m: translate$9,
15495 mm: translate$9,
15496 h: translate$9,
15497 hh: translate$9,
15498 d: translate$9,
15499 dd: translate$9,
15500 M: translate$9,
15501 MM: translate$9,
15502 y: translate$9,
15503 yy: translate$9,
15504 },
15505 dayOfMonthOrdinalParse: /\d{1,2}\./,
15506 ordinal: '%d.',
15507 week: {
15508 dow: 1, // Monday is the first day of the week.
15509 doy: 4, // The week that contains Jan 4th is the first week of the year.
15510 },
15511 });
15512
15513 //! moment.js locale configuration
15514
15515 function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
15516 var result = number + ' ';
15517 switch (key) {
15518 case 's':
15519 return withoutSuffix || isFuture
15520 ? 'nekaj sekund'
15521 : 'nekaj sekundami';
15522 case 'ss':
15523 if (number === 1) {
15524 result += withoutSuffix ? 'sekundo' : 'sekundi';
15525 } else if (number === 2) {
15526 result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
15527 } else if (number < 5) {
15528 result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
15529 } else {
15530 result += 'sekund';
15531 }
15532 return result;
15533 case 'm':
15534 return withoutSuffix ? 'ena minuta' : 'eno minuto';
15535 case 'mm':
15536 if (number === 1) {
15537 result += withoutSuffix ? 'minuta' : 'minuto';
15538 } else if (number === 2) {
15539 result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
15540 } else if (number < 5) {
15541 result += withoutSuffix || isFuture ? 'minute' : 'minutami';
15542 } else {
15543 result += withoutSuffix || isFuture ? 'minut' : 'minutami';
15544 }
15545 return result;
15546 case 'h':
15547 return withoutSuffix ? 'ena ura' : 'eno uro';
15548 case 'hh':
15549 if (number === 1) {
15550 result += withoutSuffix ? 'ura' : 'uro';
15551 } else if (number === 2) {
15552 result += withoutSuffix || isFuture ? 'uri' : 'urama';
15553 } else if (number < 5) {
15554 result += withoutSuffix || isFuture ? 'ure' : 'urami';
15555 } else {
15556 result += withoutSuffix || isFuture ? 'ur' : 'urami';
15557 }
15558 return result;
15559 case 'd':
15560 return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
15561 case 'dd':
15562 if (number === 1) {
15563 result += withoutSuffix || isFuture ? 'dan' : 'dnem';
15564 } else if (number === 2) {
15565 result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
15566 } else {
15567 result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
15568 }
15569 return result;
15570 case 'M':
15571 return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
15572 case 'MM':
15573 if (number === 1) {
15574 result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
15575 } else if (number === 2) {
15576 result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
15577 } else if (number < 5) {
15578 result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
15579 } else {
15580 result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
15581 }
15582 return result;
15583 case 'y':
15584 return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
15585 case 'yy':
15586 if (number === 1) {
15587 result += withoutSuffix || isFuture ? 'leto' : 'letom';
15588 } else if (number === 2) {
15589 result += withoutSuffix || isFuture ? 'leti' : 'letoma';
15590 } else if (number < 5) {
15591 result += withoutSuffix || isFuture ? 'leta' : 'leti';
15592 } else {
15593 result += withoutSuffix || isFuture ? 'let' : 'leti';
15594 }
15595 return result;
15596 }
15597 }
15598
15599 hooks.defineLocale('sl', {
15600 months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
15601 '_'
15602 ),
15603 monthsShort:
15604 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
15605 '_'
15606 ),
15607 monthsParseExact: true,
15608 weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
15609 weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
15610 weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
15611 weekdaysParseExact: true,
15612 longDateFormat: {
15613 LT: 'H:mm',
15614 LTS: 'H:mm:ss',
15615 L: 'DD. MM. YYYY',
15616 LL: 'D. MMMM YYYY',
15617 LLL: 'D. MMMM YYYY H:mm',
15618 LLLL: 'dddd, D. MMMM YYYY H:mm',
15619 },
15620 calendar: {
15621 sameDay: '[danes ob] LT',
15622 nextDay: '[jutri ob] LT',
15623
15624 nextWeek: function () {
15625 switch (this.day()) {
15626 case 0:
15627 return '[v] [nedeljo] [ob] LT';
15628 case 3:
15629 return '[v] [sredo] [ob] LT';
15630 case 6:
15631 return '[v] [soboto] [ob] LT';
15632 case 1:
15633 case 2:
15634 case 4:
15635 case 5:
15636 return '[v] dddd [ob] LT';
15637 }
15638 },
15639 lastDay: '[včeraj ob] LT',
15640 lastWeek: function () {
15641 switch (this.day()) {
15642 case 0:
15643 return '[prejšnjo] [nedeljo] [ob] LT';
15644 case 3:
15645 return '[prejšnjo] [sredo] [ob] LT';
15646 case 6:
15647 return '[prejšnjo] [soboto] [ob] LT';
15648 case 1:
15649 case 2:
15650 case 4:
15651 case 5:
15652 return '[prejšnji] dddd [ob] LT';
15653 }
15654 },
15655 sameElse: 'L',
15656 },
15657 relativeTime: {
15658 future: 'čez %s',
15659 past: 'pred %s',
15660 s: processRelativeTime$7,
15661 ss: processRelativeTime$7,
15662 m: processRelativeTime$7,
15663 mm: processRelativeTime$7,
15664 h: processRelativeTime$7,
15665 hh: processRelativeTime$7,
15666 d: processRelativeTime$7,
15667 dd: processRelativeTime$7,
15668 M: processRelativeTime$7,
15669 MM: processRelativeTime$7,
15670 y: processRelativeTime$7,
15671 yy: processRelativeTime$7,
15672 },
15673 dayOfMonthOrdinalParse: /\d{1,2}\./,
15674 ordinal: '%d.',
15675 week: {
15676 dow: 1, // Monday is the first day of the week.
15677 doy: 7, // The week that contains Jan 7th is the first week of the year.
15678 },
15679 });
15680
15681 //! moment.js locale configuration
15682
15683 hooks.defineLocale('sq', {
15684 months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
15685 '_'
15686 ),
15687 monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
15688 weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
15689 '_'
15690 ),
15691 weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
15692 weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
15693 weekdaysParseExact: true,
15694 meridiemParse: /PD|MD/,
15695 isPM: function (input) {
15696 return input.charAt(0) === 'M';
15697 },
15698 meridiem: function (hours, minutes, isLower) {
15699 return hours < 12 ? 'PD' : 'MD';
15700 },
15701 longDateFormat: {
15702 LT: 'HH:mm',
15703 LTS: 'HH:mm:ss',
15704 L: 'DD/MM/YYYY',
15705 LL: 'D MMMM YYYY',
15706 LLL: 'D MMMM YYYY HH:mm',
15707 LLLL: 'dddd, D MMMM YYYY HH:mm',
15708 },
15709 calendar: {
15710 sameDay: '[Sot në] LT',
15711 nextDay: '[Nesër në] LT',
15712 nextWeek: 'dddd [në] LT',
15713 lastDay: '[Dje në] LT',
15714 lastWeek: 'dddd [e kaluar në] LT',
15715 sameElse: 'L',
15716 },
15717 relativeTime: {
15718 future: 'në %s',
15719 past: '%s më parë',
15720 s: 'disa sekonda',
15721 ss: '%d sekonda',
15722 m: 'një minutë',
15723 mm: '%d minuta',
15724 h: 'një orë',
15725 hh: '%d orë',
15726 d: 'një ditë',
15727 dd: '%d ditë',
15728 M: 'një muaj',
15729 MM: '%d muaj',
15730 y: 'një vit',
15731 yy: '%d vite',
15732 },
15733 dayOfMonthOrdinalParse: /\d{1,2}\./,
15734 ordinal: '%d.',
15735 week: {
15736 dow: 1, // Monday is the first day of the week.
15737 doy: 4, // The week that contains Jan 4th is the first week of the year.
15738 },
15739 });
15740
15741 //! moment.js locale configuration
15742
15743 var translator$1 = {
15744 words: {
15745 //Different grammatical cases
15746 ss: ['секунда', 'секунде', 'секунди'],
15747 m: ['један минут', 'једног минута'],
15748 mm: ['минут', 'минута', 'минута'],
15749 h: ['један сат', 'једног сата'],
15750 hh: ['сат', 'сата', 'сати'],
15751 d: ['један дан', 'једног дана'],
15752 dd: ['дан', 'дана', 'дана'],
15753 M: ['један месец', 'једног месеца'],
15754 MM: ['месец', 'месеца', 'месеци'],
15755 y: ['једну годину', 'једне године'],
15756 yy: ['годину', 'године', 'година'],
15757 },
15758 correctGrammaticalCase: function (number, wordKey) {
15759 if (
15760 number % 10 >= 1 &&
15761 number % 10 <= 4 &&
15762 (number % 100 < 10 || number % 100 >= 20)
15763 ) {
15764 return number % 10 === 1 ? wordKey[0] : wordKey[1];
15765 }
15766 return wordKey[2];
15767 },
15768 translate: function (number, withoutSuffix, key, isFuture) {
15769 var wordKey = translator$1.words[key],
15770 word;
15771
15772 if (key.length === 1) {
15773 // Nominativ
15774 if (key === 'y' && withoutSuffix) return 'једна година';
15775 return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
15776 }
15777
15778 word = translator$1.correctGrammaticalCase(number, wordKey);
15779 // Nominativ
15780 if (key === 'yy' && withoutSuffix && word === 'годину') {
15781 return number + ' година';
15782 }
15783
15784 return number + ' ' + word;
15785 },
15786 };
15787
15788 hooks.defineLocale('sr-cyrl', {
15789 months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
15790 '_'
15791 ),
15792 monthsShort:
15793 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
15794 monthsParseExact: true,
15795 weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
15796 weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
15797 weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
15798 weekdaysParseExact: true,
15799 longDateFormat: {
15800 LT: 'H:mm',
15801 LTS: 'H:mm:ss',
15802 L: 'D. M. YYYY.',
15803 LL: 'D. MMMM YYYY.',
15804 LLL: 'D. MMMM YYYY. H:mm',
15805 LLLL: 'dddd, D. MMMM YYYY. H:mm',
15806 },
15807 calendar: {
15808 sameDay: '[данас у] LT',
15809 nextDay: '[сутра у] LT',
15810 nextWeek: function () {
15811 switch (this.day()) {
15812 case 0:
15813 return '[у] [недељу] [у] LT';
15814 case 3:
15815 return '[у] [среду] [у] LT';
15816 case 6:
15817 return '[у] [суботу] [у] LT';
15818 case 1:
15819 case 2:
15820 case 4:
15821 case 5:
15822 return '[у] dddd [у] LT';
15823 }
15824 },
15825 lastDay: '[јуче у] LT',
15826 lastWeek: function () {
15827 var lastWeekDays = [
15828 '[прошле] [недеље] [у] LT',
15829 '[прошлог] [понедељка] [у] LT',
15830 '[прошлог] [уторка] [у] LT',
15831 '[прошле] [среде] [у] LT',
15832 '[прошлог] [четвртка] [у] LT',
15833 '[прошлог] [петка] [у] LT',
15834 '[прошле] [суботе] [у] LT',
15835 ];
15836 return lastWeekDays[this.day()];
15837 },
15838 sameElse: 'L',
15839 },
15840 relativeTime: {
15841 future: 'за %s',
15842 past: 'пре %s',
15843 s: 'неколико секунди',
15844 ss: translator$1.translate,
15845 m: translator$1.translate,
15846 mm: translator$1.translate,
15847 h: translator$1.translate,
15848 hh: translator$1.translate,
15849 d: translator$1.translate,
15850 dd: translator$1.translate,
15851 M: translator$1.translate,
15852 MM: translator$1.translate,
15853 y: translator$1.translate,
15854 yy: translator$1.translate,
15855 },
15856 dayOfMonthOrdinalParse: /\d{1,2}\./,
15857 ordinal: '%d.',
15858 week: {
15859 dow: 1, // Monday is the first day of the week.
15860 doy: 7, // The week that contains Jan 1st is the first week of the year.
15861 },
15862 });
15863
15864 //! moment.js locale configuration
15865
15866 var translator$2 = {
15867 words: {
15868 //Different grammatical cases
15869 ss: ['sekunda', 'sekunde', 'sekundi'],
15870 m: ['jedan minut', 'jednog minuta'],
15871 mm: ['minut', 'minuta', 'minuta'],
15872 h: ['jedan sat', 'jednog sata'],
15873 hh: ['sat', 'sata', 'sati'],
15874 d: ['jedan dan', 'jednog dana'],
15875 dd: ['dan', 'dana', 'dana'],
15876 M: ['jedan mesec', 'jednog meseca'],
15877 MM: ['mesec', 'meseca', 'meseci'],
15878 y: ['jednu godinu', 'jedne godine'],
15879 yy: ['godinu', 'godine', 'godina'],
15880 },
15881 correctGrammaticalCase: function (number, wordKey) {
15882 if (
15883 number % 10 >= 1 &&
15884 number % 10 <= 4 &&
15885 (number % 100 < 10 || number % 100 >= 20)
15886 ) {
15887 return number % 10 === 1 ? wordKey[0] : wordKey[1];
15888 }
15889 return wordKey[2];
15890 },
15891 translate: function (number, withoutSuffix, key, isFuture) {
15892 var wordKey = translator$2.words[key],
15893 word;
15894
15895 if (key.length === 1) {
15896 // Nominativ
15897 if (key === 'y' && withoutSuffix) return 'jedna godina';
15898 return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
15899 }
15900
15901 word = translator$2.correctGrammaticalCase(number, wordKey);
15902 // Nominativ
15903 if (key === 'yy' && withoutSuffix && word === 'godinu') {
15904 return number + ' godina';
15905 }
15906
15907 return number + ' ' + word;
15908 },
15909 };
15910
15911 hooks.defineLocale('sr', {
15912 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
15913 '_'
15914 ),
15915 monthsShort:
15916 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
15917 monthsParseExact: true,
15918 weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
15919 '_'
15920 ),
15921 weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
15922 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
15923 weekdaysParseExact: true,
15924 longDateFormat: {
15925 LT: 'H:mm',
15926 LTS: 'H:mm:ss',
15927 L: 'D. M. YYYY.',
15928 LL: 'D. MMMM YYYY.',
15929 LLL: 'D. MMMM YYYY. H:mm',
15930 LLLL: 'dddd, D. MMMM YYYY. H:mm',
15931 },
15932 calendar: {
15933 sameDay: '[danas u] LT',
15934 nextDay: '[sutra u] LT',
15935 nextWeek: function () {
15936 switch (this.day()) {
15937 case 0:
15938 return '[u] [nedelju] [u] LT';
15939 case 3:
15940 return '[u] [sredu] [u] LT';
15941 case 6:
15942 return '[u] [subotu] [u] LT';
15943 case 1:
15944 case 2:
15945 case 4:
15946 case 5:
15947 return '[u] dddd [u] LT';
15948 }
15949 },
15950 lastDay: '[juče u] LT',
15951 lastWeek: function () {
15952 var lastWeekDays = [
15953 '[prošle] [nedelje] [u] LT',
15954 '[prošlog] [ponedeljka] [u] LT',
15955 '[prošlog] [utorka] [u] LT',
15956 '[prošle] [srede] [u] LT',
15957 '[prošlog] [četvrtka] [u] LT',
15958 '[prošlog] [petka] [u] LT',
15959 '[prošle] [subote] [u] LT',
15960 ];
15961 return lastWeekDays[this.day()];
15962 },
15963 sameElse: 'L',
15964 },
15965 relativeTime: {
15966 future: 'za %s',
15967 past: 'pre %s',
15968 s: 'nekoliko sekundi',
15969 ss: translator$2.translate,
15970 m: translator$2.translate,
15971 mm: translator$2.translate,
15972 h: translator$2.translate,
15973 hh: translator$2.translate,
15974 d: translator$2.translate,
15975 dd: translator$2.translate,
15976 M: translator$2.translate,
15977 MM: translator$2.translate,
15978 y: translator$2.translate,
15979 yy: translator$2.translate,
15980 },
15981 dayOfMonthOrdinalParse: /\d{1,2}\./,
15982 ordinal: '%d.',
15983 week: {
15984 dow: 1, // Monday is the first day of the week.
15985 doy: 7, // The week that contains Jan 7th is the first week of the year.
15986 },
15987 });
15988
15989 //! moment.js locale configuration
15990
15991 hooks.defineLocale('ss', {
15992 months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
15993 '_'
15994 ),
15995 monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
15996 weekdays:
15997 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
15998 '_'
15999 ),
16000 weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
16001 weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
16002 weekdaysParseExact: true,
16003 longDateFormat: {
16004 LT: 'h:mm A',
16005 LTS: 'h:mm:ss A',
16006 L: 'DD/MM/YYYY',
16007 LL: 'D MMMM YYYY',
16008 LLL: 'D MMMM YYYY h:mm A',
16009 LLLL: 'dddd, D MMMM YYYY h:mm A',
16010 },
16011 calendar: {
16012 sameDay: '[Namuhla nga] LT',
16013 nextDay: '[Kusasa nga] LT',
16014 nextWeek: 'dddd [nga] LT',
16015 lastDay: '[Itolo nga] LT',
16016 lastWeek: 'dddd [leliphelile] [nga] LT',
16017 sameElse: 'L',
16018 },
16019 relativeTime: {
16020 future: 'nga %s',
16021 past: 'wenteka nga %s',
16022 s: 'emizuzwana lomcane',
16023 ss: '%d mzuzwana',
16024 m: 'umzuzu',
16025 mm: '%d emizuzu',
16026 h: 'lihora',
16027 hh: '%d emahora',
16028 d: 'lilanga',
16029 dd: '%d emalanga',
16030 M: 'inyanga',
16031 MM: '%d tinyanga',
16032 y: 'umnyaka',
16033 yy: '%d iminyaka',
16034 },
16035 meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
16036 meridiem: function (hours, minutes, isLower) {
16037 if (hours < 11) {
16038 return 'ekuseni';
16039 } else if (hours < 15) {
16040 return 'emini';
16041 } else if (hours < 19) {
16042 return 'entsambama';
16043 } else {
16044 return 'ebusuku';
16045 }
16046 },
16047 meridiemHour: function (hour, meridiem) {
16048 if (hour === 12) {
16049 hour = 0;
16050 }
16051 if (meridiem === 'ekuseni') {
16052 return hour;
16053 } else if (meridiem === 'emini') {
16054 return hour >= 11 ? hour : hour + 12;
16055 } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
16056 if (hour === 0) {
16057 return 0;
16058 }
16059 return hour + 12;
16060 }
16061 },
16062 dayOfMonthOrdinalParse: /\d{1,2}/,
16063 ordinal: '%d',
16064 week: {
16065 dow: 1, // Monday is the first day of the week.
16066 doy: 4, // The week that contains Jan 4th is the first week of the year.
16067 },
16068 });
16069
16070 //! moment.js locale configuration
16071
16072 hooks.defineLocale('sv', {
16073 months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
16074 '_'
16075 ),
16076 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
16077 weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
16078 weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
16079 weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
16080 longDateFormat: {
16081 LT: 'HH:mm',
16082 LTS: 'HH:mm:ss',
16083 L: 'YYYY-MM-DD',
16084 LL: 'D MMMM YYYY',
16085 LLL: 'D MMMM YYYY [kl.] HH:mm',
16086 LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
16087 lll: 'D MMM YYYY HH:mm',
16088 llll: 'ddd D MMM YYYY HH:mm',
16089 },
16090 calendar: {
16091 sameDay: '[Idag] LT',
16092 nextDay: '[Imorgon] LT',
16093 lastDay: '[Igår] LT',
16094 nextWeek: '[På] dddd LT',
16095 lastWeek: '[I] dddd[s] LT',
16096 sameElse: 'L',
16097 },
16098 relativeTime: {
16099 future: 'om %s',
16100 past: 'för %s sedan',
16101 s: 'några sekunder',
16102 ss: '%d sekunder',
16103 m: 'en minut',
16104 mm: '%d minuter',
16105 h: 'en timme',
16106 hh: '%d timmar',
16107 d: 'en dag',
16108 dd: '%d dagar',
16109 M: 'en månad',
16110 MM: '%d månader',
16111 y: 'ett år',
16112 yy: '%d år',
16113 },
16114 dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
16115 ordinal: function (number) {
16116 var b = number % 10,
16117 output =
16118 ~~((number % 100) / 10) === 1
16119 ? ':e'
16120 : b === 1
16121 ? ':a'
16122 : b === 2
16123 ? ':a'
16124 : b === 3
16125 ? ':e'
16126 : ':e';
16127 return number + output;
16128 },
16129 week: {
16130 dow: 1, // Monday is the first day of the week.
16131 doy: 4, // The week that contains Jan 4th is the first week of the year.
16132 },
16133 });
16134
16135 //! moment.js locale configuration
16136
16137 hooks.defineLocale('sw', {
16138 months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
16139 '_'
16140 ),
16141 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
16142 weekdays:
16143 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
16144 '_'
16145 ),
16146 weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
16147 weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
16148 weekdaysParseExact: true,
16149 longDateFormat: {
16150 LT: 'hh:mm A',
16151 LTS: 'HH:mm:ss',
16152 L: 'DD.MM.YYYY',
16153 LL: 'D MMMM YYYY',
16154 LLL: 'D MMMM YYYY HH:mm',
16155 LLLL: 'dddd, D MMMM YYYY HH:mm',
16156 },
16157 calendar: {
16158 sameDay: '[leo saa] LT',
16159 nextDay: '[kesho saa] LT',
16160 nextWeek: '[wiki ijayo] dddd [saat] LT',
16161 lastDay: '[jana] LT',
16162 lastWeek: '[wiki iliyopita] dddd [saat] LT',
16163 sameElse: 'L',
16164 },
16165 relativeTime: {
16166 future: '%s baadaye',
16167 past: 'tokea %s',
16168 s: 'hivi punde',
16169 ss: 'sekunde %d',
16170 m: 'dakika moja',
16171 mm: 'dakika %d',
16172 h: 'saa limoja',
16173 hh: 'masaa %d',
16174 d: 'siku moja',
16175 dd: 'siku %d',
16176 M: 'mwezi mmoja',
16177 MM: 'miezi %d',
16178 y: 'mwaka mmoja',
16179 yy: 'miaka %d',
16180 },
16181 week: {
16182 dow: 1, // Monday is the first day of the week.
16183 doy: 7, // The week that contains Jan 7th is the first week of the year.
16184 },
16185 });
16186
16187 //! moment.js locale configuration
16188
16189 var symbolMap$g = {
16190 1: '௧',
16191 2: '௨',
16192 3: '௩',
16193 4: '௪',
16194 5: '௫',
16195 6: '௬',
16196 7: '௭',
16197 8: '௮',
16198 9: '௯',
16199 0: '௦',
16200 },
16201 numberMap$f = {
16202 '௧': '1',
16203 '௨': '2',
16204 '௩': '3',
16205 '௪': '4',
16206 '௫': '5',
16207 '௬': '6',
16208 '௭': '7',
16209 '௮': '8',
16210 '௯': '9',
16211 '௦': '0',
16212 };
16213
16214 hooks.defineLocale('ta', {
16215 months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
16216 '_'
16217 ),
16218 monthsShort:
16219 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
16220 '_'
16221 ),
16222 weekdays:
16223 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
16224 '_'
16225 ),
16226 weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
16227 '_'
16228 ),
16229 weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
16230 longDateFormat: {
16231 LT: 'HH:mm',
16232 LTS: 'HH:mm:ss',
16233 L: 'DD/MM/YYYY',
16234 LL: 'D MMMM YYYY',
16235 LLL: 'D MMMM YYYY, HH:mm',
16236 LLLL: 'dddd, D MMMM YYYY, HH:mm',
16237 },
16238 calendar: {
16239 sameDay: '[இன்று] LT',
16240 nextDay: '[நாளை] LT',
16241 nextWeek: 'dddd, LT',
16242 lastDay: '[நேற்று] LT',
16243 lastWeek: '[கடந்த வாரம்] dddd, LT',
16244 sameElse: 'L',
16245 },
16246 relativeTime: {
16247 future: '%s இல்',
16248 past: '%s முன்',
16249 s: 'ஒரு சில விநாடிகள்',
16250 ss: '%d விநாடிகள்',
16251 m: 'ஒரு நிமிடம்',
16252 mm: '%d நிமிடங்கள்',
16253 h: 'ஒரு மணி நேரம்',
16254 hh: '%d மணி நேரம்',
16255 d: 'ஒரு நாள்',
16256 dd: '%d நாட்கள்',
16257 M: 'ஒரு மாதம்',
16258 MM: '%d மாதங்கள்',
16259 y: 'ஒரு வருடம்',
16260 yy: '%d ஆண்டுகள்',
16261 },
16262 dayOfMonthOrdinalParse: /\d{1,2}வது/,
16263 ordinal: function (number) {
16264 return number + 'வது';
16265 },
16266 preparse: function (string) {
16267 return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
16268 return numberMap$f[match];
16269 });
16270 },
16271 postformat: function (string) {
16272 return string.replace(/\d/g, function (match) {
16273 return symbolMap$g[match];
16274 });
16275 },
16276 // refer http://ta.wikipedia.org/s/1er1
16277 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
16278 meridiem: function (hour, minute, isLower) {
16279 if (hour < 2) {
16280 return ' யாமம்';
16281 } else if (hour < 6) {
16282 return ' வைகறை'; // வைகறை
16283 } else if (hour < 10) {
16284 return ' காலை'; // காலை
16285 } else if (hour < 14) {
16286 return ' நண்பகல்'; // நண்பகல்
16287 } else if (hour < 18) {
16288 return ' எற்பாடு'; // எற்பாடு
16289 } else if (hour < 22) {
16290 return ' மாலை'; // மாலை
16291 } else {
16292 return ' யாமம்';
16293 }
16294 },
16295 meridiemHour: function (hour, meridiem) {
16296 if (hour === 12) {
16297 hour = 0;
16298 }
16299 if (meridiem === 'யாமம்') {
16300 return hour < 2 ? hour : hour + 12;
16301 } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
16302 return hour;
16303 } else if (meridiem === 'நண்பகல்') {
16304 return hour >= 10 ? hour : hour + 12;
16305 } else {
16306 return hour + 12;
16307 }
16308 },
16309 week: {
16310 dow: 0, // Sunday is the first day of the week.
16311 doy: 6, // The week that contains Jan 6th is the first week of the year.
16312 },
16313 });
16314
16315 //! moment.js locale configuration
16316
16317 hooks.defineLocale('te', {
16318 months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
16319 '_'
16320 ),
16321 monthsShort:
16322 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
16323 '_'
16324 ),
16325 monthsParseExact: true,
16326 weekdays:
16327 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
16328 '_'
16329 ),
16330 weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
16331 weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
16332 longDateFormat: {
16333 LT: 'A h:mm',
16334 LTS: 'A h:mm:ss',
16335 L: 'DD/MM/YYYY',
16336 LL: 'D MMMM YYYY',
16337 LLL: 'D MMMM YYYY, A h:mm',
16338 LLLL: 'dddd, D MMMM YYYY, A h:mm',
16339 },
16340 calendar: {
16341 sameDay: '[నేడు] LT',
16342 nextDay: '[రేపు] LT',
16343 nextWeek: 'dddd, LT',
16344 lastDay: '[నిన్న] LT',
16345 lastWeek: '[గత] dddd, LT',
16346 sameElse: 'L',
16347 },
16348 relativeTime: {
16349 future: '%s లో',
16350 past: '%s క్రితం',
16351 s: 'కొన్ని క్షణాలు',
16352 ss: '%d సెకన్లు',
16353 m: 'ఒక నిమిషం',
16354 mm: '%d నిమిషాలు',
16355 h: 'ఒక గంట',
16356 hh: '%d గంటలు',
16357 d: 'ఒక రోజు',
16358 dd: '%d రోజులు',
16359 M: 'ఒక నెల',
16360 MM: '%d నెలలు',
16361 y: 'ఒక సంవత్సరం',
16362 yy: '%d సంవత్సరాలు',
16363 },
16364 dayOfMonthOrdinalParse: /\d{1,2}వ/,
16365 ordinal: '%dవ',
16366 meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
16367 meridiemHour: function (hour, meridiem) {
16368 if (hour === 12) {
16369 hour = 0;
16370 }
16371 if (meridiem === 'రాత్రి') {
16372 return hour < 4 ? hour : hour + 12;
16373 } else if (meridiem === 'ఉదయం') {
16374 return hour;
16375 } else if (meridiem === 'మధ్యాహ్నం') {
16376 return hour >= 10 ? hour : hour + 12;
16377 } else if (meridiem === 'సాయంత్రం') {
16378 return hour + 12;
16379 }
16380 },
16381 meridiem: function (hour, minute, isLower) {
16382 if (hour < 4) {
16383 return 'రాత్రి';
16384 } else if (hour < 10) {
16385 return 'ఉదయం';
16386 } else if (hour < 17) {
16387 return 'మధ్యాహ్నం';
16388 } else if (hour < 20) {
16389 return 'సాయంత్రం';
16390 } else {
16391 return 'రాత్రి';
16392 }
16393 },
16394 week: {
16395 dow: 0, // Sunday is the first day of the week.
16396 doy: 6, // The week that contains Jan 6th is the first week of the year.
16397 },
16398 });
16399
16400 //! moment.js locale configuration
16401
16402 hooks.defineLocale('tet', {
16403 months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
16404 '_'
16405 ),
16406 monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
16407 weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
16408 weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
16409 weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
16410 longDateFormat: {
16411 LT: 'HH:mm',
16412 LTS: 'HH:mm:ss',
16413 L: 'DD/MM/YYYY',
16414 LL: 'D MMMM YYYY',
16415 LLL: 'D MMMM YYYY HH:mm',
16416 LLLL: 'dddd, D MMMM YYYY HH:mm',
16417 },
16418 calendar: {
16419 sameDay: '[Ohin iha] LT',
16420 nextDay: '[Aban iha] LT',
16421 nextWeek: 'dddd [iha] LT',
16422 lastDay: '[Horiseik iha] LT',
16423 lastWeek: 'dddd [semana kotuk] [iha] LT',
16424 sameElse: 'L',
16425 },
16426 relativeTime: {
16427 future: 'iha %s',
16428 past: '%s liuba',
16429 s: 'segundu balun',
16430 ss: 'segundu %d',
16431 m: 'minutu ida',
16432 mm: 'minutu %d',
16433 h: 'oras ida',
16434 hh: 'oras %d',
16435 d: 'loron ida',
16436 dd: 'loron %d',
16437 M: 'fulan ida',
16438 MM: 'fulan %d',
16439 y: 'tinan ida',
16440 yy: 'tinan %d',
16441 },
16442 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
16443 ordinal: function (number) {
16444 var b = number % 10,
16445 output =
16446 ~~((number % 100) / 10) === 1
16447 ? 'th'
16448 : b === 1
16449 ? 'st'
16450 : b === 2
16451 ? 'nd'
16452 : b === 3
16453 ? 'rd'
16454 : 'th';
16455 return number + output;
16456 },
16457 week: {
16458 dow: 1, // Monday is the first day of the week.
16459 doy: 4, // The week that contains Jan 4th is the first week of the year.
16460 },
16461 });
16462
16463 //! moment.js locale configuration
16464
16465 var suffixes$3 = {
16466 0: '-ум',
16467 1: '-ум',
16468 2: '-юм',
16469 3: '-юм',
16470 4: '-ум',
16471 5: '-ум',
16472 6: '-ум',
16473 7: '-ум',
16474 8: '-ум',
16475 9: '-ум',
16476 10: '-ум',
16477 12: '-ум',
16478 13: '-ум',
16479 20: '-ум',
16480 30: '-юм',
16481 40: '-ум',
16482 50: '-ум',
16483 60: '-ум',
16484 70: '-ум',
16485 80: '-ум',
16486 90: '-ум',
16487 100: '-ум',
16488 };
16489
16490 hooks.defineLocale('tg', {
16491 months: {
16492 format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
16493 '_'
16494 ),
16495 standalone:
16496 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
16497 '_'
16498 ),
16499 },
16500 monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
16501 weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
16502 '_'
16503 ),
16504 weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
16505 weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
16506 longDateFormat: {
16507 LT: 'HH:mm',
16508 LTS: 'HH:mm:ss',
16509 L: 'DD.MM.YYYY',
16510 LL: 'D MMMM YYYY',
16511 LLL: 'D MMMM YYYY HH:mm',
16512 LLLL: 'dddd, D MMMM YYYY HH:mm',
16513 },
16514 calendar: {
16515 sameDay: '[Имрӯз соати] LT',
16516 nextDay: '[Фардо соати] LT',
16517 lastDay: '[Дирӯз соати] LT',
16518 nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
16519 lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
16520 sameElse: 'L',
16521 },
16522 relativeTime: {
16523 future: 'баъди %s',
16524 past: '%s пеш',
16525 s: 'якчанд сония',
16526 m: 'як дақиқа',
16527 mm: '%d дақиқа',
16528 h: 'як соат',
16529 hh: '%d соат',
16530 d: 'як рӯз',
16531 dd: '%d рӯз',
16532 M: 'як моҳ',
16533 MM: '%d моҳ',
16534 y: 'як сол',
16535 yy: '%d сол',
16536 },
16537 meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
16538 meridiemHour: function (hour, meridiem) {
16539 if (hour === 12) {
16540 hour = 0;
16541 }
16542 if (meridiem === 'шаб') {
16543 return hour < 4 ? hour : hour + 12;
16544 } else if (meridiem === 'субҳ') {
16545 return hour;
16546 } else if (meridiem === 'рӯз') {
16547 return hour >= 11 ? hour : hour + 12;
16548 } else if (meridiem === 'бегоҳ') {
16549 return hour + 12;
16550 }
16551 },
16552 meridiem: function (hour, minute, isLower) {
16553 if (hour < 4) {
16554 return 'шаб';
16555 } else if (hour < 11) {
16556 return 'субҳ';
16557 } else if (hour < 16) {
16558 return 'рӯз';
16559 } else if (hour < 19) {
16560 return 'бегоҳ';
16561 } else {
16562 return 'шаб';
16563 }
16564 },
16565 dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
16566 ordinal: function (number) {
16567 var a = number % 10,
16568 b = number >= 100 ? 100 : null;
16569 return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
16570 },
16571 week: {
16572 dow: 1, // Monday is the first day of the week.
16573 doy: 7, // The week that contains Jan 1th is the first week of the year.
16574 },
16575 });
16576
16577 //! moment.js locale configuration
16578
16579 hooks.defineLocale('th', {
16580 months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
16581 '_'
16582 ),
16583 monthsShort:
16584 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
16585 '_'
16586 ),
16587 monthsParseExact: true,
16588 weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
16589 weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
16590 weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
16591 weekdaysParseExact: true,
16592 longDateFormat: {
16593 LT: 'H:mm',
16594 LTS: 'H:mm:ss',
16595 L: 'DD/MM/YYYY',
16596 LL: 'D MMMM YYYY',
16597 LLL: 'D MMMM YYYY เวลา H:mm',
16598 LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
16599 },
16600 meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
16601 isPM: function (input) {
16602 return input === 'หลังเที่ยง';
16603 },
16604 meridiem: function (hour, minute, isLower) {
16605 if (hour < 12) {
16606 return 'ก่อนเที่ยง';
16607 } else {
16608 return 'หลังเที่ยง';
16609 }
16610 },
16611 calendar: {
16612 sameDay: '[วันนี้ เวลา] LT',
16613 nextDay: '[พรุ่งนี้ เวลา] LT',
16614 nextWeek: 'dddd[หน้า เวลา] LT',
16615 lastDay: '[เมื่อวานนี้ เวลา] LT',
16616 lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
16617 sameElse: 'L',
16618 },
16619 relativeTime: {
16620 future: 'อีก %s',
16621 past: '%sที่แล้ว',
16622 s: 'ไม่กี่วินาที',
16623 ss: '%d วินาที',
16624 m: '1 นาที',
16625 mm: '%d นาที',
16626 h: '1 ชั่วโมง',
16627 hh: '%d ชั่วโมง',
16628 d: '1 วัน',
16629 dd: '%d วัน',
16630 w: '1 สัปดาห์',
16631 ww: '%d สัปดาห์',
16632 M: '1 เดือน',
16633 MM: '%d เดือน',
16634 y: '1 ปี',
16635 yy: '%d ปี',
16636 },
16637 });
16638
16639 //! moment.js locale configuration
16640
16641 var suffixes$4 = {
16642 1: "'inji",
16643 5: "'inji",
16644 8: "'inji",
16645 70: "'inji",
16646 80: "'inji",
16647 2: "'nji",
16648 7: "'nji",
16649 20: "'nji",
16650 50: "'nji",
16651 3: "'ünji",
16652 4: "'ünji",
16653 100: "'ünji",
16654 6: "'njy",
16655 9: "'unjy",
16656 10: "'unjy",
16657 30: "'unjy",
16658 60: "'ynjy",
16659 90: "'ynjy",
16660 };
16661
16662 hooks.defineLocale('tk', {
16663 months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
16664 '_'
16665 ),
16666 monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
16667 weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
16668 '_'
16669 ),
16670 weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
16671 weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
16672 longDateFormat: {
16673 LT: 'HH:mm',
16674 LTS: 'HH:mm:ss',
16675 L: 'DD.MM.YYYY',
16676 LL: 'D MMMM YYYY',
16677 LLL: 'D MMMM YYYY HH:mm',
16678 LLLL: 'dddd, D MMMM YYYY HH:mm',
16679 },
16680 calendar: {
16681 sameDay: '[bugün sagat] LT',
16682 nextDay: '[ertir sagat] LT',
16683 nextWeek: '[indiki] dddd [sagat] LT',
16684 lastDay: '[düýn] LT',
16685 lastWeek: '[geçen] dddd [sagat] LT',
16686 sameElse: 'L',
16687 },
16688 relativeTime: {
16689 future: '%s soň',
16690 past: '%s öň',
16691 s: 'birnäçe sekunt',
16692 m: 'bir minut',
16693 mm: '%d minut',
16694 h: 'bir sagat',
16695 hh: '%d sagat',
16696 d: 'bir gün',
16697 dd: '%d gün',
16698 M: 'bir aý',
16699 MM: '%d aý',
16700 y: 'bir ýyl',
16701 yy: '%d ýyl',
16702 },
16703 ordinal: function (number, period) {
16704 switch (period) {
16705 case 'd':
16706 case 'D':
16707 case 'Do':
16708 case 'DD':
16709 return number;
16710 default:
16711 if (number === 0) {
16712 // special case for zero
16713 return number + "'unjy";
16714 }
16715 var a = number % 10,
16716 b = (number % 100) - a,
16717 c = number >= 100 ? 100 : null;
16718 return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
16719 }
16720 },
16721 week: {
16722 dow: 1, // Monday is the first day of the week.
16723 doy: 7, // The week that contains Jan 7th is the first week of the year.
16724 },
16725 });
16726
16727 //! moment.js locale configuration
16728
16729 hooks.defineLocale('tl-ph', {
16730 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
16731 '_'
16732 ),
16733 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
16734 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
16735 '_'
16736 ),
16737 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
16738 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
16739 longDateFormat: {
16740 LT: 'HH:mm',
16741 LTS: 'HH:mm:ss',
16742 L: 'MM/D/YYYY',
16743 LL: 'MMMM D, YYYY',
16744 LLL: 'MMMM D, YYYY HH:mm',
16745 LLLL: 'dddd, MMMM DD, YYYY HH:mm',
16746 },
16747 calendar: {
16748 sameDay: 'LT [ngayong araw]',
16749 nextDay: '[Bukas ng] LT',
16750 nextWeek: 'LT [sa susunod na] dddd',
16751 lastDay: 'LT [kahapon]',
16752 lastWeek: 'LT [noong nakaraang] dddd',
16753 sameElse: 'L',
16754 },
16755 relativeTime: {
16756 future: 'sa loob ng %s',
16757 past: '%s ang nakalipas',
16758 s: 'ilang segundo',
16759 ss: '%d segundo',
16760 m: 'isang minuto',
16761 mm: '%d minuto',
16762 h: 'isang oras',
16763 hh: '%d oras',
16764 d: 'isang araw',
16765 dd: '%d araw',
16766 M: 'isang buwan',
16767 MM: '%d buwan',
16768 y: 'isang taon',
16769 yy: '%d taon',
16770 },
16771 dayOfMonthOrdinalParse: /\d{1,2}/,
16772 ordinal: function (number) {
16773 return number;
16774 },
16775 week: {
16776 dow: 1, // Monday is the first day of the week.
16777 doy: 4, // The week that contains Jan 4th is the first week of the year.
16778 },
16779 });
16780
16781 //! moment.js locale configuration
16782
16783 var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
16784
16785 function translateFuture(output) {
16786 var time = output;
16787 time =
16788 output.indexOf('jaj') !== -1
16789 ? time.slice(0, -3) + 'leS'
16790 : output.indexOf('jar') !== -1
16791 ? time.slice(0, -3) + 'waQ'
16792 : output.indexOf('DIS') !== -1
16793 ? time.slice(0, -3) + 'nem'
16794 : time + ' pIq';
16795 return time;
16796 }
16797
16798 function translatePast(output) {
16799 var time = output;
16800 time =
16801 output.indexOf('jaj') !== -1
16802 ? time.slice(0, -3) + 'Hu’'
16803 : output.indexOf('jar') !== -1
16804 ? time.slice(0, -3) + 'wen'
16805 : output.indexOf('DIS') !== -1
16806 ? time.slice(0, -3) + 'ben'
16807 : time + ' ret';
16808 return time;
16809 }
16810
16811 function translate$a(number, withoutSuffix, string, isFuture) {
16812 var numberNoun = numberAsNoun(number);
16813 switch (string) {
16814 case 'ss':
16815 return numberNoun + ' lup';
16816 case 'mm':
16817 return numberNoun + ' tup';
16818 case 'hh':
16819 return numberNoun + ' rep';
16820 case 'dd':
16821 return numberNoun + ' jaj';
16822 case 'MM':
16823 return numberNoun + ' jar';
16824 case 'yy':
16825 return numberNoun + ' DIS';
16826 }
16827 }
16828
16829 function numberAsNoun(number) {
16830 var hundred = Math.floor((number % 1000) / 100),
16831 ten = Math.floor((number % 100) / 10),
16832 one = number % 10,
16833 word = '';
16834 if (hundred > 0) {
16835 word += numbersNouns[hundred] + 'vatlh';
16836 }
16837 if (ten > 0) {
16838 word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
16839 }
16840 if (one > 0) {
16841 word += (word !== '' ? ' ' : '') + numbersNouns[one];
16842 }
16843 return word === '' ? 'pagh' : word;
16844 }
16845
16846 hooks.defineLocale('tlh', {
16847 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(
16848 '_'
16849 ),
16850 monthsShort:
16851 '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(
16852 '_'
16853 ),
16854 monthsParseExact: true,
16855 weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
16856 '_'
16857 ),
16858 weekdaysShort:
16859 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
16860 weekdaysMin:
16861 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
16862 longDateFormat: {
16863 LT: 'HH:mm',
16864 LTS: 'HH:mm:ss',
16865 L: 'DD.MM.YYYY',
16866 LL: 'D MMMM YYYY',
16867 LLL: 'D MMMM YYYY HH:mm',
16868 LLLL: 'dddd, D MMMM YYYY HH:mm',
16869 },
16870 calendar: {
16871 sameDay: '[DaHjaj] LT',
16872 nextDay: '[wa’leS] LT',
16873 nextWeek: 'LLL',
16874 lastDay: '[wa’Hu’] LT',
16875 lastWeek: 'LLL',
16876 sameElse: 'L',
16877 },
16878 relativeTime: {
16879 future: translateFuture,
16880 past: translatePast,
16881 s: 'puS lup',
16882 ss: translate$a,
16883 m: 'wa’ tup',
16884 mm: translate$a,
16885 h: 'wa’ rep',
16886 hh: translate$a,
16887 d: 'wa’ jaj',
16888 dd: translate$a,
16889 M: 'wa’ jar',
16890 MM: translate$a,
16891 y: 'wa’ DIS',
16892 yy: translate$a,
16893 },
16894 dayOfMonthOrdinalParse: /\d{1,2}\./,
16895 ordinal: '%d.',
16896 week: {
16897 dow: 1, // Monday is the first day of the week.
16898 doy: 4, // The week that contains Jan 4th is the first week of the year.
16899 },
16900 });
16901
16902 //! moment.js locale configuration
16903
16904 var suffixes$5 = {
16905 1: "'inci",
16906 5: "'inci",
16907 8: "'inci",
16908 70: "'inci",
16909 80: "'inci",
16910 2: "'nci",
16911 7: "'nci",
16912 20: "'nci",
16913 50: "'nci",
16914 3: "'üncü",
16915 4: "'üncü",
16916 100: "'üncü",
16917 6: "'ncı",
16918 9: "'uncu",
16919 10: "'uncu",
16920 30: "'uncu",
16921 60: "'ıncı",
16922 90: "'ıncı",
16923 };
16924
16925 hooks.defineLocale('tr', {
16926 months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
16927 '_'
16928 ),
16929 monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
16930 weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
16931 '_'
16932 ),
16933 weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
16934 weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
16935 meridiem: function (hours, minutes, isLower) {
16936 if (hours < 12) {
16937 return isLower ? 'öö' : 'ÖÖ';
16938 } else {
16939 return isLower ? 'ös' : 'ÖS';
16940 }
16941 },
16942 meridiemParse: /öö|ÖÖ|ös|ÖS/,
16943 isPM: function (input) {
16944 return input === 'ös' || input === 'ÖS';
16945 },
16946 longDateFormat: {
16947 LT: 'HH:mm',
16948 LTS: 'HH:mm:ss',
16949 L: 'DD.MM.YYYY',
16950 LL: 'D MMMM YYYY',
16951 LLL: 'D MMMM YYYY HH:mm',
16952 LLLL: 'dddd, D MMMM YYYY HH:mm',
16953 },
16954 calendar: {
16955 sameDay: '[bugün saat] LT',
16956 nextDay: '[yarın saat] LT',
16957 nextWeek: '[gelecek] dddd [saat] LT',
16958 lastDay: '[dün] LT',
16959 lastWeek: '[geçen] dddd [saat] LT',
16960 sameElse: 'L',
16961 },
16962 relativeTime: {
16963 future: '%s sonra',
16964 past: '%s önce',
16965 s: 'birkaç saniye',
16966 ss: '%d saniye',
16967 m: 'bir dakika',
16968 mm: '%d dakika',
16969 h: 'bir saat',
16970 hh: '%d saat',
16971 d: 'bir gün',
16972 dd: '%d gün',
16973 w: 'bir hafta',
16974 ww: '%d hafta',
16975 M: 'bir ay',
16976 MM: '%d ay',
16977 y: 'bir yıl',
16978 yy: '%d yıl',
16979 },
16980 ordinal: function (number, period) {
16981 switch (period) {
16982 case 'd':
16983 case 'D':
16984 case 'Do':
16985 case 'DD':
16986 return number;
16987 default:
16988 if (number === 0) {
16989 // special case for zero
16990 return number + "'ıncı";
16991 }
16992 var a = number % 10,
16993 b = (number % 100) - a,
16994 c = number >= 100 ? 100 : null;
16995 return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
16996 }
16997 },
16998 week: {
16999 dow: 1, // Monday is the first day of the week.
17000 doy: 7, // The week that contains Jan 7th is the first week of the year.
17001 },
17002 });
17003
17004 //! moment.js locale configuration
17005
17006 // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
17007 // This is currently too difficult (maybe even impossible) to add.
17008 hooks.defineLocale('tzl', {
17009 months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
17010 '_'
17011 ),
17012 monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
17013 weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
17014 weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
17015 weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
17016 longDateFormat: {
17017 LT: 'HH.mm',
17018 LTS: 'HH.mm.ss',
17019 L: 'DD.MM.YYYY',
17020 LL: 'D. MMMM [dallas] YYYY',
17021 LLL: 'D. MMMM [dallas] YYYY HH.mm',
17022 LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
17023 },
17024 meridiemParse: /d\'o|d\'a/i,
17025 isPM: function (input) {
17026 return "d'o" === input.toLowerCase();
17027 },
17028 meridiem: function (hours, minutes, isLower) {
17029 if (hours > 11) {
17030 return isLower ? "d'o" : "D'O";
17031 } else {
17032 return isLower ? "d'a" : "D'A";
17033 }
17034 },
17035 calendar: {
17036 sameDay: '[oxhi à] LT',
17037 nextDay: '[demà à] LT',
17038 nextWeek: 'dddd [à] LT',
17039 lastDay: '[ieiri à] LT',
17040 lastWeek: '[sür el] dddd [lasteu à] LT',
17041 sameElse: 'L',
17042 },
17043 relativeTime: {
17044 future: 'osprei %s',
17045 past: 'ja%s',
17046 s: processRelativeTime$8,
17047 ss: processRelativeTime$8,
17048 m: processRelativeTime$8,
17049 mm: processRelativeTime$8,
17050 h: processRelativeTime$8,
17051 hh: processRelativeTime$8,
17052 d: processRelativeTime$8,
17053 dd: processRelativeTime$8,
17054 M: processRelativeTime$8,
17055 MM: processRelativeTime$8,
17056 y: processRelativeTime$8,
17057 yy: processRelativeTime$8,
17058 },
17059 dayOfMonthOrdinalParse: /\d{1,2}\./,
17060 ordinal: '%d.',
17061 week: {
17062 dow: 1, // Monday is the first day of the week.
17063 doy: 4, // The week that contains Jan 4th is the first week of the year.
17064 },
17065 });
17066
17067 function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
17068 var format = {
17069 s: ['viensas secunds', "'iensas secunds"],
17070 ss: [number + ' secunds', '' + number + ' secunds'],
17071 m: ["'n míut", "'iens míut"],
17072 mm: [number + ' míuts', '' + number + ' míuts'],
17073 h: ["'n þora", "'iensa þora"],
17074 hh: [number + ' þoras', '' + number + ' þoras'],
17075 d: ["'n ziua", "'iensa ziua"],
17076 dd: [number + ' ziuas', '' + number + ' ziuas'],
17077 M: ["'n mes", "'iens mes"],
17078 MM: [number + ' mesen', '' + number + ' mesen'],
17079 y: ["'n ar", "'iens ar"],
17080 yy: [number + ' ars', '' + number + ' ars'],
17081 };
17082 return isFuture
17083 ? format[key][0]
17084 : withoutSuffix
17085 ? format[key][0]
17086 : format[key][1];
17087 }
17088
17089 //! moment.js locale configuration
17090
17091 hooks.defineLocale('tzm-latn', {
17092 months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
17093 '_'
17094 ),
17095 monthsShort:
17096 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
17097 '_'
17098 ),
17099 weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
17100 weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
17101 weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
17102 longDateFormat: {
17103 LT: 'HH:mm',
17104 LTS: 'HH:mm:ss',
17105 L: 'DD/MM/YYYY',
17106 LL: 'D MMMM YYYY',
17107 LLL: 'D MMMM YYYY HH:mm',
17108 LLLL: 'dddd D MMMM YYYY HH:mm',
17109 },
17110 calendar: {
17111 sameDay: '[asdkh g] LT',
17112 nextDay: '[aska g] LT',
17113 nextWeek: 'dddd [g] LT',
17114 lastDay: '[assant g] LT',
17115 lastWeek: 'dddd [g] LT',
17116 sameElse: 'L',
17117 },
17118 relativeTime: {
17119 future: 'dadkh s yan %s',
17120 past: 'yan %s',
17121 s: 'imik',
17122 ss: '%d imik',
17123 m: 'minuḍ',
17124 mm: '%d minuḍ',
17125 h: 'saɛa',
17126 hh: '%d tassaɛin',
17127 d: 'ass',
17128 dd: '%d ossan',
17129 M: 'ayowr',
17130 MM: '%d iyyirn',
17131 y: 'asgas',
17132 yy: '%d isgasn',
17133 },
17134 week: {
17135 dow: 6, // Saturday is the first day of the week.
17136 doy: 12, // The week that contains Jan 12th is the first week of the year.
17137 },
17138 });
17139
17140 //! moment.js locale configuration
17141
17142 hooks.defineLocale('tzm', {
17143 months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
17144 '_'
17145 ),
17146 monthsShort:
17147 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
17148 '_'
17149 ),
17150 weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17151 weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17152 weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17153 longDateFormat: {
17154 LT: 'HH:mm',
17155 LTS: 'HH:mm:ss',
17156 L: 'DD/MM/YYYY',
17157 LL: 'D MMMM YYYY',
17158 LLL: 'D MMMM YYYY HH:mm',
17159 LLLL: 'dddd D MMMM YYYY HH:mm',
17160 },
17161 calendar: {
17162 sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
17163 nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
17164 nextWeek: 'dddd [ⴴ] LT',
17165 lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
17166 lastWeek: 'dddd [ⴴ] LT',
17167 sameElse: 'L',
17168 },
17169 relativeTime: {
17170 future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
17171 past: 'ⵢⴰⵏ %s',
17172 s: 'ⵉⵎⵉⴽ',
17173 ss: '%d ⵉⵎⵉⴽ',
17174 m: 'ⵎⵉⵏⵓⴺ',
17175 mm: '%d ⵎⵉⵏⵓⴺ',
17176 h: 'ⵙⴰⵄⴰ',
17177 hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
17178 d: 'ⴰⵙⵙ',
17179 dd: '%d oⵙⵙⴰⵏ',
17180 M: 'ⴰⵢoⵓⵔ',
17181 MM: '%d ⵉⵢⵢⵉⵔⵏ',
17182 y: 'ⴰⵙⴳⴰⵙ',
17183 yy: '%d ⵉⵙⴳⴰⵙⵏ',
17184 },
17185 week: {
17186 dow: 6, // Saturday is the first day of the week.
17187 doy: 12, // The week that contains Jan 12th is the first week of the year.
17188 },
17189 });
17190
17191 //! moment.js locale configuration
17192
17193 hooks.defineLocale('ug-cn', {
17194 months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
17195 '_'
17196 ),
17197 monthsShort:
17198 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
17199 '_'
17200 ),
17201 weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
17202 '_'
17203 ),
17204 weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
17205 weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
17206 longDateFormat: {
17207 LT: 'HH:mm',
17208 LTS: 'HH:mm:ss',
17209 L: 'YYYY-MM-DD',
17210 LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
17211 LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
17212 LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
17213 },
17214 meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
17215 meridiemHour: function (hour, meridiem) {
17216 if (hour === 12) {
17217 hour = 0;
17218 }
17219 if (
17220 meridiem === 'يېرىم كېچە' ||
17221 meridiem === 'سەھەر' ||
17222 meridiem === 'چۈشتىن بۇرۇن'
17223 ) {
17224 return hour;
17225 } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
17226 return hour + 12;
17227 } else {
17228 return hour >= 11 ? hour : hour + 12;
17229 }
17230 },
17231 meridiem: function (hour, minute, isLower) {
17232 var hm = hour * 100 + minute;
17233 if (hm < 600) {
17234 return 'يېرىم كېچە';
17235 } else if (hm < 900) {
17236 return 'سەھەر';
17237 } else if (hm < 1130) {
17238 return 'چۈشتىن بۇرۇن';
17239 } else if (hm < 1230) {
17240 return 'چۈش';
17241 } else if (hm < 1800) {
17242 return 'چۈشتىن كېيىن';
17243 } else {
17244 return 'كەچ';
17245 }
17246 },
17247 calendar: {
17248 sameDay: '[بۈگۈن سائەت] LT',
17249 nextDay: '[ئەتە سائەت] LT',
17250 nextWeek: '[كېلەركى] dddd [سائەت] LT',
17251 lastDay: '[تۆنۈگۈن] LT',
17252 lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
17253 sameElse: 'L',
17254 },
17255 relativeTime: {
17256 future: '%s كېيىن',
17257 past: '%s بۇرۇن',
17258 s: 'نەچچە سېكونت',
17259 ss: '%d سېكونت',
17260 m: 'بىر مىنۇت',
17261 mm: '%d مىنۇت',
17262 h: 'بىر سائەت',
17263 hh: '%d سائەت',
17264 d: 'بىر كۈن',
17265 dd: '%d كۈن',
17266 M: 'بىر ئاي',
17267 MM: '%d ئاي',
17268 y: 'بىر يىل',
17269 yy: '%d يىل',
17270 },
17271
17272 dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
17273 ordinal: function (number, period) {
17274 switch (period) {
17275 case 'd':
17276 case 'D':
17277 case 'DDD':
17278 return number + '-كۈنى';
17279 case 'w':
17280 case 'W':
17281 return number + '-ھەپتە';
17282 default:
17283 return number;
17284 }
17285 },
17286 preparse: function (string) {
17287 return string.replace(/،/g, ',');
17288 },
17289 postformat: function (string) {
17290 return string.replace(/,/g, '،');
17291 },
17292 week: {
17293 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17294 dow: 1, // Monday is the first day of the week.
17295 doy: 7, // The week that contains Jan 1st is the first week of the year.
17296 },
17297 });
17298
17299 //! moment.js locale configuration
17300
17301 function plural$6(word, num) {
17302 var forms = word.split('_');
17303 return num % 10 === 1 && num % 100 !== 11
17304 ? forms[0]
17305 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
17306 ? forms[1]
17307 : forms[2];
17308 }
17309 function relativeTimeWithPlural$4(number, withoutSuffix, key) {
17310 var format = {
17311 ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
17312 mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
17313 hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
17314 dd: 'день_дні_днів',
17315 MM: 'місяць_місяці_місяців',
17316 yy: 'рік_роки_років',
17317 };
17318 if (key === 'm') {
17319 return withoutSuffix ? 'хвилина' : 'хвилину';
17320 } else if (key === 'h') {
17321 return withoutSuffix ? 'година' : 'годину';
17322 } else {
17323 return number + ' ' + plural$6(format[key], +number);
17324 }
17325 }
17326 function weekdaysCaseReplace(m, format) {
17327 var weekdays = {
17328 nominative:
17329 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
17330 '_'
17331 ),
17332 accusative:
17333 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
17334 '_'
17335 ),
17336 genitive:
17337 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
17338 '_'
17339 ),
17340 },
17341 nounCase;
17342
17343 if (m === true) {
17344 return weekdays['nominative']
17345 .slice(1, 7)
17346 .concat(weekdays['nominative'].slice(0, 1));
17347 }
17348 if (!m) {
17349 return weekdays['nominative'];
17350 }
17351
17352 nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
17353 ? 'accusative'
17354 : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
17355 ? 'genitive'
17356 : 'nominative';
17357 return weekdays[nounCase][m.day()];
17358 }
17359 function processHoursFunction(str) {
17360 return function () {
17361 return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
17362 };
17363 }
17364
17365 hooks.defineLocale('uk', {
17366 months: {
17367 format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
17368 '_'
17369 ),
17370 standalone:
17371 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
17372 '_'
17373 ),
17374 },
17375 monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
17376 '_'
17377 ),
17378 weekdays: weekdaysCaseReplace,
17379 weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17380 weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17381 longDateFormat: {
17382 LT: 'HH:mm',
17383 LTS: 'HH:mm:ss',
17384 L: 'DD.MM.YYYY',
17385 LL: 'D MMMM YYYY р.',
17386 LLL: 'D MMMM YYYY р., HH:mm',
17387 LLLL: 'dddd, D MMMM YYYY р., HH:mm',
17388 },
17389 calendar: {
17390 sameDay: processHoursFunction('[Сьогодні '),
17391 nextDay: processHoursFunction('[Завтра '),
17392 lastDay: processHoursFunction('[Вчора '),
17393 nextWeek: processHoursFunction('[У] dddd ['),
17394 lastWeek: function () {
17395 switch (this.day()) {
17396 case 0:
17397 case 3:
17398 case 5:
17399 case 6:
17400 return processHoursFunction('[Минулої] dddd [').call(this);
17401 case 1:
17402 case 2:
17403 case 4:
17404 return processHoursFunction('[Минулого] dddd [').call(this);
17405 }
17406 },
17407 sameElse: 'L',
17408 },
17409 relativeTime: {
17410 future: 'за %s',
17411 past: '%s тому',
17412 s: 'декілька секунд',
17413 ss: relativeTimeWithPlural$4,
17414 m: relativeTimeWithPlural$4,
17415 mm: relativeTimeWithPlural$4,
17416 h: 'годину',
17417 hh: relativeTimeWithPlural$4,
17418 d: 'день',
17419 dd: relativeTimeWithPlural$4,
17420 M: 'місяць',
17421 MM: relativeTimeWithPlural$4,
17422 y: 'рік',
17423 yy: relativeTimeWithPlural$4,
17424 },
17425 // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
17426 meridiemParse: /ночі|ранку|дня|вечора/,
17427 isPM: function (input) {
17428 return /^(дня|вечора)$/.test(input);
17429 },
17430 meridiem: function (hour, minute, isLower) {
17431 if (hour < 4) {
17432 return 'ночі';
17433 } else if (hour < 12) {
17434 return 'ранку';
17435 } else if (hour < 17) {
17436 return 'дня';
17437 } else {
17438 return 'вечора';
17439 }
17440 },
17441 dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
17442 ordinal: function (number, period) {
17443 switch (period) {
17444 case 'M':
17445 case 'd':
17446 case 'DDD':
17447 case 'w':
17448 case 'W':
17449 return number + '-й';
17450 case 'D':
17451 return number + '-го';
17452 default:
17453 return number;
17454 }
17455 },
17456 week: {
17457 dow: 1, // Monday is the first day of the week.
17458 doy: 7, // The week that contains Jan 7th is the first week of the year.
17459 },
17460 });
17461
17462 //! moment.js locale configuration
17463
17464 var months$b = [
17465 'جنوری',
17466 'فروری',
17467 'مارچ',
17468 'اپریل',
17469 'مئی',
17470 'جون',
17471 'جولائی',
17472 'اگست',
17473 'ستمبر',
17474 'اکتوبر',
17475 'نومبر',
17476 'دسمبر',
17477 ],
17478 days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
17479
17480 hooks.defineLocale('ur', {
17481 months: months$b,
17482 monthsShort: months$b,
17483 weekdays: days$2,
17484 weekdaysShort: days$2,
17485 weekdaysMin: days$2,
17486 longDateFormat: {
17487 LT: 'HH:mm',
17488 LTS: 'HH:mm:ss',
17489 L: 'DD/MM/YYYY',
17490 LL: 'D MMMM YYYY',
17491 LLL: 'D MMMM YYYY HH:mm',
17492 LLLL: 'dddd، D MMMM YYYY HH:mm',
17493 },
17494 meridiemParse: /صبح|شام/,
17495 isPM: function (input) {
17496 return 'شام' === input;
17497 },
17498 meridiem: function (hour, minute, isLower) {
17499 if (hour < 12) {
17500 return 'صبح';
17501 }
17502 return 'شام';
17503 },
17504 calendar: {
17505 sameDay: '[آج بوقت] LT',
17506 nextDay: '[کل بوقت] LT',
17507 nextWeek: 'dddd [بوقت] LT',
17508 lastDay: '[گذشتہ روز بوقت] LT',
17509 lastWeek: '[گذشتہ] dddd [بوقت] LT',
17510 sameElse: 'L',
17511 },
17512 relativeTime: {
17513 future: '%s بعد',
17514 past: '%s قبل',
17515 s: 'چند سیکنڈ',
17516 ss: '%d سیکنڈ',
17517 m: 'ایک منٹ',
17518 mm: '%d منٹ',
17519 h: 'ایک گھنٹہ',
17520 hh: '%d گھنٹے',
17521 d: 'ایک دن',
17522 dd: '%d دن',
17523 M: 'ایک ماہ',
17524 MM: '%d ماہ',
17525 y: 'ایک سال',
17526 yy: '%d سال',
17527 },
17528 preparse: function (string) {
17529 return string.replace(/،/g, ',');
17530 },
17531 postformat: function (string) {
17532 return string.replace(/,/g, '،');
17533 },
17534 week: {
17535 dow: 1, // Monday is the first day of the week.
17536 doy: 4, // The week that contains Jan 4th is the first week of the year.
17537 },
17538 });
17539
17540 //! moment.js locale configuration
17541
17542 hooks.defineLocale('uz-latn', {
17543 months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
17544 '_'
17545 ),
17546 monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
17547 weekdays:
17548 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
17549 '_'
17550 ),
17551 weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
17552 weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
17553 longDateFormat: {
17554 LT: 'HH:mm',
17555 LTS: 'HH:mm:ss',
17556 L: 'DD/MM/YYYY',
17557 LL: 'D MMMM YYYY',
17558 LLL: 'D MMMM YYYY HH:mm',
17559 LLLL: 'D MMMM YYYY, dddd HH:mm',
17560 },
17561 calendar: {
17562 sameDay: '[Bugun soat] LT [da]',
17563 nextDay: '[Ertaga] LT [da]',
17564 nextWeek: 'dddd [kuni soat] LT [da]',
17565 lastDay: '[Kecha soat] LT [da]',
17566 lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
17567 sameElse: 'L',
17568 },
17569 relativeTime: {
17570 future: 'Yaqin %s ichida',
17571 past: 'Bir necha %s oldin',
17572 s: 'soniya',
17573 ss: '%d soniya',
17574 m: 'bir daqiqa',
17575 mm: '%d daqiqa',
17576 h: 'bir soat',
17577 hh: '%d soat',
17578 d: 'bir kun',
17579 dd: '%d kun',
17580 M: 'bir oy',
17581 MM: '%d oy',
17582 y: 'bir yil',
17583 yy: '%d yil',
17584 },
17585 week: {
17586 dow: 1, // Monday is the first day of the week.
17587 doy: 7, // The week that contains Jan 7th is the first week of the year.
17588 },
17589 });
17590
17591 //! moment.js locale configuration
17592
17593 hooks.defineLocale('uz', {
17594 months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
17595 '_'
17596 ),
17597 monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
17598 weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
17599 weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
17600 weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
17601 longDateFormat: {
17602 LT: 'HH:mm',
17603 LTS: 'HH:mm:ss',
17604 L: 'DD/MM/YYYY',
17605 LL: 'D MMMM YYYY',
17606 LLL: 'D MMMM YYYY HH:mm',
17607 LLLL: 'D MMMM YYYY, dddd HH:mm',
17608 },
17609 calendar: {
17610 sameDay: '[Бугун соат] LT [да]',
17611 nextDay: '[Эртага] LT [да]',
17612 nextWeek: 'dddd [куни соат] LT [да]',
17613 lastDay: '[Кеча соат] LT [да]',
17614 lastWeek: '[Утган] dddd [куни соат] LT [да]',
17615 sameElse: 'L',
17616 },
17617 relativeTime: {
17618 future: 'Якин %s ичида',
17619 past: 'Бир неча %s олдин',
17620 s: 'фурсат',
17621 ss: '%d фурсат',
17622 m: 'бир дакика',
17623 mm: '%d дакика',
17624 h: 'бир соат',
17625 hh: '%d соат',
17626 d: 'бир кун',
17627 dd: '%d кун',
17628 M: 'бир ой',
17629 MM: '%d ой',
17630 y: 'бир йил',
17631 yy: '%d йил',
17632 },
17633 week: {
17634 dow: 1, // Monday is the first day of the week.
17635 doy: 7, // The week that contains Jan 4th is the first week of the year.
17636 },
17637 });
17638
17639 //! moment.js locale configuration
17640
17641 hooks.defineLocale('vi', {
17642 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(
17643 '_'
17644 ),
17645 monthsShort:
17646 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
17647 '_'
17648 ),
17649 monthsParseExact: true,
17650 weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
17651 '_'
17652 ),
17653 weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17654 weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17655 weekdaysParseExact: true,
17656 meridiemParse: /sa|ch/i,
17657 isPM: function (input) {
17658 return /^ch$/i.test(input);
17659 },
17660 meridiem: function (hours, minutes, isLower) {
17661 if (hours < 12) {
17662 return isLower ? 'sa' : 'SA';
17663 } else {
17664 return isLower ? 'ch' : 'CH';
17665 }
17666 },
17667 longDateFormat: {
17668 LT: 'HH:mm',
17669 LTS: 'HH:mm:ss',
17670 L: 'DD/MM/YYYY',
17671 LL: 'D MMMM [năm] YYYY',
17672 LLL: 'D MMMM [năm] YYYY HH:mm',
17673 LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
17674 l: 'DD/M/YYYY',
17675 ll: 'D MMM YYYY',
17676 lll: 'D MMM YYYY HH:mm',
17677 llll: 'ddd, D MMM YYYY HH:mm',
17678 },
17679 calendar: {
17680 sameDay: '[Hôm nay lúc] LT',
17681 nextDay: '[Ngày mai lúc] LT',
17682 nextWeek: 'dddd [tuần tới lúc] LT',
17683 lastDay: '[Hôm qua lúc] LT',
17684 lastWeek: 'dddd [tuần trước lúc] LT',
17685 sameElse: 'L',
17686 },
17687 relativeTime: {
17688 future: '%s tới',
17689 past: '%s trước',
17690 s: 'vài giây',
17691 ss: '%d giây',
17692 m: 'một phút',
17693 mm: '%d phút',
17694 h: 'một giờ',
17695 hh: '%d giờ',
17696 d: 'một ngày',
17697 dd: '%d ngày',
17698 w: 'một tuần',
17699 ww: '%d tuần',
17700 M: 'một tháng',
17701 MM: '%d tháng',
17702 y: 'một năm',
17703 yy: '%d năm',
17704 },
17705 dayOfMonthOrdinalParse: /\d{1,2}/,
17706 ordinal: function (number) {
17707 return number;
17708 },
17709 week: {
17710 dow: 1, // Monday is the first day of the week.
17711 doy: 4, // The week that contains Jan 4th is the first week of the year.
17712 },
17713 });
17714
17715 //! moment.js locale configuration
17716
17717 hooks.defineLocale('x-pseudo', {
17718 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(
17719 '_'
17720 ),
17721 monthsShort:
17722 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
17723 '_'
17724 ),
17725 monthsParseExact: true,
17726 weekdays:
17727 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
17728 '_'
17729 ),
17730 weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
17731 weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
17732 weekdaysParseExact: true,
17733 longDateFormat: {
17734 LT: 'HH:mm',
17735 L: 'DD/MM/YYYY',
17736 LL: 'D MMMM YYYY',
17737 LLL: 'D MMMM YYYY HH:mm',
17738 LLLL: 'dddd, D MMMM YYYY HH:mm',
17739 },
17740 calendar: {
17741 sameDay: '[T~ódá~ý át] LT',
17742 nextDay: '[T~ómó~rró~w át] LT',
17743 nextWeek: 'dddd [át] LT',
17744 lastDay: '[Ý~ést~érdá~ý át] LT',
17745 lastWeek: '[L~ást] dddd [át] LT',
17746 sameElse: 'L',
17747 },
17748 relativeTime: {
17749 future: 'í~ñ %s',
17750 past: '%s á~gó',
17751 s: 'á ~féw ~sécó~ñds',
17752 ss: '%d s~écóñ~ds',
17753 m: 'á ~míñ~úté',
17754 mm: '%d m~íñú~tés',
17755 h: 'á~ñ hó~úr',
17756 hh: '%d h~óúrs',
17757 d: 'á ~dáý',
17758 dd: '%d d~áýs',
17759 M: 'á ~móñ~th',
17760 MM: '%d m~óñt~hs',
17761 y: 'á ~ýéár',
17762 yy: '%d ý~éárs',
17763 },
17764 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
17765 ordinal: function (number) {
17766 var b = number % 10,
17767 output =
17768 ~~((number % 100) / 10) === 1
17769 ? 'th'
17770 : b === 1
17771 ? 'st'
17772 : b === 2
17773 ? 'nd'
17774 : b === 3
17775 ? 'rd'
17776 : 'th';
17777 return number + output;
17778 },
17779 week: {
17780 dow: 1, // Monday is the first day of the week.
17781 doy: 4, // The week that contains Jan 4th is the first week of the year.
17782 },
17783 });
17784
17785 //! moment.js locale configuration
17786
17787 hooks.defineLocale('yo', {
17788 months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
17789 '_'
17790 ),
17791 monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
17792 weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
17793 weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
17794 weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
17795 longDateFormat: {
17796 LT: 'h:mm A',
17797 LTS: 'h:mm:ss A',
17798 L: 'DD/MM/YYYY',
17799 LL: 'D MMMM YYYY',
17800 LLL: 'D MMMM YYYY h:mm A',
17801 LLLL: 'dddd, D MMMM YYYY h:mm A',
17802 },
17803 calendar: {
17804 sameDay: '[Ònì ni] LT',
17805 nextDay: '[Ọ̀la ni] LT',
17806 nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
17807 lastDay: '[Àna ni] LT',
17808 lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
17809 sameElse: 'L',
17810 },
17811 relativeTime: {
17812 future: 'ní %s',
17813 past: '%s kọjá',
17814 s: 'ìsẹjú aayá die',
17815 ss: 'aayá %d',
17816 m: 'ìsẹjú kan',
17817 mm: 'ìsẹjú %d',
17818 h: 'wákati kan',
17819 hh: 'wákati %d',
17820 d: 'ọjọ́ kan',
17821 dd: 'ọjọ́ %d',
17822 M: 'osù kan',
17823 MM: 'osù %d',
17824 y: 'ọdún kan',
17825 yy: 'ọdún %d',
17826 },
17827 dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
17828 ordinal: 'ọjọ́ %d',
17829 week: {
17830 dow: 1, // Monday is the first day of the week.
17831 doy: 4, // The week that contains Jan 4th is the first week of the year.
17832 },
17833 });
17834
17835 //! moment.js locale configuration
17836
17837 hooks.defineLocale('zh-cn', {
17838 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17839 '_'
17840 ),
17841 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17842 '_'
17843 ),
17844 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17845 weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
17846 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17847 longDateFormat: {
17848 LT: 'HH:mm',
17849 LTS: 'HH:mm:ss',
17850 L: 'YYYY/MM/DD',
17851 LL: 'YYYY年M月D日',
17852 LLL: 'YYYY年M月D日Ah点mm分',
17853 LLLL: 'YYYY年M月D日ddddAh点mm分',
17854 l: 'YYYY/M/D',
17855 ll: 'YYYY年M月D日',
17856 lll: 'YYYY年M月D日 HH:mm',
17857 llll: 'YYYY年M月D日dddd HH:mm',
17858 },
17859 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17860 meridiemHour: function (hour, meridiem) {
17861 if (hour === 12) {
17862 hour = 0;
17863 }
17864 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17865 return hour;
17866 } else if (meridiem === '下午' || meridiem === '晚上') {
17867 return hour + 12;
17868 } else {
17869 // '中午'
17870 return hour >= 11 ? hour : hour + 12;
17871 }
17872 },
17873 meridiem: function (hour, minute, isLower) {
17874 var hm = hour * 100 + minute;
17875 if (hm < 600) {
17876 return '凌晨';
17877 } else if (hm < 900) {
17878 return '早上';
17879 } else if (hm < 1130) {
17880 return '上午';
17881 } else if (hm < 1230) {
17882 return '中午';
17883 } else if (hm < 1800) {
17884 return '下午';
17885 } else {
17886 return '晚上';
17887 }
17888 },
17889 calendar: {
17890 sameDay: '[今天]LT',
17891 nextDay: '[明天]LT',
17892 nextWeek: function (now) {
17893 if (now.week() !== this.week()) {
17894 return '[下]dddLT';
17895 } else {
17896 return '[本]dddLT';
17897 }
17898 },
17899 lastDay: '[昨天]LT',
17900 lastWeek: function (now) {
17901 if (this.week() !== now.week()) {
17902 return '[上]dddLT';
17903 } else {
17904 return '[本]dddLT';
17905 }
17906 },
17907 sameElse: 'L',
17908 },
17909 dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
17910 ordinal: function (number, period) {
17911 switch (period) {
17912 case 'd':
17913 case 'D':
17914 case 'DDD':
17915 return number + '日';
17916 case 'M':
17917 return number + '月';
17918 case 'w':
17919 case 'W':
17920 return number + '周';
17921 default:
17922 return number;
17923 }
17924 },
17925 relativeTime: {
17926 future: '%s后',
17927 past: '%s前',
17928 s: '几秒',
17929 ss: '%d 秒',
17930 m: '1 分钟',
17931 mm: '%d 分钟',
17932 h: '1 小时',
17933 hh: '%d 小时',
17934 d: '1 天',
17935 dd: '%d 天',
17936 w: '1 周',
17937 ww: '%d 周',
17938 M: '1 个月',
17939 MM: '%d 个月',
17940 y: '1 年',
17941 yy: '%d 年',
17942 },
17943 week: {
17944 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17945 dow: 1, // Monday is the first day of the week.
17946 doy: 4, // The week that contains Jan 4th is the first week of the year.
17947 },
17948 });
17949
17950 //! moment.js locale configuration
17951
17952 hooks.defineLocale('zh-hk', {
17953 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17954 '_'
17955 ),
17956 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17957 '_'
17958 ),
17959 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17960 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17961 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17962 longDateFormat: {
17963 LT: 'HH:mm',
17964 LTS: 'HH:mm:ss',
17965 L: 'YYYY/MM/DD',
17966 LL: 'YYYY年M月D日',
17967 LLL: 'YYYY年M月D日 HH:mm',
17968 LLLL: 'YYYY年M月D日dddd HH:mm',
17969 l: 'YYYY/M/D',
17970 ll: 'YYYY年M月D日',
17971 lll: 'YYYY年M月D日 HH:mm',
17972 llll: 'YYYY年M月D日dddd HH:mm',
17973 },
17974 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17975 meridiemHour: function (hour, meridiem) {
17976 if (hour === 12) {
17977 hour = 0;
17978 }
17979 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17980 return hour;
17981 } else if (meridiem === '中午') {
17982 return hour >= 11 ? hour : hour + 12;
17983 } else if (meridiem === '下午' || meridiem === '晚上') {
17984 return hour + 12;
17985 }
17986 },
17987 meridiem: function (hour, minute, isLower) {
17988 var hm = hour * 100 + minute;
17989 if (hm < 600) {
17990 return '凌晨';
17991 } else if (hm < 900) {
17992 return '早上';
17993 } else if (hm < 1200) {
17994 return '上午';
17995 } else if (hm === 1200) {
17996 return '中午';
17997 } else if (hm < 1800) {
17998 return '下午';
17999 } else {
18000 return '晚上';
18001 }
18002 },
18003 calendar: {
18004 sameDay: '[今天]LT',
18005 nextDay: '[明天]LT',
18006 nextWeek: '[下]ddddLT',
18007 lastDay: '[昨天]LT',
18008 lastWeek: '[上]ddddLT',
18009 sameElse: 'L',
18010 },
18011 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
18012 ordinal: function (number, period) {
18013 switch (period) {
18014 case 'd':
18015 case 'D':
18016 case 'DDD':
18017 return number + '日';
18018 case 'M':
18019 return number + '月';
18020 case 'w':
18021 case 'W':
18022 return number + '週';
18023 default:
18024 return number;
18025 }
18026 },
18027 relativeTime: {
18028 future: '%s後',
18029 past: '%s前',
18030 s: '幾秒',
18031 ss: '%d 秒',
18032 m: '1 分鐘',
18033 mm: '%d 分鐘',
18034 h: '1 小時',
18035 hh: '%d 小時',
18036 d: '1 天',
18037 dd: '%d 天',
18038 M: '1 個月',
18039 MM: '%d 個月',
18040 y: '1 年',
18041 yy: '%d 年',
18042 },
18043 });
18044
18045 //! moment.js locale configuration
18046
18047 hooks.defineLocale('zh-mo', {
18048 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
18049 '_'
18050 ),
18051 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
18052 '_'
18053 ),
18054 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
18055 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
18056 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
18057 longDateFormat: {
18058 LT: 'HH:mm',
18059 LTS: 'HH:mm:ss',
18060 L: 'DD/MM/YYYY',
18061 LL: 'YYYY年M月D日',
18062 LLL: 'YYYY年M月D日 HH:mm',
18063 LLLL: 'YYYY年M月D日dddd HH:mm',
18064 l: 'D/M/YYYY',
18065 ll: 'YYYY年M月D日',
18066 lll: 'YYYY年M月D日 HH:mm',
18067 llll: 'YYYY年M月D日dddd HH:mm',
18068 },
18069 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
18070 meridiemHour: function (hour, meridiem) {
18071 if (hour === 12) {
18072 hour = 0;
18073 }
18074 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
18075 return hour;
18076 } else if (meridiem === '中午') {
18077 return hour >= 11 ? hour : hour + 12;
18078 } else if (meridiem === '下午' || meridiem === '晚上') {
18079 return hour + 12;
18080 }
18081 },
18082 meridiem: function (hour, minute, isLower) {
18083 var hm = hour * 100 + minute;
18084 if (hm < 600) {
18085 return '凌晨';
18086 } else if (hm < 900) {
18087 return '早上';
18088 } else if (hm < 1130) {
18089 return '上午';
18090 } else if (hm < 1230) {
18091 return '中午';
18092 } else if (hm < 1800) {
18093 return '下午';
18094 } else {
18095 return '晚上';
18096 }
18097 },
18098 calendar: {
18099 sameDay: '[今天] LT',
18100 nextDay: '[明天] LT',
18101 nextWeek: '[下]dddd LT',
18102 lastDay: '[昨天] LT',
18103 lastWeek: '[上]dddd LT',
18104 sameElse: 'L',
18105 },
18106 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
18107 ordinal: function (number, period) {
18108 switch (period) {
18109 case 'd':
18110 case 'D':
18111 case 'DDD':
18112 return number + '日';
18113 case 'M':
18114 return number + '月';
18115 case 'w':
18116 case 'W':
18117 return number + '週';
18118 default:
18119 return number;
18120 }
18121 },
18122 relativeTime: {
18123 future: '%s內',
18124 past: '%s前',
18125 s: '幾秒',
18126 ss: '%d 秒',
18127 m: '1 分鐘',
18128 mm: '%d 分鐘',
18129 h: '1 小時',
18130 hh: '%d 小時',
18131 d: '1 天',
18132 dd: '%d 天',
18133 M: '1 個月',
18134 MM: '%d 個月',
18135 y: '1 年',
18136 yy: '%d 年',
18137 },
18138 });
18139
18140 //! moment.js locale configuration
18141
18142 hooks.defineLocale('zh-tw', {
18143 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
18144 '_'
18145 ),
18146 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
18147 '_'
18148 ),
18149 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
18150 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
18151 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
18152 longDateFormat: {
18153 LT: 'HH:mm',
18154 LTS: 'HH:mm:ss',
18155 L: 'YYYY/MM/DD',
18156 LL: 'YYYY年M月D日',
18157 LLL: 'YYYY年M月D日 HH:mm',
18158 LLLL: 'YYYY年M月D日dddd HH:mm',
18159 l: 'YYYY/M/D',
18160 ll: 'YYYY年M月D日',
18161 lll: 'YYYY年M月D日 HH:mm',
18162 llll: 'YYYY年M月D日dddd HH:mm',
18163 },
18164 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
18165 meridiemHour: function (hour, meridiem) {
18166 if (hour === 12) {
18167 hour = 0;
18168 }
18169 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
18170 return hour;
18171 } else if (meridiem === '中午') {
18172 return hour >= 11 ? hour : hour + 12;
18173 } else if (meridiem === '下午' || meridiem === '晚上') {
18174 return hour + 12;
18175 }
18176 },
18177 meridiem: function (hour, minute, isLower) {
18178 var hm = hour * 100 + minute;
18179 if (hm < 600) {
18180 return '凌晨';
18181 } else if (hm < 900) {
18182 return '早上';
18183 } else if (hm < 1130) {
18184 return '上午';
18185 } else if (hm < 1230) {
18186 return '中午';
18187 } else if (hm < 1800) {
18188 return '下午';
18189 } else {
18190 return '晚上';
18191 }
18192 },
18193 calendar: {
18194 sameDay: '[今天] LT',
18195 nextDay: '[明天] LT',
18196 nextWeek: '[下]dddd LT',
18197 lastDay: '[昨天] LT',
18198 lastWeek: '[上]dddd LT',
18199 sameElse: 'L',
18200 },
18201 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
18202 ordinal: function (number, period) {
18203 switch (period) {
18204 case 'd':
18205 case 'D':
18206 case 'DDD':
18207 return number + '日';
18208 case 'M':
18209 return number + '月';
18210 case 'w':
18211 case 'W':
18212 return number + '週';
18213 default:
18214 return number;
18215 }
18216 },
18217 relativeTime: {
18218 future: '%s後',
18219 past: '%s前',
18220 s: '幾秒',
18221 ss: '%d 秒',
18222 m: '1 分鐘',
18223 mm: '%d 分鐘',
18224 h: '1 小時',
18225 hh: '%d 小時',
18226 d: '1 天',
18227 dd: '%d 天',
18228 M: '1 個月',
18229 MM: '%d 個月',
18230 y: '1 年',
18231 yy: '%d 年',
18232 },
18233 });
18234
18235 hooks.locale('en');
18236
18237 return hooks;
18238
18239})));