PageSourceSearch

https://www.provincial.rugby/_resources/themes/provincial-rugby-bu…/javascript/bundles/common.js?m=1790310943

js provincial.rugby collected 2026-09-25 07:00:53 UTC 1,604,144 bytes, 43,098 lines download raw bytes

1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, {
40/******/ 				configurable: false,
41/******/ 				enumerable: true,
42/******/ 				get: getter
43/******/ 			});
44/******/ 		}
45/******/ 	};
46/******/
47/******/ 	// getDefaultExport function for compatibility with non-harmony modules
48/******/ 	__webpack_require__.n = function(module) {
49/******/ 		var getter = module && module.__esModule ?
50/******/ 			function getDefault() { return module['default']; } :
51/******/ 			function getModuleExports() { return module; };
52/******/ 		__webpack_require__.d(getter, 'a', getter);
53/******/ 		return getter;
54/******/ 	};
55/******/
56/******/ 	// Object.prototype.hasOwnProperty.call
57/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
58/******/
59/******/ 	// __webpack_public_path__
60/******/ 	__webpack_require__.p = "/";
61/******/
62/******/ 	// Load entry module and return exports
63/******/ 	return __webpack_require__(__webpack_require__.s = 139);
64/******/ })
65/************************************************************************/
66/******/ ([
67/* 0 */
68/***/ (function(module, exports, __webpack_require__) {
69
70/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js
71//! version : 2.29.0
72//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
73//! license : MIT
74//! momentjs.com
75
76;(function (global, factory) {
77     true ? module.exports = factory() :
78    typeof define === 'function' && define.amd ? define(factory) :
79    global.moment = factory()
80}(this, (function () { 'use strict';
81
82    var hookCallback;
83
84    function hooks() {
85        return hookCallback.apply(null, arguments);
86    }
87
88    // This is done to register the method called with moment()
89    // without creating circular dependencies.
90    function setHookCallback(callback) {
91        hookCallback = callback;
92    }
93
94    function isArray(input) {
95        return (
96            input instanceof Array ||
97            Object.prototype.toString.call(input) === '[object Array]'
98        );
99    }
100
101    function isObject(input) {
102        // IE8 will treat undefined and null as object if it wasn't for
103        // input != null
104        return (
105            input != null &&
106            Object.prototype.toString.call(input) === '[object Object]'
107        );
108    }
109
110    function hasOwnProp(a, b) {
111        return Object.prototype.hasOwnProperty.call(a, b);
112    }
113
114    function isObjectEmpty(obj) {
115        if (Object.getOwnPropertyNames) {
116            return Object.getOwnPropertyNames(obj).length === 0;
117        } else {
118            var k;
119            for (k in obj) {
120                if (hasOwnProp(obj, k)) {
121                    return false;
122                }
123            }
124            return true;
125        }
126    }
127
128    function isUndefined(input) {
129        return input === void 0;
130    }
131
132    function isNumber(input) {
133        return (
134            typeof input === 'number' ||
135            Object.prototype.toString.call(input) === '[object Number]'
136        );
137    }
138
139    function isDate(input) {
140        return (
141            input instanceof Date ||
142            Object.prototype.toString.call(input) === '[object Date]'
143        );
144    }
145
146    function map(arr, fn) {
147        var res = [],
148            i;
149        for (i = 0; i < arr.length; ++i) {
150            res.push(fn(arr[i], i));
151        }
152        return res;
153    }
154
155    function extend(a, b) {
156        for (var i in b) {
157            if (hasOwnProp(b, i)) {
158                a[i] = b[i];
159            }
160        }
161
162        if (hasOwnProp(b, 'toString')) {
163            a.toString = b.toString;
164        }
165
166        if (hasOwnProp(b, 'valueOf')) {
167            a.valueOf = b.valueOf;
168        }
169
170        return a;
171    }
172
173    function createUTC(input, format, locale, strict) {
vendor: 171,668 bytes, lines 174-5750
174        return createLocalOrUTC(input, format, locale, strict, true).utc();
175    }
176
177    function defaultParsingFlags() {
178        // We need to deep clone this object.
179        return {
180            empty: false,
181            unusedTokens: [],
182            unusedInput: [],
183            overflow: -2,
184            charsLeftOver: 0,
185            nullInput: false,
186            invalidEra: null,
187            invalidMonth: null,
188            invalidFormat: false,
189            userInvalidated: false,
190            iso: false,
191            parsedDateParts: [],
192            era: null,
193            meridiem: null,
194            rfc2822: false,
195            weekdayMismatch: false,
196        };
197    }
198
199    function getParsingFlags(m) {
200        if (m._pf == null) {
201            m._pf = defaultParsingFlags();
202        }
203        return m._pf;
204    }
205
206    var some;
207    if (Array.prototype.some) {
208        some = Array.prototype.some;
209    } else {
210        some = function (fun) {
211            var t = Object(this),
212                len = t.length >>> 0,
213                i;
214
215            for (i = 0; i < len; i++) {
216                if (i in t && fun.call(this, t[i], i, t)) {
217                    return true;
218                }
219            }
220
221            return false;
222        };
223    }
224
225    function isValid(m) {
226        if (m._isValid == null) {
227            var flags = getParsingFlags(m),
228                parsedParts = some.call(flags.parsedDateParts, function (i) {
229                    return i != null;
230                }),
231                isNowValid =
232                    !isNaN(m._d.getTime()) &&
233                    flags.overflow < 0 &&
234                    !flags.empty &&
235                    !flags.invalidEra &&
236                    !flags.invalidMonth &&
237                    !flags.invalidWeekday &&
238                    !flags.weekdayMismatch &&
239                    !flags.nullInput &&
240                    !flags.invalidFormat &&
241                    !flags.userInvalidated &&
242                    (!flags.meridiem || (flags.meridiem && parsedParts));
243
244            if (m._strict) {
245                isNowValid =
246                    isNowValid &&
247                    flags.charsLeftOver === 0 &&
248                    flags.unusedTokens.length === 0 &&
249                    flags.bigHour === undefined;
250            }
251
252            if (Object.isFrozen == null || !Object.isFrozen(m)) {
253                m._isValid = isNowValid;
254            } else {
255                return isNowValid;
256            }
257        }
258        return m._isValid;
259    }
260
261    function createInvalid(flags) {
262        var m = createUTC(NaN);
263        if (flags != null) {
264            extend(getParsingFlags(m), flags);
265        } else {
266            getParsingFlags(m).userInvalidated = true;
267        }
268
269        return m;
270    }
271
272    // Plugins that add properties should also add the key here (null value),
273    // so we can properly clone ourselves.
274    var momentProperties = (hooks.momentProperties = []),
275        updateInProgress = false;
276
277    function copyConfig(to, from) {
278        var i, prop, val;
279
280        if (!isUndefined(from._isAMomentObject)) {
281            to._isAMomentObject = from._isAMomentObject;
282        }
283        if (!isUndefined(from._i)) {
284            to._i = from._i;
285        }
286        if (!isUndefined(from._f)) {
287            to._f = from._f;
288        }
289        if (!isUndefined(from._l)) {
290            to._l = from._l;
291        }
292        if (!isUndefined(from._strict)) {
293            to._strict = from._strict;
294        }
295        if (!isUndefined(from._tzm)) {
296            to._tzm = from._tzm;
297        }
298        if (!isUndefined(from._isUTC)) {
299            to._isUTC = from._isUTC;
300        }
301        if (!isUndefined(from._offset)) {
302            to._offset = from._offset;
303        }
304        if (!isUndefined(from._pf)) {
305            to._pf = getParsingFlags(from);
306        }
307        if (!isUndefined(from._locale)) {
308            to._locale = from._locale;
309        }
310
311        if (momentProperties.length > 0) {
312            for (i = 0; i < momentProperties.length; i++) {
313                prop = momentProperties[i];
314                val = from[prop];
315                if (!isUndefined(val)) {
316                    to[prop] = val;
317                }
318            }
319        }
320
321        return to;
322    }
323
324    // Moment prototype object
325    function Moment(config) {
326        copyConfig(this, config);
327        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
328        if (!this.isValid()) {
329            this._d = new Date(NaN);
330        }
331        // Prevent infinite loop in case updateOffset creates new moment
332        // objects.
333        if (updateInProgress === false) {
334            updateInProgress = true;
335            hooks.updateOffset(this);
336            updateInProgress = false;
337        }
338    }
339
340    function isMoment(obj) {
341        return (
342            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
343        );
344    }
345
346    function warn(msg) {
347        if (
348            hooks.suppressDeprecationWarnings === false &&
349            typeof console !== 'undefined' &&
350            console.warn
351        ) {
352            console.warn('Deprecation warning: ' + msg);
353        }
354    }
355
356    function deprecate(msg, fn) {
357        var firstTime = true;
358
359        return extend(function () {
360            if (hooks.deprecationHandler != null) {
361                hooks.deprecationHandler(null, msg);
362            }
363            if (firstTime) {
364                var args = [],
365                    arg,
366                    i,
367                    key;
368                for (i = 0; i < arguments.length; i++) {
369                    arg = '';
370                    if (typeof arguments[i] === 'object') {
371                        arg += '\n[' + i + '] ';
372                        for (key in arguments[0]) {
373                            if (hasOwnProp(arguments[0], key)) {
374                                arg += key + ': ' + arguments[0][key] + ', ';
375                            }
376                        }
377                        arg = arg.slice(0, -2); // Remove trailing comma and space
378                    } else {
379                        arg = arguments[i];
380                    }
381                    args.push(arg);
382                }
383                warn(
384                    msg +
385                        '\nArguments: ' +
386                        Array.prototype.slice.call(args).join('') +
387                        '\n' +
388                        new Error().stack
389                );
390                firstTime = false;
391            }
392            return fn.apply(this, arguments);
393        }, fn);
394    }
395
396    var deprecations = {};
397
398    function deprecateSimple(name, msg) {
399        if (hooks.deprecationHandler != null) {
400            hooks.deprecationHandler(name, msg);
401        }
402        if (!deprecations[name]) {
403            warn(msg);
404            deprecations[name] = true;
405        }
406    }
407
408    hooks.suppressDeprecationWarnings = false;
409    hooks.deprecationHandler = null;
410
411    function isFunction(input) {
412        return (
413            (typeof Function !== 'undefined' && input instanceof Function) ||
414            Object.prototype.toString.call(input) === '[object Function]'
415        );
416    }
417
418    function set(config) {
419        var prop, i;
420        for (i in config) {
421            if (hasOwnProp(config, i)) {
422                prop = config[i];
423                if (isFunction(prop)) {
424                    this[i] = prop;
425                } else {
426                    this['_' + i] = prop;
427                }
428            }
429        }
430        this._config = config;
431        // Lenient ordinal parsing accepts just a number in addition to
432        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
433        // TODO: Remove "ordinalParse" fallback in next major release.
434        this._dayOfMonthOrdinalParseLenient = new RegExp(
435            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
436                '|' +
437                /\d{1,2}/.source
438        );
439    }
440
441    function mergeConfigs(parentConfig, childConfig) {
442        var res = extend({}, parentConfig),
443            prop;
444        for (prop in childConfig) {
445            if (hasOwnProp(childConfig, prop)) {
446                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
447                    res[prop] = {};
448                    extend(res[prop], parentConfig[prop]);
449                    extend(res[prop], childConfig[prop]);
450                } else if (childConfig[prop] != null) {
451                    res[prop] = childConfig[prop];
452                } else {
453                    delete res[prop];
454                }
455            }
456        }
457        for (prop in parentConfig) {
458            if (
459                hasOwnProp(parentConfig, prop) &&
460                !hasOwnProp(childConfig, prop) &&
461                isObject(parentConfig[prop])
462            ) {
463                // make sure changes to properties don't modify parent config
464                res[prop] = extend({}, res[prop]);
465            }
466        }
467        return res;
468    }
469
470    function Locale(config) {
471        if (config != null) {
472            this.set(config);
473        }
474    }
475
476    var keys;
477
478    if (Object.keys) {
479        keys = Object.keys;
480    } else {
481        keys = function (obj) {
482            var i,
483                res = [];
484            for (i in obj) {
485                if (hasOwnProp(obj, i)) {
486                    res.push(i);
487                }
488            }
489            return res;
490        };
491    }
492
493    var defaultCalendar = {
494        sameDay: '[Today at] LT',
495        nextDay: '[Tomorrow at] LT',
496        nextWeek: 'dddd [at] LT',
497        lastDay: '[Yesterday at] LT',
498        lastWeek: '[Last] dddd [at] LT',
499        sameElse: 'L',
500    };
501
502    function calendar(key, mom, now) {
503        var output = this._calendar[key] || this._calendar['sameElse'];
504        return isFunction(output) ? output.call(mom, now) : output;
505    }
506
507    function zeroFill(number, targetLength, forceSign) {
508        var absNumber = '' + Math.abs(number),
509            zerosToFill = targetLength - absNumber.length,
510            sign = number >= 0;
511        return (
512            (sign ? (forceSign ? '+' : '') : '-') +
513            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
514            absNumber
515        );
516    }
517
518    var formattingTokens = /(\[[^\[]*\])|(\\)?([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,
519        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
520        formatFunctions = {},
521        formatTokenFunctions = {};
522
523    // token:    'M'
524    // padded:   ['MM', 2]
525    // ordinal:  'Mo'
526    // callback: function () { this.month() + 1 }
527    function addFormatToken(token, padded, ordinal, callback) {
528        var func = callback;
529        if (typeof callback === 'string') {
530            func = function () {
531                return this[callback]();
532            };
533        }
534        if (token) {
535            formatTokenFunctions[token] = func;
536        }
537        if (padded) {
538            formatTokenFunctions[padded[0]] = function () {
539                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
540            };
541        }
542        if (ordinal) {
543            formatTokenFunctions[ordinal] = function () {
544                return this.localeData().ordinal(
545                    func.apply(this, arguments),
546                    token
547                );
548            };
549        }
550    }
551
552    function removeFormattingTokens(input) {
553        if (input.match(/\[[\s\S]/)) {
554            return input.replace(/^\[|\]$/g, '');
555        }
556        return input.replace(/\\/g, '');
557    }
558
559    function makeFormatFunction(format) {
560        var array = format.match(formattingTokens),
561            i,
562            length;
563
564        for (i = 0, length = array.length; i < length; i++) {
565            if (formatTokenFunctions[array[i]]) {
566                array[i] = formatTokenFunctions[array[i]];
567            } else {
568                array[i] = removeFormattingTokens(array[i]);
569            }
570        }
571
572        return function (mom) {
573            var output = '',
574                i;
575            for (i = 0; i < length; i++) {
576                output += isFunction(array[i])
577                    ? array[i].call(mom, format)
578                    : array[i];
579            }
580            return output;
581        };
582    }
583
584    // format date using native date object
585    function formatMoment(m, format) {
586        if (!m.isValid()) {
587            return m.localeData().invalidDate();
588        }
589
590        format = expandFormat(format, m.localeData());
591        formatFunctions[format] =
592            formatFunctions[format] || makeFormatFunction(format);
593
594        return formatFunctions[format](m);
595    }
596
597    function expandFormat(format, locale) {
598        var i = 5;
599
600        function replaceLongDateFormatTokens(input) {
601            return locale.longDateFormat(input) || input;
602        }
603
604        localFormattingTokens.lastIndex = 0;
605        while (i >= 0 && localFormattingTokens.test(format)) {
606            format = format.replace(
607                localFormattingTokens,
608                replaceLongDateFormatTokens
609            );
610            localFormattingTokens.lastIndex = 0;
611            i -= 1;
612        }
613
614        return format;
615    }
616
617    var defaultLongDateFormat = {
618        LTS: 'h:mm:ss A',
619        LT: 'h:mm A',
620        L: 'MM/DD/YYYY',
621        LL: 'MMMM D, YYYY',
622        LLL: 'MMMM D, YYYY h:mm A',
623        LLLL: 'dddd, MMMM D, YYYY h:mm A',
624    };
625
626    function longDateFormat(key) {
627        var format = this._longDateFormat[key],
628            formatUpper = this._longDateFormat[key.toUpperCase()];
629
630        if (format || !formatUpper) {
631            return format;
632        }
633
634        this._longDateFormat[key] = formatUpper
635            .match(formattingTokens)
636            .map(function (tok) {
637                if (
638                    tok === 'MMMM' ||
639                    tok === 'MM' ||
640                    tok === 'DD' ||
641                    tok === 'dddd'
642                ) {
643                    return tok.slice(1);
644                }
645                return tok;
646            })
647            .join('');
648
649        return this._longDateFormat[key];
650    }
651
652    var defaultInvalidDate = 'Invalid date';
653
654    function invalidDate() {
655        return this._invalidDate;
656    }
657
658    var defaultOrdinal = '%d',
659        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
660
661    function ordinal(number) {
662        return this._ordinal.replace('%d', number);
663    }
664
665    var defaultRelativeTime = {
666        future: 'in %s',
667        past: '%s ago',
668        s: 'a few seconds',
669        ss: '%d seconds',
670        m: 'a minute',
671        mm: '%d minutes',
672        h: 'an hour',
673        hh: '%d hours',
674        d: 'a day',
675        dd: '%d days',
676        w: 'a week',
677        ww: '%d weeks',
678        M: 'a month',
679        MM: '%d months',
680        y: 'a year',
681        yy: '%d years',
682    };
683
684    function relativeTime(number, withoutSuffix, string, isFuture) {
685        var output = this._relativeTime[string];
686        return isFunction(output)
687            ? output(number, withoutSuffix, string, isFuture)
688            : output.replace(/%d/i, number);
689    }
690
691    function pastFuture(diff, output) {
692        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
693        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
694    }
695
696    var aliases = {};
697
698    function addUnitAlias(unit, shorthand) {
699        var lowerCase = unit.toLowerCase();
700        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
701    }
702
703    function normalizeUnits(units) {
704        return typeof units === 'string'
705            ? aliases[units] || aliases[units.toLowerCase()]
706            : undefined;
707    }
708
709    function normalizeObjectUnits(inputObject) {
710        var normalizedInput = {},
711            normalizedProp,
712            prop;
713
714        for (prop in inputObject) {
715            if (hasOwnProp(inputObject, prop)) {
716                normalizedProp = normalizeUnits(prop);
717                if (normalizedProp) {
718                    normalizedInput[normalizedProp] = inputObject[prop];
719                }
720            }
721        }
722
723        return normalizedInput;
724    }
725
726    var priorities = {};
727
728    function addUnitPriority(unit, priority) {
729        priorities[unit] = priority;
730    }
731
732    function getPrioritizedUnits(unitsObj) {
733        var units = [],
734            u;
735        for (u in unitsObj) {
736            if (hasOwnProp(unitsObj, u)) {
737                units.push({ unit: u, priority: priorities[u] });
738            }
739        }
740        units.sort(function (a, b) {
741            return a.priority - b.priority;
742        });
743        return units;
744    }
745
746    function isLeapYear(year) {
747        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
748    }
749
750    function absFloor(number) {
751        if (number < 0) {
752            // -0 -> 0
753            return Math.ceil(number) || 0;
754        } else {
755            return Math.floor(number);
756        }
757    }
758
759    function toInt(argumentForCoercion) {
760        var coercedNumber = +argumentForCoercion,
761            value = 0;
762
763        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
764            value = absFloor(coercedNumber);
765        }
766
767        return value;
768    }
769
770    function makeGetSet(unit, keepTime) {
771        return function (value) {
772            if (value != null) {
773                set$1(this, unit, value);
774                hooks.updateOffset(this, keepTime);
775                return this;
776            } else {
777                return get(this, unit);
778            }
779        };
780    }
781
782    function get(mom, unit) {
783        return mom.isValid()
784            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
785            : NaN;
786    }
787
788    function set$1(mom, unit, value) {
789        if (mom.isValid() && !isNaN(value)) {
790            if (
791                unit === 'FullYear' &&
792                isLeapYear(mom.year()) &&
793                mom.month() === 1 &&
794                mom.date() === 29
795            ) {
796                value = toInt(value);
797                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
798                    value,
799                    mom.month(),
800                    daysInMonth(value, mom.month())
801                );
802            } else {
803                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
804            }
805        }
806    }
807
808    // MOMENTS
809
810    function stringGet(units) {
811        units = normalizeUnits(units);
812        if (isFunction(this[units])) {
813            return this[units]();
814        }
815        return this;
816    }
817
818    function stringSet(units, value) {
819        if (typeof units === 'object') {
820            units = normalizeObjectUnits(units);
821            var prioritized = getPrioritizedUnits(units),
822                i;
823            for (i = 0; i < prioritized.length; i++) {
824                this[prioritized[i].unit](units[prioritized[i].unit]);
825            }
826        } else {
827            units = normalizeUnits(units);
828            if (isFunction(this[units])) {
829                return this[units](value);
830            }
831        }
832        return this;
833    }
834
835    var match1 = /\d/, //       0 - 9
836        match2 = /\d\d/, //      00 - 99
837        match3 = /\d{3}/, //     000 - 999
838        match4 = /\d{4}/, //    0000 - 9999
839        match6 = /[+-]?\d{6}/, // -999999 - 999999
840        match1to2 = /\d\d?/, //       0 - 99
841        match3to4 = /\d\d\d\d?/, //     999 - 9999
842        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
843        match1to3 = /\d{1,3}/, //       0 - 999
844        match1to4 = /\d{1,4}/, //       0 - 9999
845        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
846        matchUnsigned = /\d+/, //       0 - inf
847        matchSigned = /[+-]?\d+/, //    -inf - inf
848        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
849        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
850        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
851        // any word (or two) characters or numbers including two/three word month in arabic.
852        // includes scottish gaelic two word and hyphenated months
853        matchWord = /[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,
854        regexes;
855
856    regexes = {};
857
858    function addRegexToken(token, regex, strictRegex) {
859        regexes[token] = isFunction(regex)
860            ? regex
861            : function (isStrict, localeData) {
862                  return isStrict && strictRegex ? strictRegex : regex;
863              };
864    }
865
866    function getParseRegexForToken(token, config) {
867        if (!hasOwnProp(regexes, token)) {
868            return new RegExp(unescapeFormat(token));
869        }
870
871        return regexes[token](config._strict, config._locale);
872    }
873
874    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
875    function unescapeFormat(s) {
876        return regexEscape(
877            s
878                .replace('\\', '')
879                .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
880                    matched,
881                    p1,
882                    p2,
883                    p3,
884                    p4
885                ) {
886                    return p1 || p2 || p3 || p4;
887                })
888        );
889    }
890
891    function regexEscape(s) {
892        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
893    }
894
895    var tokens = {};
896
897    function addParseToken(token, callback) {
898        var i,
899            func = callback;
900        if (typeof token === 'string') {
901            token = [token];
902        }
903        if (isNumber(callback)) {
904            func = function (input, array) {
905                array[callback] = toInt(input);
906            };
907        }
908        for (i = 0; i < token.length; i++) {
909            tokens[token[i]] = func;
910        }
911    }
912
913    function addWeekParseToken(token, callback) {
914        addParseToken(token, function (input, array, config, token) {
915            config._w = config._w || {};
916            callback(input, config._w, config, token);
917        });
918    }
919
920    function addTimeToArrayFromToken(token, input, config) {
921        if (input != null && hasOwnProp(tokens, token)) {
922            tokens[token](input, config._a, config, token);
923        }
924    }
925
926    var YEAR = 0,
927        MONTH = 1,
928        DATE = 2,
929        HOUR = 3,
930        MINUTE = 4,
931        SECOND = 5,
932        MILLISECOND = 6,
933        WEEK = 7,
934        WEEKDAY = 8;
935
936    function mod(n, x) {
937        return ((n % x) + x) % x;
938    }
939
940    var indexOf;
941
942    if (Array.prototype.indexOf) {
943        indexOf = Array.prototype.indexOf;
944    } else {
945        indexOf = function (o) {
946            // I know
947            var i;
948            for (i = 0; i < this.length; ++i) {
949                if (this[i] === o) {
950                    return i;
951                }
952            }
953            return -1;
954        };
955    }
956
957    function daysInMonth(year, month) {
958        if (isNaN(year) || isNaN(month)) {
959            return NaN;
960        }
961        var modMonth = mod(month, 12);
962        year += (month - modMonth) / 12;
963        return modMonth === 1
964            ? isLeapYear(year)
965                ? 29
966                : 28
967            : 31 - ((modMonth % 7) % 2);
968    }
969
970    // FORMATTING
971
972    addFormatToken('M', ['MM', 2], 'Mo', function () {
973        return this.month() + 1;
974    });
975
976    addFormatToken('MMM', 0, 0, function (format) {
977        return this.localeData().monthsShort(this, format);
978    });
979
980    addFormatToken('MMMM', 0, 0, function (format) {
981        return this.localeData().months(this, format);
982    });
983
984    // ALIASES
985
986    addUnitAlias('month', 'M');
987
988    // PRIORITY
989
990    addUnitPriority('month', 8);
991
992    // PARSING
993
994    addRegexToken('M', match1to2);
995    addRegexToken('MM', match1to2, match2);
996    addRegexToken('MMM', function (isStrict, locale) {
997        return locale.monthsShortRegex(isStrict);
998    });
999    addRegexToken('MMMM', function (isStrict, locale) {
1000        return locale.monthsRegex(isStrict);
1001    });
1002
1003    addParseToken(['M', 'MM'], function (input, array) {
1004        array[MONTH] = toInt(input) - 1;
1005    });
1006
1007    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
1008        var month = config._locale.monthsParse(input, token, config._strict);
1009        // if we didn't find a month name, mark the date as invalid.
1010        if (month != null) {
1011            array[MONTH] = month;
1012        } else {
1013            getParsingFlags(config).invalidMonth = input;
1014        }
1015    });
1016
1017    // LOCALES
1018
1019    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
1020            '_'
1021        ),
1022        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
1023            '_'
1024        ),
1025        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
1026        defaultMonthsShortRegex = matchWord,
1027        defaultMonthsRegex = matchWord;
1028
1029    function localeMonths(m, format) {
1030        if (!m) {
1031            return isArray(this._months)
1032                ? this._months
1033                : this._months['standalone'];
1034        }
1035        return isArray(this._months)
1036            ? this._months[m.month()]
1037            : this._months[
1038                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
1039                      ? 'format'
1040                      : 'standalone'
1041              ][m.month()];
1042    }
1043
1044    function localeMonthsShort(m, format) {
1045        if (!m) {
1046            return isArray(this._monthsShort)
1047                ? this._monthsShort
1048                : this._monthsShort['standalone'];
1049        }
1050        return isArray(this._monthsShort)
1051            ? this._monthsShort[m.month()]
1052            : this._monthsShort[
1053                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
1054              ][m.month()];
1055    }
1056
1057    function handleStrictParse(monthName, format, strict) {
1058        var i,
1059            ii,
1060            mom,
1061            llc = monthName.toLocaleLowerCase();
1062        if (!this._monthsParse) {
1063            // this is not used
1064            this._monthsParse = [];
1065            this._longMonthsParse = [];
1066            this._shortMonthsParse = [];
1067            for (i = 0; i < 12; ++i) {
1068                mom = createUTC([2000, i]);
1069                this._shortMonthsParse[i] = this.monthsShort(
1070                    mom,
1071                    ''
1072                ).toLocaleLowerCase();
1073                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
1074            }
1075        }
1076
1077        if (strict) {
1078            if (format === 'MMM') {
1079                ii = indexOf.call(this._shortMonthsParse, llc);
1080                return ii !== -1 ? ii : null;
1081            } else {
1082                ii = indexOf.call(this._longMonthsParse, llc);
1083                return ii !== -1 ? ii : null;
1084            }
1085        } else {
1086            if (format === 'MMM') {
1087                ii = indexOf.call(this._shortMonthsParse, llc);
1088                if (ii !== -1) {
1089                    return ii;
1090                }
1091                ii = indexOf.call(this._longMonthsParse, llc);
1092                return ii !== -1 ? ii : null;
1093            } else {
1094                ii = indexOf.call(this._longMonthsParse, llc);
1095                if (ii !== -1) {
1096                    return ii;
1097                }
1098                ii = indexOf.call(this._shortMonthsParse, llc);
1099                return ii !== -1 ? ii : null;
1100            }
1101        }
1102    }
1103
1104    function localeMonthsParse(monthName, format, strict) {
1105        var i, mom, regex;
1106
1107        if (this._monthsParseExact) {
1108            return handleStrictParse.call(this, monthName, format, strict);
1109        }
1110
1111        if (!this._monthsParse) {
1112            this._monthsParse = [];
1113            this._longMonthsParse = [];
1114            this._shortMonthsParse = [];
1115        }
1116
1117        // TODO: add sorting
1118        // Sorting makes sure if one month (or abbr) is a prefix of another
1119        // see sorting in computeMonthsParse
1120        for (i = 0; i < 12; i++) {
1121            // make the regex if we don't have it already
1122            mom = createUTC([2000, i]);
1123            if (strict && !this._longMonthsParse[i]) {
1124                this._longMonthsParse[i] = new RegExp(
1125                    '^' + this.months(mom, '').replace('.', '') + '$',
1126                    'i'
1127                );
1128                this._shortMonthsParse[i] = new RegExp(
1129                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
1130                    'i'
1131                );
1132            }
1133            if (!strict && !this._monthsParse[i]) {
1134                regex =
1135                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1136                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1137            }
1138            // test the regex
1139            if (
1140                strict &&
1141                format === 'MMMM' &&
1142                this._longMonthsParse[i].test(monthName)
1143            ) {
1144                return i;
1145            } else if (
1146                strict &&
1147                format === 'MMM' &&
1148                this._shortMonthsParse[i].test(monthName)
1149            ) {
1150                return i;
1151            } else if (!strict && this._monthsParse[i].test(monthName)) {
1152                return i;
1153            }
1154        }
1155    }
1156
1157    // MOMENTS
1158
1159    function setMonth(mom, value) {
1160        var dayOfMonth;
1161
1162        if (!mom.isValid()) {
1163            // No op
1164            return mom;
1165        }
1166
1167        if (typeof value === 'string') {
1168            if (/^\d+$/.test(value)) {
1169                value = toInt(value);
1170            } else {
1171                value = mom.localeData().monthsParse(value);
1172                // TODO: Another silent failure?
1173                if (!isNumber(value)) {
1174                    return mom;
1175                }
1176            }
1177        }
1178
1179        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1180        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1181        return mom;
1182    }
1183
1184    function getSetMonth(value) {
1185        if (value != null) {
1186            setMonth(this, value);
1187            hooks.updateOffset(this, true);
1188            return this;
1189        } else {
1190            return get(this, 'Month');
1191        }
1192    }
1193
1194    function getDaysInMonth() {
1195        return daysInMonth(this.year(), this.month());
1196    }
1197
1198    function monthsShortRegex(isStrict) {
1199        if (this._monthsParseExact) {
1200            if (!hasOwnProp(this, '_monthsRegex')) {
1201                computeMonthsParse.call(this);
1202            }
1203            if (isStrict) {
1204                return this._monthsShortStrictRegex;
1205            } else {
1206                return this._monthsShortRegex;
1207            }
1208        } else {
1209            if (!hasOwnProp(this, '_monthsShortRegex')) {
1210                this._monthsShortRegex = defaultMonthsShortRegex;
1211            }
1212            return this._monthsShortStrictRegex && isStrict
1213                ? this._monthsShortStrictRegex
1214                : this._monthsShortRegex;
1215        }
1216    }
1217
1218    function monthsRegex(isStrict) {
1219        if (this._monthsParseExact) {
1220            if (!hasOwnProp(this, '_monthsRegex')) {
1221                computeMonthsParse.call(this);
1222            }
1223            if (isStrict) {
1224                return this._monthsStrictRegex;
1225            } else {
1226                return this._monthsRegex;
1227            }
1228        } else {
1229            if (!hasOwnProp(this, '_monthsRegex')) {
1230                this._monthsRegex = defaultMonthsRegex;
1231            }
1232            return this._monthsStrictRegex && isStrict
1233                ? this._monthsStrictRegex
1234                : this._monthsRegex;
1235        }
1236    }
1237
1238    function computeMonthsParse() {
1239        function cmpLenRev(a, b) {
1240            return b.length - a.length;
1241        }
1242
1243        var shortPieces = [],
1244            longPieces = [],
1245            mixedPieces = [],
1246            i,
1247            mom;
1248        for (i = 0; i < 12; i++) {
1249            // make the regex if we don't have it already
1250            mom = createUTC([2000, i]);
1251            shortPieces.push(this.monthsShort(mom, ''));
1252            longPieces.push(this.months(mom, ''));
1253            mixedPieces.push(this.months(mom, ''));
1254            mixedPieces.push(this.monthsShort(mom, ''));
1255        }
1256        // Sorting makes sure if one month (or abbr) is a prefix of another it
1257        // will match the longer piece.
1258        shortPieces.sort(cmpLenRev);
1259        longPieces.sort(cmpLenRev);
1260        mixedPieces.sort(cmpLenRev);
1261        for (i = 0; i < 12; i++) {
1262            shortPieces[i] = regexEscape(shortPieces[i]);
1263            longPieces[i] = regexEscape(longPieces[i]);
1264        }
1265        for (i = 0; i < 24; i++) {
1266            mixedPieces[i] = regexEscape(mixedPieces[i]);
1267        }
1268
1269        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1270        this._monthsShortRegex = this._monthsRegex;
1271        this._monthsStrictRegex = new RegExp(
1272            '^(' + longPieces.join('|') + ')',
1273            'i'
1274        );
1275        this._monthsShortStrictRegex = new RegExp(
1276            '^(' + shortPieces.join('|') + ')',
1277            'i'
1278        );
1279    }
1280
1281    // FORMATTING
1282
1283    addFormatToken('Y', 0, 0, function () {
1284        var y = this.year();
1285        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
1286    });
1287
1288    addFormatToken(0, ['YY', 2], 0, function () {
1289        return this.year() % 100;
1290    });
1291
1292    addFormatToken(0, ['YYYY', 4], 0, 'year');
1293    addFormatToken(0, ['YYYYY', 5], 0, 'year');
1294    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1295
1296    // ALIASES
1297
1298    addUnitAlias('year', 'y');
1299
1300    // PRIORITIES
1301
1302    addUnitPriority('year', 1);
1303
1304    // PARSING
1305
1306    addRegexToken('Y', matchSigned);
1307    addRegexToken('YY', match1to2, match2);
1308    addRegexToken('YYYY', match1to4, match4);
1309    addRegexToken('YYYYY', match1to6, match6);
1310    addRegexToken('YYYYYY', match1to6, match6);
1311
1312    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1313    addParseToken('YYYY', function (input, array) {
1314        array[YEAR] =
1315            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1316    });
1317    addParseToken('YY', function (input, array) {
1318        array[YEAR] = hooks.parseTwoDigitYear(input);
1319    });
1320    addParseToken('Y', function (input, array) {
1321        array[YEAR] = parseInt(input, 10);
1322    });
1323
1324    // HELPERS
1325
1326    function daysInYear(year) {
1327        return isLeapYear(year) ? 366 : 365;
1328    }
1329
1330    // HOOKS
1331
1332    hooks.parseTwoDigitYear = function (input) {
1333        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1334    };
1335
1336    // MOMENTS
1337
1338    var getSetYear = makeGetSet('FullYear', true);
1339
1340    function getIsLeapYear() {
1341        return isLeapYear(this.year());
1342    }
1343
1344    function createDate(y, m, d, h, M, s, ms) {
1345        // can't just apply() to create a date:
1346        // https://stackoverflow.com/q/181348
1347        var date;
1348        // the date constructor remaps years 0-99 to 1900-1999
1349        if (y < 100 && y >= 0) {
1350            // preserve leap years using a full 400 year cycle, then reset
1351            date = new Date(y + 400, m, d, h, M, s, ms);
1352            if (isFinite(date.getFullYear())) {
1353                date.setFullYear(y);
1354            }
1355        } else {
1356            date = new Date(y, m, d, h, M, s, ms);
1357        }
1358
1359        return date;
1360    }
1361
1362    function createUTCDate(y) {
1363        var date, args;
1364        // the Date.UTC function remaps years 0-99 to 1900-1999
1365        if (y < 100 && y >= 0) {
1366            args = Array.prototype.slice.call(arguments);
1367            // preserve leap years using a full 400 year cycle, then reset
1368            args[0] = y + 400;
1369            date = new Date(Date.UTC.apply(null, args));
1370            if (isFinite(date.getUTCFullYear())) {
1371                date.setUTCFullYear(y);
1372            }
1373        } else {
1374            date = new Date(Date.UTC.apply(null, arguments));
1375        }
1376
1377        return date;
1378    }
1379
1380    // start-of-first-week - start-of-year
1381    function firstWeekOffset(year, dow, doy) {
1382        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1383            fwd = 7 + dow - doy,
1384            // first-week day local weekday -- which local weekday is fwd
1385            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1386
1387        return -fwdlw + fwd - 1;
1388    }
1389
1390    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1391    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1392        var localWeekday = (7 + weekday - dow) % 7,
1393            weekOffset = firstWeekOffset(year, dow, doy),
1394            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1395            resYear,
1396            resDayOfYear;
1397
1398        if (dayOfYear <= 0) {
1399            resYear = year - 1;
1400            resDayOfYear = daysInYear(resYear) + dayOfYear;
1401        } else if (dayOfYear > daysInYear(year)) {
1402            resYear = year + 1;
1403            resDayOfYear = dayOfYear - daysInYear(year);
1404        } else {
1405            resYear = year;
1406            resDayOfYear = dayOfYear;
1407        }
1408
1409        return {
1410            year: resYear,
1411            dayOfYear: resDayOfYear,
1412        };
1413    }
1414
1415    function weekOfYear(mom, dow, doy) {
1416        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1417            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1418            resWeek,
1419            resYear;
1420
1421        if (week < 1) {
1422            resYear = mom.year() - 1;
1423            resWeek = week + weeksInYear(resYear, dow, doy);
1424        } else if (week > weeksInYear(mom.year(), dow, doy)) {
1425            resWeek = week - weeksInYear(mom.year(), dow, doy);
1426            resYear = mom.year() + 1;
1427        } else {
1428            resYear = mom.year();
1429            resWeek = week;
1430        }
1431
1432        return {
1433            week: resWeek,
1434            year: resYear,
1435        };
1436    }
1437
1438    function weeksInYear(year, dow, doy) {
1439        var weekOffset = firstWeekOffset(year, dow, doy),
1440            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1441        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1442    }
1443
1444    // FORMATTING
1445
1446    addFormatToken('w', ['ww', 2], 'wo', 'week');
1447    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1448
1449    // ALIASES
1450
1451    addUnitAlias('week', 'w');
1452    addUnitAlias('isoWeek', 'W');
1453
1454    // PRIORITIES
1455
1456    addUnitPriority('week', 5);
1457    addUnitPriority('isoWeek', 5);
1458
1459    // PARSING
1460
1461    addRegexToken('w', match1to2);
1462    addRegexToken('ww', match1to2, match2);
1463    addRegexToken('W', match1to2);
1464    addRegexToken('WW', match1to2, match2);
1465
1466    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
1467        input,
1468        week,
1469        config,
1470        token
1471    ) {
1472        week[token.substr(0, 1)] = toInt(input);
1473    });
1474
1475    // HELPERS
1476
1477    // LOCALES
1478
1479    function localeWeek(mom) {
1480        return weekOfYear(mom, this._week.dow, this._week.doy).week;
1481    }
1482
1483    var defaultLocaleWeek = {
1484        dow: 0, // Sunday is the first day of the week.
1485        doy: 6, // The week that contains Jan 6th is the first week of the year.
1486    };
1487
1488    function localeFirstDayOfWeek() {
1489        return this._week.dow;
1490    }
1491
1492    function localeFirstDayOfYear() {
1493        return this._week.doy;
1494    }
1495
1496    // MOMENTS
1497
1498    function getSetWeek(input) {
1499        var week = this.localeData().week(this);
1500        return input == null ? week : this.add((input - week) * 7, 'd');
1501    }
1502
1503    function getSetISOWeek(input) {
1504        var week = weekOfYear(this, 1, 4).week;
1505        return input == null ? week : this.add((input - week) * 7, 'd');
1506    }
1507
1508    // FORMATTING
1509
1510    addFormatToken('d', 0, 'do', 'day');
1511
1512    addFormatToken('dd', 0, 0, function (format) {
1513        return this.localeData().weekdaysMin(this, format);
1514    });
1515
1516    addFormatToken('ddd', 0, 0, function (format) {
1517        return this.localeData().weekdaysShort(this, format);
1518    });
1519
1520    addFormatToken('dddd', 0, 0, function (format) {
1521        return this.localeData().weekdays(this, format);
1522    });
1523
1524    addFormatToken('e', 0, 0, 'weekday');
1525    addFormatToken('E', 0, 0, 'isoWeekday');
1526
1527    // ALIASES
1528
1529    addUnitAlias('day', 'd');
1530    addUnitAlias('weekday', 'e');
1531    addUnitAlias('isoWeekday', 'E');
1532
1533    // PRIORITY
1534    addUnitPriority('day', 11);
1535    addUnitPriority('weekday', 11);
1536    addUnitPriority('isoWeekday', 11);
1537
1538    // PARSING
1539
1540    addRegexToken('d', match1to2);
1541    addRegexToken('e', match1to2);
1542    addRegexToken('E', match1to2);
1543    addRegexToken('dd', function (isStrict, locale) {
1544        return locale.weekdaysMinRegex(isStrict);
1545    });
1546    addRegexToken('ddd', function (isStrict, locale) {
1547        return locale.weekdaysShortRegex(isStrict);
1548    });
1549    addRegexToken('dddd', function (isStrict, locale) {
1550        return locale.weekdaysRegex(isStrict);
1551    });
1552
1553    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1554        var weekday = config._locale.weekdaysParse(input, token, config._strict);
1555        // if we didn't get a weekday name, mark the date as invalid
1556        if (weekday != null) {
1557            week.d = weekday;
1558        } else {
1559            getParsingFlags(config).invalidWeekday = input;
1560        }
1561    });
1562
1563    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1564        week[token] = toInt(input);
1565    });
1566
1567    // HELPERS
1568
1569    function parseWeekday(input, locale) {
1570        if (typeof input !== 'string') {
1571            return input;
1572        }
1573
1574        if (!isNaN(input)) {
1575            return parseInt(input, 10);
1576        }
1577
1578        input = locale.weekdaysParse(input);
1579        if (typeof input === 'number') {
1580            return input;
1581        }
1582
1583        return null;
1584    }
1585
1586    function parseIsoWeekday(input, locale) {
1587        if (typeof input === 'string') {
1588            return locale.weekdaysParse(input) % 7 || 7;
1589        }
1590        return isNaN(input) ? null : input;
1591    }
1592
1593    // LOCALES
1594    function shiftWeekdays(ws, n) {
1595        return ws.slice(n, 7).concat(ws.slice(0, n));
1596    }
1597
1598    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
1599            '_'
1600        ),
1601        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
1602        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
1603        defaultWeekdaysRegex = matchWord,
1604        defaultWeekdaysShortRegex = matchWord,
1605        defaultWeekdaysMinRegex = matchWord;
1606
1607    function localeWeekdays(m, format) {
1608        var weekdays = isArray(this._weekdays)
1609            ? this._weekdays
1610            : this._weekdays[
1611                  m && m !== true && this._weekdays.isFormat.test(format)
1612                      ? 'format'
1613                      : 'standalone'
1614              ];
1615        return m === true
1616            ? shiftWeekdays(weekdays, this._week.dow)
1617            : m
1618            ? weekdays[m.day()]
1619            : weekdays;
1620    }
1621
1622    function localeWeekdaysShort(m) {
1623        return m === true
1624            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
1625            : m
1626            ? this._weekdaysShort[m.day()]
1627            : this._weekdaysShort;
1628    }
1629
1630    function localeWeekdaysMin(m) {
1631        return m === true
1632            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
1633            : m
1634            ? this._weekdaysMin[m.day()]
1635            : this._weekdaysMin;
1636    }
1637
1638    function handleStrictParse$1(weekdayName, format, strict) {
1639        var i,
1640            ii,
1641            mom,
1642            llc = weekdayName.toLocaleLowerCase();
1643        if (!this._weekdaysParse) {
1644            this._weekdaysParse = [];
1645            this._shortWeekdaysParse = [];
1646            this._minWeekdaysParse = [];
1647
1648            for (i = 0; i < 7; ++i) {
1649                mom = createUTC([2000, 1]).day(i);
1650                this._minWeekdaysParse[i] = this.weekdaysMin(
1651                    mom,
1652                    ''
1653                ).toLocaleLowerCase();
1654                this._shortWeekdaysParse[i] = this.weekdaysShort(
1655                    mom,
1656                    ''
1657                ).toLocaleLowerCase();
1658                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1659            }
1660        }
1661
1662        if (strict) {
1663            if (format === 'dddd') {
1664                ii = indexOf.call(this._weekdaysParse, llc);
1665                return ii !== -1 ? ii : null;
1666            } else if (format === 'ddd') {
1667                ii = indexOf.call(this._shortWeekdaysParse, llc);
1668                return ii !== -1 ? ii : null;
1669            } else {
1670                ii = indexOf.call(this._minWeekdaysParse, llc);
1671                return ii !== -1 ? ii : null;
1672            }
1673        } else {
1674            if (format === 'dddd') {
1675                ii = indexOf.call(this._weekdaysParse, llc);
1676                if (ii !== -1) {
1677                    return ii;
1678                }
1679                ii = indexOf.call(this._shortWeekdaysParse, llc);
1680                if (ii !== -1) {
1681                    return ii;
1682                }
1683                ii = indexOf.call(this._minWeekdaysParse, llc);
1684                return ii !== -1 ? ii : null;
1685            } else if (format === 'ddd') {
1686                ii = indexOf.call(this._shortWeekdaysParse, llc);
1687                if (ii !== -1) {
1688                    return ii;
1689                }
1690                ii = indexOf.call(this._weekdaysParse, llc);
1691                if (ii !== -1) {
1692                    return ii;
1693                }
1694                ii = indexOf.call(this._minWeekdaysParse, llc);
1695                return ii !== -1 ? ii : null;
1696            } else {
1697                ii = indexOf.call(this._minWeekdaysParse, llc);
1698                if (ii !== -1) {
1699                    return ii;
1700                }
1701                ii = indexOf.call(this._weekdaysParse, llc);
1702                if (ii !== -1) {
1703                    return ii;
1704                }
1705                ii = indexOf.call(this._shortWeekdaysParse, llc);
1706                return ii !== -1 ? ii : null;
1707            }
1708        }
1709    }
1710
1711    function localeWeekdaysParse(weekdayName, format, strict) {
1712        var i, mom, regex;
1713
1714        if (this._weekdaysParseExact) {
1715            return handleStrictParse$1.call(this, weekdayName, format, strict);
1716        }
1717
1718        if (!this._weekdaysParse) {
1719            this._weekdaysParse = [];
1720            this._minWeekdaysParse = [];
1721            this._shortWeekdaysParse = [];
1722            this._fullWeekdaysParse = [];
1723        }
1724
1725        for (i = 0; i < 7; i++) {
1726            // make the regex if we don't have it already
1727
1728            mom = createUTC([2000, 1]).day(i);
1729            if (strict && !this._fullWeekdaysParse[i]) {
1730                this._fullWeekdaysParse[i] = new RegExp(
1731                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
1732                    'i'
1733                );
1734                this._shortWeekdaysParse[i] = new RegExp(
1735                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
1736                    'i'
1737                );
1738                this._minWeekdaysParse[i] = new RegExp(
1739                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
1740                    'i'
1741                );
1742            }
1743            if (!this._weekdaysParse[i]) {
1744                regex =
1745                    '^' +
1746                    this.weekdays(mom, '') +
1747                    '|^' +
1748                    this.weekdaysShort(mom, '') +
1749                    '|^' +
1750                    this.weekdaysMin(mom, '');
1751                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1752            }
1753            // test the regex
1754            if (
1755                strict &&
1756                format === 'dddd' &&
1757                this._fullWeekdaysParse[i].test(weekdayName)
1758            ) {
1759                return i;
1760            } else if (
1761                strict &&
1762                format === 'ddd' &&
1763                this._shortWeekdaysParse[i].test(weekdayName)
1764            ) {
1765                return i;
1766            } else if (
1767                strict &&
1768                format === 'dd' &&
1769                this._minWeekdaysParse[i].test(weekdayName)
1770            ) {
1771                return i;
1772            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1773                return i;
1774            }
1775        }
1776    }
1777
1778    // MOMENTS
1779
1780    function getSetDayOfWeek(input) {
1781        if (!this.isValid()) {
1782            return input != null ? this : NaN;
1783        }
1784        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1785        if (input != null) {
1786            input = parseWeekday(input, this.localeData());
1787            return this.add(input - day, 'd');
1788        } else {
1789            return day;
1790        }
1791    }
1792
1793    function getSetLocaleDayOfWeek(input) {
1794        if (!this.isValid()) {
1795            return input != null ? this : NaN;
1796        }
1797        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1798        return input == null ? weekday : this.add(input - weekday, 'd');
1799    }
1800
1801    function getSetISODayOfWeek(input) {
1802        if (!this.isValid()) {
1803            return input != null ? this : NaN;
1804        }
1805
1806        // behaves the same as moment#day except
1807        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1808        // as a setter, sunday should belong to the previous week.
1809
1810        if (input != null) {
1811            var weekday = parseIsoWeekday(input, this.localeData());
1812            return this.day(this.day() % 7 ? weekday : weekday - 7);
1813        } else {
1814            return this.day() || 7;
1815        }
1816    }
1817
1818    function weekdaysRegex(isStrict) {
1819        if (this._weekdaysParseExact) {
1820            if (!hasOwnProp(this, '_weekdaysRegex')) {
1821                computeWeekdaysParse.call(this);
1822            }
1823            if (isStrict) {
1824                return this._weekdaysStrictRegex;
1825            } else {
1826                return this._weekdaysRegex;
1827            }
1828        } else {
1829            if (!hasOwnProp(this, '_weekdaysRegex')) {
1830                this._weekdaysRegex = defaultWeekdaysRegex;
1831            }
1832            return this._weekdaysStrictRegex && isStrict
1833                ? this._weekdaysStrictRegex
1834                : this._weekdaysRegex;
1835        }
1836    }
1837
1838    function weekdaysShortRegex(isStrict) {
1839        if (this._weekdaysParseExact) {
1840            if (!hasOwnProp(this, '_weekdaysRegex')) {
1841                computeWeekdaysParse.call(this);
1842            }
1843            if (isStrict) {
1844                return this._weekdaysShortStrictRegex;
1845            } else {
1846                return this._weekdaysShortRegex;
1847            }
1848        } else {
1849            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1850                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1851            }
1852            return this._weekdaysShortStrictRegex && isStrict
1853                ? this._weekdaysShortStrictRegex
1854                : this._weekdaysShortRegex;
1855        }
1856    }
1857
1858    function weekdaysMinRegex(isStrict) {
1859        if (this._weekdaysParseExact) {
1860            if (!hasOwnProp(this, '_weekdaysRegex')) {
1861                computeWeekdaysParse.call(this);
1862            }
1863            if (isStrict) {
1864                return this._weekdaysMinStrictRegex;
1865            } else {
1866                return this._weekdaysMinRegex;
1867            }
1868        } else {
1869            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1870                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1871            }
1872            return this._weekdaysMinStrictRegex && isStrict
1873                ? this._weekdaysMinStrictRegex
1874                : this._weekdaysMinRegex;
1875        }
1876    }
1877
1878    function computeWeekdaysParse() {
1879        function cmpLenRev(a, b) {
1880            return b.length - a.length;
1881        }
1882
1883        var minPieces = [],
1884            shortPieces = [],
1885            longPieces = [],
1886            mixedPieces = [],
1887            i,
1888            mom,
1889            minp,
1890            shortp,
1891            longp;
1892        for (i = 0; i < 7; i++) {
1893            // make the regex if we don't have it already
1894            mom = createUTC([2000, 1]).day(i);
1895            minp = regexEscape(this.weekdaysMin(mom, ''));
1896            shortp = regexEscape(this.weekdaysShort(mom, ''));
1897            longp = regexEscape(this.weekdays(mom, ''));
1898            minPieces.push(minp);
1899            shortPieces.push(shortp);
1900            longPieces.push(longp);
1901            mixedPieces.push(minp);
1902            mixedPieces.push(shortp);
1903            mixedPieces.push(longp);
1904        }
1905        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1906        // will match the longer piece.
1907        minPieces.sort(cmpLenRev);
1908        shortPieces.sort(cmpLenRev);
1909        longPieces.sort(cmpLenRev);
1910        mixedPieces.sort(cmpLenRev);
1911
1912        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1913        this._weekdaysShortRegex = this._weekdaysRegex;
1914        this._weekdaysMinRegex = this._weekdaysRegex;
1915
1916        this._weekdaysStrictRegex = new RegExp(
1917            '^(' + longPieces.join('|') + ')',
1918            'i'
1919        );
1920        this._weekdaysShortStrictRegex = new RegExp(
1921            '^(' + shortPieces.join('|') + ')',
1922            'i'
1923        );
1924        this._weekdaysMinStrictRegex = new RegExp(
1925            '^(' + minPieces.join('|') + ')',
1926            'i'
1927        );
1928    }
1929
1930    // FORMATTING
1931
1932    function hFormat() {
1933        return this.hours() % 12 || 12;
1934    }
1935
1936    function kFormat() {
1937        return this.hours() || 24;
1938    }
1939
1940    addFormatToken('H', ['HH', 2], 0, 'hour');
1941    addFormatToken('h', ['hh', 2], 0, hFormat);
1942    addFormatToken('k', ['kk', 2], 0, kFormat);
1943
1944    addFormatToken('hmm', 0, 0, function () {
1945        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1946    });
1947
1948    addFormatToken('hmmss', 0, 0, function () {
1949        return (
1950            '' +
1951            hFormat.apply(this) +
1952            zeroFill(this.minutes(), 2) +
1953            zeroFill(this.seconds(), 2)
1954        );
1955    });
1956
1957    addFormatToken('Hmm', 0, 0, function () {
1958        return '' + this.hours() + zeroFill(this.minutes(), 2);
1959    });
1960
1961    addFormatToken('Hmmss', 0, 0, function () {
1962        return (
1963            '' +
1964            this.hours() +
1965            zeroFill(this.minutes(), 2) +
1966            zeroFill(this.seconds(), 2)
1967        );
1968    });
1969
1970    function meridiem(token, lowercase) {
1971        addFormatToken(token, 0, 0, function () {
1972            return this.localeData().meridiem(
1973                this.hours(),
1974                this.minutes(),
1975                lowercase
1976            );
1977        });
1978    }
1979
1980    meridiem('a', true);
1981    meridiem('A', false);
1982
1983    // ALIASES
1984
1985    addUnitAlias('hour', 'h');
1986
1987    // PRIORITY
1988    addUnitPriority('hour', 13);
1989
1990    // PARSING
1991
1992    function matchMeridiem(isStrict, locale) {
1993        return locale._meridiemParse;
1994    }
1995
1996    addRegexToken('a', matchMeridiem);
1997    addRegexToken('A', matchMeridiem);
1998    addRegexToken('H', match1to2);
1999    addRegexToken('h', match1to2);
2000    addRegexToken('k', match1to2);
2001    addRegexToken('HH', match1to2, match2);
2002    addRegexToken('hh', match1to2, match2);
2003    addRegexToken('kk', match1to2, match2);
2004
2005    addRegexToken('hmm', match3to4);
2006    addRegexToken('hmmss', match5to6);
2007    addRegexToken('Hmm', match3to4);
2008    addRegexToken('Hmmss', match5to6);
2009
2010    addParseToken(['H', 'HH'], HOUR);
2011    addParseToken(['k', 'kk'], function (input, array, config) {
2012        var kInput = toInt(input);
2013        array[HOUR] = kInput === 24 ? 0 : kInput;
2014    });
2015    addParseToken(['a', 'A'], function (input, array, config) {
2016        config._isPm = config._locale.isPM(input);
2017        config._meridiem = input;
2018    });
2019    addParseToken(['h', 'hh'], function (input, array, config) {
2020        array[HOUR] = toInt(input);
2021        getParsingFlags(config).bigHour = true;
2022    });
2023    addParseToken('hmm', function (input, array, config) {
2024        var pos = input.length - 2;
2025        array[HOUR] = toInt(input.substr(0, pos));
2026        array[MINUTE] = toInt(input.substr(pos));
2027        getParsingFlags(config).bigHour = true;
2028    });
2029    addParseToken('hmmss', function (input, array, config) {
2030        var pos1 = input.length - 4,
2031            pos2 = input.length - 2;
2032        array[HOUR] = toInt(input.substr(0, pos1));
2033        array[MINUTE] = toInt(input.substr(pos1, 2));
2034        array[SECOND] = toInt(input.substr(pos2));
2035        getParsingFlags(config).bigHour = true;
2036    });
2037    addParseToken('Hmm', function (input, array, config) {
2038        var pos = input.length - 2;
2039        array[HOUR] = toInt(input.substr(0, pos));
2040        array[MINUTE] = toInt(input.substr(pos));
2041    });
2042    addParseToken('Hmmss', function (input, array, config) {
2043        var pos1 = input.length - 4,
2044            pos2 = input.length - 2;
2045        array[HOUR] = toInt(input.substr(0, pos1));
2046        array[MINUTE] = toInt(input.substr(pos1, 2));
2047        array[SECOND] = toInt(input.substr(pos2));
2048    });
2049
2050    // LOCALES
2051
2052    function localeIsPM(input) {
2053        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
2054        // Using charAt should be more compatible.
2055        return (input + '').toLowerCase().charAt(0) === 'p';
2056    }
2057
2058    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
2059        // Setting the hour should keep the time, because the user explicitly
2060        // specified which hour they want. So trying to maintain the same hour (in
2061        // a new timezone) makes sense. Adding/subtracting hours does not follow
2062        // this rule.
2063        getSetHour = makeGetSet('Hours', true);
2064
2065    function localeMeridiem(hours, minutes, isLower) {
2066        if (hours > 11) {
2067            return isLower ? 'pm' : 'PM';
2068        } else {
2069            return isLower ? 'am' : 'AM';
2070        }
2071    }
2072
2073    var baseConfig = {
2074        calendar: defaultCalendar,
2075        longDateFormat: defaultLongDateFormat,
2076        invalidDate: defaultInvalidDate,
2077        ordinal: defaultOrdinal,
2078        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
2079        relativeTime: defaultRelativeTime,
2080
2081        months: defaultLocaleMonths,
2082        monthsShort: defaultLocaleMonthsShort,
2083
2084        week: defaultLocaleWeek,
2085
2086        weekdays: defaultLocaleWeekdays,
2087        weekdaysMin: defaultLocaleWeekdaysMin,
2088        weekdaysShort: defaultLocaleWeekdaysShort,
2089
2090        meridiemParse: defaultLocaleMeridiemParse,
2091    };
2092
2093    // internal storage for locale config files
2094    var locales = {},
2095        localeFamilies = {},
2096        globalLocale;
2097
2098    function commonPrefix(arr1, arr2) {
2099        var i,
2100            minl = Math.min(arr1.length, arr2.length);
2101        for (i = 0; i < minl; i += 1) {
2102            if (arr1[i] !== arr2[i]) {
2103                return i;
2104            }
2105        }
2106        return minl;
2107    }
2108
2109    function normalizeLocale(key) {
2110        return key ? key.toLowerCase().replace('_', '-') : key;
2111    }
2112
2113    // pick the locale from the array
2114    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
2115    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
2116    function chooseLocale(names) {
2117        var i = 0,
2118            j,
2119            next,
2120            locale,
2121            split;
2122
2123        while (i < names.length) {
2124            split = normalizeLocale(names[i]).split('-');
2125            j = split.length;
2126            next = normalizeLocale(names[i + 1]);
2127            next = next ? next.split('-') : null;
2128            while (j > 0) {
2129                locale = loadLocale(split.slice(0, j).join('-'));
2130                if (locale) {
2131                    return locale;
2132                }
2133                if (
2134                    next &&
2135                    next.length >= j &&
2136                    commonPrefix(split, next) >= j - 1
2137                ) {
2138                    //the next array item is better than a shallower substring of this one
2139                    break;
2140                }
2141                j--;
2142            }
2143            i++;
2144        }
2145        return globalLocale;
2146    }
2147
2148    function loadLocale(name) {
2149        var oldLocale = null,
2150            aliasedRequire;
2151        // TODO: Find a better way to register and load all the locales in Node
2152        if (
2153            locales[name] === undefined &&
2154            typeof module !== 'undefined' &&
2155            module &&
2156            module.exports
2157        ) {
2158            try {
2159                oldLocale = globalLocale._abbr;
2160                aliasedRequire = require;
2161                __webpack_require__(148)("./" + name);
2162                getSetGlobalLocale(oldLocale);
2163            } catch (e) {
2164                // mark as not found to avoid repeating expensive file require call causing high CPU
2165                // when trying to find en-US, en_US, en-us for every format call
2166                locales[name] = null; // null means not found
2167            }
2168        }
2169        return locales[name];
2170    }
2171
2172    // This function will load locale and then set the global locale.  If
2173    // no arguments are passed in, it will simply return the current global
2174    // locale key.
2175    function getSetGlobalLocale(key, values) {
2176        var data;
2177        if (key) {
2178            if (isUndefined(values)) {
2179                data = getLocale(key);
2180            } else {
2181                data = defineLocale(key, values);
2182            }
2183
2184            if (data) {
2185                // moment.duration._locale = moment._locale = data;
2186                globalLocale = data;
2187            } else {
2188                if (typeof console !== 'undefined' && console.warn) {
2189                    //warn user if arguments are passed but the locale could not be set
2190                    console.warn(
2191                        'Locale ' + key + ' not found. Did you forget to load it?'
2192                    );
2193                }
2194            }
2195        }
2196
2197        return globalLocale._abbr;
2198    }
2199
2200    function defineLocale(name, config) {
2201        if (config !== null) {
2202            var locale,
2203                parentConfig = baseConfig;
2204            config.abbr = name;
2205            if (locales[name] != null) {
2206                deprecateSimple(
2207                    'defineLocaleOverride',
2208                    'use moment.updateLocale(localeName, config) to change ' +
2209                        'an existing locale. moment.defineLocale(localeName, ' +
2210                        'config) should only be used for creating a new locale ' +
2211                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
2212                );
2213                parentConfig = locales[name]._config;
2214            } else if (config.parentLocale != null) {
2215                if (locales[config.parentLocale] != null) {
2216                    parentConfig = locales[config.parentLocale]._config;
2217                } else {
2218                    locale = loadLocale(config.parentLocale);
2219                    if (locale != null) {
2220                        parentConfig = locale._config;
2221                    } else {
2222                        if (!localeFamilies[config.parentLocale]) {
2223                            localeFamilies[config.parentLocale] = [];
2224                        }
2225                        localeFamilies[config.parentLocale].push({
2226                            name: name,
2227                            config: config,
2228                        });
2229                        return null;
2230                    }
2231                }
2232            }
2233            locales[name] = new Locale(mergeConfigs(parentConfig, config));
2234
2235            if (localeFamilies[name]) {
2236                localeFamilies[name].forEach(function (x) {
2237                    defineLocale(x.name, x.config);
2238                });
2239            }
2240
2241            // backwards compat for now: also set the locale
2242            // make sure we set the locale AFTER all child locales have been
2243            // created, so we won't end up with the child locale set.
2244            getSetGlobalLocale(name);
2245
2246            return locales[name];
2247        } else {
2248            // useful for testing
2249            delete locales[name];
2250            return null;
2251        }
2252    }
2253
2254    function updateLocale(name, config) {
2255        if (config != null) {
2256            var locale,
2257                tmpLocale,
2258                parentConfig = baseConfig;
2259
2260            if (locales[name] != null && locales[name].parentLocale != null) {
2261                // Update existing child locale in-place to avoid memory-leaks
2262                locales[name].set(mergeConfigs(locales[name]._config, config));
2263            } else {
2264                // MERGE
2265                tmpLocale = loadLocale(name);
2266                if (tmpLocale != null) {
2267                    parentConfig = tmpLocale._config;
2268                }
2269                config = mergeConfigs(parentConfig, config);
2270                if (tmpLocale == null) {
2271                    // updateLocale is called for creating a new locale
2272                    // Set abbr so it will have a name (getters return
2273                    // undefined otherwise).
2274                    config.abbr = name;
2275                }
2276                locale = new Locale(config);
2277                locale.parentLocale = locales[name];
2278                locales[name] = locale;
2279            }
2280
2281            // backwards compat for now: also set the locale
2282            getSetGlobalLocale(name);
2283        } else {
2284            // pass null for config to unupdate, useful for tests
2285            if (locales[name] != null) {
2286                if (locales[name].parentLocale != null) {
2287                    locales[name] = locales[name].parentLocale;
2288                    if (name === getSetGlobalLocale()) {
2289                        getSetGlobalLocale(name);
2290                    }
2291                } else if (locales[name] != null) {
2292                    delete locales[name];
2293                }
2294            }
2295        }
2296        return locales[name];
2297    }
2298
2299    // returns locale data
2300    function getLocale(key) {
2301        var locale;
2302
2303        if (key && key._locale && key._locale._abbr) {
2304            key = key._locale._abbr;
2305        }
2306
2307        if (!key) {
2308            return globalLocale;
2309        }
2310
2311        if (!isArray(key)) {
2312            //short-circuit everything else
2313            locale = loadLocale(key);
2314            if (locale) {
2315                return locale;
2316            }
2317            key = [key];
2318        }
2319
2320        return chooseLocale(key);
2321    }
2322
2323    function listLocales() {
2324        return keys(locales);
2325    }
2326
2327    function checkOverflow(m) {
2328        var overflow,
2329            a = m._a;
2330
2331        if (a && getParsingFlags(m).overflow === -2) {
2332            overflow =
2333                a[MONTH] < 0 || a[MONTH] > 11
2334                    ? MONTH
2335                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
2336                    ? DATE
2337                    : a[HOUR] < 0 ||
2338                      a[HOUR] > 24 ||
2339                      (a[HOUR] === 24 &&
2340                          (a[MINUTE] !== 0 ||
2341                              a[SECOND] !== 0 ||
2342                              a[MILLISECOND] !== 0))
2343                    ? HOUR
2344                    : a[MINUTE] < 0 || a[MINUTE] > 59
2345                    ? MINUTE
2346                    : a[SECOND] < 0 || a[SECOND] > 59
2347                    ? SECOND
2348                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
2349                    ? MILLISECOND
2350                    : -1;
2351
2352            if (
2353                getParsingFlags(m)._overflowDayOfYear &&
2354                (overflow < YEAR || overflow > DATE)
2355            ) {
2356                overflow = DATE;
2357            }
2358            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
2359                overflow = WEEK;
2360            }
2361            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
2362                overflow = WEEKDAY;
2363            }
2364
2365            getParsingFlags(m).overflow = overflow;
2366        }
2367
2368        return m;
2369    }
2370
2371    // iso 8601 regex
2372    // 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)
2373    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2374        basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2375        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
2376        isoDates = [
2377            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2378            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2379            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2380            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2381            ['YYYY-DDD', /\d{4}-\d{3}/],
2382            ['YYYY-MM', /\d{4}-\d\d/, false],
2383            ['YYYYYYMMDD', /[+-]\d{10}/],
2384            ['YYYYMMDD', /\d{8}/],
2385            ['GGGG[W]WWE', /\d{4}W\d{3}/],
2386            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2387            ['YYYYDDD', /\d{7}/],
2388            ['YYYYMM', /\d{6}/, false],
2389            ['YYYY', /\d{4}/, false],
2390        ],
2391        // iso time formats and regexes
2392        isoTimes = [
2393            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2394            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2395            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2396            ['HH:mm', /\d\d:\d\d/],
2397            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2398            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2399            ['HHmmss', /\d\d\d\d\d\d/],
2400            ['HHmm', /\d\d\d\d/],
2401            ['HH', /\d\d/],
2402        ],
2403        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
2404        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2405        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
2406        obsOffsets = {
2407            UT: 0,
2408            GMT: 0,
2409            EDT: -4 * 60,
2410            EST: -5 * 60,
2411            CDT: -5 * 60,
2412            CST: -6 * 60,
2413            MDT: -6 * 60,
2414            MST: -7 * 60,
2415            PDT: -7 * 60,
2416            PST: -8 * 60,
2417        };
2418
2419    // date from iso format
2420    function configFromISO(config) {
2421        var i,
2422            l,
2423            string = config._i,
2424            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2425            allowTime,
2426            dateFormat,
2427            timeFormat,
2428            tzFormat;
2429
2430        if (match) {
2431            getParsingFlags(config).iso = true;
2432
2433            for (i = 0, l = isoDates.length; i < l; i++) {
2434                if (isoDates[i][1].exec(match[1])) {
2435                    dateFormat = isoDates[i][0];
2436                    allowTime = isoDates[i][2] !== false;
2437                    break;
2438                }
2439            }
2440            if (dateFormat == null) {
2441                config._isValid = false;
2442                return;
2443            }
2444            if (match[3]) {
2445                for (i = 0, l = isoTimes.length; i < l; i++) {
2446                    if (isoTimes[i][1].exec(match[3])) {
2447                        // match[2] should be 'T' or space
2448                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
2449                        break;
2450                    }
2451                }
2452                if (timeFormat == null) {
2453                    config._isValid = false;
2454                    return;
2455                }
2456            }
2457            if (!allowTime && timeFormat != null) {
2458                config._isValid = false;
2459                return;
2460            }
2461            if (match[4]) {
2462                if (tzRegex.exec(match[4])) {
2463                    tzFormat = 'Z';
2464                } else {
2465                    config._isValid = false;
2466                    return;
2467                }
2468            }
2469            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2470            configFromStringAndFormat(config);
2471        } else {
2472            config._isValid = false;
2473        }
2474    }
2475
2476    function extractFromRFC2822Strings(
2477        yearStr,
2478        monthStr,
2479        dayStr,
2480        hourStr,
2481        minuteStr,
2482        secondStr
2483    ) {
2484        var result = [
2485            untruncateYear(yearStr),
2486            defaultLocaleMonthsShort.indexOf(monthStr),
2487            parseInt(dayStr, 10),
2488            parseInt(hourStr, 10),
2489            parseInt(minuteStr, 10),
2490        ];
2491
2492        if (secondStr) {
2493            result.push(parseInt(secondStr, 10));
2494        }
2495
2496        return result;
2497    }
2498
2499    function untruncateYear(yearStr) {
2500        var year = parseInt(yearStr, 10);
2501        if (year <= 49) {
2502            return 2000 + year;
2503        } else if (year <= 999) {
2504            return 1900 + year;
2505        }
2506        return year;
2507    }
2508
2509    function preprocessRFC2822(s) {
2510        // Remove comments and folding whitespace and replace multiple-spaces with a single space
2511        return s
2512            .replace(/\([^)]*\)|[\n\t]/g, ' ')
2513            .replace(/(\s\s+)/g, ' ')
2514            .replace(/^\s\s*/, '')
2515            .replace(/\s\s*$/, '');
2516    }
2517
2518    function checkWeekday(weekdayStr, parsedInput, config) {
2519        if (weekdayStr) {
2520            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
2521            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2522                weekdayActual = new Date(
2523                    parsedInput[0],
2524                    parsedInput[1],
2525                    parsedInput[2]
2526                ).getDay();
2527            if (weekdayProvided !== weekdayActual) {
2528                getParsingFlags(config).weekdayMismatch = true;
2529                config._isValid = false;
2530                return false;
2531            }
2532        }
2533        return true;
2534    }
2535
2536    function calculateOffset(obsOffset, militaryOffset, numOffset) {
2537        if (obsOffset) {
2538            return obsOffsets[obsOffset];
2539        } else if (militaryOffset) {
2540            // the only allowed military tz is Z
2541            return 0;
2542        } else {
2543            var hm = parseInt(numOffset, 10),
2544                m = hm % 100,
2545                h = (hm - m) / 100;
2546            return h * 60 + m;
2547        }
2548    }
2549
2550    // date and time from ref 2822 format
2551    function configFromRFC2822(config) {
2552        var match = rfc2822.exec(preprocessRFC2822(config._i)),
2553            parsedArray;
2554        if (match) {
2555            parsedArray = extractFromRFC2822Strings(
2556                match[4],
2557                match[3],
2558                match[2],
2559                match[5],
2560                match[6],
2561                match[7]
2562            );
2563            if (!checkWeekday(match[1], parsedArray, config)) {
2564                return;
2565            }
2566
2567            config._a = parsedArray;
2568            config._tzm = calculateOffset(match[8], match[9], match[10]);
2569
2570            config._d = createUTCDate.apply(null, config._a);
2571            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2572
2573            getParsingFlags(config).rfc2822 = true;
2574        } else {
2575            config._isValid = false;
2576        }
2577    }
2578
2579    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
2580    function configFromString(config) {
2581        var matched = aspNetJsonRegex.exec(config._i);
2582        if (matched !== null) {
2583            config._d = new Date(+matched[1]);
2584            return;
2585        }
2586
2587        configFromISO(config);
2588        if (config._isValid === false) {
2589            delete config._isValid;
2590        } else {
2591            return;
2592        }
2593
2594        configFromRFC2822(config);
2595        if (config._isValid === false) {
2596            delete config._isValid;
2597        } else {
2598            return;
2599        }
2600
2601        if (config._strict) {
2602            config._isValid = false;
2603        } else {
2604            // Final attempt, use Input Fallback
2605            hooks.createFromInputFallback(config);
2606        }
2607    }
2608
2609    hooks.createFromInputFallback = deprecate(
2610        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2611            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2612            'discouraged and will be removed in an upcoming major release. Please refer to ' +
2613            'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2614        function (config) {
2615            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2616        }
2617    );
2618
2619    // Pick the first defined of two or three arguments.
2620    function defaults(a, b, c) {
2621        if (a != null) {
2622            return a;
2623        }
2624        if (b != null) {
2625            return b;
2626        }
2627        return c;
2628    }
2629
2630    function currentDateArray(config) {
2631        // hooks is actually the exported moment object
2632        var nowValue = new Date(hooks.now());
2633        if (config._useUTC) {
2634            return [
2635                nowValue.getUTCFullYear(),
2636                nowValue.getUTCMonth(),
2637                nowValue.getUTCDate(),
2638            ];
2639        }
2640        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2641    }
2642
2643    // convert an array to a date.
2644    // the array should mirror the parameters below
2645    // note: all values past the year are optional and will default to the lowest possible value.
2646    // [year, month, day , hour, minute, second, millisecond]
2647    function configFromArray(config) {
2648        var i,
2649            date,
2650            input = [],
2651            currentDate,
2652            expectedWeekday,
2653            yearToUse;
2654
2655        if (config._d) {
2656            return;
2657        }
2658
2659        currentDate = currentDateArray(config);
2660
2661        //compute day of the year from weeks and weekdays
2662        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2663            dayOfYearFromWeekInfo(config);
2664        }
2665
2666        //if the day of the year is set, figure out what it is
2667        if (config._dayOfYear != null) {
2668            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2669
2670            if (
2671                config._dayOfYear > daysInYear(yearToUse) ||
2672                config._dayOfYear === 0
2673            ) {
2674                getParsingFlags(config)._overflowDayOfYear = true;
2675            }
2676
2677            date = createUTCDate(yearToUse, 0, config._dayOfYear);
2678            config._a[MONTH] = date.getUTCMonth();
2679            config._a[DATE] = date.getUTCDate();
2680        }
2681
2682        // Default to current date.
2683        // * if no year, month, day of month are given, default to today
2684        // * if day of month is given, default month and year
2685        // * if month is given, default only year
2686        // * if year is given, don't default anything
2687        for (i = 0; i < 3 && config._a[i] == null; ++i) {
2688            config._a[i] = input[i] = currentDate[i];
2689        }
2690
2691        // Zero out whatever was not defaulted, including time
2692        for (; i < 7; i++) {
2693            config._a[i] = input[i] =
2694                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
2695        }
2696
2697        // Check for 24:00:00.000
2698        if (
2699            config._a[HOUR] === 24 &&
2700            config._a[MINUTE] === 0 &&
2701            config._a[SECOND] === 0 &&
2702            config._a[MILLISECOND] === 0
2703        ) {
2704            config._nextDay = true;
2705            config._a[HOUR] = 0;
2706        }
2707
2708        config._d = (config._useUTC ? createUTCDate : createDate).apply(
2709            null,
2710            input
2711        );
2712        expectedWeekday = config._useUTC
2713            ? config._d.getUTCDay()
2714            : config._d.getDay();
2715
2716        // Apply timezone offset from input. The actual utcOffset can be changed
2717        // with parseZone.
2718        if (config._tzm != null) {
2719            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2720        }
2721
2722        if (config._nextDay) {
2723            config._a[HOUR] = 24;
2724        }
2725
2726        // check for mismatching day of week
2727        if (
2728            config._w &&
2729            typeof config._w.d !== 'undefined' &&
2730            config._w.d !== expectedWeekday
2731        ) {
2732            getParsingFlags(config).weekdayMismatch = true;
2733        }
2734    }
2735
2736    function dayOfYearFromWeekInfo(config) {
2737        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
2738
2739        w = config._w;
2740        if (w.GG != null || w.W != null || w.E != null) {
2741            dow = 1;
2742            doy = 4;
2743
2744            // TODO: We need to take the current isoWeekYear, but that depends on
2745            // how we interpret now (local, utc, fixed offset). So create
2746            // a now version of current config (take local/utc/offset flags, and
2747            // create now).
2748            weekYear = defaults(
2749                w.GG,
2750                config._a[YEAR],
2751                weekOfYear(createLocal(), 1, 4).year
2752            );
2753            week = defaults(w.W, 1);
2754            weekday = defaults(w.E, 1);
2755            if (weekday < 1 || weekday > 7) {
2756                weekdayOverflow = true;
2757            }
2758        } else {
2759            dow = config._locale._week.dow;
2760            doy = config._locale._week.doy;
2761
2762            curWeek = weekOfYear(createLocal(), dow, doy);
2763
2764            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2765
2766            // Default to current week.
2767            week = defaults(w.w, curWeek.week);
2768
2769            if (w.d != null) {
2770                // weekday -- low day numbers are considered next week
2771                weekday = w.d;
2772                if (weekday < 0 || weekday > 6) {
2773                    weekdayOverflow = true;
2774                }
2775            } else if (w.e != null) {
2776                // local weekday -- counting starts from beginning of week
2777                weekday = w.e + dow;
2778                if (w.e < 0 || w.e > 6) {
2779                    weekdayOverflow = true;
2780                }
2781            } else {
2782                // default to beginning of week
2783                weekday = dow;
2784            }
2785        }
2786        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2787            getParsingFlags(config)._overflowWeeks = true;
2788        } else if (weekdayOverflow != null) {
2789            getParsingFlags(config)._overflowWeekday = true;
2790        } else {
2791            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2792            config._a[YEAR] = temp.year;
2793            config._dayOfYear = temp.dayOfYear;
2794        }
2795    }
2796
2797    // constant that refers to the ISO standard
2798    hooks.ISO_8601 = function () {};
2799
2800    // constant that refers to the RFC 2822 form
2801    hooks.RFC_2822 = function () {};
2802
2803    // date from string and format string
2804    function configFromStringAndFormat(config) {
2805        // TODO: Move this to another part of the creation flow to prevent circular deps
2806        if (config._f === hooks.ISO_8601) {
2807            configFromISO(config);
2808            return;
2809        }
2810        if (config._f === hooks.RFC_2822) {
2811            configFromRFC2822(config);
2812            return;
2813        }
2814        config._a = [];
2815        getParsingFlags(config).empty = true;
2816
2817        // This array is used to make a Date, either with `new Date` or `Date.UTC`
2818        var string = '' + config._i,
2819            i,
2820            parsedInput,
2821            tokens,
2822            token,
2823            skipped,
2824            stringLength = string.length,
2825            totalParsedInputLength = 0,
2826            era;
2827
2828        tokens =
2829            expandFormat(config._f, config._locale).match(formattingTokens) || [];
2830
2831        for (i = 0; i < tokens.length; i++) {
2832            token = tokens[i];
2833            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
2834                [])[0];
2835            if (parsedInput) {
2836                skipped = string.substr(0, string.indexOf(parsedInput));
2837                if (skipped.length > 0) {
2838                    getParsingFlags(config).unusedInput.push(skipped);
2839                }
2840                string = string.slice(
2841                    string.indexOf(parsedInput) + parsedInput.length
2842                );
2843                totalParsedInputLength += parsedInput.length;
2844            }
2845            // don't parse if it's not a known token
2846            if (formatTokenFunctions[token]) {
2847                if (parsedInput) {
2848                    getParsingFlags(config).empty = false;
2849                } else {
2850                    getParsingFlags(config).unusedTokens.push(token);
2851                }
2852                addTimeToArrayFromToken(token, parsedInput, config);
2853            } else if (config._strict && !parsedInput) {
2854                getParsingFlags(config).unusedTokens.push(token);
2855            }
2856        }
2857
2858        // add remaining unparsed input length to the string
2859        getParsingFlags(config).charsLeftOver =
2860            stringLength - totalParsedInputLength;
2861        if (string.length > 0) {
2862            getParsingFlags(config).unusedInput.push(string);
2863        }
2864
2865        // clear _12h flag if hour is <= 12
2866        if (
2867            config._a[HOUR] <= 12 &&
2868            getParsingFlags(config).bigHour === true &&
2869            config._a[HOUR] > 0
2870        ) {
2871            getParsingFlags(config).bigHour = undefined;
2872        }
2873
2874        getParsingFlags(config).parsedDateParts = config._a.slice(0);
2875        getParsingFlags(config).meridiem = config._meridiem;
2876        // handle meridiem
2877        config._a[HOUR] = meridiemFixWrap(
2878            config._locale,
2879            config._a[HOUR],
2880            config._meridiem
2881        );
2882
2883        // handle era
2884        era = getParsingFlags(config).era;
2885        if (era !== null) {
2886            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
2887        }
2888
2889        configFromArray(config);
2890        checkOverflow(config);
2891    }
2892
2893    function meridiemFixWrap(locale, hour, meridiem) {
2894        var isPm;
2895
2896        if (meridiem == null) {
2897            // nothing to do
2898            return hour;
2899        }
2900        if (locale.meridiemHour != null) {
2901            return locale.meridiemHour(hour, meridiem);
2902        } else if (locale.isPM != null) {
2903            // Fallback
2904            isPm = locale.isPM(meridiem);
2905            if (isPm && hour < 12) {
2906                hour += 12;
2907            }
2908            if (!isPm && hour === 12) {
2909                hour = 0;
2910            }
2911            return hour;
2912        } else {
2913            // this is not supposed to happen
2914            return hour;
2915        }
2916    }
2917
2918    // date from string and array of format strings
2919    function configFromStringAndArray(config) {
2920        var tempConfig,
2921            bestMoment,
2922            scoreToBeat,
2923            i,
2924            currentScore,
2925            validFormatFound,
2926            bestFormatIsValid = false;
2927
2928        if (config._f.length === 0) {
2929            getParsingFlags(config).invalidFormat = true;
2930            config._d = new Date(NaN);
2931            return;
2932        }
2933
2934        for (i = 0; i < config._f.length; i++) {
2935            currentScore = 0;
2936            validFormatFound = false;
2937            tempConfig = copyConfig({}, config);
2938            if (config._useUTC != null) {
2939                tempConfig._useUTC = config._useUTC;
2940            }
2941            tempConfig._f = config._f[i];
2942            configFromStringAndFormat(tempConfig);
2943
2944            if (isValid(tempConfig)) {
2945                validFormatFound = true;
2946            }
2947
2948            // if there is any input that was not parsed add a penalty for that format
2949            currentScore += getParsingFlags(tempConfig).charsLeftOver;
2950
2951            //or tokens
2952            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2953
2954            getParsingFlags(tempConfig).score = currentScore;
2955
2956            if (!bestFormatIsValid) {
2957                if (
2958                    scoreToBeat == null ||
2959                    currentScore < scoreToBeat ||
2960                    validFormatFound
2961                ) {
2962                    scoreToBeat = currentScore;
2963                    bestMoment = tempConfig;
2964                    if (validFormatFound) {
2965                        bestFormatIsValid = true;
2966                    }
2967                }
2968            } else {
2969                if (currentScore < scoreToBeat) {
2970                    scoreToBeat = currentScore;
2971                    bestMoment = tempConfig;
2972                }
2973            }
2974        }
2975
2976        extend(config, bestMoment || tempConfig);
2977    }
2978
2979    function configFromObject(config) {
2980        if (config._d) {
2981            return;
2982        }
2983
2984        var i = normalizeObjectUnits(config._i),
2985            dayOrDate = i.day === undefined ? i.date : i.day;
2986        config._a = map(
2987            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
2988            function (obj) {
2989                return obj && parseInt(obj, 10);
2990            }
2991        );
2992
2993        configFromArray(config);
2994    }
2995
2996    function createFromConfig(config) {
2997        var res = new Moment(checkOverflow(prepareConfig(config)));
2998        if (res._nextDay) {
2999            // Adding is smart enough around DST
3000            res.add(1, 'd');
3001            res._nextDay = undefined;
3002        }
3003
3004        return res;
3005    }
3006
3007    function prepareConfig(config) {
3008        var input = config._i,
3009            format = config._f;
3010
3011        config._locale = config._locale || getLocale(config._l);
3012
3013        if (input === null || (format === undefined && input === '')) {
3014            return createInvalid({ nullInput: true });
3015        }
3016
3017        if (typeof input === 'string') {
3018            config._i = input = config._locale.preparse(input);
3019        }
3020
3021        if (isMoment(input)) {
3022            return new Moment(checkOverflow(input));
3023        } else if (isDate(input)) {
3024            config._d = input;
3025        } else if (isArray(format)) {
3026            configFromStringAndArray(config);
3027        } else if (format) {
3028            configFromStringAndFormat(config);
3029        } else {
3030            configFromInput(config);
3031        }
3032
3033        if (!isValid(config)) {
3034            config._d = null;
3035        }
3036
3037        return config;
3038    }
3039
3040    function configFromInput(config) {
3041        var input = config._i;
3042        if (isUndefined(input)) {
3043            config._d = new Date(hooks.now());
3044        } else if (isDate(input)) {
3045            config._d = new Date(input.valueOf());
3046        } else if (typeof input === 'string') {
3047            configFromString(config);
3048        } else if (isArray(input)) {
3049            config._a = map(input.slice(0), function (obj) {
3050                return parseInt(obj, 10);
3051            });
3052            configFromArray(config);
3053        } else if (isObject(input)) {
3054            configFromObject(config);
3055        } else if (isNumber(input)) {
3056            // from milliseconds
3057            config._d = new Date(input);
3058        } else {
3059            hooks.createFromInputFallback(config);
3060        }
3061    }
3062
3063    function createLocalOrUTC(input, format, locale, strict, isUTC) {
3064        var c = {};
3065
3066        if (format === true || format === false) {
3067            strict = format;
3068            format = undefined;
3069        }
3070
3071        if (locale === true || locale === false) {
3072            strict = locale;
3073            locale = undefined;
3074        }
3075
3076        if (
3077            (isObject(input) && isObjectEmpty(input)) ||
3078            (isArray(input) && input.length === 0)
3079        ) {
3080            input = undefined;
3081        }
3082        // object construction must be done this way.
3083        // https://github.com/moment/moment/issues/1423
3084        c._isAMomentObject = true;
3085        c._useUTC = c._isUTC = isUTC;
3086        c._l = locale;
3087        c._i = input;
3088        c._f = format;
3089        c._strict = strict;
3090
3091        return createFromConfig(c);
3092    }
3093
3094    function createLocal(input, format, locale, strict) {
3095        return createLocalOrUTC(input, format, locale, strict, false);
3096    }
3097
3098    var prototypeMin = deprecate(
3099            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
3100            function () {
3101                var other = createLocal.apply(null, arguments);
3102                if (this.isValid() && other.isValid()) {
3103                    return other < this ? this : other;
3104                } else {
3105                    return createInvalid();
3106                }
3107            }
3108        ),
3109        prototypeMax = deprecate(
3110            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
3111            function () {
3112                var other = createLocal.apply(null, arguments);
3113                if (this.isValid() && other.isValid()) {
3114                    return other > this ? this : other;
3115                } else {
3116                    return createInvalid();
3117                }
3118            }
3119        );
3120
3121    // Pick a moment m from moments so that m[fn](other) is true for all
3122    // other. This relies on the function fn to be transitive.
3123    //
3124    // moments should either be an array of moment objects or an array, whose
3125    // first element is an array of moment objects.
3126    function pickBy(fn, moments) {
3127        var res, i;
3128        if (moments.length === 1 && isArray(moments[0])) {
3129            moments = moments[0];
3130        }
3131        if (!moments.length) {
3132            return createLocal();
3133        }
3134        res = moments[0];
3135        for (i = 1; i < moments.length; ++i) {
3136            if (!moments[i].isValid() || moments[i][fn](res)) {
3137                res = moments[i];
3138            }
3139        }
3140        return res;
3141    }
3142
3143    // TODO: Use [].sort instead?
3144    function min() {
3145        var args = [].slice.call(arguments, 0);
3146
3147        return pickBy('isBefore', args);
3148    }
3149
3150    function max() {
3151        var args = [].slice.call(arguments, 0);
3152
3153        return pickBy('isAfter', args);
3154    }
3155
3156    var now = function () {
3157        return Date.now ? Date.now() : +new Date();
3158    };
3159
3160    var ordering = [
3161        'year',
3162        'quarter',
3163        'month',
3164        'week',
3165        'day',
3166        'hour',
3167        'minute',
3168        'second',
3169        'millisecond',
3170    ];
3171
3172    function isDurationValid(m) {
3173        var key,
3174            unitHasDecimal = false,
3175            i;
3176        for (key in m) {
3177            if (
3178                hasOwnProp(m, key) &&
3179                !(
3180                    indexOf.call(ordering, key) !== -1 &&
3181                    (m[key] == null || !isNaN(m[key]))
3182                )
3183            ) {
3184                return false;
3185            }
3186        }
3187
3188        for (i = 0; i < ordering.length; ++i) {
3189            if (m[ordering[i]]) {
3190                if (unitHasDecimal) {
3191                    return false; // only allow non-integers for smallest unit
3192                }
3193                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
3194                    unitHasDecimal = true;
3195                }
3196            }
3197        }
3198
3199        return true;
3200    }
3201
3202    function isValid$1() {
3203        return this._isValid;
3204    }
3205
3206    function createInvalid$1() {
3207        return createDuration(NaN);
3208    }
3209
3210    function Duration(duration) {
3211        var normalizedInput = normalizeObjectUnits(duration),
3212            years = normalizedInput.year || 0,
3213            quarters = normalizedInput.quarter || 0,
3214            months = normalizedInput.month || 0,
3215            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
3216            days = normalizedInput.day || 0,
3217            hours = normalizedInput.hour || 0,
3218            minutes = normalizedInput.minute || 0,
3219            seconds = normalizedInput.second || 0,
3220            milliseconds = normalizedInput.millisecond || 0;
3221
3222        this._isValid = isDurationValid(normalizedInput);
3223
3224        // representation for dateAddRemove
3225        this._milliseconds =
3226            +milliseconds +
3227            seconds * 1e3 + // 1000
3228            minutes * 6e4 + // 1000 * 60
3229            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
3230        // Because of dateAddRemove treats 24 hours as different from a
3231        // day when working around DST, we need to store them separately
3232        this._days = +days + weeks * 7;
3233        // It is impossible to translate months into days without knowing
3234        // which months you are are talking about, so we have to store
3235        // it separately.
3236        this._months = +months + quarters * 3 + years * 12;
3237
3238        this._data = {};
3239
3240        this._locale = getLocale();
3241
3242        this._bubble();
3243    }
3244
3245    function isDuration(obj) {
3246        return obj instanceof Duration;
3247    }
3248
3249    function absRound(number) {
3250        if (number < 0) {
3251            return Math.round(-1 * number) * -1;
3252        } else {
3253            return Math.round(number);
3254        }
3255    }
3256
3257    // compare two arrays, return the number of differences
3258    function compareArrays(array1, array2, dontConvert) {
3259        var len = Math.min(array1.length, array2.length),
3260            lengthDiff = Math.abs(array1.length - array2.length),
3261            diffs = 0,
3262            i;
3263        for (i = 0; i < len; i++) {
3264            if (
3265                (dontConvert && array1[i] !== array2[i]) ||
3266                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
3267            ) {
3268                diffs++;
3269            }
3270        }
3271        return diffs + lengthDiff;
3272    }
3273
3274    // FORMATTING
3275
3276    function offset(token, separator) {
3277        addFormatToken(token, 0, 0, function () {
3278            var offset = this.utcOffset(),
3279                sign = '+';
3280            if (offset < 0) {
3281                offset = -offset;
3282                sign = '-';
3283            }
3284            return (
3285                sign +
3286                zeroFill(~~(offset / 60), 2) +
3287                separator +
3288                zeroFill(~~offset % 60, 2)
3289            );
3290        });
3291    }
3292
3293    offset('Z', ':');
3294    offset('ZZ', '');
3295
3296    // PARSING
3297
3298    addRegexToken('Z', matchShortOffset);
3299    addRegexToken('ZZ', matchShortOffset);
3300    addParseToken(['Z', 'ZZ'], function (input, array, config) {
3301        config._useUTC = true;
3302        config._tzm = offsetFromString(matchShortOffset, input);
3303    });
3304
3305    // HELPERS
3306
3307    // timezone chunker
3308    // '+10:00' > ['10',  '00']
3309    // '-1530'  > ['-15', '30']
3310    var chunkOffset = /([\+\-]|\d\d)/gi;
3311
3312    function offsetFromString(matcher, string) {
3313        var matches = (string || '').match(matcher),
3314            chunk,
3315            parts,
3316            minutes;
3317
3318        if (matches === null) {
3319            return null;
3320        }
3321
3322        chunk = matches[matches.length - 1] || [];
3323        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
3324        minutes = +(parts[1] * 60) + toInt(parts[2]);
3325
3326        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
3327    }
3328
3329    // Return a moment from input, that is local/utc/zone equivalent to model.
3330    function cloneWithOffset(input, model) {
3331        var res, diff;
3332        if (model._isUTC) {
3333            res = model.clone();
3334            diff =
3335                (isMoment(input) || isDate(input)
3336                    ? input.valueOf()
3337                    : createLocal(input).valueOf()) - res.valueOf();
3338            // Use low-level api, because this fn is low-level api.
3339            res._d.setTime(res._d.valueOf() + diff);
3340            hooks.updateOffset(res, false);
3341            return res;
3342        } else {
3343            return createLocal(input).local();
3344        }
3345    }
3346
3347    function getDateOffset(m) {
3348        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
3349        // https://github.com/moment/moment/pull/1871
3350        return -Math.round(m._d.getTimezoneOffset());
3351    }
3352
3353    // HOOKS
3354
3355    // This function will be called whenever a moment is mutated.
3356    // It is intended to keep the offset in sync with the timezone.
3357    hooks.updateOffset = function () {};
3358
3359    // MOMENTS
3360
3361    // keepLocalTime = true means only change the timezone, without
3362    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
3363    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
3364    // +0200, so we adjust the time as needed, to be valid.
3365    //
3366    // Keeping the time actually adds/subtracts (one hour)
3367    // from the actual represented time. That is why we call updateOffset
3368    // a second time. In case it wants us to change the offset again
3369    // _changeInProgress == true case, then we have to adjust, because
3370    // there is no such time in the given timezone.
3371    function getSetOffset(input, keepLocalTime, keepMinutes) {
3372        var offset = this._offset || 0,
3373            localAdjust;
3374        if (!this.isValid()) {
3375            return input != null ? this : NaN;
3376        }
3377        if (input != null) {
3378            if (typeof input === 'string') {
3379                input = offsetFromString(matchShortOffset, input);
3380                if (input === null) {
3381                    return this;
3382                }
3383            } else if (Math.abs(input) < 16 && !keepMinutes) {
3384                input = input * 60;
3385            }
3386            if (!this._isUTC && keepLocalTime) {
3387                localAdjust = getDateOffset(this);
3388            }
3389            this._offset = input;
3390            this._isUTC = true;
3391            if (localAdjust != null) {
3392                this.add(localAdjust, 'm');
3393            }
3394            if (offset !== input) {
3395                if (!keepLocalTime || this._changeInProgress) {
3396                    addSubtract(
3397                        this,
3398                        createDuration(input - offset, 'm'),
3399                        1,
3400                        false
3401                    );
3402                } else if (!this._changeInProgress) {
3403                    this._changeInProgress = true;
3404                    hooks.updateOffset(this, true);
3405                    this._changeInProgress = null;
3406                }
3407            }
3408            return this;
3409        } else {
3410            return this._isUTC ? offset : getDateOffset(this);
3411        }
3412    }
3413
3414    function getSetZone(input, keepLocalTime) {
3415        if (input != null) {
3416            if (typeof input !== 'string') {
3417                input = -input;
3418            }
3419
3420            this.utcOffset(input, keepLocalTime);
3421
3422            return this;
3423        } else {
3424            return -this.utcOffset();
3425        }
3426    }
3427
3428    function setOffsetToUTC(keepLocalTime) {
3429        return this.utcOffset(0, keepLocalTime);
3430    }
3431
3432    function setOffsetToLocal(keepLocalTime) {
3433        if (this._isUTC) {
3434            this.utcOffset(0, keepLocalTime);
3435            this._isUTC = false;
3436
3437            if (keepLocalTime) {
3438                this.subtract(getDateOffset(this), 'm');
3439            }
3440        }
3441        return this;
3442    }
3443
3444    function setOffsetToParsedOffset() {
3445        if (this._tzm != null) {
3446            this.utcOffset(this._tzm, false, true);
3447        } else if (typeof this._i === 'string') {
3448            var tZone = offsetFromString(matchOffset, this._i);
3449            if (tZone != null) {
3450                this.utcOffset(tZone);
3451            } else {
3452                this.utcOffset(0, true);
3453            }
3454        }
3455        return this;
3456    }
3457
3458    function hasAlignedHourOffset(input) {
3459        if (!this.isValid()) {
3460            return false;
3461        }
3462        input = input ? createLocal(input).utcOffset() : 0;
3463
3464        return (this.utcOffset() - input) % 60 === 0;
3465    }
3466
3467    function isDaylightSavingTime() {
3468        return (
3469            this.utcOffset() > this.clone().month(0).utcOffset() ||
3470            this.utcOffset() > this.clone().month(5).utcOffset()
3471        );
3472    }
3473
3474    function isDaylightSavingTimeShifted() {
3475        if (!isUndefined(this._isDSTShifted)) {
3476            return this._isDSTShifted;
3477        }
3478
3479        var c = {},
3480            other;
3481
3482        copyConfig(c, this);
3483        c = prepareConfig(c);
3484
3485        if (c._a) {
3486            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
3487            this._isDSTShifted =
3488                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
3489        } else {
3490            this._isDSTShifted = false;
3491        }
3492
3493        return this._isDSTShifted;
3494    }
3495
3496    function isLocal() {
3497        return this.isValid() ? !this._isUTC : false;
3498    }
3499
3500    function isUtcOffset() {
3501        return this.isValid() ? this._isUTC : false;
3502    }
3503
3504    function isUtc() {
3505        return this.isValid() ? this._isUTC && this._offset === 0 : false;
3506    }
3507
3508    // ASP.NET json date format regex
3509    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
3510        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3511        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3512        // and further modified to allow for strings containing both week and day
3513        isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
3514
3515    function createDuration(input, key) {
3516        var duration = input,
3517            // matching against regexp is expensive, do it on demand
3518            match = null,
3519            sign,
3520            ret,
3521            diffRes;
3522
3523        if (isDuration(input)) {
3524            duration = {
3525                ms: input._milliseconds,
3526                d: input._days,
3527                M: input._months,
3528            };
3529        } else if (isNumber(input) || !isNaN(+input)) {
3530            duration = {};
3531            if (key) {
3532                duration[key] = +input;
3533            } else {
3534                duration.milliseconds = +input;
3535            }
3536        } else if ((match = aspNetRegex.exec(input))) {
3537            sign = match[1] === '-' ? -1 : 1;
3538            duration = {
3539                y: 0,
3540                d: toInt(match[DATE]) * sign,
3541                h: toInt(match[HOUR]) * sign,
3542                m: toInt(match[MINUTE]) * sign,
3543                s: toInt(match[SECOND]) * sign,
3544                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
3545            };
3546        } else if ((match = isoRegex.exec(input))) {
3547            sign = match[1] === '-' ? -1 : 1;
3548            duration = {
3549                y: parseIso(match[2], sign),
3550                M: parseIso(match[3], sign),
3551                w: parseIso(match[4], sign),
3552                d: parseIso(match[5], sign),
3553                h: parseIso(match[6], sign),
3554                m: parseIso(match[7], sign),
3555                s: parseIso(match[8], sign),
3556            };
3557        } else if (duration == null) {
3558            // checks for null or undefined
3559            duration = {};
3560        } else if (
3561            typeof duration === 'object' &&
3562            ('from' in duration || 'to' in duration)
3563        ) {
3564            diffRes = momentsDifference(
3565                createLocal(duration.from),
3566                createLocal(duration.to)
3567            );
3568
3569            duration = {};
3570            duration.ms = diffRes.milliseconds;
3571            duration.M = diffRes.months;
3572        }
3573
3574        ret = new Duration(duration);
3575
3576        if (isDuration(input) && hasOwnProp(input, '_locale')) {
3577            ret._locale = input._locale;
3578        }
3579
3580        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
3581            ret._isValid = input._isValid;
3582        }
3583
3584        return ret;
3585    }
3586
3587    createDuration.fn = Duration.prototype;
3588    createDuration.invalid = createInvalid$1;
3589
3590    function parseIso(inp, sign) {
3591        // We'd normally use ~~inp for this, but unfortunately it also
3592        // converts floats to ints.
3593        // inp may be undefined, so careful calling replace on it.
3594        var res = inp && parseFloat(inp.replace(',', '.'));
3595        // apply sign while we're at it
3596        return (isNaN(res) ? 0 : res) * sign;
3597    }
3598
3599    function positiveMomentsDifference(base, other) {
3600        var res = {};
3601
3602        res.months =
3603            other.month() - base.month() + (other.year() - base.year()) * 12;
3604        if (base.clone().add(res.months, 'M').isAfter(other)) {
3605            --res.months;
3606        }
3607
3608        res.milliseconds = +other - +base.clone().add(res.months, 'M');
3609
3610        return res;
3611    }
3612
3613    function momentsDifference(base, other) {
3614        var res;
3615        if (!(base.isValid() && other.isValid())) {
3616            return { milliseconds: 0, months: 0 };
3617        }
3618
3619        other = cloneWithOffset(other, base);
3620        if (base.isBefore(other)) {
3621            res = positiveMomentsDifference(base, other);
3622        } else {
3623            res = positiveMomentsDifference(other, base);
3624            res.milliseconds = -res.milliseconds;
3625            res.months = -res.months;
3626        }
3627
3628        return res;
3629    }
3630
3631    // TODO: remove 'name' arg after deprecation is removed
3632    function createAdder(direction, name) {
3633        return function (val, period) {
3634            var dur, tmp;
3635            //invert the arguments, but complain about it
3636            if (period !== null && !isNaN(+period)) {
3637                deprecateSimple(
3638                    name,
3639                    'moment().' +
3640                        name +
3641                        '(period, number) is deprecated. Please use moment().' +
3642                        name +
3643                        '(number, period). ' +
3644                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
3645                );
3646                tmp = val;
3647                val = period;
3648                period = tmp;
3649            }
3650
3651            dur = createDuration(val, period);
3652            addSubtract(this, dur, direction);
3653            return this;
3654        };
3655    }
3656
3657    function addSubtract(mom, duration, isAdding, updateOffset) {
3658        var milliseconds = duration._milliseconds,
3659            days = absRound(duration._days),
3660            months = absRound(duration._months);
3661
3662        if (!mom.isValid()) {
3663            // No op
3664            return;
3665        }
3666
3667        updateOffset = updateOffset == null ? true : updateOffset;
3668
3669        if (months) {
3670            setMonth(mom, get(mom, 'Month') + months * isAdding);
3671        }
3672        if (days) {
3673            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3674        }
3675        if (milliseconds) {
3676            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3677        }
3678        if (updateOffset) {
3679            hooks.updateOffset(mom, days || months);
3680        }
3681    }
3682
3683    var add = createAdder(1, 'add'),
3684        subtract = createAdder(-1, 'subtract');
3685
3686    function isString(input) {
3687        return typeof input === 'string' || input instanceof String;
3688    }
3689
3690    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
3691    function isMomentInput(input) {
3692        return (
3693            isMoment(input) ||
3694            isDate(input) ||
3695            isString(input) ||
3696            isNumber(input) ||
3697            isNumberOrStringArray(input) ||
3698            isMomentInputObject(input) ||
3699            input === null ||
3700            input === undefined
3701        );
3702    }
3703
3704    function isMomentInputObject(input) {
3705        var objectTest = isObject(input) && !isObjectEmpty(input),
3706            propertyTest = false,
3707            properties = [
3708                'years',
3709                'year',
3710                'y',
3711                'months',
3712                'month',
3713                'M',
3714                'days',
3715                'day',
3716                'd',
3717                'dates',
3718                'date',
3719                'D',
3720                'hours',
3721                'hour',
3722                'h',
3723                'minutes',
3724                'minute',
3725                'm',
3726                'seconds',
3727                'second',
3728                's',
3729                'milliseconds',
3730                'millisecond',
3731                'ms',
3732            ],
3733            i,
3734            property;
3735
3736        for (i = 0; i < properties.length; i += 1) {
3737            property = properties[i];
3738            propertyTest = propertyTest || hasOwnProp(input, property);
3739        }
3740
3741        return objectTest && propertyTest;
3742    }
3743
3744    function isNumberOrStringArray(input) {
3745        var arrayTest = isArray(input),
3746            dataTypeTest = false;
3747        if (arrayTest) {
3748            dataTypeTest =
3749                input.filter(function (item) {
3750                    return !isNumber(item) && isString(input);
3751                }).length === 0;
3752        }
3753        return arrayTest && dataTypeTest;
3754    }
3755
3756    function isCalendarSpec(input) {
3757        var objectTest = isObject(input) && !isObjectEmpty(input),
3758            propertyTest = false,
3759            properties = [
3760                'sameDay',
3761                'nextDay',
3762                'lastDay',
3763                'nextWeek',
3764                'lastWeek',
3765                'sameElse',
3766            ],
3767            i,
3768            property;
3769
3770        for (i = 0; i < properties.length; i += 1) {
3771            property = properties[i];
3772            propertyTest = propertyTest || hasOwnProp(input, property);
3773        }
3774
3775        return objectTest && propertyTest;
3776    }
3777
3778    function getCalendarFormat(myMoment, now) {
3779        var diff = myMoment.diff(now, 'days', true);
3780        return diff < -6
3781            ? 'sameElse'
3782            : diff < -1
3783            ? 'lastWeek'
3784            : diff < 0
3785            ? 'lastDay'
3786            : diff < 1
3787            ? 'sameDay'
3788            : diff < 2
3789            ? 'nextDay'
3790            : diff < 7
3791            ? 'nextWeek'
3792            : 'sameElse';
3793    }
3794
3795    function calendar$1(time, formats) {
3796        // Support for single parameter, formats only overload to the calendar function
3797        if (arguments.length === 1) {
3798            if (!arguments[0]) {
3799                time = undefined;
3800                formats = undefined;
3801            } else if (isMomentInput(arguments[0])) {
3802                time = arguments[0];
3803                formats = undefined;
3804            } else if (isCalendarSpec(arguments[0])) {
3805                formats = arguments[0];
3806                time = undefined;
3807            }
3808        }
3809        // We want to compare the start of today, vs this.
3810        // Getting start-of-today depends on whether we're local/utc/offset or not.
3811        var now = time || createLocal(),
3812            sod = cloneWithOffset(now, this).startOf('day'),
3813            format = hooks.calendarFormat(this, sod) || 'sameElse',
3814            output =
3815                formats &&
3816                (isFunction(formats[format])
3817                    ? formats[format].call(this, now)
3818                    : formats[format]);
3819
3820        return this.format(
3821            output || this.localeData().calendar(format, this, createLocal(now))
3822        );
3823    }
3824
3825    function clone() {
3826        return new Moment(this);
3827    }
3828
3829    function isAfter(input, units) {
3830        var localInput = isMoment(input) ? input : createLocal(input);
3831        if (!(this.isValid() && localInput.isValid())) {
3832            return false;
3833        }
3834        units = normalizeUnits(units) || 'millisecond';
3835        if (units === 'millisecond') {
3836            return this.valueOf() > localInput.valueOf();
3837        } else {
3838            return localInput.valueOf() < this.clone().startOf(units).valueOf();
3839        }
3840    }
3841
3842    function isBefore(input, units) {
3843        var localInput = isMoment(input) ? input : createLocal(input);
3844        if (!(this.isValid() && localInput.isValid())) {
3845            return false;
3846        }
3847        units = normalizeUnits(units) || 'millisecond';
3848        if (units === 'millisecond') {
3849            return this.valueOf() < localInput.valueOf();
3850        } else {
3851            return this.clone().endOf(units).valueOf() < localInput.valueOf();
3852        }
3853    }
3854
3855    function isBetween(from, to, units, inclusivity) {
3856        var localFrom = isMoment(from) ? from : createLocal(from),
3857            localTo = isMoment(to) ? to : createLocal(to);
3858        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
3859            return false;
3860        }
3861        inclusivity = inclusivity || '()';
3862        return (
3863            (inclusivity[0] === '('
3864                ? this.isAfter(localFrom, units)
3865                : !this.isBefore(localFrom, units)) &&
3866            (inclusivity[1] === ')'
3867                ? this.isBefore(localTo, units)
3868                : !this.isAfter(localTo, units))
3869        );
3870    }
3871
3872    function isSame(input, units) {
3873        var localInput = isMoment(input) ? input : createLocal(input),
3874            inputMs;
3875        if (!(this.isValid() && localInput.isValid())) {
3876            return false;
3877        }
3878        units = normalizeUnits(units) || 'millisecond';
3879        if (units === 'millisecond') {
3880            return this.valueOf() === localInput.valueOf();
3881        } else {
3882            inputMs = localInput.valueOf();
3883            return (
3884                this.clone().startOf(units).valueOf() <= inputMs &&
3885                inputMs <= this.clone().endOf(units).valueOf()
3886            );
3887        }
3888    }
3889
3890    function isSameOrAfter(input, units) {
3891        return this.isSame(input, units) || this.isAfter(input, units);
3892    }
3893
3894    function isSameOrBefore(input, units) {
3895        return this.isSame(input, units) || this.isBefore(input, units);
3896    }
3897
3898    function diff(input, units, asFloat) {
3899        var that, zoneDelta, output;
3900
3901        if (!this.isValid()) {
3902            return NaN;
3903        }
3904
3905        that = cloneWithOffset(input, this);
3906
3907        if (!that.isValid()) {
3908            return NaN;
3909        }
3910
3911        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3912
3913        units = normalizeUnits(units);
3914
3915        switch (units) {
3916            case 'year':
3917                output = monthDiff(this, that) / 12;
3918                break;
3919            case 'month':
3920                output = monthDiff(this, that);
3921                break;
3922            case 'quarter':
3923                output = monthDiff(this, that) / 3;
3924                break;
3925            case 'second':
3926                output = (this - that) / 1e3;
3927                break; // 1000
3928            case 'minute':
3929                output = (this - that) / 6e4;
3930                break; // 1000 * 60
3931            case 'hour':
3932                output = (this - that) / 36e5;
3933                break; // 1000 * 60 * 60
3934            case 'day':
3935                output = (this - that - zoneDelta) / 864e5;
3936                break; // 1000 * 60 * 60 * 24, negate dst
3937            case 'week':
3938                output = (this - that - zoneDelta) / 6048e5;
3939                break; // 1000 * 60 * 60 * 24 * 7, negate dst
3940            default:
3941                output = this - that;
3942        }
3943
3944        return asFloat ? output : absFloor(output);
3945    }
3946
3947    function monthDiff(a, b) {
3948        if (a.date() < b.date()) {
3949            // end-of-month calculations work correct when the start month has more
3950            // days than the end month.
3951            return -monthDiff(b, a);
3952        }
3953        // difference in months
3954        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
3955            // b is in (anchor - 1 month, anchor + 1 month)
3956            anchor = a.clone().add(wholeMonthDiff, 'months'),
3957            anchor2,
3958            adjust;
3959
3960        if (b - anchor < 0) {
3961            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3962            // linear across the month
3963            adjust = (b - anchor) / (anchor - anchor2);
3964        } else {
3965            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3966            // linear across the month
3967            adjust = (b - anchor) / (anchor2 - anchor);
3968        }
3969
3970        //check for negative zero, return zero if negative zero
3971        return -(wholeMonthDiff + adjust) || 0;
3972    }
3973
3974    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3975    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3976
3977    function toString() {
3978        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3979    }
3980
3981    function toISOString(keepOffset) {
3982        if (!this.isValid()) {
3983            return null;
3984        }
3985        var utc = keepOffset !== true,
3986            m = utc ? this.clone().utc() : this;
3987        if (m.year() < 0 || m.year() > 9999) {
3988            return formatMoment(
3989                m,
3990                utc
3991                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
3992                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
3993            );
3994        }
3995        if (isFunction(Date.prototype.toISOString)) {
3996            // native implementation is ~50x faster, use it when we can
3997            if (utc) {
3998                return this.toDate().toISOString();
3999            } else {
4000                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
4001                    .toISOString()
4002                    .replace('Z', formatMoment(m, 'Z'));
4003            }
4004        }
4005        return formatMoment(
4006            m,
4007            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
4008        );
4009    }
4010
4011    /**
4012     * Return a human readable representation of a moment that can
4013     * also be evaluated to get a new moment which is the same
4014     *
4015     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
4016     */
4017    function inspect() {
4018        if (!this.isValid()) {
4019            return 'moment.invalid(/* ' + this._i + ' */)';
4020        }
4021        var func = 'moment',
4022            zone = '',
4023            prefix,
4024            year,
4025            datetime,
4026            suffix;
4027        if (!this.isLocal()) {
4028            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
4029            zone = 'Z';
4030        }
4031        prefix = '[' + func + '("]';
4032        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
4033        datetime = '-MM-DD[T]HH:mm:ss.SSS';
4034        suffix = zone + '[")]';
4035
4036        return this.format(prefix + year + datetime + suffix);
4037    }
4038
4039    function format(inputString) {
4040        if (!inputString) {
4041            inputString = this.isUtc()
4042                ? hooks.defaultFormatUtc
4043                : hooks.defaultFormat;
4044        }
4045        var output = formatMoment(this, inputString);
4046        return this.localeData().postformat(output);
4047    }
4048
4049    function from(time, withoutSuffix) {
4050        if (
4051            this.isValid() &&
4052            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
4053        ) {
4054            return createDuration({ to: this, from: time })
4055                .locale(this.locale())
4056                .humanize(!withoutSuffix);
4057        } else {
4058            return this.localeData().invalidDate();
4059        }
4060    }
4061
4062    function fromNow(withoutSuffix) {
4063        return this.from(createLocal(), withoutSuffix);
4064    }
4065
4066    function to(time, withoutSuffix) {
4067        if (
4068            this.isValid() &&
4069            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
4070        ) {
4071            return createDuration({ from: this, to: time })
4072                .locale(this.locale())
4073                .humanize(!withoutSuffix);
4074        } else {
4075            return this.localeData().invalidDate();
4076        }
4077    }
4078
4079    function toNow(withoutSuffix) {
4080        return this.to(createLocal(), withoutSuffix);
4081    }
4082
4083    // If passed a locale key, it will set the locale for this
4084    // instance.  Otherwise, it will return the locale configuration
4085    // variables for this instance.
4086    function locale(key) {
4087        var newLocaleData;
4088
4089        if (key === undefined) {
4090            return this._locale._abbr;
4091        } else {
4092            newLocaleData = getLocale(key);
4093            if (newLocaleData != null) {
4094                this._locale = newLocaleData;
4095            }
4096            return this;
4097        }
4098    }
4099
4100    var lang = deprecate(
4101        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
4102        function (key) {
4103            if (key === undefined) {
4104                return this.localeData();
4105            } else {
4106                return this.locale(key);
4107            }
4108        }
4109    );
4110
4111    function localeData() {
4112        return this._locale;
4113    }
4114
4115    var MS_PER_SECOND = 1000,
4116        MS_PER_MINUTE = 60 * MS_PER_SECOND,
4117        MS_PER_HOUR = 60 * MS_PER_MINUTE,
4118        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
4119
4120    // actual modulo - handles negative numbers (for dates before 1970):
4121    function mod$1(dividend, divisor) {
4122        return ((dividend % divisor) + divisor) % divisor;
4123    }
4124
4125    function localStartOfDate(y, m, d) {
4126        // the date constructor remaps years 0-99 to 1900-1999
4127        if (y < 100 && y >= 0) {
4128            // preserve leap years using a full 400 year cycle, then reset
4129            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
4130        } else {
4131            return new Date(y, m, d).valueOf();
4132        }
4133    }
4134
4135    function utcStartOfDate(y, m, d) {
4136        // Date.UTC remaps years 0-99 to 1900-1999
4137        if (y < 100 && y >= 0) {
4138            // preserve leap years using a full 400 year cycle, then reset
4139            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
4140        } else {
4141            return Date.UTC(y, m, d);
4142        }
4143    }
4144
4145    function startOf(units) {
4146        var time, startOfDate;
4147        units = normalizeUnits(units);
4148        if (units === undefined || units === 'millisecond' || !this.isValid()) {
4149            return this;
4150        }
4151
4152        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4153
4154        switch (units) {
4155            case 'year':
4156                time = startOfDate(this.year(), 0, 1);
4157                break;
4158            case 'quarter':
4159                time = startOfDate(
4160                    this.year(),
4161                    this.month() - (this.month() % 3),
4162                    1
4163                );
4164                break;
4165            case 'month':
4166                time = startOfDate(this.year(), this.month(), 1);
4167                break;
4168            case 'week':
4169                time = startOfDate(
4170                    this.year(),
4171                    this.month(),
4172                    this.date() - this.weekday()
4173                );
4174                break;
4175            case 'isoWeek':
4176                time = startOfDate(
4177                    this.year(),
4178                    this.month(),
4179                    this.date() - (this.isoWeekday() - 1)
4180                );
4181                break;
4182            case 'day':
4183            case 'date':
4184                time = startOfDate(this.year(), this.month(), this.date());
4185                break;
4186            case 'hour':
4187                time = this._d.valueOf();
4188                time -= mod$1(
4189                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4190                    MS_PER_HOUR
4191                );
4192                break;
4193            case 'minute':
4194                time = this._d.valueOf();
4195                time -= mod$1(time, MS_PER_MINUTE);
4196                break;
4197            case 'second':
4198                time = this._d.valueOf();
4199                time -= mod$1(time, MS_PER_SECOND);
4200                break;
4201        }
4202
4203        this._d.setTime(time);
4204        hooks.updateOffset(this, true);
4205        return this;
4206    }
4207
4208    function endOf(units) {
4209        var time, startOfDate;
4210        units = normalizeUnits(units);
4211        if (units === undefined || units === 'millisecond' || !this.isValid()) {
4212            return this;
4213        }
4214
4215        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4216
4217        switch (units) {
4218            case 'year':
4219                time = startOfDate(this.year() + 1, 0, 1) - 1;
4220                break;
4221            case 'quarter':
4222                time =
4223                    startOfDate(
4224                        this.year(),
4225                        this.month() - (this.month() % 3) + 3,
4226                        1
4227                    ) - 1;
4228                break;
4229            case 'month':
4230                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
4231                break;
4232            case 'week':
4233                time =
4234                    startOfDate(
4235                        this.year(),
4236                        this.month(),
4237                        this.date() - this.weekday() + 7
4238                    ) - 1;
4239                break;
4240            case 'isoWeek':
4241                time =
4242                    startOfDate(
4243                        this.year(),
4244                        this.month(),
4245                        this.date() - (this.isoWeekday() - 1) + 7
4246                    ) - 1;
4247                break;
4248            case 'day':
4249            case 'date':
4250                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
4251                break;
4252            case 'hour':
4253                time = this._d.valueOf();
4254                time +=
4255                    MS_PER_HOUR -
4256                    mod$1(
4257                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4258                        MS_PER_HOUR
4259                    ) -
4260                    1;
4261                break;
4262            case 'minute':
4263                time = this._d.valueOf();
4264                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
4265                break;
4266            case 'second':
4267                time = this._d.valueOf();
4268                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
4269                break;
4270        }
4271
4272        this._d.setTime(time);
4273        hooks.updateOffset(this, true);
4274        return this;
4275    }
4276
4277    function valueOf() {
4278        return this._d.valueOf() - (this._offset || 0) * 60000;
4279    }
4280
4281    function unix() {
4282        return Math.floor(this.valueOf() / 1000);
4283    }
4284
4285    function toDate() {
4286        return new Date(this.valueOf());
4287    }
4288
4289    function toArray() {
4290        var m = this;
4291        return [
4292            m.year(),
4293            m.month(),
4294            m.date(),
4295            m.hour(),
4296            m.minute(),
4297            m.second(),
4298            m.millisecond(),
4299        ];
4300    }
4301
4302    function toObject() {
4303        var m = this;
4304        return {
4305            years: m.year(),
4306            months: m.month(),
4307            date: m.date(),
4308            hours: m.hours(),
4309            minutes: m.minutes(),
4310            seconds: m.seconds(),
4311            milliseconds: m.milliseconds(),
4312        };
4313    }
4314
4315    function toJSON() {
4316        // new Date(NaN).toJSON() === null
4317        return this.isValid() ? this.toISOString() : null;
4318    }
4319
4320    function isValid$2() {
4321        return isValid(this);
4322    }
4323
4324    function parsingFlags() {
4325        return extend({}, getParsingFlags(this));
4326    }
4327
4328    function invalidAt() {
4329        return getParsingFlags(this).overflow;
4330    }
4331
4332    function creationData() {
4333        return {
4334            input: this._i,
4335            format: this._f,
4336            locale: this._locale,
4337            isUTC: this._isUTC,
4338            strict: this._strict,
4339        };
4340    }
4341
4342    addFormatToken('N', 0, 0, 'eraAbbr');
4343    addFormatToken('NN', 0, 0, 'eraAbbr');
4344    addFormatToken('NNN', 0, 0, 'eraAbbr');
4345    addFormatToken('NNNN', 0, 0, 'eraName');
4346    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
4347
4348    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
4349    addFormatToken('y', ['yy', 2], 0, 'eraYear');
4350    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
4351    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
4352
4353    addRegexToken('N', matchEraAbbr);
4354    addRegexToken('NN', matchEraAbbr);
4355    addRegexToken('NNN', matchEraAbbr);
4356    addRegexToken('NNNN', matchEraName);
4357    addRegexToken('NNNNN', matchEraNarrow);
4358
4359    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
4360        input,
4361        array,
4362        config,
4363        token
4364    ) {
4365        var era = config._locale.erasParse(input, token, config._strict);
4366        if (era) {
4367            getParsingFlags(config).era = era;
4368        } else {
4369            getParsingFlags(config).invalidEra = input;
4370        }
4371    });
4372
4373    addRegexToken('y', matchUnsigned);
4374    addRegexToken('yy', matchUnsigned);
4375    addRegexToken('yyy', matchUnsigned);
4376    addRegexToken('yyyy', matchUnsigned);
4377    addRegexToken('yo', matchEraYearOrdinal);
4378
4379    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
4380    addParseToken(['yo'], function (input, array, config, token) {
4381        var match;
4382        if (config._locale._eraYearOrdinalRegex) {
4383            match = input.match(config._locale._eraYearOrdinalRegex);
4384        }
4385
4386        if (config._locale.eraYearOrdinalParse) {
4387            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
4388        } else {
4389            array[YEAR] = parseInt(input, 10);
4390        }
4391    });
4392
4393    function localeEras(m, format) {
4394        var i,
4395            l,
4396            date,
4397            eras = this._eras || getLocale('en')._eras;
4398        for (i = 0, l = eras.length; i < l; ++i) {
4399            switch (typeof eras[i].since) {
4400                case 'string':
4401                    // truncate time
4402                    date = hooks(eras[i].since).startOf('day');
4403                    eras[i].since = date.valueOf();
4404                    break;
4405            }
4406
4407            switch (typeof eras[i].until) {
4408                case 'undefined':
4409                    eras[i].until = +Infinity;
4410                    break;
4411                case 'string':
4412                    // truncate time
4413                    date = hooks(eras[i].until).startOf('day').valueOf();
4414                    eras[i].until = date.valueOf();
4415                    break;
4416            }
4417        }
4418        return eras;
4419    }
4420
4421    function localeErasParse(eraName, format, strict) {
4422        var i,
4423            l,
4424            eras = this.eras(),
4425            name,
4426            abbr,
4427            narrow;
4428        eraName = eraName.toUpperCase();
4429
4430        for (i = 0, l = eras.length; i < l; ++i) {
4431            name = eras[i].name.toUpperCase();
4432            abbr = eras[i].abbr.toUpperCase();
4433            narrow = eras[i].narrow.toUpperCase();
4434
4435            if (strict) {
4436                switch (format) {
4437                    case 'N':
4438                    case 'NN':
4439                    case 'NNN':
4440                        if (abbr === eraName) {
4441                            return eras[i];
4442                        }
4443                        break;
4444
4445                    case 'NNNN':
4446                        if (name === eraName) {
4447                            return eras[i];
4448                        }
4449                        break;
4450
4451                    case 'NNNNN':
4452                        if (narrow === eraName) {
4453                            return eras[i];
4454                        }
4455                        break;
4456                }
4457            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
4458                return eras[i];
4459            }
4460        }
4461    }
4462
4463    function localeErasConvertYear(era, year) {
4464        var dir = era.since <= era.until ? +1 : -1;
4465        if (year === undefined) {
4466            return hooks(era.since).year();
4467        } else {
4468            return hooks(era.since).year() + (year - era.offset) * dir;
4469        }
4470    }
4471
4472    function getEraName() {
4473        var i,
4474            l,
4475            val,
4476            eras = this.localeData().eras();
4477        for (i = 0, l = eras.length; i < l; ++i) {
4478            // truncate time
4479            val = this.clone().startOf('day').valueOf();
4480
4481            if (eras[i].since <= val && val <= eras[i].until) {
4482                return eras[i].name;
4483            }
4484            if (eras[i].until <= val && val <= eras[i].since) {
4485                return eras[i].name;
4486            }
4487        }
4488
4489        return '';
4490    }
4491
4492    function getEraNarrow() {
4493        var i,
4494            l,
4495            val,
4496            eras = this.localeData().eras();
4497        for (i = 0, l = eras.length; i < l; ++i) {
4498            // truncate time
4499            val = this.clone().startOf('day').valueOf();
4500
4501            if (eras[i].since <= val && val <= eras[i].until) {
4502                return eras[i].narrow;
4503            }
4504            if (eras[i].until <= val && val <= eras[i].since) {
4505                return eras[i].narrow;
4506            }
4507        }
4508
4509        return '';
4510    }
4511
4512    function getEraAbbr() {
4513        var i,
4514            l,
4515            val,
4516            eras = this.localeData().eras();
4517        for (i = 0, l = eras.length; i < l; ++i) {
4518            // truncate time
4519            val = this.clone().startOf('day').valueOf();
4520
4521            if (eras[i].since <= val && val <= eras[i].until) {
4522                return eras[i].abbr;
4523            }
4524            if (eras[i].until <= val && val <= eras[i].since) {
4525                return eras[i].abbr;
4526            }
4527        }
4528
4529        return '';
4530    }
4531
4532    function getEraYear() {
4533        var i,
4534            l,
4535            dir,
4536            val,
4537            eras = this.localeData().eras();
4538        for (i = 0, l = eras.length; i < l; ++i) {
4539            dir = eras[i].since <= eras[i].until ? +1 : -1;
4540
4541            // truncate time
4542            val = this.clone().startOf('day').valueOf();
4543
4544            if (
4545                (eras[i].since <= val && val <= eras[i].until) ||
4546                (eras[i].until <= val && val <= eras[i].since)
4547            ) {
4548                return (
4549                    (this.year() - hooks(eras[i].since).year()) * dir +
4550                    eras[i].offset
4551                );
4552            }
4553        }
4554
4555        return this.year();
4556    }
4557
4558    function erasNameRegex(isStrict) {
4559        if (!hasOwnProp(this, '_erasNameRegex')) {
4560            computeErasParse.call(this);
4561        }
4562        return isStrict ? this._erasNameRegex : this._erasRegex;
4563    }
4564
4565    function erasAbbrRegex(isStrict) {
4566        if (!hasOwnProp(this, '_erasAbbrRegex')) {
4567            computeErasParse.call(this);
4568        }
4569        return isStrict ? this._erasAbbrRegex : this._erasRegex;
4570    }
4571
4572    function erasNarrowRegex(isStrict) {
4573        if (!hasOwnProp(this, '_erasNarrowRegex')) {
4574            computeErasParse.call(this);
4575        }
4576        return isStrict ? this._erasNarrowRegex : this._erasRegex;
4577    }
4578
4579    function matchEraAbbr(isStrict, locale) {
4580        return locale.erasAbbrRegex(isStrict);
4581    }
4582
4583    function matchEraName(isStrict, locale) {
4584        return locale.erasNameRegex(isStrict);
4585    }
4586
4587    function matchEraNarrow(isStrict, locale) {
4588        return locale.erasNarrowRegex(isStrict);
4589    }
4590
4591    function matchEraYearOrdinal(isStrict, locale) {
4592        return locale._eraYearOrdinalRegex || matchUnsigned;
4593    }
4594
4595    function computeErasParse() {
4596        var abbrPieces = [],
4597            namePieces = [],
4598            narrowPieces = [],
4599            mixedPieces = [],
4600            i,
4601            l,
4602            eras = this.eras();
4603
4604        for (i = 0, l = eras.length; i < l; ++i) {
4605            namePieces.push(regexEscape(eras[i].name));
4606            abbrPieces.push(regexEscape(eras[i].abbr));
4607            narrowPieces.push(regexEscape(eras[i].narrow));
4608
4609            mixedPieces.push(regexEscape(eras[i].name));
4610            mixedPieces.push(regexEscape(eras[i].abbr));
4611            mixedPieces.push(regexEscape(eras[i].narrow));
4612        }
4613
4614        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
4615        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
4616        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
4617        this._erasNarrowRegex = new RegExp(
4618            '^(' + narrowPieces.join('|') + ')',
4619            'i'
4620        );
4621    }
4622
4623    // FORMATTING
4624
4625    addFormatToken(0, ['gg', 2], 0, function () {
4626        return this.weekYear() % 100;
4627    });
4628
4629    addFormatToken(0, ['GG', 2], 0, function () {
4630        return this.isoWeekYear() % 100;
4631    });
4632
4633    function addWeekYearFormatToken(token, getter) {
4634        addFormatToken(0, [token, token.length], 0, getter);
4635    }
4636
4637    addWeekYearFormatToken('gggg', 'weekYear');
4638    addWeekYearFormatToken('ggggg', 'weekYear');
4639    addWeekYearFormatToken('GGGG', 'isoWeekYear');
4640    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
4641
4642    // ALIASES
4643
4644    addUnitAlias('weekYear', 'gg');
4645    addUnitAlias('isoWeekYear', 'GG');
4646
4647    // PRIORITY
4648
4649    addUnitPriority('weekYear', 1);
4650    addUnitPriority('isoWeekYear', 1);
4651
4652    // PARSING
4653
4654    addRegexToken('G', matchSigned);
4655    addRegexToken('g', matchSigned);
4656    addRegexToken('GG', match1to2, match2);
4657    addRegexToken('gg', match1to2, match2);
4658    addRegexToken('GGGG', match1to4, match4);
4659    addRegexToken('gggg', match1to4, match4);
4660    addRegexToken('GGGGG', match1to6, match6);
4661    addRegexToken('ggggg', match1to6, match6);
4662
4663    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
4664        input,
4665        week,
4666        config,
4667        token
4668    ) {
4669        week[token.substr(0, 2)] = toInt(input);
4670    });
4671
4672    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
4673        week[token] = hooks.parseTwoDigitYear(input);
4674    });
4675
4676    // MOMENTS
4677
4678    function getSetWeekYear(input) {
4679        return getSetWeekYearHelper.call(
4680            this,
4681            input,
4682            this.week(),
4683            this.weekday(),
4684            this.localeData()._week.dow,
4685            this.localeData()._week.doy
4686        );
4687    }
4688
4689    function getSetISOWeekYear(input) {
4690        return getSetWeekYearHelper.call(
4691            this,
4692            input,
4693            this.isoWeek(),
4694            this.isoWeekday(),
4695            1,
4696            4
4697        );
4698    }
4699
4700    function getISOWeeksInYear() {
4701        return weeksInYear(this.year(), 1, 4);
4702    }
4703
4704    function getISOWeeksInISOWeekYear() {
4705        return weeksInYear(this.isoWeekYear(), 1, 4);
4706    }
4707
4708    function getWeeksInYear() {
4709        var weekInfo = this.localeData()._week;
4710        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
4711    }
4712
4713    function getWeeksInWeekYear() {
4714        var weekInfo = this.localeData()._week;
4715        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
4716    }
4717
4718    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
4719        var weeksTarget;
4720        if (input == null) {
4721            return weekOfYear(this, dow, doy).year;
4722        } else {
4723            weeksTarget = weeksInYear(input, dow, doy);
4724            if (week > weeksTarget) {
4725                week = weeksTarget;
4726            }
4727            return setWeekAll.call(this, input, week, weekday, dow, doy);
4728        }
4729    }
4730
4731    function setWeekAll(weekYear, week, weekday, dow, doy) {
4732        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
4733            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
4734
4735        this.year(date.getUTCFullYear());
4736        this.month(date.getUTCMonth());
4737        this.date(date.getUTCDate());
4738        return this;
4739    }
4740
4741    // FORMATTING
4742
4743    addFormatToken('Q', 0, 'Qo', 'quarter');
4744
4745    // ALIASES
4746
4747    addUnitAlias('quarter', 'Q');
4748
4749    // PRIORITY
4750
4751    addUnitPriority('quarter', 7);
4752
4753    // PARSING
4754
4755    addRegexToken('Q', match1);
4756    addParseToken('Q', function (input, array) {
4757        array[MONTH] = (toInt(input) - 1) * 3;
4758    });
4759
4760    // MOMENTS
4761
4762    function getSetQuarter(input) {
4763        return input == null
4764            ? Math.ceil((this.month() + 1) / 3)
4765            : this.month((input - 1) * 3 + (this.month() % 3));
4766    }
4767
4768    // FORMATTING
4769
4770    addFormatToken('D', ['DD', 2], 'Do', 'date');
4771
4772    // ALIASES
4773
4774    addUnitAlias('date', 'D');
4775
4776    // PRIORITY
4777    addUnitPriority('date', 9);
4778
4779    // PARSING
4780
4781    addRegexToken('D', match1to2);
4782    addRegexToken('DD', match1to2, match2);
4783    addRegexToken('Do', function (isStrict, locale) {
4784        // TODO: Remove "ordinalParse" fallback in next major release.
4785        return isStrict
4786            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
4787            : locale._dayOfMonthOrdinalParseLenient;
4788    });
4789
4790    addParseToken(['D', 'DD'], DATE);
4791    addParseToken('Do', function (input, array) {
4792        array[DATE] = toInt(input.match(match1to2)[0]);
4793    });
4794
4795    // MOMENTS
4796
4797    var getSetDayOfMonth = makeGetSet('Date', true);
4798
4799    // FORMATTING
4800
4801    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
4802
4803    // ALIASES
4804
4805    addUnitAlias('dayOfYear', 'DDD');
4806
4807    // PRIORITY
4808    addUnitPriority('dayOfYear', 4);
4809
4810    // PARSING
4811
4812    addRegexToken('DDD', match1to3);
4813    addRegexToken('DDDD', match3);
4814    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
4815        config._dayOfYear = toInt(input);
4816    });
4817
4818    // HELPERS
4819
4820    // MOMENTS
4821
4822    function getSetDayOfYear(input) {
4823        var dayOfYear =
4824            Math.round(
4825                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
4826            ) + 1;
4827        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
4828    }
4829
4830    // FORMATTING
4831
4832    addFormatToken('m', ['mm', 2], 0, 'minute');
4833
4834    // ALIASES
4835
4836    addUnitAlias('minute', 'm');
4837
4838    // PRIORITY
4839
4840    addUnitPriority('minute', 14);
4841
4842    // PARSING
4843
4844    addRegexToken('m', match1to2);
4845    addRegexToken('mm', match1to2, match2);
4846    addParseToken(['m', 'mm'], MINUTE);
4847
4848    // MOMENTS
4849
4850    var getSetMinute = makeGetSet('Minutes', false);
4851
4852    // FORMATTING
4853
4854    addFormatToken('s', ['ss', 2], 0, 'second');
4855
4856    // ALIASES
4857
4858    addUnitAlias('second', 's');
4859
4860    // PRIORITY
4861
4862    addUnitPriority('second', 15);
4863
4864    // PARSING
4865
4866    addRegexToken('s', match1to2);
4867    addRegexToken('ss', match1to2, match2);
4868    addParseToken(['s', 'ss'], SECOND);
4869
4870    // MOMENTS
4871
4872    var getSetSecond = makeGetSet('Seconds', false);
4873
4874    // FORMATTING
4875
4876    addFormatToken('S', 0, 0, function () {
4877        return ~~(this.millisecond() / 100);
4878    });
4879
4880    addFormatToken(0, ['SS', 2], 0, function () {
4881        return ~~(this.millisecond() / 10);
4882    });
4883
4884    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
4885    addFormatToken(0, ['SSSS', 4], 0, function () {
4886        return this.millisecond() * 10;
4887    });
4888    addFormatToken(0, ['SSSSS', 5], 0, function () {
4889        return this.millisecond() * 100;
4890    });
4891    addFormatToken(0, ['SSSSSS', 6], 0, function () {
4892        return this.millisecond() * 1000;
4893    });
4894    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
4895        return this.millisecond() * 10000;
4896    });
4897    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
4898        return this.millisecond() * 100000;
4899    });
4900    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
4901        return this.millisecond() * 1000000;
4902    });
4903
4904    // ALIASES
4905
4906    addUnitAlias('millisecond', 'ms');
4907
4908    // PRIORITY
4909
4910    addUnitPriority('millisecond', 16);
4911
4912    // PARSING
4913
4914    addRegexToken('S', match1to3, match1);
4915    addRegexToken('SS', match1to3, match2);
4916    addRegexToken('SSS', match1to3, match3);
4917
4918    var token, getSetMillisecond;
4919    for (token = 'SSSS'; token.length <= 9; token += 'S') {
4920        addRegexToken(token, matchUnsigned);
4921    }
4922
4923    function parseMs(input, array) {
4924        array[MILLISECOND] = toInt(('0.' + input) * 1000);
4925    }
4926
4927    for (token = 'S'; token.length <= 9; token += 'S') {
4928        addParseToken(token, parseMs);
4929    }
4930
4931    getSetMillisecond = makeGetSet('Milliseconds', false);
4932
4933    // FORMATTING
4934
4935    addFormatToken('z', 0, 0, 'zoneAbbr');
4936    addFormatToken('zz', 0, 0, 'zoneName');
4937
4938    // MOMENTS
4939
4940    function getZoneAbbr() {
4941        return this._isUTC ? 'UTC' : '';
4942    }
4943
4944    function getZoneName() {
4945        return this._isUTC ? 'Coordinated Universal Time' : '';
4946    }
4947
4948    var proto = Moment.prototype;
4949
4950    proto.add = add;
4951    proto.calendar = calendar$1;
4952    proto.clone = clone;
4953    proto.diff = diff;
4954    proto.endOf = endOf;
4955    proto.format = format;
4956    proto.from = from;
4957    proto.fromNow = fromNow;
4958    proto.to = to;
4959    proto.toNow = toNow;
4960    proto.get = stringGet;
4961    proto.invalidAt = invalidAt;
4962    proto.isAfter = isAfter;
4963    proto.isBefore = isBefore;
4964    proto.isBetween = isBetween;
4965    proto.isSame = isSame;
4966    proto.isSameOrAfter = isSameOrAfter;
4967    proto.isSameOrBefore = isSameOrBefore;
4968    proto.isValid = isValid$2;
4969    proto.lang = lang;
4970    proto.locale = locale;
4971    proto.localeData = localeData;
4972    proto.max = prototypeMax;
4973    proto.min = prototypeMin;
4974    proto.parsingFlags = parsingFlags;
4975    proto.set = stringSet;
4976    proto.startOf = startOf;
4977    proto.subtract = subtract;
4978    proto.toArray = toArray;
4979    proto.toObject = toObject;
4980    proto.toDate = toDate;
4981    proto.toISOString = toISOString;
4982    proto.inspect = inspect;
4983    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
4984        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
4985            return 'Moment<' + this.format() + '>';
4986        };
4987    }
4988    proto.toJSON = toJSON;
4989    proto.toString = toString;
4990    proto.unix = unix;
4991    proto.valueOf = valueOf;
4992    proto.creationData = creationData;
4993    proto.eraName = getEraName;
4994    proto.eraNarrow = getEraNarrow;
4995    proto.eraAbbr = getEraAbbr;
4996    proto.eraYear = getEraYear;
4997    proto.year = getSetYear;
4998    proto.isLeapYear = getIsLeapYear;
4999    proto.weekYear = getSetWeekYear;
5000    proto.isoWeekYear = getSetISOWeekYear;
5001    proto.quarter = proto.quarters = getSetQuarter;
5002    proto.month = getSetMonth;
5003    proto.daysInMonth = getDaysInMonth;
5004    proto.week = proto.weeks = getSetWeek;
5005    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
5006    proto.weeksInYear = getWeeksInYear;
5007    proto.weeksInWeekYear = getWeeksInWeekYear;
5008    proto.isoWeeksInYear = getISOWeeksInYear;
5009    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
5010    proto.date = getSetDayOfMonth;
5011    proto.day = proto.days = getSetDayOfWeek;
5012    proto.weekday = getSetLocaleDayOfWeek;
5013    proto.isoWeekday = getSetISODayOfWeek;
5014    proto.dayOfYear = getSetDayOfYear;
5015    proto.hour = proto.hours = getSetHour;
5016    proto.minute = proto.minutes = getSetMinute;
5017    proto.second = proto.seconds = getSetSecond;
5018    proto.millisecond = proto.milliseconds = getSetMillisecond;
5019    proto.utcOffset = getSetOffset;
5020    proto.utc = setOffsetToUTC;
5021    proto.local = setOffsetToLocal;
5022    proto.parseZone = setOffsetToParsedOffset;
5023    proto.hasAlignedHourOffset = hasAlignedHourOffset;
5024    proto.isDST = isDaylightSavingTime;
5025    proto.isLocal = isLocal;
5026    proto.isUtcOffset = isUtcOffset;
5027    proto.isUtc = isUtc;
5028    proto.isUTC = isUtc;
5029    proto.zoneAbbr = getZoneAbbr;
5030    proto.zoneName = getZoneName;
5031    proto.dates = deprecate(
5032        'dates accessor is deprecated. Use date instead.',
5033        getSetDayOfMonth
5034    );
5035    proto.months = deprecate(
5036        'months accessor is deprecated. Use month instead',
5037        getSetMonth
5038    );
5039    proto.years = deprecate(
5040        'years accessor is deprecated. Use year instead',
5041        getSetYear
5042    );
5043    proto.zone = deprecate(
5044        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
5045        getSetZone
5046    );
5047    proto.isDSTShifted = deprecate(
5048        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
5049        isDaylightSavingTimeShifted
5050    );
5051
5052    function createUnix(input) {
5053        return createLocal(input * 1000);
5054    }
5055
5056    function createInZone() {
5057        return createLocal.apply(null, arguments).parseZone();
5058    }
5059
5060    function preParsePostFormat(string) {
5061        return string;
5062    }
5063
5064    var proto$1 = Locale.prototype;
5065
5066    proto$1.calendar = calendar;
5067    proto$1.longDateFormat = longDateFormat;
5068    proto$1.invalidDate = invalidDate;
5069    proto$1.ordinal = ordinal;
5070    proto$1.preparse = preParsePostFormat;
5071    proto$1.postformat = preParsePostFormat;
5072    proto$1.relativeTime = relativeTime;
5073    proto$1.pastFuture = pastFuture;
5074    proto$1.set = set;
5075    proto$1.eras = localeEras;
5076    proto$1.erasParse = localeErasParse;
5077    proto$1.erasConvertYear = localeErasConvertYear;
5078    proto$1.erasAbbrRegex = erasAbbrRegex;
5079    proto$1.erasNameRegex = erasNameRegex;
5080    proto$1.erasNarrowRegex = erasNarrowRegex;
5081
5082    proto$1.months = localeMonths;
5083    proto$1.monthsShort = localeMonthsShort;
5084    proto$1.monthsParse = localeMonthsParse;
5085    proto$1.monthsRegex = monthsRegex;
5086    proto$1.monthsShortRegex = monthsShortRegex;
5087    proto$1.week = localeWeek;
5088    proto$1.firstDayOfYear = localeFirstDayOfYear;
5089    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
5090
5091    proto$1.weekdays = localeWeekdays;
5092    proto$1.weekdaysMin = localeWeekdaysMin;
5093    proto$1.weekdaysShort = localeWeekdaysShort;
5094    proto$1.weekdaysParse = localeWeekdaysParse;
5095
5096    proto$1.weekdaysRegex = weekdaysRegex;
5097    proto$1.weekdaysShortRegex = weekdaysShortRegex;
5098    proto$1.weekdaysMinRegex = weekdaysMinRegex;
5099
5100    proto$1.isPM = localeIsPM;
5101    proto$1.meridiem = localeMeridiem;
5102
5103    function get$1(format, index, field, setter) {
5104        var locale = getLocale(),
5105            utc = createUTC().set(setter, index);
5106        return locale[field](utc, format);
5107    }
5108
5109    function listMonthsImpl(format, index, field) {
5110        if (isNumber(format)) {
5111            index = format;
5112            format = undefined;
5113        }
5114
5115        format = format || '';
5116
5117        if (index != null) {
5118            return get$1(format, index, field, 'month');
5119        }
5120
5121        var i,
5122            out = [];
5123        for (i = 0; i < 12; i++) {
5124            out[i] = get$1(format, i, field, 'month');
5125        }
5126        return out;
5127    }
5128
5129    // ()
5130    // (5)
5131    // (fmt, 5)
5132    // (fmt)
5133    // (true)
5134    // (true, 5)
5135    // (true, fmt, 5)
5136    // (true, fmt)
5137    function listWeekdaysImpl(localeSorted, format, index, field) {
5138        if (typeof localeSorted === 'boolean') {
5139            if (isNumber(format)) {
5140                index = format;
5141                format = undefined;
5142            }
5143
5144            format = format || '';
5145        } else {
5146            format = localeSorted;
5147            index = format;
5148            localeSorted = false;
5149
5150            if (isNumber(format)) {
5151                index = format;
5152                format = undefined;
5153            }
5154
5155            format = format || '';
5156        }
5157
5158        var locale = getLocale(),
5159            shift = localeSorted ? locale._week.dow : 0,
5160            i,
5161            out = [];
5162
5163        if (index != null) {
5164            return get$1(format, (index + shift) % 7, field, 'day');
5165        }
5166
5167        for (i = 0; i < 7; i++) {
5168            out[i] = get$1(format, (i + shift) % 7, field, 'day');
5169        }
5170        return out;
5171    }
5172
5173    function listMonths(format, index) {
5174        return listMonthsImpl(format, index, 'months');
5175    }
5176
5177    function listMonthsShort(format, index) {
5178        return listMonthsImpl(format, index, 'monthsShort');
5179    }
5180
5181    function listWeekdays(localeSorted, format, index) {
5182        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
5183    }
5184
5185    function listWeekdaysShort(localeSorted, format, index) {
5186        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
5187    }
5188
5189    function listWeekdaysMin(localeSorted, format, index) {
5190        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
5191    }
5192
5193    getSetGlobalLocale('en', {
5194        eras: [
5195            {
5196                since: '0001-01-01',
5197                until: +Infinity,
5198                offset: 1,
5199                name: 'Anno Domini',
5200                narrow: 'AD',
5201                abbr: 'AD',
5202            },
5203            {
5204                since: '0000-12-31',
5205                until: -Infinity,
5206                offset: 1,
5207                name: 'Before Christ',
5208                narrow: 'BC',
5209                abbr: 'BC',
5210            },
5211        ],
5212        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
5213        ordinal: function (number) {
5214            var b = number % 10,
5215                output =
5216                    toInt((number % 100) / 10) === 1
5217                        ? 'th'
5218                        : b === 1
5219                        ? 'st'
5220                        : b === 2
5221                        ? 'nd'
5222                        : b === 3
5223                        ? 'rd'
5224                        : 'th';
5225            return number + output;
5226        },
5227    });
5228
5229    // Side effect imports
5230
5231    hooks.lang = deprecate(
5232        'moment.lang is deprecated. Use moment.locale instead.',
5233        getSetGlobalLocale
5234    );
5235    hooks.langData = deprecate(
5236        'moment.langData is deprecated. Use moment.localeData instead.',
5237        getLocale
5238    );
5239
5240    var mathAbs = Math.abs;
5241
5242    function abs() {
5243        var data = this._data;
5244
5245        this._milliseconds = mathAbs(this._milliseconds);
5246        this._days = mathAbs(this._days);
5247        this._months = mathAbs(this._months);
5248
5249        data.milliseconds = mathAbs(data.milliseconds);
5250        data.seconds = mathAbs(data.seconds);
5251        data.minutes = mathAbs(data.minutes);
5252        data.hours = mathAbs(data.hours);
5253        data.months = mathAbs(data.months);
5254        data.years = mathAbs(data.years);
5255
5256        return this;
5257    }
5258
5259    function addSubtract$1(duration, input, value, direction) {
5260        var other = createDuration(input, value);
5261
5262        duration._milliseconds += direction * other._milliseconds;
5263        duration._days += direction * other._days;
5264        duration._months += direction * other._months;
5265
5266        return duration._bubble();
5267    }
5268
5269    // supports only 2.0-style add(1, 's') or add(duration)
5270    function add$1(input, value) {
5271        return addSubtract$1(this, input, value, 1);
5272    }
5273
5274    // supports only 2.0-style subtract(1, 's') or subtract(duration)
5275    function subtract$1(input, value) {
5276        return addSubtract$1(this, input, value, -1);
5277    }
5278
5279    function absCeil(number) {
5280        if (number < 0) {
5281            return Math.floor(number);
5282        } else {
5283            return Math.ceil(number);
5284        }
5285    }
5286
5287    function bubble() {
5288        var milliseconds = this._milliseconds,
5289            days = this._days,
5290            months = this._months,
5291            data = this._data,
5292            seconds,
5293            minutes,
5294            hours,
5295            years,
5296            monthsFromDays;
5297
5298        // if we have a mix of positive and negative values, bubble down first
5299        // check: https://github.com/moment/moment/issues/2166
5300        if (
5301            !(
5302                (milliseconds >= 0 && days >= 0 && months >= 0) ||
5303                (milliseconds <= 0 && days <= 0 && months <= 0)
5304            )
5305        ) {
5306            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
5307            days = 0;
5308            months = 0;
5309        }
5310
5311        // The following code bubbles up values, see the tests for
5312        // examples of what that means.
5313        data.milliseconds = milliseconds % 1000;
5314
5315        seconds = absFloor(milliseconds / 1000);
5316        data.seconds = seconds % 60;
5317
5318        minutes = absFloor(seconds / 60);
5319        data.minutes = minutes % 60;
5320
5321        hours = absFloor(minutes / 60);
5322        data.hours = hours % 24;
5323
5324        days += absFloor(hours / 24);
5325
5326        // convert days to months
5327        monthsFromDays = absFloor(daysToMonths(days));
5328        months += monthsFromDays;
5329        days -= absCeil(monthsToDays(monthsFromDays));
5330
5331        // 12 months -> 1 year
5332        years = absFloor(months / 12);
5333        months %= 12;
5334
5335        data.days = days;
5336        data.months = months;
5337        data.years = years;
5338
5339        return this;
5340    }
5341
5342    function daysToMonths(days) {
5343        // 400 years have 146097 days (taking into account leap year rules)
5344        // 400 years have 12 months === 4800
5345        return (days * 4800) / 146097;
5346    }
5347
5348    function monthsToDays(months) {
5349        // the reverse of daysToMonths
5350        return (months * 146097) / 4800;
5351    }
5352
5353    function as(units) {
5354        if (!this.isValid()) {
5355            return NaN;
5356        }
5357        var days,
5358            months,
5359            milliseconds = this._milliseconds;
5360
5361        units = normalizeUnits(units);
5362
5363        if (units === 'month' || units === 'quarter' || units === 'year') {
5364            days = this._days + milliseconds / 864e5;
5365            months = this._months + daysToMonths(days);
5366            switch (units) {
5367                case 'month':
5368                    return months;
5369                case 'quarter':
5370                    return months / 3;
5371                case 'year':
5372                    return months / 12;
5373            }
5374        } else {
5375            // handle milliseconds separately because of floating point math errors (issue #1867)
5376            days = this._days + Math.round(monthsToDays(this._months));
5377            switch (units) {
5378                case 'week':
5379                    return days / 7 + milliseconds / 6048e5;
5380                case 'day':
5381                    return days + milliseconds / 864e5;
5382                case 'hour':
5383                    return days * 24 + milliseconds / 36e5;
5384                case 'minute':
5385                    return days * 1440 + milliseconds / 6e4;
5386                case 'second':
5387                    return days * 86400 + milliseconds / 1000;
5388                // Math.floor prevents floating point math errors here
5389                case 'millisecond':
5390                    return Math.floor(days * 864e5) + milliseconds;
5391                default:
5392                    throw new Error('Unknown unit ' + units);
5393            }
5394        }
5395    }
5396
5397    // TODO: Use this.as('ms')?
5398    function valueOf$1() {
5399        if (!this.isValid()) {
5400            return NaN;
5401        }
5402        return (
5403            this._milliseconds +
5404            this._days * 864e5 +
5405            (this._months % 12) * 2592e6 +
5406            toInt(this._months / 12) * 31536e6
5407        );
5408    }
5409
5410    function makeAs(alias) {
5411        return function () {
5412            return this.as(alias);
5413        };
5414    }
5415
5416    var asMilliseconds = makeAs('ms'),
5417        asSeconds = makeAs('s'),
5418        asMinutes = makeAs('m'),
5419        asHours = makeAs('h'),
5420        asDays = makeAs('d'),
5421        asWeeks = makeAs('w'),
5422        asMonths = makeAs('M'),
5423        asQuarters = makeAs('Q'),
5424        asYears = makeAs('y');
5425
5426    function clone$1() {
5427        return createDuration(this);
5428    }
5429
5430    function get$2(units) {
5431        units = normalizeUnits(units);
5432        return this.isValid() ? this[units + 's']() : NaN;
5433    }
5434
5435    function makeGetter(name) {
5436        return function () {
5437            return this.isValid() ? this._data[name] : NaN;
5438        };
5439    }
5440
5441    var milliseconds = makeGetter('milliseconds'),
5442        seconds = makeGetter('seconds'),
5443        minutes = makeGetter('minutes'),
5444        hours = makeGetter('hours'),
5445        days = makeGetter('days'),
5446        months = makeGetter('months'),
5447        years = makeGetter('years');
5448
5449    function weeks() {
5450        return absFloor(this.days() / 7);
5451    }
5452
5453    var round = Math.round,
5454        thresholds = {
5455            ss: 44, // a few seconds to seconds
5456            s: 45, // seconds to minute
5457            m: 45, // minutes to hour
5458            h: 22, // hours to day
5459            d: 26, // days to month/week
5460            w: null, // weeks to month
5461            M: 11, // months to year
5462        };
5463
5464    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
5465    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
5466        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
5467    }
5468
5469    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
5470        var duration = createDuration(posNegDuration).abs(),
5471            seconds = round(duration.as('s')),
5472            minutes = round(duration.as('m')),
5473            hours = round(duration.as('h')),
5474            days = round(duration.as('d')),
5475            months = round(duration.as('M')),
5476            weeks = round(duration.as('w')),
5477            years = round(duration.as('y')),
5478            a =
5479                (seconds <= thresholds.ss && ['s', seconds]) ||
5480                (seconds < thresholds.s && ['ss', seconds]) ||
5481                (minutes <= 1 && ['m']) ||
5482                (minutes < thresholds.m && ['mm', minutes]) ||
5483                (hours <= 1 && ['h']) ||
5484                (hours < thresholds.h && ['hh', hours]) ||
5485                (days <= 1 && ['d']) ||
5486                (days < thresholds.d && ['dd', days]);
5487
5488        if (thresholds.w != null) {
5489            a =
5490                a ||
5491                (weeks <= 1 && ['w']) ||
5492                (weeks < thresholds.w && ['ww', weeks]);
5493        }
5494        a = a ||
5495            (months <= 1 && ['M']) ||
5496            (months < thresholds.M && ['MM', months]) ||
5497            (years <= 1 && ['y']) || ['yy', years];
5498
5499        a[2] = withoutSuffix;
5500        a[3] = +posNegDuration > 0;
5501        a[4] = locale;
5502        return substituteTimeAgo.apply(null, a);
5503    }
5504
5505    // This function allows you to set the rounding function for relative time strings
5506    function getSetRelativeTimeRounding(roundingFunction) {
5507        if (roundingFunction === undefined) {
5508            return round;
5509        }
5510        if (typeof roundingFunction === 'function') {
5511            round = roundingFunction;
5512            return true;
5513        }
5514        return false;
5515    }
5516
5517    // This function allows you to set a threshold for relative time strings
5518    function getSetRelativeTimeThreshold(threshold, limit) {
5519        if (thresholds[threshold] === undefined) {
5520            return false;
5521        }
5522        if (limit === undefined) {
5523            return thresholds[threshold];
5524        }
5525        thresholds[threshold] = limit;
5526        if (threshold === 's') {
5527            thresholds.ss = limit - 1;
5528        }
5529        return true;
5530    }
5531
5532    function humanize(argWithSuffix, argThresholds) {
5533        if (!this.isValid()) {
5534            return this.localeData().invalidDate();
5535        }
5536
5537        var withSuffix = false,
5538            th = thresholds,
5539            locale,
5540            output;
5541
5542        if (typeof argWithSuffix === 'object') {
5543            argThresholds = argWithSuffix;
5544            argWithSuffix = false;
5545        }
5546        if (typeof argWithSuffix === 'boolean') {
5547            withSuffix = argWithSuffix;
5548        }
5549        if (typeof argThresholds === 'object') {
5550            th = Object.assign({}, thresholds, argThresholds);
5551            if (argThresholds.s != null && argThresholds.ss == null) {
5552                th.ss = argThresholds.s - 1;
5553            }
5554        }
5555
5556        locale = this.localeData();
5557        output = relativeTime$1(this, !withSuffix, th, locale);
5558
5559        if (withSuffix) {
5560            output = locale.pastFuture(+this, output);
5561        }
5562
5563        return locale.postformat(output);
5564    }
5565
5566    var abs$1 = Math.abs;
5567
5568    function sign(x) {
5569        return (x > 0) - (x < 0) || +x;
5570    }
5571
5572    function toISOString$1() {
5573        // for ISO strings we do not use the normal bubbling rules:
5574        //  * milliseconds bubble up until they become hours
5575        //  * days do not bubble at all
5576        //  * months bubble up until they become years
5577        // This is because there is no context-free conversion between hours and days
5578        // (think of clock changes)
5579        // and also not between days and months (28-31 days per month)
5580        if (!this.isValid()) {
5581            return this.localeData().invalidDate();
5582        }
5583
5584        var seconds = abs$1(this._milliseconds) / 1000,
5585            days = abs$1(this._days),
5586            months = abs$1(this._months),
5587            minutes,
5588            hours,
5589            years,
5590            s,
5591            total = this.asSeconds(),
5592            totalSign,
5593            ymSign,
5594            daysSign,
5595            hmsSign;
5596
5597        if (!total) {
5598            // this is the same as C#'s (Noda) and python (isodate)...
5599            // but not other JS (goog.date)
5600            return 'P0D';
5601        }
5602
5603        // 3600 seconds -> 60 minutes -> 1 hour
5604        minutes = absFloor(seconds / 60);
5605        hours = absFloor(minutes / 60);
5606        seconds %= 60;
5607        minutes %= 60;
5608
5609        // 12 months -> 1 year
5610        years = absFloor(months / 12);
5611        months %= 12;
5612
5613        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
5614        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
5615
5616        totalSign = total < 0 ? '-' : '';
5617        ymSign = sign(this._months) !== sign(total) ? '-' : '';
5618        daysSign = sign(this._days) !== sign(total) ? '-' : '';
5619        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
5620
5621        return (
5622            totalSign +
5623            'P' +
5624            (years ? ymSign + years + 'Y' : '') +
5625            (months ? ymSign + months + 'M' : '') +
5626            (days ? daysSign + days + 'D' : '') +
5627            (hours || minutes || seconds ? 'T' : '') +
5628            (hours ? hmsSign + hours + 'H' : '') +
5629            (minutes ? hmsSign + minutes + 'M' : '') +
5630            (seconds ? hmsSign + s + 'S' : '')
5631        );
5632    }
5633
5634    var proto$2 = Duration.prototype;
5635
5636    proto$2.isValid = isValid$1;
5637    proto$2.abs = abs;
5638    proto$2.add = add$1;
5639    proto$2.subtract = subtract$1;
5640    proto$2.as = as;
5641    proto$2.asMilliseconds = asMilliseconds;
5642    proto$2.asSeconds = asSeconds;
5643    proto$2.asMinutes = asMinutes;
5644    proto$2.asHours = asHours;
5645    proto$2.asDays = asDays;
5646    proto$2.asWeeks = asWeeks;
5647    proto$2.asMonths = asMonths;
5648    proto$2.asQuarters = asQuarters;
5649    proto$2.asYears = asYears;
5650    proto$2.valueOf = valueOf$1;
5651    proto$2._bubble = bubble;
5652    proto$2.clone = clone$1;
5653    proto$2.get = get$2;
5654    proto$2.milliseconds = milliseconds;
5655    proto$2.seconds = seconds;
5656    proto$2.minutes = minutes;
5657    proto$2.hours = hours;
5658    proto$2.days = days;
5659    proto$2.weeks = weeks;
5660    proto$2.months = months;
5661    proto$2.years = years;
5662    proto$2.humanize = humanize;
5663    proto$2.toISOString = toISOString$1;
5664    proto$2.toString = toISOString$1;
5665    proto$2.toJSON = toISOString$1;
5666    proto$2.locale = locale;
5667    proto$2.localeData = localeData;
5668
5669    proto$2.toIsoString = deprecate(
5670        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
5671        toISOString$1
5672    );
5673    proto$2.lang = lang;
5674
5675    // FORMATTING
5676
5677    addFormatToken('X', 0, 0, 'unix');
5678    addFormatToken('x', 0, 0, 'valueOf');
5679
5680    // PARSING
5681
5682    addRegexToken('x', matchSigned);
5683    addRegexToken('X', matchTimestamp);
5684    addParseToken('X', function (input, array, config) {
5685        config._d = new Date(parseFloat(input) * 1000);
5686    });
5687    addParseToken('x', function (input, array, config) {
5688        config._d = new Date(toInt(input));
5689    });
5690
5691    //! moment.js
5692
5693    hooks.version = '2.29.0';
5694
5695    setHookCallback(createLocal);
5696
5697    hooks.fn = proto;
5698    hooks.min = min;
5699    hooks.max = max;
5700    hooks.now = now;
5701    hooks.utc = createUTC;
5702    hooks.unix = createUnix;
5703    hooks.months = listMonths;
5704    hooks.isDate = isDate;
5705    hooks.locale = getSetGlobalLocale;
5706    hooks.invalid = createInvalid;
5707    hooks.duration = createDuration;
5708    hooks.isMoment = isMoment;
5709    hooks.weekdays = listWeekdays;
5710    hooks.parseZone = createInZone;
5711    hooks.localeData = getLocale;
5712    hooks.isDuration = isDuration;
5713    hooks.monthsShort = listMonthsShort;
5714    hooks.weekdaysMin = listWeekdaysMin;
5715    hooks.defineLocale = defineLocale;
5716    hooks.updateLocale = updateLocale;
5717    hooks.locales = listLocales;
5718    hooks.weekdaysShort = listWeekdaysShort;
5719    hooks.normalizeUnits = normalizeUnits;
5720    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
5721    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
5722    hooks.calendarFormat = getCalendarFormat;
5723    hooks.prototype = proto;
5724
5725    // currently HTML5 input type only supports 24-hour formats
5726    hooks.HTML5_FMT = {
5727        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
5728        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
5729        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
5730        DATE: 'YYYY-MM-DD', // <input type="date" />
5731        TIME: 'HH:mm', // <input type="time" />
5732        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
5733        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
5734        WEEK: 'GGGG-[W]WW', // <input type="week" />
5735        MONTH: 'YYYY-MM', // <input type="month" />
5736    };
5737
5738    return hooks;
5739
5740})));
5741
5742/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)(module)))
5743
5744/***/ }),
5745/* 1 */
5746/***/ (function(module, exports, __webpack_require__) {
5747
5748/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/**
5749 * @license
5750 * Lodash <https://lodash.com/>
vendor: 5,813 bytes, lines 5751-5913
5751 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
5752 * Released under MIT license <https://lodash.com/license>
5753 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
5754 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
5755 */
5756;(function() {
5757
5758  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
5759  var undefined;
5760
5761  /** Used as the semantic version number. */
5762  var VERSION = '4.17.20';
5763
5764  /** Used as the size to enable large array optimizations. */
5765  var LARGE_ARRAY_SIZE = 200;
5766
5767  /** Error message constants. */
5768  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
5769      FUNC_ERROR_TEXT = 'Expected a function';
5770
5771  /** Used to stand-in for `undefined` hash values. */
5772  var HASH_UNDEFINED = '__lodash_hash_undefined__';
5773
5774  /** Used as the maximum memoize cache size. */
5775  var MAX_MEMOIZE_SIZE = 500;
5776
5777  /** Used as the internal argument placeholder. */
5778  var PLACEHOLDER = '__lodash_placeholder__';
5779
5780  /** Used to compose bitmasks for cloning. */
5781  var CLONE_DEEP_FLAG = 1,
5782      CLONE_FLAT_FLAG = 2,
5783      CLONE_SYMBOLS_FLAG = 4;
5784
5785  /** Used to compose bitmasks for value comparisons. */
5786  var COMPARE_PARTIAL_FLAG = 1,
5787      COMPARE_UNORDERED_FLAG = 2;
5788
5789  /** Used to compose bitmasks for function metadata. */
5790  var WRAP_BIND_FLAG = 1,
5791      WRAP_BIND_KEY_FLAG = 2,
5792      WRAP_CURRY_BOUND_FLAG = 4,
5793      WRAP_CURRY_FLAG = 8,
5794      WRAP_CURRY_RIGHT_FLAG = 16,
5795      WRAP_PARTIAL_FLAG = 32,
5796      WRAP_PARTIAL_RIGHT_FLAG = 64,
5797      WRAP_ARY_FLAG = 128,
5798      WRAP_REARG_FLAG = 256,
5799      WRAP_FLIP_FLAG = 512;
5800
5801  /** Used as default options for `_.truncate`. */
5802  var DEFAULT_TRUNC_LENGTH = 30,
5803      DEFAULT_TRUNC_OMISSION = '...';
5804
5805  /** Used to detect hot functions by number of calls within a span of milliseconds. */
5806  var HOT_COUNT = 800,
5807      HOT_SPAN = 16;
5808
5809  /** Used to indicate the type of lazy iteratees. */
5810  var LAZY_FILTER_FLAG = 1,
5811      LAZY_MAP_FLAG = 2,
5812      LAZY_WHILE_FLAG = 3;
5813
5814  /** Used as references for various `Number` constants. */
5815  var INFINITY = 1 / 0,
5816      MAX_SAFE_INTEGER = 9007199254740991,
5817      MAX_INTEGER = 1.7976931348623157e+308,
5818      NAN = 0 / 0;
5819
5820  /** Used as references for the maximum length and index of an array. */
5821  var MAX_ARRAY_LENGTH = 4294967295,
5822      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
5823      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
5824
5825  /** Used to associate wrap methods with their bit flags. */
5826  var wrapFlags = [
5827    ['ary', WRAP_ARY_FLAG],
5828    ['bind', WRAP_BIND_FLAG],
5829    ['bindKey', WRAP_BIND_KEY_FLAG],
5830    ['curry', WRAP_CURRY_FLAG],
5831    ['curryRight', WRAP_CURRY_RIGHT_FLAG],
5832    ['flip', WRAP_FLIP_FLAG],
5833    ['partial', WRAP_PARTIAL_FLAG],
5834    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
5835    ['rearg', WRAP_REARG_FLAG]
5836  ];
5837
5838  /** `Object#toString` result references. */
5839  var argsTag = '[object Arguments]',
5840      arrayTag = '[object Array]',
5841      asyncTag = '[object AsyncFunction]',
5842      boolTag = '[object Boolean]',
5843      dateTag = '[object Date]',
5844      domExcTag = '[object DOMException]',
5845      errorTag = '[object Error]',
5846      funcTag = '[object Function]',
5847      genTag = '[object GeneratorFunction]',
5848      mapTag = '[object Map]',
5849      numberTag = '[object Number]',
5850      nullTag = '[object Null]',
5851      objectTag = '[object Object]',
5852      promiseTag = '[object Promise]',
5853      proxyTag = '[object Proxy]',
5854      regexpTag = '[object RegExp]',
5855      setTag = '[object Set]',
5856      stringTag = '[object String]',
5857      symbolTag = '[object Symbol]',
5858      undefinedTag = '[object Undefined]',
5859      weakMapTag = '[object WeakMap]',
5860      weakSetTag = '[object WeakSet]';
5861
5862  var arrayBufferTag = '[object ArrayBuffer]',
5863      dataViewTag = '[object DataView]',
5864      float32Tag = '[object Float32Array]',
5865      float64Tag = '[object Float64Array]',
5866      int8Tag = '[object Int8Array]',
5867      int16Tag = '[object Int16Array]',
5868      int32Tag = '[object Int32Array]',
5869      uint8Tag = '[object Uint8Array]',
5870      uint8ClampedTag = '[object Uint8ClampedArray]',
5871      uint16Tag = '[object Uint16Array]',
5872      uint32Tag = '[object Uint32Array]';
5873
5874  /** Used to match empty string literals in compiled template source. */
5875  var reEmptyStringLeading = /\b__p \+= '';/g,
5876      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
5877      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
5878
5879  /** Used to match HTML entities and HTML characters. */
5880  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
5881      reUnescapedHtml = /[&<>"']/g,
5882      reHasEscapedHtml = RegExp(reEscapedHtml.source),
5883      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
5884
5885  /** Used to match template delimiters. */
5886  var reEscape = /<%-([\s\S]+?)%>/g,
5887      reEvaluate = /<%([\s\S]+?)%>/g,
5888      reInterpolate = /<%=([\s\S]+?)%>/g;
5889
5890  /** Used to match property names within property paths. */
5891  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
5892      reIsPlainProp = /^\w*$/,
5893      rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
5894
5895  /**
5896   * Used to match `RegExp`
5897   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
5898   */
5899  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
5900      reHasRegExpChar = RegExp(reRegExpChar.source);
5901
5902  /** Used to match leading and trailing whitespace. */
5903  var reTrim = /^\s+|\s+$/g,
5904      reTrimStart = /^\s+/,
5905      reTrimEnd = /\s+$/;
5906
5907  /** Used to match wrap detail comments. */
5908  var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
5909      reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
5910      reSplitDetails = /,? & /;
5911
5912  /** Used to match words composed of alphanumeric characters. */
5913  var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g
vendor: 6,239 bytes, lines 5913-6048
5913;
5914
5915  /** Used to match backslashes in property paths. */
5916  var reEscapeChar = /\\(\\)?/g;
5917
5918  /**
5919   * Used to match
5920   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
5921   */
5922  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
5923
5924  /** Used to match `RegExp` flags from their coerced string values. */
5925  var reFlags = /\w*$/;
5926
5927  /** Used to detect bad signed hexadecimal string values. */
5928  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
5929
5930  /** Used to detect binary string values. */
5931  var reIsBinary = /^0b[01]+$/i;
5932
5933  /** Used to detect host constructors (Safari). */
5934  var reIsHostCtor = /^\[object .+?Constructor\]$/;
5935
5936  /** Used to detect octal string values. */
5937  var reIsOctal = /^0o[0-7]+$/i;
5938
5939  /** Used to detect unsigned integer values. */
5940  var reIsUint = /^(?:0|[1-9]\d*)$/;
5941
5942  /** Used to match Latin Unicode letters (excluding mathematical operators). */
5943  var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
5944
5945  /** Used to ensure capturing order of template delimiters. */
5946  var reNoMatch = /($^)/;
5947
5948  /** Used to match unescaped characters in compiled string literals. */
5949  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
5950
5951  /** Used to compose unicode character classes. */
5952  var rsAstralRange = '\\ud800-\\udfff',
5953      rsComboMarksRange = '\\u0300-\\u036f',
5954      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
5955      rsComboSymbolsRange = '\\u20d0-\\u20ff',
5956      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
5957      rsDingbatRange = '\\u2700-\\u27bf',
5958      rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
5959      rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
5960      rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
5961      rsPunctuationRange = '\\u2000-\\u206f',
5962      rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
5963      rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
5964      rsVarRange = '\\ufe0e\\ufe0f',
5965      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
5966
5967  /** Used to compose unicode capture groups. */
5968  var rsApos = "['\u2019]",
5969      rsAstral = '[' + rsAstralRange + ']',
5970      rsBreak = '[' + rsBreakRange + ']',
5971      rsCombo = '[' + rsComboRange + ']',
5972      rsDigits = '\\d+',
5973      rsDingbat = '[' + rsDingbatRange + ']',
5974      rsLower = '[' + rsLowerRange + ']',
5975      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
5976      rsFitz = '\\ud83c[\\udffb-\\udfff]',
5977      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
5978      rsNonAstral = '[^' + rsAstralRange + ']',
5979      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
5980      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
5981      rsUpper = '[' + rsUpperRange + ']',
5982      rsZWJ = '\\u200d';
5983
5984  /** Used to compose unicode regexes. */
5985  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
5986      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
5987      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
5988      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
5989      reOptMod = rsModifier + '?',
5990      rsOptVar = '[' + rsVarRange + ']?',
5991      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
5992      rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
5993      rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
5994      rsSeq = rsOptVar + reOptMod + rsOptJoin,
5995      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
5996      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
5997
5998  /** Used to match apostrophes. */
5999  var reApos = RegExp(rsApos, 'g');
6000
6001  /**
6002   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
6003   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
6004   */
6005  var reComboMark = RegExp(rsCombo, 'g');
6006
6007  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
6008  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
6009
6010  /** Used to match complex or compound words. */
6011  var reUnicodeWord = RegExp([
6012    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
6013    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
6014    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
6015    rsUpper + '+' + rsOptContrUpper,
6016    rsOrdUpper,
6017    rsOrdLower,
6018    rsDigits,
6019    rsEmoji
6020  ].join('|'), 'g');
6021
6022  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
6023  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
6024
6025  /** Used to detect strings that need a more robust regexp to match words. */
6026  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
6027
6028  /** Used to assign default `context` object properties. */
6029  var contextProps = [
6030    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
6031    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
6032    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
6033    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
6034    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
6035  ];
6036
6037  /** Used to make template sourceURLs easier to identify. */
6038  var templateCounter = -1;
6039
6040  /** Used to identify `toStringTag` values of typed arrays. */
6041  var typedArrayTags = {};
6042  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
6043  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
6044  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
6045  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
6046  typedArrayTags[uint32Tag] = true;
6047  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
6048  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
vendor: 388,498 bytes, lines 6049-18244
6049  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
6050  typedArrayTags[errorTag] = typedArrayTags[funcTag] =
6051  typedArrayTags[mapTag] = typedArrayTags[numberTag] =
6052  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
6053  typedArrayTags[setTag] = typedArrayTags[stringTag] =
6054  typedArrayTags[weakMapTag] = false;
6055
6056  /** Used to identify `toStringTag` values supported by `_.clone`. */
6057  var cloneableTags = {};
6058  cloneableTags[argsTag] = cloneableTags[arrayTag] =
6059  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
6060  cloneableTags[boolTag] = cloneableTags[dateTag] =
6061  cloneableTags[float32Tag] = cloneableTags[float64Tag] =
6062  cloneableTags[int8Tag] = cloneableTags[int16Tag] =
6063  cloneableTags[int32Tag] = cloneableTags[mapTag] =
6064  cloneableTags[numberTag] = cloneableTags[objectTag] =
6065  cloneableTags[regexpTag] = cloneableTags[setTag] =
6066  cloneableTags[stringTag] = cloneableTags[symbolTag] =
6067  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
6068  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
6069  cloneableTags[errorTag] = cloneableTags[funcTag] =
6070  cloneableTags[weakMapTag] = false;
6071
6072  /** Used to map Latin Unicode letters to basic Latin letters. */
6073  var deburredLetters = {
6074    // Latin-1 Supplement block.
6075    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
6076    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
6077    '\xc7': 'C',  '\xe7': 'c',
6078    '\xd0': 'D',  '\xf0': 'd',
6079    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
6080    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
6081    '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
6082    '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
6083    '\xd1': 'N',  '\xf1': 'n',
6084    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
6085    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
6086    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
6087    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
6088    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
6089    '\xc6': 'Ae', '\xe6': 'ae',
6090    '\xde': 'Th', '\xfe': 'th',
6091    '\xdf': 'ss',
6092    // Latin Extended-A block.
6093    '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
6094    '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
6095    '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
6096    '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
6097    '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
6098    '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
6099    '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
6100    '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
6101    '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
6102    '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
6103    '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
6104    '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
6105    '\u0134': 'J',  '\u0135': 'j',
6106    '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
6107    '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
6108    '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
6109    '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
6110    '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
6111    '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
6112    '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
6113    '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
6114    '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
6115    '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
6116    '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
6117    '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
6118    '\u0163': 't',  '\u0165': 't', '\u0167': 't',
6119    '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
6120    '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
6121    '\u0174': 'W',  '\u0175': 'w',
6122    '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
6123    '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
6124    '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
6125    '\u0132': 'IJ', '\u0133': 'ij',
6126    '\u0152': 'Oe', '\u0153': 'oe',
6127    '\u0149': "'n", '\u017f': 's'
6128  };
6129
6130  /** Used to map characters to HTML entities. */
6131  var htmlEscapes = {
6132    '&': '&amp;',
6133    '<': '&lt;',
6134    '>': '&gt;',
6135    '"': '&quot;',
6136    "'": '&#39;'
6137  };
6138
6139  /** Used to map HTML entities to characters. */
6140  var htmlUnescapes = {
6141    '&amp;': '&',
6142    '&lt;': '<',
6143    '&gt;': '>',
6144    '&quot;': '"',
6145    '&#39;': "'"
6146  };
6147
6148  /** Used to escape characters for inclusion in compiled string literals. */
6149  var stringEscapes = {
6150    '\\': '\\',
6151    "'": "'",
6152    '\n': 'n',
6153    '\r': 'r',
6154    '\u2028': 'u2028',
6155    '\u2029': 'u2029'
6156  };
6157
6158  /** Built-in method references without a dependency on `root`. */
6159  var freeParseFloat = parseFloat,
6160      freeParseInt = parseInt;
6161
6162  /** Detect free variable `global` from Node.js. */
6163  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
6164
6165  /** Detect free variable `self`. */
6166  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
6167
6168  /** Used as a reference to the global object. */
6169  var root = freeGlobal || freeSelf || Function('return this')();
6170
6171  /** Detect free variable `exports`. */
6172  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
6173
6174  /** Detect free variable `module`. */
6175  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
6176
6177  /** Detect the popular CommonJS extension `module.exports`. */
6178  var moduleExports = freeModule && freeModule.exports === freeExports;
6179
6180  /** Detect free variable `process` from Node.js. */
6181  var freeProcess = moduleExports && freeGlobal.process;
6182
6183  /** Used to access faster Node.js helpers. */
6184  var nodeUtil = (function() {
6185    try {
6186      // Use `util.types` for Node.js 10+.
6187      var types = freeModule && freeModule.require && freeModule.require('util').types;
6188
6189      if (types) {
6190        return types;
6191      }
6192
6193      // Legacy `process.binding('util')` for Node.js < 10.
6194      return freeProcess && freeProcess.binding && freeProcess.binding('util');
6195    } catch (e) {}
6196  }());
6197
6198  /* Node.js helper references. */
6199  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
6200      nodeIsDate = nodeUtil && nodeUtil.isDate,
6201      nodeIsMap = nodeUtil && nodeUtil.isMap,
6202      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
6203      nodeIsSet = nodeUtil && nodeUtil.isSet,
6204      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
6205
6206  /*--------------------------------------------------------------------------*/
6207
6208  /**
6209   * A faster alternative to `Function#apply`, this function invokes `func`
6210   * with the `this` binding of `thisArg` and the arguments of `args`.
6211   *
6212   * @private
6213   * @param {Function} func The function to invoke.
6214   * @param {*} thisArg The `this` binding of `func`.
6215   * @param {Array} args The arguments to invoke `func` with.
6216   * @returns {*} Returns the result of `func`.
6217   */
6218  function apply(func, thisArg, args) {
6219    switch (args.length) {
6220      case 0: return func.call(thisArg);
6221      case 1: return func.call(thisArg, args[0]);
6222      case 2: return func.call(thisArg, args[0], args[1]);
6223      case 3: return func.call(thisArg, args[0], args[1], args[2]);
6224    }
6225    return func.apply(thisArg, args);
6226  }
6227
6228  /**
6229   * A specialized version of `baseAggregator` for arrays.
6230   *
6231   * @private
6232   * @param {Array} [array] The array to iterate over.
6233   * @param {Function} setter The function to set `accumulator` values.
6234   * @param {Function} iteratee The iteratee to transform keys.
6235   * @param {Object} accumulator The initial aggregated object.
6236   * @returns {Function} Returns `accumulator`.
6237   */
6238  function arrayAggregator(array, setter, iteratee, accumulator) {
6239    var index = -1,
6240        length = array == null ? 0 : array.length;
6241
6242    while (++index < length) {
6243      var value = array[index];
6244      setter(accumulator, value, iteratee(value), array);
6245    }
6246    return accumulator;
6247  }
6248
6249  /**
6250   * A specialized version of `_.forEach` for arrays without support for
6251   * iteratee shorthands.
6252   *
6253   * @private
6254   * @param {Array} [array] The array to iterate over.
6255   * @param {Function} iteratee The function invoked per iteration.
6256   * @returns {Array} Returns `array`.
6257   */
6258  function arrayEach(array, iteratee) {
6259    var index = -1,
6260        length = array == null ? 0 : array.length;
6261
6262    while (++index < length) {
6263      if (iteratee(array[index], index, array) === false) {
6264        break;
6265      }
6266    }
6267    return array;
6268  }
6269
6270  /**
6271   * A specialized version of `_.forEachRight` for arrays without support for
6272   * iteratee shorthands.
6273   *
6274   * @private
6275   * @param {Array} [array] The array to iterate over.
6276   * @param {Function} iteratee The function invoked per iteration.
6277   * @returns {Array} Returns `array`.
6278   */
6279  function arrayEachRight(array, iteratee) {
6280    var length = array == null ? 0 : array.length;
6281
6282    while (length--) {
6283      if (iteratee(array[length], length, array) === false) {
6284        break;
6285      }
6286    }
6287    return array;
6288  }
6289
6290  /**
6291   * A specialized version of `_.every` for arrays without support for
6292   * iteratee shorthands.
6293   *
6294   * @private
6295   * @param {Array} [array] The array to iterate over.
6296   * @param {Function} predicate The function invoked per iteration.
6297   * @returns {boolean} Returns `true` if all elements pass the predicate check,
6298   *  else `false`.
6299   */
6300  function arrayEvery(array, predicate) {
6301    var index = -1,
6302        length = array == null ? 0 : array.length;
6303
6304    while (++index < length) {
6305      if (!predicate(array[index], index, array)) {
6306        return false;
6307      }
6308    }
6309    return true;
6310  }
6311
6312  /**
6313   * A specialized version of `_.filter` for arrays without support for
6314   * iteratee shorthands.
6315   *
6316   * @private
6317   * @param {Array} [array] The array to iterate over.
6318   * @param {Function} predicate The function invoked per iteration.
6319   * @returns {Array} Returns the new filtered array.
6320   */
6321  function arrayFilter(array, predicate) {
6322    var index = -1,
6323        length = array == null ? 0 : array.length,
6324        resIndex = 0,
6325        result = [];
6326
6327    while (++index < length) {
6328      var value = array[index];
6329      if (predicate(value, index, array)) {
6330        result[resIndex++] = value;
6331      }
6332    }
6333    return result;
6334  }
6335
6336  /**
6337   * A specialized version of `_.includes` for arrays without support for
6338   * specifying an index to search from.
6339   *
6340   * @private
6341   * @param {Array} [array] The array to inspect.
6342   * @param {*} target The value to search for.
6343   * @returns {boolean} Returns `true` if `target` is found, else `false`.
6344   */
6345  function arrayIncludes(array, value) {
6346    var length = array == null ? 0 : array.length;
6347    return !!length && baseIndexOf(array, value, 0) > -1;
6348  }
6349
6350  /**
6351   * This function is like `arrayIncludes` except that it accepts a comparator.
6352   *
6353   * @private
6354   * @param {Array} [array] The array to inspect.
6355   * @param {*} target The value to search for.
6356   * @param {Function} comparator The comparator invoked per element.
6357   * @returns {boolean} Returns `true` if `target` is found, else `false`.
6358   */
6359  function arrayIncludesWith(array, value, comparator) {
6360    var index = -1,
6361        length = array == null ? 0 : array.length;
6362
6363    while (++index < length) {
6364      if (comparator(value, array[index])) {
6365        return true;
6366      }
6367    }
6368    return false;
6369  }
6370
6371  /**
6372   * A specialized version of `_.map` for arrays without support for iteratee
6373   * shorthands.
6374   *
6375   * @private
6376   * @param {Array} [array] The array to iterate over.
6377   * @param {Function} iteratee The function invoked per iteration.
6378   * @returns {Array} Returns the new mapped array.
6379   */
6380  function arrayMap(array, iteratee) {
6381    var index = -1,
6382        length = array == null ? 0 : array.length,
6383        result = Array(length);
6384
6385    while (++index < length) {
6386      result[index] = iteratee(array[index], index, array);
6387    }
6388    return result;
6389  }
6390
6391  /**
6392   * Appends the elements of `values` to `array`.
6393   *
6394   * @private
6395   * @param {Array} array The array to modify.
6396   * @param {Array} values The values to append.
6397   * @returns {Array} Returns `array`.
6398   */
6399  function arrayPush(array, values) {
6400    var index = -1,
6401        length = values.length,
6402        offset = array.length;
6403
6404    while (++index < length) {
6405      array[offset + index] = values[index];
6406    }
6407    return array;
6408  }
6409
6410  /**
6411   * A specialized version of `_.reduce` for arrays without support for
6412   * iteratee shorthands.
6413   *
6414   * @private
6415   * @param {Array} [array] The array to iterate over.
6416   * @param {Function} iteratee The function invoked per iteration.
6417   * @param {*} [accumulator] The initial value.
6418   * @param {boolean} [initAccum] Specify using the first element of `array` as
6419   *  the initial value.
6420   * @returns {*} Returns the accumulated value.
6421   */
6422  function arrayReduce(array, iteratee, accumulator, initAccum) {
6423    var index = -1,
6424        length = array == null ? 0 : array.length;
6425
6426    if (initAccum && length) {
6427      accumulator = array[++index];
6428    }
6429    while (++index < length) {
6430      accumulator = iteratee(accumulator, array[index], index, array);
6431    }
6432    return accumulator;
6433  }
6434
6435  /**
6436   * A specialized version of `_.reduceRight` for arrays without support for
6437   * iteratee shorthands.
6438   *
6439   * @private
6440   * @param {Array} [array] The array to iterate over.
6441   * @param {Function} iteratee The function invoked per iteration.
6442   * @param {*} [accumulator] The initial value.
6443   * @param {boolean} [initAccum] Specify using the last element of `array` as
6444   *  the initial value.
6445   * @returns {*} Returns the accumulated value.
6446   */
6447  function arrayReduceRight(array, iteratee, accumulator, initAccum) {
6448    var length = array == null ? 0 : array.length;
6449    if (initAccum && length) {
6450      accumulator = array[--length];
6451    }
6452    while (length--) {
6453      accumulator = iteratee(accumulator, array[length], length, array);
6454    }
6455    return accumulator;
6456  }
6457
6458  /**
6459   * A specialized version of `_.some` for arrays without support for iteratee
6460   * shorthands.
6461   *
6462   * @private
6463   * @param {Array} [array] The array to iterate over.
6464   * @param {Function} predicate The function invoked per iteration.
6465   * @returns {boolean} Returns `true` if any element passes the predicate check,
6466   *  else `false`.
6467   */
6468  function arraySome(array, predicate) {
6469    var index = -1,
6470        length = array == null ? 0 : array.length;
6471
6472    while (++index < length) {
6473      if (predicate(array[index], index, array)) {
6474        return true;
6475      }
6476    }
6477    return false;
6478  }
6479
6480  /**
6481   * Gets the size of an ASCII `string`.
6482   *
6483   * @private
6484   * @param {string} string The string inspect.
6485   * @returns {number} Returns the string size.
6486   */
6487  var asciiSize = baseProperty('length');
6488
6489  /**
6490   * Converts an ASCII `string` to an array.
6491   *
6492   * @private
6493   * @param {string} string The string to convert.
6494   * @returns {Array} Returns the converted array.
6495   */
6496  function asciiToArray(string) {
6497    return string.split('');
6498  }
6499
6500  /**
6501   * Splits an ASCII `string` into an array of its words.
6502   *
6503   * @private
6504   * @param {string} The string to inspect.
6505   * @returns {Array} Returns the words of `string`.
6506   */
6507  function asciiWords(string) {
6508    return string.match(reAsciiWord) || [];
6509  }
6510
6511  /**
6512   * The base implementation of methods like `_.findKey` and `_.findLastKey`,
6513   * without support for iteratee shorthands, which iterates over `collection`
6514   * using `eachFunc`.
6515   *
6516   * @private
6517   * @param {Array|Object} collection The collection to inspect.
6518   * @param {Function} predicate The function invoked per iteration.
6519   * @param {Function} eachFunc The function to iterate over `collection`.
6520   * @returns {*} Returns the found element or its key, else `undefined`.
6521   */
6522  function baseFindKey(collection, predicate, eachFunc) {
6523    var result;
6524    eachFunc(collection, function(value, key, collection) {
6525      if (predicate(value, key, collection)) {
6526        result = key;
6527        return false;
6528      }
6529    });
6530    return result;
6531  }
6532
6533  /**
6534   * The base implementation of `_.findIndex` and `_.findLastIndex` without
6535   * support for iteratee shorthands.
6536   *
6537   * @private
6538   * @param {Array} array The array to inspect.
6539   * @param {Function} predicate The function invoked per iteration.
6540   * @param {number} fromIndex The index to search from.
6541   * @param {boolean} [fromRight] Specify iterating from right to left.
6542   * @returns {number} Returns the index of the matched value, else `-1`.
6543   */
6544  function baseFindIndex(array, predicate, fromIndex, fromRight) {
6545    var length = array.length,
6546        index = fromIndex + (fromRight ? 1 : -1);
6547
6548    while ((fromRight ? index-- : ++index < length)) {
6549      if (predicate(array[index], index, array)) {
6550        return index;
6551      }
6552    }
6553    return -1;
6554  }
6555
6556  /**
6557   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
6558   *
6559   * @private
6560   * @param {Array} array The array to inspect.
6561   * @param {*} value The value to search for.
6562   * @param {number} fromIndex The index to search from.
6563   * @returns {number} Returns the index of the matched value, else `-1`.
6564   */
6565  function baseIndexOf(array, value, fromIndex) {
6566    return value === value
6567      ? strictIndexOf(array, value, fromIndex)
6568      : baseFindIndex(array, baseIsNaN, fromIndex);
6569  }
6570
6571  /**
6572   * This function is like `baseIndexOf` except that it accepts a comparator.
6573   *
6574   * @private
6575   * @param {Array} array The array to inspect.
6576   * @param {*} value The value to search for.
6577   * @param {number} fromIndex The index to search from.
6578   * @param {Function} comparator The comparator invoked per element.
6579   * @returns {number} Returns the index of the matched value, else `-1`.
6580   */
6581  function baseIndexOfWith(array, value, fromIndex, comparator) {
6582    var index = fromIndex - 1,
6583        length = array.length;
6584
6585    while (++index < length) {
6586      if (comparator(array[index], value)) {
6587        return index;
6588      }
6589    }
6590    return -1;
6591  }
6592
6593  /**
6594   * The base implementation of `_.isNaN` without support for number objects.
6595   *
6596   * @private
6597   * @param {*} value The value to check.
6598   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
6599   */
6600  function baseIsNaN(value) {
6601    return value !== value;
6602  }
6603
6604  /**
6605   * The base implementation of `_.mean` and `_.meanBy` without support for
6606   * iteratee shorthands.
6607   *
6608   * @private
6609   * @param {Array} array The array to iterate over.
6610   * @param {Function} iteratee The function invoked per iteration.
6611   * @returns {number} Returns the mean.
6612   */
6613  function baseMean(array, iteratee) {
6614    var length = array == null ? 0 : array.length;
6615    return length ? (baseSum(array, iteratee) / length) : NAN;
6616  }
6617
6618  /**
6619   * The base implementation of `_.property` without support for deep paths.
6620   *
6621   * @private
6622   * @param {string} key The key of the property to get.
6623   * @returns {Function} Returns the new accessor function.
6624   */
6625  function baseProperty(key) {
6626    return function(object) {
6627      return object == null ? undefined : object[key];
6628    };
6629  }
6630
6631  /**
6632   * The base implementation of `_.propertyOf` without support for deep paths.
6633   *
6634   * @private
6635   * @param {Object} object The object to query.
6636   * @returns {Function} Returns the new accessor function.
6637   */
6638  function basePropertyOf(object) {
6639    return function(key) {
6640      return object == null ? undefined : object[key];
6641    };
6642  }
6643
6644  /**
6645   * The base implementation of `_.reduce` and `_.reduceRight`, without support
6646   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
6647   *
6648   * @private
6649   * @param {Array|Object} collection The collection to iterate over.
6650   * @param {Function} iteratee The function invoked per iteration.
6651   * @param {*} accumulator The initial value.
6652   * @param {boolean} initAccum Specify using the first or last element of
6653   *  `collection` as the initial value.
6654   * @param {Function} eachFunc The function to iterate over `collection`.
6655   * @returns {*} Returns the accumulated value.
6656   */
6657  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
6658    eachFunc(collection, function(value, index, collection) {
6659      accumulator = initAccum
6660        ? (initAccum = false, value)
6661        : iteratee(accumulator, value, index, collection);
6662    });
6663    return accumulator;
6664  }
6665
6666  /**
6667   * The base implementation of `_.sortBy` which uses `comparer` to define the
6668   * sort order of `array` and replaces criteria objects with their corresponding
6669   * values.
6670   *
6671   * @private
6672   * @param {Array} array The array to sort.
6673   * @param {Function} comparer The function to define sort order.
6674   * @returns {Array} Returns `array`.
6675   */
6676  function baseSortBy(array, comparer) {
6677    var length = array.length;
6678
6679    array.sort(comparer);
6680    while (length--) {
6681      array[length] = array[length].value;
6682    }
6683    return array;
6684  }
6685
6686  /**
6687   * The base implementation of `_.sum` and `_.sumBy` without support for
6688   * iteratee shorthands.
6689   *
6690   * @private
6691   * @param {Array} array The array to iterate over.
6692   * @param {Function} iteratee The function invoked per iteration.
6693   * @returns {number} Returns the sum.
6694   */
6695  function baseSum(array, iteratee) {
6696    var result,
6697        index = -1,
6698        length = array.length;
6699
6700    while (++index < length) {
6701      var current = iteratee(array[index]);
6702      if (current !== undefined) {
6703        result = result === undefined ? current : (result + current);
6704      }
6705    }
6706    return result;
6707  }
6708
6709  /**
6710   * The base implementation of `_.times` without support for iteratee shorthands
6711   * or max array length checks.
6712   *
6713   * @private
6714   * @param {number} n The number of times to invoke `iteratee`.
6715   * @param {Function} iteratee The function invoked per iteration.
6716   * @returns {Array} Returns the array of results.
6717   */
6718  function baseTimes(n, iteratee) {
6719    var index = -1,
6720        result = Array(n);
6721
6722    while (++index < n) {
6723      result[index] = iteratee(index);
6724    }
6725    return result;
6726  }
6727
6728  /**
6729   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
6730   * of key-value pairs for `object` corresponding to the property names of `props`.
6731   *
6732   * @private
6733   * @param {Object} object The object to query.
6734   * @param {Array} props The property names to get values for.
6735   * @returns {Object} Returns the key-value pairs.
6736   */
6737  function baseToPairs(object, props) {
6738    return arrayMap(props, function(key) {
6739      return [key, object[key]];
6740    });
6741  }
6742
6743  /**
6744   * The base implementation of `_.unary` without support for storing metadata.
6745   *
6746   * @private
6747   * @param {Function} func The function to cap arguments for.
6748   * @returns {Function} Returns the new capped function.
6749   */
6750  function baseUnary(func) {
6751    return function(value) {
6752      return func(value);
6753    };
6754  }
6755
6756  /**
6757   * The base implementation of `_.values` and `_.valuesIn` which creates an
6758   * array of `object` property values corresponding to the property names
6759   * of `props`.
6760   *
6761   * @private
6762   * @param {Object} object The object to query.
6763   * @param {Array} props The property names to get values for.
6764   * @returns {Object} Returns the array of property values.
6765   */
6766  function baseValues(object, props) {
6767    return arrayMap(props, function(key) {
6768      return object[key];
6769    });
6770  }
6771
6772  /**
6773   * Checks if a `cache` value for `key` exists.
6774   *
6775   * @private
6776   * @param {Object} cache The cache to query.
6777   * @param {string} key The key of the entry to check.
6778   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
6779   */
6780  function cacheHas(cache, key) {
6781    return cache.has(key);
6782  }
6783
6784  /**
6785   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
6786   * that is not found in the character symbols.
6787   *
6788   * @private
6789   * @param {Array} strSymbols The string symbols to inspect.
6790   * @param {Array} chrSymbols The character symbols to find.
6791   * @returns {number} Returns the index of the first unmatched string symbol.
6792   */
6793  function charsStartIndex(strSymbols, chrSymbols) {
6794    var index = -1,
6795        length = strSymbols.length;
6796
6797    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
6798    return index;
6799  }
6800
6801  /**
6802   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
6803   * that is not found in the character symbols.
6804   *
6805   * @private
6806   * @param {Array} strSymbols The string symbols to inspect.
6807   * @param {Array} chrSymbols The character symbols to find.
6808   * @returns {number} Returns the index of the last unmatched string symbol.
6809   */
6810  function charsEndIndex(strSymbols, chrSymbols) {
6811    var index = strSymbols.length;
6812
6813    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
6814    return index;
6815  }
6816
6817  /**
6818   * Gets the number of `placeholder` occurrences in `array`.
6819   *
6820   * @private
6821   * @param {Array} array The array to inspect.
6822   * @param {*} placeholder The placeholder to search for.
6823   * @returns {number} Returns the placeholder count.
6824   */
6825  function countHolders(array, placeholder) {
6826    var length = array.length,
6827        result = 0;
6828
6829    while (length--) {
6830      if (array[length] === placeholder) {
6831        ++result;
6832      }
6833    }
6834    return result;
6835  }
6836
6837  /**
6838   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
6839   * letters to basic Latin letters.
6840   *
6841   * @private
6842   * @param {string} letter The matched letter to deburr.
6843   * @returns {string} Returns the deburred letter.
6844   */
6845  var deburrLetter = basePropertyOf(deburredLetters);
6846
6847  /**
6848   * Used by `_.escape` to convert characters to HTML entities.
6849   *
6850   * @private
6851   * @param {string} chr The matched character to escape.
6852   * @returns {string} Returns the escaped character.
6853   */
6854  var escapeHtmlChar = basePropertyOf(htmlEscapes);
6855
6856  /**
6857   * Used by `_.template` to escape characters for inclusion in compiled string literals.
6858   *
6859   * @private
6860   * @param {string} chr The matched character to escape.
6861   * @returns {string} Returns the escaped character.
6862   */
6863  function escapeStringChar(chr) {
6864    return '\\' + stringEscapes[chr];
6865  }
6866
6867  /**
6868   * Gets the value at `key` of `object`.
6869   *
6870   * @private
6871   * @param {Object} [object] The object to query.
6872   * @param {string} key The key of the property to get.
6873   * @returns {*} Returns the property value.
6874   */
6875  function getValue(object, key) {
6876    return object == null ? undefined : object[key];
6877  }
6878
6879  /**
6880   * Checks if `string` contains Unicode symbols.
6881   *
6882   * @private
6883   * @param {string} string The string to inspect.
6884   * @returns {boolean} Returns `true` if a symbol is found, else `false`.
6885   */
6886  function hasUnicode(string) {
6887    return reHasUnicode.test(string);
6888  }
6889
6890  /**
6891   * Checks if `string` contains a word composed of Unicode symbols.
6892   *
6893   * @private
6894   * @param {string} string The string to inspect.
6895   * @returns {boolean} Returns `true` if a word is found, else `false`.
6896   */
6897  function hasUnicodeWord(string) {
6898    return reHasUnicodeWord.test(string);
6899  }
6900
6901  /**
6902   * Converts `iterator` to an array.
6903   *
6904   * @private
6905   * @param {Object} iterator The iterator to convert.
6906   * @returns {Array} Returns the converted array.
6907   */
6908  function iteratorToArray(iterator) {
6909    var data,
6910        result = [];
6911
6912    while (!(data = iterator.next()).done) {
6913      result.push(data.value);
6914    }
6915    return result;
6916  }
6917
6918  /**
6919   * Converts `map` to its key-value pairs.
6920   *
6921   * @private
6922   * @param {Object} map The map to convert.
6923   * @returns {Array} Returns the key-value pairs.
6924   */
6925  function mapToArray(map) {
6926    var index = -1,
6927        result = Array(map.size);
6928
6929    map.forEach(function(value, key) {
6930      result[++index] = [key, value];
6931    });
6932    return result;
6933  }
6934
6935  /**
6936   * Creates a unary function that invokes `func` with its argument transformed.
6937   *
6938   * @private
6939   * @param {Function} func The function to wrap.
6940   * @param {Function} transform The argument transform.
6941   * @returns {Function} Returns the new function.
6942   */
6943  function overArg(func, transform) {
6944    return function(arg) {
6945      return func(transform(arg));
6946    };
6947  }
6948
6949  /**
6950   * Replaces all `placeholder` elements in `array` with an internal placeholder
6951   * and returns an array of their indexes.
6952   *
6953   * @private
6954   * @param {Array} array The array to modify.
6955   * @param {*} placeholder The placeholder to replace.
6956   * @returns {Array} Returns the new array of placeholder indexes.
6957   */
6958  function replaceHolders(array, placeholder) {
6959    var index = -1,
6960        length = array.length,
6961        resIndex = 0,
6962        result = [];
6963
6964    while (++index < length) {
6965      var value = array[index];
6966      if (value === placeholder || value === PLACEHOLDER) {
6967        array[index] = PLACEHOLDER;
6968        result[resIndex++] = index;
6969      }
6970    }
6971    return result;
6972  }
6973
6974  /**
6975   * Converts `set` to an array of its values.
6976   *
6977   * @private
6978   * @param {Object} set The set to convert.
6979   * @returns {Array} Returns the values.
6980   */
6981  function setToArray(set) {
6982    var index = -1,
6983        result = Array(set.size);
6984
6985    set.forEach(function(value) {
6986      result[++index] = value;
6987    });
6988    return result;
6989  }
6990
6991  /**
6992   * Converts `set` to its value-value pairs.
6993   *
6994   * @private
6995   * @param {Object} set The set to convert.
6996   * @returns {Array} Returns the value-value pairs.
6997   */
6998  function setToPairs(set) {
6999    var index = -1,
7000        result = Array(set.size);
7001
7002    set.forEach(function(value) {
7003      result[++index] = [value, value];
7004    });
7005    return result;
7006  }
7007
7008  /**
7009   * A specialized version of `_.indexOf` which performs strict equality
7010   * comparisons of values, i.e. `===`.
7011   *
7012   * @private
7013   * @param {Array} array The array to inspect.
7014   * @param {*} value The value to search for.
7015   * @param {number} fromIndex The index to search from.
7016   * @returns {number} Returns the index of the matched value, else `-1`.
7017   */
7018  function strictIndexOf(array, value, fromIndex) {
7019    var index = fromIndex - 1,
7020        length = array.length;
7021
7022    while (++index < length) {
7023      if (array[index] === value) {
7024        return index;
7025      }
7026    }
7027    return -1;
7028  }
7029
7030  /**
7031   * A specialized version of `_.lastIndexOf` which performs strict equality
7032   * comparisons of values, i.e. `===`.
7033   *
7034   * @private
7035   * @param {Array} array The array to inspect.
7036   * @param {*} value The value to search for.
7037   * @param {number} fromIndex The index to search from.
7038   * @returns {number} Returns the index of the matched value, else `-1`.
7039   */
7040  function strictLastIndexOf(array, value, fromIndex) {
7041    var index = fromIndex + 1;
7042    while (index--) {
7043      if (array[index] === value) {
7044        return index;
7045      }
7046    }
7047    return index;
7048  }
7049
7050  /**
7051   * Gets the number of symbols in `string`.
7052   *
7053   * @private
7054   * @param {string} string The string to inspect.
7055   * @returns {number} Returns the string size.
7056   */
7057  function stringSize(string) {
7058    return hasUnicode(string)
7059      ? unicodeSize(string)
7060      : asciiSize(string);
7061  }
7062
7063  /**
7064   * Converts `string` to an array.
7065   *
7066   * @private
7067   * @param {string} string The string to convert.
7068   * @returns {Array} Returns the converted array.
7069   */
7070  function stringToArray(string) {
7071    return hasUnicode(string)
7072      ? unicodeToArray(string)
7073      : asciiToArray(string);
7074  }
7075
7076  /**
7077   * Used by `_.unescape` to convert HTML entities to characters.
7078   *
7079   * @private
7080   * @param {string} chr The matched character to unescape.
7081   * @returns {string} Returns the unescaped character.
7082   */
7083  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
7084
7085  /**
7086   * Gets the size of a Unicode `string`.
7087   *
7088   * @private
7089   * @param {string} string The string inspect.
7090   * @returns {number} Returns the string size.
7091   */
7092  function unicodeSize(string) {
7093    var result = reUnicode.lastIndex = 0;
7094    while (reUnicode.test(string)) {
7095      ++result;
7096    }
7097    return result;
7098  }
7099
7100  /**
7101   * Converts a Unicode `string` to an array.
7102   *
7103   * @private
7104   * @param {string} string The string to convert.
7105   * @returns {Array} Returns the converted array.
7106   */
7107  function unicodeToArray(string) {
7108    return string.match(reUnicode) || [];
7109  }
7110
7111  /**
7112   * Splits a Unicode `string` into an array of its words.
7113   *
7114   * @private
7115   * @param {string} The string to inspect.
7116   * @returns {Array} Returns the words of `string`.
7117   */
7118  function unicodeWords(string) {
7119    return string.match(reUnicodeWord) || [];
7120  }
7121
7122  /*--------------------------------------------------------------------------*/
7123
7124  /**
7125   * Create a new pristine `lodash` function using the `context` object.
7126   *
7127   * @static
7128   * @memberOf _
7129   * @since 1.1.0
7130   * @category Util
7131   * @param {Object} [context=root] The context object.
7132   * @returns {Function} Returns a new `lodash` function.
7133   * @example
7134   *
7135   * _.mixin({ 'foo': _.constant('foo') });
7136   *
7137   * var lodash = _.runInContext();
7138   * lodash.mixin({ 'bar': lodash.constant('bar') });
7139   *
7140   * _.isFunction(_.foo);
7141   * // => true
7142   * _.isFunction(_.bar);
7143   * // => false
7144   *
7145   * lodash.isFunction(lodash.foo);
7146   * // => false
7147   * lodash.isFunction(lodash.bar);
7148   * // => true
7149   *
7150   * // Create a suped-up `defer` in Node.js.
7151   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
7152   */
7153  var runInContext = (function runInContext(context) {
7154    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
7155
7156    /** Built-in constructor references. */
7157    var Array = context.Array,
7158        Date = context.Date,
7159        Error = context.Error,
7160        Function = context.Function,
7161        Math = context.Math,
7162        Object = context.Object,
7163        RegExp = context.RegExp,
7164        String = context.String,
7165        TypeError = context.TypeError;
7166
7167    /** Used for built-in method references. */
7168    var arrayProto = Array.prototype,
7169        funcProto = Function.prototype,
7170        objectProto = Object.prototype;
7171
7172    /** Used to detect overreaching core-js shims. */
7173    var coreJsData = context['__core-js_shared__'];
7174
7175    /** Used to resolve the decompiled source of functions. */
7176    var funcToString = funcProto.toString;
7177
7178    /** Used to check objects for own properties. */
7179    var hasOwnProperty = objectProto.hasOwnProperty;
7180
7181    /** Used to generate unique IDs. */
7182    var idCounter = 0;
7183
7184    /** Used to detect methods masquerading as native. */
7185    var maskSrcKey = (function() {
7186      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
7187      return uid ? ('Symbol(src)_1.' + uid) : '';
7188    }());
7189
7190    /**
7191     * Used to resolve the
7192     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7193     * of values.
7194     */
7195    var nativeObjectToString = objectProto.toString;
7196
7197    /** Used to infer the `Object` constructor. */
7198    var objectCtorString = funcToString.call(Object);
7199
7200    /** Used to restore the original `_` reference in `_.noConflict`. */
7201    var oldDash = root._;
7202
7203    /** Used to detect if a method is native. */
7204    var reIsNative = RegExp('^' +
7205      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
7206      .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
7207    );
7208
7209    /** Built-in value references. */
7210    var Buffer = moduleExports ? context.Buffer : undefined,
7211        Symbol = context.Symbol,
7212        Uint8Array = context.Uint8Array,
7213        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
7214        getPrototype = overArg(Object.getPrototypeOf, Object),
7215        objectCreate = Object.create,
7216        propertyIsEnumerable = objectProto.propertyIsEnumerable,
7217        splice = arrayProto.splice,
7218        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
7219        symIterator = Symbol ? Symbol.iterator : undefined,
7220        symToStringTag = Symbol ? Symbol.toStringTag : undefined;
7221
7222    var defineProperty = (function() {
7223      try {
7224        var func = getNative(Object, 'defineProperty');
7225        func({}, '', {});
7226        return func;
7227      } catch (e) {}
7228    }());
7229
7230    /** Mocked built-ins. */
7231    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
7232        ctxNow = Date && Date.now !== root.Date.now && Date.now,
7233        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
7234
7235    /* Built-in method references for those with the same name as other `lodash` methods. */
7236    var nativeCeil = Math.ceil,
7237        nativeFloor = Math.floor,
7238        nativeGetSymbols = Object.getOwnPropertySymbols,
7239        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
7240        nativeIsFinite = context.isFinite,
7241        nativeJoin = arrayProto.join,
7242        nativeKeys = overArg(Object.keys, Object),
7243        nativeMax = Math.max,
7244        nativeMin = Math.min,
7245        nativeNow = Date.now,
7246        nativeParseInt = context.parseInt,
7247        nativeRandom = Math.random,
7248        nativeReverse = arrayProto.reverse;
7249
7250    /* Built-in method references that are verified to be native. */
7251    var DataView = getNative(context, 'DataView'),
7252        Map = getNative(context, 'Map'),
7253        Promise = getNative(context, 'Promise'),
7254        Set = getNative(context, 'Set'),
7255        WeakMap = getNative(context, 'WeakMap'),
7256        nativeCreate = getNative(Object, 'create');
7257
7258    /** Used to store function metadata. */
7259    var metaMap = WeakMap && new WeakMap;
7260
7261    /** Used to lookup unminified function names. */
7262    var realNames = {};
7263
7264    /** Used to detect maps, sets, and weakmaps. */
7265    var dataViewCtorString = toSource(DataView),
7266        mapCtorString = toSource(Map),
7267        promiseCtorString = toSource(Promise),
7268        setCtorString = toSource(Set),
7269        weakMapCtorString = toSource(WeakMap);
7270
7271    /** Used to convert symbols to primitives and strings. */
7272    var symbolProto = Symbol ? Symbol.prototype : undefined,
7273        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
7274        symbolToString = symbolProto ? symbolProto.toString : undefined;
7275
7276    /*------------------------------------------------------------------------*/
7277
7278    /**
7279     * Creates a `lodash` object which wraps `value` to enable implicit method
7280     * chain sequences. Methods that operate on and return arrays, collections,
7281     * and functions can be chained together. Methods that retrieve a single value
7282     * or may return a primitive value will automatically end the chain sequence
7283     * and return the unwrapped value. Otherwise, the value must be unwrapped
7284     * with `_#value`.
7285     *
7286     * Explicit chain sequences, which must be unwrapped with `_#value`, may be
7287     * enabled using `_.chain`.
7288     *
7289     * The execution of chained methods is lazy, that is, it's deferred until
7290     * `_#value` is implicitly or explicitly called.
7291     *
7292     * Lazy evaluation allows several methods to support shortcut fusion.
7293     * Shortcut fusion is an optimization to merge iteratee calls; this avoids
7294     * the creation of intermediate arrays and can greatly reduce the number of
7295     * iteratee executions. Sections of a chain sequence qualify for shortcut
7296     * fusion if the section is applied to an array and iteratees accept only
7297     * one argument. The heuristic for whether a section qualifies for shortcut
7298     * fusion is subject to change.
7299     *
7300     * Chaining is supported in custom builds as long as the `_#value` method is
7301     * directly or indirectly included in the build.
7302     *
7303     * In addition to lodash methods, wrappers have `Array` and `String` methods.
7304     *
7305     * The wrapper `Array` methods are:
7306     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
7307     *
7308     * The wrapper `String` methods are:
7309     * `replace` and `split`
7310     *
7311     * The wrapper methods that support shortcut fusion are:
7312     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
7313     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
7314     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
7315     *
7316     * The chainable wrapper methods are:
7317     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
7318     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
7319     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
7320     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
7321     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
7322     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
7323     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
7324     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
7325     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
7326     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
7327     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
7328     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
7329     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
7330     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
7331     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
7332     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
7333     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
7334     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
7335     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
7336     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
7337     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
7338     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
7339     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
7340     * `zipObject`, `zipObjectDeep`, and `zipWith`
7341     *
7342     * The wrapper methods that are **not** chainable by default are:
7343     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
7344     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
7345     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
7346     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
7347     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
7348     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
7349     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
7350     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
7351     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
7352     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
7353     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
7354     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
7355     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
7356     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
7357     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
7358     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
7359     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
7360     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
7361     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
7362     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
7363     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
7364     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
7365     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
7366     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
7367     * `upperFirst`, `value`, and `words`
7368     *
7369     * @name _
7370     * @constructor
7371     * @category Seq
7372     * @param {*} value The value to wrap in a `lodash` instance.
7373     * @returns {Object} Returns the new `lodash` wrapper instance.
7374     * @example
7375     *
7376     * function square(n) {
7377     *   return n * n;
7378     * }
7379     *
7380     * var wrapped = _([1, 2, 3]);
7381     *
7382     * // Returns an unwrapped value.
7383     * wrapped.reduce(_.add);
7384     * // => 6
7385     *
7386     * // Returns a wrapped value.
7387     * var squares = wrapped.map(square);
7388     *
7389     * _.isArray(squares);
7390     * // => false
7391     *
7392     * _.isArray(squares.value());
7393     * // => true
7394     */
7395    function lodash(value) {
7396      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
7397        if (value instanceof LodashWrapper) {
7398          return value;
7399        }
7400        if (hasOwnProperty.call(value, '__wrapped__')) {
7401          return wrapperClone(value);
7402        }
7403      }
7404      return new LodashWrapper(value);
7405    }
7406
7407    /**
7408     * The base implementation of `_.create` without support for assigning
7409     * properties to the created object.
7410     *
7411     * @private
7412     * @param {Object} proto The object to inherit from.
7413     * @returns {Object} Returns the new object.
7414     */
7415    var baseCreate = (function() {
7416      function object() {}
7417      return function(proto) {
7418        if (!isObject(proto)) {
7419          return {};
7420        }
7421        if (objectCreate) {
7422          return objectCreate(proto);
7423        }
7424        object.prototype = proto;
7425        var result = new object;
7426        object.prototype = undefined;
7427        return result;
7428      };
7429    }());
7430
7431    /**
7432     * The function whose prototype chain sequence wrappers inherit from.
7433     *
7434     * @private
7435     */
7436    function baseLodash() {
7437      // No operation performed.
7438    }
7439
7440    /**
7441     * The base constructor for creating `lodash` wrapper objects.
7442     *
7443     * @private
7444     * @param {*} value The value to wrap.
7445     * @param {boolean} [chainAll] Enable explicit method chain sequences.
7446     */
7447    function LodashWrapper(value, chainAll) {
7448      this.__wrapped__ = value;
7449      this.__actions__ = [];
7450      this.__chain__ = !!chainAll;
7451      this.__index__ = 0;
7452      this.__values__ = undefined;
7453    }
7454
7455    /**
7456     * By default, the template delimiters used by lodash are like those in
7457     * embedded Ruby (ERB) as well as ES2015 template strings. Change the
7458     * following template settings to use alternative delimiters.
7459     *
7460     * @static
7461     * @memberOf _
7462     * @type {Object}
7463     */
7464    lodash.templateSettings = {
7465
7466      /**
7467       * Used to detect `data` property values to be HTML-escaped.
7468       *
7469       * @memberOf _.templateSettings
7470       * @type {RegExp}
7471       */
7472      'escape': reEscape,
7473
7474      /**
7475       * Used to detect code to be evaluated.
7476       *
7477       * @memberOf _.templateSettings
7478       * @type {RegExp}
7479       */
7480      'evaluate': reEvaluate,
7481
7482      /**
7483       * Used to detect `data` property values to inject.
7484       *
7485       * @memberOf _.templateSettings
7486       * @type {RegExp}
7487       */
7488      'interpolate': reInterpolate,
7489
7490      /**
7491       * Used to reference the data object in the template text.
7492       *
7493       * @memberOf _.templateSettings
7494       * @type {string}
7495       */
7496      'variable': '',
7497
7498      /**
7499       * Used to import variables into the compiled template.
7500       *
7501       * @memberOf _.templateSettings
7502       * @type {Object}
7503       */
7504      'imports': {
7505
7506        /**
7507         * A reference to the `lodash` function.
7508         *
7509         * @memberOf _.templateSettings.imports
7510         * @type {Function}
7511         */
7512        '_': lodash
7513      }
7514    };
7515
7516    // Ensure wrappers are instances of `baseLodash`.
7517    lodash.prototype = baseLodash.prototype;
7518    lodash.prototype.constructor = lodash;
7519
7520    LodashWrapper.prototype = baseCreate(baseLodash.prototype);
7521    LodashWrapper.prototype.constructor = LodashWrapper;
7522
7523    /*------------------------------------------------------------------------*/
7524
7525    /**
7526     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
7527     *
7528     * @private
7529     * @constructor
7530     * @param {*} value The value to wrap.
7531     */
7532    function LazyWrapper(value) {
7533      this.__wrapped__ = value;
7534      this.__actions__ = [];
7535      this.__dir__ = 1;
7536      this.__filtered__ = false;
7537      this.__iteratees__ = [];
7538      this.__takeCount__ = MAX_ARRAY_LENGTH;
7539      this.__views__ = [];
7540    }
7541
7542    /**
7543     * Creates a clone of the lazy wrapper object.
7544     *
7545     * @private
7546     * @name clone
7547     * @memberOf LazyWrapper
7548     * @returns {Object} Returns the cloned `LazyWrapper` object.
7549     */
7550    function lazyClone() {
7551      var result = new LazyWrapper(this.__wrapped__);
7552      result.__actions__ = copyArray(this.__actions__);
7553      result.__dir__ = this.__dir__;
7554      result.__filtered__ = this.__filtered__;
7555      result.__iteratees__ = copyArray(this.__iteratees__);
7556      result.__takeCount__ = this.__takeCount__;
7557      result.__views__ = copyArray(this.__views__);
7558      return result;
7559    }
7560
7561    /**
7562     * Reverses the direction of lazy iteration.
7563     *
7564     * @private
7565     * @name reverse
7566     * @memberOf LazyWrapper
7567     * @returns {Object} Returns the new reversed `LazyWrapper` object.
7568     */
7569    function lazyReverse() {
7570      if (this.__filtered__) {
7571        var result = new LazyWrapper(this);
7572        result.__dir__ = -1;
7573        result.__filtered__ = true;
7574      } else {
7575        result = this.clone();
7576        result.__dir__ *= -1;
7577      }
7578      return result;
7579    }
7580
7581    /**
7582     * Extracts the unwrapped value from its lazy wrapper.
7583     *
7584     * @private
7585     * @name value
7586     * @memberOf LazyWrapper
7587     * @returns {*} Returns the unwrapped value.
7588     */
7589    function lazyValue() {
7590      var array = this.__wrapped__.value(),
7591          dir = this.__dir__,
7592          isArr = isArray(array),
7593          isRight = dir < 0,
7594          arrLength = isArr ? array.length : 0,
7595          view = getView(0, arrLength, this.__views__),
7596          start = view.start,
7597          end = view.end,
7598          length = end - start,
7599          index = isRight ? end : (start - 1),
7600          iteratees = this.__iteratees__,
7601          iterLength = iteratees.length,
7602          resIndex = 0,
7603          takeCount = nativeMin(length, this.__takeCount__);
7604
7605      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
7606        return baseWrapperValue(array, this.__actions__);
7607      }
7608      var result = [];
7609
7610      outer:
7611      while (length-- && resIndex < takeCount) {
7612        index += dir;
7613
7614        var iterIndex = -1,
7615            value = array[index];
7616
7617        while (++iterIndex < iterLength) {
7618          var data = iteratees[iterIndex],
7619              iteratee = data.iteratee,
7620              type = data.type,
7621              computed = iteratee(value);
7622
7623          if (type == LAZY_MAP_FLAG) {
7624            value = computed;
7625          } else if (!computed) {
7626            if (type == LAZY_FILTER_FLAG) {
7627              continue outer;
7628            } else {
7629              break outer;
7630            }
7631          }
7632        }
7633        result[resIndex++] = value;
7634      }
7635      return result;
7636    }
7637
7638    // Ensure `LazyWrapper` is an instance of `baseLodash`.
7639    LazyWrapper.prototype = baseCreate(baseLodash.prototype);
7640    LazyWrapper.prototype.constructor = LazyWrapper;
7641
7642    /*------------------------------------------------------------------------*/
7643
7644    /**
7645     * Creates a hash object.
7646     *
7647     * @private
7648     * @constructor
7649     * @param {Array} [entries] The key-value pairs to cache.
7650     */
7651    function Hash(entries) {
7652      var index = -1,
7653          length = entries == null ? 0 : entries.length;
7654
7655      this.clear();
7656      while (++index < length) {
7657        var entry = entries[index];
7658        this.set(entry[0], entry[1]);
7659      }
7660    }
7661
7662    /**
7663     * Removes all key-value entries from the hash.
7664     *
7665     * @private
7666     * @name clear
7667     * @memberOf Hash
7668     */
7669    function hashClear() {
7670      this.__data__ = nativeCreate ? nativeCreate(null) : {};
7671      this.size = 0;
7672    }
7673
7674    /**
7675     * Removes `key` and its value from the hash.
7676     *
7677     * @private
7678     * @name delete
7679     * @memberOf Hash
7680     * @param {Object} hash The hash to modify.
7681     * @param {string} key The key of the value to remove.
7682     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
7683     */
7684    function hashDelete(key) {
7685      var result = this.has(key) && delete this.__data__[key];
7686      this.size -= result ? 1 : 0;
7687      return result;
7688    }
7689
7690    /**
7691     * Gets the hash value for `key`.
7692     *
7693     * @private
7694     * @name get
7695     * @memberOf Hash
7696     * @param {string} key The key of the value to get.
7697     * @returns {*} Returns the entry value.
7698     */
7699    function hashGet(key) {
7700      var data = this.__data__;
7701      if (nativeCreate) {
7702        var result = data[key];
7703        return result === HASH_UNDEFINED ? undefined : result;
7704      }
7705      return hasOwnProperty.call(data, key) ? data[key] : undefined;
7706    }
7707
7708    /**
7709     * Checks if a hash value for `key` exists.
7710     *
7711     * @private
7712     * @name has
7713     * @memberOf Hash
7714     * @param {string} key The key of the entry to check.
7715     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
7716     */
7717    function hashHas(key) {
7718      var data = this.__data__;
7719      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
7720    }
7721
7722    /**
7723     * Sets the hash `key` to `value`.
7724     *
7725     * @private
7726     * @name set
7727     * @memberOf Hash
7728     * @param {string} key The key of the value to set.
7729     * @param {*} value The value to set.
7730     * @returns {Object} Returns the hash instance.
7731     */
7732    function hashSet(key, value) {
7733      var data = this.__data__;
7734      this.size += this.has(key) ? 0 : 1;
7735      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
7736      return this;
7737    }
7738
7739    // Add methods to `Hash`.
7740    Hash.prototype.clear = hashClear;
7741    Hash.prototype['delete'] = hashDelete;
7742    Hash.prototype.get = hashGet;
7743    Hash.prototype.has = hashHas;
7744    Hash.prototype.set = hashSet;
7745
7746    /*------------------------------------------------------------------------*/
7747
7748    /**
7749     * Creates an list cache object.
7750     *
7751     * @private
7752     * @constructor
7753     * @param {Array} [entries] The key-value pairs to cache.
7754     */
7755    function ListCache(entries) {
7756      var index = -1,
7757          length = entries == null ? 0 : entries.length;
7758
7759      this.clear();
7760      while (++index < length) {
7761        var entry = entries[index];
7762        this.set(entry[0], entry[1]);
7763      }
7764    }
7765
7766    /**
7767     * Removes all key-value entries from the list cache.
7768     *
7769     * @private
7770     * @name clear
7771     * @memberOf ListCache
7772     */
7773    function listCacheClear() {
7774      this.__data__ = [];
7775      this.size = 0;
7776    }
7777
7778    /**
7779     * Removes `key` and its value from the list cache.
7780     *
7781     * @private
7782     * @name delete
7783     * @memberOf ListCache
7784     * @param {string} key The key of the value to remove.
7785     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
7786     */
7787    function listCacheDelete(key) {
7788      var data = this.__data__,
7789          index = assocIndexOf(data, key);
7790
7791      if (index < 0) {
7792        return false;
7793      }
7794      var lastIndex = data.length - 1;
7795      if (index == lastIndex) {
7796        data.pop();
7797      } else {
7798        splice.call(data, index, 1);
7799      }
7800      --this.size;
7801      return true;
7802    }
7803
7804    /**
7805     * Gets the list cache value for `key`.
7806     *
7807     * @private
7808     * @name get
7809     * @memberOf ListCache
7810     * @param {string} key The key of the value to get.
7811     * @returns {*} Returns the entry value.
7812     */
7813    function listCacheGet(key) {
7814      var data = this.__data__,
7815          index = assocIndexOf(data, key);
7816
7817      return index < 0 ? undefined : data[index][1];
7818    }
7819
7820    /**
7821     * Checks if a list cache value for `key` exists.
7822     *
7823     * @private
7824     * @name has
7825     * @memberOf ListCache
7826     * @param {string} key The key of the entry to check.
7827     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
7828     */
7829    function listCacheHas(key) {
7830      return assocIndexOf(this.__data__, key) > -1;
7831    }
7832
7833    /**
7834     * Sets the list cache `key` to `value`.
7835     *
7836     * @private
7837     * @name set
7838     * @memberOf ListCache
7839     * @param {string} key The key of the value to set.
7840     * @param {*} value The value to set.
7841     * @returns {Object} Returns the list cache instance.
7842     */
7843    function listCacheSet(key, value) {
7844      var data = this.__data__,
7845          index = assocIndexOf(data, key);
7846
7847      if (index < 0) {
7848        ++this.size;
7849        data.push([key, value]);
7850      } else {
7851        data[index][1] = value;
7852      }
7853      return this;
7854    }
7855
7856    // Add methods to `ListCache`.
7857    ListCache.prototype.clear = listCacheClear;
7858    ListCache.prototype['delete'] = listCacheDelete;
7859    ListCache.prototype.get = listCacheGet;
7860    ListCache.prototype.has = listCacheHas;
7861    ListCache.prototype.set = listCacheSet;
7862
7863    /*------------------------------------------------------------------------*/
7864
7865    /**
7866     * Creates a map cache object to store key-value pairs.
7867     *
7868     * @private
7869     * @constructor
7870     * @param {Array} [entries] The key-value pairs to cache.
7871     */
7872    function MapCache(entries) {
7873      var index = -1,
7874          length = entries == null ? 0 : entries.length;
7875
7876      this.clear();
7877      while (++index < length) {
7878        var entry = entries[index];
7879        this.set(entry[0], entry[1]);
7880      }
7881    }
7882
7883    /**
7884     * Removes all key-value entries from the map.
7885     *
7886     * @private
7887     * @name clear
7888     * @memberOf MapCache
7889     */
7890    function mapCacheClear() {
7891      this.size = 0;
7892      this.__data__ = {
7893        'hash': new Hash,
7894        'map': new (Map || ListCache),
7895        'string': new Hash
7896      };
7897    }
7898
7899    /**
7900     * Removes `key` and its value from the map.
7901     *
7902     * @private
7903     * @name delete
7904     * @memberOf MapCache
7905     * @param {string} key The key of the value to remove.
7906     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
7907     */
7908    function mapCacheDelete(key) {
7909      var result = getMapData(this, key)['delete'](key);
7910      this.size -= result ? 1 : 0;
7911      return result;
7912    }
7913
7914    /**
7915     * Gets the map value for `key`.
7916     *
7917     * @private
7918     * @name get
7919     * @memberOf MapCache
7920     * @param {string} key The key of the value to get.
7921     * @returns {*} Returns the entry value.
7922     */
7923    function mapCacheGet(key) {
7924      return getMapData(this, key).get(key);
7925    }
7926
7927    /**
7928     * Checks if a map value for `key` exists.
7929     *
7930     * @private
7931     * @name has
7932     * @memberOf MapCache
7933     * @param {string} key The key of the entry to check.
7934     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
7935     */
7936    function mapCacheHas(key) {
7937      return getMapData(this, key).has(key);
7938    }
7939
7940    /**
7941     * Sets the map `key` to `value`.
7942     *
7943     * @private
7944     * @name set
7945     * @memberOf MapCache
7946     * @param {string} key The key of the value to set.
7947     * @param {*} value The value to set.
7948     * @returns {Object} Returns the map cache instance.
7949     */
7950    function mapCacheSet(key, value) {
7951      var data = getMapData(this, key),
7952          size = data.size;
7953
7954      data.set(key, value);
7955      this.size += data.size == size ? 0 : 1;
7956      return this;
7957    }
7958
7959    // Add methods to `MapCache`.
7960    MapCache.prototype.clear = mapCacheClear;
7961    MapCache.prototype['delete'] = mapCacheDelete;
7962    MapCache.prototype.get = mapCacheGet;
7963    MapCache.prototype.has = mapCacheHas;
7964    MapCache.prototype.set = mapCacheSet;
7965
7966    /*------------------------------------------------------------------------*/
7967
7968    /**
7969     *
7970     * Creates an array cache object to store unique values.
7971     *
7972     * @private
7973     * @constructor
7974     * @param {Array} [values] The values to cache.
7975     */
7976    function SetCache(values) {
7977      var index = -1,
7978          length = values == null ? 0 : values.length;
7979
7980      this.__data__ = new MapCache;
7981      while (++index < length) {
7982        this.add(values[index]);
7983      }
7984    }
7985
7986    /**
7987     * Adds `value` to the array cache.
7988     *
7989     * @private
7990     * @name add
7991     * @memberOf SetCache
7992     * @alias push
7993     * @param {*} value The value to cache.
7994     * @returns {Object} Returns the cache instance.
7995     */
7996    function setCacheAdd(value) {
7997      this.__data__.set(value, HASH_UNDEFINED);
7998      return this;
7999    }
8000
8001    /**
8002     * Checks if `value` is in the array cache.
8003     *
8004     * @private
8005     * @name has
8006     * @memberOf SetCache
8007     * @param {*} value The value to search for.
8008     * @returns {number} Returns `true` if `value` is found, else `false`.
8009     */
8010    function setCacheHas(value) {
8011      return this.__data__.has(value);
8012    }
8013
8014    // Add methods to `SetCache`.
8015    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
8016    SetCache.prototype.has = setCacheHas;
8017
8018    /*------------------------------------------------------------------------*/
8019
8020    /**
8021     * Creates a stack cache object to store key-value pairs.
8022     *
8023     * @private
8024     * @constructor
8025     * @param {Array} [entries] The key-value pairs to cache.
8026     */
8027    function Stack(entries) {
8028      var data = this.__data__ = new ListCache(entries);
8029      this.size = data.size;
8030    }
8031
8032    /**
8033     * Removes all key-value entries from the stack.
8034     *
8035     * @private
8036     * @name clear
8037     * @memberOf Stack
8038     */
8039    function stackClear() {
8040      this.__data__ = new ListCache;
8041      this.size = 0;
8042    }
8043
8044    /**
8045     * Removes `key` and its value from the stack.
8046     *
8047     * @private
8048     * @name delete
8049     * @memberOf Stack
8050     * @param {string} key The key of the value to remove.
8051     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
8052     */
8053    function stackDelete(key) {
8054      var data = this.__data__,
8055          result = data['delete'](key);
8056
8057      this.size = data.size;
8058      return result;
8059    }
8060
8061    /**
8062     * Gets the stack value for `key`.
8063     *
8064     * @private
8065     * @name get
8066     * @memberOf Stack
8067     * @param {string} key The key of the value to get.
8068     * @returns {*} Returns the entry value.
8069     */
8070    function stackGet(key) {
8071      return this.__data__.get(key);
8072    }
8073
8074    /**
8075     * Checks if a stack value for `key` exists.
8076     *
8077     * @private
8078     * @name has
8079     * @memberOf Stack
8080     * @param {string} key The key of the entry to check.
8081     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
8082     */
8083    function stackHas(key) {
8084      return this.__data__.has(key);
8085    }
8086
8087    /**
8088     * Sets the stack `key` to `value`.
8089     *
8090     * @private
8091     * @name set
8092     * @memberOf Stack
8093     * @param {string} key The key of the value to set.
8094     * @param {*} value The value to set.
8095     * @returns {Object} Returns the stack cache instance.
8096     */
8097    function stackSet(key, value) {
8098      var data = this.__data__;
8099      if (data instanceof ListCache) {
8100        var pairs = data.__data__;
8101        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
8102          pairs.push([key, value]);
8103          this.size = ++data.size;
8104          return this;
8105        }
8106        data = this.__data__ = new MapCache(pairs);
8107      }
8108      data.set(key, value);
8109      this.size = data.size;
8110      return this;
8111    }
8112
8113    // Add methods to `Stack`.
8114    Stack.prototype.clear = stackClear;
8115    Stack.prototype['delete'] = stackDelete;
8116    Stack.prototype.get = stackGet;
8117    Stack.prototype.has = stackHas;
8118    Stack.prototype.set = stackSet;
8119
8120    /*------------------------------------------------------------------------*/
8121
8122    /**
8123     * Creates an array of the enumerable property names of the array-like `value`.
8124     *
8125     * @private
8126     * @param {*} value The value to query.
8127     * @param {boolean} inherited Specify returning inherited property names.
8128     * @returns {Array} Returns the array of property names.
8129     */
8130    function arrayLikeKeys(value, inherited) {
8131      var isArr = isArray(value),
8132          isArg = !isArr && isArguments(value),
8133          isBuff = !isArr && !isArg && isBuffer(value),
8134          isType = !isArr && !isArg && !isBuff && isTypedArray(value),
8135          skipIndexes = isArr || isArg || isBuff || isType,
8136          result = skipIndexes ? baseTimes(value.length, String) : [],
8137          length = result.length;
8138
8139      for (var key in value) {
8140        if ((inherited || hasOwnProperty.call(value, key)) &&
8141            !(skipIndexes && (
8142               // Safari 9 has enumerable `arguments.length` in strict mode.
8143               key == 'length' ||
8144               // Node.js 0.10 has enumerable non-index properties on buffers.
8145               (isBuff && (key == 'offset' || key == 'parent')) ||
8146               // PhantomJS 2 has enumerable non-index properties on typed arrays.
8147               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
8148               // Skip index properties.
8149               isIndex(key, length)
8150            ))) {
8151          result.push(key);
8152        }
8153      }
8154      return result;
8155    }
8156
8157    /**
8158     * A specialized version of `_.sample` for arrays.
8159     *
8160     * @private
8161     * @param {Array} array The array to sample.
8162     * @returns {*} Returns the random element.
8163     */
8164    function arraySample(array) {
8165      var length = array.length;
8166      return length ? array[baseRandom(0, length - 1)] : undefined;
8167    }
8168
8169    /**
8170     * A specialized version of `_.sampleSize` for arrays.
8171     *
8172     * @private
8173     * @param {Array} array The array to sample.
8174     * @param {number} n The number of elements to sample.
8175     * @returns {Array} Returns the random elements.
8176     */
8177    function arraySampleSize(array, n) {
8178      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
8179    }
8180
8181    /**
8182     * A specialized version of `_.shuffle` for arrays.
8183     *
8184     * @private
8185     * @param {Array} array The array to shuffle.
8186     * @returns {Array} Returns the new shuffled array.
8187     */
8188    function arrayShuffle(array) {
8189      return shuffleSelf(copyArray(array));
8190    }
8191
8192    /**
8193     * This function is like `assignValue` except that it doesn't assign
8194     * `undefined` values.
8195     *
8196     * @private
8197     * @param {Object} object The object to modify.
8198     * @param {string} key The key of the property to assign.
8199     * @param {*} value The value to assign.
8200     */
8201    function assignMergeValue(object, key, value) {
8202      if ((value !== undefined && !eq(object[key], value)) ||
8203          (value === undefined && !(key in object))) {
8204        baseAssignValue(object, key, value);
8205      }
8206    }
8207
8208    /**
8209     * Assigns `value` to `key` of `object` if the existing value is not equivalent
8210     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
8211     * for equality comparisons.
8212     *
8213     * @private
8214     * @param {Object} object The object to modify.
8215     * @param {string} key The key of the property to assign.
8216     * @param {*} value The value to assign.
8217     */
8218    function assignValue(object, key, value) {
8219      var objValue = object[key];
8220      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
8221          (value === undefined && !(key in object))) {
8222        baseAssignValue(object, key, value);
8223      }
8224    }
8225
8226    /**
8227     * Gets the index at which the `key` is found in `array` of key-value pairs.
8228     *
8229     * @private
8230     * @param {Array} array The array to inspect.
8231     * @param {*} key The key to search for.
8232     * @returns {number} Returns the index of the matched value, else `-1`.
8233     */
8234    function assocIndexOf(array, key) {
8235      var length = array.length;
8236      while (length--) {
8237        if (eq(array[length][0], key)) {
8238          return length;
8239        }
8240      }
8241      return -1;
8242    }
8243
8244    /**
8245     * Aggregates elements of `collection` on `accumulator` with keys transformed
8246     * by `iteratee` and values set by `setter`.
8247     *
8248     * @private
8249     * @param {Array|Object} collection The collection to iterate over.
8250     * @param {Function} setter The function to set `accumulator` values.
8251     * @param {Function} iteratee The iteratee to transform keys.
8252     * @param {Object} accumulator The initial aggregated object.
8253     * @returns {Function} Returns `accumulator`.
8254     */
8255    function baseAggregator(collection, setter, iteratee, accumulator) {
8256      baseEach(collection, function(value, key, collection) {
8257        setter(accumulator, value, iteratee(value), collection);
8258      });
8259      return accumulator;
8260    }
8261
8262    /**
8263     * The base implementation of `_.assign` without support for multiple sources
8264     * or `customizer` functions.
8265     *
8266     * @private
8267     * @param {Object} object The destination object.
8268     * @param {Object} source The source object.
8269     * @returns {Object} Returns `object`.
8270     */
8271    function baseAssign(object, source) {
8272      return object && copyObject(source, keys(source), object);
8273    }
8274
8275    /**
8276     * The base implementation of `_.assignIn` without support for multiple sources
8277     * or `customizer` functions.
8278     *
8279     * @private
8280     * @param {Object} object The destination object.
8281     * @param {Object} source The source object.
8282     * @returns {Object} Returns `object`.
8283     */
8284    function baseAssignIn(object, source) {
8285      return object && copyObject(source, keysIn(source), object);
8286    }
8287
8288    /**
8289     * The base implementation of `assignValue` and `assignMergeValue` without
8290     * value checks.
8291     *
8292     * @private
8293     * @param {Object} object The object to modify.
8294     * @param {string} key The key of the property to assign.
8295     * @param {*} value The value to assign.
8296     */
8297    function baseAssignValue(object, key, value) {
8298      if (key == '__proto__' && defineProperty) {
8299        defineProperty(object, key, {
8300          'configurable': true,
8301          'enumerable': true,
8302          'value': value,
8303          'writable': true
8304        });
8305      } else {
8306        object[key] = value;
8307      }
8308    }
8309
8310    /**
8311     * The base implementation of `_.at` without support for individual paths.
8312     *
8313     * @private
8314     * @param {Object} object The object to iterate over.
8315     * @param {string[]} paths The property paths to pick.
8316     * @returns {Array} Returns the picked elements.
8317     */
8318    function baseAt(object, paths) {
8319      var index = -1,
8320          length = paths.length,
8321          result = Array(length),
8322          skip = object == null;
8323
8324      while (++index < length) {
8325        result[index] = skip ? undefined : get(object, paths[index]);
8326      }
8327      return result;
8328    }
8329
8330    /**
8331     * The base implementation of `_.clamp` which doesn't coerce arguments.
8332     *
8333     * @private
8334     * @param {number} number The number to clamp.
8335     * @param {number} [lower] The lower bound.
8336     * @param {number} upper The upper bound.
8337     * @returns {number} Returns the clamped number.
8338     */
8339    function baseClamp(number, lower, upper) {
8340      if (number === number) {
8341        if (upper !== undefined) {
8342          number = number <= upper ? number : upper;
8343        }
8344        if (lower !== undefined) {
8345          number = number >= lower ? number : lower;
8346        }
8347      }
8348      return number;
8349    }
8350
8351    /**
8352     * The base implementation of `_.clone` and `_.cloneDeep` which tracks
8353     * traversed objects.
8354     *
8355     * @private
8356     * @param {*} value The value to clone.
8357     * @param {boolean} bitmask The bitmask flags.
8358     *  1 - Deep clone
8359     *  2 - Flatten inherited properties
8360     *  4 - Clone symbols
8361     * @param {Function} [customizer] The function to customize cloning.
8362     * @param {string} [key] The key of `value`.
8363     * @param {Object} [object] The parent object of `value`.
8364     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
8365     * @returns {*} Returns the cloned value.
8366     */
8367    function baseClone(value, bitmask, customizer, key, object, stack) {
8368      var result,
8369          isDeep = bitmask & CLONE_DEEP_FLAG,
8370          isFlat = bitmask & CLONE_FLAT_FLAG,
8371          isFull = bitmask & CLONE_SYMBOLS_FLAG;
8372
8373      if (customizer) {
8374        result = object ? customizer(value, key, object, stack) : customizer(value);
8375      }
8376      if (result !== undefined) {
8377        return result;
8378      }
8379      if (!isObject(value)) {
8380        return value;
8381      }
8382      var isArr = isArray(value);
8383      if (isArr) {
8384        result = initCloneArray(value);
8385        if (!isDeep) {
8386          return copyArray(value, result);
8387        }
8388      } else {
8389        var tag = getTag(value),
8390            isFunc = tag == funcTag || tag == genTag;
8391
8392        if (isBuffer(value)) {
8393          return cloneBuffer(value, isDeep);
8394        }
8395        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
8396          result = (isFlat || isFunc) ? {} : initCloneObject(value);
8397          if (!isDeep) {
8398            return isFlat
8399              ? copySymbolsIn(value, baseAssignIn(result, value))
8400              : copySymbols(value, baseAssign(result, value));
8401          }
8402        } else {
8403          if (!cloneableTags[tag]) {
8404            return object ? value : {};
8405          }
8406          result = initCloneByTag(value, tag, isDeep);
8407        }
8408      }
8409      // Check for circular references and return its corresponding clone.
8410      stack || (stack = new Stack);
8411      var stacked = stack.get(value);
8412      if (stacked) {
8413        return stacked;
8414      }
8415      stack.set(value, result);
8416
8417      if (isSet(value)) {
8418        value.forEach(function(subValue) {
8419          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
8420        });
8421      } else if (isMap(value)) {
8422        value.forEach(function(subValue, key) {
8423          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
8424        });
8425      }
8426
8427      var keysFunc = isFull
8428        ? (isFlat ? getAllKeysIn : getAllKeys)
8429        : (isFlat ? keysIn : keys);
8430
8431      var props = isArr ? undefined : keysFunc(value);
8432      arrayEach(props || value, function(subValue, key) {
8433        if (props) {
8434          key = subValue;
8435          subValue = value[key];
8436        }
8437        // Recursively populate clone (susceptible to call stack limits).
8438        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
8439      });
8440      return result;
8441    }
8442
8443    /**
8444     * The base implementation of `_.conforms` which doesn't clone `source`.
8445     *
8446     * @private
8447     * @param {Object} source The object of property predicates to conform to.
8448     * @returns {Function} Returns the new spec function.
8449     */
8450    function baseConforms(source) {
8451      var props = keys(source);
8452      return function(object) {
8453        return baseConformsTo(object, source, props);
8454      };
8455    }
8456
8457    /**
8458     * The base implementation of `_.conformsTo` which accepts `props` to check.
8459     *
8460     * @private
8461     * @param {Object} object The object to inspect.
8462     * @param {Object} source The object of property predicates to conform to.
8463     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
8464     */
8465    function baseConformsTo(object, source, props) {
8466      var length = props.length;
8467      if (object == null) {
8468        return !length;
8469      }
8470      object = Object(object);
8471      while (length--) {
8472        var key = props[length],
8473            predicate = source[key],
8474            value = object[key];
8475
8476        if ((value === undefined && !(key in object)) || !predicate(value)) {
8477          return false;
8478        }
8479      }
8480      return true;
8481    }
8482
8483    /**
8484     * The base implementation of `_.delay` and `_.defer` which accepts `args`
8485     * to provide to `func`.
8486     *
8487     * @private
8488     * @param {Function} func The function to delay.
8489     * @param {number} wait The number of milliseconds to delay invocation.
8490     * @param {Array} args The arguments to provide to `func`.
8491     * @returns {number|Object} Returns the timer id or timeout object.
8492     */
8493    function baseDelay(func, wait, args) {
8494      if (typeof func != 'function') {
8495        throw new TypeError(FUNC_ERROR_TEXT);
8496      }
8497      return setTimeout(function() { func.apply(undefined, args); }, wait);
8498    }
8499
8500    /**
8501     * The base implementation of methods like `_.difference` without support
8502     * for excluding multiple arrays or iteratee shorthands.
8503     *
8504     * @private
8505     * @param {Array} array The array to inspect.
8506     * @param {Array} values The values to exclude.
8507     * @param {Function} [iteratee] The iteratee invoked per element.
8508     * @param {Function} [comparator] The comparator invoked per element.
8509     * @returns {Array} Returns the new array of filtered values.
8510     */
8511    function baseDifference(array, values, iteratee, comparator) {
8512      var index = -1,
8513          includes = arrayIncludes,
8514          isCommon = true,
8515          length = array.length,
8516          result = [],
8517          valuesLength = values.length;
8518
8519      if (!length) {
8520        return result;
8521      }
8522      if (iteratee) {
8523        values = arrayMap(values, baseUnary(iteratee));
8524      }
8525      if (comparator) {
8526        includes = arrayIncludesWith;
8527        isCommon = false;
8528      }
8529      else if (values.length >= LARGE_ARRAY_SIZE) {
8530        includes = cacheHas;
8531        isCommon = false;
8532        values = new SetCache(values);
8533      }
8534      outer:
8535      while (++index < length) {
8536        var value = array[index],
8537            computed = iteratee == null ? value : iteratee(value);
8538
8539        value = (comparator || value !== 0) ? value : 0;
8540        if (isCommon && computed === computed) {
8541          var valuesIndex = valuesLength;
8542          while (valuesIndex--) {
8543            if (values[valuesIndex] === computed) {
8544              continue outer;
8545            }
8546          }
8547          result.push(value);
8548        }
8549        else if (!includes(values, computed, comparator)) {
8550          result.push(value);
8551        }
8552      }
8553      return result;
8554    }
8555
8556    /**
8557     * The base implementation of `_.forEach` without support for iteratee shorthands.
8558     *
8559     * @private
8560     * @param {Array|Object} collection The collection to iterate over.
8561     * @param {Function} iteratee The function invoked per iteration.
8562     * @returns {Array|Object} Returns `collection`.
8563     */
8564    var baseEach = createBaseEach(baseForOwn);
8565
8566    /**
8567     * The base implementation of `_.forEachRight` without support for iteratee shorthands.
8568     *
8569     * @private
8570     * @param {Array|Object} collection The collection to iterate over.
8571     * @param {Function} iteratee The function invoked per iteration.
8572     * @returns {Array|Object} Returns `collection`.
8573     */
8574    var baseEachRight = createBaseEach(baseForOwnRight, true);
8575
8576    /**
8577     * The base implementation of `_.every` without support for iteratee shorthands.
8578     *
8579     * @private
8580     * @param {Array|Object} collection The collection to iterate over.
8581     * @param {Function} predicate The function invoked per iteration.
8582     * @returns {boolean} Returns `true` if all elements pass the predicate check,
8583     *  else `false`
8584     */
8585    function baseEvery(collection, predicate) {
8586      var result = true;
8587      baseEach(collection, function(value, index, collection) {
8588        result = !!predicate(value, index, collection);
8589        return result;
8590      });
8591      return result;
8592    }
8593
8594    /**
8595     * The base implementation of methods like `_.max` and `_.min` which accepts a
8596     * `comparator` to determine the extremum value.
8597     *
8598     * @private
8599     * @param {Array} array The array to iterate over.
8600     * @param {Function} iteratee The iteratee invoked per iteration.
8601     * @param {Function} comparator The comparator used to compare values.
8602     * @returns {*} Returns the extremum value.
8603     */
8604    function baseExtremum(array, iteratee, comparator) {
8605      var index = -1,
8606          length = array.length;
8607
8608      while (++index < length) {
8609        var value = array[index],
8610            current = iteratee(value);
8611
8612        if (current != null && (computed === undefined
8613              ? (current === current && !isSymbol(current))
8614              : comparator(current, computed)
8615            )) {
8616          var computed = current,
8617              result = value;
8618        }
8619      }
8620      return result;
8621    }
8622
8623    /**
8624     * The base implementation of `_.fill` without an iteratee call guard.
8625     *
8626     * @private
8627     * @param {Array} array The array to fill.
8628     * @param {*} value The value to fill `array` with.
8629     * @param {number} [start=0] The start position.
8630     * @param {number} [end=array.length] The end position.
8631     * @returns {Array} Returns `array`.
8632     */
8633    function baseFill(array, value, start, end) {
8634      var length = array.length;
8635
8636      start = toInteger(start);
8637      if (start < 0) {
8638        start = -start > length ? 0 : (length + start);
8639      }
8640      end = (end === undefined || end > length) ? length : toInteger(end);
8641      if (end < 0) {
8642        end += length;
8643      }
8644      end = start > end ? 0 : toLength(end);
8645      while (start < end) {
8646        array[start++] = value;
8647      }
8648      return array;
8649    }
8650
8651    /**
8652     * The base implementation of `_.filter` without support for iteratee shorthands.
8653     *
8654     * @private
8655     * @param {Array|Object} collection The collection to iterate over.
8656     * @param {Function} predicate The function invoked per iteration.
8657     * @returns {Array} Returns the new filtered array.
8658     */
8659    function baseFilter(collection, predicate) {
8660      var result = [];
8661      baseEach(collection, function(value, index, collection) {
8662        if (predicate(value, index, collection)) {
8663          result.push(value);
8664        }
8665      });
8666      return result;
8667    }
8668
8669    /**
8670     * The base implementation of `_.flatten` with support for restricting flattening.
8671     *
8672     * @private
8673     * @param {Array} array The array to flatten.
8674     * @param {number} depth The maximum recursion depth.
8675     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
8676     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
8677     * @param {Array} [result=[]] The initial result value.
8678     * @returns {Array} Returns the new flattened array.
8679     */
8680    function baseFlatten(array, depth, predicate, isStrict, result) {
8681      var index = -1,
8682          length = array.length;
8683
8684      predicate || (predicate = isFlattenable);
8685      result || (result = []);
8686
8687      while (++index < length) {
8688        var value = array[index];
8689        if (depth > 0 && predicate(value)) {
8690          if (depth > 1) {
8691            // Recursively flatten arrays (susceptible to call stack limits).
8692            baseFlatten(value, depth - 1, predicate, isStrict, result);
8693          } else {
8694            arrayPush(result, value);
8695          }
8696        } else if (!isStrict) {
8697          result[result.length] = value;
8698        }
8699      }
8700      return result;
8701    }
8702
8703    /**
8704     * The base implementation of `baseForOwn` which iterates over `object`
8705     * properties returned by `keysFunc` and invokes `iteratee` for each property.
8706     * Iteratee functions may exit iteration early by explicitly returning `false`.
8707     *
8708     * @private
8709     * @param {Object} object The object to iterate over.
8710     * @param {Function} iteratee The function invoked per iteration.
8711     * @param {Function} keysFunc The function to get the keys of `object`.
8712     * @returns {Object} Returns `object`.
8713     */
8714    var baseFor = createBaseFor();
8715
8716    /**
8717     * This function is like `baseFor` except that it iterates over properties
8718     * in the opposite order.
8719     *
8720     * @private
8721     * @param {Object} object The object to iterate over.
8722     * @param {Function} iteratee The function invoked per iteration.
8723     * @param {Function} keysFunc The function to get the keys of `object`.
8724     * @returns {Object} Returns `object`.
8725     */
8726    var baseForRight = createBaseFor(true);
8727
8728    /**
8729     * The base implementation of `_.forOwn` without support for iteratee shorthands.
8730     *
8731     * @private
8732     * @param {Object} object The object to iterate over.
8733     * @param {Function} iteratee The function invoked per iteration.
8734     * @returns {Object} Returns `object`.
8735     */
8736    function baseForOwn(object, iteratee) {
8737      return object && baseFor(object, iteratee, keys);
8738    }
8739
8740    /**
8741     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
8742     *
8743     * @private
8744     * @param {Object} object The object to iterate over.
8745     * @param {Function} iteratee The function invoked per iteration.
8746     * @returns {Object} Returns `object`.
8747     */
8748    function baseForOwnRight(object, iteratee) {
8749      return object && baseForRight(object, iteratee, keys);
8750    }
8751
8752    /**
8753     * The base implementation of `_.functions` which creates an array of
8754     * `object` function property names filtered from `props`.
8755     *
8756     * @private
8757     * @param {Object} object The object to inspect.
8758     * @param {Array} props The property names to filter.
8759     * @returns {Array} Returns the function names.
8760     */
8761    function baseFunctions(object, props) {
8762      return arrayFilter(props, function(key) {
8763        return isFunction(object[key]);
8764      });
8765    }
8766
8767    /**
8768     * The base implementation of `_.get` without support for default values.
8769     *
8770     * @private
8771     * @param {Object} object The object to query.
8772     * @param {Array|string} path The path of the property to get.
8773     * @returns {*} Returns the resolved value.
8774     */
8775    function baseGet(object, path) {
8776      path = castPath(path, object);
8777
8778      var index = 0,
8779          length = path.length;
8780
8781      while (object != null && index < length) {
8782        object = object[toKey(path[index++])];
8783      }
8784      return (index && index == length) ? object : undefined;
8785    }
8786
8787    /**
8788     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
8789     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
8790     * symbols of `object`.
8791     *
8792     * @private
8793     * @param {Object} object The object to query.
8794     * @param {Function} keysFunc The function to get the keys of `object`.
8795     * @param {Function} symbolsFunc The function to get the symbols of `object`.
8796     * @returns {Array} Returns the array of property names and symbols.
8797     */
8798    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
8799      var result = keysFunc(object);
8800      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
8801    }
8802
8803    /**
8804     * The base implementation of `getTag` without fallbacks for buggy environments.
8805     *
8806     * @private
8807     * @param {*} value The value to query.
8808     * @returns {string} Returns the `toStringTag`.
8809     */
8810    function baseGetTag(value) {
8811      if (value == null) {
8812        return value === undefined ? undefinedTag : nullTag;
8813      }
8814      return (symToStringTag && symToStringTag in Object(value))
8815        ? getRawTag(value)
8816        : objectToString(value);
8817    }
8818
8819    /**
8820     * The base implementation of `_.gt` which doesn't coerce arguments.
8821     *
8822     * @private
8823     * @param {*} value The value to compare.
8824     * @param {*} other The other value to compare.
8825     * @returns {boolean} Returns `true` if `value` is greater than `other`,
8826     *  else `false`.
8827     */
8828    function baseGt(value, other) {
8829      return value > other;
8830    }
8831
8832    /**
8833     * The base implementation of `_.has` without support for deep paths.
8834     *
8835     * @private
8836     * @param {Object} [object] The object to query.
8837     * @param {Array|string} key The key to check.
8838     * @returns {boolean} Returns `true` if `key` exists, else `false`.
8839     */
8840    function baseHas(object, key) {
8841      return object != null && hasOwnProperty.call(object, key);
8842    }
8843
8844    /**
8845     * The base implementation of `_.hasIn` without support for deep paths.
8846     *
8847     * @private
8848     * @param {Object} [object] The object to query.
8849     * @param {Array|string} key The key to check.
8850     * @returns {boolean} Returns `true` if `key` exists, else `false`.
8851     */
8852    function baseHasIn(object, key) {
8853      return object != null && key in Object(object);
8854    }
8855
8856    /**
8857     * The base implementation of `_.inRange` which doesn't coerce arguments.
8858     *
8859     * @private
8860     * @param {number} number The number to check.
8861     * @param {number} start The start of the range.
8862     * @param {number} end The end of the range.
8863     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
8864     */
8865    function baseInRange(number, start, end) {
8866      return number >= nativeMin(start, end) && number < nativeMax(start, end);
8867    }
8868
8869    /**
8870     * The base implementation of methods like `_.intersection`, without support
8871     * for iteratee shorthands, that accepts an array of arrays to inspect.
8872     *
8873     * @private
8874     * @param {Array} arrays The arrays to inspect.
8875     * @param {Function} [iteratee] The iteratee invoked per element.
8876     * @param {Function} [comparator] The comparator invoked per element.
8877     * @returns {Array} Returns the new array of shared values.
8878     */
8879    function baseIntersection(arrays, iteratee, comparator) {
8880      var includes = comparator ? arrayIncludesWith : arrayIncludes,
8881          length = arrays[0].length,
8882          othLength = arrays.length,
8883          othIndex = othLength,
8884          caches = Array(othLength),
8885          maxLength = Infinity,
8886          result = [];
8887
8888      while (othIndex--) {
8889        var array = arrays[othIndex];
8890        if (othIndex && iteratee) {
8891          array = arrayMap(array, baseUnary(iteratee));
8892        }
8893        maxLength = nativeMin(array.length, maxLength);
8894        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
8895          ? new SetCache(othIndex && array)
8896          : undefined;
8897      }
8898      array = arrays[0];
8899
8900      var index = -1,
8901          seen = caches[0];
8902
8903      outer:
8904      while (++index < length && result.length < maxLength) {
8905        var value = array[index],
8906            computed = iteratee ? iteratee(value) : value;
8907
8908        value = (comparator || value !== 0) ? value : 0;
8909        if (!(seen
8910              ? cacheHas(seen, computed)
8911              : includes(result, computed, comparator)
8912            )) {
8913          othIndex = othLength;
8914          while (--othIndex) {
8915            var cache = caches[othIndex];
8916            if (!(cache
8917                  ? cacheHas(cache, computed)
8918                  : includes(arrays[othIndex], computed, comparator))
8919                ) {
8920              continue outer;
8921            }
8922          }
8923          if (seen) {
8924            seen.push(computed);
8925          }
8926          result.push(value);
8927        }
8928      }
8929      return result;
8930    }
8931
8932    /**
8933     * The base implementation of `_.invert` and `_.invertBy` which inverts
8934     * `object` with values transformed by `iteratee` and set by `setter`.
8935     *
8936     * @private
8937     * @param {Object} object The object to iterate over.
8938     * @param {Function} setter The function to set `accumulator` values.
8939     * @param {Function} iteratee The iteratee to transform values.
8940     * @param {Object} accumulator The initial inverted object.
8941     * @returns {Function} Returns `accumulator`.
8942     */
8943    function baseInverter(object, setter, iteratee, accumulator) {
8944      baseForOwn(object, function(value, key, object) {
8945        setter(accumulator, iteratee(value), key, object);
8946      });
8947      return accumulator;
8948    }
8949
8950    /**
8951     * The base implementation of `_.invoke` without support for individual
8952     * method arguments.
8953     *
8954     * @private
8955     * @param {Object} object The object to query.
8956     * @param {Array|string} path The path of the method to invoke.
8957     * @param {Array} args The arguments to invoke the method with.
8958     * @returns {*} Returns the result of the invoked method.
8959     */
8960    function baseInvoke(object, path, args) {
8961      path = castPath(path, object);
8962      object = parent(object, path);
8963      var func = object == null ? object : object[toKey(last(path))];
8964      return func == null ? undefined : apply(func, object, args);
8965    }
8966
8967    /**
8968     * The base implementation of `_.isArguments`.
8969     *
8970     * @private
8971     * @param {*} value The value to check.
8972     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
8973     */
8974    function baseIsArguments(value) {
8975      return isObjectLike(value) && baseGetTag(value) == argsTag;
8976    }
8977
8978    /**
8979     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
8980     *
8981     * @private
8982     * @param {*} value The value to check.
8983     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
8984     */
8985    function baseIsArrayBuffer(value) {
8986      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
8987    }
8988
8989    /**
8990     * The base implementation of `_.isDate` without Node.js optimizations.
8991     *
8992     * @private
8993     * @param {*} value The value to check.
8994     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
8995     */
8996    function baseIsDate(value) {
8997      return isObjectLike(value) && baseGetTag(value) == dateTag;
8998    }
8999
9000    /**
9001     * The base implementation of `_.isEqual` which supports partial comparisons
9002     * and tracks traversed objects.
9003     *
9004     * @private
9005     * @param {*} value The value to compare.
9006     * @param {*} other The other value to compare.
9007     * @param {boolean} bitmask The bitmask flags.
9008     *  1 - Unordered comparison
9009     *  2 - Partial comparison
9010     * @param {Function} [customizer] The function to customize comparisons.
9011     * @param {Object} [stack] Tracks traversed `value` and `other` objects.
9012     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
9013     */
9014    function baseIsEqual(value, other, bitmask, customizer, stack) {
9015      if (value === other) {
9016        return true;
9017      }
9018      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
9019        return value !== value && other !== other;
9020      }
9021      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
9022    }
9023
9024    /**
9025     * A specialized version of `baseIsEqual` for arrays and objects which performs
9026     * deep comparisons and tracks traversed objects enabling objects with circular
9027     * references to be compared.
9028     *
9029     * @private
9030     * @param {Object} object The object to compare.
9031     * @param {Object} other The other object to compare.
9032     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
9033     * @param {Function} customizer The function to customize comparisons.
9034     * @param {Function} equalFunc The function to determine equivalents of values.
9035     * @param {Object} [stack] Tracks traversed `object` and `other` objects.
9036     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9037     */
9038    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
9039      var objIsArr = isArray(object),
9040          othIsArr = isArray(other),
9041          objTag = objIsArr ? arrayTag : getTag(object),
9042          othTag = othIsArr ? arrayTag : getTag(other);
9043
9044      objTag = objTag == argsTag ? objectTag : objTag;
9045      othTag = othTag == argsTag ? objectTag : othTag;
9046
9047      var objIsObj = objTag == objectTag,
9048          othIsObj = othTag == objectTag,
9049          isSameTag = objTag == othTag;
9050
9051      if (isSameTag && isBuffer(object)) {
9052        if (!isBuffer(other)) {
9053          return false;
9054        }
9055        objIsArr = true;
9056        objIsObj = false;
9057      }
9058      if (isSameTag && !objIsObj) {
9059        stack || (stack = new Stack);
9060        return (objIsArr || isTypedArray(object))
9061          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
9062          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
9063      }
9064      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
9065        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
9066            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
9067
9068        if (objIsWrapped || othIsWrapped) {
9069          var objUnwrapped = objIsWrapped ? object.value() : object,
9070              othUnwrapped = othIsWrapped ? other.value() : other;
9071
9072          stack || (stack = new Stack);
9073          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
9074        }
9075      }
9076      if (!isSameTag) {
9077        return false;
9078      }
9079      stack || (stack = new Stack);
9080      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
9081    }
9082
9083    /**
9084     * The base implementation of `_.isMap` without Node.js optimizations.
9085     *
9086     * @private
9087     * @param {*} value The value to check.
9088     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
9089     */
9090    function baseIsMap(value) {
9091      return isObjectLike(value) && getTag(value) == mapTag;
9092    }
9093
9094    /**
9095     * The base implementation of `_.isMatch` without support for iteratee shorthands.
9096     *
9097     * @private
9098     * @param {Object} object The object to inspect.
9099     * @param {Object} source The object of property values to match.
9100     * @param {Array} matchData The property names, values, and compare flags to match.
9101     * @param {Function} [customizer] The function to customize comparisons.
9102     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
9103     */
9104    function baseIsMatch(object, source, matchData, customizer) {
9105      var index = matchData.length,
9106          length = index,
9107          noCustomizer = !customizer;
9108
9109      if (object == null) {
9110        return !length;
9111      }
9112      object = Object(object);
9113      while (index--) {
9114        var data = matchData[index];
9115        if ((noCustomizer && data[2])
9116              ? data[1] !== object[data[0]]
9117              : !(data[0] in object)
9118            ) {
9119          return false;
9120        }
9121      }
9122      while (++index < length) {
9123        data = matchData[index];
9124        var key = data[0],
9125            objValue = object[key],
9126            srcValue = data[1];
9127
9128        if (noCustomizer && data[2]) {
9129          if (objValue === undefined && !(key in object)) {
9130            return false;
9131          }
9132        } else {
9133          var stack = new Stack;
9134          if (customizer) {
9135            var result = customizer(objValue, srcValue, key, object, source, stack);
9136          }
9137          if (!(result === undefined
9138                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
9139                : result
9140              )) {
9141            return false;
9142          }
9143        }
9144      }
9145      return true;
9146    }
9147
9148    /**
9149     * The base implementation of `_.isNative` without bad shim checks.
9150     *
9151     * @private
9152     * @param {*} value The value to check.
9153     * @returns {boolean} Returns `true` if `value` is a native function,
9154     *  else `false`.
9155     */
9156    function baseIsNative(value) {
9157      if (!isObject(value) || isMasked(value)) {
9158        return false;
9159      }
9160      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
9161      return pattern.test(toSource(value));
9162    }
9163
9164    /**
9165     * The base implementation of `_.isRegExp` without Node.js optimizations.
9166     *
9167     * @private
9168     * @param {*} value The value to check.
9169     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
9170     */
9171    function baseIsRegExp(value) {
9172      return isObjectLike(value) && baseGetTag(value) == regexpTag;
9173    }
9174
9175    /**
9176     * The base implementation of `_.isSet` without Node.js optimizations.
9177     *
9178     * @private
9179     * @param {*} value The value to check.
9180     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
9181     */
9182    function baseIsSet(value) {
9183      return isObjectLike(value) && getTag(value) == setTag;
9184    }
9185
9186    /**
9187     * The base implementation of `_.isTypedArray` without Node.js optimizations.
9188     *
9189     * @private
9190     * @param {*} value The value to check.
9191     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
9192     */
9193    function baseIsTypedArray(value) {
9194      return isObjectLike(value) &&
9195        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
9196    }
9197
9198    /**
9199     * The base implementation of `_.iteratee`.
9200     *
9201     * @private
9202     * @param {*} [value=_.identity] The value to convert to an iteratee.
9203     * @returns {Function} Returns the iteratee.
9204     */
9205    function baseIteratee(value) {
9206      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
9207      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
9208      if (typeof value == 'function') {
9209        return value;
9210      }
9211      if (value == null) {
9212        return identity;
9213      }
9214      if (typeof value == 'object') {
9215        return isArray(value)
9216          ? baseMatchesProperty(value[0], value[1])
9217          : baseMatches(value);
9218      }
9219      return property(value);
9220    }
9221
9222    /**
9223     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
9224     *
9225     * @private
9226     * @param {Object} object The object to query.
9227     * @returns {Array} Returns the array of property names.
9228     */
9229    function baseKeys(object) {
9230      if (!isPrototype(object)) {
9231        return nativeKeys(object);
9232      }
9233      var result = [];
9234      for (var key in Object(object)) {
9235        if (hasOwnProperty.call(object, key) && key != 'constructor') {
9236          result.push(key);
9237        }
9238      }
9239      return result;
9240    }
9241
9242    /**
9243     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
9244     *
9245     * @private
9246     * @param {Object} object The object to query.
9247     * @returns {Array} Returns the array of property names.
9248     */
9249    function baseKeysIn(object) {
9250      if (!isObject(object)) {
9251        return nativeKeysIn(object);
9252      }
9253      var isProto = isPrototype(object),
9254          result = [];
9255
9256      for (var key in object) {
9257        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
9258          result.push(key);
9259        }
9260      }
9261      return result;
9262    }
9263
9264    /**
9265     * The base implementation of `_.lt` which doesn't coerce arguments.
9266     *
9267     * @private
9268     * @param {*} value The value to compare.
9269     * @param {*} other The other value to compare.
9270     * @returns {boolean} Returns `true` if `value` is less than `other`,
9271     *  else `false`.
9272     */
9273    function baseLt(value, other) {
9274      return value < other;
9275    }
9276
9277    /**
9278     * The base implementation of `_.map` without support for iteratee shorthands.
9279     *
9280     * @private
9281     * @param {Array|Object} collection The collection to iterate over.
9282     * @param {Function} iteratee The function invoked per iteration.
9283     * @returns {Array} Returns the new mapped array.
9284     */
9285    function baseMap(collection, iteratee) {
9286      var index = -1,
9287          result = isArrayLike(collection) ? Array(collection.length) : [];
9288
9289      baseEach(collection, function(value, key, collection) {
9290        result[++index] = iteratee(value, key, collection);
9291      });
9292      return result;
9293    }
9294
9295    /**
9296     * The base implementation of `_.matches` which doesn't clone `source`.
9297     *
9298     * @private
9299     * @param {Object} source The object of property values to match.
9300     * @returns {Function} Returns the new spec function.
9301     */
9302    function baseMatches(source) {
9303      var matchData = getMatchData(source);
9304      if (matchData.length == 1 && matchData[0][2]) {
9305        return matchesStrictComparable(matchData[0][0], matchData[0][1]);
9306      }
9307      return function(object) {
9308        return object === source || baseIsMatch(object, source, matchData);
9309      };
9310    }
9311
9312    /**
9313     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
9314     *
9315     * @private
9316     * @param {string} path The path of the property to get.
9317     * @param {*} srcValue The value to match.
9318     * @returns {Function} Returns the new spec function.
9319     */
9320    function baseMatchesProperty(path, srcValue) {
9321      if (isKey(path) && isStrictComparable(srcValue)) {
9322        return matchesStrictComparable(toKey(path), srcValue);
9323      }
9324      return function(object) {
9325        var objValue = get(object, path);
9326        return (objValue === undefined && objValue === srcValue)
9327          ? hasIn(object, path)
9328          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
9329      };
9330    }
9331
9332    /**
9333     * The base implementation of `_.merge` without support for multiple sources.
9334     *
9335     * @private
9336     * @param {Object} object The destination object.
9337     * @param {Object} source The source object.
9338     * @param {number} srcIndex The index of `source`.
9339     * @param {Function} [customizer] The function to customize merged values.
9340     * @param {Object} [stack] Tracks traversed source values and their merged
9341     *  counterparts.
9342     */
9343    function baseMerge(object, source, srcIndex, customizer, stack) {
9344      if (object === source) {
9345        return;
9346      }
9347      baseFor(source, function(srcValue, key) {
9348        stack || (stack = new Stack);
9349        if (isObject(srcValue)) {
9350          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
9351        }
9352        else {
9353          var newValue = customizer
9354            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
9355            : undefined;
9356
9357          if (newValue === undefined) {
9358            newValue = srcValue;
9359          }
9360          assignMergeValue(object, key, newValue);
9361        }
9362      }, keysIn);
9363    }
9364
9365    /**
9366     * A specialized version of `baseMerge` for arrays and objects which performs
9367     * deep merges and tracks traversed objects enabling objects with circular
9368     * references to be merged.
9369     *
9370     * @private
9371     * @param {Object} object The destination object.
9372     * @param {Object} source The source object.
9373     * @param {string} key The key of the value to merge.
9374     * @param {number} srcIndex The index of `source`.
9375     * @param {Function} mergeFunc The function to merge values.
9376     * @param {Function} [customizer] The function to customize assigned values.
9377     * @param {Object} [stack] Tracks traversed source values and their merged
9378     *  counterparts.
9379     */
9380    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
9381      var objValue = safeGet(object, key),
9382          srcValue = safeGet(source, key),
9383          stacked = stack.get(srcValue);
9384
9385      if (stacked) {
9386        assignMergeValue(object, key, stacked);
9387        return;
9388      }
9389      var newValue = customizer
9390        ? customizer(objValue, srcValue, (key + ''), object, source, stack)
9391        : undefined;
9392
9393      var isCommon = newValue === undefined;
9394
9395      if (isCommon) {
9396        var isArr = isArray(srcValue),
9397            isBuff = !isArr && isBuffer(srcValue),
9398            isTyped = !isArr && !isBuff && isTypedArray(srcValue);
9399
9400        newValue = srcValue;
9401        if (isArr || isBuff || isTyped) {
9402          if (isArray(objValue)) {
9403            newValue = objValue;
9404          }
9405          else if (isArrayLikeObject(objValue)) {
9406            newValue = copyArray(objValue);
9407          }
9408          else if (isBuff) {
9409            isCommon = false;
9410            newValue = cloneBuffer(srcValue, true);
9411          }
9412          else if (isTyped) {
9413            isCommon = false;
9414            newValue = cloneTypedArray(srcValue, true);
9415          }
9416          else {
9417            newValue = [];
9418          }
9419        }
9420        else if (isPlainObject(srcValue) || isArguments(srcValue)) {
9421          newValue = objValue;
9422          if (isArguments(objValue)) {
9423            newValue = toPlainObject(objValue);
9424          }
9425          else if (!isObject(objValue) || isFunction(objValue)) {
9426            newValue = initCloneObject(srcValue);
9427          }
9428        }
9429        else {
9430          isCommon = false;
9431        }
9432      }
9433      if (isCommon) {
9434        // Recursively merge objects and arrays (susceptible to call stack limits).
9435        stack.set(srcValue, newValue);
9436        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
9437        stack['delete'](srcValue);
9438      }
9439      assignMergeValue(object, key, newValue);
9440    }
9441
9442    /**
9443     * The base implementation of `_.nth` which doesn't coerce arguments.
9444     *
9445     * @private
9446     * @param {Array} array The array to query.
9447     * @param {number} n The index of the element to return.
9448     * @returns {*} Returns the nth element of `array`.
9449     */
9450    function baseNth(array, n) {
9451      var length = array.length;
9452      if (!length) {
9453        return;
9454      }
9455      n += n < 0 ? length : 0;
9456      return isIndex(n, length) ? array[n] : undefined;
9457    }
9458
9459    /**
9460     * The base implementation of `_.orderBy` without param guards.
9461     *
9462     * @private
9463     * @param {Array|Object} collection The collection to iterate over.
9464     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
9465     * @param {string[]} orders The sort orders of `iteratees`.
9466     * @returns {Array} Returns the new sorted array.
9467     */
9468    function baseOrderBy(collection, iteratees, orders) {
9469      if (iteratees.length) {
9470        iteratees = arrayMap(iteratees, function(iteratee) {
9471          if (isArray(iteratee)) {
9472            return function(value) {
9473              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
9474            }
9475          }
9476          return iteratee;
9477        });
9478      } else {
9479        iteratees = [identity];
9480      }
9481
9482      var index = -1;
9483      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
9484
9485      var result = baseMap(collection, function(value, key, collection) {
9486        var criteria = arrayMap(iteratees, function(iteratee) {
9487          return iteratee(value);
9488        });
9489        return { 'criteria': criteria, 'index': ++index, 'value': value };
9490      });
9491
9492      return baseSortBy(result, function(object, other) {
9493        return compareMultiple(object, other, orders);
9494      });
9495    }
9496
9497    /**
9498     * The base implementation of `_.pick` without support for individual
9499     * property identifiers.
9500     *
9501     * @private
9502     * @param {Object} object The source object.
9503     * @param {string[]} paths The property paths to pick.
9504     * @returns {Object} Returns the new object.
9505     */
9506    function basePick(object, paths) {
9507      return basePickBy(object, paths, function(value, path) {
9508        return hasIn(object, path);
9509      });
9510    }
9511
9512    /**
9513     * The base implementation of  `_.pickBy` without support for iteratee shorthands.
9514     *
9515     * @private
9516     * @param {Object} object The source object.
9517     * @param {string[]} paths The property paths to pick.
9518     * @param {Function} predicate The function invoked per property.
9519     * @returns {Object} Returns the new object.
9520     */
9521    function basePickBy(object, paths, predicate) {
9522      var index = -1,
9523          length = paths.length,
9524          result = {};
9525
9526      while (++index < length) {
9527        var path = paths[index],
9528            value = baseGet(object, path);
9529
9530        if (predicate(value, path)) {
9531          baseSet(result, castPath(path, object), value);
9532        }
9533      }
9534      return result;
9535    }
9536
9537    /**
9538     * A specialized version of `baseProperty` which supports deep paths.
9539     *
9540     * @private
9541     * @param {Array|string} path The path of the property to get.
9542     * @returns {Function} Returns the new accessor function.
9543     */
9544    function basePropertyDeep(path) {
9545      return function(object) {
9546        return baseGet(object, path);
9547      };
9548    }
9549
9550    /**
9551     * The base implementation of `_.pullAllBy` without support for iteratee
9552     * shorthands.
9553     *
9554     * @private
9555     * @param {Array} array The array to modify.
9556     * @param {Array} values The values to remove.
9557     * @param {Function} [iteratee] The iteratee invoked per element.
9558     * @param {Function} [comparator] The comparator invoked per element.
9559     * @returns {Array} Returns `array`.
9560     */
9561    function basePullAll(array, values, iteratee, comparator) {
9562      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
9563          index = -1,
9564          length = values.length,
9565          seen = array;
9566
9567      if (array === values) {
9568        values = copyArray(values);
9569      }
9570      if (iteratee) {
9571        seen = arrayMap(array, baseUnary(iteratee));
9572      }
9573      while (++index < length) {
9574        var fromIndex = 0,
9575            value = values[index],
9576            computed = iteratee ? iteratee(value) : value;
9577
9578        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
9579          if (seen !== array) {
9580            splice.call(seen, fromIndex, 1);
9581          }
9582          splice.call(array, fromIndex, 1);
9583        }
9584      }
9585      return array;
9586    }
9587
9588    /**
9589     * The base implementation of `_.pullAt` without support for individual
9590     * indexes or capturing the removed elements.
9591     *
9592     * @private
9593     * @param {Array} array The array to modify.
9594     * @param {number[]} indexes The indexes of elements to remove.
9595     * @returns {Array} Returns `array`.
9596     */
9597    function basePullAt(array, indexes) {
9598      var length = array ? indexes.length : 0,
9599          lastIndex = length - 1;
9600
9601      while (length--) {
9602        var index = indexes[length];
9603        if (length == lastIndex || index !== previous) {
9604          var previous = index;
9605          if (isIndex(index)) {
9606            splice.call(array, index, 1);
9607          } else {
9608            baseUnset(array, index);
9609          }
9610        }
9611      }
9612      return array;
9613    }
9614
9615    /**
9616     * The base implementation of `_.random` without support for returning
9617     * floating-point numbers.
9618     *
9619     * @private
9620     * @param {number} lower The lower bound.
9621     * @param {number} upper The upper bound.
9622     * @returns {number} Returns the random number.
9623     */
9624    function baseRandom(lower, upper) {
9625      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
9626    }
9627
9628    /**
9629     * The base implementation of `_.range` and `_.rangeRight` which doesn't
9630     * coerce arguments.
9631     *
9632     * @private
9633     * @param {number} start The start of the range.
9634     * @param {number} end The end of the range.
9635     * @param {number} step The value to increment or decrement by.
9636     * @param {boolean} [fromRight] Specify iterating from right to left.
9637     * @returns {Array} Returns the range of numbers.
9638     */
9639    function baseRange(start, end, step, fromRight) {
9640      var index = -1,
9641          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
9642          result = Array(length);
9643
9644      while (length--) {
9645        result[fromRight ? length : ++index] = start;
9646        start += step;
9647      }
9648      return result;
9649    }
9650
9651    /**
9652     * The base implementation of `_.repeat` which doesn't coerce arguments.
9653     *
9654     * @private
9655     * @param {string} string The string to repeat.
9656     * @param {number} n The number of times to repeat the string.
9657     * @returns {string} Returns the repeated string.
9658     */
9659    function baseRepeat(string, n) {
9660      var result = '';
9661      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
9662        return result;
9663      }
9664      // Leverage the exponentiation by squaring algorithm for a faster repeat.
9665      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
9666      do {
9667        if (n % 2) {
9668          result += string;
9669        }
9670        n = nativeFloor(n / 2);
9671        if (n) {
9672          string += string;
9673        }
9674      } while (n);
9675
9676      return result;
9677    }
9678
9679    /**
9680     * The base implementation of `_.rest` which doesn't validate or coerce arguments.
9681     *
9682     * @private
9683     * @param {Function} func The function to apply a rest parameter to.
9684     * @param {number} [start=func.length-1] The start position of the rest parameter.
9685     * @returns {Function} Returns the new function.
9686     */
9687    function baseRest(func, start) {
9688      return setToString(overRest(func, start, identity), func + '');
9689    }
9690
9691    /**
9692     * The base implementation of `_.sample`.
9693     *
9694     * @private
9695     * @param {Array|Object} collection The collection to sample.
9696     * @returns {*} Returns the random element.
9697     */
9698    function baseSample(collection) {
9699      return arraySample(values(collection));
9700    }
9701
9702    /**
9703     * The base implementation of `_.sampleSize` without param guards.
9704     *
9705     * @private
9706     * @param {Array|Object} collection The collection to sample.
9707     * @param {number} n The number of elements to sample.
9708     * @returns {Array} Returns the random elements.
9709     */
9710    function baseSampleSize(collection, n) {
9711      var array = values(collection);
9712      return shuffleSelf(array, baseClamp(n, 0, array.length));
9713    }
9714
9715    /**
9716     * The base implementation of `_.set`.
9717     *
9718     * @private
9719     * @param {Object} object The object to modify.
9720     * @param {Array|string} path The path of the property to set.
9721     * @param {*} value The value to set.
9722     * @param {Function} [customizer] The function to customize path creation.
9723     * @returns {Object} Returns `object`.
9724     */
9725    function baseSet(object, path, value, customizer) {
9726      if (!isObject(object)) {
9727        return object;
9728      }
9729      path = castPath(path, object);
9730
9731      var index = -1,
9732          length = path.length,
9733          lastIndex = length - 1,
9734          nested = object;
9735
9736      while (nested != null && ++index < length) {
9737        var key = toKey(path[index]),
9738            newValue = value;
9739
9740        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
9741          return object;
9742        }
9743
9744        if (index != lastIndex) {
9745          var objValue = nested[key];
9746          newValue = customizer ? customizer(objValue, key, nested) : undefined;
9747          if (newValue === undefined) {
9748            newValue = isObject(objValue)
9749              ? objValue
9750              : (isIndex(path[index + 1]) ? [] : {});
9751          }
9752        }
9753        assignValue(nested, key, newValue);
9754        nested = nested[key];
9755      }
9756      return object;
9757    }
9758
9759    /**
9760     * The base implementation of `setData` without support for hot loop shorting.
9761     *
9762     * @private
9763     * @param {Function} func The function to associate metadata with.
9764     * @param {*} data The metadata.
9765     * @returns {Function} Returns `func`.
9766     */
9767    var baseSetData = !metaMap ? identity : function(func, data) {
9768      metaMap.set(func, data);
9769      return func;
9770    };
9771
9772    /**
9773     * The base implementation of `setToString` without support for hot loop shorting.
9774     *
9775     * @private
9776     * @param {Function} func The function to modify.
9777     * @param {Function} string The `toString` result.
9778     * @returns {Function} Returns `func`.
9779     */
9780    var baseSetToString = !defineProperty ? identity : function(func, string) {
9781      return defineProperty(func, 'toString', {
9782        'configurable': true,
9783        'enumerable': false,
9784        'value': constant(string),
9785        'writable': true
9786      });
9787    };
9788
9789    /**
9790     * The base implementation of `_.shuffle`.
9791     *
9792     * @private
9793     * @param {Array|Object} collection The collection to shuffle.
9794     * @returns {Array} Returns the new shuffled array.
9795     */
9796    function baseShuffle(collection) {
9797      return shuffleSelf(values(collection));
9798    }
9799
9800    /**
9801     * The base implementation of `_.slice` without an iteratee call guard.
9802     *
9803     * @private
9804     * @param {Array} array The array to slice.
9805     * @param {number} [start=0] The start position.
9806     * @param {number} [end=array.length] The end position.
9807     * @returns {Array} Returns the slice of `array`.
9808     */
9809    function baseSlice(array, start, end) {
9810      var index = -1,
9811          length = array.length;
9812
9813      if (start < 0) {
9814        start = -start > length ? 0 : (length + start);
9815      }
9816      end = end > length ? length : end;
9817      if (end < 0) {
9818        end += length;
9819      }
9820      length = start > end ? 0 : ((end - start) >>> 0);
9821      start >>>= 0;
9822
9823      var result = Array(length);
9824      while (++index < length) {
9825        result[index] = array[index + start];
9826      }
9827      return result;
9828    }
9829
9830    /**
9831     * The base implementation of `_.some` without support for iteratee shorthands.
9832     *
9833     * @private
9834     * @param {Array|Object} collection The collection to iterate over.
9835     * @param {Function} predicate The function invoked per iteration.
9836     * @returns {boolean} Returns `true` if any element passes the predicate check,
9837     *  else `false`.
9838     */
9839    function baseSome(collection, predicate) {
9840      var result;
9841
9842      baseEach(collection, function(value, index, collection) {
9843        result = predicate(value, index, collection);
9844        return !result;
9845      });
9846      return !!result;
9847    }
9848
9849    /**
9850     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
9851     * performs a binary search of `array` to determine the index at which `value`
9852     * should be inserted into `array` in order to maintain its sort order.
9853     *
9854     * @private
9855     * @param {Array} array The sorted array to inspect.
9856     * @param {*} value The value to evaluate.
9857     * @param {boolean} [retHighest] Specify returning the highest qualified index.
9858     * @returns {number} Returns the index at which `value` should be inserted
9859     *  into `array`.
9860     */
9861    function baseSortedIndex(array, value, retHighest) {
9862      var low = 0,
9863          high = array == null ? low : array.length;
9864
9865      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
9866        while (low < high) {
9867          var mid = (low + high) >>> 1,
9868              computed = array[mid];
9869
9870          if (computed !== null && !isSymbol(computed) &&
9871              (retHighest ? (computed <= value) : (computed < value))) {
9872            low = mid + 1;
9873          } else {
9874            high = mid;
9875          }
9876        }
9877        return high;
9878      }
9879      return baseSortedIndexBy(array, value, identity, retHighest);
9880    }
9881
9882    /**
9883     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
9884     * which invokes `iteratee` for `value` and each element of `array` to compute
9885     * their sort ranking. The iteratee is invoked with one argument; (value).
9886     *
9887     * @private
9888     * @param {Array} array The sorted array to inspect.
9889     * @param {*} value The value to evaluate.
9890     * @param {Function} iteratee The iteratee invoked per element.
9891     * @param {boolean} [retHighest] Specify returning the highest qualified index.
9892     * @returns {number} Returns the index at which `value` should be inserted
9893     *  into `array`.
9894     */
9895    function baseSortedIndexBy(array, value, iteratee, retHighest) {
9896      var low = 0,
9897          high = array == null ? 0 : array.length;
9898      if (high === 0) {
9899        return 0;
9900      }
9901
9902      value = iteratee(value);
9903      var valIsNaN = value !== value,
9904          valIsNull = value === null,
9905          valIsSymbol = isSymbol(value),
9906          valIsUndefined = value === undefined;
9907
9908      while (low < high) {
9909        var mid = nativeFloor((low + high) / 2),
9910            computed = iteratee(array[mid]),
9911            othIsDefined = computed !== undefined,
9912            othIsNull = computed === null,
9913            othIsReflexive = computed === computed,
9914            othIsSymbol = isSymbol(computed);
9915
9916        if (valIsNaN) {
9917          var setLow = retHighest || othIsReflexive;
9918        } else if (valIsUndefined) {
9919          setLow = othIsReflexive && (retHighest || othIsDefined);
9920        } else if (valIsNull) {
9921          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
9922        } else if (valIsSymbol) {
9923          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
9924        } else if (othIsNull || othIsSymbol) {
9925          setLow = false;
9926        } else {
9927          setLow = retHighest ? (computed <= value) : (computed < value);
9928        }
9929        if (setLow) {
9930          low = mid + 1;
9931        } else {
9932          high = mid;
9933        }
9934      }
9935      return nativeMin(high, MAX_ARRAY_INDEX);
9936    }
9937
9938    /**
9939     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
9940     * support for iteratee shorthands.
9941     *
9942     * @private
9943     * @param {Array} array The array to inspect.
9944     * @param {Function} [iteratee] The iteratee invoked per element.
9945     * @returns {Array} Returns the new duplicate free array.
9946     */
9947    function baseSortedUniq(array, iteratee) {
9948      var index = -1,
9949          length = array.length,
9950          resIndex = 0,
9951          result = [];
9952
9953      while (++index < length) {
9954        var value = array[index],
9955            computed = iteratee ? iteratee(value) : value;
9956
9957        if (!index || !eq(computed, seen)) {
9958          var seen = computed;
9959          result[resIndex++] = value === 0 ? 0 : value;
9960        }
9961      }
9962      return result;
9963    }
9964
9965    /**
9966     * The base implementation of `_.toNumber` which doesn't ensure correct
9967     * conversions of binary, hexadecimal, or octal string values.
9968     *
9969     * @private
9970     * @param {*} value The value to process.
9971     * @returns {number} Returns the number.
9972     */
9973    function baseToNumber(value) {
9974      if (typeof value == 'number') {
9975        return value;
9976      }
9977      if (isSymbol(value)) {
9978        return NAN;
9979      }
9980      return +value;
9981    }
9982
9983    /**
9984     * The base implementation of `_.toString` which doesn't convert nullish
9985     * values to empty strings.
9986     *
9987     * @private
9988     * @param {*} value The value to process.
9989     * @returns {string} Returns the string.
9990     */
9991    function baseToString(value) {
9992      // Exit early for strings to avoid a performance hit in some environments.
9993      if (typeof value == 'string') {
9994        return value;
9995      }
9996      if (isArray(value)) {
9997        // Recursively convert values (susceptible to call stack limits).
9998        return arrayMap(value, baseToString) + '';
9999      }
10000      if (isSymbol(value)) {
10001        return symbolToString ? symbolToString.call(value) : '';
10002      }
10003      var result = (value + '');
10004      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
10005    }
10006
10007    /**
10008     * The base implementation of `_.uniqBy` without support for iteratee shorthands.
10009     *
10010     * @private
10011     * @param {Array} array The array to inspect.
10012     * @param {Function} [iteratee] The iteratee invoked per element.
10013     * @param {Function} [comparator] The comparator invoked per element.
10014     * @returns {Array} Returns the new duplicate free array.
10015     */
10016    function baseUniq(array, iteratee, comparator) {
10017      var index = -1,
10018          includes = arrayIncludes,
10019          length = array.length,
10020          isCommon = true,
10021          result = [],
10022          seen = result;
10023
10024      if (comparator) {
10025        isCommon = false;
10026        includes = arrayIncludesWith;
10027      }
10028      else if (length >= LARGE_ARRAY_SIZE) {
10029        var set = iteratee ? null : createSet(array);
10030        if (set) {
10031          return setToArray(set);
10032        }
10033        isCommon = false;
10034        includes = cacheHas;
10035        seen = new SetCache;
10036      }
10037      else {
10038        seen = iteratee ? [] : result;
10039      }
10040      outer:
10041      while (++index < length) {
10042        var value = array[index],
10043            computed = iteratee ? iteratee(value) : value;
10044
10045        value = (comparator || value !== 0) ? value : 0;
10046        if (isCommon && computed === computed) {
10047          var seenIndex = seen.length;
10048          while (seenIndex--) {
10049            if (seen[seenIndex] === computed) {
10050              continue outer;
10051            }
10052          }
10053          if (iteratee) {
10054            seen.push(computed);
10055          }
10056          result.push(value);
10057        }
10058        else if (!includes(seen, computed, comparator)) {
10059          if (seen !== result) {
10060            seen.push(computed);
10061          }
10062          result.push(value);
10063        }
10064      }
10065      return result;
10066    }
10067
10068    /**
10069     * The base implementation of `_.unset`.
10070     *
10071     * @private
10072     * @param {Object} object The object to modify.
10073     * @param {Array|string} path The property path to unset.
10074     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
10075     */
10076    function baseUnset(object, path) {
10077      path = castPath(path, object);
10078      object = parent(object, path);
10079      return object == null || delete object[toKey(last(path))];
10080    }
10081
10082    /**
10083     * The base implementation of `_.update`.
10084     *
10085     * @private
10086     * @param {Object} object The object to modify.
10087     * @param {Array|string} path The path of the property to update.
10088     * @param {Function} updater The function to produce the updated value.
10089     * @param {Function} [customizer] The function to customize path creation.
10090     * @returns {Object} Returns `object`.
10091     */
10092    function baseUpdate(object, path, updater, customizer) {
10093      return baseSet(object, path, updater(baseGet(object, path)), customizer);
10094    }
10095
10096    /**
10097     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
10098     * without support for iteratee shorthands.
10099     *
10100     * @private
10101     * @param {Array} array The array to query.
10102     * @param {Function} predicate The function invoked per iteration.
10103     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
10104     * @param {boolean} [fromRight] Specify iterating from right to left.
10105     * @returns {Array} Returns the slice of `array`.
10106     */
10107    function baseWhile(array, predicate, isDrop, fromRight) {
10108      var length = array.length,
10109          index = fromRight ? length : -1;
10110
10111      while ((fromRight ? index-- : ++index < length) &&
10112        predicate(array[index], index, array)) {}
10113
10114      return isDrop
10115        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
10116        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
10117    }
10118
10119    /**
10120     * The base implementation of `wrapperValue` which returns the result of
10121     * performing a sequence of actions on the unwrapped `value`, where each
10122     * successive action is supplied the return value of the previous.
10123     *
10124     * @private
10125     * @param {*} value The unwrapped value.
10126     * @param {Array} actions Actions to perform to resolve the unwrapped value.
10127     * @returns {*} Returns the resolved value.
10128     */
10129    function baseWrapperValue(value, actions) {
10130      var result = value;
10131      if (result instanceof LazyWrapper) {
10132        result = result.value();
10133      }
10134      return arrayReduce(actions, function(result, action) {
10135        return action.func.apply(action.thisArg, arrayPush([result], action.args));
10136      }, result);
10137    }
10138
10139    /**
10140     * The base implementation of methods like `_.xor`, without support for
10141     * iteratee shorthands, that accepts an array of arrays to inspect.
10142     *
10143     * @private
10144     * @param {Array} arrays The arrays to inspect.
10145     * @param {Function} [iteratee] The iteratee invoked per element.
10146     * @param {Function} [comparator] The comparator invoked per element.
10147     * @returns {Array} Returns the new array of values.
10148     */
10149    function baseXor(arrays, iteratee, comparator) {
10150      var length = arrays.length;
10151      if (length < 2) {
10152        return length ? baseUniq(arrays[0]) : [];
10153      }
10154      var index = -1,
10155          result = Array(length);
10156
10157      while (++index < length) {
10158        var array = arrays[index],
10159            othIndex = -1;
10160
10161        while (++othIndex < length) {
10162          if (othIndex != index) {
10163            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
10164          }
10165        }
10166      }
10167      return baseUniq(baseFlatten(result, 1), iteratee, comparator);
10168    }
10169
10170    /**
10171     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
10172     *
10173     * @private
10174     * @param {Array} props The property identifiers.
10175     * @param {Array} values The property values.
10176     * @param {Function} assignFunc The function to assign values.
10177     * @returns {Object} Returns the new object.
10178     */
10179    function baseZipObject(props, values, assignFunc) {
10180      var index = -1,
10181          length = props.length,
10182          valsLength = values.length,
10183          result = {};
10184
10185      while (++index < length) {
10186        var value = index < valsLength ? values[index] : undefined;
10187        assignFunc(result, props[index], value);
10188      }
10189      return result;
10190    }
10191
10192    /**
10193     * Casts `value` to an empty array if it's not an array like object.
10194     *
10195     * @private
10196     * @param {*} value The value to inspect.
10197     * @returns {Array|Object} Returns the cast array-like object.
10198     */
10199    function castArrayLikeObject(value) {
10200      return isArrayLikeObject(value) ? value : [];
10201    }
10202
10203    /**
10204     * Casts `value` to `identity` if it's not a function.
10205     *
10206     * @private
10207     * @param {*} value The value to inspect.
10208     * @returns {Function} Returns cast function.
10209     */
10210    function castFunction(value) {
10211      return typeof value == 'function' ? value : identity;
10212    }
10213
10214    /**
10215     * Casts `value` to a path array if it's not one.
10216     *
10217     * @private
10218     * @param {*} value The value to inspect.
10219     * @param {Object} [object] The object to query keys on.
10220     * @returns {Array} Returns the cast property path array.
10221     */
10222    function castPath(value, object) {
10223      if (isArray(value)) {
10224        return value;
10225      }
10226      return isKey(value, object) ? [value] : stringToPath(toString(value));
10227    }
10228
10229    /**
10230     * A `baseRest` alias which can be replaced with `identity` by module
10231     * replacement plugins.
10232     *
10233     * @private
10234     * @type {Function}
10235     * @param {Function} func The function to apply a rest parameter to.
10236     * @returns {Function} Returns the new function.
10237     */
10238    var castRest = baseRest;
10239
10240    /**
10241     * Casts `array` to a slice if it's needed.
10242     *
10243     * @private
10244     * @param {Array} array The array to inspect.
10245     * @param {number} start The start position.
10246     * @param {number} [end=array.length] The end position.
10247     * @returns {Array} Returns the cast slice.
10248     */
10249    function castSlice(array, start, end) {
10250      var length = array.length;
10251      end = end === undefined ? length : end;
10252      return (!start && end >= length) ? array : baseSlice(array, start, end);
10253    }
10254
10255    /**
10256     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
10257     *
10258     * @private
10259     * @param {number|Object} id The timer id or timeout object of the timer to clear.
10260     */
10261    var clearTimeout = ctxClearTimeout || function(id) {
10262      return root.clearTimeout(id);
10263    };
10264
10265    /**
10266     * Creates a clone of  `buffer`.
10267     *
10268     * @private
10269     * @param {Buffer} buffer The buffer to clone.
10270     * @param {boolean} [isDeep] Specify a deep clone.
10271     * @returns {Buffer} Returns the cloned buffer.
10272     */
10273    function cloneBuffer(buffer, isDeep) {
10274      if (isDeep) {
10275        return buffer.slice();
10276      }
10277      var length = buffer.length,
10278          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
10279
10280      buffer.copy(result);
10281      return result;
10282    }
10283
10284    /**
10285     * Creates a clone of `arrayBuffer`.
10286     *
10287     * @private
10288     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
10289     * @returns {ArrayBuffer} Returns the cloned array buffer.
10290     */
10291    function cloneArrayBuffer(arrayBuffer) {
10292      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
10293      new Uint8Array(result).set(new Uint8Array(arrayBuffer));
10294      return result;
10295    }
10296
10297    /**
10298     * Creates a clone of `dataView`.
10299     *
10300     * @private
10301     * @param {Object} dataView The data view to clone.
10302     * @param {boolean} [isDeep] Specify a deep clone.
10303     * @returns {Object} Returns the cloned data view.
10304     */
10305    function cloneDataView(dataView, isDeep) {
10306      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
10307      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
10308    }
10309
10310    /**
10311     * Creates a clone of `regexp`.
10312     *
10313     * @private
10314     * @param {Object} regexp The regexp to clone.
10315     * @returns {Object} Returns the cloned regexp.
10316     */
10317    function cloneRegExp(regexp) {
10318      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
10319      result.lastIndex = regexp.lastIndex;
10320      return result;
10321    }
10322
10323    /**
10324     * Creates a clone of the `symbol` object.
10325     *
10326     * @private
10327     * @param {Object} symbol The symbol object to clone.
10328     * @returns {Object} Returns the cloned symbol object.
10329     */
10330    function cloneSymbol(symbol) {
10331      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
10332    }
10333
10334    /**
10335     * Creates a clone of `typedArray`.
10336     *
10337     * @private
10338     * @param {Object} typedArray The typed array to clone.
10339     * @param {boolean} [isDeep] Specify a deep clone.
10340     * @returns {Object} Returns the cloned typed array.
10341     */
10342    function cloneTypedArray(typedArray, isDeep) {
10343      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
10344      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
10345    }
10346
10347    /**
10348     * Compares values to sort them in ascending order.
10349     *
10350     * @private
10351     * @param {*} value The value to compare.
10352     * @param {*} other The other value to compare.
10353     * @returns {number} Returns the sort order indicator for `value`.
10354     */
10355    function compareAscending(value, other) {
10356      if (value !== other) {
10357        var valIsDefined = value !== undefined,
10358            valIsNull = value === null,
10359            valIsReflexive = value === value,
10360            valIsSymbol = isSymbol(value);
10361
10362        var othIsDefined = other !== undefined,
10363            othIsNull = other === null,
10364            othIsReflexive = other === other,
10365            othIsSymbol = isSymbol(other);
10366
10367        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
10368            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
10369            (valIsNull && othIsDefined && othIsReflexive) ||
10370            (!valIsDefined && othIsReflexive) ||
10371            !valIsReflexive) {
10372          return 1;
10373        }
10374        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
10375            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
10376            (othIsNull && valIsDefined && valIsReflexive) ||
10377            (!othIsDefined && valIsReflexive) ||
10378            !othIsReflexive) {
10379          return -1;
10380        }
10381      }
10382      return 0;
10383    }
10384
10385    /**
10386     * Used by `_.orderBy` to compare multiple properties of a value to another
10387     * and stable sort them.
10388     *
10389     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
10390     * specify an order of "desc" for descending or "asc" for ascending sort order
10391     * of corresponding values.
10392     *
10393     * @private
10394     * @param {Object} object The object to compare.
10395     * @param {Object} other The other object to compare.
10396     * @param {boolean[]|string[]} orders The order to sort by for each property.
10397     * @returns {number} Returns the sort order indicator for `object`.
10398     */
10399    function compareMultiple(object, other, orders) {
10400      var index = -1,
10401          objCriteria = object.criteria,
10402          othCriteria = other.criteria,
10403          length = objCriteria.length,
10404          ordersLength = orders.length;
10405
10406      while (++index < length) {
10407        var result = compareAscending(objCriteria[index], othCriteria[index]);
10408        if (result) {
10409          if (index >= ordersLength) {
10410            return result;
10411          }
10412          var order = orders[index];
10413          return result * (order == 'desc' ? -1 : 1);
10414        }
10415      }
10416      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
10417      // that causes it, under certain circumstances, to provide the same value for
10418      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
10419      // for more details.
10420      //
10421      // This also ensures a stable sort in V8 and other engines.
10422      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
10423      return object.index - other.index;
10424    }
10425
10426    /**
10427     * Creates an array that is the composition of partially applied arguments,
10428     * placeholders, and provided arguments into a single array of arguments.
10429     *
10430     * @private
10431     * @param {Array} args The provided arguments.
10432     * @param {Array} partials The arguments to prepend to those provided.
10433     * @param {Array} holders The `partials` placeholder indexes.
10434     * @params {boolean} [isCurried] Specify composing for a curried function.
10435     * @returns {Array} Returns the new array of composed arguments.
10436     */
10437    function composeArgs(args, partials, holders, isCurried) {
10438      var argsIndex = -1,
10439          argsLength = args.length,
10440          holdersLength = holders.length,
10441          leftIndex = -1,
10442          leftLength = partials.length,
10443          rangeLength = nativeMax(argsLength - holdersLength, 0),
10444          result = Array(leftLength + rangeLength),
10445          isUncurried = !isCurried;
10446
10447      while (++leftIndex < leftLength) {
10448        result[leftIndex] = partials[leftIndex];
10449      }
10450      while (++argsIndex < holdersLength) {
10451        if (isUncurried || argsIndex < argsLength) {
10452          result[holders[argsIndex]] = args[argsIndex];
10453        }
10454      }
10455      while (rangeLength--) {
10456        result[leftIndex++] = args[argsIndex++];
10457      }
10458      return result;
10459    }
10460
10461    /**
10462     * This function is like `composeArgs` except that the arguments composition
10463     * is tailored for `_.partialRight`.
10464     *
10465     * @private
10466     * @param {Array} args The provided arguments.
10467     * @param {Array} partials The arguments to append to those provided.
10468     * @param {Array} holders The `partials` placeholder indexes.
10469     * @params {boolean} [isCurried] Specify composing for a curried function.
10470     * @returns {Array} Returns the new array of composed arguments.
10471     */
10472    function composeArgsRight(args, partials, holders, isCurried) {
10473      var argsIndex = -1,
10474          argsLength = args.length,
10475          holdersIndex = -1,
10476          holdersLength = holders.length,
10477          rightIndex = -1,
10478          rightLength = partials.length,
10479          rangeLength = nativeMax(argsLength - holdersLength, 0),
10480          result = Array(rangeLength + rightLength),
10481          isUncurried = !isCurried;
10482
10483      while (++argsIndex < rangeLength) {
10484        result[argsIndex] = args[argsIndex];
10485      }
10486      var offset = argsIndex;
10487      while (++rightIndex < rightLength) {
10488        result[offset + rightIndex] = partials[rightIndex];
10489      }
10490      while (++holdersIndex < holdersLength) {
10491        if (isUncurried || argsIndex < argsLength) {
10492          result[offset + holders[holdersIndex]] = args[argsIndex++];
10493        }
10494      }
10495      return result;
10496    }
10497
10498    /**
10499     * Copies the values of `source` to `array`.
10500     *
10501     * @private
10502     * @param {Array} source The array to copy values from.
10503     * @param {Array} [array=[]] The array to copy values to.
10504     * @returns {Array} Returns `array`.
10505     */
10506    function copyArray(source, array) {
10507      var index = -1,
10508          length = source.length;
10509
10510      array || (array = Array(length));
10511      while (++index < length) {
10512        array[index] = source[index];
10513      }
10514      return array;
10515    }
10516
10517    /**
10518     * Copies properties of `source` to `object`.
10519     *
10520     * @private
10521     * @param {Object} source The object to copy properties from.
10522     * @param {Array} props The property identifiers to copy.
10523     * @param {Object} [object={}] The object to copy properties to.
10524     * @param {Function} [customizer] The function to customize copied values.
10525     * @returns {Object} Returns `object`.
10526     */
10527    function copyObject(source, props, object, customizer) {
10528      var isNew = !object;
10529      object || (object = {});
10530
10531      var index = -1,
10532          length = props.length;
10533
10534      while (++index < length) {
10535        var key = props[index];
10536
10537        var newValue = customizer
10538          ? customizer(object[key], source[key], key, object, source)
10539          : undefined;
10540
10541        if (newValue === undefined) {
10542          newValue = source[key];
10543        }
10544        if (isNew) {
10545          baseAssignValue(object, key, newValue);
10546        } else {
10547          assignValue(object, key, newValue);
10548        }
10549      }
10550      return object;
10551    }
10552
10553    /**
10554     * Copies own symbols of `source` to `object`.
10555     *
10556     * @private
10557     * @param {Object} source The object to copy symbols from.
10558     * @param {Object} [object={}] The object to copy symbols to.
10559     * @returns {Object} Returns `object`.
10560     */
10561    function copySymbols(source, object) {
10562      return copyObject(source, getSymbols(source), object);
10563    }
10564
10565    /**
10566     * Copies own and inherited symbols of `source` to `object`.
10567     *
10568     * @private
10569     * @param {Object} source The object to copy symbols from.
10570     * @param {Object} [object={}] The object to copy symbols to.
10571     * @returns {Object} Returns `object`.
10572     */
10573    function copySymbolsIn(source, object) {
10574      return copyObject(source, getSymbolsIn(source), object);
10575    }
10576
10577    /**
10578     * Creates a function like `_.groupBy`.
10579     *
10580     * @private
10581     * @param {Function} setter The function to set accumulator values.
10582     * @param {Function} [initializer] The accumulator object initializer.
10583     * @returns {Function} Returns the new aggregator function.
10584     */
10585    function createAggregator(setter, initializer) {
10586      return function(collection, iteratee) {
10587        var func = isArray(collection) ? arrayAggregator : baseAggregator,
10588            accumulator = initializer ? initializer() : {};
10589
10590        return func(collection, setter, getIteratee(iteratee, 2), accumulator);
10591      };
10592    }
10593
10594    /**
10595     * Creates a function like `_.assign`.
10596     *
10597     * @private
10598     * @param {Function} assigner The function to assign values.
10599     * @returns {Function} Returns the new assigner function.
10600     */
10601    function createAssigner(assigner) {
10602      return baseRest(function(object, sources) {
10603        var index = -1,
10604            length = sources.length,
10605            customizer = length > 1 ? sources[length - 1] : undefined,
10606            guard = length > 2 ? sources[2] : undefined;
10607
10608        customizer = (assigner.length > 3 && typeof customizer == 'function')
10609          ? (length--, customizer)
10610          : undefined;
10611
10612        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
10613          customizer = length < 3 ? undefined : customizer;
10614          length = 1;
10615        }
10616        object = Object(object);
10617        while (++index < length) {
10618          var source = sources[index];
10619          if (source) {
10620            assigner(object, source, index, customizer);
10621          }
10622        }
10623        return object;
10624      });
10625    }
10626
10627    /**
10628     * Creates a `baseEach` or `baseEachRight` function.
10629     *
10630     * @private
10631     * @param {Function} eachFunc The function to iterate over a collection.
10632     * @param {boolean} [fromRight] Specify iterating from right to left.
10633     * @returns {Function} Returns the new base function.
10634     */
10635    function createBaseEach(eachFunc, fromRight) {
10636      return function(collection, iteratee) {
10637        if (collection == null) {
10638          return collection;
10639        }
10640        if (!isArrayLike(collection)) {
10641          return eachFunc(collection, iteratee);
10642        }
10643        var length = collection.length,
10644            index = fromRight ? length : -1,
10645            iterable = Object(collection);
10646
10647        while ((fromRight ? index-- : ++index < length)) {
10648          if (iteratee(iterable[index], index, iterable) === false) {
10649            break;
10650          }
10651        }
10652        return collection;
10653      };
10654    }
10655
10656    /**
10657     * Creates a base function for methods like `_.forIn` and `_.forOwn`.
10658     *
10659     * @private
10660     * @param {boolean} [fromRight] Specify iterating from right to left.
10661     * @returns {Function} Returns the new base function.
10662     */
10663    function createBaseFor(fromRight) {
10664      return function(object, iteratee, keysFunc) {
10665        var index = -1,
10666            iterable = Object(object),
10667            props = keysFunc(object),
10668            length = props.length;
10669
10670        while (length--) {
10671          var key = props[fromRight ? length : ++index];
10672          if (iteratee(iterable[key], key, iterable) === false) {
10673            break;
10674          }
10675        }
10676        return object;
10677      };
10678    }
10679
10680    /**
10681     * Creates a function that wraps `func` to invoke it with the optional `this`
10682     * binding of `thisArg`.
10683     *
10684     * @private
10685     * @param {Function} func The function to wrap.
10686     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
10687     * @param {*} [thisArg] The `this` binding of `func`.
10688     * @returns {Function} Returns the new wrapped function.
10689     */
10690    function createBind(func, bitmask, thisArg) {
10691      var isBind = bitmask & WRAP_BIND_FLAG,
10692          Ctor = createCtor(func);
10693
10694      function wrapper() {
10695        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10696        return fn.apply(isBind ? thisArg : this, arguments);
10697      }
10698      return wrapper;
10699    }
10700
10701    /**
10702     * Creates a function like `_.lowerFirst`.
10703     *
10704     * @private
10705     * @param {string} methodName The name of the `String` case method to use.
10706     * @returns {Function} Returns the new case function.
10707     */
10708    function createCaseFirst(methodName) {
10709      return function(string) {
10710        string = toString(string);
10711
10712        var strSymbols = hasUnicode(string)
10713          ? stringToArray(string)
10714          : undefined;
10715
10716        var chr = strSymbols
10717          ? strSymbols[0]
10718          : string.charAt(0);
10719
10720        var trailing = strSymbols
10721          ? castSlice(strSymbols, 1).join('')
10722          : string.slice(1);
10723
10724        return chr[methodName]() + trailing;
10725      };
10726    }
10727
10728    /**
10729     * Creates a function like `_.camelCase`.
10730     *
10731     * @private
10732     * @param {Function} callback The function to combine each word.
10733     * @returns {Function} Returns the new compounder function.
10734     */
10735    function createCompounder(callback) {
10736      return function(string) {
10737        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
10738      };
10739    }
10740
10741    /**
10742     * Creates a function that produces an instance of `Ctor` regardless of
10743     * whether it was invoked as part of a `new` expression or by `call` or `apply`.
10744     *
10745     * @private
10746     * @param {Function} Ctor The constructor to wrap.
10747     * @returns {Function} Returns the new wrapped function.
10748     */
10749    function createCtor(Ctor) {
10750      return function() {
10751        // Use a `switch` statement to work with class constructors. See
10752        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
10753        // for more details.
10754        var args = arguments;
10755        switch (args.length) {
10756          case 0: return new Ctor;
10757          case 1: return new Ctor(args[0]);
10758          case 2: return new Ctor(args[0], args[1]);
10759          case 3: return new Ctor(args[0], args[1], args[2]);
10760          case 4: return new Ctor(args[0], args[1], args[2], args[3]);
10761          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
10762          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
10763          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
10764        }
10765        var thisBinding = baseCreate(Ctor.prototype),
10766            result = Ctor.apply(thisBinding, args);
10767
10768        // Mimic the constructor's `return` behavior.
10769        // See https://es5.github.io/#x13.2.2 for more details.
10770        return isObject(result) ? result : thisBinding;
10771      };
10772    }
10773
10774    /**
10775     * Creates a function that wraps `func` to enable currying.
10776     *
10777     * @private
10778     * @param {Function} func The function to wrap.
10779     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
10780     * @param {number} arity The arity of `func`.
10781     * @returns {Function} Returns the new wrapped function.
10782     */
10783    function createCurry(func, bitmask, arity) {
10784      var Ctor = createCtor(func);
10785
10786      function wrapper() {
10787        var length = arguments.length,
10788            args = Array(length),
10789            index = length,
10790            placeholder = getHolder(wrapper);
10791
10792        while (index--) {
10793          args[index] = arguments[index];
10794        }
10795        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
10796          ? []
10797          : replaceHolders(args, placeholder);
10798
10799        length -= holders.length;
10800        if (length < arity) {
10801          return createRecurry(
10802            func, bitmask, createHybrid, wrapper.placeholder, undefined,
10803            args, holders, undefined, undefined, arity - length);
10804        }
10805        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10806        return apply(fn, this, args);
10807      }
10808      return wrapper;
10809    }
10810
10811    /**
10812     * Creates a `_.find` or `_.findLast` function.
10813     *
10814     * @private
10815     * @param {Function} findIndexFunc The function to find the collection index.
10816     * @returns {Function} Returns the new find function.
10817     */
10818    function createFind(findIndexFunc) {
10819      return function(collection, predicate, fromIndex) {
10820        var iterable = Object(collection);
10821        if (!isArrayLike(collection)) {
10822          var iteratee = getIteratee(predicate, 3);
10823          collection = keys(collection);
10824          predicate = function(key) { return iteratee(iterable[key], key, iterable); };
10825        }
10826        var index = findIndexFunc(collection, predicate, fromIndex);
10827        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
10828      };
10829    }
10830
10831    /**
10832     * Creates a `_.flow` or `_.flowRight` function.
10833     *
10834     * @private
10835     * @param {boolean} [fromRight] Specify iterating from right to left.
10836     * @returns {Function} Returns the new flow function.
10837     */
10838    function createFlow(fromRight) {
10839      return flatRest(function(funcs) {
10840        var length = funcs.length,
10841            index = length,
10842            prereq = LodashWrapper.prototype.thru;
10843
10844        if (fromRight) {
10845          funcs.reverse();
10846        }
10847        while (index--) {
10848          var func = funcs[index];
10849          if (typeof func != 'function') {
10850            throw new TypeError(FUNC_ERROR_TEXT);
10851          }
10852          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
10853            var wrapper = new LodashWrapper([], true);
10854          }
10855        }
10856        index = wrapper ? index : length;
10857        while (++index < length) {
10858          func = funcs[index];
10859
10860          var funcName = getFuncName(func),
10861              data = funcName == 'wrapper' ? getData(func) : undefined;
10862
10863          if (data && isLaziable(data[0]) &&
10864                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
10865                !data[4].length && data[9] == 1
10866              ) {
10867            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
10868          } else {
10869            wrapper = (func.length == 1 && isLaziable(func))
10870              ? wrapper[funcName]()
10871              : wrapper.thru(func);
10872          }
10873        }
10874        return function() {
10875          var args = arguments,
10876              value = args[0];
10877
10878          if (wrapper && args.length == 1 && isArray(value)) {
10879            return wrapper.plant(value).value();
10880          }
10881          var index = 0,
10882              result = length ? funcs[index].apply(this, args) : value;
10883
10884          while (++index < length) {
10885            result = funcs[index].call(this, result);
10886          }
10887          return result;
10888        };
10889      });
10890    }
10891
10892    /**
10893     * Creates a function that wraps `func` to invoke it with optional `this`
10894     * binding of `thisArg`, partial application, and currying.
10895     *
10896     * @private
10897     * @param {Function|string} func The function or method name to wrap.
10898     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
10899     * @param {*} [thisArg] The `this` binding of `func`.
10900     * @param {Array} [partials] The arguments to prepend to those provided to
10901     *  the new function.
10902     * @param {Array} [holders] The `partials` placeholder indexes.
10903     * @param {Array} [partialsRight] The arguments to append to those provided
10904     *  to the new function.
10905     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
10906     * @param {Array} [argPos] The argument positions of the new function.
10907     * @param {number} [ary] The arity cap of `func`.
10908     * @param {number} [arity] The arity of `func`.
10909     * @returns {Function} Returns the new wrapped function.
10910     */
10911    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
10912      var isAry = bitmask & WRAP_ARY_FLAG,
10913          isBind = bitmask & WRAP_BIND_FLAG,
10914          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
10915          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
10916          isFlip = bitmask & WRAP_FLIP_FLAG,
10917          Ctor = isBindKey ? undefined : createCtor(func);
10918
10919      function wrapper() {
10920        var length = arguments.length,
10921            args = Array(length),
10922            index = length;
10923
10924        while (index--) {
10925          args[index] = arguments[index];
10926        }
10927        if (isCurried) {
10928          var placeholder = getHolder(wrapper),
10929              holdersCount = countHolders(args, placeholder);
10930        }
10931        if (partials) {
10932          args = composeArgs(args, partials, holders, isCurried);
10933        }
10934        if (partialsRight) {
10935          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
10936        }
10937        length -= holdersCount;
10938        if (isCurried && length < arity) {
10939          var newHolders = replaceHolders(args, placeholder);
10940          return createRecurry(
10941            func, bitmask, createHybrid, wrapper.placeholder, thisArg,
10942            args, newHolders, argPos, ary, arity - length
10943          );
10944        }
10945        var thisBinding = isBind ? thisArg : this,
10946            fn = isBindKey ? thisBinding[func] : func;
10947
10948        length = args.length;
10949        if (argPos) {
10950          args = reorder(args, argPos);
10951        } else if (isFlip && length > 1) {
10952          args.reverse();
10953        }
10954        if (isAry && ary < length) {
10955          args.length = ary;
10956        }
10957        if (this && this !== root && this instanceof wrapper) {
10958          fn = Ctor || createCtor(fn);
10959        }
10960        return fn.apply(thisBinding, args);
10961      }
10962      return wrapper;
10963    }
10964
10965    /**
10966     * Creates a function like `_.invertBy`.
10967     *
10968     * @private
10969     * @param {Function} setter The function to set accumulator values.
10970     * @param {Function} toIteratee The function to resolve iteratees.
10971     * @returns {Function} Returns the new inverter function.
10972     */
10973    function createInverter(setter, toIteratee) {
10974      return function(object, iteratee) {
10975        return baseInverter(object, setter, toIteratee(iteratee), {});
10976      };
10977    }
10978
10979    /**
10980     * Creates a function that performs a mathematical operation on two values.
10981     *
10982     * @private
10983     * @param {Function} operator The function to perform the operation.
10984     * @param {number} [defaultValue] The value used for `undefined` arguments.
10985     * @returns {Function} Returns the new mathematical operation function.
10986     */
10987    function createMathOperation(operator, defaultValue) {
10988      return function(value, other) {
10989        var result;
10990        if (value === undefined && other === undefined) {
10991          return defaultValue;
10992        }
10993        if (value !== undefined) {
10994          result = value;
10995        }
10996        if (other !== undefined) {
10997          if (result === undefined) {
10998            return other;
10999          }
11000          if (typeof value == 'string' || typeof other == 'string') {
11001            value = baseToString(value);
11002            other = baseToString(other);
11003          } else {
11004            value = baseToNumber(value);
11005            other = baseToNumber(other);
11006          }
11007          result = operator(value, other);
11008        }
11009        return result;
11010      };
11011    }
11012
11013    /**
11014     * Creates a function like `_.over`.
11015     *
11016     * @private
11017     * @param {Function} arrayFunc The function to iterate over iteratees.
11018     * @returns {Function} Returns the new over function.
11019     */
11020    function createOver(arrayFunc) {
11021      return flatRest(function(iteratees) {
11022        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
11023        return baseRest(function(args) {
11024          var thisArg = this;
11025          return arrayFunc(iteratees, function(iteratee) {
11026            return apply(iteratee, thisArg, args);
11027          });
11028        });
11029      });
11030    }
11031
11032    /**
11033     * Creates the padding for `string` based on `length`. The `chars` string
11034     * is truncated if the number of characters exceeds `length`.
11035     *
11036     * @private
11037     * @param {number} length The padding length.
11038     * @param {string} [chars=' '] The string used as padding.
11039     * @returns {string} Returns the padding for `string`.
11040     */
11041    function createPadding(length, chars) {
11042      chars = chars === undefined ? ' ' : baseToString(chars);
11043
11044      var charsLength = chars.length;
11045      if (charsLength < 2) {
11046        return charsLength ? baseRepeat(chars, length) : chars;
11047      }
11048      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
11049      return hasUnicode(chars)
11050        ? castSlice(stringToArray(result), 0, length).join('')
11051        : result.slice(0, length);
11052    }
11053
11054    /**
11055     * Creates a function that wraps `func` to invoke it with the `this` binding
11056     * of `thisArg` and `partials` prepended to the arguments it receives.
11057     *
11058     * @private
11059     * @param {Function} func The function to wrap.
11060     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
11061     * @param {*} thisArg The `this` binding of `func`.
11062     * @param {Array} partials The arguments to prepend to those provided to
11063     *  the new function.
11064     * @returns {Function} Returns the new wrapped function.
11065     */
11066    function createPartial(func, bitmask, thisArg, partials) {
11067      var isBind = bitmask & WRAP_BIND_FLAG,
11068          Ctor = createCtor(func);
11069
11070      function wrapper() {
11071        var argsIndex = -1,
11072            argsLength = arguments.length,
11073            leftIndex = -1,
11074            leftLength = partials.length,
11075            args = Array(leftLength + argsLength),
11076            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
11077
11078        while (++leftIndex < leftLength) {
11079          args[leftIndex] = partials[leftIndex];
11080        }
11081        while (argsLength--) {
11082          args[leftIndex++] = arguments[++argsIndex];
11083        }
11084        return apply(fn, isBind ? thisArg : this, args);
11085      }
11086      return wrapper;
11087    }
11088
11089    /**
11090     * Creates a `_.range` or `_.rangeRight` function.
11091     *
11092     * @private
11093     * @param {boolean} [fromRight] Specify iterating from right to left.
11094     * @returns {Function} Returns the new range function.
11095     */
11096    function createRange(fromRight) {
11097      return function(start, end, step) {
11098        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
11099          end = step = undefined;
11100        }
11101        // Ensure the sign of `-0` is preserved.
11102        start = toFinite(start);
11103        if (end === undefined) {
11104          end = start;
11105          start = 0;
11106        } else {
11107          end = toFinite(end);
11108        }
11109        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
11110        return baseRange(start, end, step, fromRight);
11111      };
11112    }
11113
11114    /**
11115     * Creates a function that performs a relational operation on two values.
11116     *
11117     * @private
11118     * @param {Function} operator The function to perform the operation.
11119     * @returns {Function} Returns the new relational operation function.
11120     */
11121    function createRelationalOperation(operator) {
11122      return function(value, other) {
11123        if (!(typeof value == 'string' && typeof other == 'string')) {
11124          value = toNumber(value);
11125          other = toNumber(other);
11126        }
11127        return operator(value, other);
11128      };
11129    }
11130
11131    /**
11132     * Creates a function that wraps `func` to continue currying.
11133     *
11134     * @private
11135     * @param {Function} func The function to wrap.
11136     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
11137     * @param {Function} wrapFunc The function to create the `func` wrapper.
11138     * @param {*} placeholder The placeholder value.
11139     * @param {*} [thisArg] The `this` binding of `func`.
11140     * @param {Array} [partials] The arguments to prepend to those provided to
11141     *  the new function.
11142     * @param {Array} [holders] The `partials` placeholder indexes.
11143     * @param {Array} [argPos] The argument positions of the new function.
11144     * @param {number} [ary] The arity cap of `func`.
11145     * @param {number} [arity] The arity of `func`.
11146     * @returns {Function} Returns the new wrapped function.
11147     */
11148    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
11149      var isCurry = bitmask & WRAP_CURRY_FLAG,
11150          newHolders = isCurry ? holders : undefined,
11151          newHoldersRight = isCurry ? undefined : holders,
11152          newPartials = isCurry ? partials : undefined,
11153          newPartialsRight = isCurry ? undefined : partials;
11154
11155      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
11156      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
11157
11158      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
11159        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
11160      }
11161      var newData = [
11162        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
11163        newHoldersRight, argPos, ary, arity
11164      ];
11165
11166      var result = wrapFunc.apply(undefined, newData);
11167      if (isLaziable(func)) {
11168        setData(result, newData);
11169      }
11170      result.placeholder = placeholder;
11171      return setWrapToString(result, func, bitmask);
11172    }
11173
11174    /**
11175     * Creates a function like `_.round`.
11176     *
11177     * @private
11178     * @param {string} methodName The name of the `Math` method to use when rounding.
11179     * @returns {Function} Returns the new round function.
11180     */
11181    function createRound(methodName) {
11182      var func = Math[methodName];
11183      return function(number, precision) {
11184        number = toNumber(number);
11185        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
11186        if (precision && nativeIsFinite(number)) {
11187          // Shift with exponential notation to avoid floating-point issues.
11188          // See [MDN](https://mdn.io/round#Examples) for more details.
11189          var pair = (toString(number) + 'e').split('e'),
11190              value = func(pair[0] + 'e' + (+pair[1] + precision));
11191
11192          pair = (toString(value) + 'e').split('e');
11193          return +(pair[0] + 'e' + (+pair[1] - precision));
11194        }
11195        return func(number);
11196      };
11197    }
11198
11199    /**
11200     * Creates a set object of `values`.
11201     *
11202     * @private
11203     * @param {Array} values The values to add to the set.
11204     * @returns {Object} Returns the new set.
11205     */
11206    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
11207      return new Set(values);
11208    };
11209
11210    /**
11211     * Creates a `_.toPairs` or `_.toPairsIn` function.
11212     *
11213     * @private
11214     * @param {Function} keysFunc The function to get the keys of a given object.
11215     * @returns {Function} Returns the new pairs function.
11216     */
11217    function createToPairs(keysFunc) {
11218      return function(object) {
11219        var tag = getTag(object);
11220        if (tag == mapTag) {
11221          return mapToArray(object);
11222        }
11223        if (tag == setTag) {
11224          return setToPairs(object);
11225        }
11226        return baseToPairs(object, keysFunc(object));
11227      };
11228    }
11229
11230    /**
11231     * Creates a function that either curries or invokes `func` with optional
11232     * `this` binding and partially applied arguments.
11233     *
11234     * @private
11235     * @param {Function|string} func The function or method name to wrap.
11236     * @param {number} bitmask The bitmask flags.
11237     *    1 - `_.bind`
11238     *    2 - `_.bindKey`
11239     *    4 - `_.curry` or `_.curryRight` of a bound function
11240     *    8 - `_.curry`
11241     *   16 - `_.curryRight`
11242     *   32 - `_.partial`
11243     *   64 - `_.partialRight`
11244     *  128 - `_.rearg`
11245     *  256 - `_.ary`
11246     *  512 - `_.flip`
11247     * @param {*} [thisArg] The `this` binding of `func`.
11248     * @param {Array} [partials] The arguments to be partially applied.
11249     * @param {Array} [holders] The `partials` placeholder indexes.
11250     * @param {Array} [argPos] The argument positions of the new function.
11251     * @param {number} [ary] The arity cap of `func`.
11252     * @param {number} [arity] The arity of `func`.
11253     * @returns {Function} Returns the new wrapped function.
11254     */
11255    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
11256      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
11257      if (!isBindKey && typeof func != 'function') {
11258        throw new TypeError(FUNC_ERROR_TEXT);
11259      }
11260      var length = partials ? partials.length : 0;
11261      if (!length) {
11262        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
11263        partials = holders = undefined;
11264      }
11265      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
11266      arity = arity === undefined ? arity : toInteger(arity);
11267      length -= holders ? holders.length : 0;
11268
11269      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
11270        var partialsRight = partials,
11271            holdersRight = holders;
11272
11273        partials = holders = undefined;
11274      }
11275      var data = isBindKey ? undefined : getData(func);
11276
11277      var newData = [
11278        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
11279        argPos, ary, arity
11280      ];
11281
11282      if (data) {
11283        mergeData(newData, data);
11284      }
11285      func = newData[0];
11286      bitmask = newData[1];
11287      thisArg = newData[2];
11288      partials = newData[3];
11289      holders = newData[4];
11290      arity = newData[9] = newData[9] === undefined
11291        ? (isBindKey ? 0 : func.length)
11292        : nativeMax(newData[9] - length, 0);
11293
11294      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
11295        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
11296      }
11297      if (!bitmask || bitmask == WRAP_BIND_FLAG) {
11298        var result = createBind(func, bitmask, thisArg);
11299      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
11300        result = createCurry(func, bitmask, arity);
11301      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
11302        result = createPartial(func, bitmask, thisArg, partials);
11303      } else {
11304        result = createHybrid.apply(undefined, newData);
11305      }
11306      var setter = data ? baseSetData : setData;
11307      return setWrapToString(setter(result, newData), func, bitmask);
11308    }
11309
11310    /**
11311     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
11312     * of source objects to the destination object for all destination properties
11313     * that resolve to `undefined`.
11314     *
11315     * @private
11316     * @param {*} objValue The destination value.
11317     * @param {*} srcValue The source value.
11318     * @param {string} key The key of the property to assign.
11319     * @param {Object} object The parent object of `objValue`.
11320     * @returns {*} Returns the value to assign.
11321     */
11322    function customDefaultsAssignIn(objValue, srcValue, key, object) {
11323      if (objValue === undefined ||
11324          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
11325        return srcValue;
11326      }
11327      return objValue;
11328    }
11329
11330    /**
11331     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
11332     * objects into destination objects that are passed thru.
11333     *
11334     * @private
11335     * @param {*} objValue The destination value.
11336     * @param {*} srcValue The source value.
11337     * @param {string} key The key of the property to merge.
11338     * @param {Object} object The parent object of `objValue`.
11339     * @param {Object} source The parent object of `srcValue`.
11340     * @param {Object} [stack] Tracks traversed source values and their merged
11341     *  counterparts.
11342     * @returns {*} Returns the value to assign.
11343     */
11344    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
11345      if (isObject(objValue) && isObject(srcValue)) {
11346        // Recursively merge objects and arrays (susceptible to call stack limits).
11347        stack.set(srcValue, objValue);
11348        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
11349        stack['delete'](srcValue);
11350      }
11351      return objValue;
11352    }
11353
11354    /**
11355     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
11356     * objects.
11357     *
11358     * @private
11359     * @param {*} value The value to inspect.
11360     * @param {string} key The key of the property to inspect.
11361     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
11362     */
11363    function customOmitClone(value) {
11364      return isPlainObject(value) ? undefined : value;
11365    }
11366
11367    /**
11368     * A specialized version of `baseIsEqualDeep` for arrays with support for
11369     * partial deep comparisons.
11370     *
11371     * @private
11372     * @param {Array} array The array to compare.
11373     * @param {Array} other The other array to compare.
11374     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11375     * @param {Function} customizer The function to customize comparisons.
11376     * @param {Function} equalFunc The function to determine equivalents of values.
11377     * @param {Object} stack Tracks traversed `array` and `other` objects.
11378     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
11379     */
11380    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
11381      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
11382          arrLength = array.length,
11383          othLength = other.length;
11384
11385      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
11386        return false;
11387      }
11388      // Check that cyclic values are equal.
11389      var arrStacked = stack.get(array);
11390      var othStacked = stack.get(other);
11391      if (arrStacked && othStacked) {
11392        return arrStacked == other && othStacked == array;
11393      }
11394      var index = -1,
11395          result = true,
11396          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
11397
11398      stack.set(array, other);
11399      stack.set(other, array);
11400
11401      // Ignore non-index properties.
11402      while (++index < arrLength) {
11403        var arrValue = array[index],
11404            othValue = other[index];
11405
11406        if (customizer) {
11407          var compared = isPartial
11408            ? customizer(othValue, arrValue, index, other, array, stack)
11409            : customizer(arrValue, othValue, index, array, other, stack);
11410        }
11411        if (compared !== undefined) {
11412          if (compared) {
11413            continue;
11414          }
11415          result = false;
11416          break;
11417        }
11418        // Recursively compare arrays (susceptible to call stack limits).
11419        if (seen) {
11420          if (!arraySome(other, function(othValue, othIndex) {
11421                if (!cacheHas(seen, othIndex) &&
11422                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
11423                  return seen.push(othIndex);
11424                }
11425              })) {
11426            result = false;
11427            break;
11428          }
11429        } else if (!(
11430              arrValue === othValue ||
11431                equalFunc(arrValue, othValue, bitmask, customizer, stack)
11432            )) {
11433          result = false;
11434          break;
11435        }
11436      }
11437      stack['delete'](array);
11438      stack['delete'](other);
11439      return result;
11440    }
11441
11442    /**
11443     * A specialized version of `baseIsEqualDeep` for comparing objects of
11444     * the same `toStringTag`.
11445     *
11446     * **Note:** This function only supports comparing values with tags of
11447     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
11448     *
11449     * @private
11450     * @param {Object} object The object to compare.
11451     * @param {Object} other The other object to compare.
11452     * @param {string} tag The `toStringTag` of the objects to compare.
11453     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11454     * @param {Function} customizer The function to customize comparisons.
11455     * @param {Function} equalFunc The function to determine equivalents of values.
11456     * @param {Object} stack Tracks traversed `object` and `other` objects.
11457     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11458     */
11459    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
11460      switch (tag) {
11461        case dataViewTag:
11462          if ((object.byteLength != other.byteLength) ||
11463              (object.byteOffset != other.byteOffset)) {
11464            return false;
11465          }
11466          object = object.buffer;
11467          other = other.buffer;
11468
11469        case arrayBufferTag:
11470          if ((object.byteLength != other.byteLength) ||
11471              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
11472            return false;
11473          }
11474          return true;
11475
11476        case boolTag:
11477        case dateTag:
11478        case numberTag:
11479          // Coerce booleans to `1` or `0` and dates to milliseconds.
11480          // Invalid dates are coerced to `NaN`.
11481          return eq(+object, +other);
11482
11483        case errorTag:
11484          return object.name == other.name && object.message == other.message;
11485
11486        case regexpTag:
11487        case stringTag:
11488          // Coerce regexes to strings and treat strings, primitives and objects,
11489          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
11490          // for more details.
11491          return object == (other + '');
11492
11493        case mapTag:
11494          var convert = mapToArray;
11495
11496        case setTag:
11497          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
11498          convert || (convert = setToArray);
11499
11500          if (object.size != other.size && !isPartial) {
11501            return false;
11502          }
11503          // Assume cyclic values are equal.
11504          var stacked = stack.get(object);
11505          if (stacked) {
11506            return stacked == other;
11507          }
11508          bitmask |= COMPARE_UNORDERED_FLAG;
11509
11510          // Recursively compare objects (susceptible to call stack limits).
11511          stack.set(object, other);
11512          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
11513          stack['delete'](object);
11514          return result;
11515
11516        case symbolTag:
11517          if (symbolValueOf) {
11518            return symbolValueOf.call(object) == symbolValueOf.call(other);
11519          }
11520      }
11521      return false;
11522    }
11523
11524    /**
11525     * A specialized version of `baseIsEqualDeep` for objects with support for
11526     * partial deep comparisons.
11527     *
11528     * @private
11529     * @param {Object} object The object to compare.
11530     * @param {Object} other The other object to compare.
11531     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11532     * @param {Function} customizer The function to customize comparisons.
11533     * @param {Function} equalFunc The function to determine equivalents of values.
11534     * @param {Object} stack Tracks traversed `object` and `other` objects.
11535     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11536     */
11537    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
11538      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
11539          objProps = getAllKeys(object),
11540          objLength = objProps.length,
11541          othProps = getAllKeys(other),
11542          othLength = othProps.length;
11543
11544      if (objLength != othLength && !isPartial) {
11545        return false;
11546      }
11547      var index = objLength;
11548      while (index--) {
11549        var key = objProps[index];
11550        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
11551          return false;
11552        }
11553      }
11554      // Check that cyclic values are equal.
11555      var objStacked = stack.get(object);
11556      var othStacked = stack.get(other);
11557      if (objStacked && othStacked) {
11558        return objStacked == other && othStacked == object;
11559      }
11560      var result = true;
11561      stack.set(object, other);
11562      stack.set(other, object);
11563
11564      var skipCtor = isPartial;
11565      while (++index < objLength) {
11566        key = objProps[index];
11567        var objValue = object[key],
11568            othValue = other[key];
11569
11570        if (customizer) {
11571          var compared = isPartial
11572            ? customizer(othValue, objValue, key, other, object, stack)
11573            : customizer(objValue, othValue, key, object, other, stack);
11574        }
11575        // Recursively compare objects (susceptible to call stack limits).
11576        if (!(compared === undefined
11577              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
11578              : compared
11579            )) {
11580          result = false;
11581          break;
11582        }
11583        skipCtor || (skipCtor = key == 'constructor');
11584      }
11585      if (result && !skipCtor) {
11586        var objCtor = object.constructor,
11587            othCtor = other.constructor;
11588
11589        // Non `Object` object instances with different constructors are not equal.
11590        if (objCtor != othCtor &&
11591            ('constructor' in object && 'constructor' in other) &&
11592            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
11593              typeof othCtor == 'function' && othCtor instanceof othCtor)) {
11594          result = false;
11595        }
11596      }
11597      stack['delete'](object);
11598      stack['delete'](other);
11599      return result;
11600    }
11601
11602    /**
11603     * A specialized version of `baseRest` which flattens the rest array.
11604     *
11605     * @private
11606     * @param {Function} func The function to apply a rest parameter to.
11607     * @returns {Function} Returns the new function.
11608     */
11609    function flatRest(func) {
11610      return setToString(overRest(func, undefined, flatten), func + '');
11611    }
11612
11613    /**
11614     * Creates an array of own enumerable property names and symbols of `object`.
11615     *
11616     * @private
11617     * @param {Object} object The object to query.
11618     * @returns {Array} Returns the array of property names and symbols.
11619     */
11620    function getAllKeys(object) {
11621      return baseGetAllKeys(object, keys, getSymbols);
11622    }
11623
11624    /**
11625     * Creates an array of own and inherited enumerable property names and
11626     * symbols of `object`.
11627     *
11628     * @private
11629     * @param {Object} object The object to query.
11630     * @returns {Array} Returns the array of property names and symbols.
11631     */
11632    function getAllKeysIn(object) {
11633      return baseGetAllKeys(object, keysIn, getSymbolsIn);
11634    }
11635
11636    /**
11637     * Gets metadata for `func`.
11638     *
11639     * @private
11640     * @param {Function} func The function to query.
11641     * @returns {*} Returns the metadata for `func`.
11642     */
11643    var getData = !metaMap ? noop : function(func) {
11644      return metaMap.get(func);
11645    };
11646
11647    /**
11648     * Gets the name of `func`.
11649     *
11650     * @private
11651     * @param {Function} func The function to query.
11652     * @returns {string} Returns the function name.
11653     */
11654    function getFuncName(func) {
11655      var result = (func.name + ''),
11656          array = realNames[result],
11657          length = hasOwnProperty.call(realNames, result) ? array.length : 0;
11658
11659      while (length--) {
11660        var data = array[length],
11661            otherFunc = data.func;
11662        if (otherFunc == null || otherFunc == func) {
11663          return data.name;
11664        }
11665      }
11666      return result;
11667    }
11668
11669    /**
11670     * Gets the argument placeholder value for `func`.
11671     *
11672     * @private
11673     * @param {Function} func The function to inspect.
11674     * @returns {*} Returns the placeholder value.
11675     */
11676    function getHolder(func) {
11677      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
11678      return object.placeholder;
11679    }
11680
11681    /**
11682     * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
11683     * this function returns the custom method, otherwise it returns `baseIteratee`.
11684     * If arguments are provided, the chosen function is invoked with them and
11685     * its result is returned.
11686     *
11687     * @private
11688     * @param {*} [value] The value to convert to an iteratee.
11689     * @param {number} [arity] The arity of the created iteratee.
11690     * @returns {Function} Returns the chosen function or its result.
11691     */
11692    function getIteratee() {
11693      var result = lodash.iteratee || iteratee;
11694      result = result === iteratee ? baseIteratee : result;
11695      return arguments.length ? result(arguments[0], arguments[1]) : result;
11696    }
11697
11698    /**
11699     * Gets the data for `map`.
11700     *
11701     * @private
11702     * @param {Object} map The map to query.
11703     * @param {string} key The reference key.
11704     * @returns {*} Returns the map data.
11705     */
11706    function getMapData(map, key) {
11707      var data = map.__data__;
11708      return isKeyable(key)
11709        ? data[typeof key == 'string' ? 'string' : 'hash']
11710        : data.map;
11711    }
11712
11713    /**
11714     * Gets the property names, values, and compare flags of `object`.
11715     *
11716     * @private
11717     * @param {Object} object The object to query.
11718     * @returns {Array} Returns the match data of `object`.
11719     */
11720    function getMatchData(object) {
11721      var result = keys(object),
11722          length = result.length;
11723
11724      while (length--) {
11725        var key = result[length],
11726            value = object[key];
11727
11728        result[length] = [key, value, isStrictComparable(value)];
11729      }
11730      return result;
11731    }
11732
11733    /**
11734     * Gets the native function at `key` of `object`.
11735     *
11736     * @private
11737     * @param {Object} object The object to query.
11738     * @param {string} key The key of the method to get.
11739     * @returns {*} Returns the function if it's native, else `undefined`.
11740     */
11741    function getNative(object, key) {
11742      var value = getValue(object, key);
11743      return baseIsNative(value) ? value : undefined;
11744    }
11745
11746    /**
11747     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
11748     *
11749     * @private
11750     * @param {*} value The value to query.
11751     * @returns {string} Returns the raw `toStringTag`.
11752     */
11753    function getRawTag(value) {
11754      var isOwn = hasOwnProperty.call(value, symToStringTag),
11755          tag = value[symToStringTag];
11756
11757      try {
11758        value[symToStringTag] = undefined;
11759        var unmasked = true;
11760      } catch (e) {}
11761
11762      var result = nativeObjectToString.call(value);
11763      if (unmasked) {
11764        if (isOwn) {
11765          value[symToStringTag] = tag;
11766        } else {
11767          delete value[symToStringTag];
11768        }
11769      }
11770      return result;
11771    }
11772
11773    /**
11774     * Creates an array of the own enumerable symbols of `object`.
11775     *
11776     * @private
11777     * @param {Object} object The object to query.
11778     * @returns {Array} Returns the array of symbols.
11779     */
11780    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
11781      if (object == null) {
11782        return [];
11783      }
11784      object = Object(object);
11785      return arrayFilter(nativeGetSymbols(object), function(symbol) {
11786        return propertyIsEnumerable.call(object, symbol);
11787      });
11788    };
11789
11790    /**
11791     * Creates an array of the own and inherited enumerable symbols of `object`.
11792     *
11793     * @private
11794     * @param {Object} object The object to query.
11795     * @returns {Array} Returns the array of symbols.
11796     */
11797    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
11798      var result = [];
11799      while (object) {
11800        arrayPush(result, getSymbols(object));
11801        object = getPrototype(object);
11802      }
11803      return result;
11804    };
11805
11806    /**
11807     * Gets the `toStringTag` of `value`.
11808     *
11809     * @private
11810     * @param {*} value The value to query.
11811     * @returns {string} Returns the `toStringTag`.
11812     */
11813    var getTag = baseGetTag;
11814
11815    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
11816    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
11817        (Map && getTag(new Map) != mapTag) ||
11818        (Promise && getTag(Promise.resolve()) != promiseTag) ||
11819        (Set && getTag(new Set) != setTag) ||
11820        (WeakMap && getTag(new WeakMap) != weakMapTag)) {
11821      getTag = function(value) {
11822        var result = baseGetTag(value),
11823            Ctor = result == objectTag ? value.constructor : undefined,
11824            ctorString = Ctor ? toSource(Ctor) : '';
11825
11826        if (ctorString) {
11827          switch (ctorString) {
11828            case dataViewCtorString: return dataViewTag;
11829            case mapCtorString: return mapTag;
11830            case promiseCtorString: return promiseTag;
11831            case setCtorString: return setTag;
11832            case weakMapCtorString: return weakMapTag;
11833          }
11834        }
11835        return result;
11836      };
11837    }
11838
11839    /**
11840     * Gets the view, applying any `transforms` to the `start` and `end` positions.
11841     *
11842     * @private
11843     * @param {number} start The start of the view.
11844     * @param {number} end The end of the view.
11845     * @param {Array} transforms The transformations to apply to the view.
11846     * @returns {Object} Returns an object containing the `start` and `end`
11847     *  positions of the view.
11848     */
11849    function getView(start, end, transforms) {
11850      var index = -1,
11851          length = transforms.length;
11852
11853      while (++index < length) {
11854        var data = transforms[index],
11855            size = data.size;
11856
11857        switch (data.type) {
11858          case 'drop':      start += size; break;
11859          case 'dropRight': end -= size; break;
11860          case 'take':      end = nativeMin(end, start + size); break;
11861          case 'takeRight': start = nativeMax(start, end - size); break;
11862        }
11863      }
11864      return { 'start': start, 'end': end };
11865    }
11866
11867    /**
11868     * Extracts wrapper details from the `source` body comment.
11869     *
11870     * @private
11871     * @param {string} source The source to inspect.
11872     * @returns {Array} Returns the wrapper details.
11873     */
11874    function getWrapDetails(source) {
11875      var match = source.match(reWrapDetails);
11876      return match ? match[1].split(reSplitDetails) : [];
11877    }
11878
11879    /**
11880     * Checks if `path` exists on `object`.
11881     *
11882     * @private
11883     * @param {Object} object The object to query.
11884     * @param {Array|string} path The path to check.
11885     * @param {Function} hasFunc The function to check properties.
11886     * @returns {boolean} Returns `true` if `path` exists, else `false`.
11887     */
11888    function hasPath(object, path, hasFunc) {
11889      path = castPath(path, object);
11890
11891      var index = -1,
11892          length = path.length,
11893          result = false;
11894
11895      while (++index < length) {
11896        var key = toKey(path[index]);
11897        if (!(result = object != null && hasFunc(object, key))) {
11898          break;
11899        }
11900        object = object[key];
11901      }
11902      if (result || ++index != length) {
11903        return result;
11904      }
11905      length = object == null ? 0 : object.length;
11906      return !!length && isLength(length) && isIndex(key, length) &&
11907        (isArray(object) || isArguments(object));
11908    }
11909
11910    /**
11911     * Initializes an array clone.
11912     *
11913     * @private
11914     * @param {Array} array The array to clone.
11915     * @returns {Array} Returns the initialized clone.
11916     */
11917    function initCloneArray(array) {
11918      var length = array.length,
11919          result = new array.constructor(length);
11920
11921      // Add properties assigned by `RegExp#exec`.
11922      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
11923        result.index = array.index;
11924        result.input = array.input;
11925      }
11926      return result;
11927    }
11928
11929    /**
11930     * Initializes an object clone.
11931     *
11932     * @private
11933     * @param {Object} object The object to clone.
11934     * @returns {Object} Returns the initialized clone.
11935     */
11936    function initCloneObject(object) {
11937      return (typeof object.constructor == 'function' && !isPrototype(object))
11938        ? baseCreate(getPrototype(object))
11939        : {};
11940    }
11941
11942    /**
11943     * Initializes an object clone based on its `toStringTag`.
11944     *
11945     * **Note:** This function only supports cloning values with tags of
11946     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
11947     *
11948     * @private
11949     * @param {Object} object The object to clone.
11950     * @param {string} tag The `toStringTag` of the object to clone.
11951     * @param {boolean} [isDeep] Specify a deep clone.
11952     * @returns {Object} Returns the initialized clone.
11953     */
11954    function initCloneByTag(object, tag, isDeep) {
11955      var Ctor = object.constructor;
11956      switch (tag) {
11957        case arrayBufferTag:
11958          return cloneArrayBuffer(object);
11959
11960        case boolTag:
11961        case dateTag:
11962          return new Ctor(+object);
11963
11964        case dataViewTag:
11965          return cloneDataView(object, isDeep);
11966
11967        case float32Tag: case float64Tag:
11968        case int8Tag: case int16Tag: case int32Tag:
11969        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
11970          return cloneTypedArray(object, isDeep);
11971
11972        case mapTag:
11973          return new Ctor;
11974
11975        case numberTag:
11976        case stringTag:
11977          return new Ctor(object);
11978
11979        case regexpTag:
11980          return cloneRegExp(object);
11981
11982        case setTag:
11983          return new Ctor;
11984
11985        case symbolTag:
11986          return cloneSymbol(object);
11987      }
11988    }
11989
11990    /**
11991     * Inserts wrapper `details` in a comment at the top of the `source` body.
11992     *
11993     * @private
11994     * @param {string} source The source to modify.
11995     * @returns {Array} details The details to insert.
11996     * @returns {string} Returns the modified source.
11997     */
11998    function insertWrapDetails(source, details) {
11999      var length = details.length;
12000      if (!length) {
12001        return source;
12002      }
12003      var lastIndex = length - 1;
12004      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
12005      details = details.join(length > 2 ? ', ' : ' ');
12006      return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
12007    }
12008
12009    /**
12010     * Checks if `value` is a flattenable `arguments` object or array.
12011     *
12012     * @private
12013     * @param {*} value The value to check.
12014     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
12015     */
12016    function isFlattenable(value) {
12017      return isArray(value) || isArguments(value) ||
12018        !!(spreadableSymbol && value && value[spreadableSymbol]);
12019    }
12020
12021    /**
12022     * Checks if `value` is a valid array-like index.
12023     *
12024     * @private
12025     * @param {*} value The value to check.
12026     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
12027     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
12028     */
12029    function isIndex(value, length) {
12030      var type = typeof value;
12031      length = length == null ? MAX_SAFE_INTEGER : length;
12032
12033      return !!length &&
12034        (type == 'number' ||
12035          (type != 'symbol' && reIsUint.test(value))) &&
12036            (value > -1 && value % 1 == 0 && value < length);
12037    }
12038
12039    /**
12040     * Checks if the given arguments are from an iteratee call.
12041     *
12042     * @private
12043     * @param {*} value The potential iteratee value argument.
12044     * @param {*} index The potential iteratee index or key argument.
12045     * @param {*} object The potential iteratee object argument.
12046     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
12047     *  else `false`.
12048     */
12049    function isIterateeCall(value, index, object) {
12050      if (!isObject(object)) {
12051        return false;
12052      }
12053      var type = typeof index;
12054      if (type == 'number'
12055            ? (isArrayLike(object) && isIndex(index, object.length))
12056            : (type == 'string' && index in object)
12057          ) {
12058        return eq(object[index], value);
12059      }
12060      return false;
12061    }
12062
12063    /**
12064     * Checks if `value` is a property name and not a property path.
12065     *
12066     * @private
12067     * @param {*} value The value to check.
12068     * @param {Object} [object] The object to query keys on.
12069     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
12070     */
12071    function isKey(value, object) {
12072      if (isArray(value)) {
12073        return false;
12074      }
12075      var type = typeof value;
12076      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
12077          value == null || isSymbol(value)) {
12078        return true;
12079      }
12080      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
12081        (object != null && value in Object(object));
12082    }
12083
12084    /**
12085     * Checks if `value` is suitable for use as unique object key.
12086     *
12087     * @private
12088     * @param {*} value The value to check.
12089     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
12090     */
12091    function isKeyable(value) {
12092      var type = typeof value;
12093      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
12094        ? (value !== '__proto__')
12095        : (value === null);
12096    }
12097
12098    /**
12099     * Checks if `func` has a lazy counterpart.
12100     *
12101     * @private
12102     * @param {Function} func The function to check.
12103     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
12104     *  else `false`.
12105     */
12106    function isLaziable(func) {
12107      var funcName = getFuncName(func),
12108          other = lodash[funcName];
12109
12110      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
12111        return false;
12112      }
12113      if (func === other) {
12114        return true;
12115      }
12116      var data = getData(other);
12117      return !!data && func === data[0];
12118    }
12119
12120    /**
12121     * Checks if `func` has its source masked.
12122     *
12123     * @private
12124     * @param {Function} func The function to check.
12125     * @returns {boolean} Returns `true` if `func` is masked, else `false`.
12126     */
12127    function isMasked(func) {
12128      return !!maskSrcKey && (maskSrcKey in func);
12129    }
12130
12131    /**
12132     * Checks if `func` is capable of being masked.
12133     *
12134     * @private
12135     * @param {*} value The value to check.
12136     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
12137     */
12138    var isMaskable = coreJsData ? isFunction : stubFalse;
12139
12140    /**
12141     * Checks if `value` is likely a prototype object.
12142     *
12143     * @private
12144     * @param {*} value The value to check.
12145     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
12146     */
12147    function isPrototype(value) {
12148      var Ctor = value && value.constructor,
12149          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
12150
12151      return value === proto;
12152    }
12153
12154    /**
12155     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
12156     *
12157     * @private
12158     * @param {*} value The value to check.
12159     * @returns {boolean} Returns `true` if `value` if suitable for strict
12160     *  equality comparisons, else `false`.
12161     */
12162    function isStrictComparable(value) {
12163      return value === value && !isObject(value);
12164    }
12165
12166    /**
12167     * A specialized version of `matchesProperty` for source values suitable
12168     * for strict equality comparisons, i.e. `===`.
12169     *
12170     * @private
12171     * @param {string} key The key of the property to get.
12172     * @param {*} srcValue The value to match.
12173     * @returns {Function} Returns the new spec function.
12174     */
12175    function matchesStrictComparable(key, srcValue) {
12176      return function(object) {
12177        if (object == null) {
12178          return false;
12179        }
12180        return object[key] === srcValue &&
12181          (srcValue !== undefined || (key in Object(object)));
12182      };
12183    }
12184
12185    /**
12186     * A specialized version of `_.memoize` which clears the memoized function's
12187     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
12188     *
12189     * @private
12190     * @param {Function} func The function to have its output memoized.
12191     * @returns {Function} Returns the new memoized function.
12192     */
12193    function memoizeCapped(func) {
12194      var result = memoize(func, function(key) {
12195        if (cache.size === MAX_MEMOIZE_SIZE) {
12196          cache.clear();
12197        }
12198        return key;
12199      });
12200
12201      var cache = result.cache;
12202      return result;
12203    }
12204
12205    /**
12206     * Merges the function metadata of `source` into `data`.
12207     *
12208     * Merging metadata reduces the number of wrappers used to invoke a function.
12209     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
12210     * may be applied regardless of execution order. Methods like `_.ary` and
12211     * `_.rearg` modify function arguments, making the order in which they are
12212     * executed important, preventing the merging of metadata. However, we make
12213     * an exception for a safe combined case where curried functions have `_.ary`
12214     * and or `_.rearg` applied.
12215     *
12216     * @private
12217     * @param {Array} data The destination metadata.
12218     * @param {Array} source The source metadata.
12219     * @returns {Array} Returns `data`.
12220     */
12221    function mergeData(data, source) {
12222      var bitmask = data[1],
12223          srcBitmask = source[1],
12224          newBitmask = bitmask | srcBitmask,
12225          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
12226
12227      var isCombo =
12228        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
12229        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
12230        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
12231
12232      // Exit early if metadata can't be merged.
12233      if (!(isCommon || isCombo)) {
12234        return data;
12235      }
12236      // Use source `thisArg` if available.
12237      if (srcBitmask & WRAP_BIND_FLAG) {
12238        data[2] = source[2];
12239        // Set when currying a bound function.
12240        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
12241      }
12242      // Compose partial arguments.
12243      var value = source[3];
12244      if (value) {
12245        var partials = data[3];
12246        data[3] = partials ? composeArgs(partials, value, source[4]) : value;
12247        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
12248      }
12249      // Compose partial right arguments.
12250      value = source[5];
12251      if (value) {
12252        partials = data[5];
12253        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
12254        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
12255      }
12256      // Use source `argPos` if available.
12257      value = source[7];
12258      if (value) {
12259        data[7] = value;
12260      }
12261      // Use source `ary` if it's smaller.
12262      if (srcBitmask & WRAP_ARY_FLAG) {
12263        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
12264      }
12265      // Use source `arity` if one is not provided.
12266      if (data[9] == null) {
12267        data[9] = source[9];
12268      }
12269      // Use source `func` and merge bitmasks.
12270      data[0] = source[0];
12271      data[1] = newBitmask;
12272
12273      return data;
12274    }
12275
12276    /**
12277     * This function is like
12278     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
12279     * except that it includes inherited enumerable properties.
12280     *
12281     * @private
12282     * @param {Object} object The object to query.
12283     * @returns {Array} Returns the array of property names.
12284     */
12285    function nativeKeysIn(object) {
12286      var result = [];
12287      if (object != null) {
12288        for (var key in Object(object)) {
12289          result.push(key);
12290        }
12291      }
12292      return result;
12293    }
12294
12295    /**
12296     * Converts `value` to a string using `Object.prototype.toString`.
12297     *
12298     * @private
12299     * @param {*} value The value to convert.
12300     * @returns {string} Returns the converted string.
12301     */
12302    function objectToString(value) {
12303      return nativeObjectToString.call(value);
12304    }
12305
12306    /**
12307     * A specialized version of `baseRest` which transforms the rest array.
12308     *
12309     * @private
12310     * @param {Function} func The function to apply a rest parameter to.
12311     * @param {number} [start=func.length-1] The start position of the rest parameter.
12312     * @param {Function} transform The rest array transform.
12313     * @returns {Function} Returns the new function.
12314     */
12315    function overRest(func, start, transform) {
12316      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
12317      return function() {
12318        var args = arguments,
12319            index = -1,
12320            length = nativeMax(args.length - start, 0),
12321            array = Array(length);
12322
12323        while (++index < length) {
12324          array[index] = args[start + index];
12325        }
12326        index = -1;
12327        var otherArgs = Array(start + 1);
12328        while (++index < start) {
12329          otherArgs[index] = args[index];
12330        }
12331        otherArgs[start] = transform(array);
12332        return apply(func, this, otherArgs);
12333      };
12334    }
12335
12336    /**
12337     * Gets the parent value at `path` of `object`.
12338     *
12339     * @private
12340     * @param {Object} object The object to query.
12341     * @param {Array} path The path to get the parent value of.
12342     * @returns {*} Returns the parent value.
12343     */
12344    function parent(object, path) {
12345      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
12346    }
12347
12348    /**
12349     * Reorder `array` according to the specified indexes where the element at
12350     * the first index is assigned as the first element, the element at
12351     * the second index is assigned as the second element, and so on.
12352     *
12353     * @private
12354     * @param {Array} array The array to reorder.
12355     * @param {Array} indexes The arranged array indexes.
12356     * @returns {Array} Returns `array`.
12357     */
12358    function reorder(array, indexes) {
12359      var arrLength = array.length,
12360          length = nativeMin(indexes.length, arrLength),
12361          oldArray = copyArray(array);
12362
12363      while (length--) {
12364        var index = indexes[length];
12365        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
12366      }
12367      return array;
12368    }
12369
12370    /**
12371     * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
12372     *
12373     * @private
12374     * @param {Object} object The object to query.
12375     * @param {string} key The key of the property to get.
12376     * @returns {*} Returns the property value.
12377     */
12378    function safeGet(object, key) {
12379      if (key === 'constructor' && typeof object[key] === 'function') {
12380        return;
12381      }
12382
12383      if (key == '__proto__') {
12384        return;
12385      }
12386
12387      return object[key];
12388    }
12389
12390    /**
12391     * Sets metadata for `func`.
12392     *
12393     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
12394     * period of time, it will trip its breaker and transition to an identity
12395     * function to avoid garbage collection pauses in V8. See
12396     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
12397     * for more details.
12398     *
12399     * @private
12400     * @param {Function} func The function to associate metadata with.
12401     * @param {*} data The metadata.
12402     * @returns {Function} Returns `func`.
12403     */
12404    var setData = shortOut(baseSetData);
12405
12406    /**
12407     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
12408     *
12409     * @private
12410     * @param {Function} func The function to delay.
12411     * @param {number} wait The number of milliseconds to delay invocation.
12412     * @returns {number|Object} Returns the timer id or timeout object.
12413     */
12414    var setTimeout = ctxSetTimeout || function(func, wait) {
12415      return root.setTimeout(func, wait);
12416    };
12417
12418    /**
12419     * Sets the `toString` method of `func` to return `string`.
12420     *
12421     * @private
12422     * @param {Function} func The function to modify.
12423     * @param {Function} string The `toString` result.
12424     * @returns {Function} Returns `func`.
12425     */
12426    var setToString = shortOut(baseSetToString);
12427
12428    /**
12429     * Sets the `toString` method of `wrapper` to mimic the source of `reference`
12430     * with wrapper details in a comment at the top of the source body.
12431     *
12432     * @private
12433     * @param {Function} wrapper The function to modify.
12434     * @param {Function} reference The reference function.
12435     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
12436     * @returns {Function} Returns `wrapper`.
12437     */
12438    function setWrapToString(wrapper, reference, bitmask) {
12439      var source = (reference + '');
12440      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
12441    }
12442
12443    /**
12444     * Creates a function that'll short out and invoke `identity` instead
12445     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
12446     * milliseconds.
12447     *
12448     * @private
12449     * @param {Function} func The function to restrict.
12450     * @returns {Function} Returns the new shortable function.
12451     */
12452    function shortOut(func) {
12453      var count = 0,
12454          lastCalled = 0;
12455
12456      return function() {
12457        var stamp = nativeNow(),
12458            remaining = HOT_SPAN - (stamp - lastCalled);
12459
12460        lastCalled = stamp;
12461        if (remaining > 0) {
12462          if (++count >= HOT_COUNT) {
12463            return arguments[0];
12464          }
12465        } else {
12466          count = 0;
12467        }
12468        return func.apply(undefined, arguments);
12469      };
12470    }
12471
12472    /**
12473     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
12474     *
12475     * @private
12476     * @param {Array} array The array to shuffle.
12477     * @param {number} [size=array.length] The size of `array`.
12478     * @returns {Array} Returns `array`.
12479     */
12480    function shuffleSelf(array, size) {
12481      var index = -1,
12482          length = array.length,
12483          lastIndex = length - 1;
12484
12485      size = size === undefined ? length : size;
12486      while (++index < size) {
12487        var rand = baseRandom(index, lastIndex),
12488            value = array[rand];
12489
12490        array[rand] = array[index];
12491        array[index] = value;
12492      }
12493      array.length = size;
12494      return array;
12495    }
12496
12497    /**
12498     * Converts `string` to a property path array.
12499     *
12500     * @private
12501     * @param {string} string The string to convert.
12502     * @returns {Array} Returns the property path array.
12503     */
12504    var stringToPath = memoizeCapped(function(string) {
12505      var result = [];
12506      if (string.charCodeAt(0) === 46 /* . */) {
12507        result.push('');
12508      }
12509      string.replace(rePropName, function(match, number, quote, subString) {
12510        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
12511      });
12512      return result;
12513    });
12514
12515    /**
12516     * Converts `value` to a string key if it's not a string or symbol.
12517     *
12518     * @private
12519     * @param {*} value The value to inspect.
12520     * @returns {string|symbol} Returns the key.
12521     */
12522    function toKey(value) {
12523      if (typeof value == 'string' || isSymbol(value)) {
12524        return value;
12525      }
12526      var result = (value + '');
12527      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
12528    }
12529
12530    /**
12531     * Converts `func` to its source code.
12532     *
12533     * @private
12534     * @param {Function} func The function to convert.
12535     * @returns {string} Returns the source code.
12536     */
12537    function toSource(func) {
12538      if (func != null) {
12539        try {
12540          return funcToString.call(func);
12541        } catch (e) {}
12542        try {
12543          return (func + '');
12544        } catch (e) {}
12545      }
12546      return '';
12547    }
12548
12549    /**
12550     * Updates wrapper `details` based on `bitmask` flags.
12551     *
12552     * @private
12553     * @returns {Array} details The details to modify.
12554     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
12555     * @returns {Array} Returns `details`.
12556     */
12557    function updateWrapDetails(details, bitmask) {
12558      arrayEach(wrapFlags, function(pair) {
12559        var value = '_.' + pair[0];
12560        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
12561          details.push(value);
12562        }
12563      });
12564      return details.sort();
12565    }
12566
12567    /**
12568     * Creates a clone of `wrapper`.
12569     *
12570     * @private
12571     * @param {Object} wrapper The wrapper to clone.
12572     * @returns {Object} Returns the cloned wrapper.
12573     */
12574    function wrapperClone(wrapper) {
12575      if (wrapper instanceof LazyWrapper) {
12576        return wrapper.clone();
12577      }
12578      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
12579      result.__actions__ = copyArray(wrapper.__actions__);
12580      result.__index__  = wrapper.__index__;
12581      result.__values__ = wrapper.__values__;
12582      return result;
12583    }
12584
12585    /*------------------------------------------------------------------------*/
12586
12587    /**
12588     * Creates an array of elements split into groups the length of `size`.
12589     * If `array` can't be split evenly, the final chunk will be the remaining
12590     * elements.
12591     *
12592     * @static
12593     * @memberOf _
12594     * @since 3.0.0
12595     * @category Array
12596     * @param {Array} array The array to process.
12597     * @param {number} [size=1] The length of each chunk
12598     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
12599     * @returns {Array} Returns the new array of chunks.
12600     * @example
12601     *
12602     * _.chunk(['a', 'b', 'c', 'd'], 2);
12603     * // => [['a', 'b'], ['c', 'd']]
12604     *
12605     * _.chunk(['a', 'b', 'c', 'd'], 3);
12606     * // => [['a', 'b', 'c'], ['d']]
12607     */
12608    function chunk(array, size, guard) {
12609      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
12610        size = 1;
12611      } else {
12612        size = nativeMax(toInteger(size), 0);
12613      }
12614      var length = array == null ? 0 : array.length;
12615      if (!length || size < 1) {
12616        return [];
12617      }
12618      var index = 0,
12619          resIndex = 0,
12620          result = Array(nativeCeil(length / size));
12621
12622      while (index < length) {
12623        result[resIndex++] = baseSlice(array, index, (index += size));
12624      }
12625      return result;
12626    }
12627
12628    /**
12629     * Creates an array with all falsey values removed. The values `false`, `null`,
12630     * `0`, `""`, `undefined`, and `NaN` are falsey.
12631     *
12632     * @static
12633     * @memberOf _
12634     * @since 0.1.0
12635     * @category Array
12636     * @param {Array} array The array to compact.
12637     * @returns {Array} Returns the new array of filtered values.
12638     * @example
12639     *
12640     * _.compact([0, 1, false, 2, '', 3]);
12641     * // => [1, 2, 3]
12642     */
12643    function compact(array) {
12644      var index = -1,
12645          length = array == null ? 0 : array.length,
12646          resIndex = 0,
12647          result = [];
12648
12649      while (++index < length) {
12650        var value = array[index];
12651        if (value) {
12652          result[resIndex++] = value;
12653        }
12654      }
12655      return result;
12656    }
12657
12658    /**
12659     * Creates a new array concatenating `array` with any additional arrays
12660     * and/or values.
12661     *
12662     * @static
12663     * @memberOf _
12664     * @since 4.0.0
12665     * @category Array
12666     * @param {Array} array The array to concatenate.
12667     * @param {...*} [values] The values to concatenate.
12668     * @returns {Array} Returns the new concatenated array.
12669     * @example
12670     *
12671     * var array = [1];
12672     * var other = _.concat(array, 2, [3], [[4]]);
12673     *
12674     * console.log(other);
12675     * // => [1, 2, 3, [4]]
12676     *
12677     * console.log(array);
12678     * // => [1]
12679     */
12680    function concat() {
12681      var length = arguments.length;
12682      if (!length) {
12683        return [];
12684      }
12685      var args = Array(length - 1),
12686          array = arguments[0],
12687          index = length;
12688
12689      while (index--) {
12690        args[index - 1] = arguments[index];
12691      }
12692      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
12693    }
12694
12695    /**
12696     * Creates an array of `array` values not included in the other given arrays
12697     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
12698     * for equality comparisons. The order and references of result values are
12699     * determined by the first array.
12700     *
12701     * **Note:** Unlike `_.pullAll`, this method returns a new array.
12702     *
12703     * @static
12704     * @memberOf _
12705     * @since 0.1.0
12706     * @category Array
12707     * @param {Array} array The array to inspect.
12708     * @param {...Array} [values] The values to exclude.
12709     * @returns {Array} Returns the new array of filtered values.
12710     * @see _.without, _.xor
12711     * @example
12712     *
12713     * _.difference([2, 1], [2, 3]);
12714     * // => [1]
12715     */
12716    var difference = baseRest(function(array, values) {
12717      return isArrayLikeObject(array)
12718        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
12719        : [];
12720    });
12721
12722    /**
12723     * This method is like `_.difference` except that it accepts `iteratee` which
12724     * is invoked for each element of `array` and `values` to generate the criterion
12725     * by which they're compared. The order and references of result values are
12726     * determined by the first array. The iteratee is invoked with one argument:
12727     * (value).
12728     *
12729     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
12730     *
12731     * @static
12732     * @memberOf _
12733     * @since 4.0.0
12734     * @category Array
12735     * @param {Array} array The array to inspect.
12736     * @param {...Array} [values] The values to exclude.
12737     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
12738     * @returns {Array} Returns the new array of filtered values.
12739     * @example
12740     *
12741     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
12742     * // => [1.2]
12743     *
12744     * // The `_.property` iteratee shorthand.
12745     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
12746     * // => [{ 'x': 2 }]
12747     */
12748    var differenceBy = baseRest(function(array, values) {
12749      var iteratee = last(values);
12750      if (isArrayLikeObject(iteratee)) {
12751        iteratee = undefined;
12752      }
12753      return isArrayLikeObject(array)
12754        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
12755        : [];
12756    });
12757
12758    /**
12759     * This method is like `_.difference` except that it accepts `comparator`
12760     * which is invoked to compare elements of `array` to `values`. The order and
12761     * references of result values are determined by the first array. The comparator
12762     * is invoked with two arguments: (arrVal, othVal).
12763     *
12764     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
12765     *
12766     * @static
12767     * @memberOf _
12768     * @since 4.0.0
12769     * @category Array
12770     * @param {Array} array The array to inspect.
12771     * @param {...Array} [values] The values to exclude.
12772     * @param {Function} [comparator] The comparator invoked per element.
12773     * @returns {Array} Returns the new array of filtered values.
12774     * @example
12775     *
12776     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
12777     *
12778     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
12779     * // => [{ 'x': 2, 'y': 1 }]
12780     */
12781    var differenceWith = baseRest(function(array, values) {
12782      var comparator = last(values);
12783      if (isArrayLikeObject(comparator)) {
12784        comparator = undefined;
12785      }
12786      return isArrayLikeObject(array)
12787        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
12788        : [];
12789    });
12790
12791    /**
12792     * Creates a slice of `array` with `n` elements dropped from the beginning.
12793     *
12794     * @static
12795     * @memberOf _
12796     * @since 0.5.0
12797     * @category Array
12798     * @param {Array} array The array to query.
12799     * @param {number} [n=1] The number of elements to drop.
12800     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
12801     * @returns {Array} Returns the slice of `array`.
12802     * @example
12803     *
12804     * _.drop([1, 2, 3]);
12805     * // => [2, 3]
12806     *
12807     * _.drop([1, 2, 3], 2);
12808     * // => [3]
12809     *
12810     * _.drop([1, 2, 3], 5);
12811     * // => []
12812     *
12813     * _.drop([1, 2, 3], 0);
12814     * // => [1, 2, 3]
12815     */
12816    function drop(array, n, guard) {
12817      var length = array == null ? 0 : array.length;
12818      if (!length) {
12819        return [];
12820      }
12821      n = (guard || n === undefined) ? 1 : toInteger(n);
12822      return baseSlice(array, n < 0 ? 0 : n, length);
12823    }
12824
12825    /**
12826     * Creates a slice of `array` with `n` elements dropped from the end.
12827     *
12828     * @static
12829     * @memberOf _
12830     * @since 3.0.0
12831     * @category Array
12832     * @param {Array} array The array to query.
12833     * @param {number} [n=1] The number of elements to drop.
12834     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
12835     * @returns {Array} Returns the slice of `array`.
12836     * @example
12837     *
12838     * _.dropRight([1, 2, 3]);
12839     * // => [1, 2]
12840     *
12841     * _.dropRight([1, 2, 3], 2);
12842     * // => [1]
12843     *
12844     * _.dropRight([1, 2, 3], 5);
12845     * // => []
12846     *
12847     * _.dropRight([1, 2, 3], 0);
12848     * // => [1, 2, 3]
12849     */
12850    function dropRight(array, n, guard) {
12851      var length = array == null ? 0 : array.length;
12852      if (!length) {
12853        return [];
12854      }
12855      n = (guard || n === undefined) ? 1 : toInteger(n);
12856      n = length - n;
12857      return baseSlice(array, 0, n < 0 ? 0 : n);
12858    }
12859
12860    /**
12861     * Creates a slice of `array` excluding elements dropped from the end.
12862     * Elements are dropped until `predicate` returns falsey. The predicate is
12863     * invoked with three arguments: (value, index, array).
12864     *
12865     * @static
12866     * @memberOf _
12867     * @since 3.0.0
12868     * @category Array
12869     * @param {Array} array The array to query.
12870     * @param {Function} [predicate=_.identity] The function invoked per iteration.
12871     * @returns {Array} Returns the slice of `array`.
12872     * @example
12873     *
12874     * var users = [
12875     *   { 'user': 'barney',  'active': true },
12876     *   { 'user': 'fred',    'active': false },
12877     *   { 'user': 'pebbles', 'active': false }
12878     * ];
12879     *
12880     * _.dropRightWhile(users, function(o) { return !o.active; });
12881     * // => objects for ['barney']
12882     *
12883     * // The `_.matches` iteratee shorthand.
12884     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
12885     * // => objects for ['barney', 'fred']
12886     *
12887     * // The `_.matchesProperty` iteratee shorthand.
12888     * _.dropRightWhile(users, ['active', false]);
12889     * // => objects for ['barney']
12890     *
12891     * // The `_.property` iteratee shorthand.
12892     * _.dropRightWhile(users, 'active');
12893     * // => objects for ['barney', 'fred', 'pebbles']
12894     */
12895    function dropRightWhile(array, predicate) {
12896      return (array && array.length)
12897        ? baseWhile(array, getIteratee(predicate, 3), true, true)
12898        : [];
12899    }
12900
12901    /**
12902     * Creates a slice of `array` excluding elements dropped from the beginning.
12903     * Elements are dropped until `predicate` returns falsey. The predicate is
12904     * invoked with three arguments: (value, index, array).
12905     *
12906     * @static
12907     * @memberOf _
12908     * @since 3.0.0
12909     * @category Array
12910     * @param {Array} array The array to query.
12911     * @param {Function} [predicate=_.identity] The function invoked per iteration.
12912     * @returns {Array} Returns the slice of `array`.
12913     * @example
12914     *
12915     * var users = [
12916     *   { 'user': 'barney',  'active': false },
12917     *   { 'user': 'fred',    'active': false },
12918     *   { 'user': 'pebbles', 'active': true }
12919     * ];
12920     *
12921     * _.dropWhile(users, function(o) { return !o.active; });
12922     * // => objects for ['pebbles']
12923     *
12924     * // The `_.matches` iteratee shorthand.
12925     * _.dropWhile(users, { 'user': 'barney', 'active': false });
12926     * // => objects for ['fred', 'pebbles']
12927     *
12928     * // The `_.matchesProperty` iteratee shorthand.
12929     * _.dropWhile(users, ['active', false]);
12930     * // => objects for ['pebbles']
12931     *
12932     * // The `_.property` iteratee shorthand.
12933     * _.dropWhile(users, 'active');
12934     * // => objects for ['barney', 'fred', 'pebbles']
12935     */
12936    function dropWhile(array, predicate) {
12937      return (array && array.length)
12938        ? baseWhile(array, getIteratee(predicate, 3), true)
12939        : [];
12940    }
12941
12942    /**
12943     * Fills elements of `array` with `value` from `start` up to, but not
12944     * including, `end`.
12945     *
12946     * **Note:** This method mutates `array`.
12947     *
12948     * @static
12949     * @memberOf _
12950     * @since 3.2.0
12951     * @category Array
12952     * @param {Array} array The array to fill.
12953     * @param {*} value The value to fill `array` with.
12954     * @param {number} [start=0] The start position.
12955     * @param {number} [end=array.length] The end position.
12956     * @returns {Array} Returns `array`.
12957     * @example
12958     *
12959     * var array = [1, 2, 3];
12960     *
12961     * _.fill(array, 'a');
12962     * console.log(array);
12963     * // => ['a', 'a', 'a']
12964     *
12965     * _.fill(Array(3), 2);
12966     * // => [2, 2, 2]
12967     *
12968     * _.fill([4, 6, 8, 10], '*', 1, 3);
12969     * // => [4, '*', '*', 10]
12970     */
12971    function fill(array, value, start, end) {
12972      var length = array == null ? 0 : array.length;
12973      if (!length) {
12974        return [];
12975      }
12976      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
12977        start = 0;
12978        end = length;
12979      }
12980      return baseFill(array, value, start, end);
12981    }
12982
12983    /**
12984     * This method is like `_.find` except that it returns the index of the first
12985     * element `predicate` returns truthy for instead of the element itself.
12986     *
12987     * @static
12988     * @memberOf _
12989     * @since 1.1.0
12990     * @category Array
12991     * @param {Array} array The array to inspect.
12992     * @param {Function} [predicate=_.identity] The function invoked per iteration.
12993     * @param {number} [fromIndex=0] The index to search from.
12994     * @returns {number} Returns the index of the found element, else `-1`.
12995     * @example
12996     *
12997     * var users = [
12998     *   { 'user': 'barney',  'active': false },
12999     *   { 'user': 'fred',    'active': false },
13000     *   { 'user': 'pebbles', 'active': true }
13001     * ];
13002     *
13003     * _.findIndex(users, function(o) { return o.user == 'barney'; });
13004     * // => 0
13005     *
13006     * // The `_.matches` iteratee shorthand.
13007     * _.findIndex(users, { 'user': 'fred', 'active': false });
13008     * // => 1
13009     *
13010     * // The `_.matchesProperty` iteratee shorthand.
13011     * _.findIndex(users, ['active', false]);
13012     * // => 0
13013     *
13014     * // The `_.property` iteratee shorthand.
13015     * _.findIndex(users, 'active');
13016     * // => 2
13017     */
13018    function findIndex(array, predicate, fromIndex) {
13019      var length = array == null ? 0 : array.length;
13020      if (!length) {
13021        return -1;
13022      }
13023      var index = fromIndex == null ? 0 : toInteger(fromIndex);
13024      if (index < 0) {
13025        index = nativeMax(length + index, 0);
13026      }
13027      return baseFindIndex(array, getIteratee(predicate, 3), index);
13028    }
13029
13030    /**
13031     * This method is like `_.findIndex` except that it iterates over elements
13032     * of `collection` from right to left.
13033     *
13034     * @static
13035     * @memberOf _
13036     * @since 2.0.0
13037     * @category Array
13038     * @param {Array} array The array to inspect.
13039     * @param {Function} [predicate=_.identity] The function invoked per iteration.
13040     * @param {number} [fromIndex=array.length-1] The index to search from.
13041     * @returns {number} Returns the index of the found element, else `-1`.
13042     * @example
13043     *
13044     * var users = [
13045     *   { 'user': 'barney',  'active': true },
13046     *   { 'user': 'fred',    'active': false },
13047     *   { 'user': 'pebbles', 'active': false }
13048     * ];
13049     *
13050     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
13051     * // => 2
13052     *
13053     * // The `_.matches` iteratee shorthand.
13054     * _.findLastIndex(users, { 'user': 'barney', 'active': true });
13055     * // => 0
13056     *
13057     * // The `_.matchesProperty` iteratee shorthand.
13058     * _.findLastIndex(users, ['active', false]);
13059     * // => 2
13060     *
13061     * // The `_.property` iteratee shorthand.
13062     * _.findLastIndex(users, 'active');
13063     * // => 0
13064     */
13065    function findLastIndex(array, predicate, fromIndex) {
13066      var length = array == null ? 0 : array.length;
13067      if (!length) {
13068        return -1;
13069      }
13070      var index = length - 1;
13071      if (fromIndex !== undefined) {
13072        index = toInteger(fromIndex);
13073        index = fromIndex < 0
13074          ? nativeMax(length + index, 0)
13075          : nativeMin(index, length - 1);
13076      }
13077      return baseFindIndex(array, getIteratee(predicate, 3), index, true);
13078    }
13079
13080    /**
13081     * Flattens `array` a single level deep.
13082     *
13083     * @static
13084     * @memberOf _
13085     * @since 0.1.0
13086     * @category Array
13087     * @param {Array} array The array to flatten.
13088     * @returns {Array} Returns the new flattened array.
13089     * @example
13090     *
13091     * _.flatten([1, [2, [3, [4]], 5]]);
13092     * // => [1, 2, [3, [4]], 5]
13093     */
13094    function flatten(array) {
13095      var length = array == null ? 0 : array.length;
13096      return length ? baseFlatten(array, 1) : [];
13097    }
13098
13099    /**
13100     * Recursively flattens `array`.
13101     *
13102     * @static
13103     * @memberOf _
13104     * @since 3.0.0
13105     * @category Array
13106     * @param {Array} array The array to flatten.
13107     * @returns {Array} Returns the new flattened array.
13108     * @example
13109     *
13110     * _.flattenDeep([1, [2, [3, [4]], 5]]);
13111     * // => [1, 2, 3, 4, 5]
13112     */
13113    function flattenDeep(array) {
13114      var length = array == null ? 0 : array.length;
13115      return length ? baseFlatten(array, INFINITY) : [];
13116    }
13117
13118    /**
13119     * Recursively flatten `array` up to `depth` times.
13120     *
13121     * @static
13122     * @memberOf _
13123     * @since 4.4.0
13124     * @category Array
13125     * @param {Array} array The array to flatten.
13126     * @param {number} [depth=1] The maximum recursion depth.
13127     * @returns {Array} Returns the new flattened array.
13128     * @example
13129     *
13130     * var array = [1, [2, [3, [4]], 5]];
13131     *
13132     * _.flattenDepth(array, 1);
13133     * // => [1, 2, [3, [4]], 5]
13134     *
13135     * _.flattenDepth(array, 2);
13136     * // => [1, 2, 3, [4], 5]
13137     */
13138    function flattenDepth(array, depth) {
13139      var length = array == null ? 0 : array.length;
13140      if (!length) {
13141        return [];
13142      }
13143      depth = depth === undefined ? 1 : toInteger(depth);
13144      return baseFlatten(array, depth);
13145    }
13146
13147    /**
13148     * The inverse of `_.toPairs`; this method returns an object composed
13149     * from key-value `pairs`.
13150     *
13151     * @static
13152     * @memberOf _
13153     * @since 4.0.0
13154     * @category Array
13155     * @param {Array} pairs The key-value pairs.
13156     * @returns {Object} Returns the new object.
13157     * @example
13158     *
13159     * _.fromPairs([['a', 1], ['b', 2]]);
13160     * // => { 'a': 1, 'b': 2 }
13161     */
13162    function fromPairs(pairs) {
13163      var index = -1,
13164          length = pairs == null ? 0 : pairs.length,
13165          result = {};
13166
13167      while (++index < length) {
13168        var pair = pairs[index];
13169        result[pair[0]] = pair[1];
13170      }
13171      return result;
13172    }
13173
13174    /**
13175     * Gets the first element of `array`.
13176     *
13177     * @static
13178     * @memberOf _
13179     * @since 0.1.0
13180     * @alias first
13181     * @category Array
13182     * @param {Array} array The array to query.
13183     * @returns {*} Returns the first element of `array`.
13184     * @example
13185     *
13186     * _.head([1, 2, 3]);
13187     * // => 1
13188     *
13189     * _.head([]);
13190     * // => undefined
13191     */
13192    function head(array) {
13193      return (array && array.length) ? array[0] : undefined;
13194    }
13195
13196    /**
13197     * Gets the index at which the first occurrence of `value` is found in `array`
13198     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
13199     * for equality comparisons. If `fromIndex` is negative, it's used as the
13200     * offset from the end of `array`.
13201     *
13202     * @static
13203     * @memberOf _
13204     * @since 0.1.0
13205     * @category Array
13206     * @param {Array} array The array to inspect.
13207     * @param {*} value The value to search for.
13208     * @param {number} [fromIndex=0] The index to search from.
13209     * @returns {number} Returns the index of the matched value, else `-1`.
13210     * @example
13211     *
13212     * _.indexOf([1, 2, 1, 2], 2);
13213     * // => 1
13214     *
13215     * // Search from the `fromIndex`.
13216     * _.indexOf([1, 2, 1, 2], 2, 2);
13217     * // => 3
13218     */
13219    function indexOf(array, value, fromIndex) {
13220      var length = array == null ? 0 : array.length;
13221      if (!length) {
13222        return -1;
13223      }
13224      var index = fromIndex == null ? 0 : toInteger(fromIndex);
13225      if (index < 0) {
13226        index = nativeMax(length + index, 0);
13227      }
13228      return baseIndexOf(array, value, index);
13229    }
13230
13231    /**
13232     * Gets all but the last element of `array`.
13233     *
13234     * @static
13235     * @memberOf _
13236     * @since 0.1.0
13237     * @category Array
13238     * @param {Array} array The array to query.
13239     * @returns {Array} Returns the slice of `array`.
13240     * @example
13241     *
13242     * _.initial([1, 2, 3]);
13243     * // => [1, 2]
13244     */
13245    function initial(array) {
13246      var length = array == null ? 0 : array.length;
13247      return length ? baseSlice(array, 0, -1) : [];
13248    }
13249
13250    /**
13251     * Creates an array of unique values that are included in all given arrays
13252     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
13253     * for equality comparisons. The order and references of result values are
13254     * determined by the first array.
13255     *
13256     * @static
13257     * @memberOf _
13258     * @since 0.1.0
13259     * @category Array
13260     * @param {...Array} [arrays] The arrays to inspect.
13261     * @returns {Array} Returns the new array of intersecting values.
13262     * @example
13263     *
13264     * _.intersection([2, 1], [2, 3]);
13265     * // => [2]
13266     */
13267    var intersection = baseRest(function(arrays) {
13268      var mapped = arrayMap(arrays, castArrayLikeObject);
13269      return (mapped.length && mapped[0] === arrays[0])
13270        ? baseIntersection(mapped)
13271        : [];
13272    });
13273
13274    /**
13275     * This method is like `_.intersection` except that it accepts `iteratee`
13276     * which is invoked for each element of each `arrays` to generate the criterion
13277     * by which they're compared. The order and references of result values are
13278     * determined by the first array. The iteratee is invoked with one argument:
13279     * (value).
13280     *
13281     * @static
13282     * @memberOf _
13283     * @since 4.0.0
13284     * @category Array
13285     * @param {...Array} [arrays] The arrays to inspect.
13286     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13287     * @returns {Array} Returns the new array of intersecting values.
13288     * @example
13289     *
13290     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
13291     * // => [2.1]
13292     *
13293     * // The `_.property` iteratee shorthand.
13294     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
13295     * // => [{ 'x': 1 }]
13296     */
13297    var intersectionBy = baseRest(function(arrays) {
13298      var iteratee = last(arrays),
13299          mapped = arrayMap(arrays, castArrayLikeObject);
13300
13301      if (iteratee === last(mapped)) {
13302        iteratee = undefined;
13303      } else {
13304        mapped.pop();
13305      }
13306      return (mapped.length && mapped[0] === arrays[0])
13307        ? baseIntersection(mapped, getIteratee(iteratee, 2))
13308        : [];
13309    });
13310
13311    /**
13312     * This method is like `_.intersection` except that it accepts `comparator`
13313     * which is invoked to compare elements of `arrays`. The order and references
13314     * of result values are determined by the first array. The comparator is
13315     * invoked with two arguments: (arrVal, othVal).
13316     *
13317     * @static
13318     * @memberOf _
13319     * @since 4.0.0
13320     * @category Array
13321     * @param {...Array} [arrays] The arrays to inspect.
13322     * @param {Function} [comparator] The comparator invoked per element.
13323     * @returns {Array} Returns the new array of intersecting values.
13324     * @example
13325     *
13326     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
13327     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
13328     *
13329     * _.intersectionWith(objects, others, _.isEqual);
13330     * // => [{ 'x': 1, 'y': 2 }]
13331     */
13332    var intersectionWith = baseRest(function(arrays) {
13333      var comparator = last(arrays),
13334          mapped = arrayMap(arrays, castArrayLikeObject);
13335
13336      comparator = typeof comparator == 'function' ? comparator : undefined;
13337      if (comparator) {
13338        mapped.pop();
13339      }
13340      return (mapped.length && mapped[0] === arrays[0])
13341        ? baseIntersection(mapped, undefined, comparator)
13342        : [];
13343    });
13344
13345    /**
13346     * Converts all elements in `array` into a string separated by `separator`.
13347     *
13348     * @static
13349     * @memberOf _
13350     * @since 4.0.0
13351     * @category Array
13352     * @param {Array} array The array to convert.
13353     * @param {string} [separator=','] The element separator.
13354     * @returns {string} Returns the joined string.
13355     * @example
13356     *
13357     * _.join(['a', 'b', 'c'], '~');
13358     * // => 'a~b~c'
13359     */
13360    function join(array, separator) {
13361      return array == null ? '' : nativeJoin.call(array, separator);
13362    }
13363
13364    /**
13365     * Gets the last element of `array`.
13366     *
13367     * @static
13368     * @memberOf _
13369     * @since 0.1.0
13370     * @category Array
13371     * @param {Array} array The array to query.
13372     * @returns {*} Returns the last element of `array`.
13373     * @example
13374     *
13375     * _.last([1, 2, 3]);
13376     * // => 3
13377     */
13378    function last(array) {
13379      var length = array == null ? 0 : array.length;
13380      return length ? array[length - 1] : undefined;
13381    }
13382
13383    /**
13384     * This method is like `_.indexOf` except that it iterates over elements of
13385     * `array` from right to left.
13386     *
13387     * @static
13388     * @memberOf _
13389     * @since 0.1.0
13390     * @category Array
13391     * @param {Array} array The array to inspect.
13392     * @param {*} value The value to search for.
13393     * @param {number} [fromIndex=array.length-1] The index to search from.
13394     * @returns {number} Returns the index of the matched value, else `-1`.
13395     * @example
13396     *
13397     * _.lastIndexOf([1, 2, 1, 2], 2);
13398     * // => 3
13399     *
13400     * // Search from the `fromIndex`.
13401     * _.lastIndexOf([1, 2, 1, 2], 2, 2);
13402     * // => 1
13403     */
13404    function lastIndexOf(array, value, fromIndex) {
13405      var length = array == null ? 0 : array.length;
13406      if (!length) {
13407        return -1;
13408      }
13409      var index = length;
13410      if (fromIndex !== undefined) {
13411        index = toInteger(fromIndex);
13412        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
13413      }
13414      return value === value
13415        ? strictLastIndexOf(array, value, index)
13416        : baseFindIndex(array, baseIsNaN, index, true);
13417    }
13418
13419    /**
13420     * Gets the element at index `n` of `array`. If `n` is negative, the nth
13421     * element from the end is returned.
13422     *
13423     * @static
13424     * @memberOf _
13425     * @since 4.11.0
13426     * @category Array
13427     * @param {Array} array The array to query.
13428     * @param {number} [n=0] The index of the element to return.
13429     * @returns {*} Returns the nth element of `array`.
13430     * @example
13431     *
13432     * var array = ['a', 'b', 'c', 'd'];
13433     *
13434     * _.nth(array, 1);
13435     * // => 'b'
13436     *
13437     * _.nth(array, -2);
13438     * // => 'c';
13439     */
13440    function nth(array, n) {
13441      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
13442    }
13443
13444    /**
13445     * Removes all given values from `array` using
13446     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
13447     * for equality comparisons.
13448     *
13449     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
13450     * to remove elements from an array by predicate.
13451     *
13452     * @static
13453     * @memberOf _
13454     * @since 2.0.0
13455     * @category Array
13456     * @param {Array} array The array to modify.
13457     * @param {...*} [values] The values to remove.
13458     * @returns {Array} Returns `array`.
13459     * @example
13460     *
13461     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
13462     *
13463     * _.pull(array, 'a', 'c');
13464     * console.log(array);
13465     * // => ['b', 'b']
13466     */
13467    var pull = baseRest(pullAll);
13468
13469    /**
13470     * This method is like `_.pull` except that it accepts an array of values to remove.
13471     *
13472     * **Note:** Unlike `_.difference`, this method mutates `array`.
13473     *
13474     * @static
13475     * @memberOf _
13476     * @since 4.0.0
13477     * @category Array
13478     * @param {Array} array The array to modify.
13479     * @param {Array} values The values to remove.
13480     * @returns {Array} Returns `array`.
13481     * @example
13482     *
13483     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
13484     *
13485     * _.pullAll(array, ['a', 'c']);
13486     * console.log(array);
13487     * // => ['b', 'b']
13488     */
13489    function pullAll(array, values) {
13490      return (array && array.length && values && values.length)
13491        ? basePullAll(array, values)
13492        : array;
13493    }
13494
13495    /**
13496     * This method is like `_.pullAll` except that it accepts `iteratee` which is
13497     * invoked for each element of `array` and `values` to generate the criterion
13498     * by which they're compared. The iteratee is invoked with one argument: (value).
13499     *
13500     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
13501     *
13502     * @static
13503     * @memberOf _
13504     * @since 4.0.0
13505     * @category Array
13506     * @param {Array} array The array to modify.
13507     * @param {Array} values The values to remove.
13508     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13509     * @returns {Array} Returns `array`.
13510     * @example
13511     *
13512     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
13513     *
13514     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
13515     * console.log(array);
13516     * // => [{ 'x': 2 }]
13517     */
13518    function pullAllBy(array, values, iteratee) {
13519      return (array && array.length && values && values.length)
13520        ? basePullAll(array, values, getIteratee(iteratee, 2))
13521        : array;
13522    }
13523
13524    /**
13525     * This method is like `_.pullAll` except that it accepts `comparator` which
13526     * is invoked to compare elements of `array` to `values`. The comparator is
13527     * invoked with two arguments: (arrVal, othVal).
13528     *
13529     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
13530     *
13531     * @static
13532     * @memberOf _
13533     * @since 4.6.0
13534     * @category Array
13535     * @param {Array} array The array to modify.
13536     * @param {Array} values The values to remove.
13537     * @param {Function} [comparator] The comparator invoked per element.
13538     * @returns {Array} Returns `array`.
13539     * @example
13540     *
13541     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
13542     *
13543     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
13544     * console.log(array);
13545     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
13546     */
13547    function pullAllWith(array, values, comparator) {
13548      return (array && array.length && values && values.length)
13549        ? basePullAll(array, values, undefined, comparator)
13550        : array;
13551    }
13552
13553    /**
13554     * Removes elements from `array` corresponding to `indexes` and returns an
13555     * array of removed elements.
13556     *
13557     * **Note:** Unlike `_.at`, this method mutates `array`.
13558     *
13559     * @static
13560     * @memberOf _
13561     * @since 3.0.0
13562     * @category Array
13563     * @param {Array} array The array to modify.
13564     * @param {...(number|number[])} [indexes] The indexes of elements to remove.
13565     * @returns {Array} Returns the new array of removed elements.
13566     * @example
13567     *
13568     * var array = ['a', 'b', 'c', 'd'];
13569     * var pulled = _.pullAt(array, [1, 3]);
13570     *
13571     * console.log(array);
13572     * // => ['a', 'c']
13573     *
13574     * console.log(pulled);
13575     * // => ['b', 'd']
13576     */
13577    var pullAt = flatRest(function(array, indexes) {
13578      var length = array == null ? 0 : array.length,
13579          result = baseAt(array, indexes);
13580
13581      basePullAt(array, arrayMap(indexes, function(index) {
13582        return isIndex(index, length) ? +index : index;
13583      }).sort(compareAscending));
13584
13585      return result;
13586    });
13587
13588    /**
13589     * Removes all elements from `array` that `predicate` returns truthy for
13590     * and returns an array of the removed elements. The predicate is invoked
13591     * with three arguments: (value, index, array).
13592     *
13593     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
13594     * to pull elements from an array by value.
13595     *
13596     * @static
13597     * @memberOf _
13598     * @since 2.0.0
13599     * @category Array
13600     * @param {Array} array The array to modify.
13601     * @param {Function} [predicate=_.identity] The function invoked per iteration.
13602     * @returns {Array} Returns the new array of removed elements.
13603     * @example
13604     *
13605     * var array = [1, 2, 3, 4];
13606     * var evens = _.remove(array, function(n) {
13607     *   return n % 2 == 0;
13608     * });
13609     *
13610     * console.log(array);
13611     * // => [1, 3]
13612     *
13613     * console.log(evens);
13614     * // => [2, 4]
13615     */
13616    function remove(array, predicate) {
13617      var result = [];
13618      if (!(array && array.length)) {
13619        return result;
13620      }
13621      var index = -1,
13622          indexes = [],
13623          length = array.length;
13624
13625      predicate = getIteratee(predicate, 3);
13626      while (++index < length) {
13627        var value = array[index];
13628        if (predicate(value, index, array)) {
13629          result.push(value);
13630          indexes.push(index);
13631        }
13632      }
13633      basePullAt(array, indexes);
13634      return result;
13635    }
13636
13637    /**
13638     * Reverses `array` so that the first element becomes the last, the second
13639     * element becomes the second to last, and so on.
13640     *
13641     * **Note:** This method mutates `array` and is based on
13642     * [`Array#reverse`](https://mdn.io/Array/reverse).
13643     *
13644     * @static
13645     * @memberOf _
13646     * @since 4.0.0
13647     * @category Array
13648     * @param {Array} array The array to modify.
13649     * @returns {Array} Returns `array`.
13650     * @example
13651     *
13652     * var array = [1, 2, 3];
13653     *
13654     * _.reverse(array);
13655     * // => [3, 2, 1]
13656     *
13657     * console.log(array);
13658     * // => [3, 2, 1]
13659     */
13660    function reverse(array) {
13661      return array == null ? array : nativeReverse.call(array);
13662    }
13663
13664    /**
13665     * Creates a slice of `array` from `start` up to, but not including, `end`.
13666     *
13667     * **Note:** This method is used instead of
13668     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
13669     * returned.
13670     *
13671     * @static
13672     * @memberOf _
13673     * @since 3.0.0
13674     * @category Array
13675     * @param {Array} array The array to slice.
13676     * @param {number} [start=0] The start position.
13677     * @param {number} [end=array.length] The end position.
13678     * @returns {Array} Returns the slice of `array`.
13679     */
13680    function slice(array, start, end) {
13681      var length = array == null ? 0 : array.length;
13682      if (!length) {
13683        return [];
13684      }
13685      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
13686        start = 0;
13687        end = length;
13688      }
13689      else {
13690        start = start == null ? 0 : toInteger(start);
13691        end = end === undefined ? length : toInteger(end);
13692      }
13693      return baseSlice(array, start, end);
13694    }
13695
13696    /**
13697     * Uses a binary search to determine the lowest index at which `value`
13698     * should be inserted into `array` in order to maintain its sort order.
13699     *
13700     * @static
13701     * @memberOf _
13702     * @since 0.1.0
13703     * @category Array
13704     * @param {Array} array The sorted array to inspect.
13705     * @param {*} value The value to evaluate.
13706     * @returns {number} Returns the index at which `value` should be inserted
13707     *  into `array`.
13708     * @example
13709     *
13710     * _.sortedIndex([30, 50], 40);
13711     * // => 1
13712     */
13713    function sortedIndex(array, value) {
13714      return baseSortedIndex(array, value);
13715    }
13716
13717    /**
13718     * This method is like `_.sortedIndex` except that it accepts `iteratee`
13719     * which is invoked for `value` and each element of `array` to compute their
13720     * sort ranking. The iteratee is invoked with one argument: (value).
13721     *
13722     * @static
13723     * @memberOf _
13724     * @since 4.0.0
13725     * @category Array
13726     * @param {Array} array The sorted array to inspect.
13727     * @param {*} value The value to evaluate.
13728     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13729     * @returns {number} Returns the index at which `value` should be inserted
13730     *  into `array`.
13731     * @example
13732     *
13733     * var objects = [{ 'x': 4 }, { 'x': 5 }];
13734     *
13735     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
13736     * // => 0
13737     *
13738     * // The `_.property` iteratee shorthand.
13739     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
13740     * // => 0
13741     */
13742    function sortedIndexBy(array, value, iteratee) {
13743      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
13744    }
13745
13746    /**
13747     * This method is like `_.indexOf` except that it performs a binary
13748     * search on a sorted `array`.
13749     *
13750     * @static
13751     * @memberOf _
13752     * @since 4.0.0
13753     * @category Array
13754     * @param {Array} array The array to inspect.
13755     * @param {*} value The value to search for.
13756     * @returns {number} Returns the index of the matched value, else `-1`.
13757     * @example
13758     *
13759     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
13760     * // => 1
13761     */
13762    function sortedIndexOf(array, value) {
13763      var length = array == null ? 0 : array.length;
13764      if (length) {
13765        var index = baseSortedIndex(array, value);
13766        if (index < length && eq(array[index], value)) {
13767          return index;
13768        }
13769      }
13770      return -1;
13771    }
13772
13773    /**
13774     * This method is like `_.sortedIndex` except that it returns the highest
13775     * index at which `value` should be inserted into `array` in order to
13776     * maintain its sort order.
13777     *
13778     * @static
13779     * @memberOf _
13780     * @since 3.0.0
13781     * @category Array
13782     * @param {Array} array The sorted array to inspect.
13783     * @param {*} value The value to evaluate.
13784     * @returns {number} Returns the index at which `value` should be inserted
13785     *  into `array`.
13786     * @example
13787     *
13788     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
13789     * // => 4
13790     */
13791    function sortedLastIndex(array, value) {
13792      return baseSortedIndex(array, value, true);
13793    }
13794
13795    /**
13796     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
13797     * which is invoked for `value` and each element of `array` to compute their
13798     * sort ranking. The iteratee is invoked with one argument: (value).
13799     *
13800     * @static
13801     * @memberOf _
13802     * @since 4.0.0
13803     * @category Array
13804     * @param {Array} array The sorted array to inspect.
13805     * @param {*} value The value to evaluate.
13806     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
13807     * @returns {number} Returns the index at which `value` should be inserted
13808     *  into `array`.
13809     * @example
13810     *
13811     * var objects = [{ 'x': 4 }, { 'x': 5 }];
13812     *
13813     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
13814     * // => 1
13815     *
13816     * // The `_.property` iteratee shorthand.
13817     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
13818     * // => 1
13819     */
13820    function sortedLastIndexBy(array, value, iteratee) {
13821      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
13822    }
13823
13824    /**
13825     * This method is like `_.lastIndexOf` except that it performs a binary
13826     * search on a sorted `array`.
13827     *
13828     * @static
13829     * @memberOf _
13830     * @since 4.0.0
13831     * @category Array
13832     * @param {Array} array The array to inspect.
13833     * @param {*} value The value to search for.
13834     * @returns {number} Returns the index of the matched value, else `-1`.
13835     * @example
13836     *
13837     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
13838     * // => 3
13839     */
13840    function sortedLastIndexOf(array, value) {
13841      var length = array == null ? 0 : array.length;
13842      if (length) {
13843        var index = baseSortedIndex(array, value, true) - 1;
13844        if (eq(array[index], value)) {
13845          return index;
13846        }
13847      }
13848      return -1;
13849    }
13850
13851    /**
13852     * This method is like `_.uniq` except that it's designed and optimized
13853     * for sorted arrays.
13854     *
13855     * @static
13856     * @memberOf _
13857     * @since 4.0.0
13858     * @category Array
13859     * @param {Array} array The array to inspect.
13860     * @returns {Array} Returns the new duplicate free array.
13861     * @example
13862     *
13863     * _.sortedUniq([1, 1, 2]);
13864     * // => [1, 2]
13865     */
13866    function sortedUniq(array) {
13867      return (array && array.length)
13868        ? baseSortedUniq(array)
13869        : [];
13870    }
13871
13872    /**
13873     * This method is like `_.uniqBy` except that it's designed and optimized
13874     * for sorted arrays.
13875     *
13876     * @static
13877     * @memberOf _
13878     * @since 4.0.0
13879     * @category Array
13880     * @param {Array} array The array to inspect.
13881     * @param {Function} [iteratee] The iteratee invoked per element.
13882     * @returns {Array} Returns the new duplicate free array.
13883     * @example
13884     *
13885     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
13886     * // => [1.1, 2.3]
13887     */
13888    function sortedUniqBy(array, iteratee) {
13889      return (array && array.length)
13890        ? baseSortedUniq(array, getIteratee(iteratee, 2))
13891        : [];
13892    }
13893
13894    /**
13895     * Gets all but the first element of `array`.
13896     *
13897     * @static
13898     * @memberOf _
13899     * @since 4.0.0
13900     * @category Array
13901     * @param {Array} array The array to query.
13902     * @returns {Array} Returns the slice of `array`.
13903     * @example
13904     *
13905     * _.tail([1, 2, 3]);
13906     * // => [2, 3]
13907     */
13908    function tail(array) {
13909      var length = array == null ? 0 : array.length;
13910      return length ? baseSlice(array, 1, length) : [];
13911    }
13912
13913    /**
13914     * Creates a slice of `array` with `n` elements taken from the beginning.
13915     *
13916     * @static
13917     * @memberOf _
13918     * @since 0.1.0
13919     * @category Array
13920     * @param {Array} array The array to query.
13921     * @param {number} [n=1] The number of elements to take.
13922     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
13923     * @returns {Array} Returns the slice of `array`.
13924     * @example
13925     *
13926     * _.take([1, 2, 3]);
13927     * // => [1]
13928     *
13929     * _.take([1, 2, 3], 2);
13930     * // => [1, 2]
13931     *
13932     * _.take([1, 2, 3], 5);
13933     * // => [1, 2, 3]
13934     *
13935     * _.take([1, 2, 3], 0);
13936     * // => []
13937     */
13938    function take(array, n, guard) {
13939      if (!(array && array.length)) {
13940        return [];
13941      }
13942      n = (guard || n === undefined) ? 1 : toInteger(n);
13943      return baseSlice(array, 0, n < 0 ? 0 : n);
13944    }
13945
13946    /**
13947     * Creates a slice of `array` with `n` elements taken from the end.
13948     *
13949     * @static
13950     * @memberOf _
13951     * @since 3.0.0
13952     * @category Array
13953     * @param {Array} array The array to query.
13954     * @param {number} [n=1] The number of elements to take.
13955     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
13956     * @returns {Array} Returns the slice of `array`.
13957     * @example
13958     *
13959     * _.takeRight([1, 2, 3]);
13960     * // => [3]
13961     *
13962     * _.takeRight([1, 2, 3], 2);
13963     * // => [2, 3]
13964     *
13965     * _.takeRight([1, 2, 3], 5);
13966     * // => [1, 2, 3]
13967     *
13968     * _.takeRight([1, 2, 3], 0);
13969     * // => []
13970     */
13971    function takeRight(array, n, guard) {
13972      var length = array == null ? 0 : array.length;
13973      if (!length) {
13974        return [];
13975      }
13976      n = (guard || n === undefined) ? 1 : toInteger(n);
13977      n = length - n;
13978      return baseSlice(array, n < 0 ? 0 : n, length);
13979    }
13980
13981    /**
13982     * Creates a slice of `array` with elements taken from the end. Elements are
13983     * taken until `predicate` returns falsey. The predicate is invoked with
13984     * three arguments: (value, index, array).
13985     *
13986     * @static
13987     * @memberOf _
13988     * @since 3.0.0
13989     * @category Array
13990     * @param {Array} array The array to query.
13991     * @param {Function} [predicate=_.identity] The function invoked per iteration.
13992     * @returns {Array} Returns the slice of `array`.
13993     * @example
13994     *
13995     * var users = [
13996     *   { 'user': 'barney',  'active': true },
13997     *   { 'user': 'fred',    'active': false },
13998     *   { 'user': 'pebbles', 'active': false }
13999     * ];
14000     *
14001     * _.takeRightWhile(users, function(o) { return !o.active; });
14002     * // => objects for ['fred', 'pebbles']
14003     *
14004     * // The `_.matches` iteratee shorthand.
14005     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
14006     * // => objects for ['pebbles']
14007     *
14008     * // The `_.matchesProperty` iteratee shorthand.
14009     * _.takeRightWhile(users, ['active', false]);
14010     * // => objects for ['fred', 'pebbles']
14011     *
14012     * // The `_.property` iteratee shorthand.
14013     * _.takeRightWhile(users, 'active');
14014     * // => []
14015     */
14016    function takeRightWhile(array, predicate) {
14017      return (array && array.length)
14018        ? baseWhile(array, getIteratee(predicate, 3), false, true)
14019        : [];
14020    }
14021
14022    /**
14023     * Creates a slice of `array` with elements taken from the beginning. Elements
14024     * are taken until `predicate` returns falsey. The predicate is invoked with
14025     * three arguments: (value, index, array).
14026     *
14027     * @static
14028     * @memberOf _
14029     * @since 3.0.0
14030     * @category Array
14031     * @param {Array} array The array to query.
14032     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14033     * @returns {Array} Returns the slice of `array`.
14034     * @example
14035     *
14036     * var users = [
14037     *   { 'user': 'barney',  'active': false },
14038     *   { 'user': 'fred',    'active': false },
14039     *   { 'user': 'pebbles', 'active': true }
14040     * ];
14041     *
14042     * _.takeWhile(users, function(o) { return !o.active; });
14043     * // => objects for ['barney', 'fred']
14044     *
14045     * // The `_.matches` iteratee shorthand.
14046     * _.takeWhile(users, { 'user': 'barney', 'active': false });
14047     * // => objects for ['barney']
14048     *
14049     * // The `_.matchesProperty` iteratee shorthand.
14050     * _.takeWhile(users, ['active', false]);
14051     * // => objects for ['barney', 'fred']
14052     *
14053     * // The `_.property` iteratee shorthand.
14054     * _.takeWhile(users, 'active');
14055     * // => []
14056     */
14057    function takeWhile(array, predicate) {
14058      return (array && array.length)
14059        ? baseWhile(array, getIteratee(predicate, 3))
14060        : [];
14061    }
14062
14063    /**
14064     * Creates an array of unique values, in order, from all given arrays using
14065     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14066     * for equality comparisons.
14067     *
14068     * @static
14069     * @memberOf _
14070     * @since 0.1.0
14071     * @category Array
14072     * @param {...Array} [arrays] The arrays to inspect.
14073     * @returns {Array} Returns the new array of combined values.
14074     * @example
14075     *
14076     * _.union([2], [1, 2]);
14077     * // => [2, 1]
14078     */
14079    var union = baseRest(function(arrays) {
14080      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
14081    });
14082
14083    /**
14084     * This method is like `_.union` except that it accepts `iteratee` which is
14085     * invoked for each element of each `arrays` to generate the criterion by
14086     * which uniqueness is computed. Result values are chosen from the first
14087     * array in which the value occurs. The iteratee is invoked with one argument:
14088     * (value).
14089     *
14090     * @static
14091     * @memberOf _
14092     * @since 4.0.0
14093     * @category Array
14094     * @param {...Array} [arrays] The arrays to inspect.
14095     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
14096     * @returns {Array} Returns the new array of combined values.
14097     * @example
14098     *
14099     * _.unionBy([2.1], [1.2, 2.3], Math.floor);
14100     * // => [2.1, 1.2]
14101     *
14102     * // The `_.property` iteratee shorthand.
14103     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
14104     * // => [{ 'x': 1 }, { 'x': 2 }]
14105     */
14106    var unionBy = baseRest(function(arrays) {
14107      var iteratee = last(arrays);
14108      if (isArrayLikeObject(iteratee)) {
14109        iteratee = undefined;
14110      }
14111      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
14112    });
14113
14114    /**
14115     * This method is like `_.union` except that it accepts `comparator` which
14116     * is invoked to compare elements of `arrays`. Result values are chosen from
14117     * the first array in which the value occurs. The comparator is invoked
14118     * with two arguments: (arrVal, othVal).
14119     *
14120     * @static
14121     * @memberOf _
14122     * @since 4.0.0
14123     * @category Array
14124     * @param {...Array} [arrays] The arrays to inspect.
14125     * @param {Function} [comparator] The comparator invoked per element.
14126     * @returns {Array} Returns the new array of combined values.
14127     * @example
14128     *
14129     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
14130     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
14131     *
14132     * _.unionWith(objects, others, _.isEqual);
14133     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
14134     */
14135    var unionWith = baseRest(function(arrays) {
14136      var comparator = last(arrays);
14137      comparator = typeof comparator == 'function' ? comparator : undefined;
14138      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
14139    });
14140
14141    /**
14142     * Creates a duplicate-free version of an array, using
14143     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14144     * for equality comparisons, in which only the first occurrence of each element
14145     * is kept. The order of result values is determined by the order they occur
14146     * in the array.
14147     *
14148     * @static
14149     * @memberOf _
14150     * @since 0.1.0
14151     * @category Array
14152     * @param {Array} array The array to inspect.
14153     * @returns {Array} Returns the new duplicate free array.
14154     * @example
14155     *
14156     * _.uniq([2, 1, 2]);
14157     * // => [2, 1]
14158     */
14159    function uniq(array) {
14160      return (array && array.length) ? baseUniq(array) : [];
14161    }
14162
14163    /**
14164     * This method is like `_.uniq` except that it accepts `iteratee` which is
14165     * invoked for each element in `array` to generate the criterion by which
14166     * uniqueness is computed. The order of result values is determined by the
14167     * order they occur in the array. The iteratee is invoked with one argument:
14168     * (value).
14169     *
14170     * @static
14171     * @memberOf _
14172     * @since 4.0.0
14173     * @category Array
14174     * @param {Array} array The array to inspect.
14175     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
14176     * @returns {Array} Returns the new duplicate free array.
14177     * @example
14178     *
14179     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
14180     * // => [2.1, 1.2]
14181     *
14182     * // The `_.property` iteratee shorthand.
14183     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
14184     * // => [{ 'x': 1 }, { 'x': 2 }]
14185     */
14186    function uniqBy(array, iteratee) {
14187      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
14188    }
14189
14190    /**
14191     * This method is like `_.uniq` except that it accepts `comparator` which
14192     * is invoked to compare elements of `array`. The order of result values is
14193     * determined by the order they occur in the array.The comparator is invoked
14194     * with two arguments: (arrVal, othVal).
14195     *
14196     * @static
14197     * @memberOf _
14198     * @since 4.0.0
14199     * @category Array
14200     * @param {Array} array The array to inspect.
14201     * @param {Function} [comparator] The comparator invoked per element.
14202     * @returns {Array} Returns the new duplicate free array.
14203     * @example
14204     *
14205     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
14206     *
14207     * _.uniqWith(objects, _.isEqual);
14208     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
14209     */
14210    function uniqWith(array, comparator) {
14211      comparator = typeof comparator == 'function' ? comparator : undefined;
14212      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
14213    }
14214
14215    /**
14216     * This method is like `_.zip` except that it accepts an array of grouped
14217     * elements and creates an array regrouping the elements to their pre-zip
14218     * configuration.
14219     *
14220     * @static
14221     * @memberOf _
14222     * @since 1.2.0
14223     * @category Array
14224     * @param {Array} array The array of grouped elements to process.
14225     * @returns {Array} Returns the new array of regrouped elements.
14226     * @example
14227     *
14228     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
14229     * // => [['a', 1, true], ['b', 2, false]]
14230     *
14231     * _.unzip(zipped);
14232     * // => [['a', 'b'], [1, 2], [true, false]]
14233     */
14234    function unzip(array) {
14235      if (!(array && array.length)) {
14236        return [];
14237      }
14238      var length = 0;
14239      array = arrayFilter(array, function(group) {
14240        if (isArrayLikeObject(group)) {
14241          length = nativeMax(group.length, length);
14242          return true;
14243        }
14244      });
14245      return baseTimes(length, function(index) {
14246        return arrayMap(array, baseProperty(index));
14247      });
14248    }
14249
14250    /**
14251     * This method is like `_.unzip` except that it accepts `iteratee` to specify
14252     * how regrouped values should be combined. The iteratee is invoked with the
14253     * elements of each group: (...group).
14254     *
14255     * @static
14256     * @memberOf _
14257     * @since 3.8.0
14258     * @category Array
14259     * @param {Array} array The array of grouped elements to process.
14260     * @param {Function} [iteratee=_.identity] The function to combine
14261     *  regrouped values.
14262     * @returns {Array} Returns the new array of regrouped elements.
14263     * @example
14264     *
14265     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
14266     * // => [[1, 10, 100], [2, 20, 200]]
14267     *
14268     * _.unzipWith(zipped, _.add);
14269     * // => [3, 30, 300]
14270     */
14271    function unzipWith(array, iteratee) {
14272      if (!(array && array.length)) {
14273        return [];
14274      }
14275      var result = unzip(array);
14276      if (iteratee == null) {
14277        return result;
14278      }
14279      return arrayMap(result, function(group) {
14280        return apply(iteratee, undefined, group);
14281      });
14282    }
14283
14284    /**
14285     * Creates an array excluding all given values using
14286     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14287     * for equality comparisons.
14288     *
14289     * **Note:** Unlike `_.pull`, this method returns a new array.
14290     *
14291     * @static
14292     * @memberOf _
14293     * @since 0.1.0
14294     * @category Array
14295     * @param {Array} array The array to inspect.
14296     * @param {...*} [values] The values to exclude.
14297     * @returns {Array} Returns the new array of filtered values.
14298     * @see _.difference, _.xor
14299     * @example
14300     *
14301     * _.without([2, 1, 2, 3], 1, 2);
14302     * // => [3]
14303     */
14304    var without = baseRest(function(array, values) {
14305      return isArrayLikeObject(array)
14306        ? baseDifference(array, values)
14307        : [];
14308    });
14309
14310    /**
14311     * Creates an array of unique values that is the
14312     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
14313     * of the given arrays. The order of result values is determined by the order
14314     * they occur in the arrays.
14315     *
14316     * @static
14317     * @memberOf _
14318     * @since 2.4.0
14319     * @category Array
14320     * @param {...Array} [arrays] The arrays to inspect.
14321     * @returns {Array} Returns the new array of filtered values.
14322     * @see _.difference, _.without
14323     * @example
14324     *
14325     * _.xor([2, 1], [2, 3]);
14326     * // => [1, 3]
14327     */
14328    var xor = baseRest(function(arrays) {
14329      return baseXor(arrayFilter(arrays, isArrayLikeObject));
14330    });
14331
14332    /**
14333     * This method is like `_.xor` except that it accepts `iteratee` which is
14334     * invoked for each element of each `arrays` to generate the criterion by
14335     * which by which they're compared. The order of result values is determined
14336     * by the order they occur in the arrays. The iteratee is invoked with one
14337     * argument: (value).
14338     *
14339     * @static
14340     * @memberOf _
14341     * @since 4.0.0
14342     * @category Array
14343     * @param {...Array} [arrays] The arrays to inspect.
14344     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
14345     * @returns {Array} Returns the new array of filtered values.
14346     * @example
14347     *
14348     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
14349     * // => [1.2, 3.4]
14350     *
14351     * // The `_.property` iteratee shorthand.
14352     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
14353     * // => [{ 'x': 2 }]
14354     */
14355    var xorBy = baseRest(function(arrays) {
14356      var iteratee = last(arrays);
14357      if (isArrayLikeObject(iteratee)) {
14358        iteratee = undefined;
14359      }
14360      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
14361    });
14362
14363    /**
14364     * This method is like `_.xor` except that it accepts `comparator` which is
14365     * invoked to compare elements of `arrays`. The order of result values is
14366     * determined by the order they occur in the arrays. The comparator is invoked
14367     * with two arguments: (arrVal, othVal).
14368     *
14369     * @static
14370     * @memberOf _
14371     * @since 4.0.0
14372     * @category Array
14373     * @param {...Array} [arrays] The arrays to inspect.
14374     * @param {Function} [comparator] The comparator invoked per element.
14375     * @returns {Array} Returns the new array of filtered values.
14376     * @example
14377     *
14378     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
14379     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
14380     *
14381     * _.xorWith(objects, others, _.isEqual);
14382     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
14383     */
14384    var xorWith = baseRest(function(arrays) {
14385      var comparator = last(arrays);
14386      comparator = typeof comparator == 'function' ? comparator : undefined;
14387      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
14388    });
14389
14390    /**
14391     * Creates an array of grouped elements, the first of which contains the
14392     * first elements of the given arrays, the second of which contains the
14393     * second elements of the given arrays, and so on.
14394     *
14395     * @static
14396     * @memberOf _
14397     * @since 0.1.0
14398     * @category Array
14399     * @param {...Array} [arrays] The arrays to process.
14400     * @returns {Array} Returns the new array of grouped elements.
14401     * @example
14402     *
14403     * _.zip(['a', 'b'], [1, 2], [true, false]);
14404     * // => [['a', 1, true], ['b', 2, false]]
14405     */
14406    var zip = baseRest(unzip);
14407
14408    /**
14409     * This method is like `_.fromPairs` except that it accepts two arrays,
14410     * one of property identifiers and one of corresponding values.
14411     *
14412     * @static
14413     * @memberOf _
14414     * @since 0.4.0
14415     * @category Array
14416     * @param {Array} [props=[]] The property identifiers.
14417     * @param {Array} [values=[]] The property values.
14418     * @returns {Object} Returns the new object.
14419     * @example
14420     *
14421     * _.zipObject(['a', 'b'], [1, 2]);
14422     * // => { 'a': 1, 'b': 2 }
14423     */
14424    function zipObject(props, values) {
14425      return baseZipObject(props || [], values || [], assignValue);
14426    }
14427
14428    /**
14429     * This method is like `_.zipObject` except that it supports property paths.
14430     *
14431     * @static
14432     * @memberOf _
14433     * @since 4.1.0
14434     * @category Array
14435     * @param {Array} [props=[]] The property identifiers.
14436     * @param {Array} [values=[]] The property values.
14437     * @returns {Object} Returns the new object.
14438     * @example
14439     *
14440     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
14441     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
14442     */
14443    function zipObjectDeep(props, values) {
14444      return baseZipObject(props || [], values || [], baseSet);
14445    }
14446
14447    /**
14448     * This method is like `_.zip` except that it accepts `iteratee` to specify
14449     * how grouped values should be combined. The iteratee is invoked with the
14450     * elements of each group: (...group).
14451     *
14452     * @static
14453     * @memberOf _
14454     * @since 3.8.0
14455     * @category Array
14456     * @param {...Array} [arrays] The arrays to process.
14457     * @param {Function} [iteratee=_.identity] The function to combine
14458     *  grouped values.
14459     * @returns {Array} Returns the new array of grouped elements.
14460     * @example
14461     *
14462     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
14463     *   return a + b + c;
14464     * });
14465     * // => [111, 222]
14466     */
14467    var zipWith = baseRest(function(arrays) {
14468      var length = arrays.length,
14469          iteratee = length > 1 ? arrays[length - 1] : undefined;
14470
14471      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
14472      return unzipWith(arrays, iteratee);
14473    });
14474
14475    /*------------------------------------------------------------------------*/
14476
14477    /**
14478     * Creates a `lodash` wrapper instance that wraps `value` with explicit method
14479     * chain sequences enabled. The result of such sequences must be unwrapped
14480     * with `_#value`.
14481     *
14482     * @static
14483     * @memberOf _
14484     * @since 1.3.0
14485     * @category Seq
14486     * @param {*} value The value to wrap.
14487     * @returns {Object} Returns the new `lodash` wrapper instance.
14488     * @example
14489     *
14490     * var users = [
14491     *   { 'user': 'barney',  'age': 36 },
14492     *   { 'user': 'fred',    'age': 40 },
14493     *   { 'user': 'pebbles', 'age': 1 }
14494     * ];
14495     *
14496     * var youngest = _
14497     *   .chain(users)
14498     *   .sortBy('age')
14499     *   .map(function(o) {
14500     *     return o.user + ' is ' + o.age;
14501     *   })
14502     *   .head()
14503     *   .value();
14504     * // => 'pebbles is 1'
14505     */
14506    function chain(value) {
14507      var result = lodash(value);
14508      result.__chain__ = true;
14509      return result;
14510    }
14511
14512    /**
14513     * This method invokes `interceptor` and returns `value`. The interceptor
14514     * is invoked with one argument; (value). The purpose of this method is to
14515     * "tap into" a method chain sequence in order to modify intermediate results.
14516     *
14517     * @static
14518     * @memberOf _
14519     * @since 0.1.0
14520     * @category Seq
14521     * @param {*} value The value to provide to `interceptor`.
14522     * @param {Function} interceptor The function to invoke.
14523     * @returns {*} Returns `value`.
14524     * @example
14525     *
14526     * _([1, 2, 3])
14527     *  .tap(function(array) {
14528     *    // Mutate input array.
14529     *    array.pop();
14530     *  })
14531     *  .reverse()
14532     *  .value();
14533     * // => [2, 1]
14534     */
14535    function tap(value, interceptor) {
14536      interceptor(value);
14537      return value;
14538    }
14539
14540    /**
14541     * This method is like `_.tap` except that it returns the result of `interceptor`.
14542     * The purpose of this method is to "pass thru" values replacing intermediate
14543     * results in a method chain sequence.
14544     *
14545     * @static
14546     * @memberOf _
14547     * @since 3.0.0
14548     * @category Seq
14549     * @param {*} value The value to provide to `interceptor`.
14550     * @param {Function} interceptor The function to invoke.
14551     * @returns {*} Returns the result of `interceptor`.
14552     * @example
14553     *
14554     * _('  abc  ')
14555     *  .chain()
14556     *  .trim()
14557     *  .thru(function(value) {
14558     *    return [value];
14559     *  })
14560     *  .value();
14561     * // => ['abc']
14562     */
14563    function thru(value, interceptor) {
14564      return interceptor(value);
14565    }
14566
14567    /**
14568     * This method is the wrapper version of `_.at`.
14569     *
14570     * @name at
14571     * @memberOf _
14572     * @since 1.0.0
14573     * @category Seq
14574     * @param {...(string|string[])} [paths] The property paths to pick.
14575     * @returns {Object} Returns the new `lodash` wrapper instance.
14576     * @example
14577     *
14578     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
14579     *
14580     * _(object).at(['a[0].b.c', 'a[1]']).value();
14581     * // => [3, 4]
14582     */
14583    var wrapperAt = flatRest(function(paths) {
14584      var length = paths.length,
14585          start = length ? paths[0] : 0,
14586          value = this.__wrapped__,
14587          interceptor = function(object) { return baseAt(object, paths); };
14588
14589      if (length > 1 || this.__actions__.length ||
14590          !(value instanceof LazyWrapper) || !isIndex(start)) {
14591        return this.thru(interceptor);
14592      }
14593      value = value.slice(start, +start + (length ? 1 : 0));
14594      value.__actions__.push({
14595        'func': thru,
14596        'args': [interceptor],
14597        'thisArg': undefined
14598      });
14599      return new LodashWrapper(value, this.__chain__).thru(function(array) {
14600        if (length && !array.length) {
14601          array.push(undefined);
14602        }
14603        return array;
14604      });
14605    });
14606
14607    /**
14608     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
14609     *
14610     * @name chain
14611     * @memberOf _
14612     * @since 0.1.0
14613     * @category Seq
14614     * @returns {Object} Returns the new `lodash` wrapper instance.
14615     * @example
14616     *
14617     * var users = [
14618     *   { 'user': 'barney', 'age': 36 },
14619     *   { 'user': 'fred',   'age': 40 }
14620     * ];
14621     *
14622     * // A sequence without explicit chaining.
14623     * _(users).head();
14624     * // => { 'user': 'barney', 'age': 36 }
14625     *
14626     * // A sequence with explicit chaining.
14627     * _(users)
14628     *   .chain()
14629     *   .head()
14630     *   .pick('user')
14631     *   .value();
14632     * // => { 'user': 'barney' }
14633     */
14634    function wrapperChain() {
14635      return chain(this);
14636    }
14637
14638    /**
14639     * Executes the chain sequence and returns the wrapped result.
14640     *
14641     * @name commit
14642     * @memberOf _
14643     * @since 3.2.0
14644     * @category Seq
14645     * @returns {Object} Returns the new `lodash` wrapper instance.
14646     * @example
14647     *
14648     * var array = [1, 2];
14649     * var wrapped = _(array).push(3);
14650     *
14651     * console.log(array);
14652     * // => [1, 2]
14653     *
14654     * wrapped = wrapped.commit();
14655     * console.log(array);
14656     * // => [1, 2, 3]
14657     *
14658     * wrapped.last();
14659     * // => 3
14660     *
14661     * console.log(array);
14662     * // => [1, 2, 3]
14663     */
14664    function wrapperCommit() {
14665      return new LodashWrapper(this.value(), this.__chain__);
14666    }
14667
14668    /**
14669     * Gets the next value on a wrapped object following the
14670     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
14671     *
14672     * @name next
14673     * @memberOf _
14674     * @since 4.0.0
14675     * @category Seq
14676     * @returns {Object} Returns the next iterator value.
14677     * @example
14678     *
14679     * var wrapped = _([1, 2]);
14680     *
14681     * wrapped.next();
14682     * // => { 'done': false, 'value': 1 }
14683     *
14684     * wrapped.next();
14685     * // => { 'done': false, 'value': 2 }
14686     *
14687     * wrapped.next();
14688     * // => { 'done': true, 'value': undefined }
14689     */
14690    function wrapperNext() {
14691      if (this.__values__ === undefined) {
14692        this.__values__ = toArray(this.value());
14693      }
14694      var done = this.__index__ >= this.__values__.length,
14695          value = done ? undefined : this.__values__[this.__index__++];
14696
14697      return { 'done': done, 'value': value };
14698    }
14699
14700    /**
14701     * Enables the wrapper to be iterable.
14702     *
14703     * @name Symbol.iterator
14704     * @memberOf _
14705     * @since 4.0.0
14706     * @category Seq
14707     * @returns {Object} Returns the wrapper object.
14708     * @example
14709     *
14710     * var wrapped = _([1, 2]);
14711     *
14712     * wrapped[Symbol.iterator]() === wrapped;
14713     * // => true
14714     *
14715     * Array.from(wrapped);
14716     * // => [1, 2]
14717     */
14718    function wrapperToIterator() {
14719      return this;
14720    }
14721
14722    /**
14723     * Creates a clone of the chain sequence planting `value` as the wrapped value.
14724     *
14725     * @name plant
14726     * @memberOf _
14727     * @since 3.2.0
14728     * @category Seq
14729     * @param {*} value The value to plant.
14730     * @returns {Object} Returns the new `lodash` wrapper instance.
14731     * @example
14732     *
14733     * function square(n) {
14734     *   return n * n;
14735     * }
14736     *
14737     * var wrapped = _([1, 2]).map(square);
14738     * var other = wrapped.plant([3, 4]);
14739     *
14740     * other.value();
14741     * // => [9, 16]
14742     *
14743     * wrapped.value();
14744     * // => [1, 4]
14745     */
14746    function wrapperPlant(value) {
14747      var result,
14748          parent = this;
14749
14750      while (parent instanceof baseLodash) {
14751        var clone = wrapperClone(parent);
14752        clone.__index__ = 0;
14753        clone.__values__ = undefined;
14754        if (result) {
14755          previous.__wrapped__ = clone;
14756        } else {
14757          result = clone;
14758        }
14759        var previous = clone;
14760        parent = parent.__wrapped__;
14761      }
14762      previous.__wrapped__ = value;
14763      return result;
14764    }
14765
14766    /**
14767     * This method is the wrapper version of `_.reverse`.
14768     *
14769     * **Note:** This method mutates the wrapped array.
14770     *
14771     * @name reverse
14772     * @memberOf _
14773     * @since 0.1.0
14774     * @category Seq
14775     * @returns {Object} Returns the new `lodash` wrapper instance.
14776     * @example
14777     *
14778     * var array = [1, 2, 3];
14779     *
14780     * _(array).reverse().value()
14781     * // => [3, 2, 1]
14782     *
14783     * console.log(array);
14784     * // => [3, 2, 1]
14785     */
14786    function wrapperReverse() {
14787      var value = this.__wrapped__;
14788      if (value instanceof LazyWrapper) {
14789        var wrapped = value;
14790        if (this.__actions__.length) {
14791          wrapped = new LazyWrapper(this);
14792        }
14793        wrapped = wrapped.reverse();
14794        wrapped.__actions__.push({
14795          'func': thru,
14796          'args': [reverse],
14797          'thisArg': undefined
14798        });
14799        return new LodashWrapper(wrapped, this.__chain__);
14800      }
14801      return this.thru(reverse);
14802    }
14803
14804    /**
14805     * Executes the chain sequence to resolve the unwrapped value.
14806     *
14807     * @name value
14808     * @memberOf _
14809     * @since 0.1.0
14810     * @alias toJSON, valueOf
14811     * @category Seq
14812     * @returns {*} Returns the resolved unwrapped value.
14813     * @example
14814     *
14815     * _([1, 2, 3]).value();
14816     * // => [1, 2, 3]
14817     */
14818    function wrapperValue() {
14819      return baseWrapperValue(this.__wrapped__, this.__actions__);
14820    }
14821
14822    /*------------------------------------------------------------------------*/
14823
14824    /**
14825     * Creates an object composed of keys generated from the results of running
14826     * each element of `collection` thru `iteratee`. The corresponding value of
14827     * each key is the number of times the key was returned by `iteratee`. The
14828     * iteratee is invoked with one argument: (value).
14829     *
14830     * @static
14831     * @memberOf _
14832     * @since 0.5.0
14833     * @category Collection
14834     * @param {Array|Object} collection The collection to iterate over.
14835     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
14836     * @returns {Object} Returns the composed aggregate object.
14837     * @example
14838     *
14839     * _.countBy([6.1, 4.2, 6.3], Math.floor);
14840     * // => { '4': 1, '6': 2 }
14841     *
14842     * // The `_.property` iteratee shorthand.
14843     * _.countBy(['one', 'two', 'three'], 'length');
14844     * // => { '3': 2, '5': 1 }
14845     */
14846    var countBy = createAggregator(function(result, value, key) {
14847      if (hasOwnProperty.call(result, key)) {
14848        ++result[key];
14849      } else {
14850        baseAssignValue(result, key, 1);
14851      }
14852    });
14853
14854    /**
14855     * Checks if `predicate` returns truthy for **all** elements of `collection`.
14856     * Iteration is stopped once `predicate` returns falsey. The predicate is
14857     * invoked with three arguments: (value, index|key, collection).
14858     *
14859     * **Note:** This method returns `true` for
14860     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
14861     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
14862     * elements of empty collections.
14863     *
14864     * @static
14865     * @memberOf _
14866     * @since 0.1.0
14867     * @category Collection
14868     * @param {Array|Object} collection The collection to iterate over.
14869     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14870     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
14871     * @returns {boolean} Returns `true` if all elements pass the predicate check,
14872     *  else `false`.
14873     * @example
14874     *
14875     * _.every([true, 1, null, 'yes'], Boolean);
14876     * // => false
14877     *
14878     * var users = [
14879     *   { 'user': 'barney', 'age': 36, 'active': false },
14880     *   { 'user': 'fred',   'age': 40, 'active': false }
14881     * ];
14882     *
14883     * // The `_.matches` iteratee shorthand.
14884     * _.every(users, { 'user': 'barney', 'active': false });
14885     * // => false
14886     *
14887     * // The `_.matchesProperty` iteratee shorthand.
14888     * _.every(users, ['active', false]);
14889     * // => true
14890     *
14891     * // The `_.property` iteratee shorthand.
14892     * _.every(users, 'active');
14893     * // => false
14894     */
14895    function every(collection, predicate, guard) {
14896      var func = isArray(collection) ? arrayEvery : baseEvery;
14897      if (guard && isIterateeCall(collection, predicate, guard)) {
14898        predicate = undefined;
14899      }
14900      return func(collection, getIteratee(predicate, 3));
14901    }
14902
14903    /**
14904     * Iterates over elements of `collection`, returning an array of all elements
14905     * `predicate` returns truthy for. The predicate is invoked with three
14906     * arguments: (value, index|key, collection).
14907     *
14908     * **Note:** Unlike `_.remove`, this method returns a new array.
14909     *
14910     * @static
14911     * @memberOf _
14912     * @since 0.1.0
14913     * @category Collection
14914     * @param {Array|Object} collection The collection to iterate over.
14915     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14916     * @returns {Array} Returns the new filtered array.
14917     * @see _.reject
14918     * @example
14919     *
14920     * var users = [
14921     *   { 'user': 'barney', 'age': 36, 'active': true },
14922     *   { 'user': 'fred',   'age': 40, 'active': false }
14923     * ];
14924     *
14925     * _.filter(users, function(o) { return !o.active; });
14926     * // => objects for ['fred']
14927     *
14928     * // The `_.matches` iteratee shorthand.
14929     * _.filter(users, { 'age': 36, 'active': true });
14930     * // => objects for ['barney']
14931     *
14932     * // The `_.matchesProperty` iteratee shorthand.
14933     * _.filter(users, ['active', false]);
14934     * // => objects for ['fred']
14935     *
14936     * // The `_.property` iteratee shorthand.
14937     * _.filter(users, 'active');
14938     * // => objects for ['barney']
14939     *
14940     * // Combining several predicates using `_.overEvery` or `_.overSome`.
14941     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
14942     * // => objects for ['fred', 'barney']
14943     */
14944    function filter(collection, predicate) {
14945      var func = isArray(collection) ? arrayFilter : baseFilter;
14946      return func(collection, getIteratee(predicate, 3));
14947    }
14948
14949    /**
14950     * Iterates over elements of `collection`, returning the first element
14951     * `predicate` returns truthy for. The predicate is invoked with three
14952     * arguments: (value, index|key, collection).
14953     *
14954     * @static
14955     * @memberOf _
14956     * @since 0.1.0
14957     * @category Collection
14958     * @param {Array|Object} collection The collection to inspect.
14959     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14960     * @param {number} [fromIndex=0] The index to search from.
14961     * @returns {*} Returns the matched element, else `undefined`.
14962     * @example
14963     *
14964     * var users = [
14965     *   { 'user': 'barney',  'age': 36, 'active': true },
14966     *   { 'user': 'fred',    'age': 40, 'active': false },
14967     *   { 'user': 'pebbles', 'age': 1,  'active': true }
14968     * ];
14969     *
14970     * _.find(users, function(o) { return o.age < 40; });
14971     * // => object for 'barney'
14972     *
14973     * // The `_.matches` iteratee shorthand.
14974     * _.find(users, { 'age': 1, 'active': true });
14975     * // => object for 'pebbles'
14976     *
14977     * // The `_.matchesProperty` iteratee shorthand.
14978     * _.find(users, ['active', false]);
14979     * // => object for 'fred'
14980     *
14981     * // The `_.property` iteratee shorthand.
14982     * _.find(users, 'active');
14983     * // => object for 'barney'
14984     */
14985    var find = createFind(findIndex);
14986
14987    /**
14988     * This method is like `_.find` except that it iterates over elements of
14989     * `collection` from right to left.
14990     *
14991     * @static
14992     * @memberOf _
14993     * @since 2.0.0
14994     * @category Collection
14995     * @param {Array|Object} collection The collection to inspect.
14996     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14997     * @param {number} [fromIndex=collection.length-1] The index to search from.
14998     * @returns {*} Returns the matched element, else `undefined`.
14999     * @example
15000     *
15001     * _.findLast([1, 2, 3, 4], function(n) {
15002     *   return n % 2 == 1;
15003     * });
15004     * // => 3
15005     */
15006    var findLast = createFind(findLastIndex);
15007
15008    /**
15009     * Creates a flattened array of values by running each element in `collection`
15010     * thru `iteratee` and flattening the mapped results. The iteratee is invoked
15011     * with three arguments: (value, index|key, collection).
15012     *
15013     * @static
15014     * @memberOf _
15015     * @since 4.0.0
15016     * @category Collection
15017     * @param {Array|Object} collection The collection to iterate over.
15018     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15019     * @returns {Array} Returns the new flattened array.
15020     * @example
15021     *
15022     * function duplicate(n) {
15023     *   return [n, n];
15024     * }
15025     *
15026     * _.flatMap([1, 2], duplicate);
15027     * // => [1, 1, 2, 2]
15028     */
15029    function flatMap(collection, iteratee) {
15030      return baseFlatten(map(collection, iteratee), 1);
15031    }
15032
15033    /**
15034     * This method is like `_.flatMap` except that it recursively flattens the
15035     * mapped results.
15036     *
15037     * @static
15038     * @memberOf _
15039     * @since 4.7.0
15040     * @category Collection
15041     * @param {Array|Object} collection The collection to iterate over.
15042     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15043     * @returns {Array} Returns the new flattened array.
15044     * @example
15045     *
15046     * function duplicate(n) {
15047     *   return [[[n, n]]];
15048     * }
15049     *
15050     * _.flatMapDeep([1, 2], duplicate);
15051     * // => [1, 1, 2, 2]
15052     */
15053    function flatMapDeep(collection, iteratee) {
15054      return baseFlatten(map(collection, iteratee), INFINITY);
15055    }
15056
15057    /**
15058     * This method is like `_.flatMap` except that it recursively flattens the
15059     * mapped results up to `depth` times.
15060     *
15061     * @static
15062     * @memberOf _
15063     * @since 4.7.0
15064     * @category Collection
15065     * @param {Array|Object} collection The collection to iterate over.
15066     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15067     * @param {number} [depth=1] The maximum recursion depth.
15068     * @returns {Array} Returns the new flattened array.
15069     * @example
15070     *
15071     * function duplicate(n) {
15072     *   return [[[n, n]]];
15073     * }
15074     *
15075     * _.flatMapDepth([1, 2], duplicate, 2);
15076     * // => [[1, 1], [2, 2]]
15077     */
15078    function flatMapDepth(collection, iteratee, depth) {
15079      depth = depth === undefined ? 1 : toInteger(depth);
15080      return baseFlatten(map(collection, iteratee), depth);
15081    }
15082
15083    /**
15084     * Iterates over elements of `collection` and invokes `iteratee` for each element.
15085     * The iteratee is invoked with three arguments: (value, index|key, collection).
15086     * Iteratee functions may exit iteration early by explicitly returning `false`.
15087     *
15088     * **Note:** As with other "Collections" methods, objects with a "length"
15089     * property are iterated like arrays. To avoid this behavior use `_.forIn`
15090     * or `_.forOwn` for object iteration.
15091     *
15092     * @static
15093     * @memberOf _
15094     * @since 0.1.0
15095     * @alias each
15096     * @category Collection
15097     * @param {Array|Object} collection The collection to iterate over.
15098     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15099     * @returns {Array|Object} Returns `collection`.
15100     * @see _.forEachRight
15101     * @example
15102     *
15103     * _.forEach([1, 2], function(value) {
15104     *   console.log(value);
15105     * });
15106     * // => Logs `1` then `2`.
15107     *
15108     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
15109     *   console.log(key);
15110     * });
15111     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
15112     */
15113    function forEach(collection, iteratee) {
15114      var func = isArray(collection) ? arrayEach : baseEach;
15115      return func(collection, getIteratee(iteratee, 3));
15116    }
15117
15118    /**
15119     * This method is like `_.forEach` except that it iterates over elements of
15120     * `collection` from right to left.
15121     *
15122     * @static
15123     * @memberOf _
15124     * @since 2.0.0
15125     * @alias eachRight
15126     * @category Collection
15127     * @param {Array|Object} collection The collection to iterate over.
15128     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15129     * @returns {Array|Object} Returns `collection`.
15130     * @see _.forEach
15131     * @example
15132     *
15133     * _.forEachRight([1, 2], function(value) {
15134     *   console.log(value);
15135     * });
15136     * // => Logs `2` then `1`.
15137     */
15138    function forEachRight(collection, iteratee) {
15139      var func = isArray(collection) ? arrayEachRight : baseEachRight;
15140      return func(collection, getIteratee(iteratee, 3));
15141    }
15142
15143    /**
15144     * Creates an object composed of keys generated from the results of running
15145     * each element of `collection` thru `iteratee`. The order of grouped values
15146     * is determined by the order they occur in `collection`. The corresponding
15147     * value of each key is an array of elements responsible for generating the
15148     * key. The iteratee is invoked with one argument: (value).
15149     *
15150     * @static
15151     * @memberOf _
15152     * @since 0.1.0
15153     * @category Collection
15154     * @param {Array|Object} collection The collection to iterate over.
15155     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
15156     * @returns {Object} Returns the composed aggregate object.
15157     * @example
15158     *
15159     * _.groupBy([6.1, 4.2, 6.3], Math.floor);
15160     * // => { '4': [4.2], '6': [6.1, 6.3] }
15161     *
15162     * // The `_.property` iteratee shorthand.
15163     * _.groupBy(['one', 'two', 'three'], 'length');
15164     * // => { '3': ['one', 'two'], '5': ['three'] }
15165     */
15166    var groupBy = createAggregator(function(result, value, key) {
15167      if (hasOwnProperty.call(result, key)) {
15168        result[key].push(value);
15169      } else {
15170        baseAssignValue(result, key, [value]);
15171      }
15172    });
15173
15174    /**
15175     * Checks if `value` is in `collection`. If `collection` is a string, it's
15176     * checked for a substring of `value`, otherwise
15177     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
15178     * is used for equality comparisons. If `fromIndex` is negative, it's used as
15179     * the offset from the end of `collection`.
15180     *
15181     * @static
15182     * @memberOf _
15183     * @since 0.1.0
15184     * @category Collection
15185     * @param {Array|Object|string} collection The collection to inspect.
15186     * @param {*} value The value to search for.
15187     * @param {number} [fromIndex=0] The index to search from.
15188     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
15189     * @returns {boolean} Returns `true` if `value` is found, else `false`.
15190     * @example
15191     *
15192     * _.includes([1, 2, 3], 1);
15193     * // => true
15194     *
15195     * _.includes([1, 2, 3], 1, 2);
15196     * // => false
15197     *
15198     * _.includes({ 'a': 1, 'b': 2 }, 1);
15199     * // => true
15200     *
15201     * _.includes('abcd', 'bc');
15202     * // => true
15203     */
15204    function includes(collection, value, fromIndex, guard) {
15205      collection = isArrayLike(collection) ? collection : values(collection);
15206      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
15207
15208      var length = collection.length;
15209      if (fromIndex < 0) {
15210        fromIndex = nativeMax(length + fromIndex, 0);
15211      }
15212      return isString(collection)
15213        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
15214        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
15215    }
15216
15217    /**
15218     * Invokes the method at `path` of each element in `collection`, returning
15219     * an array of the results of each invoked method. Any additional arguments
15220     * are provided to each invoked method. If `path` is a function, it's invoked
15221     * for, and `this` bound to, each element in `collection`.
15222     *
15223     * @static
15224     * @memberOf _
15225     * @since 4.0.0
15226     * @category Collection
15227     * @param {Array|Object} collection The collection to iterate over.
15228     * @param {Array|Function|string} path The path of the method to invoke or
15229     *  the function invoked per iteration.
15230     * @param {...*} [args] The arguments to invoke each method with.
15231     * @returns {Array} Returns the array of results.
15232     * @example
15233     *
15234     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
15235     * // => [[1, 5, 7], [1, 2, 3]]
15236     *
15237     * _.invokeMap([123, 456], String.prototype.split, '');
15238     * // => [['1', '2', '3'], ['4', '5', '6']]
15239     */
15240    var invokeMap = baseRest(function(collection, path, args) {
15241      var index = -1,
15242          isFunc = typeof path == 'function',
15243          result = isArrayLike(collection) ? Array(collection.length) : [];
15244
15245      baseEach(collection, function(value) {
15246        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
15247      });
15248      return result;
15249    });
15250
15251    /**
15252     * Creates an object composed of keys generated from the results of running
15253     * each element of `collection` thru `iteratee`. The corresponding value of
15254     * each key is the last element responsible for generating the key. The
15255     * iteratee is invoked with one argument: (value).
15256     *
15257     * @static
15258     * @memberOf _
15259     * @since 4.0.0
15260     * @category Collection
15261     * @param {Array|Object} collection The collection to iterate over.
15262     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
15263     * @returns {Object} Returns the composed aggregate object.
15264     * @example
15265     *
15266     * var array = [
15267     *   { 'dir': 'left', 'code': 97 },
15268     *   { 'dir': 'right', 'code': 100 }
15269     * ];
15270     *
15271     * _.keyBy(array, function(o) {
15272     *   return String.fromCharCode(o.code);
15273     * });
15274     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
15275     *
15276     * _.keyBy(array, 'dir');
15277     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
15278     */
15279    var keyBy = createAggregator(function(result, value, key) {
15280      baseAssignValue(result, key, value);
15281    });
15282
15283    /**
15284     * Creates an array of values by running each element in `collection` thru
15285     * `iteratee`. The iteratee is invoked with three arguments:
15286     * (value, index|key, collection).
15287     *
15288     * Many lodash methods are guarded to work as iteratees for methods like
15289     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
15290     *
15291     * The guarded methods are:
15292     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
15293     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
15294     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
15295     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
15296     *
15297     * @static
15298     * @memberOf _
15299     * @since 0.1.0
15300     * @category Collection
15301     * @param {Array|Object} collection The collection to iterate over.
15302     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15303     * @returns {Array} Returns the new mapped array.
15304     * @example
15305     *
15306     * function square(n) {
15307     *   return n * n;
15308     * }
15309     *
15310     * _.map([4, 8], square);
15311     * // => [16, 64]
15312     *
15313     * _.map({ 'a': 4, 'b': 8 }, square);
15314     * // => [16, 64] (iteration order is not guaranteed)
15315     *
15316     * var users = [
15317     *   { 'user': 'barney' },
15318     *   { 'user': 'fred' }
15319     * ];
15320     *
15321     * // The `_.property` iteratee shorthand.
15322     * _.map(users, 'user');
15323     * // => ['barney', 'fred']
15324     */
15325    function map(collection, iteratee) {
15326      var func = isArray(collection) ? arrayMap : baseMap;
15327      return func(collection, getIteratee(iteratee, 3));
15328    }
15329
15330    /**
15331     * This method is like `_.sortBy` except that it allows specifying the sort
15332     * orders of the iteratees to sort by. If `orders` is unspecified, all values
15333     * are sorted in ascending order. Otherwise, specify an order of "desc" for
15334     * descending or "asc" for ascending sort order of corresponding values.
15335     *
15336     * @static
15337     * @memberOf _
15338     * @since 4.0.0
15339     * @category Collection
15340     * @param {Array|Object} collection The collection to iterate over.
15341     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
15342     *  The iteratees to sort by.
15343     * @param {string[]} [orders] The sort orders of `iteratees`.
15344     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
15345     * @returns {Array} Returns the new sorted array.
15346     * @example
15347     *
15348     * var users = [
15349     *   { 'user': 'fred',   'age': 48 },
15350     *   { 'user': 'barney', 'age': 34 },
15351     *   { 'user': 'fred',   'age': 40 },
15352     *   { 'user': 'barney', 'age': 36 }
15353     * ];
15354     *
15355     * // Sort by `user` in ascending order and by `age` in descending order.
15356     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
15357     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
15358     */
15359    function orderBy(collection, iteratees, orders, guard) {
15360      if (collection == null) {
15361        return [];
15362      }
15363      if (!isArray(iteratees)) {
15364        iteratees = iteratees == null ? [] : [iteratees];
15365      }
15366      orders = guard ? undefined : orders;
15367      if (!isArray(orders)) {
15368        orders = orders == null ? [] : [orders];
15369      }
15370      return baseOrderBy(collection, iteratees, orders);
15371    }
15372
15373    /**
15374     * Creates an array of elements split into two groups, the first of which
15375     * contains elements `predicate` returns truthy for, the second of which
15376     * contains elements `predicate` returns falsey for. The predicate is
15377     * invoked with one argument: (value).
15378     *
15379     * @static
15380     * @memberOf _
15381     * @since 3.0.0
15382     * @category Collection
15383     * @param {Array|Object} collection The collection to iterate over.
15384     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15385     * @returns {Array} Returns the array of grouped elements.
15386     * @example
15387     *
15388     * var users = [
15389     *   { 'user': 'barney',  'age': 36, 'active': false },
15390     *   { 'user': 'fred',    'age': 40, 'active': true },
15391     *   { 'user': 'pebbles', 'age': 1,  'active': false }
15392     * ];
15393     *
15394     * _.partition(users, function(o) { return o.active; });
15395     * // => objects for [['fred'], ['barney', 'pebbles']]
15396     *
15397     * // The `_.matches` iteratee shorthand.
15398     * _.partition(users, { 'age': 1, 'active': false });
15399     * // => objects for [['pebbles'], ['barney', 'fred']]
15400     *
15401     * // The `_.matchesProperty` iteratee shorthand.
15402     * _.partition(users, ['active', false]);
15403     * // => objects for [['barney', 'pebbles'], ['fred']]
15404     *
15405     * // The `_.property` iteratee shorthand.
15406     * _.partition(users, 'active');
15407     * // => objects for [['fred'], ['barney', 'pebbles']]
15408     */
15409    var partition = createAggregator(function(result, value, key) {
15410      result[key ? 0 : 1].push(value);
15411    }, function() { return [[], []]; });
15412
15413    /**
15414     * Reduces `collection` to a value which is the accumulated result of running
15415     * each element in `collection` thru `iteratee`, where each successive
15416     * invocation is supplied the return value of the previous. If `accumulator`
15417     * is not given, the first element of `collection` is used as the initial
15418     * value. The iteratee is invoked with four arguments:
15419     * (accumulator, value, index|key, collection).
15420     *
15421     * Many lodash methods are guarded to work as iteratees for methods like
15422     * `_.reduce`, `_.reduceRight`, and `_.transform`.
15423     *
15424     * The guarded methods are:
15425     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
15426     * and `sortBy`
15427     *
15428     * @static
15429     * @memberOf _
15430     * @since 0.1.0
15431     * @category Collection
15432     * @param {Array|Object} collection The collection to iterate over.
15433     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15434     * @param {*} [accumulator] The initial value.
15435     * @returns {*} Returns the accumulated value.
15436     * @see _.reduceRight
15437     * @example
15438     *
15439     * _.reduce([1, 2], function(sum, n) {
15440     *   return sum + n;
15441     * }, 0);
15442     * // => 3
15443     *
15444     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
15445     *   (result[value] || (result[value] = [])).push(key);
15446     *   return result;
15447     * }, {});
15448     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
15449     */
15450    function reduce(collection, iteratee, accumulator) {
15451      var func = isArray(collection) ? arrayReduce : baseReduce,
15452          initAccum = arguments.length < 3;
15453
15454      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
15455    }
15456
15457    /**
15458     * This method is like `_.reduce` except that it iterates over elements of
15459     * `collection` from right to left.
15460     *
15461     * @static
15462     * @memberOf _
15463     * @since 0.1.0
15464     * @category Collection
15465     * @param {Array|Object} collection The collection to iterate over.
15466     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15467     * @param {*} [accumulator] The initial value.
15468     * @returns {*} Returns the accumulated value.
15469     * @see _.reduce
15470     * @example
15471     *
15472     * var array = [[0, 1], [2, 3], [4, 5]];
15473     *
15474     * _.reduceRight(array, function(flattened, other) {
15475     *   return flattened.concat(other);
15476     * }, []);
15477     * // => [4, 5, 2, 3, 0, 1]
15478     */
15479    function reduceRight(collection, iteratee, accumulator) {
15480      var func = isArray(collection) ? arrayReduceRight : baseReduce,
15481          initAccum = arguments.length < 3;
15482
15483      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
15484    }
15485
15486    /**
15487     * The opposite of `_.filter`; this method returns the elements of `collection`
15488     * that `predicate` does **not** return truthy for.
15489     *
15490     * @static
15491     * @memberOf _
15492     * @since 0.1.0
15493     * @category Collection
15494     * @param {Array|Object} collection The collection to iterate over.
15495     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15496     * @returns {Array} Returns the new filtered array.
15497     * @see _.filter
15498     * @example
15499     *
15500     * var users = [
15501     *   { 'user': 'barney', 'age': 36, 'active': false },
15502     *   { 'user': 'fred',   'age': 40, 'active': true }
15503     * ];
15504     *
15505     * _.reject(users, function(o) { return !o.active; });
15506     * // => objects for ['fred']
15507     *
15508     * // The `_.matches` iteratee shorthand.
15509     * _.reject(users, { 'age': 40, 'active': true });
15510     * // => objects for ['barney']
15511     *
15512     * // The `_.matchesProperty` iteratee shorthand.
15513     * _.reject(users, ['active', false]);
15514     * // => objects for ['fred']
15515     *
15516     * // The `_.property` iteratee shorthand.
15517     * _.reject(users, 'active');
15518     * // => objects for ['barney']
15519     */
15520    function reject(collection, predicate) {
15521      var func = isArray(collection) ? arrayFilter : baseFilter;
15522      return func(collection, negate(getIteratee(predicate, 3)));
15523    }
15524
15525    /**
15526     * Gets a random element from `collection`.
15527     *
15528     * @static
15529     * @memberOf _
15530     * @since 2.0.0
15531     * @category Collection
15532     * @param {Array|Object} collection The collection to sample.
15533     * @returns {*} Returns the random element.
15534     * @example
15535     *
15536     * _.sample([1, 2, 3, 4]);
15537     * // => 2
15538     */
15539    function sample(collection) {
15540      var func = isArray(collection) ? arraySample : baseSample;
15541      return func(collection);
15542    }
15543
15544    /**
15545     * Gets `n` random elements at unique keys from `collection` up to the
15546     * size of `collection`.
15547     *
15548     * @static
15549     * @memberOf _
15550     * @since 4.0.0
15551     * @category Collection
15552     * @param {Array|Object} collection The collection to sample.
15553     * @param {number} [n=1] The number of elements to sample.
15554     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15555     * @returns {Array} Returns the random elements.
15556     * @example
15557     *
15558     * _.sampleSize([1, 2, 3], 2);
15559     * // => [3, 1]
15560     *
15561     * _.sampleSize([1, 2, 3], 4);
15562     * // => [2, 3, 1]
15563     */
15564    function sampleSize(collection, n, guard) {
15565      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
15566        n = 1;
15567      } else {
15568        n = toInteger(n);
15569      }
15570      var func = isArray(collection) ? arraySampleSize : baseSampleSize;
15571      return func(collection, n);
15572    }
15573
15574    /**
15575     * Creates an array of shuffled values, using a version of the
15576     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
15577     *
15578     * @static
15579     * @memberOf _
15580     * @since 0.1.0
15581     * @category Collection
15582     * @param {Array|Object} collection The collection to shuffle.
15583     * @returns {Array} Returns the new shuffled array.
15584     * @example
15585     *
15586     * _.shuffle([1, 2, 3, 4]);
15587     * // => [4, 1, 3, 2]
15588     */
15589    function shuffle(collection) {
15590      var func = isArray(collection) ? arrayShuffle : baseShuffle;
15591      return func(collection);
15592    }
15593
15594    /**
15595     * Gets the size of `collection` by returning its length for array-like
15596     * values or the number of own enumerable string keyed properties for objects.
15597     *
15598     * @static
15599     * @memberOf _
15600     * @since 0.1.0
15601     * @category Collection
15602     * @param {Array|Object|string} collection The collection to inspect.
15603     * @returns {number} Returns the collection size.
15604     * @example
15605     *
15606     * _.size([1, 2, 3]);
15607     * // => 3
15608     *
15609     * _.size({ 'a': 1, 'b': 2 });
15610     * // => 2
15611     *
15612     * _.size('pebbles');
15613     * // => 7
15614     */
15615    function size(collection) {
15616      if (collection == null) {
15617        return 0;
15618      }
15619      if (isArrayLike(collection)) {
15620        return isString(collection) ? stringSize(collection) : collection.length;
15621      }
15622      var tag = getTag(collection);
15623      if (tag == mapTag || tag == setTag) {
15624        return collection.size;
15625      }
15626      return baseKeys(collection).length;
15627    }
15628
15629    /**
15630     * Checks if `predicate` returns truthy for **any** element of `collection`.
15631     * Iteration is stopped once `predicate` returns truthy. The predicate is
15632     * invoked with three arguments: (value, index|key, collection).
15633     *
15634     * @static
15635     * @memberOf _
15636     * @since 0.1.0
15637     * @category Collection
15638     * @param {Array|Object} collection The collection to iterate over.
15639     * @param {Function} [predicate=_.identity] The function invoked per iteration.
15640     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15641     * @returns {boolean} Returns `true` if any element passes the predicate check,
15642     *  else `false`.
15643     * @example
15644     *
15645     * _.some([null, 0, 'yes', false], Boolean);
15646     * // => true
15647     *
15648     * var users = [
15649     *   { 'user': 'barney', 'active': true },
15650     *   { 'user': 'fred',   'active': false }
15651     * ];
15652     *
15653     * // The `_.matches` iteratee shorthand.
15654     * _.some(users, { 'user': 'barney', 'active': false });
15655     * // => false
15656     *
15657     * // The `_.matchesProperty` iteratee shorthand.
15658     * _.some(users, ['active', false]);
15659     * // => true
15660     *
15661     * // The `_.property` iteratee shorthand.
15662     * _.some(users, 'active');
15663     * // => true
15664     */
15665    function some(collection, predicate, guard) {
15666      var func = isArray(collection) ? arraySome : baseSome;
15667      if (guard && isIterateeCall(collection, predicate, guard)) {
15668        predicate = undefined;
15669      }
15670      return func(collection, getIteratee(predicate, 3));
15671    }
15672
15673    /**
15674     * Creates an array of elements, sorted in ascending order by the results of
15675     * running each element in a collection thru each iteratee. This method
15676     * performs a stable sort, that is, it preserves the original sort order of
15677     * equal elements. The iteratees are invoked with one argument: (value).
15678     *
15679     * @static
15680     * @memberOf _
15681     * @since 0.1.0
15682     * @category Collection
15683     * @param {Array|Object} collection The collection to iterate over.
15684     * @param {...(Function|Function[])} [iteratees=[_.identity]]
15685     *  The iteratees to sort by.
15686     * @returns {Array} Returns the new sorted array.
15687     * @example
15688     *
15689     * var users = [
15690     *   { 'user': 'fred',   'age': 48 },
15691     *   { 'user': 'barney', 'age': 36 },
15692     *   { 'user': 'fred',   'age': 30 },
15693     *   { 'user': 'barney', 'age': 34 }
15694     * ];
15695     *
15696     * _.sortBy(users, [function(o) { return o.user; }]);
15697     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
15698     *
15699     * _.sortBy(users, ['user', 'age']);
15700     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
15701     */
15702    var sortBy = baseRest(function(collection, iteratees) {
15703      if (collection == null) {
15704        return [];
15705      }
15706      var length = iteratees.length;
15707      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
15708        iteratees = [];
15709      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
15710        iteratees = [iteratees[0]];
15711      }
15712      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
15713    });
15714
15715    /*------------------------------------------------------------------------*/
15716
15717    /**
15718     * Gets the timestamp of the number of milliseconds that have elapsed since
15719     * the Unix epoch (1 January 1970 00:00:00 UTC).
15720     *
15721     * @static
15722     * @memberOf _
15723     * @since 2.4.0
15724     * @category Date
15725     * @returns {number} Returns the timestamp.
15726     * @example
15727     *
15728     * _.defer(function(stamp) {
15729     *   console.log(_.now() - stamp);
15730     * }, _.now());
15731     * // => Logs the number of milliseconds it took for the deferred invocation.
15732     */
15733    var now = ctxNow || function() {
15734      return root.Date.now();
15735    };
15736
15737    /*------------------------------------------------------------------------*/
15738
15739    /**
15740     * The opposite of `_.before`; this method creates a function that invokes
15741     * `func` once it's called `n` or more times.
15742     *
15743     * @static
15744     * @memberOf _
15745     * @since 0.1.0
15746     * @category Function
15747     * @param {number} n The number of calls before `func` is invoked.
15748     * @param {Function} func The function to restrict.
15749     * @returns {Function} Returns the new restricted function.
15750     * @example
15751     *
15752     * var saves = ['profile', 'settings'];
15753     *
15754     * var done = _.after(saves.length, function() {
15755     *   console.log('done saving!');
15756     * });
15757     *
15758     * _.forEach(saves, function(type) {
15759     *   asyncSave({ 'type': type, 'complete': done });
15760     * });
15761     * // => Logs 'done saving!' after the two async saves have completed.
15762     */
15763    function after(n, func) {
15764      if (typeof func != 'function') {
15765        throw new TypeError(FUNC_ERROR_TEXT);
15766      }
15767      n = toInteger(n);
15768      return function() {
15769        if (--n < 1) {
15770          return func.apply(this, arguments);
15771        }
15772      };
15773    }
15774
15775    /**
15776     * Creates a function that invokes `func`, with up to `n` arguments,
15777     * ignoring any additional arguments.
15778     *
15779     * @static
15780     * @memberOf _
15781     * @since 3.0.0
15782     * @category Function
15783     * @param {Function} func The function to cap arguments for.
15784     * @param {number} [n=func.length] The arity cap.
15785     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15786     * @returns {Function} Returns the new capped function.
15787     * @example
15788     *
15789     * _.map(['6', '8', '10'], _.ary(parseInt, 1));
15790     * // => [6, 8, 10]
15791     */
15792    function ary(func, n, guard) {
15793      n = guard ? undefined : n;
15794      n = (func && n == null) ? func.length : n;
15795      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
15796    }
15797
15798    /**
15799     * Creates a function that invokes `func`, with the `this` binding and arguments
15800     * of the created function, while it's called less than `n` times. Subsequent
15801     * calls to the created function return the result of the last `func` invocation.
15802     *
15803     * @static
15804     * @memberOf _
15805     * @since 3.0.0
15806     * @category Function
15807     * @param {number} n The number of calls at which `func` is no longer invoked.
15808     * @param {Function} func The function to restrict.
15809     * @returns {Function} Returns the new restricted function.
15810     * @example
15811     *
15812     * jQuery(element).on('click', _.before(5, addContactToList));
15813     * // => Allows adding up to 4 contacts to the list.
15814     */
15815    function before(n, func) {
15816      var result;
15817      if (typeof func != 'function') {
15818        throw new TypeError(FUNC_ERROR_TEXT);
15819      }
15820      n = toInteger(n);
15821      return function() {
15822        if (--n > 0) {
15823          result = func.apply(this, arguments);
15824        }
15825        if (n <= 1) {
15826          func = undefined;
15827        }
15828        return result;
15829      };
15830    }
15831
15832    /**
15833     * Creates a function that invokes `func` with the `this` binding of `thisArg`
15834     * and `partials` prepended to the arguments it receives.
15835     *
15836     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
15837     * may be used as a placeholder for partially applied arguments.
15838     *
15839     * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
15840     * property of bound functions.
15841     *
15842     * @static
15843     * @memberOf _
15844     * @since 0.1.0
15845     * @category Function
15846     * @param {Function} func The function to bind.
15847     * @param {*} thisArg The `this` binding of `func`.
15848     * @param {...*} [partials] The arguments to be partially applied.
15849     * @returns {Function} Returns the new bound function.
15850     * @example
15851     *
15852     * function greet(greeting, punctuation) {
15853     *   return greeting + ' ' + this.user + punctuation;
15854     * }
15855     *
15856     * var object = { 'user': 'fred' };
15857     *
15858     * var bound = _.bind(greet, object, 'hi');
15859     * bound('!');
15860     * // => 'hi fred!'
15861     *
15862     * // Bound with placeholders.
15863     * var bound = _.bind(greet, object, _, '!');
15864     * bound('hi');
15865     * // => 'hi fred!'
15866     */
15867    var bind = baseRest(function(func, thisArg, partials) {
15868      var bitmask = WRAP_BIND_FLAG;
15869      if (partials.length) {
15870        var holders = replaceHolders(partials, getHolder(bind));
15871        bitmask |= WRAP_PARTIAL_FLAG;
15872      }
15873      return createWrap(func, bitmask, thisArg, partials, holders);
15874    });
15875
15876    /**
15877     * Creates a function that invokes the method at `object[key]` with `partials`
15878     * prepended to the arguments it receives.
15879     *
15880     * This method differs from `_.bind` by allowing bound functions to reference
15881     * methods that may be redefined or don't yet exist. See
15882     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
15883     * for more details.
15884     *
15885     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
15886     * builds, may be used as a placeholder for partially applied arguments.
15887     *
15888     * @static
15889     * @memberOf _
15890     * @since 0.10.0
15891     * @category Function
15892     * @param {Object} object The object to invoke the method on.
15893     * @param {string} key The key of the method.
15894     * @param {...*} [partials] The arguments to be partially applied.
15895     * @returns {Function} Returns the new bound function.
15896     * @example
15897     *
15898     * var object = {
15899     *   'user': 'fred',
15900     *   'greet': function(greeting, punctuation) {
15901     *     return greeting + ' ' + this.user + punctuation;
15902     *   }
15903     * };
15904     *
15905     * var bound = _.bindKey(object, 'greet', 'hi');
15906     * bound('!');
15907     * // => 'hi fred!'
15908     *
15909     * object.greet = function(greeting, punctuation) {
15910     *   return greeting + 'ya ' + this.user + punctuation;
15911     * };
15912     *
15913     * bound('!');
15914     * // => 'hiya fred!'
15915     *
15916     * // Bound with placeholders.
15917     * var bound = _.bindKey(object, 'greet', _, '!');
15918     * bound('hi');
15919     * // => 'hiya fred!'
15920     */
15921    var bindKey = baseRest(function(object, key, partials) {
15922      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
15923      if (partials.length) {
15924        var holders = replaceHolders(partials, getHolder(bindKey));
15925        bitmask |= WRAP_PARTIAL_FLAG;
15926      }
15927      return createWrap(key, bitmask, object, partials, holders);
15928    });
15929
15930    /**
15931     * Creates a function that accepts arguments of `func` and either invokes
15932     * `func` returning its result, if at least `arity` number of arguments have
15933     * been provided, or returns a function that accepts the remaining `func`
15934     * arguments, and so on. The arity of `func` may be specified if `func.length`
15935     * is not sufficient.
15936     *
15937     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
15938     * may be used as a placeholder for provided arguments.
15939     *
15940     * **Note:** This method doesn't set the "length" property of curried functions.
15941     *
15942     * @static
15943     * @memberOf _
15944     * @since 2.0.0
15945     * @category Function
15946     * @param {Function} func The function to curry.
15947     * @param {number} [arity=func.length] The arity of `func`.
15948     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15949     * @returns {Function} Returns the new curried function.
15950     * @example
15951     *
15952     * var abc = function(a, b, c) {
15953     *   return [a, b, c];
15954     * };
15955     *
15956     * var curried = _.curry(abc);
15957     *
15958     * curried(1)(2)(3);
15959     * // => [1, 2, 3]
15960     *
15961     * curried(1, 2)(3);
15962     * // => [1, 2, 3]
15963     *
15964     * curried(1, 2, 3);
15965     * // => [1, 2, 3]
15966     *
15967     * // Curried with placeholders.
15968     * curried(1)(_, 3)(2);
15969     * // => [1, 2, 3]
15970     */
15971    function curry(func, arity, guard) {
15972      arity = guard ? undefined : arity;
15973      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
15974      result.placeholder = curry.placeholder;
15975      return result;
15976    }
15977
15978    /**
15979     * This method is like `_.curry` except that arguments are applied to `func`
15980     * in the manner of `_.partialRight` instead of `_.partial`.
15981     *
15982     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
15983     * builds, may be used as a placeholder for provided arguments.
15984     *
15985     * **Note:** This method doesn't set the "length" property of curried functions.
15986     *
15987     * @static
15988     * @memberOf _
15989     * @since 3.0.0
15990     * @category Function
15991     * @param {Function} func The function to curry.
15992     * @param {number} [arity=func.length] The arity of `func`.
15993     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
15994     * @returns {Function} Returns the new curried function.
15995     * @example
15996     *
15997     * var abc = function(a, b, c) {
15998     *   return [a, b, c];
15999     * };
16000     *
16001     * var curried = _.curryRight(abc);
16002     *
16003     * curried(3)(2)(1);
16004     * // => [1, 2, 3]
16005     *
16006     * curried(2, 3)(1);
16007     * // => [1, 2, 3]
16008     *
16009     * curried(1, 2, 3);
16010     * // => [1, 2, 3]
16011     *
16012     * // Curried with placeholders.
16013     * curried(3)(1, _)(2);
16014     * // => [1, 2, 3]
16015     */
16016    function curryRight(func, arity, guard) {
16017      arity = guard ? undefined : arity;
16018      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
16019      result.placeholder = curryRight.placeholder;
16020      return result;
16021    }
16022
16023    /**
16024     * Creates a debounced function that delays invoking `func` until after `wait`
16025     * milliseconds have elapsed since the last time the debounced function was
16026     * invoked. The debounced function comes with a `cancel` method to cancel
16027     * delayed `func` invocations and a `flush` method to immediately invoke them.
16028     * Provide `options` to indicate whether `func` should be invoked on the
16029     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
16030     * with the last arguments provided to the debounced function. Subsequent
16031     * calls to the debounced function return the result of the last `func`
16032     * invocation.
16033     *
16034     * **Note:** If `leading` and `trailing` options are `true`, `func` is
16035     * invoked on the trailing edge of the timeout only if the debounced function
16036     * is invoked more than once during the `wait` timeout.
16037     *
16038     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16039     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16040     *
16041     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16042     * for details over the differences between `_.debounce` and `_.throttle`.
16043     *
16044     * @static
16045     * @memberOf _
16046     * @since 0.1.0
16047     * @category Function
16048     * @param {Function} func The function to debounce.
16049     * @param {number} [wait=0] The number of milliseconds to delay.
16050     * @param {Object} [options={}] The options object.
16051     * @param {boolean} [options.leading=false]
16052     *  Specify invoking on the leading edge of the timeout.
16053     * @param {number} [options.maxWait]
16054     *  The maximum time `func` is allowed to be delayed before it's invoked.
16055     * @param {boolean} [options.trailing=true]
16056     *  Specify invoking on the trailing edge of the timeout.
16057     * @returns {Function} Returns the new debounced function.
16058     * @example
16059     *
16060     * // Avoid costly calculations while the window size is in flux.
16061     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
16062     *
16063     * // Invoke `sendMail` when clicked, debouncing subsequent calls.
16064     * jQuery(element).on('click', _.debounce(sendMail, 300, {
16065     *   'leading': true,
16066     *   'trailing': false
16067     * }));
16068     *
16069     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
16070     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
16071     * var source = new EventSource('/stream');
16072     * jQuery(source).on('message', debounced);
16073     *
16074     * // Cancel the trailing debounced invocation.
16075     * jQuery(window).on('popstate', debounced.cancel);
16076     */
16077    function debounce(func, wait, options) {
16078      var lastArgs,
16079          lastThis,
16080          maxWait,
16081          result,
16082          timerId,
16083          lastCallTime,
16084          lastInvokeTime = 0,
16085          leading = false,
16086          maxing = false,
16087          trailing = true;
16088
16089      if (typeof func != 'function') {
16090        throw new TypeError(FUNC_ERROR_TEXT);
16091      }
16092      wait = toNumber(wait) || 0;
16093      if (isObject(options)) {
16094        leading = !!options.leading;
16095        maxing = 'maxWait' in options;
16096        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
16097        trailing = 'trailing' in options ? !!options.trailing : trailing;
16098      }
16099
16100      function invokeFunc(time) {
16101        var args = lastArgs,
16102            thisArg = lastThis;
16103
16104        lastArgs = lastThis = undefined;
16105        lastInvokeTime = time;
16106        result = func.apply(thisArg, args);
16107        return result;
16108      }
16109
16110      function leadingEdge(time) {
16111        // Reset any `maxWait` timer.
16112        lastInvokeTime = time;
16113        // Start the timer for the trailing edge.
16114        timerId = setTimeout(timerExpired, wait);
16115        // Invoke the leading edge.
16116        return leading ? invokeFunc(time) : result;
16117      }
16118
16119      function remainingWait(time) {
16120        var timeSinceLastCall = time - lastCallTime,
16121            timeSinceLastInvoke = time - lastInvokeTime,
16122            timeWaiting = wait - timeSinceLastCall;
16123
16124        return maxing
16125          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
16126          : timeWaiting;
16127      }
16128
16129      function shouldInvoke(time) {
16130        var timeSinceLastCall = time - lastCallTime,
16131            timeSinceLastInvoke = time - lastInvokeTime;
16132
16133        // Either this is the first call, activity has stopped and we're at the
16134        // trailing edge, the system time has gone backwards and we're treating
16135        // it as the trailing edge, or we've hit the `maxWait` limit.
16136        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
16137          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
16138      }
16139
16140      function timerExpired() {
16141        var time = now();
16142        if (shouldInvoke(time)) {
16143          return trailingEdge(time);
16144        }
16145        // Restart the timer.
16146        timerId = setTimeout(timerExpired, remainingWait(time));
16147      }
16148
16149      function trailingEdge(time) {
16150        timerId = undefined;
16151
16152        // Only invoke if we have `lastArgs` which means `func` has been
16153        // debounced at least once.
16154        if (trailing && lastArgs) {
16155          return invokeFunc(time);
16156        }
16157        lastArgs = lastThis = undefined;
16158        return result;
16159      }
16160
16161      function cancel() {
16162        if (timerId !== undefined) {
16163          clearTimeout(timerId);
16164        }
16165        lastInvokeTime = 0;
16166        lastArgs = lastCallTime = lastThis = timerId = undefined;
16167      }
16168
16169      function flush() {
16170        return timerId === undefined ? result : trailingEdge(now());
16171      }
16172
16173      function debounced() {
16174        var time = now(),
16175            isInvoking = shouldInvoke(time);
16176
16177        lastArgs = arguments;
16178        lastThis = this;
16179        lastCallTime = time;
16180
16181        if (isInvoking) {
16182          if (timerId === undefined) {
16183            return leadingEdge(lastCallTime);
16184          }
16185          if (maxing) {
16186            // Handle invocations in a tight loop.
16187            clearTimeout(timerId);
16188            timerId = setTimeout(timerExpired, wait);
16189            return invokeFunc(lastCallTime);
16190          }
16191        }
16192        if (timerId === undefined) {
16193          timerId = setTimeout(timerExpired, wait);
16194        }
16195        return result;
16196      }
16197      debounced.cancel = cancel;
16198      debounced.flush = flush;
16199      return debounced;
16200    }
16201
16202    /**
16203     * Defers invoking the `func` until the current call stack has cleared. Any
16204     * additional arguments are provided to `func` when it's invoked.
16205     *
16206     * @static
16207     * @memberOf _
16208     * @since 0.1.0
16209     * @category Function
16210     * @param {Function} func The function to defer.
16211     * @param {...*} [args] The arguments to invoke `func` with.
16212     * @returns {number} Returns the timer id.
16213     * @example
16214     *
16215     * _.defer(function(text) {
16216     *   console.log(text);
16217     * }, 'deferred');
16218     * // => Logs 'deferred' after one millisecond.
16219     */
16220    var defer = baseRest(function(func, args) {
16221      return baseDelay(func, 1, args);
16222    });
16223
16224    /**
16225     * Invokes `func` after `wait` milliseconds. Any additional arguments are
16226     * provided to `func` when it's invoked.
16227     *
16228     * @static
16229     * @memberOf _
16230     * @since 0.1.0
16231     * @category Function
16232     * @param {Function} func The function to delay.
16233     * @param {number} wait The number of milliseconds to delay invocation.
16234     * @param {...*} [args] The arguments to invoke `func` with.
16235     * @returns {number} Returns the timer id.
16236     * @example
16237     *
16238     * _.delay(function(text) {
16239     *   console.log(text);
16240     * }, 1000, 'later');
16241     * // => Logs 'later' after one second.
16242     */
16243    var delay = baseRest(function(func, wait, args) {
16244      return baseDelay(func, toNumber(wait) || 0, args);
16245    });
16246
16247    /**
16248     * Creates a function that invokes `func` with arguments reversed.
16249     *
16250     * @static
16251     * @memberOf _
16252     * @since 4.0.0
16253     * @category Function
16254     * @param {Function} func The function to flip arguments for.
16255     * @returns {Function} Returns the new flipped function.
16256     * @example
16257     *
16258     * var flipped = _.flip(function() {
16259     *   return _.toArray(arguments);
16260     * });
16261     *
16262     * flipped('a', 'b', 'c', 'd');
16263     * // => ['d', 'c', 'b', 'a']
16264     */
16265    function flip(func) {
16266      return createWrap(func, WRAP_FLIP_FLAG);
16267    }
16268
16269    /**
16270     * Creates a function that memoizes the result of `func`. If `resolver` is
16271     * provided, it determines the cache key for storing the result based on the
16272     * arguments provided to the memoized function. By default, the first argument
16273     * provided to the memoized function is used as the map cache key. The `func`
16274     * is invoked with the `this` binding of the memoized function.
16275     *
16276     * **Note:** The cache is exposed as the `cache` property on the memoized
16277     * function. Its creation may be customized by replacing the `_.memoize.Cache`
16278     * constructor with one whose instances implement the
16279     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
16280     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
16281     *
16282     * @static
16283     * @memberOf _
16284     * @since 0.1.0
16285     * @category Function
16286     * @param {Function} func The function to have its output memoized.
16287     * @param {Function} [resolver] The function to resolve the cache key.
16288     * @returns {Function} Returns the new memoized function.
16289     * @example
16290     *
16291     * var object = { 'a': 1, 'b': 2 };
16292     * var other = { 'c': 3, 'd': 4 };
16293     *
16294     * var values = _.memoize(_.values);
16295     * values(object);
16296     * // => [1, 2]
16297     *
16298     * values(other);
16299     * // => [3, 4]
16300     *
16301     * object.a = 2;
16302     * values(object);
16303     * // => [1, 2]
16304     *
16305     * // Modify the result cache.
16306     * values.cache.set(object, ['a', 'b']);
16307     * values(object);
16308     * // => ['a', 'b']
16309     *
16310     * // Replace `_.memoize.Cache`.
16311     * _.memoize.Cache = WeakMap;
16312     */
16313    function memoize(func, resolver) {
16314      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
16315        throw new TypeError(FUNC_ERROR_TEXT);
16316      }
16317      var memoized = function() {
16318        var args = arguments,
16319            key = resolver ? resolver.apply(this, args) : args[0],
16320            cache = memoized.cache;
16321
16322        if (cache.has(key)) {
16323          return cache.get(key);
16324        }
16325        var result = func.apply(this, args);
16326        memoized.cache = cache.set(key, result) || cache;
16327        return result;
16328      };
16329      memoized.cache = new (memoize.Cache || MapCache);
16330      return memoized;
16331    }
16332
16333    // Expose `MapCache`.
16334    memoize.Cache = MapCache;
16335
16336    /**
16337     * Creates a function that negates the result of the predicate `func`. The
16338     * `func` predicate is invoked with the `this` binding and arguments of the
16339     * created function.
16340     *
16341     * @static
16342     * @memberOf _
16343     * @since 3.0.0
16344     * @category Function
16345     * @param {Function} predicate The predicate to negate.
16346     * @returns {Function} Returns the new negated function.
16347     * @example
16348     *
16349     * function isEven(n) {
16350     *   return n % 2 == 0;
16351     * }
16352     *
16353     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
16354     * // => [1, 3, 5]
16355     */
16356    function negate(predicate) {
16357      if (typeof predicate != 'function') {
16358        throw new TypeError(FUNC_ERROR_TEXT);
16359      }
16360      return function() {
16361        var args = arguments;
16362        switch (args.length) {
16363          case 0: return !predicate.call(this);
16364          case 1: return !predicate.call(this, args[0]);
16365          case 2: return !predicate.call(this, args[0], args[1]);
16366          case 3: return !predicate.call(this, args[0], args[1], args[2]);
16367        }
16368        return !predicate.apply(this, args);
16369      };
16370    }
16371
16372    /**
16373     * Creates a function that is restricted to invoking `func` once. Repeat calls
16374     * to the function return the value of the first invocation. The `func` is
16375     * invoked with the `this` binding and arguments of the created function.
16376     *
16377     * @static
16378     * @memberOf _
16379     * @since 0.1.0
16380     * @category Function
16381     * @param {Function} func The function to restrict.
16382     * @returns {Function} Returns the new restricted function.
16383     * @example
16384     *
16385     * var initialize = _.once(createApplication);
16386     * initialize();
16387     * initialize();
16388     * // => `createApplication` is invoked once
16389     */
16390    function once(func) {
16391      return before(2, func);
16392    }
16393
16394    /**
16395     * Creates a function that invokes `func` with its arguments transformed.
16396     *
16397     * @static
16398     * @since 4.0.0
16399     * @memberOf _
16400     * @category Function
16401     * @param {Function} func The function to wrap.
16402     * @param {...(Function|Function[])} [transforms=[_.identity]]
16403     *  The argument transforms.
16404     * @returns {Function} Returns the new function.
16405     * @example
16406     *
16407     * function doubled(n) {
16408     *   return n * 2;
16409     * }
16410     *
16411     * function square(n) {
16412     *   return n * n;
16413     * }
16414     *
16415     * var func = _.overArgs(function(x, y) {
16416     *   return [x, y];
16417     * }, [square, doubled]);
16418     *
16419     * func(9, 3);
16420     * // => [81, 6]
16421     *
16422     * func(10, 5);
16423     * // => [100, 10]
16424     */
16425    var overArgs = castRest(function(func, transforms) {
16426      transforms = (transforms.length == 1 && isArray(transforms[0]))
16427        ? arrayMap(transforms[0], baseUnary(getIteratee()))
16428        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
16429
16430      var funcsLength = transforms.length;
16431      return baseRest(function(args) {
16432        var index = -1,
16433            length = nativeMin(args.length, funcsLength);
16434
16435        while (++index < length) {
16436          args[index] = transforms[index].call(this, args[index]);
16437        }
16438        return apply(func, this, args);
16439      });
16440    });
16441
16442    /**
16443     * Creates a function that invokes `func` with `partials` prepended to the
16444     * arguments it receives. This method is like `_.bind` except it does **not**
16445     * alter the `this` binding.
16446     *
16447     * The `_.partial.placeholder` value, which defaults to `_` in monolithic
16448     * builds, may be used as a placeholder for partially applied arguments.
16449     *
16450     * **Note:** This method doesn't set the "length" property of partially
16451     * applied functions.
16452     *
16453     * @static
16454     * @memberOf _
16455     * @since 0.2.0
16456     * @category Function
16457     * @param {Function} func The function to partially apply arguments to.
16458     * @param {...*} [partials] The arguments to be partially applied.
16459     * @returns {Function} Returns the new partially applied function.
16460     * @example
16461     *
16462     * function greet(greeting, name) {
16463     *   return greeting + ' ' + name;
16464     * }
16465     *
16466     * var sayHelloTo = _.partial(greet, 'hello');
16467     * sayHelloTo('fred');
16468     * // => 'hello fred'
16469     *
16470     * // Partially applied with placeholders.
16471     * var greetFred = _.partial(greet, _, 'fred');
16472     * greetFred('hi');
16473     * // => 'hi fred'
16474     */
16475    var partial = baseRest(function(func, partials) {
16476      var holders = replaceHolders(partials, getHolder(partial));
16477      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
16478    });
16479
16480    /**
16481     * This method is like `_.partial` except that partially applied arguments
16482     * are appended to the arguments it receives.
16483     *
16484     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
16485     * builds, may be used as a placeholder for partially applied arguments.
16486     *
16487     * **Note:** This method doesn't set the "length" property of partially
16488     * applied functions.
16489     *
16490     * @static
16491     * @memberOf _
16492     * @since 1.0.0
16493     * @category Function
16494     * @param {Function} func The function to partially apply arguments to.
16495     * @param {...*} [partials] The arguments to be partially applied.
16496     * @returns {Function} Returns the new partially applied function.
16497     * @example
16498     *
16499     * function greet(greeting, name) {
16500     *   return greeting + ' ' + name;
16501     * }
16502     *
16503     * var greetFred = _.partialRight(greet, 'fred');
16504     * greetFred('hi');
16505     * // => 'hi fred'
16506     *
16507     * // Partially applied with placeholders.
16508     * var sayHelloTo = _.partialRight(greet, 'hello', _);
16509     * sayHelloTo('fred');
16510     * // => 'hello fred'
16511     */
16512    var partialRight = baseRest(function(func, partials) {
16513      var holders = replaceHolders(partials, getHolder(partialRight));
16514      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
16515    });
16516
16517    /**
16518     * Creates a function that invokes `func` with arguments arranged according
16519     * to the specified `indexes` where the argument value at the first index is
16520     * provided as the first argument, the argument value at the second index is
16521     * provided as the second argument, and so on.
16522     *
16523     * @static
16524     * @memberOf _
16525     * @since 3.0.0
16526     * @category Function
16527     * @param {Function} func The function to rearrange arguments for.
16528     * @param {...(number|number[])} indexes The arranged argument indexes.
16529     * @returns {Function} Returns the new function.
16530     * @example
16531     *
16532     * var rearged = _.rearg(function(a, b, c) {
16533     *   return [a, b, c];
16534     * }, [2, 0, 1]);
16535     *
16536     * rearged('b', 'c', 'a')
16537     * // => ['a', 'b', 'c']
16538     */
16539    var rearg = flatRest(function(func, indexes) {
16540      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
16541    });
16542
16543    /**
16544     * Creates a function that invokes `func` with the `this` binding of the
16545     * created function and arguments from `start` and beyond provided as
16546     * an array.
16547     *
16548     * **Note:** This method is based on the
16549     * [rest parameter](https://mdn.io/rest_parameters).
16550     *
16551     * @static
16552     * @memberOf _
16553     * @since 4.0.0
16554     * @category Function
16555     * @param {Function} func The function to apply a rest parameter to.
16556     * @param {number} [start=func.length-1] The start position of the rest parameter.
16557     * @returns {Function} Returns the new function.
16558     * @example
16559     *
16560     * var say = _.rest(function(what, names) {
16561     *   return what + ' ' + _.initial(names).join(', ') +
16562     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
16563     * });
16564     *
16565     * say('hello', 'fred', 'barney', 'pebbles');
16566     * // => 'hello fred, barney, & pebbles'
16567     */
16568    function rest(func, start) {
16569      if (typeof func != 'function') {
16570        throw new TypeError(FUNC_ERROR_TEXT);
16571      }
16572      start = start === undefined ? start : toInteger(start);
16573      return baseRest(func, start);
16574    }
16575
16576    /**
16577     * Creates a function that invokes `func` with the `this` binding of the
16578     * create function and an array of arguments much like
16579     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
16580     *
16581     * **Note:** This method is based on the
16582     * [spread operator](https://mdn.io/spread_operator).
16583     *
16584     * @static
16585     * @memberOf _
16586     * @since 3.2.0
16587     * @category Function
16588     * @param {Function} func The function to spread arguments over.
16589     * @param {number} [start=0] The start position of the spread.
16590     * @returns {Function} Returns the new function.
16591     * @example
16592     *
16593     * var say = _.spread(function(who, what) {
16594     *   return who + ' says ' + what;
16595     * });
16596     *
16597     * say(['fred', 'hello']);
16598     * // => 'fred says hello'
16599     *
16600     * var numbers = Promise.all([
16601     *   Promise.resolve(40),
16602     *   Promise.resolve(36)
16603     * ]);
16604     *
16605     * numbers.then(_.spread(function(x, y) {
16606     *   return x + y;
16607     * }));
16608     * // => a Promise of 76
16609     */
16610    function spread(func, start) {
16611      if (typeof func != 'function') {
16612        throw new TypeError(FUNC_ERROR_TEXT);
16613      }
16614      start = start == null ? 0 : nativeMax(toInteger(start), 0);
16615      return baseRest(function(args) {
16616        var array = args[start],
16617            otherArgs = castSlice(args, 0, start);
16618
16619        if (array) {
16620          arrayPush(otherArgs, array);
16621        }
16622        return apply(func, this, otherArgs);
16623      });
16624    }
16625
16626    /**
16627     * Creates a throttled function that only invokes `func` at most once per
16628     * every `wait` milliseconds. The throttled function comes with a `cancel`
16629     * method to cancel delayed `func` invocations and a `flush` method to
16630     * immediately invoke them. Provide `options` to indicate whether `func`
16631     * should be invoked on the leading and/or trailing edge of the `wait`
16632     * timeout. The `func` is invoked with the last arguments provided to the
16633     * throttled function. Subsequent calls to the throttled function return the
16634     * result of the last `func` invocation.
16635     *
16636     * **Note:** If `leading` and `trailing` options are `true`, `func` is
16637     * invoked on the trailing edge of the timeout only if the throttled function
16638     * is invoked more than once during the `wait` timeout.
16639     *
16640     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16641     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16642     *
16643     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16644     * for details over the differences between `_.throttle` and `_.debounce`.
16645     *
16646     * @static
16647     * @memberOf _
16648     * @since 0.1.0
16649     * @category Function
16650     * @param {Function} func The function to throttle.
16651     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
16652     * @param {Object} [options={}] The options object.
16653     * @param {boolean} [options.leading=true]
16654     *  Specify invoking on the leading edge of the timeout.
16655     * @param {boolean} [options.trailing=true]
16656     *  Specify invoking on the trailing edge of the timeout.
16657     * @returns {Function} Returns the new throttled function.
16658     * @example
16659     *
16660     * // Avoid excessively updating the position while scrolling.
16661     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
16662     *
16663     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
16664     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
16665     * jQuery(element).on('click', throttled);
16666     *
16667     * // Cancel the trailing throttled invocation.
16668     * jQuery(window).on('popstate', throttled.cancel);
16669     */
16670    function throttle(func, wait, options) {
16671      var leading = true,
16672          trailing = true;
16673
16674      if (typeof func != 'function') {
16675        throw new TypeError(FUNC_ERROR_TEXT);
16676      }
16677      if (isObject(options)) {
16678        leading = 'leading' in options ? !!options.leading : leading;
16679        trailing = 'trailing' in options ? !!options.trailing : trailing;
16680      }
16681      return debounce(func, wait, {
16682        'leading': leading,
16683        'maxWait': wait,
16684        'trailing': trailing
16685      });
16686    }
16687
16688    /**
16689     * Creates a function that accepts up to one argument, ignoring any
16690     * additional arguments.
16691     *
16692     * @static
16693     * @memberOf _
16694     * @since 4.0.0
16695     * @category Function
16696     * @param {Function} func The function to cap arguments for.
16697     * @returns {Function} Returns the new capped function.
16698     * @example
16699     *
16700     * _.map(['6', '8', '10'], _.unary(parseInt));
16701     * // => [6, 8, 10]
16702     */
16703    function unary(func) {
16704      return ary(func, 1);
16705    }
16706
16707    /**
16708     * Creates a function that provides `value` to `wrapper` as its first
16709     * argument. Any additional arguments provided to the function are appended
16710     * to those provided to the `wrapper`. The wrapper is invoked with the `this`
16711     * binding of the created function.
16712     *
16713     * @static
16714     * @memberOf _
16715     * @since 0.1.0
16716     * @category Function
16717     * @param {*} value The value to wrap.
16718     * @param {Function} [wrapper=identity] The wrapper function.
16719     * @returns {Function} Returns the new function.
16720     * @example
16721     *
16722     * var p = _.wrap(_.escape, function(func, text) {
16723     *   return '<p>' + func(text) + '</p>';
16724     * });
16725     *
16726     * p('fred, barney, & pebbles');
16727     * // => '<p>fred, barney, &amp; pebbles</p>'
16728     */
16729    function wrap(value, wrapper) {
16730      return partial(castFunction(wrapper), value);
16731    }
16732
16733    /*------------------------------------------------------------------------*/
16734
16735    /**
16736     * Casts `value` as an array if it's not one.
16737     *
16738     * @static
16739     * @memberOf _
16740     * @since 4.4.0
16741     * @category Lang
16742     * @param {*} value The value to inspect.
16743     * @returns {Array} Returns the cast array.
16744     * @example
16745     *
16746     * _.castArray(1);
16747     * // => [1]
16748     *
16749     * _.castArray({ 'a': 1 });
16750     * // => [{ 'a': 1 }]
16751     *
16752     * _.castArray('abc');
16753     * // => ['abc']
16754     *
16755     * _.castArray(null);
16756     * // => [null]
16757     *
16758     * _.castArray(undefined);
16759     * // => [undefined]
16760     *
16761     * _.castArray();
16762     * // => []
16763     *
16764     * var array = [1, 2, 3];
16765     * console.log(_.castArray(array) === array);
16766     * // => true
16767     */
16768    function castArray() {
16769      if (!arguments.length) {
16770        return [];
16771      }
16772      var value = arguments[0];
16773      return isArray(value) ? value : [value];
16774    }
16775
16776    /**
16777     * Creates a shallow clone of `value`.
16778     *
16779     * **Note:** This method is loosely based on the
16780     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
16781     * and supports cloning arrays, array buffers, booleans, date objects, maps,
16782     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
16783     * arrays. The own enumerable properties of `arguments` objects are cloned
16784     * as plain objects. An empty object is returned for uncloneable values such
16785     * as error objects, functions, DOM nodes, and WeakMaps.
16786     *
16787     * @static
16788     * @memberOf _
16789     * @since 0.1.0
16790     * @category Lang
16791     * @param {*} value The value to clone.
16792     * @returns {*} Returns the cloned value.
16793     * @see _.cloneDeep
16794     * @example
16795     *
16796     * var objects = [{ 'a': 1 }, { 'b': 2 }];
16797     *
16798     * var shallow = _.clone(objects);
16799     * console.log(shallow[0] === objects[0]);
16800     * // => true
16801     */
16802    function clone(value) {
16803      return baseClone(value, CLONE_SYMBOLS_FLAG);
16804    }
16805
16806    /**
16807     * This method is like `_.clone` except that it accepts `customizer` which
16808     * is invoked to produce the cloned value. If `customizer` returns `undefined`,
16809     * cloning is handled by the method instead. The `customizer` is invoked with
16810     * up to four arguments; (value [, index|key, object, stack]).
16811     *
16812     * @static
16813     * @memberOf _
16814     * @since 4.0.0
16815     * @category Lang
16816     * @param {*} value The value to clone.
16817     * @param {Function} [customizer] The function to customize cloning.
16818     * @returns {*} Returns the cloned value.
16819     * @see _.cloneDeepWith
16820     * @example
16821     *
16822     * function customizer(value) {
16823     *   if (_.isElement(value)) {
16824     *     return value.cloneNode(false);
16825     *   }
16826     * }
16827     *
16828     * var el = _.cloneWith(document.body, customizer);
16829     *
16830     * console.log(el === document.body);
16831     * // => false
16832     * console.log(el.nodeName);
16833     * // => 'BODY'
16834     * console.log(el.childNodes.length);
16835     * // => 0
16836     */
16837    function cloneWith(value, customizer) {
16838      customizer = typeof customizer == 'function' ? customizer : undefined;
16839      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
16840    }
16841
16842    /**
16843     * This method is like `_.clone` except that it recursively clones `value`.
16844     *
16845     * @static
16846     * @memberOf _
16847     * @since 1.0.0
16848     * @category Lang
16849     * @param {*} value The value to recursively clone.
16850     * @returns {*} Returns the deep cloned value.
16851     * @see _.clone
16852     * @example
16853     *
16854     * var objects = [{ 'a': 1 }, { 'b': 2 }];
16855     *
16856     * var deep = _.cloneDeep(objects);
16857     * console.log(deep[0] === objects[0]);
16858     * // => false
16859     */
16860    function cloneDeep(value) {
16861      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
16862    }
16863
16864    /**
16865     * This method is like `_.cloneWith` except that it recursively clones `value`.
16866     *
16867     * @static
16868     * @memberOf _
16869     * @since 4.0.0
16870     * @category Lang
16871     * @param {*} value The value to recursively clone.
16872     * @param {Function} [customizer] The function to customize cloning.
16873     * @returns {*} Returns the deep cloned value.
16874     * @see _.cloneWith
16875     * @example
16876     *
16877     * function customizer(value) {
16878     *   if (_.isElement(value)) {
16879     *     return value.cloneNode(true);
16880     *   }
16881     * }
16882     *
16883     * var el = _.cloneDeepWith(document.body, customizer);
16884     *
16885     * console.log(el === document.body);
16886     * // => false
16887     * console.log(el.nodeName);
16888     * // => 'BODY'
16889     * console.log(el.childNodes.length);
16890     * // => 20
16891     */
16892    function cloneDeepWith(value, customizer) {
16893      customizer = typeof customizer == 'function' ? customizer : undefined;
16894      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
16895    }
16896
16897    /**
16898     * Checks if `object` conforms to `source` by invoking the predicate
16899     * properties of `source` with the corresponding property values of `object`.
16900     *
16901     * **Note:** This method is equivalent to `_.conforms` when `source` is
16902     * partially applied.
16903     *
16904     * @static
16905     * @memberOf _
16906     * @since 4.14.0
16907     * @category Lang
16908     * @param {Object} object The object to inspect.
16909     * @param {Object} source The object of property predicates to conform to.
16910     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
16911     * @example
16912     *
16913     * var object = { 'a': 1, 'b': 2 };
16914     *
16915     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
16916     * // => true
16917     *
16918     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
16919     * // => false
16920     */
16921    function conformsTo(object, source) {
16922      return source == null || baseConformsTo(object, source, keys(source));
16923    }
16924
16925    /**
16926     * Performs a
16927     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
16928     * comparison between two values to determine if they are equivalent.
16929     *
16930     * @static
16931     * @memberOf _
16932     * @since 4.0.0
16933     * @category Lang
16934     * @param {*} value The value to compare.
16935     * @param {*} other The other value to compare.
16936     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
16937     * @example
16938     *
16939     * var object = { 'a': 1 };
16940     * var other = { 'a': 1 };
16941     *
16942     * _.eq(object, object);
16943     * // => true
16944     *
16945     * _.eq(object, other);
16946     * // => false
16947     *
16948     * _.eq('a', 'a');
16949     * // => true
16950     *
16951     * _.eq('a', Object('a'));
16952     * // => false
16953     *
16954     * _.eq(NaN, NaN);
16955     * // => true
16956     */
16957    function eq(value, other) {
16958      return value === other || (value !== value && other !== other);
16959    }
16960
16961    /**
16962     * Checks if `value` is greater than `other`.
16963     *
16964     * @static
16965     * @memberOf _
16966     * @since 3.9.0
16967     * @category Lang
16968     * @param {*} value The value to compare.
16969     * @param {*} other The other value to compare.
16970     * @returns {boolean} Returns `true` if `value` is greater than `other`,
16971     *  else `false`.
16972     * @see _.lt
16973     * @example
16974     *
16975     * _.gt(3, 1);
16976     * // => true
16977     *
16978     * _.gt(3, 3);
16979     * // => false
16980     *
16981     * _.gt(1, 3);
16982     * // => false
16983     */
16984    var gt = createRelationalOperation(baseGt);
16985
16986    /**
16987     * Checks if `value` is greater than or equal to `other`.
16988     *
16989     * @static
16990     * @memberOf _
16991     * @since 3.9.0
16992     * @category Lang
16993     * @param {*} value The value to compare.
16994     * @param {*} other The other value to compare.
16995     * @returns {boolean} Returns `true` if `value` is greater than or equal to
16996     *  `other`, else `false`.
16997     * @see _.lte
16998     * @example
16999     *
17000     * _.gte(3, 1);
17001     * // => true
17002     *
17003     * _.gte(3, 3);
17004     * // => true
17005     *
17006     * _.gte(1, 3);
17007     * // => false
17008     */
17009    var gte = createRelationalOperation(function(value, other) {
17010      return value >= other;
17011    });
17012
17013    /**
17014     * Checks if `value` is likely an `arguments` object.
17015     *
17016     * @static
17017     * @memberOf _
17018     * @since 0.1.0
17019     * @category Lang
17020     * @param {*} value The value to check.
17021     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
17022     *  else `false`.
17023     * @example
17024     *
17025     * _.isArguments(function() { return arguments; }());
17026     * // => true
17027     *
17028     * _.isArguments([1, 2, 3]);
17029     * // => false
17030     */
17031    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
17032      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
17033        !propertyIsEnumerable.call(value, 'callee');
17034    };
17035
17036    /**
17037     * Checks if `value` is classified as an `Array` object.
17038     *
17039     * @static
17040     * @memberOf _
17041     * @since 0.1.0
17042     * @category Lang
17043     * @param {*} value The value to check.
17044     * @returns {boolean} Returns `true` if `value` is an array, else `false`.
17045     * @example
17046     *
17047     * _.isArray([1, 2, 3]);
17048     * // => true
17049     *
17050     * _.isArray(document.body.children);
17051     * // => false
17052     *
17053     * _.isArray('abc');
17054     * // => false
17055     *
17056     * _.isArray(_.noop);
17057     * // => false
17058     */
17059    var isArray = Array.isArray;
17060
17061    /**
17062     * Checks if `value` is classified as an `ArrayBuffer` object.
17063     *
17064     * @static
17065     * @memberOf _
17066     * @since 4.3.0
17067     * @category Lang
17068     * @param {*} value The value to check.
17069     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
17070     * @example
17071     *
17072     * _.isArrayBuffer(new ArrayBuffer(2));
17073     * // => true
17074     *
17075     * _.isArrayBuffer(new Array(2));
17076     * // => false
17077     */
17078    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
17079
17080    /**
17081     * Checks if `value` is array-like. A value is considered array-like if it's
17082     * not a function and has a `value.length` that's an integer greater than or
17083     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
17084     *
17085     * @static
17086     * @memberOf _
17087     * @since 4.0.0
17088     * @category Lang
17089     * @param {*} value The value to check.
17090     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
17091     * @example
17092     *
17093     * _.isArrayLike([1, 2, 3]);
17094     * // => true
17095     *
17096     * _.isArrayLike(document.body.children);
17097     * // => true
17098     *
17099     * _.isArrayLike('abc');
17100     * // => true
17101     *
17102     * _.isArrayLike(_.noop);
17103     * // => false
17104     */
17105    function isArrayLike(value) {
17106      return value != null && isLength(value.length) && !isFunction(value);
17107    }
17108
17109    /**
17110     * This method is like `_.isArrayLike` except that it also checks if `value`
17111     * is an object.
17112     *
17113     * @static
17114     * @memberOf _
17115     * @since 4.0.0
17116     * @category Lang
17117     * @param {*} value The value to check.
17118     * @returns {boolean} Returns `true` if `value` is an array-like object,
17119     *  else `false`.
17120     * @example
17121     *
17122     * _.isArrayLikeObject([1, 2, 3]);
17123     * // => true
17124     *
17125     * _.isArrayLikeObject(document.body.children);
17126     * // => true
17127     *
17128     * _.isArrayLikeObject('abc');
17129     * // => false
17130     *
17131     * _.isArrayLikeObject(_.noop);
17132     * // => false
17133     */
17134    function isArrayLikeObject(value) {
17135      return isObjectLike(value) && isArrayLike(value);
17136    }
17137
17138    /**
17139     * Checks if `value` is classified as a boolean primitive or object.
17140     *
17141     * @static
17142     * @memberOf _
17143     * @since 0.1.0
17144     * @category Lang
17145     * @param {*} value The value to check.
17146     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
17147     * @example
17148     *
17149     * _.isBoolean(false);
17150     * // => true
17151     *
17152     * _.isBoolean(null);
17153     * // => false
17154     */
17155    function isBoolean(value) {
17156      return value === true || value === false ||
17157        (isObjectLike(value) && baseGetTag(value) == boolTag);
17158    }
17159
17160    /**
17161     * Checks if `value` is a buffer.
17162     *
17163     * @static
17164     * @memberOf _
17165     * @since 4.3.0
17166     * @category Lang
17167     * @param {*} value The value to check.
17168     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
17169     * @example
17170     *
17171     * _.isBuffer(new Buffer(2));
17172     * // => true
17173     *
17174     * _.isBuffer(new Uint8Array(2));
17175     * // => false
17176     */
17177    var isBuffer = nativeIsBuffer || stubFalse;
17178
17179    /**
17180     * Checks if `value` is classified as a `Date` object.
17181     *
17182     * @static
17183     * @memberOf _
17184     * @since 0.1.0
17185     * @category Lang
17186     * @param {*} value The value to check.
17187     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
17188     * @example
17189     *
17190     * _.isDate(new Date);
17191     * // => true
17192     *
17193     * _.isDate('Mon April 23 2012');
17194     * // => false
17195     */
17196    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
17197
17198    /**
17199     * Checks if `value` is likely a DOM element.
17200     *
17201     * @static
17202     * @memberOf _
17203     * @since 0.1.0
17204     * @category Lang
17205     * @param {*} value The value to check.
17206     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
17207     * @example
17208     *
17209     * _.isElement(document.body);
17210     * // => true
17211     *
17212     * _.isElement('<body>');
17213     * // => false
17214     */
17215    function isElement(value) {
17216      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
17217    }
17218
17219    /**
17220     * Checks if `value` is an empty object, collection, map, or set.
17221     *
17222     * Objects are considered empty if they have no own enumerable string keyed
17223     * properties.
17224     *
17225     * Array-like values such as `arguments` objects, arrays, buffers, strings, or
17226     * jQuery-like collections are considered empty if they have a `length` of `0`.
17227     * Similarly, maps and sets are considered empty if they have a `size` of `0`.
17228     *
17229     * @static
17230     * @memberOf _
17231     * @since 0.1.0
17232     * @category Lang
17233     * @param {*} value The value to check.
17234     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
17235     * @example
17236     *
17237     * _.isEmpty(null);
17238     * // => true
17239     *
17240     * _.isEmpty(true);
17241     * // => true
17242     *
17243     * _.isEmpty(1);
17244     * // => true
17245     *
17246     * _.isEmpty([1, 2, 3]);
17247     * // => false
17248     *
17249     * _.isEmpty({ 'a': 1 });
17250     * // => false
17251     */
17252    function isEmpty(value) {
17253      if (value == null) {
17254        return true;
17255      }
17256      if (isArrayLike(value) &&
17257          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
17258            isBuffer(value) || isTypedArray(value) || isArguments(value))) {
17259        return !value.length;
17260      }
17261      var tag = getTag(value);
17262      if (tag == mapTag || tag == setTag) {
17263        return !value.size;
17264      }
17265      if (isPrototype(value)) {
17266        return !baseKeys(value).length;
17267      }
17268      for (var key in value) {
17269        if (hasOwnProperty.call(value, key)) {
17270          return false;
17271        }
17272      }
17273      return true;
17274    }
17275
17276    /**
17277     * Performs a deep comparison between two values to determine if they are
17278     * equivalent.
17279     *
17280     * **Note:** This method supports comparing arrays, array buffers, booleans,
17281     * date objects, error objects, maps, numbers, `Object` objects, regexes,
17282     * sets, strings, symbols, and typed arrays. `Object` objects are compared
17283     * by their own, not inherited, enumerable properties. Functions and DOM
17284     * nodes are compared by strict equality, i.e. `===`.
17285     *
17286     * @static
17287     * @memberOf _
17288     * @since 0.1.0
17289     * @category Lang
17290     * @param {*} value The value to compare.
17291     * @param {*} other The other value to compare.
17292     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
17293     * @example
17294     *
17295     * var object = { 'a': 1 };
17296     * var other = { 'a': 1 };
17297     *
17298     * _.isEqual(object, other);
17299     * // => true
17300     *
17301     * object === other;
17302     * // => false
17303     */
17304    function isEqual(value, other) {
17305      return baseIsEqual(value, other);
17306    }
17307
17308    /**
17309     * This method is like `_.isEqual` except that it accepts `customizer` which
17310     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
17311     * are handled by the method instead. The `customizer` is invoked with up to
17312     * six arguments: (objValue, othValue [, index|key, object, other, stack]).
17313     *
17314     * @static
17315     * @memberOf _
17316     * @since 4.0.0
17317     * @category Lang
17318     * @param {*} value The value to compare.
17319     * @param {*} other The other value to compare.
17320     * @param {Function} [customizer] The function to customize comparisons.
17321     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
17322     * @example
17323     *
17324     * function isGreeting(value) {
17325     *   return /^h(?:i|ello)$/.test(value);
17326     * }
17327     *
17328     * function customizer(objValue, othValue) {
17329     *   if (isGreeting(objValue) && isGreeting(othValue)) {
17330     *     return true;
17331     *   }
17332     * }
17333     *
17334     * var array = ['hello', 'goodbye'];
17335     * var other = ['hi', 'goodbye'];
17336     *
17337     * _.isEqualWith(array, other, customizer);
17338     * // => true
17339     */
17340    function isEqualWith(value, other, customizer) {
17341      customizer = typeof customizer == 'function' ? customizer : undefined;
17342      var result = customizer ? customizer(value, other) : undefined;
17343      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
17344    }
17345
17346    /**
17347     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
17348     * `SyntaxError`, `TypeError`, or `URIError` object.
17349     *
17350     * @static
17351     * @memberOf _
17352     * @since 3.0.0
17353     * @category Lang
17354     * @param {*} value The value to check.
17355     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
17356     * @example
17357     *
17358     * _.isError(new Error);
17359     * // => true
17360     *
17361     * _.isError(Error);
17362     * // => false
17363     */
17364    function isError(value) {
17365      if (!isObjectLike(value)) {
17366        return false;
17367      }
17368      var tag = baseGetTag(value);
17369      return tag == errorTag || tag == domExcTag ||
17370        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
17371    }
17372
17373    /**
17374     * Checks if `value` is a finite primitive number.
17375     *
17376     * **Note:** This method is based on
17377     * [`Number.isFinite`](https://mdn.io/Number/isFinite).
17378     *
17379     * @static
17380     * @memberOf _
17381     * @since 0.1.0
17382     * @category Lang
17383     * @param {*} value The value to check.
17384     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
17385     * @example
17386     *
17387     * _.isFinite(3);
17388     * // => true
17389     *
17390     * _.isFinite(Number.MIN_VALUE);
17391     * // => true
17392     *
17393     * _.isFinite(Infinity);
17394     * // => false
17395     *
17396     * _.isFinite('3');
17397     * // => false
17398     */
17399    function isFinite(value) {
17400      return typeof value == 'number' && nativeIsFinite(value);
17401    }
17402
17403    /**
17404     * Checks if `value` is classified as a `Function` object.
17405     *
17406     * @static
17407     * @memberOf _
17408     * @since 0.1.0
17409     * @category Lang
17410     * @param {*} value The value to check.
17411     * @returns {boolean} Returns `true` if `value` is a function, else `false`.
17412     * @example
17413     *
17414     * _.isFunction(_);
17415     * // => true
17416     *
17417     * _.isFunction(/abc/);
17418     * // => false
17419     */
17420    function isFunction(value) {
17421      if (!isObject(value)) {
17422        return false;
17423      }
17424      // The use of `Object#toString` avoids issues with the `typeof` operator
17425      // in Safari 9 which returns 'object' for typed arrays and other constructors.
17426      var tag = baseGetTag(value);
17427      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
17428    }
17429
17430    /**
17431     * Checks if `value` is an integer.
17432     *
17433     * **Note:** This method is based on
17434     * [`Number.isInteger`](https://mdn.io/Number/isInteger).
17435     *
17436     * @static
17437     * @memberOf _
17438     * @since 4.0.0
17439     * @category Lang
17440     * @param {*} value The value to check.
17441     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
17442     * @example
17443     *
17444     * _.isInteger(3);
17445     * // => true
17446     *
17447     * _.isInteger(Number.MIN_VALUE);
17448     * // => false
17449     *
17450     * _.isInteger(Infinity);
17451     * // => false
17452     *
17453     * _.isInteger('3');
17454     * // => false
17455     */
17456    function isInteger(value) {
17457      return typeof value == 'number' && value == toInteger(value);
17458    }
17459
17460    /**
17461     * Checks if `value` is a valid array-like length.
17462     *
17463     * **Note:** This method is loosely based on
17464     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
17465     *
17466     * @static
17467     * @memberOf _
17468     * @since 4.0.0
17469     * @category Lang
17470     * @param {*} value The value to check.
17471     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
17472     * @example
17473     *
17474     * _.isLength(3);
17475     * // => true
17476     *
17477     * _.isLength(Number.MIN_VALUE);
17478     * // => false
17479     *
17480     * _.isLength(Infinity);
17481     * // => false
17482     *
17483     * _.isLength('3');
17484     * // => false
17485     */
17486    function isLength(value) {
17487      return typeof value == 'number' &&
17488        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
17489    }
17490
17491    /**
17492     * Checks if `value` is the
17493     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
17494     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
17495     *
17496     * @static
17497     * @memberOf _
17498     * @since 0.1.0
17499     * @category Lang
17500     * @param {*} value The value to check.
17501     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
17502     * @example
17503     *
17504     * _.isObject({});
17505     * // => true
17506     *
17507     * _.isObject([1, 2, 3]);
17508     * // => true
17509     *
17510     * _.isObject(_.noop);
17511     * // => true
17512     *
17513     * _.isObject(null);
17514     * // => false
17515     */
17516    function isObject(value) {
17517      var type = typeof value;
17518      return value != null && (type == 'object' || type == 'function');
17519    }
17520
17521    /**
17522     * Checks if `value` is object-like. A value is object-like if it's not `null`
17523     * and has a `typeof` result of "object".
17524     *
17525     * @static
17526     * @memberOf _
17527     * @since 4.0.0
17528     * @category Lang
17529     * @param {*} value The value to check.
17530     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
17531     * @example
17532     *
17533     * _.isObjectLike({});
17534     * // => true
17535     *
17536     * _.isObjectLike([1, 2, 3]);
17537     * // => true
17538     *
17539     * _.isObjectLike(_.noop);
17540     * // => false
17541     *
17542     * _.isObjectLike(null);
17543     * // => false
17544     */
17545    function isObjectLike(value) {
17546      return value != null && typeof value == 'object';
17547    }
17548
17549    /**
17550     * Checks if `value` is classified as a `Map` object.
17551     *
17552     * @static
17553     * @memberOf _
17554     * @since 4.3.0
17555     * @category Lang
17556     * @param {*} value The value to check.
17557     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
17558     * @example
17559     *
17560     * _.isMap(new Map);
17561     * // => true
17562     *
17563     * _.isMap(new WeakMap);
17564     * // => false
17565     */
17566    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
17567
17568    /**
17569     * Performs a partial deep comparison between `object` and `source` to
17570     * determine if `object` contains equivalent property values.
17571     *
17572     * **Note:** This method is equivalent to `_.matches` when `source` is
17573     * partially applied.
17574     *
17575     * Partial comparisons will match empty array and empty object `source`
17576     * values against any array or object value, respectively. See `_.isEqual`
17577     * for a list of supported value comparisons.
17578     *
17579     * @static
17580     * @memberOf _
17581     * @since 3.0.0
17582     * @category Lang
17583     * @param {Object} object The object to inspect.
17584     * @param {Object} source The object of property values to match.
17585     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
17586     * @example
17587     *
17588     * var object = { 'a': 1, 'b': 2 };
17589     *
17590     * _.isMatch(object, { 'b': 2 });
17591     * // => true
17592     *
17593     * _.isMatch(object, { 'b': 1 });
17594     * // => false
17595     */
17596    function isMatch(object, source) {
17597      return object === source || baseIsMatch(object, source, getMatchData(source));
17598    }
17599
17600    /**
17601     * This method is like `_.isMatch` except that it accepts `customizer` which
17602     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
17603     * are handled by the method instead. The `customizer` is invoked with five
17604     * arguments: (objValue, srcValue, index|key, object, source).
17605     *
17606     * @static
17607     * @memberOf _
17608     * @since 4.0.0
17609     * @category Lang
17610     * @param {Object} object The object to inspect.
17611     * @param {Object} source The object of property values to match.
17612     * @param {Function} [customizer] The function to customize comparisons.
17613     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
17614     * @example
17615     *
17616     * function isGreeting(value) {
17617     *   return /^h(?:i|ello)$/.test(value);
17618     * }
17619     *
17620     * function customizer(objValue, srcValue) {
17621     *   if (isGreeting(objValue) && isGreeting(srcValue)) {
17622     *     return true;
17623     *   }
17624     * }
17625     *
17626     * var object = { 'greeting': 'hello' };
17627     * var source = { 'greeting': 'hi' };
17628     *
17629     * _.isMatchWith(object, source, customizer);
17630     * // => true
17631     */
17632    function isMatchWith(object, source, customizer) {
17633      customizer = typeof customizer == 'function' ? customizer : undefined;
17634      return baseIsMatch(object, source, getMatchData(source), customizer);
17635    }
17636
17637    /**
17638     * Checks if `value` is `NaN`.
17639     *
17640     * **Note:** This method is based on
17641     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
17642     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
17643     * `undefined` and other non-number values.
17644     *
17645     * @static
17646     * @memberOf _
17647     * @since 0.1.0
17648     * @category Lang
17649     * @param {*} value The value to check.
17650     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
17651     * @example
17652     *
17653     * _.isNaN(NaN);
17654     * // => true
17655     *
17656     * _.isNaN(new Number(NaN));
17657     * // => true
17658     *
17659     * isNaN(undefined);
17660     * // => true
17661     *
17662     * _.isNaN(undefined);
17663     * // => false
17664     */
17665    function isNaN(value) {
17666      // An `NaN` primitive is the only value that is not equal to itself.
17667      // Perform the `toStringTag` check first to avoid errors with some
17668      // ActiveX objects in IE.
17669      return isNumber(value) && value != +value;
17670    }
17671
17672    /**
17673     * Checks if `value` is a pristine native function.
17674     *
17675     * **Note:** This method can't reliably detect native functions in the presence
17676     * of the core-js package because core-js circumvents this kind of detection.
17677     * Despite multiple requests, the core-js maintainer has made it clear: any
17678     * attempt to fix the detection will be obstructed. As a result, we're left
17679     * with little choice but to throw an error. Unfortunately, this also affects
17680     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
17681     * which rely on core-js.
17682     *
17683     * @static
17684     * @memberOf _
17685     * @since 3.0.0
17686     * @category Lang
17687     * @param {*} value The value to check.
17688     * @returns {boolean} Returns `true` if `value` is a native function,
17689     *  else `false`.
17690     * @example
17691     *
17692     * _.isNative(Array.prototype.push);
17693     * // => true
17694     *
17695     * _.isNative(_);
17696     * // => false
17697     */
17698    function isNative(value) {
17699      if (isMaskable(value)) {
17700        throw new Error(CORE_ERROR_TEXT);
17701      }
17702      return baseIsNative(value);
17703    }
17704
17705    /**
17706     * Checks if `value` is `null`.
17707     *
17708     * @static
17709     * @memberOf _
17710     * @since 0.1.0
17711     * @category Lang
17712     * @param {*} value The value to check.
17713     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
17714     * @example
17715     *
17716     * _.isNull(null);
17717     * // => true
17718     *
17719     * _.isNull(void 0);
17720     * // => false
17721     */
17722    function isNull(value) {
17723      return value === null;
17724    }
17725
17726    /**
17727     * Checks if `value` is `null` or `undefined`.
17728     *
17729     * @static
17730     * @memberOf _
17731     * @since 4.0.0
17732     * @category Lang
17733     * @param {*} value The value to check.
17734     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
17735     * @example
17736     *
17737     * _.isNil(null);
17738     * // => true
17739     *
17740     * _.isNil(void 0);
17741     * // => true
17742     *
17743     * _.isNil(NaN);
17744     * // => false
17745     */
17746    function isNil(value) {
17747      return value == null;
17748    }
17749
17750    /**
17751     * Checks if `value` is classified as a `Number` primitive or object.
17752     *
17753     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
17754     * classified as numbers, use the `_.isFinite` method.
17755     *
17756     * @static
17757     * @memberOf _
17758     * @since 0.1.0
17759     * @category Lang
17760     * @param {*} value The value to check.
17761     * @returns {boolean} Returns `true` if `value` is a number, else `false`.
17762     * @example
17763     *
17764     * _.isNumber(3);
17765     * // => true
17766     *
17767     * _.isNumber(Number.MIN_VALUE);
17768     * // => true
17769     *
17770     * _.isNumber(Infinity);
17771     * // => true
17772     *
17773     * _.isNumber('3');
17774     * // => false
17775     */
17776    function isNumber(value) {
17777      return typeof value == 'number' ||
17778        (isObjectLike(value) && baseGetTag(value) == numberTag);
17779    }
17780
17781    /**
17782     * Checks if `value` is a plain object, that is, an object created by the
17783     * `Object` constructor or one with a `[[Prototype]]` of `null`.
17784     *
17785     * @static
17786     * @memberOf _
17787     * @since 0.8.0
17788     * @category Lang
17789     * @param {*} value The value to check.
17790     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
17791     * @example
17792     *
17793     * function Foo() {
17794     *   this.a = 1;
17795     * }
17796     *
17797     * _.isPlainObject(new Foo);
17798     * // => false
17799     *
17800     * _.isPlainObject([1, 2, 3]);
17801     * // => false
17802     *
17803     * _.isPlainObject({ 'x': 0, 'y': 0 });
17804     * // => true
17805     *
17806     * _.isPlainObject(Object.create(null));
17807     * // => true
17808     */
17809    function isPlainObject(value) {
17810      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
17811        return false;
17812      }
17813      var proto = getPrototype(value);
17814      if (proto === null) {
17815        return true;
17816      }
17817      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
17818      return typeof Ctor == 'function' && Ctor instanceof Ctor &&
17819        funcToString.call(Ctor) == objectCtorString;
17820    }
17821
17822    /**
17823     * Checks if `value` is classified as a `RegExp` object.
17824     *
17825     * @static
17826     * @memberOf _
17827     * @since 0.1.0
17828     * @category Lang
17829     * @param {*} value The value to check.
17830     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
17831     * @example
17832     *
17833     * _.isRegExp(/abc/);
17834     * // => true
17835     *
17836     * _.isRegExp('/abc/');
17837     * // => false
17838     */
17839    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
17840
17841    /**
17842     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
17843     * double precision number which isn't the result of a rounded unsafe integer.
17844     *
17845     * **Note:** This method is based on
17846     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
17847     *
17848     * @static
17849     * @memberOf _
17850     * @since 4.0.0
17851     * @category Lang
17852     * @param {*} value The value to check.
17853     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
17854     * @example
17855     *
17856     * _.isSafeInteger(3);
17857     * // => true
17858     *
17859     * _.isSafeInteger(Number.MIN_VALUE);
17860     * // => false
17861     *
17862     * _.isSafeInteger(Infinity);
17863     * // => false
17864     *
17865     * _.isSafeInteger('3');
17866     * // => false
17867     */
17868    function isSafeInteger(value) {
17869      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
17870    }
17871
17872    /**
17873     * Checks if `value` is classified as a `Set` object.
17874     *
17875     * @static
17876     * @memberOf _
17877     * @since 4.3.0
17878     * @category Lang
17879     * @param {*} value The value to check.
17880     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
17881     * @example
17882     *
17883     * _.isSet(new Set);
17884     * // => true
17885     *
17886     * _.isSet(new WeakSet);
17887     * // => false
17888     */
17889    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
17890
17891    /**
17892     * Checks if `value` is classified as a `String` primitive or object.
17893     *
17894     * @static
17895     * @since 0.1.0
17896     * @memberOf _
17897     * @category Lang
17898     * @param {*} value The value to check.
17899     * @returns {boolean} Returns `true` if `value` is a string, else `false`.
17900     * @example
17901     *
17902     * _.isString('abc');
17903     * // => true
17904     *
17905     * _.isString(1);
17906     * // => false
17907     */
17908    function isString(value) {
17909      return typeof value == 'string' ||
17910        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
17911    }
17912
17913    /**
17914     * Checks if `value` is classified as a `Symbol` primitive or object.
17915     *
17916     * @static
17917     * @memberOf _
17918     * @since 4.0.0
17919     * @category Lang
17920     * @param {*} value The value to check.
17921     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
17922     * @example
17923     *
17924     * _.isSymbol(Symbol.iterator);
17925     * // => true
17926     *
17927     * _.isSymbol('abc');
17928     * // => false
17929     */
17930    function isSymbol(value) {
17931      return typeof value == 'symbol' ||
17932        (isObjectLike(value) && baseGetTag(value) == symbolTag);
17933    }
17934
17935    /**
17936     * Checks if `value` is classified as a typed array.
17937     *
17938     * @static
17939     * @memberOf _
17940     * @since 3.0.0
17941     * @category Lang
17942     * @param {*} value The value to check.
17943     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
17944     * @example
17945     *
17946     * _.isTypedArray(new Uint8Array);
17947     * // => true
17948     *
17949     * _.isTypedArray([]);
17950     * // => false
17951     */
17952    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
17953
17954    /**
17955     * Checks if `value` is `undefined`.
17956     *
17957     * @static
17958     * @since 0.1.0
17959     * @memberOf _
17960     * @category Lang
17961     * @param {*} value The value to check.
17962     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
17963     * @example
17964     *
17965     * _.isUndefined(void 0);
17966     * // => true
17967     *
17968     * _.isUndefined(null);
17969     * // => false
17970     */
17971    function isUndefined(value) {
17972      return value === undefined;
17973    }
17974
17975    /**
17976     * Checks if `value` is classified as a `WeakMap` object.
17977     *
17978     * @static
17979     * @memberOf _
17980     * @since 4.3.0
17981     * @category Lang
17982     * @param {*} value The value to check.
17983     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
17984     * @example
17985     *
17986     * _.isWeakMap(new WeakMap);
17987     * // => true
17988     *
17989     * _.isWeakMap(new Map);
17990     * // => false
17991     */
17992    function isWeakMap(value) {
17993      return isObjectLike(value) && getTag(value) == weakMapTag;
17994    }
17995
17996    /**
17997     * Checks if `value` is classified as a `WeakSet` object.
17998     *
17999     * @static
18000     * @memberOf _
18001     * @since 4.3.0
18002     * @category Lang
18003     * @param {*} value The value to check.
18004     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
18005     * @example
18006     *
18007     * _.isWeakSet(new WeakSet);
18008     * // => true
18009     *
18010     * _.isWeakSet(new Set);
18011     * // => false
18012     */
18013    function isWeakSet(value) {
18014      return isObjectLike(value) && baseGetTag(value) == weakSetTag;
18015    }
18016
18017    /**
18018     * Checks if `value` is less than `other`.
18019     *
18020     * @static
18021     * @memberOf _
18022     * @since 3.9.0
18023     * @category Lang
18024     * @param {*} value The value to compare.
18025     * @param {*} other The other value to compare.
18026     * @returns {boolean} Returns `true` if `value` is less than `other`,
18027     *  else `false`.
18028     * @see _.gt
18029     * @example
18030     *
18031     * _.lt(1, 3);
18032     * // => true
18033     *
18034     * _.lt(3, 3);
18035     * // => false
18036     *
18037     * _.lt(3, 1);
18038     * // => false
18039     */
18040    var lt = createRelationalOperation(baseLt);
18041
18042    /**
18043     * Checks if `value` is less than or equal to `other`.
18044     *
18045     * @static
18046     * @memberOf _
18047     * @since 3.9.0
18048     * @category Lang
18049     * @param {*} value The value to compare.
18050     * @param {*} other The other value to compare.
18051     * @returns {boolean} Returns `true` if `value` is less than or equal to
18052     *  `other`, else `false`.
18053     * @see _.gte
18054     * @example
18055     *
18056     * _.lte(1, 3);
18057     * // => true
18058     *
18059     * _.lte(3, 3);
18060     * // => true
18061     *
18062     * _.lte(3, 1);
18063     * // => false
18064     */
18065    var lte = createRelationalOperation(function(value, other) {
18066      return value <= other;
18067    });
18068
18069    /**
18070     * Converts `value` to an array.
18071     *
18072     * @static
18073     * @since 0.1.0
18074     * @memberOf _
18075     * @category Lang
18076     * @param {*} value The value to convert.
18077     * @returns {Array} Returns the converted array.
18078     * @example
18079     *
18080     * _.toArray({ 'a': 1, 'b': 2 });
18081     * // => [1, 2]
18082     *
18083     * _.toArray('abc');
18084     * // => ['a', 'b', 'c']
18085     *
18086     * _.toArray(1);
18087     * // => []
18088     *
18089     * _.toArray(null);
18090     * // => []
18091     */
18092    function toArray(value) {
18093      if (!value) {
18094        return [];
18095      }
18096      if (isArrayLike(value)) {
18097        return isString(value) ? stringToArray(value) : copyArray(value);
18098      }
18099      if (symIterator && value[symIterator]) {
18100        return iteratorToArray(value[symIterator]());
18101      }
18102      var tag = getTag(value),
18103          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
18104
18105      return func(value);
18106    }
18107
18108    /**
18109     * Converts `value` to a finite number.
18110     *
18111     * @static
18112     * @memberOf _
18113     * @since 4.12.0
18114     * @category Lang
18115     * @param {*} value The value to convert.
18116     * @returns {number} Returns the converted number.
18117     * @example
18118     *
18119     * _.toFinite(3.2);
18120     * // => 3.2
18121     *
18122     * _.toFinite(Number.MIN_VALUE);
18123     * // => 5e-324
18124     *
18125     * _.toFinite(Infinity);
18126     * // => 1.7976931348623157e+308
18127     *
18128     * _.toFinite('3.2');
18129     * // => 3.2
18130     */
18131    function toFinite(value) {
18132      if (!value) {
18133        return value === 0 ? value : 0;
18134      }
18135      value = toNumber(value);
18136      if (value === INFINITY || value === -INFINITY) {
18137        var sign = (value < 0 ? -1 : 1);
18138        return sign * MAX_INTEGER;
18139      }
18140      return value === value ? value : 0;
18141    }
18142
18143    /**
18144     * Converts `value` to an integer.
18145     *
18146     * **Note:** This method is loosely based on
18147     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
18148     *
18149     * @static
18150     * @memberOf _
18151     * @since 4.0.0
18152     * @category Lang
18153     * @param {*} value The value to convert.
18154     * @returns {number} Returns the converted integer.
18155     * @example
18156     *
18157     * _.toInteger(3.2);
18158     * // => 3
18159     *
18160     * _.toInteger(Number.MIN_VALUE);
18161     * // => 0
18162     *
18163     * _.toInteger(Infinity);
18164     * // => 1.7976931348623157e+308
18165     *
18166     * _.toInteger('3.2');
18167     * // => 3
18168     */
18169    function toInteger(value) {
18170      var result = toFinite(value),
18171          remainder = result % 1;
18172
18173      return result === result ? (remainder ? result - remainder : result) : 0;
18174    }
18175
18176    /**
18177     * Converts `value` to an integer suitable for use as the length of an
18178     * array-like object.
18179     *
18180     * **Note:** This method is based on
18181     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
18182     *
18183     * @static
18184     * @memberOf _
18185     * @since 4.0.0
18186     * @category Lang
18187     * @param {*} value The value to convert.
18188     * @returns {number} Returns the converted integer.
18189     * @example
18190     *
18191     * _.toLength(3.2);
18192     * // => 3
18193     *
18194     * _.toLength(Number.MIN_VALUE);
18195     * // => 0
18196     *
18197     * _.toLength(Infinity);
18198     * // => 4294967295
18199     *
18200     * _.toLength('3.2');
18201     * // => 3
18202     */
18203    function toLength(value) {
18204      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
18205    }
18206
18207    /**
18208     * Converts `value` to a number.
18209     *
18210     * @static
18211     * @memberOf _
18212     * @since 4.0.0
18213     * @category Lang
18214     * @param {*} value The value to process.
18215     * @returns {number} Returns the number.
18216     * @example
18217     *
18218     * _.toNumber(3.2);
18219     * // => 3.2
18220     *
18221     * _.toNumber(Number.MIN_VALUE);
18222     * // => 5e-324
18223     *
18224     * _.toNumber(Infinity);
18225     * // => Infinity
18226     *
18227     * _.toNumber('3.2');
18228     * // => 3.2
18229     */
18230    function toNumber(value) {
18231      if (typeof value == 'number') {
18232        return value;
18233      }
18234      if (isSymbol(value)) {
18235        return NAN;
18236      }
18237      if (isObject(value)) {
18238        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
18239        value = isObject(other) ? (other + '') : other;
18240      }
18241      if (typeof value != 'string') {
18242        return value === 0 ? value : +value;
18243      }
18244      value = 
18244value.replace(reTrim, ''
vendor: 74,279 bytes, lines 18244-20616
18244);
18245      var isBinary = reIsBinary.test(value);
18246      return (isBinary || reIsOctal.test(value))
18247        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
18248        : (reIsBadHex.test(value) ? NAN : +value);
18249    }
18250
18251    /**
18252     * Converts `value` to a plain object flattening inherited enumerable string
18253     * keyed properties of `value` to own properties of the plain object.
18254     *
18255     * @static
18256     * @memberOf _
18257     * @since 3.0.0
18258     * @category Lang
18259     * @param {*} value The value to convert.
18260     * @returns {Object} Returns the converted plain object.
18261     * @example
18262     *
18263     * function Foo() {
18264     *   this.b = 2;
18265     * }
18266     *
18267     * Foo.prototype.c = 3;
18268     *
18269     * _.assign({ 'a': 1 }, new Foo);
18270     * // => { 'a': 1, 'b': 2 }
18271     *
18272     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
18273     * // => { 'a': 1, 'b': 2, 'c': 3 }
18274     */
18275    function toPlainObject(value) {
18276      return copyObject(value, keysIn(value));
18277    }
18278
18279    /**
18280     * Converts `value` to a safe integer. A safe integer can be compared and
18281     * represented correctly.
18282     *
18283     * @static
18284     * @memberOf _
18285     * @since 4.0.0
18286     * @category Lang
18287     * @param {*} value The value to convert.
18288     * @returns {number} Returns the converted integer.
18289     * @example
18290     *
18291     * _.toSafeInteger(3.2);
18292     * // => 3
18293     *
18294     * _.toSafeInteger(Number.MIN_VALUE);
18295     * // => 0
18296     *
18297     * _.toSafeInteger(Infinity);
18298     * // => 9007199254740991
18299     *
18300     * _.toSafeInteger('3.2');
18301     * // => 3
18302     */
18303    function toSafeInteger(value) {
18304      return value
18305        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
18306        : (value === 0 ? value : 0);
18307    }
18308
18309    /**
18310     * Converts `value` to a string. An empty string is returned for `null`
18311     * and `undefined` values. The sign of `-0` is preserved.
18312     *
18313     * @static
18314     * @memberOf _
18315     * @since 4.0.0
18316     * @category Lang
18317     * @param {*} value The value to convert.
18318     * @returns {string} Returns the converted string.
18319     * @example
18320     *
18321     * _.toString(null);
18322     * // => ''
18323     *
18324     * _.toString(-0);
18325     * // => '-0'
18326     *
18327     * _.toString([1, 2, 3]);
18328     * // => '1,2,3'
18329     */
18330    function toString(value) {
18331      return value == null ? '' : baseToString(value);
18332    }
18333
18334    /*------------------------------------------------------------------------*/
18335
18336    /**
18337     * Assigns own enumerable string keyed properties of source objects to the
18338     * destination object. Source objects are applied from left to right.
18339     * Subsequent sources overwrite property assignments of previous sources.
18340     *
18341     * **Note:** This method mutates `object` and is loosely based on
18342     * [`Object.assign`](https://mdn.io/Object/assign).
18343     *
18344     * @static
18345     * @memberOf _
18346     * @since 0.10.0
18347     * @category Object
18348     * @param {Object} object The destination object.
18349     * @param {...Object} [sources] The source objects.
18350     * @returns {Object} Returns `object`.
18351     * @see _.assignIn
18352     * @example
18353     *
18354     * function Foo() {
18355     *   this.a = 1;
18356     * }
18357     *
18358     * function Bar() {
18359     *   this.c = 3;
18360     * }
18361     *
18362     * Foo.prototype.b = 2;
18363     * Bar.prototype.d = 4;
18364     *
18365     * _.assign({ 'a': 0 }, new Foo, new Bar);
18366     * // => { 'a': 1, 'c': 3 }
18367     */
18368    var assign = createAssigner(function(object, source) {
18369      if (isPrototype(source) || isArrayLike(source)) {
18370        copyObject(source, keys(source), object);
18371        return;
18372      }
18373      for (var key in source) {
18374        if (hasOwnProperty.call(source, key)) {
18375          assignValue(object, key, source[key]);
18376        }
18377      }
18378    });
18379
18380    /**
18381     * This method is like `_.assign` except that it iterates over own and
18382     * inherited source properties.
18383     *
18384     * **Note:** This method mutates `object`.
18385     *
18386     * @static
18387     * @memberOf _
18388     * @since 4.0.0
18389     * @alias extend
18390     * @category Object
18391     * @param {Object} object The destination object.
18392     * @param {...Object} [sources] The source objects.
18393     * @returns {Object} Returns `object`.
18394     * @see _.assign
18395     * @example
18396     *
18397     * function Foo() {
18398     *   this.a = 1;
18399     * }
18400     *
18401     * function Bar() {
18402     *   this.c = 3;
18403     * }
18404     *
18405     * Foo.prototype.b = 2;
18406     * Bar.prototype.d = 4;
18407     *
18408     * _.assignIn({ 'a': 0 }, new Foo, new Bar);
18409     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
18410     */
18411    var assignIn = createAssigner(function(object, source) {
18412      copyObject(source, keysIn(source), object);
18413    });
18414
18415    /**
18416     * This method is like `_.assignIn` except that it accepts `customizer`
18417     * which is invoked to produce the assigned values. If `customizer` returns
18418     * `undefined`, assignment is handled by the method instead. The `customizer`
18419     * is invoked with five arguments: (objValue, srcValue, key, object, source).
18420     *
18421     * **Note:** This method mutates `object`.
18422     *
18423     * @static
18424     * @memberOf _
18425     * @since 4.0.0
18426     * @alias extendWith
18427     * @category Object
18428     * @param {Object} object The destination object.
18429     * @param {...Object} sources The source objects.
18430     * @param {Function} [customizer] The function to customize assigned values.
18431     * @returns {Object} Returns `object`.
18432     * @see _.assignWith
18433     * @example
18434     *
18435     * function customizer(objValue, srcValue) {
18436     *   return _.isUndefined(objValue) ? srcValue : objValue;
18437     * }
18438     *
18439     * var defaults = _.partialRight(_.assignInWith, customizer);
18440     *
18441     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
18442     * // => { 'a': 1, 'b': 2 }
18443     */
18444    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
18445      copyObject(source, keysIn(source), object, customizer);
18446    });
18447
18448    /**
18449     * This method is like `_.assign` except that it accepts `customizer`
18450     * which is invoked to produce the assigned values. If `customizer` returns
18451     * `undefined`, assignment is handled by the method instead. The `customizer`
18452     * is invoked with five arguments: (objValue, srcValue, key, object, source).
18453     *
18454     * **Note:** This method mutates `object`.
18455     *
18456     * @static
18457     * @memberOf _
18458     * @since 4.0.0
18459     * @category Object
18460     * @param {Object} object The destination object.
18461     * @param {...Object} sources The source objects.
18462     * @param {Function} [customizer] The function to customize assigned values.
18463     * @returns {Object} Returns `object`.
18464     * @see _.assignInWith
18465     * @example
18466     *
18467     * function customizer(objValue, srcValue) {
18468     *   return _.isUndefined(objValue) ? srcValue : objValue;
18469     * }
18470     *
18471     * var defaults = _.partialRight(_.assignWith, customizer);
18472     *
18473     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
18474     * // => { 'a': 1, 'b': 2 }
18475     */
18476    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
18477      copyObject(source, keys(source), object, customizer);
18478    });
18479
18480    /**
18481     * Creates an array of values corresponding to `paths` of `object`.
18482     *
18483     * @static
18484     * @memberOf _
18485     * @since 1.0.0
18486     * @category Object
18487     * @param {Object} object The object to iterate over.
18488     * @param {...(string|string[])} [paths] The property paths to pick.
18489     * @returns {Array} Returns the picked values.
18490     * @example
18491     *
18492     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
18493     *
18494     * _.at(object, ['a[0].b.c', 'a[1]']);
18495     * // => [3, 4]
18496     */
18497    var at = flatRest(baseAt);
18498
18499    /**
18500     * Creates an object that inherits from the `prototype` object. If a
18501     * `properties` object is given, its own enumerable string keyed properties
18502     * are assigned to the created object.
18503     *
18504     * @static
18505     * @memberOf _
18506     * @since 2.3.0
18507     * @category Object
18508     * @param {Object} prototype The object to inherit from.
18509     * @param {Object} [properties] The properties to assign to the object.
18510     * @returns {Object} Returns the new object.
18511     * @example
18512     *
18513     * function Shape() {
18514     *   this.x = 0;
18515     *   this.y = 0;
18516     * }
18517     *
18518     * function Circle() {
18519     *   Shape.call(this);
18520     * }
18521     *
18522     * Circle.prototype = _.create(Shape.prototype, {
18523     *   'constructor': Circle
18524     * });
18525     *
18526     * var circle = new Circle;
18527     * circle instanceof Circle;
18528     * // => true
18529     *
18530     * circle instanceof Shape;
18531     * // => true
18532     */
18533    function create(prototype, properties) {
18534      var result = baseCreate(prototype);
18535      return properties == null ? result : baseAssign(result, properties);
18536    }
18537
18538    /**
18539     * Assigns own and inherited enumerable string keyed properties of source
18540     * objects to the destination object for all destination properties that
18541     * resolve to `undefined`. Source objects are applied from left to right.
18542     * Once a property is set, additional values of the same property are ignored.
18543     *
18544     * **Note:** This method mutates `object`.
18545     *
18546     * @static
18547     * @since 0.1.0
18548     * @memberOf _
18549     * @category Object
18550     * @param {Object} object The destination object.
18551     * @param {...Object} [sources] The source objects.
18552     * @returns {Object} Returns `object`.
18553     * @see _.defaultsDeep
18554     * @example
18555     *
18556     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
18557     * // => { 'a': 1, 'b': 2 }
18558     */
18559    var defaults = baseRest(function(object, sources) {
18560      object = Object(object);
18561
18562      var index = -1;
18563      var length = sources.length;
18564      var guard = length > 2 ? sources[2] : undefined;
18565
18566      if (guard && isIterateeCall(sources[0], sources[1], guard)) {
18567        length = 1;
18568      }
18569
18570      while (++index < length) {
18571        var source = sources[index];
18572        var props = keysIn(source);
18573        var propsIndex = -1;
18574        var propsLength = props.length;
18575
18576        while (++propsIndex < propsLength) {
18577          var key = props[propsIndex];
18578          var value = object[key];
18579
18580          if (value === undefined ||
18581              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
18582            object[key] = source[key];
18583          }
18584        }
18585      }
18586
18587      return object;
18588    });
18589
18590    /**
18591     * This method is like `_.defaults` except that it recursively assigns
18592     * default properties.
18593     *
18594     * **Note:** This method mutates `object`.
18595     *
18596     * @static
18597     * @memberOf _
18598     * @since 3.10.0
18599     * @category Object
18600     * @param {Object} object The destination object.
18601     * @param {...Object} [sources] The source objects.
18602     * @returns {Object} Returns `object`.
18603     * @see _.defaults
18604     * @example
18605     *
18606     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
18607     * // => { 'a': { 'b': 2, 'c': 3 } }
18608     */
18609    var defaultsDeep = baseRest(function(args) {
18610      args.push(undefined, customDefaultsMerge);
18611      return apply(mergeWith, undefined, args);
18612    });
18613
18614    /**
18615     * This method is like `_.find` except that it returns the key of the first
18616     * element `predicate` returns truthy for instead of the element itself.
18617     *
18618     * @static
18619     * @memberOf _
18620     * @since 1.1.0
18621     * @category Object
18622     * @param {Object} object The object to inspect.
18623     * @param {Function} [predicate=_.identity] The function invoked per iteration.
18624     * @returns {string|undefined} Returns the key of the matched element,
18625     *  else `undefined`.
18626     * @example
18627     *
18628     * var users = {
18629     *   'barney':  { 'age': 36, 'active': true },
18630     *   'fred':    { 'age': 40, 'active': false },
18631     *   'pebbles': { 'age': 1,  'active': true }
18632     * };
18633     *
18634     * _.findKey(users, function(o) { return o.age < 40; });
18635     * // => 'barney' (iteration order is not guaranteed)
18636     *
18637     * // The `_.matches` iteratee shorthand.
18638     * _.findKey(users, { 'age': 1, 'active': true });
18639     * // => 'pebbles'
18640     *
18641     * // The `_.matchesProperty` iteratee shorthand.
18642     * _.findKey(users, ['active', false]);
18643     * // => 'fred'
18644     *
18645     * // The `_.property` iteratee shorthand.
18646     * _.findKey(users, 'active');
18647     * // => 'barney'
18648     */
18649    function findKey(object, predicate) {
18650      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
18651    }
18652
18653    /**
18654     * This method is like `_.findKey` except that it iterates over elements of
18655     * a collection in the opposite order.
18656     *
18657     * @static
18658     * @memberOf _
18659     * @since 2.0.0
18660     * @category Object
18661     * @param {Object} object The object to inspect.
18662     * @param {Function} [predicate=_.identity] The function invoked per iteration.
18663     * @returns {string|undefined} Returns the key of the matched element,
18664     *  else `undefined`.
18665     * @example
18666     *
18667     * var users = {
18668     *   'barney':  { 'age': 36, 'active': true },
18669     *   'fred':    { 'age': 40, 'active': false },
18670     *   'pebbles': { 'age': 1,  'active': true }
18671     * };
18672     *
18673     * _.findLastKey(users, function(o) { return o.age < 40; });
18674     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
18675     *
18676     * // The `_.matches` iteratee shorthand.
18677     * _.findLastKey(users, { 'age': 36, 'active': true });
18678     * // => 'barney'
18679     *
18680     * // The `_.matchesProperty` iteratee shorthand.
18681     * _.findLastKey(users, ['active', false]);
18682     * // => 'fred'
18683     *
18684     * // The `_.property` iteratee shorthand.
18685     * _.findLastKey(users, 'active');
18686     * // => 'pebbles'
18687     */
18688    function findLastKey(object, predicate) {
18689      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
18690    }
18691
18692    /**
18693     * Iterates over own and inherited enumerable string keyed properties of an
18694     * object and invokes `iteratee` for each property. The iteratee is invoked
18695     * with three arguments: (value, key, object). Iteratee functions may exit
18696     * iteration early by explicitly returning `false`.
18697     *
18698     * @static
18699     * @memberOf _
18700     * @since 0.3.0
18701     * @category Object
18702     * @param {Object} object The object to iterate over.
18703     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18704     * @returns {Object} Returns `object`.
18705     * @see _.forInRight
18706     * @example
18707     *
18708     * function Foo() {
18709     *   this.a = 1;
18710     *   this.b = 2;
18711     * }
18712     *
18713     * Foo.prototype.c = 3;
18714     *
18715     * _.forIn(new Foo, function(value, key) {
18716     *   console.log(key);
18717     * });
18718     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
18719     */
18720    function forIn(object, iteratee) {
18721      return object == null
18722        ? object
18723        : baseFor(object, getIteratee(iteratee, 3), keysIn);
18724    }
18725
18726    /**
18727     * This method is like `_.forIn` except that it iterates over properties of
18728     * `object` in the opposite order.
18729     *
18730     * @static
18731     * @memberOf _
18732     * @since 2.0.0
18733     * @category Object
18734     * @param {Object} object The object to iterate over.
18735     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18736     * @returns {Object} Returns `object`.
18737     * @see _.forIn
18738     * @example
18739     *
18740     * function Foo() {
18741     *   this.a = 1;
18742     *   this.b = 2;
18743     * }
18744     *
18745     * Foo.prototype.c = 3;
18746     *
18747     * _.forInRight(new Foo, function(value, key) {
18748     *   console.log(key);
18749     * });
18750     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
18751     */
18752    function forInRight(object, iteratee) {
18753      return object == null
18754        ? object
18755        : baseForRight(object, getIteratee(iteratee, 3), keysIn);
18756    }
18757
18758    /**
18759     * Iterates over own enumerable string keyed properties of an object and
18760     * invokes `iteratee` for each property. The iteratee is invoked with three
18761     * arguments: (value, key, object). Iteratee functions may exit iteration
18762     * early by explicitly returning `false`.
18763     *
18764     * @static
18765     * @memberOf _
18766     * @since 0.3.0
18767     * @category Object
18768     * @param {Object} object The object to iterate over.
18769     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18770     * @returns {Object} Returns `object`.
18771     * @see _.forOwnRight
18772     * @example
18773     *
18774     * function Foo() {
18775     *   this.a = 1;
18776     *   this.b = 2;
18777     * }
18778     *
18779     * Foo.prototype.c = 3;
18780     *
18781     * _.forOwn(new Foo, function(value, key) {
18782     *   console.log(key);
18783     * });
18784     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
18785     */
18786    function forOwn(object, iteratee) {
18787      return object && baseForOwn(object, getIteratee(iteratee, 3));
18788    }
18789
18790    /**
18791     * This method is like `_.forOwn` except that it iterates over properties of
18792     * `object` in the opposite order.
18793     *
18794     * @static
18795     * @memberOf _
18796     * @since 2.0.0
18797     * @category Object
18798     * @param {Object} object The object to iterate over.
18799     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
18800     * @returns {Object} Returns `object`.
18801     * @see _.forOwn
18802     * @example
18803     *
18804     * function Foo() {
18805     *   this.a = 1;
18806     *   this.b = 2;
18807     * }
18808     *
18809     * Foo.prototype.c = 3;
18810     *
18811     * _.forOwnRight(new Foo, function(value, key) {
18812     *   console.log(key);
18813     * });
18814     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
18815     */
18816    function forOwnRight(object, iteratee) {
18817      return object && baseForOwnRight(object, getIteratee(iteratee, 3));
18818    }
18819
18820    /**
18821     * Creates an array of function property names from own enumerable properties
18822     * of `object`.
18823     *
18824     * @static
18825     * @since 0.1.0
18826     * @memberOf _
18827     * @category Object
18828     * @param {Object} object The object to inspect.
18829     * @returns {Array} Returns the function names.
18830     * @see _.functionsIn
18831     * @example
18832     *
18833     * function Foo() {
18834     *   this.a = _.constant('a');
18835     *   this.b = _.constant('b');
18836     * }
18837     *
18838     * Foo.prototype.c = _.constant('c');
18839     *
18840     * _.functions(new Foo);
18841     * // => ['a', 'b']
18842     */
18843    function functions(object) {
18844      return object == null ? [] : baseFunctions(object, keys(object));
18845    }
18846
18847    /**
18848     * Creates an array of function property names from own and inherited
18849     * enumerable properties of `object`.
18850     *
18851     * @static
18852     * @memberOf _
18853     * @since 4.0.0
18854     * @category Object
18855     * @param {Object} object The object to inspect.
18856     * @returns {Array} Returns the function names.
18857     * @see _.functions
18858     * @example
18859     *
18860     * function Foo() {
18861     *   this.a = _.constant('a');
18862     *   this.b = _.constant('b');
18863     * }
18864     *
18865     * Foo.prototype.c = _.constant('c');
18866     *
18867     * _.functionsIn(new Foo);
18868     * // => ['a', 'b', 'c']
18869     */
18870    function functionsIn(object) {
18871      return object == null ? [] : baseFunctions(object, keysIn(object));
18872    }
18873
18874    /**
18875     * Gets the value at `path` of `object`. If the resolved value is
18876     * `undefined`, the `defaultValue` is returned in its place.
18877     *
18878     * @static
18879     * @memberOf _
18880     * @since 3.7.0
18881     * @category Object
18882     * @param {Object} object The object to query.
18883     * @param {Array|string} path The path of the property to get.
18884     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
18885     * @returns {*} Returns the resolved value.
18886     * @example
18887     *
18888     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
18889     *
18890     * _.get(object, 'a[0].b.c');
18891     * // => 3
18892     *
18893     * _.get(object, ['a', '0', 'b', 'c']);
18894     * // => 3
18895     *
18896     * _.get(object, 'a.b.c', 'default');
18897     * // => 'default'
18898     */
18899    function get(object, path, defaultValue) {
18900      var result = object == null ? undefined : baseGet(object, path);
18901      return result === undefined ? defaultValue : result;
18902    }
18903
18904    /**
18905     * Checks if `path` is a direct property of `object`.
18906     *
18907     * @static
18908     * @since 0.1.0
18909     * @memberOf _
18910     * @category Object
18911     * @param {Object} object The object to query.
18912     * @param {Array|string} path The path to check.
18913     * @returns {boolean} Returns `true` if `path` exists, else `false`.
18914     * @example
18915     *
18916     * var object = { 'a': { 'b': 2 } };
18917     * var other = _.create({ 'a': _.create({ 'b': 2 }) });
18918     *
18919     * _.has(object, 'a');
18920     * // => true
18921     *
18922     * _.has(object, 'a.b');
18923     * // => true
18924     *
18925     * _.has(object, ['a', 'b']);
18926     * // => true
18927     *
18928     * _.has(other, 'a');
18929     * // => false
18930     */
18931    function has(object, path) {
18932      return object != null && hasPath(object, path, baseHas);
18933    }
18934
18935    /**
18936     * Checks if `path` is a direct or inherited property of `object`.
18937     *
18938     * @static
18939     * @memberOf _
18940     * @since 4.0.0
18941     * @category Object
18942     * @param {Object} object The object to query.
18943     * @param {Array|string} path The path to check.
18944     * @returns {boolean} Returns `true` if `path` exists, else `false`.
18945     * @example
18946     *
18947     * var object = _.create({ 'a': _.create({ 'b': 2 }) });
18948     *
18949     * _.hasIn(object, 'a');
18950     * // => true
18951     *
18952     * _.hasIn(object, 'a.b');
18953     * // => true
18954     *
18955     * _.hasIn(object, ['a', 'b']);
18956     * // => true
18957     *
18958     * _.hasIn(object, 'b');
18959     * // => false
18960     */
18961    function hasIn(object, path) {
18962      return object != null && hasPath(object, path, baseHasIn);
18963    }
18964
18965    /**
18966     * Creates an object composed of the inverted keys and values of `object`.
18967     * If `object` contains duplicate values, subsequent values overwrite
18968     * property assignments of previous values.
18969     *
18970     * @static
18971     * @memberOf _
18972     * @since 0.7.0
18973     * @category Object
18974     * @param {Object} object The object to invert.
18975     * @returns {Object} Returns the new inverted object.
18976     * @example
18977     *
18978     * var object = { 'a': 1, 'b': 2, 'c': 1 };
18979     *
18980     * _.invert(object);
18981     * // => { '1': 'c', '2': 'b' }
18982     */
18983    var invert = createInverter(function(result, value, key) {
18984      if (value != null &&
18985          typeof value.toString != 'function') {
18986        value = nativeObjectToString.call(value);
18987      }
18988
18989      result[value] = key;
18990    }, constant(identity));
18991
18992    /**
18993     * This method is like `_.invert` except that the inverted object is generated
18994     * from the results of running each element of `object` thru `iteratee`. The
18995     * corresponding inverted value of each inverted key is an array of keys
18996     * responsible for generating the inverted value. The iteratee is invoked
18997     * with one argument: (value).
18998     *
18999     * @static
19000     * @memberOf _
19001     * @since 4.1.0
19002     * @category Object
19003     * @param {Object} object The object to invert.
19004     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
19005     * @returns {Object} Returns the new inverted object.
19006     * @example
19007     *
19008     * var object = { 'a': 1, 'b': 2, 'c': 1 };
19009     *
19010     * _.invertBy(object);
19011     * // => { '1': ['a', 'c'], '2': ['b'] }
19012     *
19013     * _.invertBy(object, function(value) {
19014     *   return 'group' + value;
19015     * });
19016     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
19017     */
19018    var invertBy = createInverter(function(result, value, key) {
19019      if (value != null &&
19020          typeof value.toString != 'function') {
19021        value = nativeObjectToString.call(value);
19022      }
19023
19024      if (hasOwnProperty.call(result, value)) {
19025        result[value].push(key);
19026      } else {
19027        result[value] = [key];
19028      }
19029    }, getIteratee);
19030
19031    /**
19032     * Invokes the method at `path` of `object`.
19033     *
19034     * @static
19035     * @memberOf _
19036     * @since 4.0.0
19037     * @category Object
19038     * @param {Object} object The object to query.
19039     * @param {Array|string} path The path of the method to invoke.
19040     * @param {...*} [args] The arguments to invoke the method with.
19041     * @returns {*} Returns the result of the invoked method.
19042     * @example
19043     *
19044     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
19045     *
19046     * _.invoke(object, 'a[0].b.c.slice', 1, 3);
19047     * // => [2, 3]
19048     */
19049    var invoke = baseRest(baseInvoke);
19050
19051    /**
19052     * Creates an array of the own enumerable property names of `object`.
19053     *
19054     * **Note:** Non-object values are coerced to objects. See the
19055     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
19056     * for more details.
19057     *
19058     * @static
19059     * @since 0.1.0
19060     * @memberOf _
19061     * @category Object
19062     * @param {Object} object The object to query.
19063     * @returns {Array} Returns the array of property names.
19064     * @example
19065     *
19066     * function Foo() {
19067     *   this.a = 1;
19068     *   this.b = 2;
19069     * }
19070     *
19071     * Foo.prototype.c = 3;
19072     *
19073     * _.keys(new Foo);
19074     * // => ['a', 'b'] (iteration order is not guaranteed)
19075     *
19076     * _.keys('hi');
19077     * // => ['0', '1']
19078     */
19079    function keys(object) {
19080      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
19081    }
19082
19083    /**
19084     * Creates an array of the own and inherited enumerable property names of `object`.
19085     *
19086     * **Note:** Non-object values are coerced to objects.
19087     *
19088     * @static
19089     * @memberOf _
19090     * @since 3.0.0
19091     * @category Object
19092     * @param {Object} object The object to query.
19093     * @returns {Array} Returns the array of property names.
19094     * @example
19095     *
19096     * function Foo() {
19097     *   this.a = 1;
19098     *   this.b = 2;
19099     * }
19100     *
19101     * Foo.prototype.c = 3;
19102     *
19103     * _.keysIn(new Foo);
19104     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
19105     */
19106    function keysIn(object) {
19107      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
19108    }
19109
19110    /**
19111     * The opposite of `_.mapValues`; this method creates an object with the
19112     * same values as `object` and keys generated by running each own enumerable
19113     * string keyed property of `object` thru `iteratee`. The iteratee is invoked
19114     * with three arguments: (value, key, object).
19115     *
19116     * @static
19117     * @memberOf _
19118     * @since 3.8.0
19119     * @category Object
19120     * @param {Object} object The object to iterate over.
19121     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
19122     * @returns {Object} Returns the new mapped object.
19123     * @see _.mapValues
19124     * @example
19125     *
19126     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
19127     *   return key + value;
19128     * });
19129     * // => { 'a1': 1, 'b2': 2 }
19130     */
19131    function mapKeys(object, iteratee) {
19132      var result = {};
19133      iteratee = getIteratee(iteratee, 3);
19134
19135      baseForOwn(object, function(value, key, object) {
19136        baseAssignValue(result, iteratee(value, key, object), value);
19137      });
19138      return result;
19139    }
19140
19141    /**
19142     * Creates an object with the same keys as `object` and values generated
19143     * by running each own enumerable string keyed property of `object` thru
19144     * `iteratee`. The iteratee is invoked with three arguments:
19145     * (value, key, object).
19146     *
19147     * @static
19148     * @memberOf _
19149     * @since 2.4.0
19150     * @category Object
19151     * @param {Object} object The object to iterate over.
19152     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
19153     * @returns {Object} Returns the new mapped object.
19154     * @see _.mapKeys
19155     * @example
19156     *
19157     * var users = {
19158     *   'fred':    { 'user': 'fred',    'age': 40 },
19159     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
19160     * };
19161     *
19162     * _.mapValues(users, function(o) { return o.age; });
19163     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
19164     *
19165     * // The `_.property` iteratee shorthand.
19166     * _.mapValues(users, 'age');
19167     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
19168     */
19169    function mapValues(object, iteratee) {
19170      var result = {};
19171      iteratee = getIteratee(iteratee, 3);
19172
19173      baseForOwn(object, function(value, key, object) {
19174        baseAssignValue(result, key, iteratee(value, key, object));
19175      });
19176      return result;
19177    }
19178
19179    /**
19180     * This method is like `_.assign` except that it recursively merges own and
19181     * inherited enumerable string keyed properties of source objects into the
19182     * destination object. Source properties that resolve to `undefined` are
19183     * skipped if a destination value exists. Array and plain object properties
19184     * are merged recursively. Other objects and value types are overridden by
19185     * assignment. Source objects are applied from left to right. Subsequent
19186     * sources overwrite property assignments of previous sources.
19187     *
19188     * **Note:** This method mutates `object`.
19189     *
19190     * @static
19191     * @memberOf _
19192     * @since 0.5.0
19193     * @category Object
19194     * @param {Object} object The destination object.
19195     * @param {...Object} [sources] The source objects.
19196     * @returns {Object} Returns `object`.
19197     * @example
19198     *
19199     * var object = {
19200     *   'a': [{ 'b': 2 }, { 'd': 4 }]
19201     * };
19202     *
19203     * var other = {
19204     *   'a': [{ 'c': 3 }, { 'e': 5 }]
19205     * };
19206     *
19207     * _.merge(object, other);
19208     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
19209     */
19210    var merge = createAssigner(function(object, source, srcIndex) {
19211      baseMerge(object, source, srcIndex);
19212    });
19213
19214    /**
19215     * This method is like `_.merge` except that it accepts `customizer` which
19216     * is invoked to produce the merged values of the destination and source
19217     * properties. If `customizer` returns `undefined`, merging is handled by the
19218     * method instead. The `customizer` is invoked with six arguments:
19219     * (objValue, srcValue, key, object, source, stack).
19220     *
19221     * **Note:** This method mutates `object`.
19222     *
19223     * @static
19224     * @memberOf _
19225     * @since 4.0.0
19226     * @category Object
19227     * @param {Object} object The destination object.
19228     * @param {...Object} sources The source objects.
19229     * @param {Function} customizer The function to customize assigned values.
19230     * @returns {Object} Returns `object`.
19231     * @example
19232     *
19233     * function customizer(objValue, srcValue) {
19234     *   if (_.isArray(objValue)) {
19235     *     return objValue.concat(srcValue);
19236     *   }
19237     * }
19238     *
19239     * var object = { 'a': [1], 'b': [2] };
19240     * var other = { 'a': [3], 'b': [4] };
19241     *
19242     * _.mergeWith(object, other, customizer);
19243     * // => { 'a': [1, 3], 'b': [2, 4] }
19244     */
19245    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
19246      baseMerge(object, source, srcIndex, customizer);
19247    });
19248
19249    /**
19250     * The opposite of `_.pick`; this method creates an object composed of the
19251     * own and inherited enumerable property paths of `object` that are not omitted.
19252     *
19253     * **Note:** This method is considerably slower than `_.pick`.
19254     *
19255     * @static
19256     * @since 0.1.0
19257     * @memberOf _
19258     * @category Object
19259     * @param {Object} object The source object.
19260     * @param {...(string|string[])} [paths] The property paths to omit.
19261     * @returns {Object} Returns the new object.
19262     * @example
19263     *
19264     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19265     *
19266     * _.omit(object, ['a', 'c']);
19267     * // => { 'b': '2' }
19268     */
19269    var omit = flatRest(function(object, paths) {
19270      var result = {};
19271      if (object == null) {
19272        return result;
19273      }
19274      var isDeep = false;
19275      paths = arrayMap(paths, function(path) {
19276        path = castPath(path, object);
19277        isDeep || (isDeep = path.length > 1);
19278        return path;
19279      });
19280      copyObject(object, getAllKeysIn(object), result);
19281      if (isDeep) {
19282        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
19283      }
19284      var length = paths.length;
19285      while (length--) {
19286        baseUnset(result, paths[length]);
19287      }
19288      return result;
19289    });
19290
19291    /**
19292     * The opposite of `_.pickBy`; this method creates an object composed of
19293     * the own and inherited enumerable string keyed properties of `object` that
19294     * `predicate` doesn't return truthy for. The predicate is invoked with two
19295     * arguments: (value, key).
19296     *
19297     * @static
19298     * @memberOf _
19299     * @since 4.0.0
19300     * @category Object
19301     * @param {Object} object The source object.
19302     * @param {Function} [predicate=_.identity] The function invoked per property.
19303     * @returns {Object} Returns the new object.
19304     * @example
19305     *
19306     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19307     *
19308     * _.omitBy(object, _.isNumber);
19309     * // => { 'b': '2' }
19310     */
19311    function omitBy(object, predicate) {
19312      return pickBy(object, negate(getIteratee(predicate)));
19313    }
19314
19315    /**
19316     * Creates an object composed of the picked `object` properties.
19317     *
19318     * @static
19319     * @since 0.1.0
19320     * @memberOf _
19321     * @category Object
19322     * @param {Object} object The source object.
19323     * @param {...(string|string[])} [paths] The property paths to pick.
19324     * @returns {Object} Returns the new object.
19325     * @example
19326     *
19327     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19328     *
19329     * _.pick(object, ['a', 'c']);
19330     * // => { 'a': 1, 'c': 3 }
19331     */
19332    var pick = flatRest(function(object, paths) {
19333      return object == null ? {} : basePick(object, paths);
19334    });
19335
19336    /**
19337     * Creates an object composed of the `object` properties `predicate` returns
19338     * truthy for. The predicate is invoked with two arguments: (value, key).
19339     *
19340     * @static
19341     * @memberOf _
19342     * @since 4.0.0
19343     * @category Object
19344     * @param {Object} object The source object.
19345     * @param {Function} [predicate=_.identity] The function invoked per property.
19346     * @returns {Object} Returns the new object.
19347     * @example
19348     *
19349     * var object = { 'a': 1, 'b': '2', 'c': 3 };
19350     *
19351     * _.pickBy(object, _.isNumber);
19352     * // => { 'a': 1, 'c': 3 }
19353     */
19354    function pickBy(object, predicate) {
19355      if (object == null) {
19356        return {};
19357      }
19358      var props = arrayMap(getAllKeysIn(object), function(prop) {
19359        return [prop];
19360      });
19361      predicate = getIteratee(predicate);
19362      return basePickBy(object, props, function(value, path) {
19363        return predicate(value, path[0]);
19364      });
19365    }
19366
19367    /**
19368     * This method is like `_.get` except that if the resolved value is a
19369     * function it's invoked with the `this` binding of its parent object and
19370     * its result is returned.
19371     *
19372     * @static
19373     * @since 0.1.0
19374     * @memberOf _
19375     * @category Object
19376     * @param {Object} object The object to query.
19377     * @param {Array|string} path The path of the property to resolve.
19378     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
19379     * @returns {*} Returns the resolved value.
19380     * @example
19381     *
19382     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
19383     *
19384     * _.result(object, 'a[0].b.c1');
19385     * // => 3
19386     *
19387     * _.result(object, 'a[0].b.c2');
19388     * // => 4
19389     *
19390     * _.result(object, 'a[0].b.c3', 'default');
19391     * // => 'default'
19392     *
19393     * _.result(object, 'a[0].b.c3', _.constant('default'));
19394     * // => 'default'
19395     */
19396    function result(object, path, defaultValue) {
19397      path = castPath(path, object);
19398
19399      var index = -1,
19400          length = path.length;
19401
19402      // Ensure the loop is entered when path is empty.
19403      if (!length) {
19404        length = 1;
19405        object = undefined;
19406      }
19407      while (++index < length) {
19408        var value = object == null ? undefined : object[toKey(path[index])];
19409        if (value === undefined) {
19410          index = length;
19411          value = defaultValue;
19412        }
19413        object = isFunction(value) ? value.call(object) : value;
19414      }
19415      return object;
19416    }
19417
19418    /**
19419     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
19420     * it's created. Arrays are created for missing index properties while objects
19421     * are created for all other missing properties. Use `_.setWith` to customize
19422     * `path` creation.
19423     *
19424     * **Note:** This method mutates `object`.
19425     *
19426     * @static
19427     * @memberOf _
19428     * @since 3.7.0
19429     * @category Object
19430     * @param {Object} object The object to modify.
19431     * @param {Array|string} path The path of the property to set.
19432     * @param {*} value The value to set.
19433     * @returns {Object} Returns `object`.
19434     * @example
19435     *
19436     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
19437     *
19438     * _.set(object, 'a[0].b.c', 4);
19439     * console.log(object.a[0].b.c);
19440     * // => 4
19441     *
19442     * _.set(object, ['x', '0', 'y', 'z'], 5);
19443     * console.log(object.x[0].y.z);
19444     * // => 5
19445     */
19446    function set(object, path, value) {
19447      return object == null ? object : baseSet(object, path, value);
19448    }
19449
19450    /**
19451     * This method is like `_.set` except that it accepts `customizer` which is
19452     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
19453     * path creation is handled by the method instead. The `customizer` is invoked
19454     * with three arguments: (nsValue, key, nsObject).
19455     *
19456     * **Note:** This method mutates `object`.
19457     *
19458     * @static
19459     * @memberOf _
19460     * @since 4.0.0
19461     * @category Object
19462     * @param {Object} object The object to modify.
19463     * @param {Array|string} path The path of the property to set.
19464     * @param {*} value The value to set.
19465     * @param {Function} [customizer] The function to customize assigned values.
19466     * @returns {Object} Returns `object`.
19467     * @example
19468     *
19469     * var object = {};
19470     *
19471     * _.setWith(object, '[0][1]', 'a', Object);
19472     * // => { '0': { '1': 'a' } }
19473     */
19474    function setWith(object, path, value, customizer) {
19475      customizer = typeof customizer == 'function' ? customizer : undefined;
19476      return object == null ? object : baseSet(object, path, value, customizer);
19477    }
19478
19479    /**
19480     * Creates an array of own enumerable string keyed-value pairs for `object`
19481     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
19482     * entries are returned.
19483     *
19484     * @static
19485     * @memberOf _
19486     * @since 4.0.0
19487     * @alias entries
19488     * @category Object
19489     * @param {Object} object The object to query.
19490     * @returns {Array} Returns the key-value pairs.
19491     * @example
19492     *
19493     * function Foo() {
19494     *   this.a = 1;
19495     *   this.b = 2;
19496     * }
19497     *
19498     * Foo.prototype.c = 3;
19499     *
19500     * _.toPairs(new Foo);
19501     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
19502     */
19503    var toPairs = createToPairs(keys);
19504
19505    /**
19506     * Creates an array of own and inherited enumerable string keyed-value pairs
19507     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
19508     * or set, its entries are returned.
19509     *
19510     * @static
19511     * @memberOf _
19512     * @since 4.0.0
19513     * @alias entriesIn
19514     * @category Object
19515     * @param {Object} object The object to query.
19516     * @returns {Array} Returns the key-value pairs.
19517     * @example
19518     *
19519     * function Foo() {
19520     *   this.a = 1;
19521     *   this.b = 2;
19522     * }
19523     *
19524     * Foo.prototype.c = 3;
19525     *
19526     * _.toPairsIn(new Foo);
19527     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
19528     */
19529    var toPairsIn = createToPairs(keysIn);
19530
19531    /**
19532     * An alternative to `_.reduce`; this method transforms `object` to a new
19533     * `accumulator` object which is the result of running each of its own
19534     * enumerable string keyed properties thru `iteratee`, with each invocation
19535     * potentially mutating the `accumulator` object. If `accumulator` is not
19536     * provided, a new object with the same `[[Prototype]]` will be used. The
19537     * iteratee is invoked with four arguments: (accumulator, value, key, object).
19538     * Iteratee functions may exit iteration early by explicitly returning `false`.
19539     *
19540     * @static
19541     * @memberOf _
19542     * @since 1.3.0
19543     * @category Object
19544     * @param {Object} object The object to iterate over.
19545     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
19546     * @param {*} [accumulator] The custom accumulator value.
19547     * @returns {*} Returns the accumulated value.
19548     * @example
19549     *
19550     * _.transform([2, 3, 4], function(result, n) {
19551     *   result.push(n *= n);
19552     *   return n % 2 == 0;
19553     * }, []);
19554     * // => [4, 9]
19555     *
19556     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
19557     *   (result[value] || (result[value] = [])).push(key);
19558     * }, {});
19559     * // => { '1': ['a', 'c'], '2': ['b'] }
19560     */
19561    function transform(object, iteratee, accumulator) {
19562      var isArr = isArray(object),
19563          isArrLike = isArr || isBuffer(object) || isTypedArray(object);
19564
19565      iteratee = getIteratee(iteratee, 4);
19566      if (accumulator == null) {
19567        var Ctor = object && object.constructor;
19568        if (isArrLike) {
19569          accumulator = isArr ? new Ctor : [];
19570        }
19571        else if (isObject(object)) {
19572          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
19573        }
19574        else {
19575          accumulator = {};
19576        }
19577      }
19578      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
19579        return iteratee(accumulator, value, index, object);
19580      });
19581      return accumulator;
19582    }
19583
19584    /**
19585     * Removes the property at `path` of `object`.
19586     *
19587     * **Note:** This method mutates `object`.
19588     *
19589     * @static
19590     * @memberOf _
19591     * @since 4.0.0
19592     * @category Object
19593     * @param {Object} object The object to modify.
19594     * @param {Array|string} path The path of the property to unset.
19595     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
19596     * @example
19597     *
19598     * var object = { 'a': [{ 'b': { 'c': 7 } }] };
19599     * _.unset(object, 'a[0].b.c');
19600     * // => true
19601     *
19602     * console.log(object);
19603     * // => { 'a': [{ 'b': {} }] };
19604     *
19605     * _.unset(object, ['a', '0', 'b', 'c']);
19606     * // => true
19607     *
19608     * console.log(object);
19609     * // => { 'a': [{ 'b': {} }] };
19610     */
19611    function unset(object, path) {
19612      return object == null ? true : baseUnset(object, path);
19613    }
19614
19615    /**
19616     * This method is like `_.set` except that accepts `updater` to produce the
19617     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
19618     * is invoked with one argument: (value).
19619     *
19620     * **Note:** This method mutates `object`.
19621     *
19622     * @static
19623     * @memberOf _
19624     * @since 4.6.0
19625     * @category Object
19626     * @param {Object} object The object to modify.
19627     * @param {Array|string} path The path of the property to set.
19628     * @param {Function} updater The function to produce the updated value.
19629     * @returns {Object} Returns `object`.
19630     * @example
19631     *
19632     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
19633     *
19634     * _.update(object, 'a[0].b.c', function(n) { return n * n; });
19635     * console.log(object.a[0].b.c);
19636     * // => 9
19637     *
19638     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
19639     * console.log(object.x[0].y.z);
19640     * // => 0
19641     */
19642    function update(object, path, updater) {
19643      return object == null ? object : baseUpdate(object, path, castFunction(updater));
19644    }
19645
19646    /**
19647     * This method is like `_.update` except that it accepts `customizer` which is
19648     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
19649     * path creation is handled by the method instead. The `customizer` is invoked
19650     * with three arguments: (nsValue, key, nsObject).
19651     *
19652     * **Note:** This method mutates `object`.
19653     *
19654     * @static
19655     * @memberOf _
19656     * @since 4.6.0
19657     * @category Object
19658     * @param {Object} object The object to modify.
19659     * @param {Array|string} path The path of the property to set.
19660     * @param {Function} updater The function to produce the updated value.
19661     * @param {Function} [customizer] The function to customize assigned values.
19662     * @returns {Object} Returns `object`.
19663     * @example
19664     *
19665     * var object = {};
19666     *
19667     * _.updateWith(object, '[0][1]', _.constant('a'), Object);
19668     * // => { '0': { '1': 'a' } }
19669     */
19670    function updateWith(object, path, updater, customizer) {
19671      customizer = typeof customizer == 'function' ? customizer : undefined;
19672      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
19673    }
19674
19675    /**
19676     * Creates an array of the own enumerable string keyed property values of `object`.
19677     *
19678     * **Note:** Non-object values are coerced to objects.
19679     *
19680     * @static
19681     * @since 0.1.0
19682     * @memberOf _
19683     * @category Object
19684     * @param {Object} object The object to query.
19685     * @returns {Array} Returns the array of property values.
19686     * @example
19687     *
19688     * function Foo() {
19689     *   this.a = 1;
19690     *   this.b = 2;
19691     * }
19692     *
19693     * Foo.prototype.c = 3;
19694     *
19695     * _.values(new Foo);
19696     * // => [1, 2] (iteration order is not guaranteed)
19697     *
19698     * _.values('hi');
19699     * // => ['h', 'i']
19700     */
19701    function values(object) {
19702      return object == null ? [] : baseValues(object, keys(object));
19703    }
19704
19705    /**
19706     * Creates an array of the own and inherited enumerable string keyed property
19707     * values of `object`.
19708     *
19709     * **Note:** Non-object values are coerced to objects.
19710     *
19711     * @static
19712     * @memberOf _
19713     * @since 3.0.0
19714     * @category Object
19715     * @param {Object} object The object to query.
19716     * @returns {Array} Returns the array of property values.
19717     * @example
19718     *
19719     * function Foo() {
19720     *   this.a = 1;
19721     *   this.b = 2;
19722     * }
19723     *
19724     * Foo.prototype.c = 3;
19725     *
19726     * _.valuesIn(new Foo);
19727     * // => [1, 2, 3] (iteration order is not guaranteed)
19728     */
19729    function valuesIn(object) {
19730      return object == null ? [] : baseValues(object, keysIn(object));
19731    }
19732
19733    /*------------------------------------------------------------------------*/
19734
19735    /**
19736     * Clamps `number` within the inclusive `lower` and `upper` bounds.
19737     *
19738     * @static
19739     * @memberOf _
19740     * @since 4.0.0
19741     * @category Number
19742     * @param {number} number The number to clamp.
19743     * @param {number} [lower] The lower bound.
19744     * @param {number} upper The upper bound.
19745     * @returns {number} Returns the clamped number.
19746     * @example
19747     *
19748     * _.clamp(-10, -5, 5);
19749     * // => -5
19750     *
19751     * _.clamp(10, -5, 5);
19752     * // => 5
19753     */
19754    function clamp(number, lower, upper) {
19755      if (upper === undefined) {
19756        upper = lower;
19757        lower = undefined;
19758      }
19759      if (upper !== undefined) {
19760        upper = toNumber(upper);
19761        upper = upper === upper ? upper : 0;
19762      }
19763      if (lower !== undefined) {
19764        lower = toNumber(lower);
19765        lower = lower === lower ? lower : 0;
19766      }
19767      return baseClamp(toNumber(number), lower, upper);
19768    }
19769
19770    /**
19771     * Checks if `n` is between `start` and up to, but not including, `end`. If
19772     * `end` is not specified, it's set to `start` with `start` then set to `0`.
19773     * If `start` is greater than `end` the params are swapped to support
19774     * negative ranges.
19775     *
19776     * @static
19777     * @memberOf _
19778     * @since 3.3.0
19779     * @category Number
19780     * @param {number} number The number to check.
19781     * @param {number} [start=0] The start of the range.
19782     * @param {number} end The end of the range.
19783     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
19784     * @see _.range, _.rangeRight
19785     * @example
19786     *
19787     * _.inRange(3, 2, 4);
19788     * // => true
19789     *
19790     * _.inRange(4, 8);
19791     * // => true
19792     *
19793     * _.inRange(4, 2);
19794     * // => false
19795     *
19796     * _.inRange(2, 2);
19797     * // => false
19798     *
19799     * _.inRange(1.2, 2);
19800     * // => true
19801     *
19802     * _.inRange(5.2, 4);
19803     * // => false
19804     *
19805     * _.inRange(-3, -2, -6);
19806     * // => true
19807     */
19808    function inRange(number, start, end) {
19809      start = toFinite(start);
19810      if (end === undefined) {
19811        end = start;
19812        start = 0;
19813      } else {
19814        end = toFinite(end);
19815      }
19816      number = toNumber(number);
19817      return baseInRange(number, start, end);
19818    }
19819
19820    /**
19821     * Produces a random number between the inclusive `lower` and `upper` bounds.
19822     * If only one argument is provided a number between `0` and the given number
19823     * is returned. If `floating` is `true`, or either `lower` or `upper` are
19824     * floats, a floating-point number is returned instead of an integer.
19825     *
19826     * **Note:** JavaScript follows the IEEE-754 standard for resolving
19827     * floating-point values which can produce unexpected results.
19828     *
19829     * @static
19830     * @memberOf _
19831     * @since 0.7.0
19832     * @category Number
19833     * @param {number} [lower=0] The lower bound.
19834     * @param {number} [upper=1] The upper bound.
19835     * @param {boolean} [floating] Specify returning a floating-point number.
19836     * @returns {number} Returns the random number.
19837     * @example
19838     *
19839     * _.random(0, 5);
19840     * // => an integer between 0 and 5
19841     *
19842     * _.random(5);
19843     * // => also an integer between 0 and 5
19844     *
19845     * _.random(5, true);
19846     * // => a floating-point number between 0 and 5
19847     *
19848     * _.random(1.2, 5.2);
19849     * // => a floating-point number between 1.2 and 5.2
19850     */
19851    function random(lower, upper, floating) {
19852      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
19853        upper = floating = undefined;
19854      }
19855      if (floating === undefined) {
19856        if (typeof upper == 'boolean') {
19857          floating = upper;
19858          upper = undefined;
19859        }
19860        else if (typeof lower == 'boolean') {
19861          floating = lower;
19862          lower = undefined;
19863        }
19864      }
19865      if (lower === undefined && upper === undefined) {
19866        lower = 0;
19867        upper = 1;
19868      }
19869      else {
19870        lower = toFinite(lower);
19871        if (upper === undefined) {
19872          upper = lower;
19873          lower = 0;
19874        } else {
19875          upper = toFinite(upper);
19876        }
19877      }
19878      if (lower > upper) {
19879        var temp = lower;
19880        lower = upper;
19881        upper = temp;
19882      }
19883      if (floating || lower % 1 || upper % 1) {
19884        var rand = nativeRandom();
19885        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
19886      }
19887      return baseRandom(lower, upper);
19888    }
19889
19890    /*------------------------------------------------------------------------*/
19891
19892    /**
19893     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
19894     *
19895     * @static
19896     * @memberOf _
19897     * @since 3.0.0
19898     * @category String
19899     * @param {string} [string=''] The string to convert.
19900     * @returns {string} Returns the camel cased string.
19901     * @example
19902     *
19903     * _.camelCase('Foo Bar');
19904     * // => 'fooBar'
19905     *
19906     * _.camelCase('--foo-bar--');
19907     * // => 'fooBar'
19908     *
19909     * _.camelCase('__FOO_BAR__');
19910     * // => 'fooBar'
19911     */
19912    var camelCase = createCompounder(function(result, word, index) {
19913      word = word.toLowerCase();
19914      return result + (index ? capitalize(word) : word);
19915    });
19916
19917    /**
19918     * Converts the first character of `string` to upper case and the remaining
19919     * to lower case.
19920     *
19921     * @static
19922     * @memberOf _
19923     * @since 3.0.0
19924     * @category String
19925     * @param {string} [string=''] The string to capitalize.
19926     * @returns {string} Returns the capitalized string.
19927     * @example
19928     *
19929     * _.capitalize('FRED');
19930     * // => 'Fred'
19931     */
19932    function capitalize(string) {
19933      return upperFirst(toString(string).toLowerCase());
19934    }
19935
19936    /**
19937     * Deburrs `string` by converting
19938     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
19939     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
19940     * letters to basic Latin letters and removing
19941     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
19942     *
19943     * @static
19944     * @memberOf _
19945     * @since 3.0.0
19946     * @category String
19947     * @param {string} [string=''] The string to deburr.
19948     * @returns {string} Returns the deburred string.
19949     * @example
19950     *
19951     * _.deburr('déjà vu');
19952     * // => 'deja vu'
19953     */
19954    function deburr(string) {
19955      string = toString(string);
19956      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
19957    }
19958
19959    /**
19960     * Checks if `string` ends with the given target string.
19961     *
19962     * @static
19963     * @memberOf _
19964     * @since 3.0.0
19965     * @category String
19966     * @param {string} [string=''] The string to inspect.
19967     * @param {string} [target] The string to search for.
19968     * @param {number} [position=string.length] The position to search up to.
19969     * @returns {boolean} Returns `true` if `string` ends with `target`,
19970     *  else `false`.
19971     * @example
19972     *
19973     * _.endsWith('abc', 'c');
19974     * // => true
19975     *
19976     * _.endsWith('abc', 'b');
19977     * // => false
19978     *
19979     * _.endsWith('abc', 'b', 2);
19980     * // => true
19981     */
19982    function endsWith(string, target, position) {
19983      string = toString(string);
19984      target = baseToString(target);
19985
19986      var length = string.length;
19987      position = position === undefined
19988        ? length
19989        : baseClamp(toInteger(position), 0, length);
19990
19991      var end = position;
19992      position -= target.length;
19993      return position >= 0 && string.slice(position, end) == target;
19994    }
19995
19996    /**
19997     * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
19998     * corresponding HTML entities.
19999     *
20000     * **Note:** No other characters are escaped. To escape additional
20001     * characters use a third-party library like [_he_](https://mths.be/he).
20002     *
20003     * Though the ">" character is escaped for symmetry, characters like
20004     * ">" and "/" don't need escaping in HTML and have no special meaning
20005     * unless they're part of a tag or unquoted attribute value. See
20006     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
20007     * (under "semi-related fun fact") for more details.
20008     *
20009     * When working with HTML you should always
20010     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
20011     * XSS vectors.
20012     *
20013     * @static
20014     * @since 0.1.0
20015     * @memberOf _
20016     * @category String
20017     * @param {string} [string=''] The string to escape.
20018     * @returns {string} Returns the escaped string.
20019     * @example
20020     *
20021     * _.escape('fred, barney, & pebbles');
20022     * // => 'fred, barney, &amp; pebbles'
20023     */
20024    function escape(string) {
20025      string = toString(string);
20026      return (string && reHasUnescapedHtml.test(string))
20027        ? string.replace(reUnescapedHtml, escapeHtmlChar)
20028        : string;
20029    }
20030
20031    /**
20032     * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
20033     * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
20034     *
20035     * @static
20036     * @memberOf _
20037     * @since 3.0.0
20038     * @category String
20039     * @param {string} [string=''] The string to escape.
20040     * @returns {string} Returns the escaped string.
20041     * @example
20042     *
20043     * _.escapeRegExp('[lodash](https://lodash.com/)');
20044     * // => '\[lodash\]\(https://lodash\.com/\)'
20045     */
20046    function escapeRegExp(string) {
20047      string = toString(string);
20048      return (string && reHasRegExpChar.test(string))
20049        ? string.replace(reRegExpChar, '\\$&')
20050        : string;
20051    }
20052
20053    /**
20054     * Converts `string` to
20055     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
20056     *
20057     * @static
20058     * @memberOf _
20059     * @since 3.0.0
20060     * @category String
20061     * @param {string} [string=''] The string to convert.
20062     * @returns {string} Returns the kebab cased string.
20063     * @example
20064     *
20065     * _.kebabCase('Foo Bar');
20066     * // => 'foo-bar'
20067     *
20068     * _.kebabCase('fooBar');
20069     * // => 'foo-bar'
20070     *
20071     * _.kebabCase('__FOO_BAR__');
20072     * // => 'foo-bar'
20073     */
20074    var kebabCase = createCompounder(function(result, word, index) {
20075      return result + (index ? '-' : '') + word.toLowerCase();
20076    });
20077
20078    /**
20079     * Converts `string`, as space separated words, to lower case.
20080     *
20081     * @static
20082     * @memberOf _
20083     * @since 4.0.0
20084     * @category String
20085     * @param {string} [string=''] The string to convert.
20086     * @returns {string} Returns the lower cased string.
20087     * @example
20088     *
20089     * _.lowerCase('--Foo-Bar--');
20090     * // => 'foo bar'
20091     *
20092     * _.lowerCase('fooBar');
20093     * // => 'foo bar'
20094     *
20095     * _.lowerCase('__FOO_BAR__');
20096     * // => 'foo bar'
20097     */
20098    var lowerCase = createCompounder(function(result, word, index) {
20099      return result + (index ? ' ' : '') + word.toLowerCase();
20100    });
20101
20102    /**
20103     * Converts the first character of `string` to lower case.
20104     *
20105     * @static
20106     * @memberOf _
20107     * @since 4.0.0
20108     * @category String
20109     * @param {string} [string=''] The string to convert.
20110     * @returns {string} Returns the converted string.
20111     * @example
20112     *
20113     * _.lowerFirst('Fred');
20114     * // => 'fred'
20115     *
20116     * _.lowerFirst('FRED');
20117     * // => 'fRED'
20118     */
20119    var lowerFirst = createCaseFirst('toLowerCase');
20120
20121    /**
20122     * Pads `string` on the left and right sides if it's shorter than `length`.
20123     * Padding characters are truncated if they can't be evenly divided by `length`.
20124     *
20125     * @static
20126     * @memberOf _
20127     * @since 3.0.0
20128     * @category String
20129     * @param {string} [string=''] The string to pad.
20130     * @param {number} [length=0] The padding length.
20131     * @param {string} [chars=' '] The string used as padding.
20132     * @returns {string} Returns the padded string.
20133     * @example
20134     *
20135     * _.pad('abc', 8);
20136     * // => '  abc   '
20137     *
20138     * _.pad('abc', 8, '_-');
20139     * // => '_-abc_-_'
20140     *
20141     * _.pad('abc', 3);
20142     * // => 'abc'
20143     */
20144    function pad(string, length, chars) {
20145      string = toString(string);
20146      length = toInteger(length);
20147
20148      var strLength = length ? stringSize(string) : 0;
20149      if (!length || strLength >= length) {
20150        return string;
20151      }
20152      var mid = (length - strLength) / 2;
20153      return (
20154        createPadding(nativeFloor(mid), chars) +
20155        string +
20156        createPadding(nativeCeil(mid), chars)
20157      );
20158    }
20159
20160    /**
20161     * Pads `string` on the right side if it's shorter than `length`. Padding
20162     * characters are truncated if they exceed `length`.
20163     *
20164     * @static
20165     * @memberOf _
20166     * @since 4.0.0
20167     * @category String
20168     * @param {string} [string=''] The string to pad.
20169     * @param {number} [length=0] The padding length.
20170     * @param {string} [chars=' '] The string used as padding.
20171     * @returns {string} Returns the padded string.
20172     * @example
20173     *
20174     * _.padEnd('abc', 6);
20175     * // => 'abc   '
20176     *
20177     * _.padEnd('abc', 6, '_-');
20178     * // => 'abc_-_'
20179     *
20180     * _.padEnd('abc', 3);
20181     * // => 'abc'
20182     */
20183    function padEnd(string, length, chars) {
20184      string = toString(string);
20185      length = toInteger(length);
20186
20187      var strLength = length ? stringSize(string) : 0;
20188      return (length && strLength < length)
20189        ? (string + createPadding(length - strLength, chars))
20190        : string;
20191    }
20192
20193    /**
20194     * Pads `string` on the left side if it's shorter than `length`. Padding
20195     * characters are truncated if they exceed `length`.
20196     *
20197     * @static
20198     * @memberOf _
20199     * @since 4.0.0
20200     * @category String
20201     * @param {string} [string=''] The string to pad.
20202     * @param {number} [length=0] The padding length.
20203     * @param {string} [chars=' '] The string used as padding.
20204     * @returns {string} Returns the padded string.
20205     * @example
20206     *
20207     * _.padStart('abc', 6);
20208     * // => '   abc'
20209     *
20210     * _.padStart('abc', 6, '_-');
20211     * // => '_-_abc'
20212     *
20213     * _.padStart('abc', 3);
20214     * // => 'abc'
20215     */
20216    function padStart(string, length, chars) {
20217      string = toString(string);
20218      length = toInteger(length);
20219
20220      var strLength = length ? stringSize(string) : 0;
20221      return (length && strLength < length)
20222        ? (createPadding(length - strLength, chars) + string)
20223        : string;
20224    }
20225
20226    /**
20227     * Converts `string` to an integer of the specified radix. If `radix` is
20228     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
20229     * hexadecimal, in which case a `radix` of `16` is used.
20230     *
20231     * **Note:** This method aligns with the
20232     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
20233     *
20234     * @static
20235     * @memberOf _
20236     * @since 1.1.0
20237     * @category String
20238     * @param {string} string The string to convert.
20239     * @param {number} [radix=10] The radix to interpret `value` by.
20240     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20241     * @returns {number} Returns the converted integer.
20242     * @example
20243     *
20244     * _.parseInt('08');
20245     * // => 8
20246     *
20247     * _.map(['6', '08', '10'], _.parseInt);
20248     * // => [6, 8, 10]
20249     */
20250    function parseInt(string, radix, guard) {
20251      if (guard || radix == null) {
20252        radix = 0;
20253      } else if (radix) {
20254        radix = +radix;
20255      }
20256      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
20257    }
20258
20259    /**
20260     * Repeats the given string `n` times.
20261     *
20262     * @static
20263     * @memberOf _
20264     * @since 3.0.0
20265     * @category String
20266     * @param {string} [string=''] The string to repeat.
20267     * @param {number} [n=1] The number of times to repeat the string.
20268     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20269     * @returns {string} Returns the repeated string.
20270     * @example
20271     *
20272     * _.repeat('*', 3);
20273     * // => '***'
20274     *
20275     * _.repeat('abc', 2);
20276     * // => 'abcabc'
20277     *
20278     * _.repeat('abc', 0);
20279     * // => ''
20280     */
20281    function repeat(string, n, guard) {
20282      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
20283        n = 1;
20284      } else {
20285        n = toInteger(n);
20286      }
20287      return baseRepeat(toString(string), n);
20288    }
20289
20290    /**
20291     * Replaces matches for `pattern` in `string` with `replacement`.
20292     *
20293     * **Note:** This method is based on
20294     * [`String#replace`](https://mdn.io/String/replace).
20295     *
20296     * @static
20297     * @memberOf _
20298     * @since 4.0.0
20299     * @category String
20300     * @param {string} [string=''] The string to modify.
20301     * @param {RegExp|string} pattern The pattern to replace.
20302     * @param {Function|string} replacement The match replacement.
20303     * @returns {string} Returns the modified string.
20304     * @example
20305     *
20306     * _.replace('Hi Fred', 'Fred', 'Barney');
20307     * // => 'Hi Barney'
20308     */
20309    function replace() {
20310      var args = arguments,
20311          string = toString(args[0]);
20312
20313      return args.length < 3 ? string : string.replace(args[1], args[2]);
20314    }
20315
20316    /**
20317     * Converts `string` to
20318     * [snake case](https://en.wikipedia.org/wiki/Snake_case).
20319     *
20320     * @static
20321     * @memberOf _
20322     * @since 3.0.0
20323     * @category String
20324     * @param {string} [string=''] The string to convert.
20325     * @returns {string} Returns the snake cased string.
20326     * @example
20327     *
20328     * _.snakeCase('Foo Bar');
20329     * // => 'foo_bar'
20330     *
20331     * _.snakeCase('fooBar');
20332     * // => 'foo_bar'
20333     *
20334     * _.snakeCase('--FOO-BAR--');
20335     * // => 'foo_bar'
20336     */
20337    var snakeCase = createCompounder(function(result, word, index) {
20338      return result + (index ? '_' : '') + word.toLowerCase();
20339    });
20340
20341    /**
20342     * Splits `string` by `separator`.
20343     *
20344     * **Note:** This method is based on
20345     * [`String#split`](https://mdn.io/String/split).
20346     *
20347     * @static
20348     * @memberOf _
20349     * @since 4.0.0
20350     * @category String
20351     * @param {string} [string=''] The string to split.
20352     * @param {RegExp|string} separator The separator pattern to split by.
20353     * @param {number} [limit] The length to truncate results to.
20354     * @returns {Array} Returns the string segments.
20355     * @example
20356     *
20357     * _.split('a-b-c', '-', 2);
20358     * // => ['a', 'b']
20359     */
20360    function split(string, separator, limit) {
20361      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
20362        separator = limit = undefined;
20363      }
20364      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
20365      if (!limit) {
20366        return [];
20367      }
20368      string = toString(string);
20369      if (string && (
20370            typeof separator == 'string' ||
20371            (separator != null && !isRegExp(separator))
20372          )) {
20373        separator = baseToString(separator);
20374        if (!separator && hasUnicode(string)) {
20375          return castSlice(stringToArray(string), 0, limit);
20376        }
20377      }
20378      return string.split(separator, limit);
20379    }
20380
20381    /**
20382     * Converts `string` to
20383     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
20384     *
20385     * @static
20386     * @memberOf _
20387     * @since 3.1.0
20388     * @category String
20389     * @param {string} [string=''] The string to convert.
20390     * @returns {string} Returns the start cased string.
20391     * @example
20392     *
20393     * _.startCase('--foo-bar--');
20394     * // => 'Foo Bar'
20395     *
20396     * _.startCase('fooBar');
20397     * // => 'Foo Bar'
20398     *
20399     * _.startCase('__FOO_BAR__');
20400     * // => 'FOO BAR'
20401     */
20402    var startCase = createCompounder(function(result, word, index) {
20403      return result + (index ? ' ' : '') + upperFirst(word);
20404    });
20405
20406    /**
20407     * Checks if `string` starts with the given target string.
20408     *
20409     * @static
20410     * @memberOf _
20411     * @since 3.0.0
20412     * @category String
20413     * @param {string} [string=''] The string to inspect.
20414     * @param {string} [target] The string to search for.
20415     * @param {number} [position=0] The position to search from.
20416     * @returns {boolean} Returns `true` if `string` starts with `target`,
20417     *  else `false`.
20418     * @example
20419     *
20420     * _.startsWith('abc', 'a');
20421     * // => true
20422     *
20423     * _.startsWith('abc', 'b');
20424     * // => false
20425     *
20426     * _.startsWith('abc', 'b', 1);
20427     * // => true
20428     */
20429    function startsWith(string, target, position) {
20430      string = toString(string);
20431      position = position == null
20432        ? 0
20433        : baseClamp(toInteger(position), 0, string.length);
20434
20435      target = baseToString(target);
20436      return string.slice(position, position + target.length) == target;
20437    }
20438
20439    /**
20440     * Creates a compiled template function that can interpolate data properties
20441     * in "interpolate" delimiters, HTML-escape interpolated data properties in
20442     * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
20443     * properties may be accessed as free variables in the template. If a setting
20444     * object is given, it takes precedence over `_.templateSettings` values.
20445     *
20446     * **Note:** In the development build `_.template` utilizes
20447     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
20448     * for easier debugging.
20449     *
20450     * For more information on precompiling templates see
20451     * [lodash's custom builds documentation](https://lodash.com/custom-builds).
20452     *
20453     * For more information on Chrome extension sandboxes see
20454     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
20455     *
20456     * @static
20457     * @since 0.1.0
20458     * @memberOf _
20459     * @category String
20460     * @param {string} [string=''] The template string.
20461     * @param {Object} [options={}] The options object.
20462     * @param {RegExp} [options.escape=_.templateSettings.escape]
20463     *  The HTML "escape" delimiter.
20464     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
20465     *  The "evaluate" delimiter.
20466     * @param {Object} [options.imports=_.templateSettings.imports]
20467     *  An object to import into the template as free variables.
20468     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
20469     *  The "interpolate" delimiter.
20470     * @param {string} [options.sourceURL='lodash.templateSources[n]']
20471     *  The sourceURL of the compiled template.
20472     * @param {string} [options.variable='obj']
20473     *  The data object variable name.
20474     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20475     * @returns {Function} Returns the compiled template function.
20476     * @example
20477     *
20478     * // Use the "interpolate" delimiter to create a compiled template.
20479     * var compiled = _.template('hello <%= user %>!');
20480     * compiled({ 'user': 'fred' });
20481     * // => 'hello fred!'
20482     *
20483     * // Use the HTML "escape" delimiter to escape data property values.
20484     * var compiled = _.template('<b><%- value %></b>');
20485     * compiled({ 'value': '<script>' });
20486     * // => '<b>&lt;script&gt;</b>'
20487     *
20488     * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
20489     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
20490     * compiled({ 'users': ['fred', 'barney'] });
20491     * // => '<li>fred</li><li>barney</li>'
20492     *
20493     * // Use the internal `print` function in "evaluate" delimiters.
20494     * var compiled = _.template('<% print("hello " + user); %>!');
20495     * compiled({ 'user': 'barney' });
20496     * // => 'hello barney!'
20497     *
20498     * // Use the ES template literal delimiter as an "interpolate" delimiter.
20499     * // Disable support by replacing the "interpolate" delimiter.
20500     * var compiled = _.template('hello ${ user }!');
20501     * compiled({ 'user': 'pebbles' });
20502     * // => 'hello pebbles!'
20503     *
20504     * // Use backslashes to treat delimiters as plain text.
20505     * var compiled = _.template('<%= "\\<%- value %\\>" %>');
20506     * compiled({ 'value': 'ignored' });
20507     * // => '<%- value %>'
20508     *
20509     * // Use the `imports` option to import `jQuery` as `jq`.
20510     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
20511     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
20512     * compiled({ 'users': ['fred', 'barney'] });
20513     * // => '<li>fred</li><li>barney</li>'
20514     *
20515     * // Use the `sourceURL` option to specify a custom sourceURL for the template.
20516     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
20517     * compiled(data);
20518     * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
20519     *
20520     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
20521     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
20522     * compiled.source;
20523     * // => function(data) {
20524     * //   var __t, __p = '';
20525     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
20526     * //   return __p;
20527     * // }
20528     *
20529     * // Use custom template delimiters.
20530     * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
20531     * var compiled = _.template('hello {{ user }}!');
20532     * compiled({ 'user': 'mustache' });
20533     * // => 'hello mustache!'
20534     *
20535     * // Use the `source` property to inline compiled templates for meaningful
20536     * // line numbers in error messages and stack traces.
20537     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
20538     *   var JST = {\
20539     *     "main": ' + _.template(mainText).source + '\
20540     *   };\
20541     * ');
20542     */
20543    function template(string, options, guard) {
20544      // Based on John Resig's `tmpl` implementation
20545      // (http://ejohn.org/blog/javascript-micro-templating/)
20546      // and Laura Doktorova's doT.js (https://github.com/olado/doT).
20547      var settings = lodash.templateSettings;
20548
20549      if (guard && isIterateeCall(string, options, guard)) {
20550        options = undefined;
20551      }
20552      string = toString(string);
20553      options = assignInWith({}, options, settings, customDefaultsAssignIn);
20554
20555      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
20556          importsKeys = keys(imports),
20557          importsValues = baseValues(imports, importsKeys);
20558
20559      var isEscaping,
20560          isEvaluating,
20561          index = 0,
20562          interpolate = options.interpolate || reNoMatch,
20563          source = "__p += '";
20564
20565      // Compile the regexp to match each delimiter.
20566      var reDelimiters = RegExp(
20567        (options.escape || reNoMatch).source + '|' +
20568        interpolate.source + '|' +
20569        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
20570        (options.evaluate || reNoMatch).source + '|$'
20571      , 'g');
20572
20573      // Use a sourceURL for easier debugging.
20574      // The sourceURL gets injected into the source that's eval-ed, so be careful
20575      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
20576      // and escape the comment, thus injecting code that gets evaled.
20577      var sourceURL = '//# sourceURL=' +
20578        (hasOwnProperty.call(options, 'sourceURL')
20579          ? (options.sourceURL + '').replace(/\s/g, ' ')
20580          : ('lodash.templateSources[' + (++templateCounter) + ']')
20581        ) + '\n';
20582
20583      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
20584        interpolateValue || (interpolateValue = esTemplateValue);
20585
20586        // Escape characters that can't be included in string literals.
20587        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
20588
20589        // Replace delimiters with snippets.
20590        if (escapeValue) {
20591          isEscaping = true;
20592          source += "' +\n__e(" + escapeValue + ") +\n'";
20593        }
20594        if (evaluateValue) {
20595          isEvaluating = true;
20596          source += "';\n" + evaluateValue + ";\n__p += '";
20597        }
20598        if (interpolateValue) {
20599          source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
20600        }
20601        index = offset + match.length;
20602
20603        // The JS engine embedded in Adobe products needs `match` returned in
20604        // order to produce the correct `offset` value.
20605        return match;
20606      });
20607
20608      source += "';\n";
20609
20610      // If `variable` is not specified wrap a with-statement around the generated
20611      // code to add the data object to the top of the scope chain.
20612      var variable = hasOwnProperty.call(options, 'variable') && options.variable;
20613      if (!variable) {
20614        source = 'with (obj) {\n' + source + '\n}\n';
20615      }
20616      // 
vendor: 4,217 bytes, lines 20616-20761
20616Cleanup code by stripping empty strings.
20617      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
20618        .replace(reEmptyStringMiddle, '$1')
20619        .replace(reEmptyStringTrailing, '$1;');
20620
20621      // Frame code as the function body.
20622      source = 'function(' + (variable || 'obj') + ') {\n' +
20623        (variable
20624          ? ''
20625          : 'obj || (obj = {});\n'
20626        ) +
20627        "var __t, __p = ''" +
20628        (isEscaping
20629           ? ', __e = _.escape'
20630           : ''
20631        ) +
20632        (isEvaluating
20633          ? ', __j = Array.prototype.join;\n' +
20634            "function print() { __p += __j.call(arguments, '') }\n"
20635          : ';\n'
20636        ) +
20637        source +
20638        'return __p\n}';
20639
20640      var result = attempt(function() {
20641        return Function(importsKeys, sourceURL + 'return ' + source)
20642          .apply(undefined, importsValues);
20643      });
20644
20645      // Provide the compiled function's source by its `toString` method or
20646      // the `source` property as a convenience for inlining compiled templates.
20647      result.source = source;
20648      if (isError(result)) {
20649        throw result;
20650      }
20651      return result;
20652    }
20653
20654    /**
20655     * Converts `string`, as a whole, to lower case just like
20656     * [String#toLowerCase](https://mdn.io/toLowerCase).
20657     *
20658     * @static
20659     * @memberOf _
20660     * @since 4.0.0
20661     * @category String
20662     * @param {string} [string=''] The string to convert.
20663     * @returns {string} Returns the lower cased string.
20664     * @example
20665     *
20666     * _.toLower('--Foo-Bar--');
20667     * // => '--foo-bar--'
20668     *
20669     * _.toLower('fooBar');
20670     * // => 'foobar'
20671     *
20672     * _.toLower('__FOO_BAR__');
20673     * // => '__foo_bar__'
20674     */
20675    function toLower(value) {
20676      return toString(value).toLowerCase();
20677    }
20678
20679    /**
20680     * Converts `string`, as a whole, to upper case just like
20681     * [String#toUpperCase](https://mdn.io/toUpperCase).
20682     *
20683     * @static
20684     * @memberOf _
20685     * @since 4.0.0
20686     * @category String
20687     * @param {string} [string=''] The string to convert.
20688     * @returns {string} Returns the upper cased string.
20689     * @example
20690     *
20691     * _.toUpper('--foo-bar--');
20692     * // => '--FOO-BAR--'
20693     *
20694     * _.toUpper('fooBar');
20695     * // => 'FOOBAR'
20696     *
20697     * _.toUpper('__foo_bar__');
20698     * // => '__FOO_BAR__'
20699     */
20700    function toUpper(value) {
20701      return toString(value).toUpperCase();
20702    }
20703
20704    /**
20705     * Removes leading and trailing whitespace or specified characters from `string`.
20706     *
20707     * @static
20708     * @memberOf _
20709     * @since 3.0.0
20710     * @category String
20711     * @param {string} [string=''] The string to trim.
20712     * @param {string} [chars=whitespace] The characters to trim.
20713     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20714     * @returns {string} Returns the trimmed string.
20715     * @example
20716     *
20717     * _.trim('  abc  ');
20718     * // => 'abc'
20719     *
20720     * _.trim('-_-abc-_-', '_-');
20721     * // => 'abc'
20722     *
20723     * _.map(['  foo  ', '  bar  '], _.trim);
20724     * // => ['foo', 'bar']
20725     */
20726    function trim(string, chars, guard) {
20727      string = toString(string);
20728      if (string && (guard || chars === undefined)) {
20729        return string.replace(reTrim, '');
20730      }
20731      if (!string || !(chars = baseToString(chars))) {
20732        return string;
20733      }
20734      var strSymbols = stringToArray(string),
20735          chrSymbols = stringToArray(chars),
20736          start = charsStartIndex(strSymbols, chrSymbols),
20737          end = charsEndIndex(strSymbols, chrSymbols) + 1;
20738
20739      return castSlice(strSymbols, start, end).join('');
20740    }
20741
20742    /**
20743     * Removes trailing whitespace or specified characters from `string`.
20744     *
20745     * @static
20746     * @memberOf _
20747     * @since 4.0.0
20748     * @category String
20749     * @param {string} [string=''] The string to trim.
20750     * @param {string} [chars=whitespace] The characters to trim.
20751     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20752     * @returns {string} Returns the trimmed string.
20753     * @example
20754     *
20755     * _.trimEnd('  abc  ');
20756     * // => '  abc'
20757     *
20758     * _.trimEnd('-_-abc-_-', '_-');
20759     * // => '-_-abc'
20760     */
20761    function trimEnd(string, chars, guard) {
20762      string = toString(string);
20763      if (string && (guard || chars === undefined)) {
20764        return string.replace(reTrimEnd, ''
vendor: 63,491 bytes, lines 20764-22911
20764);
20765      }
20766      if (!string || !(chars = baseToString(chars))) {
20767        return string;
20768      }
20769      var strSymbols = stringToArray(string),
20770          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
20771
20772      return castSlice(strSymbols, 0, end).join('');
20773    }
20774
20775    /**
20776     * Removes leading whitespace or specified characters from `string`.
20777     *
20778     * @static
20779     * @memberOf _
20780     * @since 4.0.0
20781     * @category String
20782     * @param {string} [string=''] The string to trim.
20783     * @param {string} [chars=whitespace] The characters to trim.
20784     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20785     * @returns {string} Returns the trimmed string.
20786     * @example
20787     *
20788     * _.trimStart('  abc  ');
20789     * // => 'abc  '
20790     *
20791     * _.trimStart('-_-abc-_-', '_-');
20792     * // => 'abc-_-'
20793     */
20794    function trimStart(string, chars, guard) {
20795      string = toString(string);
20796      if (string && (guard || chars === undefined)) {
20797        return string.replace(reTrimStart, '');
20798      }
20799      if (!string || !(chars = baseToString(chars))) {
20800        return string;
20801      }
20802      var strSymbols = stringToArray(string),
20803          start = charsStartIndex(strSymbols, stringToArray(chars));
20804
20805      return castSlice(strSymbols, start).join('');
20806    }
20807
20808    /**
20809     * Truncates `string` if it's longer than the given maximum string length.
20810     * The last characters of the truncated string are replaced with the omission
20811     * string which defaults to "...".
20812     *
20813     * @static
20814     * @memberOf _
20815     * @since 4.0.0
20816     * @category String
20817     * @param {string} [string=''] The string to truncate.
20818     * @param {Object} [options={}] The options object.
20819     * @param {number} [options.length=30] The maximum string length.
20820     * @param {string} [options.omission='...'] The string to indicate text is omitted.
20821     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
20822     * @returns {string} Returns the truncated string.
20823     * @example
20824     *
20825     * _.truncate('hi-diddly-ho there, neighborino');
20826     * // => 'hi-diddly-ho there, neighbo...'
20827     *
20828     * _.truncate('hi-diddly-ho there, neighborino', {
20829     *   'length': 24,
20830     *   'separator': ' '
20831     * });
20832     * // => 'hi-diddly-ho there,...'
20833     *
20834     * _.truncate('hi-diddly-ho there, neighborino', {
20835     *   'length': 24,
20836     *   'separator': /,? +/
20837     * });
20838     * // => 'hi-diddly-ho there...'
20839     *
20840     * _.truncate('hi-diddly-ho there, neighborino', {
20841     *   'omission': ' [...]'
20842     * });
20843     * // => 'hi-diddly-ho there, neig [...]'
20844     */
20845    function truncate(string, options) {
20846      var length = DEFAULT_TRUNC_LENGTH,
20847          omission = DEFAULT_TRUNC_OMISSION;
20848
20849      if (isObject(options)) {
20850        var separator = 'separator' in options ? options.separator : separator;
20851        length = 'length' in options ? toInteger(options.length) : length;
20852        omission = 'omission' in options ? baseToString(options.omission) : omission;
20853      }
20854      string = toString(string);
20855
20856      var strLength = string.length;
20857      if (hasUnicode(string)) {
20858        var strSymbols = stringToArray(string);
20859        strLength = strSymbols.length;
20860      }
20861      if (length >= strLength) {
20862        return string;
20863      }
20864      var end = length - stringSize(omission);
20865      if (end < 1) {
20866        return omission;
20867      }
20868      var result = strSymbols
20869        ? castSlice(strSymbols, 0, end).join('')
20870        : string.slice(0, end);
20871
20872      if (separator === undefined) {
20873        return result + omission;
20874      }
20875      if (strSymbols) {
20876        end += (result.length - end);
20877      }
20878      if (isRegExp(separator)) {
20879        if (string.slice(end).search(separator)) {
20880          var match,
20881              substring = result;
20882
20883          if (!separator.global) {
20884            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
20885          }
20886          separator.lastIndex = 0;
20887          while ((match = separator.exec(substring))) {
20888            var newEnd = match.index;
20889          }
20890          result = result.slice(0, newEnd === undefined ? end : newEnd);
20891        }
20892      } else if (string.indexOf(baseToString(separator), end) != end) {
20893        var index = result.lastIndexOf(separator);
20894        if (index > -1) {
20895          result = result.slice(0, index);
20896        }
20897      }
20898      return result + omission;
20899    }
20900
20901    /**
20902     * The inverse of `_.escape`; this method converts the HTML entities
20903     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
20904     * their corresponding characters.
20905     *
20906     * **Note:** No other HTML entities are unescaped. To unescape additional
20907     * HTML entities use a third-party library like [_he_](https://mths.be/he).
20908     *
20909     * @static
20910     * @memberOf _
20911     * @since 0.6.0
20912     * @category String
20913     * @param {string} [string=''] The string to unescape.
20914     * @returns {string} Returns the unescaped string.
20915     * @example
20916     *
20917     * _.unescape('fred, barney, &amp; pebbles');
20918     * // => 'fred, barney, & pebbles'
20919     */
20920    function unescape(string) {
20921      string = toString(string);
20922      return (string && reHasEscapedHtml.test(string))
20923        ? string.replace(reEscapedHtml, unescapeHtmlChar)
20924        : string;
20925    }
20926
20927    /**
20928     * Converts `string`, as space separated words, to upper case.
20929     *
20930     * @static
20931     * @memberOf _
20932     * @since 4.0.0
20933     * @category String
20934     * @param {string} [string=''] The string to convert.
20935     * @returns {string} Returns the upper cased string.
20936     * @example
20937     *
20938     * _.upperCase('--foo-bar');
20939     * // => 'FOO BAR'
20940     *
20941     * _.upperCase('fooBar');
20942     * // => 'FOO BAR'
20943     *
20944     * _.upperCase('__foo_bar__');
20945     * // => 'FOO BAR'
20946     */
20947    var upperCase = createCompounder(function(result, word, index) {
20948      return result + (index ? ' ' : '') + word.toUpperCase();
20949    });
20950
20951    /**
20952     * Converts the first character of `string` to upper case.
20953     *
20954     * @static
20955     * @memberOf _
20956     * @since 4.0.0
20957     * @category String
20958     * @param {string} [string=''] The string to convert.
20959     * @returns {string} Returns the converted string.
20960     * @example
20961     *
20962     * _.upperFirst('fred');
20963     * // => 'Fred'
20964     *
20965     * _.upperFirst('FRED');
20966     * // => 'FRED'
20967     */
20968    var upperFirst = createCaseFirst('toUpperCase');
20969
20970    /**
20971     * Splits `string` into an array of its words.
20972     *
20973     * @static
20974     * @memberOf _
20975     * @since 3.0.0
20976     * @category String
20977     * @param {string} [string=''] The string to inspect.
20978     * @param {RegExp|string} [pattern] The pattern to match words.
20979     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
20980     * @returns {Array} Returns the words of `string`.
20981     * @example
20982     *
20983     * _.words('fred, barney, & pebbles');
20984     * // => ['fred', 'barney', 'pebbles']
20985     *
20986     * _.words('fred, barney, & pebbles', /[^, ]+/g);
20987     * // => ['fred', 'barney', '&', 'pebbles']
20988     */
20989    function words(string, pattern, guard) {
20990      string = toString(string);
20991      pattern = guard ? undefined : pattern;
20992
20993      if (pattern === undefined) {
20994        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
20995      }
20996      return string.match(pattern) || [];
20997    }
20998
20999    /*------------------------------------------------------------------------*/
21000
21001    /**
21002     * Attempts to invoke `func`, returning either the result or the caught error
21003     * object. Any additional arguments are provided to `func` when it's invoked.
21004     *
21005     * @static
21006     * @memberOf _
21007     * @since 3.0.0
21008     * @category Util
21009     * @param {Function} func The function to attempt.
21010     * @param {...*} [args] The arguments to invoke `func` with.
21011     * @returns {*} Returns the `func` result or error object.
21012     * @example
21013     *
21014     * // Avoid throwing errors for invalid selectors.
21015     * var elements = _.attempt(function(selector) {
21016     *   return document.querySelectorAll(selector);
21017     * }, '>_>');
21018     *
21019     * if (_.isError(elements)) {
21020     *   elements = [];
21021     * }
21022     */
21023    var attempt = baseRest(function(func, args) {
21024      try {
21025        return apply(func, undefined, args);
21026      } catch (e) {
21027        return isError(e) ? e : new Error(e);
21028      }
21029    });
21030
21031    /**
21032     * Binds methods of an object to the object itself, overwriting the existing
21033     * method.
21034     *
21035     * **Note:** This method doesn't set the "length" property of bound functions.
21036     *
21037     * @static
21038     * @since 0.1.0
21039     * @memberOf _
21040     * @category Util
21041     * @param {Object} object The object to bind and assign the bound methods to.
21042     * @param {...(string|string[])} methodNames The object method names to bind.
21043     * @returns {Object} Returns `object`.
21044     * @example
21045     *
21046     * var view = {
21047     *   'label': 'docs',
21048     *   'click': function() {
21049     *     console.log('clicked ' + this.label);
21050     *   }
21051     * };
21052     *
21053     * _.bindAll(view, ['click']);
21054     * jQuery(element).on('click', view.click);
21055     * // => Logs 'clicked docs' when clicked.
21056     */
21057    var bindAll = flatRest(function(object, methodNames) {
21058      arrayEach(methodNames, function(key) {
21059        key = toKey(key);
21060        baseAssignValue(object, key, bind(object[key], object));
21061      });
21062      return object;
21063    });
21064
21065    /**
21066     * Creates a function that iterates over `pairs` and invokes the corresponding
21067     * function of the first predicate to return truthy. The predicate-function
21068     * pairs are invoked with the `this` binding and arguments of the created
21069     * function.
21070     *
21071     * @static
21072     * @memberOf _
21073     * @since 4.0.0
21074     * @category Util
21075     * @param {Array} pairs The predicate-function pairs.
21076     * @returns {Function} Returns the new composite function.
21077     * @example
21078     *
21079     * var func = _.cond([
21080     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
21081     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
21082     *   [_.stubTrue,                      _.constant('no match')]
21083     * ]);
21084     *
21085     * func({ 'a': 1, 'b': 2 });
21086     * // => 'matches A'
21087     *
21088     * func({ 'a': 0, 'b': 1 });
21089     * // => 'matches B'
21090     *
21091     * func({ 'a': '1', 'b': '2' });
21092     * // => 'no match'
21093     */
21094    function cond(pairs) {
21095      var length = pairs == null ? 0 : pairs.length,
21096          toIteratee = getIteratee();
21097
21098      pairs = !length ? [] : arrayMap(pairs, function(pair) {
21099        if (typeof pair[1] != 'function') {
21100          throw new TypeError(FUNC_ERROR_TEXT);
21101        }
21102        return [toIteratee(pair[0]), pair[1]];
21103      });
21104
21105      return baseRest(function(args) {
21106        var index = -1;
21107        while (++index < length) {
21108          var pair = pairs[index];
21109          if (apply(pair[0], this, args)) {
21110            return apply(pair[1], this, args);
21111          }
21112        }
21113      });
21114    }
21115
21116    /**
21117     * Creates a function that invokes the predicate properties of `source` with
21118     * the corresponding property values of a given object, returning `true` if
21119     * all predicates return truthy, else `false`.
21120     *
21121     * **Note:** The created function is equivalent to `_.conformsTo` with
21122     * `source` partially applied.
21123     *
21124     * @static
21125     * @memberOf _
21126     * @since 4.0.0
21127     * @category Util
21128     * @param {Object} source The object of property predicates to conform to.
21129     * @returns {Function} Returns the new spec function.
21130     * @example
21131     *
21132     * var objects = [
21133     *   { 'a': 2, 'b': 1 },
21134     *   { 'a': 1, 'b': 2 }
21135     * ];
21136     *
21137     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
21138     * // => [{ 'a': 1, 'b': 2 }]
21139     */
21140    function conforms(source) {
21141      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
21142    }
21143
21144    /**
21145     * Creates a function that returns `value`.
21146     *
21147     * @static
21148     * @memberOf _
21149     * @since 2.4.0
21150     * @category Util
21151     * @param {*} value The value to return from the new function.
21152     * @returns {Function} Returns the new constant function.
21153     * @example
21154     *
21155     * var objects = _.times(2, _.constant({ 'a': 1 }));
21156     *
21157     * console.log(objects);
21158     * // => [{ 'a': 1 }, { 'a': 1 }]
21159     *
21160     * console.log(objects[0] === objects[1]);
21161     * // => true
21162     */
21163    function constant(value) {
21164      return function() {
21165        return value;
21166      };
21167    }
21168
21169    /**
21170     * Checks `value` to determine whether a default value should be returned in
21171     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
21172     * or `undefined`.
21173     *
21174     * @static
21175     * @memberOf _
21176     * @since 4.14.0
21177     * @category Util
21178     * @param {*} value The value to check.
21179     * @param {*} defaultValue The default value.
21180     * @returns {*} Returns the resolved value.
21181     * @example
21182     *
21183     * _.defaultTo(1, 10);
21184     * // => 1
21185     *
21186     * _.defaultTo(undefined, 10);
21187     * // => 10
21188     */
21189    function defaultTo(value, defaultValue) {
21190      return (value == null || value !== value) ? defaultValue : value;
21191    }
21192
21193    /**
21194     * Creates a function that returns the result of invoking the given functions
21195     * with the `this` binding of the created function, where each successive
21196     * invocation is supplied the return value of the previous.
21197     *
21198     * @static
21199     * @memberOf _
21200     * @since 3.0.0
21201     * @category Util
21202     * @param {...(Function|Function[])} [funcs] The functions to invoke.
21203     * @returns {Function} Returns the new composite function.
21204     * @see _.flowRight
21205     * @example
21206     *
21207     * function square(n) {
21208     *   return n * n;
21209     * }
21210     *
21211     * var addSquare = _.flow([_.add, square]);
21212     * addSquare(1, 2);
21213     * // => 9
21214     */
21215    var flow = createFlow();
21216
21217    /**
21218     * This method is like `_.flow` except that it creates a function that
21219     * invokes the given functions from right to left.
21220     *
21221     * @static
21222     * @since 3.0.0
21223     * @memberOf _
21224     * @category Util
21225     * @param {...(Function|Function[])} [funcs] The functions to invoke.
21226     * @returns {Function} Returns the new composite function.
21227     * @see _.flow
21228     * @example
21229     *
21230     * function square(n) {
21231     *   return n * n;
21232     * }
21233     *
21234     * var addSquare = _.flowRight([square, _.add]);
21235     * addSquare(1, 2);
21236     * // => 9
21237     */
21238    var flowRight = createFlow(true);
21239
21240    /**
21241     * This method returns the first argument it receives.
21242     *
21243     * @static
21244     * @since 0.1.0
21245     * @memberOf _
21246     * @category Util
21247     * @param {*} value Any value.
21248     * @returns {*} Returns `value`.
21249     * @example
21250     *
21251     * var object = { 'a': 1 };
21252     *
21253     * console.log(_.identity(object) === object);
21254     * // => true
21255     */
21256    function identity(value) {
21257      return value;
21258    }
21259
21260    /**
21261     * Creates a function that invokes `func` with the arguments of the created
21262     * function. If `func` is a property name, the created function returns the
21263     * property value for a given element. If `func` is an array or object, the
21264     * created function returns `true` for elements that contain the equivalent
21265     * source properties, otherwise it returns `false`.
21266     *
21267     * @static
21268     * @since 4.0.0
21269     * @memberOf _
21270     * @category Util
21271     * @param {*} [func=_.identity] The value to convert to a callback.
21272     * @returns {Function} Returns the callback.
21273     * @example
21274     *
21275     * var users = [
21276     *   { 'user': 'barney', 'age': 36, 'active': true },
21277     *   { 'user': 'fred',   'age': 40, 'active': false }
21278     * ];
21279     *
21280     * // The `_.matches` iteratee shorthand.
21281     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
21282     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
21283     *
21284     * // The `_.matchesProperty` iteratee shorthand.
21285     * _.filter(users, _.iteratee(['user', 'fred']));
21286     * // => [{ 'user': 'fred', 'age': 40 }]
21287     *
21288     * // The `_.property` iteratee shorthand.
21289     * _.map(users, _.iteratee('user'));
21290     * // => ['barney', 'fred']
21291     *
21292     * // Create custom iteratee shorthands.
21293     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
21294     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
21295     *     return func.test(string);
21296     *   };
21297     * });
21298     *
21299     * _.filter(['abc', 'def'], /ef/);
21300     * // => ['def']
21301     */
21302    function iteratee(func) {
21303      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
21304    }
21305
21306    /**
21307     * Creates a function that performs a partial deep comparison between a given
21308     * object and `source`, returning `true` if the given object has equivalent
21309     * property values, else `false`.
21310     *
21311     * **Note:** The created function is equivalent to `_.isMatch` with `source`
21312     * partially applied.
21313     *
21314     * Partial comparisons will match empty array and empty object `source`
21315     * values against any array or object value, respectively. See `_.isEqual`
21316     * for a list of supported value comparisons.
21317     *
21318     * **Note:** Multiple values can be checked by combining several matchers
21319     * using `_.overSome`
21320     *
21321     * @static
21322     * @memberOf _
21323     * @since 3.0.0
21324     * @category Util
21325     * @param {Object} source The object of property values to match.
21326     * @returns {Function} Returns the new spec function.
21327     * @example
21328     *
21329     * var objects = [
21330     *   { 'a': 1, 'b': 2, 'c': 3 },
21331     *   { 'a': 4, 'b': 5, 'c': 6 }
21332     * ];
21333     *
21334     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
21335     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
21336     *
21337     * // Checking for several possible values
21338     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
21339     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
21340     */
21341    function matches(source) {
21342      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
21343    }
21344
21345    /**
21346     * Creates a function that performs a partial deep comparison between the
21347     * value at `path` of a given object to `srcValue`, returning `true` if the
21348     * object value is equivalent, else `false`.
21349     *
21350     * **Note:** Partial comparisons will match empty array and empty object
21351     * `srcValue` values against any array or object value, respectively. See
21352     * `_.isEqual` for a list of supported value comparisons.
21353     *
21354     * **Note:** Multiple values can be checked by combining several matchers
21355     * using `_.overSome`
21356     *
21357     * @static
21358     * @memberOf _
21359     * @since 3.2.0
21360     * @category Util
21361     * @param {Array|string} path The path of the property to get.
21362     * @param {*} srcValue The value to match.
21363     * @returns {Function} Returns the new spec function.
21364     * @example
21365     *
21366     * var objects = [
21367     *   { 'a': 1, 'b': 2, 'c': 3 },
21368     *   { 'a': 4, 'b': 5, 'c': 6 }
21369     * ];
21370     *
21371     * _.find(objects, _.matchesProperty('a', 4));
21372     * // => { 'a': 4, 'b': 5, 'c': 6 }
21373     *
21374     * // Checking for several possible values
21375     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
21376     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
21377     */
21378    function matchesProperty(path, srcValue) {
21379      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
21380    }
21381
21382    /**
21383     * Creates a function that invokes the method at `path` of a given object.
21384     * Any additional arguments are provided to the invoked method.
21385     *
21386     * @static
21387     * @memberOf _
21388     * @since 3.7.0
21389     * @category Util
21390     * @param {Array|string} path The path of the method to invoke.
21391     * @param {...*} [args] The arguments to invoke the method with.
21392     * @returns {Function} Returns the new invoker function.
21393     * @example
21394     *
21395     * var objects = [
21396     *   { 'a': { 'b': _.constant(2) } },
21397     *   { 'a': { 'b': _.constant(1) } }
21398     * ];
21399     *
21400     * _.map(objects, _.method('a.b'));
21401     * // => [2, 1]
21402     *
21403     * _.map(objects, _.method(['a', 'b']));
21404     * // => [2, 1]
21405     */
21406    var method = baseRest(function(path, args) {
21407      return function(object) {
21408        return baseInvoke(object, path, args);
21409      };
21410    });
21411
21412    /**
21413     * The opposite of `_.method`; this method creates a function that invokes
21414     * the method at a given path of `object`. Any additional arguments are
21415     * provided to the invoked method.
21416     *
21417     * @static
21418     * @memberOf _
21419     * @since 3.7.0
21420     * @category Util
21421     * @param {Object} object The object to query.
21422     * @param {...*} [args] The arguments to invoke the method with.
21423     * @returns {Function} Returns the new invoker function.
21424     * @example
21425     *
21426     * var array = _.times(3, _.constant),
21427     *     object = { 'a': array, 'b': array, 'c': array };
21428     *
21429     * _.map(['a[2]', 'c[0]'], _.methodOf(object));
21430     * // => [2, 0]
21431     *
21432     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
21433     * // => [2, 0]
21434     */
21435    var methodOf = baseRest(function(object, args) {
21436      return function(path) {
21437        return baseInvoke(object, path, args);
21438      };
21439    });
21440
21441    /**
21442     * Adds all own enumerable string keyed function properties of a source
21443     * object to the destination object. If `object` is a function, then methods
21444     * are added to its prototype as well.
21445     *
21446     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
21447     * avoid conflicts caused by modifying the original.
21448     *
21449     * @static
21450     * @since 0.1.0
21451     * @memberOf _
21452     * @category Util
21453     * @param {Function|Object} [object=lodash] The destination object.
21454     * @param {Object} source The object of functions to add.
21455     * @param {Object} [options={}] The options object.
21456     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
21457     * @returns {Function|Object} Returns `object`.
21458     * @example
21459     *
21460     * function vowels(string) {
21461     *   return _.filter(string, function(v) {
21462     *     return /[aeiou]/i.test(v);
21463     *   });
21464     * }
21465     *
21466     * _.mixin({ 'vowels': vowels });
21467     * _.vowels('fred');
21468     * // => ['e']
21469     *
21470     * _('fred').vowels().value();
21471     * // => ['e']
21472     *
21473     * _.mixin({ 'vowels': vowels }, { 'chain': false });
21474     * _('fred').vowels();
21475     * // => ['e']
21476     */
21477    function mixin(object, source, options) {
21478      var props = keys(source),
21479          methodNames = baseFunctions(source, props);
21480
21481      if (options == null &&
21482          !(isObject(source) && (methodNames.length || !props.length))) {
21483        options = source;
21484        source = object;
21485        object = this;
21486        methodNames = baseFunctions(source, keys(source));
21487      }
21488      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
21489          isFunc = isFunction(object);
21490
21491      arrayEach(methodNames, function(methodName) {
21492        var func = source[methodName];
21493        object[methodName] = func;
21494        if (isFunc) {
21495          object.prototype[methodName] = function() {
21496            var chainAll = this.__chain__;
21497            if (chain || chainAll) {
21498              var result = object(this.__wrapped__),
21499                  actions = result.__actions__ = copyArray(this.__actions__);
21500
21501              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
21502              result.__chain__ = chainAll;
21503              return result;
21504            }
21505            return func.apply(object, arrayPush([this.value()], arguments));
21506          };
21507        }
21508      });
21509
21510      return object;
21511    }
21512
21513    /**
21514     * Reverts the `_` variable to its previous value and returns a reference to
21515     * the `lodash` function.
21516     *
21517     * @static
21518     * @since 0.1.0
21519     * @memberOf _
21520     * @category Util
21521     * @returns {Function} Returns the `lodash` function.
21522     * @example
21523     *
21524     * var lodash = _.noConflict();
21525     */
21526    function noConflict() {
21527      if (root._ === this) {
21528        root._ = oldDash;
21529      }
21530      return this;
21531    }
21532
21533    /**
21534     * This method returns `undefined`.
21535     *
21536     * @static
21537     * @memberOf _
21538     * @since 2.3.0
21539     * @category Util
21540     * @example
21541     *
21542     * _.times(2, _.noop);
21543     * // => [undefined, undefined]
21544     */
21545    function noop() {
21546      // No operation performed.
21547    }
21548
21549    /**
21550     * Creates a function that gets the argument at index `n`. If `n` is negative,
21551     * the nth argument from the end is returned.
21552     *
21553     * @static
21554     * @memberOf _
21555     * @since 4.0.0
21556     * @category Util
21557     * @param {number} [n=0] The index of the argument to return.
21558     * @returns {Function} Returns the new pass-thru function.
21559     * @example
21560     *
21561     * var func = _.nthArg(1);
21562     * func('a', 'b', 'c', 'd');
21563     * // => 'b'
21564     *
21565     * var func = _.nthArg(-2);
21566     * func('a', 'b', 'c', 'd');
21567     * // => 'c'
21568     */
21569    function nthArg(n) {
21570      n = toInteger(n);
21571      return baseRest(function(args) {
21572        return baseNth(args, n);
21573      });
21574    }
21575
21576    /**
21577     * Creates a function that invokes `iteratees` with the arguments it receives
21578     * and returns their results.
21579     *
21580     * @static
21581     * @memberOf _
21582     * @since 4.0.0
21583     * @category Util
21584     * @param {...(Function|Function[])} [iteratees=[_.identity]]
21585     *  The iteratees to invoke.
21586     * @returns {Function} Returns the new function.
21587     * @example
21588     *
21589     * var func = _.over([Math.max, Math.min]);
21590     *
21591     * func(1, 2, 3, 4);
21592     * // => [4, 1]
21593     */
21594    var over = createOver(arrayMap);
21595
21596    /**
21597     * Creates a function that checks if **all** of the `predicates` return
21598     * truthy when invoked with the arguments it receives.
21599     *
21600     * Following shorthands are possible for providing predicates.
21601     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
21602     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
21603     *
21604     * @static
21605     * @memberOf _
21606     * @since 4.0.0
21607     * @category Util
21608     * @param {...(Function|Function[])} [predicates=[_.identity]]
21609     *  The predicates to check.
21610     * @returns {Function} Returns the new function.
21611     * @example
21612     *
21613     * var func = _.overEvery([Boolean, isFinite]);
21614     *
21615     * func('1');
21616     * // => true
21617     *
21618     * func(null);
21619     * // => false
21620     *
21621     * func(NaN);
21622     * // => false
21623     */
21624    var overEvery = createOver(arrayEvery);
21625
21626    /**
21627     * Creates a function that checks if **any** of the `predicates` return
21628     * truthy when invoked with the arguments it receives.
21629     *
21630     * Following shorthands are possible for providing predicates.
21631     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
21632     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
21633     *
21634     * @static
21635     * @memberOf _
21636     * @since 4.0.0
21637     * @category Util
21638     * @param {...(Function|Function[])} [predicates=[_.identity]]
21639     *  The predicates to check.
21640     * @returns {Function} Returns the new function.
21641     * @example
21642     *
21643     * var func = _.overSome([Boolean, isFinite]);
21644     *
21645     * func('1');
21646     * // => true
21647     *
21648     * func(null);
21649     * // => true
21650     *
21651     * func(NaN);
21652     * // => false
21653     *
21654     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
21655     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
21656     */
21657    var overSome = createOver(arraySome);
21658
21659    /**
21660     * Creates a function that returns the value at `path` of a given object.
21661     *
21662     * @static
21663     * @memberOf _
21664     * @since 2.4.0
21665     * @category Util
21666     * @param {Array|string} path The path of the property to get.
21667     * @returns {Function} Returns the new accessor function.
21668     * @example
21669     *
21670     * var objects = [
21671     *   { 'a': { 'b': 2 } },
21672     *   { 'a': { 'b': 1 } }
21673     * ];
21674     *
21675     * _.map(objects, _.property('a.b'));
21676     * // => [2, 1]
21677     *
21678     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
21679     * // => [1, 2]
21680     */
21681    function property(path) {
21682      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
21683    }
21684
21685    /**
21686     * The opposite of `_.property`; this method creates a function that returns
21687     * the value at a given path of `object`.
21688     *
21689     * @static
21690     * @memberOf _
21691     * @since 3.0.0
21692     * @category Util
21693     * @param {Object} object The object to query.
21694     * @returns {Function} Returns the new accessor function.
21695     * @example
21696     *
21697     * var array = [0, 1, 2],
21698     *     object = { 'a': array, 'b': array, 'c': array };
21699     *
21700     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
21701     * // => [2, 0]
21702     *
21703     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
21704     * // => [2, 0]
21705     */
21706    function propertyOf(object) {
21707      return function(path) {
21708        return object == null ? undefined : baseGet(object, path);
21709      };
21710    }
21711
21712    /**
21713     * Creates an array of numbers (positive and/or negative) progressing from
21714     * `start` up to, but not including, `end`. A step of `-1` is used if a negative
21715     * `start` is specified without an `end` or `step`. If `end` is not specified,
21716     * it's set to `start` with `start` then set to `0`.
21717     *
21718     * **Note:** JavaScript follows the IEEE-754 standard for resolving
21719     * floating-point values which can produce unexpected results.
21720     *
21721     * @static
21722     * @since 0.1.0
21723     * @memberOf _
21724     * @category Util
21725     * @param {number} [start=0] The start of the range.
21726     * @param {number} end The end of the range.
21727     * @param {number} [step=1] The value to increment or decrement by.
21728     * @returns {Array} Returns the range of numbers.
21729     * @see _.inRange, _.rangeRight
21730     * @example
21731     *
21732     * _.range(4);
21733     * // => [0, 1, 2, 3]
21734     *
21735     * _.range(-4);
21736     * // => [0, -1, -2, -3]
21737     *
21738     * _.range(1, 5);
21739     * // => [1, 2, 3, 4]
21740     *
21741     * _.range(0, 20, 5);
21742     * // => [0, 5, 10, 15]
21743     *
21744     * _.range(0, -4, -1);
21745     * // => [0, -1, -2, -3]
21746     *
21747     * _.range(1, 4, 0);
21748     * // => [1, 1, 1]
21749     *
21750     * _.range(0);
21751     * // => []
21752     */
21753    var range = createRange();
21754
21755    /**
21756     * This method is like `_.range` except that it populates values in
21757     * descending order.
21758     *
21759     * @static
21760     * @memberOf _
21761     * @since 4.0.0
21762     * @category Util
21763     * @param {number} [start=0] The start of the range.
21764     * @param {number} end The end of the range.
21765     * @param {number} [step=1] The value to increment or decrement by.
21766     * @returns {Array} Returns the range of numbers.
21767     * @see _.inRange, _.range
21768     * @example
21769     *
21770     * _.rangeRight(4);
21771     * // => [3, 2, 1, 0]
21772     *
21773     * _.rangeRight(-4);
21774     * // => [-3, -2, -1, 0]
21775     *
21776     * _.rangeRight(1, 5);
21777     * // => [4, 3, 2, 1]
21778     *
21779     * _.rangeRight(0, 20, 5);
21780     * // => [15, 10, 5, 0]
21781     *
21782     * _.rangeRight(0, -4, -1);
21783     * // => [-3, -2, -1, 0]
21784     *
21785     * _.rangeRight(1, 4, 0);
21786     * // => [1, 1, 1]
21787     *
21788     * _.rangeRight(0);
21789     * // => []
21790     */
21791    var rangeRight = createRange(true);
21792
21793    /**
21794     * This method returns a new empty array.
21795     *
21796     * @static
21797     * @memberOf _
21798     * @since 4.13.0
21799     * @category Util
21800     * @returns {Array} Returns the new empty array.
21801     * @example
21802     *
21803     * var arrays = _.times(2, _.stubArray);
21804     *
21805     * console.log(arrays);
21806     * // => [[], []]
21807     *
21808     * console.log(arrays[0] === arrays[1]);
21809     * // => false
21810     */
21811    function stubArray() {
21812      return [];
21813    }
21814
21815    /**
21816     * This method returns `false`.
21817     *
21818     * @static
21819     * @memberOf _
21820     * @since 4.13.0
21821     * @category Util
21822     * @returns {boolean} Returns `false`.
21823     * @example
21824     *
21825     * _.times(2, _.stubFalse);
21826     * // => [false, false]
21827     */
21828    function stubFalse() {
21829      return false;
21830    }
21831
21832    /**
21833     * This method returns a new empty object.
21834     *
21835     * @static
21836     * @memberOf _
21837     * @since 4.13.0
21838     * @category Util
21839     * @returns {Object} Returns the new empty object.
21840     * @example
21841     *
21842     * var objects = _.times(2, _.stubObject);
21843     *
21844     * console.log(objects);
21845     * // => [{}, {}]
21846     *
21847     * console.log(objects[0] === objects[1]);
21848     * // => false
21849     */
21850    function stubObject() {
21851      return {};
21852    }
21853
21854    /**
21855     * This method returns an empty string.
21856     *
21857     * @static
21858     * @memberOf _
21859     * @since 4.13.0
21860     * @category Util
21861     * @returns {string} Returns the empty string.
21862     * @example
21863     *
21864     * _.times(2, _.stubString);
21865     * // => ['', '']
21866     */
21867    function stubString() {
21868      return '';
21869    }
21870
21871    /**
21872     * This method returns `true`.
21873     *
21874     * @static
21875     * @memberOf _
21876     * @since 4.13.0
21877     * @category Util
21878     * @returns {boolean} Returns `true`.
21879     * @example
21880     *
21881     * _.times(2, _.stubTrue);
21882     * // => [true, true]
21883     */
21884    function stubTrue() {
21885      return true;
21886    }
21887
21888    /**
21889     * Invokes the iteratee `n` times, returning an array of the results of
21890     * each invocation. The iteratee is invoked with one argument; (index).
21891     *
21892     * @static
21893     * @since 0.1.0
21894     * @memberOf _
21895     * @category Util
21896     * @param {number} n The number of times to invoke `iteratee`.
21897     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
21898     * @returns {Array} Returns the array of results.
21899     * @example
21900     *
21901     * _.times(3, String);
21902     * // => ['0', '1', '2']
21903     *
21904     *  _.times(4, _.constant(0));
21905     * // => [0, 0, 0, 0]
21906     */
21907    function times(n, iteratee) {
21908      n = toInteger(n);
21909      if (n < 1 || n > MAX_SAFE_INTEGER) {
21910        return [];
21911      }
21912      var index = MAX_ARRAY_LENGTH,
21913          length = nativeMin(n, MAX_ARRAY_LENGTH);
21914
21915      iteratee = getIteratee(iteratee);
21916      n -= MAX_ARRAY_LENGTH;
21917
21918      var result = baseTimes(length, iteratee);
21919      while (++index < n) {
21920        iteratee(index);
21921      }
21922      return result;
21923    }
21924
21925    /**
21926     * Converts `value` to a property path array.
21927     *
21928     * @static
21929     * @memberOf _
21930     * @since 4.0.0
21931     * @category Util
21932     * @param {*} value The value to convert.
21933     * @returns {Array} Returns the new property path array.
21934     * @example
21935     *
21936     * _.toPath('a.b.c');
21937     * // => ['a', 'b', 'c']
21938     *
21939     * _.toPath('a[0].b.c');
21940     * // => ['a', '0', 'b', 'c']
21941     */
21942    function toPath(value) {
21943      if (isArray(value)) {
21944        return arrayMap(value, toKey);
21945      }
21946      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
21947    }
21948
21949    /**
21950     * Generates a unique ID. If `prefix` is given, the ID is appended to it.
21951     *
21952     * @static
21953     * @since 0.1.0
21954     * @memberOf _
21955     * @category Util
21956     * @param {string} [prefix=''] The value to prefix the ID with.
21957     * @returns {string} Returns the unique ID.
21958     * @example
21959     *
21960     * _.uniqueId('contact_');
21961     * // => 'contact_104'
21962     *
21963     * _.uniqueId();
21964     * // => '105'
21965     */
21966    function uniqueId(prefix) {
21967      var id = ++idCounter;
21968      return toString(prefix) + id;
21969    }
21970
21971    /*------------------------------------------------------------------------*/
21972
21973    /**
21974     * Adds two numbers.
21975     *
21976     * @static
21977     * @memberOf _
21978     * @since 3.4.0
21979     * @category Math
21980     * @param {number} augend The first number in an addition.
21981     * @param {number} addend The second number in an addition.
21982     * @returns {number} Returns the total.
21983     * @example
21984     *
21985     * _.add(6, 4);
21986     * // => 10
21987     */
21988    var add = createMathOperation(function(augend, addend) {
21989      return augend + addend;
21990    }, 0);
21991
21992    /**
21993     * Computes `number` rounded up to `precision`.
21994     *
21995     * @static
21996     * @memberOf _
21997     * @since 3.10.0
21998     * @category Math
21999     * @param {number} number The number to round up.
22000     * @param {number} [precision=0] The precision to round up to.
22001     * @returns {number} Returns the rounded up number.
22002     * @example
22003     *
22004     * _.ceil(4.006);
22005     * // => 5
22006     *
22007     * _.ceil(6.004, 2);
22008     * // => 6.01
22009     *
22010     * _.ceil(6040, -2);
22011     * // => 6100
22012     */
22013    var ceil = createRound('ceil');
22014
22015    /**
22016     * Divide two numbers.
22017     *
22018     * @static
22019     * @memberOf _
22020     * @since 4.7.0
22021     * @category Math
22022     * @param {number} dividend The first number in a division.
22023     * @param {number} divisor The second number in a division.
22024     * @returns {number} Returns the quotient.
22025     * @example
22026     *
22027     * _.divide(6, 4);
22028     * // => 1.5
22029     */
22030    var divide = createMathOperation(function(dividend, divisor) {
22031      return dividend / divisor;
22032    }, 1);
22033
22034    /**
22035     * Computes `number` rounded down to `precision`.
22036     *
22037     * @static
22038     * @memberOf _
22039     * @since 3.10.0
22040     * @category Math
22041     * @param {number} number The number to round down.
22042     * @param {number} [precision=0] The precision to round down to.
22043     * @returns {number} Returns the rounded down number.
22044     * @example
22045     *
22046     * _.floor(4.006);
22047     * // => 4
22048     *
22049     * _.floor(0.046, 2);
22050     * // => 0.04
22051     *
22052     * _.floor(4060, -2);
22053     * // => 4000
22054     */
22055    var floor = createRound('floor');
22056
22057    /**
22058     * Computes the maximum value of `array`. If `array` is empty or falsey,
22059     * `undefined` is returned.
22060     *
22061     * @static
22062     * @since 0.1.0
22063     * @memberOf _
22064     * @category Math
22065     * @param {Array} array The array to iterate over.
22066     * @returns {*} Returns the maximum value.
22067     * @example
22068     *
22069     * _.max([4, 2, 8, 6]);
22070     * // => 8
22071     *
22072     * _.max([]);
22073     * // => undefined
22074     */
22075    function max(array) {
22076      return (array && array.length)
22077        ? baseExtremum(array, identity, baseGt)
22078        : undefined;
22079    }
22080
22081    /**
22082     * This method is like `_.max` except that it accepts `iteratee` which is
22083     * invoked for each element in `array` to generate the criterion by which
22084     * the value is ranked. The iteratee is invoked with one argument: (value).
22085     *
22086     * @static
22087     * @memberOf _
22088     * @since 4.0.0
22089     * @category Math
22090     * @param {Array} array The array to iterate over.
22091     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22092     * @returns {*} Returns the maximum value.
22093     * @example
22094     *
22095     * var objects = [{ 'n': 1 }, { 'n': 2 }];
22096     *
22097     * _.maxBy(objects, function(o) { return o.n; });
22098     * // => { 'n': 2 }
22099     *
22100     * // The `_.property` iteratee shorthand.
22101     * _.maxBy(objects, 'n');
22102     * // => { 'n': 2 }
22103     */
22104    function maxBy(array, iteratee) {
22105      return (array && array.length)
22106        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
22107        : undefined;
22108    }
22109
22110    /**
22111     * Computes the mean of the values in `array`.
22112     *
22113     * @static
22114     * @memberOf _
22115     * @since 4.0.0
22116     * @category Math
22117     * @param {Array} array The array to iterate over.
22118     * @returns {number} Returns the mean.
22119     * @example
22120     *
22121     * _.mean([4, 2, 8, 6]);
22122     * // => 5
22123     */
22124    function mean(array) {
22125      return baseMean(array, identity);
22126    }
22127
22128    /**
22129     * This method is like `_.mean` except that it accepts `iteratee` which is
22130     * invoked for each element in `array` to generate the value to be averaged.
22131     * The iteratee is invoked with one argument: (value).
22132     *
22133     * @static
22134     * @memberOf _
22135     * @since 4.7.0
22136     * @category Math
22137     * @param {Array} array The array to iterate over.
22138     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22139     * @returns {number} Returns the mean.
22140     * @example
22141     *
22142     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
22143     *
22144     * _.meanBy(objects, function(o) { return o.n; });
22145     * // => 5
22146     *
22147     * // The `_.property` iteratee shorthand.
22148     * _.meanBy(objects, 'n');
22149     * // => 5
22150     */
22151    function meanBy(array, iteratee) {
22152      return baseMean(array, getIteratee(iteratee, 2));
22153    }
22154
22155    /**
22156     * Computes the minimum value of `array`. If `array` is empty or falsey,
22157     * `undefined` is returned.
22158     *
22159     * @static
22160     * @since 0.1.0
22161     * @memberOf _
22162     * @category Math
22163     * @param {Array} array The array to iterate over.
22164     * @returns {*} Returns the minimum value.
22165     * @example
22166     *
22167     * _.min([4, 2, 8, 6]);
22168     * // => 2
22169     *
22170     * _.min([]);
22171     * // => undefined
22172     */
22173    function min(array) {
22174      return (array && array.length)
22175        ? baseExtremum(array, identity, baseLt)
22176        : undefined;
22177    }
22178
22179    /**
22180     * This method is like `_.min` except that it accepts `iteratee` which is
22181     * invoked for each element in `array` to generate the criterion by which
22182     * the value is ranked. The iteratee is invoked with one argument: (value).
22183     *
22184     * @static
22185     * @memberOf _
22186     * @since 4.0.0
22187     * @category Math
22188     * @param {Array} array The array to iterate over.
22189     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22190     * @returns {*} Returns the minimum value.
22191     * @example
22192     *
22193     * var objects = [{ 'n': 1 }, { 'n': 2 }];
22194     *
22195     * _.minBy(objects, function(o) { return o.n; });
22196     * // => { 'n': 1 }
22197     *
22198     * // The `_.property` iteratee shorthand.
22199     * _.minBy(objects, 'n');
22200     * // => { 'n': 1 }
22201     */
22202    function minBy(array, iteratee) {
22203      return (array && array.length)
22204        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
22205        : undefined;
22206    }
22207
22208    /**
22209     * Multiply two numbers.
22210     *
22211     * @static
22212     * @memberOf _
22213     * @since 4.7.0
22214     * @category Math
22215     * @param {number} multiplier The first number in a multiplication.
22216     * @param {number} multiplicand The second number in a multiplication.
22217     * @returns {number} Returns the product.
22218     * @example
22219     *
22220     * _.multiply(6, 4);
22221     * // => 24
22222     */
22223    var multiply = createMathOperation(function(multiplier, multiplicand) {
22224      return multiplier * multiplicand;
22225    }, 1);
22226
22227    /**
22228     * Computes `number` rounded to `precision`.
22229     *
22230     * @static
22231     * @memberOf _
22232     * @since 3.10.0
22233     * @category Math
22234     * @param {number} number The number to round.
22235     * @param {number} [precision=0] The precision to round to.
22236     * @returns {number} Returns the rounded number.
22237     * @example
22238     *
22239     * _.round(4.006);
22240     * // => 4
22241     *
22242     * _.round(4.006, 2);
22243     * // => 4.01
22244     *
22245     * _.round(4060, -2);
22246     * // => 4100
22247     */
22248    var round = createRound('round');
22249
22250    /**
22251     * Subtract two numbers.
22252     *
22253     * @static
22254     * @memberOf _
22255     * @since 4.0.0
22256     * @category Math
22257     * @param {number} minuend The first number in a subtraction.
22258     * @param {number} subtrahend The second number in a subtraction.
22259     * @returns {number} Returns the difference.
22260     * @example
22261     *
22262     * _.subtract(6, 4);
22263     * // => 2
22264     */
22265    var subtract = createMathOperation(function(minuend, subtrahend) {
22266      return minuend - subtrahend;
22267    }, 0);
22268
22269    /**
22270     * Computes the sum of the values in `array`.
22271     *
22272     * @static
22273     * @memberOf _
22274     * @since 3.4.0
22275     * @category Math
22276     * @param {Array} array The array to iterate over.
22277     * @returns {number} Returns the sum.
22278     * @example
22279     *
22280     * _.sum([4, 2, 8, 6]);
22281     * // => 20
22282     */
22283    function sum(array) {
22284      return (array && array.length)
22285        ? baseSum(array, identity)
22286        : 0;
22287    }
22288
22289    /**
22290     * This method is like `_.sum` except that it accepts `iteratee` which is
22291     * invoked for each element in `array` to generate the value to be summed.
22292     * The iteratee is invoked with one argument: (value).
22293     *
22294     * @static
22295     * @memberOf _
22296     * @since 4.0.0
22297     * @category Math
22298     * @param {Array} array The array to iterate over.
22299     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
22300     * @returns {number} Returns the sum.
22301     * @example
22302     *
22303     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
22304     *
22305     * _.sumBy(objects, function(o) { return o.n; });
22306     * // => 20
22307     *
22308     * // The `_.property` iteratee shorthand.
22309     * _.sumBy(objects, 'n');
22310     * // => 20
22311     */
22312    function sumBy(array, iteratee) {
22313      return (array && array.length)
22314        ? baseSum(array, getIteratee(iteratee, 2))
22315        : 0;
22316    }
22317
22318    /*------------------------------------------------------------------------*/
22319
22320    // Add methods that return wrapped values in chain sequences.
22321    lodash.after = after;
22322    lodash.ary = ary;
22323    lodash.assign = assign;
22324    lodash.assignIn = assignIn;
22325    lodash.assignInWith = assignInWith;
22326    lodash.assignWith = assignWith;
22327    lodash.at = at;
22328    lodash.before = before;
22329    lodash.bind = bind;
22330    lodash.bindAll = bindAll;
22331    lodash.bindKey = bindKey;
22332    lodash.castArray = castArray;
22333    lodash.chain = chain;
22334    lodash.chunk = chunk;
22335    lodash.compact = compact;
22336    lodash.concat = concat;
22337    lodash.cond = cond;
22338    lodash.conforms = conforms;
22339    lodash.constant = constant;
22340    lodash.countBy = countBy;
22341    lodash.create = create;
22342    lodash.curry = curry;
22343    lodash.curryRight = curryRight;
22344    lodash.debounce = debounce;
22345    lodash.defaults = defaults;
22346    lodash.defaultsDeep = defaultsDeep;
22347    lodash.defer = defer;
22348    lodash.delay = delay;
22349    lodash.difference = difference;
22350    lodash.differenceBy = differenceBy;
22351    lodash.differenceWith = differenceWith;
22352    lodash.drop = drop;
22353    lodash.dropRight = dropRight;
22354    lodash.dropRightWhile = dropRightWhile;
22355    lodash.dropWhile = dropWhile;
22356    lodash.fill = fill;
22357    lodash.filter = filter;
22358    lodash.flatMap = flatMap;
22359    lodash.flatMapDeep = flatMapDeep;
22360    lodash.flatMapDepth = flatMapDepth;
22361    lodash.flatten = flatten;
22362    lodash.flattenDeep = flattenDeep;
22363    lodash.flattenDepth = flattenDepth;
22364    lodash.flip = flip;
22365    lodash.flow = flow;
22366    lodash.flowRight = flowRight;
22367    lodash.fromPairs = fromPairs;
22368    lodash.functions = functions;
22369    lodash.functionsIn = functionsIn;
22370    lodash.groupBy = groupBy;
22371    lodash.initial = initial;
22372    lodash.intersection = intersection;
22373    lodash.intersectionBy = intersectionBy;
22374    lodash.intersectionWith = intersectionWith;
22375    lodash.invert = invert;
22376    lodash.invertBy = invertBy;
22377    lodash.invokeMap = invokeMap;
22378    lodash.iteratee = iteratee;
22379    lodash.keyBy = keyBy;
22380    lodash.keys = keys;
22381    lodash.keysIn = keysIn;
22382    lodash.map = map;
22383    lodash.mapKeys = mapKeys;
22384    lodash.mapValues = mapValues;
22385    lodash.matches = matches;
22386    lodash.matchesProperty = matchesProperty;
22387    lodash.memoize = memoize;
22388    lodash.merge = merge;
22389    lodash.mergeWith = mergeWith;
22390    lodash.method = method;
22391    lodash.methodOf = methodOf;
22392    lodash.mixin = mixin;
22393    lodash.negate = negate;
22394    lodash.nthArg = nthArg;
22395    lodash.omit = omit;
22396    lodash.omitBy = omitBy;
22397    lodash.once = once;
22398    lodash.orderBy = orderBy;
22399    lodash.over = over;
22400    lodash.overArgs = overArgs;
22401    lodash.overEvery = overEvery;
22402    lodash.overSome = overSome;
22403    lodash.partial = partial;
22404    lodash.partialRight = partialRight;
22405    lodash.partition = partition;
22406    lodash.pick = pick;
22407    lodash.pickBy = pickBy;
22408    lodash.property = property;
22409    lodash.propertyOf = propertyOf;
22410    lodash.pull = pull;
22411    lodash.pullAll = pullAll;
22412    lodash.pullAllBy = pullAllBy;
22413    lodash.pullAllWith = pullAllWith;
22414    lodash.pullAt = pullAt;
22415    lodash.range = range;
22416    lodash.rangeRight = rangeRight;
22417    lodash.rearg = rearg;
22418    lodash.reject = reject;
22419    lodash.remove = remove;
22420    lodash.rest = rest;
22421    lodash.reverse = reverse;
22422    lodash.sampleSize = sampleSize;
22423    lodash.set = set;
22424    lodash.setWith = setWith;
22425    lodash.shuffle = shuffle;
22426    lodash.slice = slice;
22427    lodash.sortBy = sortBy;
22428    lodash.sortedUniq = sortedUniq;
22429    lodash.sortedUniqBy = sortedUniqBy;
22430    lodash.split = split;
22431    lodash.spread = spread;
22432    lodash.tail = tail;
22433    lodash.take = take;
22434    lodash.takeRight = takeRight;
22435    lodash.takeRightWhile = takeRightWhile;
22436    lodash.takeWhile = takeWhile;
22437    lodash.tap = tap;
22438    lodash.throttle = throttle;
22439    lodash.thru = thru;
22440    lodash.toArray = toArray;
22441    lodash.toPairs = toPairs;
22442    lodash.toPairsIn = toPairsIn;
22443    lodash.toPath = toPath;
22444    lodash.toPlainObject = toPlainObject;
22445    lodash.transform = transform;
22446    lodash.unary = unary;
22447    lodash.union = union;
22448    lodash.unionBy = unionBy;
22449    lodash.unionWith = unionWith;
22450    lodash.uniq = uniq;
22451    lodash.uniqBy = uniqBy;
22452    lodash.uniqWith = uniqWith;
22453    lodash.unset = unset;
22454    lodash.unzip = unzip;
22455    lodash.unzipWith = unzipWith;
22456    lodash.update = update;
22457    lodash.updateWith = updateWith;
22458    lodash.values = values;
22459    lodash.valuesIn = valuesIn;
22460    lodash.without = without;
22461    lodash.words = words;
22462    lodash.wrap = wrap;
22463    lodash.xor = xor;
22464    lodash.xorBy = xorBy;
22465    lodash.xorWith = xorWith;
22466    lodash.zip = zip;
22467    lodash.zipObject = zipObject;
22468    lodash.zipObjectDeep = zipObjectDeep;
22469    lodash.zipWith = zipWith;
22470
22471    // Add aliases.
22472    lodash.entries = toPairs;
22473    lodash.entriesIn = toPairsIn;
22474    lodash.extend = assignIn;
22475    lodash.extendWith = assignInWith;
22476
22477    // Add methods to `lodash.prototype`.
22478    mixin(lodash, lodash);
22479
22480    /*------------------------------------------------------------------------*/
22481
22482    // Add methods that return unwrapped values in chain sequences.
22483    lodash.add = add;
22484    lodash.attempt = attempt;
22485    lodash.camelCase = camelCase;
22486    lodash.capitalize = capitalize;
22487    lodash.ceil = ceil;
22488    lodash.clamp = clamp;
22489    lodash.clone = clone;
22490    lodash.cloneDeep = cloneDeep;
22491    lodash.cloneDeepWith = cloneDeepWith;
22492    lodash.cloneWith = cloneWith;
22493    lodash.conformsTo = conformsTo;
22494    lodash.deburr = deburr;
22495    lodash.defaultTo = defaultTo;
22496    lodash.divide = divide;
22497    lodash.endsWith = endsWith;
22498    lodash.eq = eq;
22499    lodash.escape = escape;
22500    lodash.escapeRegExp = escapeRegExp;
22501    lodash.every = every;
22502    lodash.find = find;
22503    lodash.findIndex = findIndex;
22504    lodash.findKey = findKey;
22505    lodash.findLast = findLast;
22506    lodash.findLastIndex = findLastIndex;
22507    lodash.findLastKey = findLastKey;
22508    lodash.floor = floor;
22509    lodash.forEach = forEach;
22510    lodash.forEachRight = forEachRight;
22511    lodash.forIn = forIn;
22512    lodash.forInRight = forInRight;
22513    lodash.forOwn = forOwn;
22514    lodash.forOwnRight = forOwnRight;
22515    lodash.get = get;
22516    lodash.gt = gt;
22517    lodash.gte = gte;
22518    lodash.has = has;
22519    lodash.hasIn = hasIn;
22520    lodash.head = head;
22521    lodash.identity = identity;
22522    lodash.includes = includes;
22523    lodash.indexOf = indexOf;
22524    lodash.inRange = inRange;
22525    lodash.invoke = invoke;
22526    lodash.isArguments = isArguments;
22527    lodash.isArray = isArray;
22528    lodash.isArrayBuffer = isArrayBuffer;
22529    lodash.isArrayLike = isArrayLike;
22530    lodash.isArrayLikeObject = isArrayLikeObject;
22531    lodash.isBoolean = isBoolean;
22532    lodash.isBuffer = isBuffer;
22533    lodash.isDate = isDate;
22534    lodash.isElement = isElement;
22535    lodash.isEmpty = isEmpty;
22536    lodash.isEqual = isEqual;
22537    lodash.isEqualWith = isEqualWith;
22538    lodash.isError = isError;
22539    lodash.isFinite = isFinite;
22540    lodash.isFunction = isFunction;
22541    lodash.isInteger = isInteger;
22542    lodash.isLength = isLength;
22543    lodash.isMap = isMap;
22544    lodash.isMatch = isMatch;
22545    lodash.isMatchWith = isMatchWith;
22546    lodash.isNaN = isNaN;
22547    lodash.isNative = isNative;
22548    lodash.isNil = isNil;
22549    lodash.isNull = isNull;
22550    lodash.isNumber = isNumber;
22551    lodash.isObject = isObject;
22552    lodash.isObjectLike = isObjectLike;
22553    lodash.isPlainObject = isPlainObject;
22554    lodash.isRegExp = isRegExp;
22555    lodash.isSafeInteger = isSafeInteger;
22556    lodash.isSet = isSet;
22557    lodash.isString = isString;
22558    lodash.isSymbol = isSymbol;
22559    lodash.isTypedArray = isTypedArray;
22560    lodash.isUndefined = isUndefined;
22561    lodash.isWeakMap = isWeakMap;
22562    lodash.isWeakSet = isWeakSet;
22563    lodash.join = join;
22564    lodash.kebabCase = kebabCase;
22565    lodash.last = last;
22566    lodash.lastIndexOf = lastIndexOf;
22567    lodash.lowerCase = lowerCase;
22568    lodash.lowerFirst = lowerFirst;
22569    lodash.lt = lt;
22570    lodash.lte = lte;
22571    lodash.max = max;
22572    lodash.maxBy = maxBy;
22573    lodash.mean = mean;
22574    lodash.meanBy = meanBy;
22575    lodash.min = min;
22576    lodash.minBy = minBy;
22577    lodash.stubArray = stubArray;
22578    lodash.stubFalse = stubFalse;
22579    lodash.stubObject = stubObject;
22580    lodash.stubString = stubString;
22581    lodash.stubTrue = stubTrue;
22582    lodash.multiply = multiply;
22583    lodash.nth = nth;
22584    lodash.noConflict = noConflict;
22585    lodash.noop = noop;
22586    lodash.now = now;
22587    lodash.pad = pad;
22588    lodash.padEnd = padEnd;
22589    lodash.padStart = padStart;
22590    lodash.parseInt = parseInt;
22591    lodash.random = random;
22592    lodash.reduce = reduce;
22593    lodash.reduceRight = reduceRight;
22594    lodash.repeat = repeat;
22595    lodash.replace = replace;
22596    lodash.result = result;
22597    lodash.round = round;
22598    lodash.runInContext = runInContext;
22599    lodash.sample = sample;
22600    lodash.size = size;
22601    lodash.snakeCase = snakeCase;
22602    lodash.some = some;
22603    lodash.sortedIndex = sortedIndex;
22604    lodash.sortedIndexBy = sortedIndexBy;
22605    lodash.sortedIndexOf = sortedIndexOf;
22606    lodash.sortedLastIndex = sortedLastIndex;
22607    lodash.sortedLastIndexBy = sortedLastIndexBy;
22608    lodash.sortedLastIndexOf = sortedLastIndexOf;
22609    lodash.startCase = startCase;
22610    lodash.startsWith = startsWith;
22611    lodash.subtract = subtract;
22612    lodash.sum = sum;
22613    lodash.sumBy = sumBy;
22614    lodash.template = template;
22615    lodash.times = times;
22616    lodash.toFinite = toFinite;
22617    lodash.toInteger = toInteger;
22618    lodash.toLength = toLength;
22619    lodash.toLower = toLower;
22620    lodash.toNumber = toNumber;
22621    lodash.toSafeInteger = toSafeInteger;
22622    lodash.toString = toString;
22623    lodash.toUpper = toUpper;
22624    lodash.trim = trim;
22625    lodash.trimEnd = trimEnd;
22626    lodash.trimStart = trimStart;
22627    lodash.truncate = truncate;
22628    lodash.unescape = unescape;
22629    lodash.uniqueId = uniqueId;
22630    lodash.upperCase = upperCase;
22631    lodash.upperFirst = upperFirst;
22632
22633    // Add aliases.
22634    lodash.each = forEach;
22635    lodash.eachRight = forEachRight;
22636    lodash.first = head;
22637
22638    mixin(lodash, (function() {
22639      var source = {};
22640      baseForOwn(lodash, function(func, methodName) {
22641        if (!hasOwnProperty.call(lodash.prototype, methodName)) {
22642          source[methodName] = func;
22643        }
22644      });
22645      return source;
22646    }()), { 'chain': false });
22647
22648    /*------------------------------------------------------------------------*/
22649
22650    /**
22651     * The semantic version number.
22652     *
22653     * @static
22654     * @memberOf _
22655     * @type {string}
22656     */
22657    lodash.VERSION = VERSION;
22658
22659    // Assign default placeholders.
22660    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
22661      lodash[methodName].placeholder = lodash;
22662    });
22663
22664    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
22665    arrayEach(['drop', 'take'], function(methodName, index) {
22666      LazyWrapper.prototype[methodName] = function(n) {
22667        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
22668
22669        var result = (this.__filtered__ && !index)
22670          ? new LazyWrapper(this)
22671          : this.clone();
22672
22673        if (result.__filtered__) {
22674          result.__takeCount__ = nativeMin(n, result.__takeCount__);
22675        } else {
22676          result.__views__.push({
22677            'size': nativeMin(n, MAX_ARRAY_LENGTH),
22678            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
22679          });
22680        }
22681        return result;
22682      };
22683
22684      LazyWrapper.prototype[methodName + 'Right'] = function(n) {
22685        return this.reverse()[methodName](n).reverse();
22686      };
22687    });
22688
22689    // Add `LazyWrapper` methods that accept an `iteratee` value.
22690    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
22691      var type = index + 1,
22692          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
22693
22694      LazyWrapper.prototype[methodName] = function(iteratee) {
22695        var result = this.clone();
22696        result.__iteratees__.push({
22697          'iteratee': getIteratee(iteratee, 3),
22698          'type': type
22699        });
22700        result.__filtered__ = result.__filtered__ || isFilter;
22701        return result;
22702      };
22703    });
22704
22705    // Add `LazyWrapper` methods for `_.head` and `_.last`.
22706    arrayEach(['head', 'last'], function(methodName, index) {
22707      var takeName = 'take' + (index ? 'Right' : '');
22708
22709      LazyWrapper.prototype[methodName] = function() {
22710        return this[takeName](1).value()[0];
22711      };
22712    });
22713
22714    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
22715    arrayEach(['initial', 'tail'], function(methodName, index) {
22716      var dropName = 'drop' + (index ? '' : 'Right');
22717
22718      LazyWrapper.prototype[methodName] = function() {
22719        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
22720      };
22721    });
22722
22723    LazyWrapper.prototype.compact = function() {
22724      return this.filter(identity);
22725    };
22726
22727    LazyWrapper.prototype.find = function(predicate) {
22728      return this.filter(predicate).head();
22729    };
22730
22731    LazyWrapper.prototype.findLast = function(predicate) {
22732      return this.reverse().find(predicate);
22733    };
22734
22735    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
22736      if (typeof path == 'function') {
22737        return new LazyWrapper(this);
22738      }
22739      return this.map(function(value) {
22740        return baseInvoke(value, path, args);
22741      });
22742    });
22743
22744    LazyWrapper.prototype.reject = function(predicate) {
22745      return this.filter(negate(getIteratee(predicate)));
22746    };
22747
22748    LazyWrapper.prototype.slice = function(start, end) {
22749      start = toInteger(start);
22750
22751      var result = this;
22752      if (result.__filtered__ && (start > 0 || end < 0)) {
22753        return new LazyWrapper(result);
22754      }
22755      if (start < 0) {
22756        result = result.takeRight(-start);
22757      } else if (start) {
22758        result = result.drop(start);
22759      }
22760      if (end !== undefined) {
22761        end = toInteger(end);
22762        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
22763      }
22764      return result;
22765    };
22766
22767    LazyWrapper.prototype.takeRightWhile = function(predicate) {
22768      return this.reverse().takeWhile(predicate).reverse();
22769    };
22770
22771    LazyWrapper.prototype.toArray = function() {
22772      return this.take(MAX_ARRAY_LENGTH);
22773    };
22774
22775    // Add `LazyWrapper` methods to `lodash.prototype`.
22776    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
22777      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
22778          isTaker = /^(?:head|last)$/.test(methodName),
22779          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
22780          retUnwrapped = isTaker || /^find/.test(methodName);
22781
22782      if (!lodashFunc) {
22783        return;
22784      }
22785      lodash.prototype[methodName] = function() {
22786        var value = this.__wrapped__,
22787            args = isTaker ? [1] : arguments,
22788            isLazy = value instanceof LazyWrapper,
22789            iteratee = args[0],
22790            useLazy = isLazy || isArray(value);
22791
22792        var interceptor = function(value) {
22793          var result = lodashFunc.apply(lodash, arrayPush([value], args));
22794          return (isTaker && chainAll) ? result[0] : result;
22795        };
22796
22797        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
22798          // Avoid lazy use if the iteratee has a "length" value other than `1`.
22799          isLazy = useLazy = false;
22800        }
22801        var chainAll = this.__chain__,
22802            isHybrid = !!this.__actions__.length,
22803            isUnwrapped = retUnwrapped && !chainAll,
22804            onlyLazy = isLazy && !isHybrid;
22805
22806        if (!retUnwrapped && useLazy) {
22807          value = onlyLazy ? value : new LazyWrapper(this);
22808          var result = func.apply(value, args);
22809          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
22810          return new LodashWrapper(result, chainAll);
22811        }
22812        if (isUnwrapped && onlyLazy) {
22813          return func.apply(this, args);
22814        }
22815        result = this.thru(interceptor);
22816        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
22817      };
22818    });
22819
22820    // Add `Array` methods to `lodash.prototype`.
22821    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
22822      var func = arrayProto[methodName],
22823          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
22824          retUnwrapped = /^(?:pop|shift)$/.test(methodName);
22825
22826      lodash.prototype[methodName] = function() {
22827        var args = arguments;
22828        if (retUnwrapped && !this.__chain__) {
22829          var value = this.value();
22830          return func.apply(isArray(value) ? value : [], args);
22831        }
22832        return this[chainName](function(value) {
22833          return func.apply(isArray(value) ? value : [], args);
22834        });
22835      };
22836    });
22837
22838    // Map minified method names to their real names.
22839    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
22840      var lodashFunc = lodash[methodName];
22841      if (lodashFunc) {
22842        var key = lodashFunc.name + '';
22843        if (!hasOwnProperty.call(realNames, key)) {
22844          realNames[key] = [];
22845        }
22846        realNames[key].push({ 'name': methodName, 'func': lodashFunc });
22847      }
22848    });
22849
22850    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
22851      'name': 'wrapper',
22852      'func': undefined
22853    }];
22854
22855    // Add methods to `LazyWrapper`.
22856    LazyWrapper.prototype.clone = lazyClone;
22857    LazyWrapper.prototype.reverse = lazyReverse;
22858    LazyWrapper.prototype.value = lazyValue;
22859
22860    // Add chain sequence methods to the `lodash` wrapper.
22861    lodash.prototype.at = wrapperAt;
22862    lodash.prototype.chain = wrapperChain;
22863    lodash.prototype.commit = wrapperCommit;
22864    lodash.prototype.next = wrapperNext;
22865    lodash.prototype.plant = wrapperPlant;
22866    lodash.prototype.reverse = wrapperReverse;
22867    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
22868
22869    // Add lazy aliases.
22870    lodash.prototype.first = lodash.prototype.head;
22871
22872    if (symIterator) {
22873      lodash.prototype[symIterator] = wrapperToIterator;
22874    }
22875    return lodash;
22876  });
22877
22878  /*--------------------------------------------------------------------------*/
22879
22880  // Export lodash.
22881  var _ = runInContext();
22882
22883  // Some AMD build optimizers, like r.js, check for condition patterns like:
22884  if (true) {
22885    // Expose Lodash on the global object to prevent errors when Lodash is
22886    // loaded by a script tag in the presence of an AMD loader.
22887    // See http://requirejs.org/docs/errors.html#mismatch for more details.
22888    // Use `_.noConflict` to remove Lodash from the global object.
22889    root._ = _;
22890
22891    // Define as an anonymous module so, through path mapping, it can be
22892    // referenced as the "underscore" module.
22893    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
22894      return _;
22895    }).call(exports, __webpack_require__, exports, module),
22896				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
22897  }
22898  // Check for `exports` after `define` in case a build optimizer adds it.
22899  else if (freeModule) {
22900    // Export for Node.js.
22901    (freeModule.exports = _)._ = _;
22902    // Export for CommonJS support.
22903    freeExports._ = _;
22904  }
22905  else {
22906    // Export to the global object.
22907    root._ = _;
22908  }
22909}.call(this));
22910
22911/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(
22911143), __webpack_require__(3)(module)))
22912
22913/***/ }),
22914/* 2 */
22915/***/ (function(module, __webpack_exports__, __webpack_require__) {
22916
22917"use strict";
22918/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return serialize; });
22919/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return throttleAnimationFrame; });
22920/* harmony export (immutable) */ __webpack_exports__["a"] = isMobileDevice;
22921var serialize = function serialize(obj) {
22922    var str = [];
22923    for (var p in obj) {
22924        if (obj.hasOwnProperty(p)) {
22925            str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));
22926        }
22927    }return str.join('&');
22928};
22929
22930/**
22931 * Since resize events can fire at a high rate, the event handler shouldn't execute computationally expensive operations such as DOM modifications. Instead, it is recommended to throttle the event using requestAnimationFrame, setTimeout or customEvent*, as follows:
22932 * IMPORTANT: Please note that IE11 needs the customEvent polyfill to function correctly.
22933 * https://developer.mozilla.org/en-US/docs/Web/Events/resize
22934 * @param {*} type - event type. e.g. "resize"
22935 * @param {*} name - name of the event to fire instead. e.g. "optimizedResize"
22936 * @param {*} obj - object to dispatch the event from. e.g. window
22937 */
22938var throttleAnimationFrame = function throttleAnimationFrame(type, name, obj) {
22939    customEventPolyfill();
22940    obj = obj || window;
22941    var running = false;
22942    var func = function func() {
22943        if (running) {
22944            return;
22945        }
22946        running = true;
22947        requestAnimationFrame(function () {
22948            obj.dispatchEvent(new CustomEvent(name));
22949            running = false;
22950        });
22951    };
22952    obj.addEventListener(type, func);
22953};
22954
22955function customEventPolyfill() {
22956    if (typeof window.CustomEvent === 'function') return false;
22957
22958    function CustomEvent(event, params) {
22959        params = params || { bubbles: false, cancelable: false, detail: undefined };
22960        var evt = document.createEvent('CustomEvent');
22961        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
22962        return evt;
22963    }
22964
22965    CustomEvent.prototype = window.Event.prototype;
22966
22967    window.CustomEvent = CustomEvent;
22968}
22969
22970function isMobileDevice() {
22971    try {
22972        // 767px matches our $screen-md-max
22973        return window.matchMedia('(max-width: 767px)').matches;
22974    } catch (e) {
22975        return false;
22976    }
22977}
22978
22979/***/ }),
22980/* 3 */
22981/***/ (function(module, exports) {
22982
22983module.exports = function(module) {
22984	if(!module.webpackPolyfill) {
22985		module.deprecate = function() {};
22986		module.paths = [];
22987		// module.parent = undefined by default
22988		if(!module.children) module.children = [];
22989		Object.defineProperty(module, "loaded", {
22990			enumerable: true,
22991			get: function() {
22992				return module.l;
22993			}
22994		});
22995		Object.defineProperty(module, "id", {
22996			enumerable: true,
22997			get: function() {
22998				return module.i;
22999			}
23000		});
23001		module.webpackPolyfill = 1;
23002	}
23003	return module;
23004};
23005
23006
23007/***/ }),
23008/* 4 */
23009/***/ (function(module, exports, __webpack_require__) {
23010
23011//! moment.js locale configuration
23012//! locale : Afrikaans [af]
23013//! author : Werner Mollentze : https://github.com/wernerm
23014
23015;(function (global, factory) {
23016    true ? factory(__webpack_require__(0)) :
23017   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23018   factory(global.moment)
23019}(this, (function (moment) { 'use strict';
23020
23021    //! moment.js locale configuration
23022
23023    var af = moment.defineLocale('af', {
23024        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
23025            '_'
23026        ),
23027        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
23028        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
23029            '_'
23030        ),
23031        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
23032        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
23033        meridiemParse: /vm|nm/i,
23034        isPM: function (input) {
23035            return /^nm$/i.test(input);
23036        },
23037        meridiem: function (hours, minutes, isLower) {
23038            if (hours < 12) {
23039                return isLower ? 'vm' : 'VM';
23040            } else {
23041                return isLower ? 'nm' : 'NM';
23042            }
23043        },
23044        longDateFormat: {
23045            LT: 'HH:mm',
23046            LTS: 'HH:mm:ss',
23047            L: 'DD/MM/YYYY',
23048            LL: 'D MMMM YYYY',
23049            LLL: 'D MMMM YYYY HH:mm',
23050            LLLL: 'dddd, D MMMM YYYY HH:mm',
23051        },
23052        calendar: {
23053            sameDay: '[Vandag om] LT',
23054            nextDay: '[Môre om] LT',
23055            nextWeek: 'dddd [om] LT',
23056            lastDay: '[Gister om] LT',
23057            lastWeek: '[Laas] dddd [om] LT',
23058            sameElse: 'L',
23059        },
23060        relativeTime: {
23061            future: 'oor %s',
23062            past: '%s gelede',
23063            s: "'n paar sekondes",
23064            ss: '%d sekondes',
23065            m: "'n minuut",
23066            mm: '%d minute',
23067            h: "'n uur",
23068            hh: '%d ure',
23069            d: "'n dag",
23070            dd: '%d dae',
23071            M: "'n maand",
23072            MM: '%d maande',
23073            y: "'n jaar",
23074            yy: '%d jaar',
23075        },
23076        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
23077        ordinal: function (number) {
23078            return (
23079                number +
23080                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
23081            ); // Thanks to Joris Röling : https://github.com/jjupiter
23082        },
23083        week: {
23084            dow: 1, // Maandag is die eerste dag van die week.
23085            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
23086        },
23087    });
23088
23089    return af;
23090
23091})));
23092
23093
23094/***/ }),
23095/* 5 */
23096/***/ (function(module, exports, __webpack_require__) {
23097
23098//! moment.js locale configuration
23099//! locale : Arabic [ar]
23100//! author : Abdel Said: https://github.com/abdelsaid
23101//! author : Ahmed Elkhatib
23102//! author : forabi https://github.com/forabi
23103
23104;(function (global, factory) {
23105    true ? factory(__webpack_require__(0)) :
23106   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23107   factory(global.moment)
23108}(this, (function (moment) { 'use strict';
23109
23110    //! moment.js locale configuration
23111
23112    var symbolMap = {
23113            1: 'Ù¡',
23114            2: 'Ù¢',
23115            3: 'Ù£',
23116            4: 'Ù¤',
23117            5: 'Ù¥',
23118            6: 'Ù¦',
23119            7: 'Ù§',
23120            8: 'Ù¨',
23121            9: 'Ù©',
23122            0: 'Ù ',
23123        },
23124        numberMap = {
23125            'Ù¡': '1',
23126            'Ù¢': '2',
23127            'Ù£': '3',
23128            'Ù¤': '4',
23129            'Ù¥': '5',
23130            'Ù¦': '6',
23131            'Ù§': '7',
23132            'Ù¨': '8',
23133            'Ù©': '9',
23134            'Ù ': '0',
23135        },
23136        pluralForm = function (n) {
23137            return n === 0
23138                ? 0
23139                : n === 1
23140                ? 1
23141                : n === 2
23142                ? 2
23143                : n % 100 >= 3 && n % 100 <= 10
23144                ? 3
23145                : n % 100 >= 11
23146                ? 4
23147                : 5;
23148        },
23149        plurals = {
23150            s: [
23151                'أقل من ثانية',
23152                'ثانية واحدة',
23153                ['ثانيتان', 'ثانيتين'],
23154                '%d ثوان',
23155                '%d ثانية',
23156                '%d ثانية',
23157            ],
23158            m: [
23159                'أقل من دقيقة',
23160                'دقيقة واحدة',
23161                ['دقيقتان', 'دقيقتين'],
23162                '%d دقائق',
23163                '%d دقيقة',
23164                '%d دقيقة',
23165            ],
23166            h: [
23167                'أقل من ساعة',
23168                'ساعة واحدة',
23169                ['ساعتان', 'ساعتين'],
23170                '%d ساعات',
23171                '%d ساعة',
23172                '%d ساعة',
23173            ],
23174            d: [
23175                'أقل من يوم',
23176                'يوم واحد',
23177                ['يومان', 'يومين'],
23178                '%d أيام',
23179                '%d يومًا',
23180                '%d يوم',
23181            ],
23182            M: [
23183                'أقل من شهر',
23184                'شهر واحد',
23185                ['شهران', 'شهرين'],
23186                '%d أشهر',
23187                '%d شهرا',
23188                '%d شهر',
23189            ],
23190            y: [
23191                'أقل من عام',
23192                'عام واحد',
23193                ['عامان', 'عامين'],
23194                '%d أعوام',
23195                '%d عامًا',
23196                '%d عام',
23197            ],
23198        },
23199        pluralize = function (u) {
23200            return function (number, withoutSuffix, string, isFuture) {
23201                var f = pluralForm(number),
23202                    str = plurals[u][pluralForm(number)];
23203                if (f === 2) {
23204                    str = str[withoutSuffix ? 0 : 1];
23205                }
23206                return str.replace(/%d/i, number);
23207            };
23208        },
23209        months = [
23210            'يناير',
23211            'فبراير',
23212            'مارس',
23213            'أبريل',
23214            'مايو',
23215            'يونيو',
23216            'يوليو',
23217            'أغسطس',
23218            'سبتمبر',
23219            'أكتوبر',
23220            'نوفمبر',
23221            'ديسمبر',
23222        ];
23223
23224    var ar = moment.defineLocale('ar', {
23225        months: months,
23226        monthsShort: months,
23227        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23228        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23229        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23230        weekdaysParseExact: true,
23231        longDateFormat: {
23232            LT: 'HH:mm',
23233            LTS: 'HH:mm:ss',
23234            L: 'D/\u200FM/\u200FYYYY',
23235            LL: 'D MMMM YYYY',
23236            LLL: 'D MMMM YYYY HH:mm',
23237            LLLL: 'dddd D MMMM YYYY HH:mm',
23238        },
23239        meridiemParse: /ص|م/,
23240        isPM: function (input) {
23241            return 'م' === input;
23242        },
23243        meridiem: function (hour, minute, isLower) {
23244            if (hour < 12) {
23245                return 'ص';
23246            } else {
23247                return 'م';
23248            }
23249        },
23250        calendar: {
23251            sameDay: '[اليوم عند الساعة] LT',
23252            nextDay: '[غدًا عند الساعة] LT',
23253            nextWeek: 'dddd [عند الساعة] LT',
23254            lastDay: '[أمس عند الساعة] LT',
23255            lastWeek: 'dddd [عند الساعة] LT',
23256            sameElse: 'L',
23257        },
23258        relativeTime: {
23259            future: 'بعد %s',
23260            past: 'منذ %s',
23261            s: pluralize('s'),
23262            ss: pluralize('s'),
23263            m: pluralize('m'),
23264            mm: pluralize('m'),
23265            h: pluralize('h'),
23266            hh: pluralize('h'),
23267            d: pluralize('d'),
23268            dd: pluralize('d'),
23269            M: pluralize('M'),
23270            MM: pluralize('M'),
23271            y: pluralize('y'),
23272            yy: pluralize('y'),
23273        },
23274        preparse: function (string) {
23275            return string
23276                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
23277                    return numberMap[match];
23278                })
23279                .replace(/،/g, ',');
23280        },
23281        postformat: function (string) {
23282            return string
23283                .replace(/\d/g, function (match) {
23284                    return symbolMap[match];
23285                })
23286                .replace(/,/g, '،');
23287        },
23288        week: {
23289            dow: 6, // Saturday is the first day of the week.
23290            doy: 12, // The week that contains Jan 12th is the first week of the year.
23291        },
23292    });
23293
23294    return ar;
23295
23296})));
23297
23298
23299/***/ }),
23300/* 6 */
23301/***/ (function(module, exports, __webpack_require__) {
23302
23303//! moment.js locale configuration
23304//! locale : Arabic (Algeria) [ar-dz]
23305//! author : Amine Roukh: https://github.com/Amine27
23306//! author : Abdel Said: https://github.com/abdelsaid
23307//! author : Ahmed Elkhatib
23308//! author : forabi https://github.com/forabi
23309//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
23310
23311;(function (global, factory) {
23312    true ? factory(__webpack_require__(0)) :
23313   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23314   factory(global.moment)
23315}(this, (function (moment) { 'use strict';
23316
23317    //! moment.js locale configuration
23318
23319    var pluralForm = function (n) {
23320            return n === 0
23321                ? 0
23322                : n === 1
23323                ? 1
23324                : n === 2
23325                ? 2
23326                : n % 100 >= 3 && n % 100 <= 10
23327                ? 3
23328                : n % 100 >= 11
23329                ? 4
23330                : 5;
23331        },
23332        plurals = {
23333            s: [
23334                'أقل من ثانية',
23335                'ثانية واحدة',
23336                ['ثانيتان', 'ثانيتين'],
23337                '%d ثوان',
23338                '%d ثانية',
23339                '%d ثانية',
23340            ],
23341            m: [
23342                'أقل من دقيقة',
23343                'دقيقة واحدة',
23344                ['دقيقتان', 'دقيقتين'],
23345                '%d دقائق',
23346                '%d دقيقة',
23347                '%d دقيقة',
23348            ],
23349            h: [
23350                'أقل من ساعة',
23351                'ساعة واحدة',
23352                ['ساعتان', 'ساعتين'],
23353                '%d ساعات',
23354                '%d ساعة',
23355                '%d ساعة',
23356            ],
23357            d: [
23358                'أقل من يوم',
23359                'يوم واحد',
23360                ['يومان', 'يومين'],
23361                '%d أيام',
23362                '%d يومًا',
23363                '%d يوم',
23364            ],
23365            M: [
23366                'أقل من شهر',
23367                'شهر واحد',
23368                ['شهران', 'شهرين'],
23369                '%d أشهر',
23370                '%d شهرا',
23371                '%d شهر',
23372            ],
23373            y: [
23374                'أقل من عام',
23375                'عام واحد',
23376                ['عامان', 'عامين'],
23377                '%d أعوام',
23378                '%d عامًا',
23379                '%d عام',
23380            ],
23381        },
23382        pluralize = function (u) {
23383            return function (number, withoutSuffix, string, isFuture) {
23384                var f = pluralForm(number),
23385                    str = plurals[u][pluralForm(number)];
23386                if (f === 2) {
23387                    str = str[withoutSuffix ? 0 : 1];
23388                }
23389                return str.replace(/%d/i, number);
23390            };
23391        },
23392        months = [
23393            'جانفي',
23394            'فيفري',
23395            'مارس',
23396            'أفريل',
23397            'ماي',
23398            'جوان',
23399            'جويلية',
23400            'أوت',
23401            'سبتمبر',
23402            'أكتوبر',
23403            'نوفمبر',
23404            'ديسمبر',
23405        ];
23406
23407    var arDz = moment.defineLocale('ar-dz', {
23408        months: months,
23409        monthsShort: months,
23410        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23411        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23412        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23413        weekdaysParseExact: true,
23414        longDateFormat: {
23415            LT: 'HH:mm',
23416            LTS: 'HH:mm:ss',
23417            L: 'D/\u200FM/\u200FYYYY',
23418            LL: 'D MMMM YYYY',
23419            LLL: 'D MMMM YYYY HH:mm',
23420            LLLL: 'dddd D MMMM YYYY HH:mm',
23421        },
23422        meridiemParse: /ص|م/,
23423        isPM: function (input) {
23424            return 'م' === input;
23425        },
23426        meridiem: function (hour, minute, isLower) {
23427            if (hour < 12) {
23428                return 'ص';
23429            } else {
23430                return 'م';
23431            }
23432        },
23433        calendar: {
23434            sameDay: '[اليوم عند الساعة] LT',
23435            nextDay: '[غدًا عند الساعة] LT',
23436            nextWeek: 'dddd [عند الساعة] LT',
23437            lastDay: '[أمس عند الساعة] LT',
23438            lastWeek: 'dddd [عند الساعة] LT',
23439            sameElse: 'L',
23440        },
23441        relativeTime: {
23442            future: 'بعد %s',
23443            past: 'منذ %s',
23444            s: pluralize('s'),
23445            ss: pluralize('s'),
23446            m: pluralize('m'),
23447            mm: pluralize('m'),
23448            h: pluralize('h'),
23449            hh: pluralize('h'),
23450            d: pluralize('d'),
23451            dd: pluralize('d'),
23452            M: pluralize('M'),
23453            MM: pluralize('M'),
23454            y: pluralize('y'),
23455            yy: pluralize('y'),
23456        },
23457        postformat: function (string) {
23458            return string.replace(/,/g, '،');
23459        },
23460        week: {
23461            dow: 0, // Sunday is the first day of the week.
23462            doy: 4, // The week that contains Jan 4th is the first week of the year.
23463        },
23464    });
23465
23466    return arDz;
23467
23468})));
23469
23470
23471/***/ }),
23472/* 7 */
23473/***/ (function(module, exports, __webpack_require__) {
23474
23475//! moment.js locale configuration
23476//! locale : Arabic (Kuwait) [ar-kw]
23477//! author : Nusret Parlak: https://github.com/nusretparlak
23478
23479;(function (global, factory) {
23480    true ? factory(__webpack_require__(0)) :
23481   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23482   factory(global.moment)
23483}(this, (function (moment) { 'use strict';
23484
23485    //! moment.js locale configuration
23486
23487    var arKw = moment.defineLocale('ar-kw', {
23488        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_
vendor: 16,384 bytes, lines 23488-23998
23488غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23489            '_'
23490        ),
23491        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23492            '_'
23493        ),
23494        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23495        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
23496        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23497        weekdaysParseExact: true,
23498        longDateFormat: {
23499            LT: 'HH:mm',
23500            LTS: 'HH:mm:ss',
23501            L: 'DD/MM/YYYY',
23502            LL: 'D MMMM YYYY',
23503            LLL: 'D MMMM YYYY HH:mm',
23504            LLLL: 'dddd D MMMM YYYY HH:mm',
23505        },
23506        calendar: {
23507            sameDay: '[اليوم على الساعة] LT',
23508            nextDay: '[غدا على الساعة] LT',
23509            nextWeek: 'dddd [على الساعة] LT',
23510            lastDay: '[أمس على الساعة] LT',
23511            lastWeek: 'dddd [على الساعة] LT',
23512            sameElse: 'L',
23513        },
23514        relativeTime: {
23515            future: 'في %s',
23516            past: 'منذ %s',
23517            s: 'ثوان',
23518            ss: '%d ثانية',
23519            m: 'دقيقة',
23520            mm: '%d دقائق',
23521            h: 'ساعة',
23522            hh: '%d ساعات',
23523            d: 'يوم',
23524            dd: '%d أيام',
23525            M: 'شهر',
23526            MM: '%d أشهر',
23527            y: 'سنة',
23528            yy: '%d سنوات',
23529        },
23530        week: {
23531            dow: 0, // Sunday is the first day of the week.
23532            doy: 12, // The week that contains Jan 12th is the first week of the year.
23533        },
23534    });
23535
23536    return arKw;
23537
23538})));
23539
23540
23541/***/ }),
23542/* 8 */
23543/***/ (function(module, exports, __webpack_require__) {
23544
23545//! moment.js locale configuration
23546//! locale : Arabic (Lybia) [ar-ly]
23547//! author : Ali Hmer: https://github.com/kikoanis
23548
23549;(function (global, factory) {
23550    true ? factory(__webpack_require__(0)) :
23551   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23552   factory(global.moment)
23553}(this, (function (moment) { 'use strict';
23554
23555    //! moment.js locale configuration
23556
23557    var symbolMap = {
23558            1: '1',
23559            2: '2',
23560            3: '3',
23561            4: '4',
23562            5: '5',
23563            6: '6',
23564            7: '7',
23565            8: '8',
23566            9: '9',
23567            0: '0',
23568        },
23569        pluralForm = function (n) {
23570            return n === 0
23571                ? 0
23572                : n === 1
23573                ? 1
23574                : n === 2
23575                ? 2
23576                : n % 100 >= 3 && n % 100 <= 10
23577                ? 3
23578                : n % 100 >= 11
23579                ? 4
23580                : 5;
23581        },
23582        plurals = {
23583            s: [
23584                'أقل من ثانية',
23585                'ثانية واحدة',
23586                ['ثانيتان', 'ثانيتين'],
23587                '%d ثوان',
23588                '%d ثانية',
23589                '%d ثانية',
23590            ],
23591            m: [
23592                'أقل من دقيقة',
23593                'دقيقة واحدة',
23594                ['دقيقتان', 'دقيقتين'],
23595                '%d دقائق',
23596                '%d دقيقة',
23597                '%d دقيقة',
23598            ],
23599            h: [
23600                'أقل من ساعة',
23601                'ساعة واحدة',
23602                ['ساعتان', 'ساعتين'],
23603                '%d ساعات',
23604                '%d ساعة',
23605                '%d ساعة',
23606            ],
23607            d: [
23608                'أقل من يوم',
23609                'يوم واحد',
23610                ['يومان', 'يومين'],
23611                '%d أيام',
23612                '%d يومًا',
23613                '%d يوم',
23614            ],
23615            M: [
23616                'أقل من شهر',
23617                'شهر واحد',
23618                ['شهران', 'شهرين'],
23619                '%d أشهر',
23620                '%d شهرا',
23621                '%d شهر',
23622            ],
23623            y: [
23624                'أقل من عام',
23625                'عام واحد',
23626                ['عامان', 'عامين'],
23627                '%d أعوام',
23628                '%d عامًا',
23629                '%d عام',
23630            ],
23631        },
23632        pluralize = function (u) {
23633            return function (number, withoutSuffix, string, isFuture) {
23634                var f = pluralForm(number),
23635                    str = plurals[u][pluralForm(number)];
23636                if (f === 2) {
23637                    str = str[withoutSuffix ? 0 : 1];
23638                }
23639                return str.replace(/%d/i, number);
23640            };
23641        },
23642        months = [
23643            'يناير',
23644            'فبراير',
23645            'مارس',
23646            'أبريل',
23647            'مايو',
23648            'يونيو',
23649            'يوليو',
23650            'أغسطس',
23651            'سبتمبر',
23652            'أكتوبر',
23653            'نوفمبر',
23654            'ديسمبر',
23655        ];
23656
23657    var arLy = moment.defineLocale('ar-ly', {
23658        months: months,
23659        monthsShort: months,
23660        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23661        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23662        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23663        weekdaysParseExact: true,
23664        longDateFormat: {
23665            LT: 'HH:mm',
23666            LTS: 'HH:mm:ss',
23667            L: 'D/\u200FM/\u200FYYYY',
23668            LL: 'D MMMM YYYY',
23669            LLL: 'D MMMM YYYY HH:mm',
23670            LLLL: 'dddd D MMMM YYYY HH:mm',
23671        },
23672        meridiemParse: /ص|م/,
23673        isPM: function (input) {
23674            return 'م' === input;
23675        },
23676        meridiem: function (hour, minute, isLower) {
23677            if (hour < 12) {
23678                return 'ص';
23679            } else {
23680                return 'م';
23681            }
23682        },
23683        calendar: {
23684            sameDay: '[اليوم عند الساعة] LT',
23685            nextDay: '[غدًا عند الساعة] LT',
23686            nextWeek: 'dddd [عند الساعة] LT',
23687            lastDay: '[أمس عند الساعة] LT',
23688            lastWeek: 'dddd [عند الساعة] LT',
23689            sameElse: 'L',
23690        },
23691        relativeTime: {
23692            future: 'بعد %s',
23693            past: 'منذ %s',
23694            s: pluralize('s'),
23695            ss: pluralize('s'),
23696            m: pluralize('m'),
23697            mm: pluralize('m'),
23698            h: pluralize('h'),
23699            hh: pluralize('h'),
23700            d: pluralize('d'),
23701            dd: pluralize('d'),
23702            M: pluralize('M'),
23703            MM: pluralize('M'),
23704            y: pluralize('y'),
23705            yy: pluralize('y'),
23706        },
23707        preparse: function (string) {
23708            return string.replace(/،/g, ',');
23709        },
23710        postformat: function (string) {
23711            return string
23712                .replace(/\d/g, function (match) {
23713                    return symbolMap[match];
23714                })
23715                .replace(/,/g, '،');
23716        },
23717        week: {
23718            dow: 6, // Saturday is the first day of the week.
23719            doy: 12, // The week that contains Jan 12th is the first week of the year.
23720        },
23721    });
23722
23723    return arLy;
23724
23725})));
23726
23727
23728/***/ }),
23729/* 9 */
23730/***/ (function(module, exports, __webpack_require__) {
23731
23732//! moment.js locale configuration
23733//! locale : Arabic (Morocco) [ar-ma]
23734//! author : ElFadili Yassine : https://github.com/ElFadiliY
23735//! author : Abdel Said : https://github.com/abdelsaid
23736
23737;(function (global, factory) {
23738    true ? factory(__webpack_require__(0)) :
23739   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23740   factory(global.moment)
23741}(this, (function (moment) { 'use strict';
23742
23743    //! moment.js locale configuration
23744
23745    var arMa = moment.defineLocale('ar-ma', {
23746        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23747            '_'
23748        ),
23749        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
23750            '_'
23751        ),
23752        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23753        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
23754        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23755        weekdaysParseExact: true,
23756        longDateFormat: {
23757            LT: 'HH:mm',
23758            LTS: 'HH:mm:ss',
23759            L: 'DD/MM/YYYY',
23760            LL: 'D MMMM YYYY',
23761            LLL: 'D MMMM YYYY HH:mm',
23762            LLLL: 'dddd D MMMM YYYY HH:mm',
23763        },
23764        calendar: {
23765            sameDay: '[اليوم على الساعة] LT',
23766            nextDay: '[غدا على الساعة] LT',
23767            nextWeek: 'dddd [على الساعة] LT',
23768            lastDay: '[أمس على الساعة] LT',
23769            lastWeek: 'dddd [على الساعة] LT',
23770            sameElse: 'L',
23771        },
23772        relativeTime: {
23773            future: 'في %s',
23774            past: 'منذ %s',
23775            s: 'ثوان',
23776            ss: '%d ثانية',
23777            m: 'دقيقة',
23778            mm: '%d دقائق',
23779            h: 'ساعة',
23780            hh: '%d ساعات',
23781            d: 'يوم',
23782            dd: '%d أيام',
23783            M: 'شهر',
23784            MM: '%d أشهر',
23785            y: 'سنة',
23786            yy: '%d سنوات',
23787        },
23788        week: {
23789            dow: 1, // Monday is the first day of the week.
23790            doy: 4, // The week that contains Jan 4th is the first week of the year.
23791        },
23792    });
23793
23794    return arMa;
23795
23796})));
23797
23798
23799/***/ }),
23800/* 10 */
23801/***/ (function(module, exports, __webpack_require__) {
23802
23803//! moment.js locale configuration
23804//! locale : Arabic (Saudi Arabia) [ar-sa]
23805//! author : Suhail Alkowaileet : https://github.com/xsoh
23806
23807;(function (global, factory) {
23808    true ? factory(__webpack_require__(0)) :
23809   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23810   factory(global.moment)
23811}(this, (function (moment) { 'use strict';
23812
23813    //! moment.js locale configuration
23814
23815    var symbolMap = {
23816            1: 'Ù¡',
23817            2: 'Ù¢',
23818            3: 'Ù£',
23819            4: 'Ù¤',
23820            5: 'Ù¥',
23821            6: 'Ù¦',
23822            7: 'Ù§',
23823            8: 'Ù¨',
23824            9: 'Ù©',
23825            0: 'Ù ',
23826        },
23827        numberMap = {
23828            'Ù¡': '1',
23829            'Ù¢': '2',
23830            'Ù£': '3',
23831            'Ù¤': '4',
23832            'Ù¥': '5',
23833            'Ù¦': '6',
23834            'Ù§': '7',
23835            'Ù¨': '8',
23836            'Ù©': '9',
23837            'Ù ': '0',
23838        };
23839
23840    var arSa = moment.defineLocale('ar-sa', {
23841        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23842            '_'
23843        ),
23844        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23845            '_'
23846        ),
23847        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23848        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23849        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23850        weekdaysParseExact: true,
23851        longDateFormat: {
23852            LT: 'HH:mm',
23853            LTS: 'HH:mm:ss',
23854            L: 'DD/MM/YYYY',
23855            LL: 'D MMMM YYYY',
23856            LLL: 'D MMMM YYYY HH:mm',
23857            LLLL: 'dddd D MMMM YYYY HH:mm',
23858        },
23859        meridiemParse: /ص|م/,
23860        isPM: function (input) {
23861            return 'م' === input;
23862        },
23863        meridiem: function (hour, minute, isLower) {
23864            if (hour < 12) {
23865                return 'ص';
23866            } else {
23867                return 'م';
23868            }
23869        },
23870        calendar: {
23871            sameDay: '[اليوم على الساعة] LT',
23872            nextDay: '[غدا على الساعة] LT',
23873            nextWeek: 'dddd [على الساعة] LT',
23874            lastDay: '[أمس على الساعة] LT',
23875            lastWeek: 'dddd [على الساعة] LT',
23876            sameElse: 'L',
23877        },
23878        relativeTime: {
23879            future: 'في %s',
23880            past: 'منذ %s',
23881            s: 'ثوان',
23882            ss: '%d ثانية',
23883            m: 'دقيقة',
23884            mm: '%d دقائق',
23885            h: 'ساعة',
23886            hh: '%d ساعات',
23887            d: 'يوم',
23888            dd: '%d أيام',
23889            M: 'شهر',
23890            MM: '%d أشهر',
23891            y: 'سنة',
23892            yy: '%d سنوات',
23893        },
23894        preparse: function (string) {
23895            return string
23896                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
23897                    return numberMap[match];
23898                })
23899                .replace(/،/g, ',');
23900        },
23901        postformat: function (string) {
23902            return string
23903                .replace(/\d/g, function (match) {
23904                    return symbolMap[match];
23905                })
23906                .replace(/,/g, '،');
23907        },
23908        week: {
23909            dow: 0, // Sunday is the first day of the week.
23910            doy: 6, // The week that contains Jan 6th is the first week of the year.
23911        },
23912    });
23913
23914    return arSa;
23915
23916})));
23917
23918
23919/***/ }),
23920/* 11 */
23921/***/ (function(module, exports, __webpack_require__) {
23922
23923//! moment.js locale configuration
23924//! locale  :  Arabic (Tunisia) [ar-tn]
23925//! author : Nader Toukabri : https://github.com/naderio
23926
23927;(function (global, factory) {
23928    true ? factory(__webpack_require__(0)) :
23929   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
23930   factory(global.moment)
23931}(this, (function (moment) { 'use strict';
23932
23933    //! moment.js locale configuration
23934
23935    var arTn = moment.defineLocale('ar-tn', {
23936        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23937            '_'
23938        ),
23939        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
23940            '_'
23941        ),
23942        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
23943        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
23944        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
23945        weekdaysParseExact: true,
23946        longDateFormat: {
23947            LT: 'HH:mm',
23948            LTS: 'HH:mm:ss',
23949            L: 'DD/MM/YYYY',
23950            LL: 'D MMMM YYYY',
23951            LLL: 'D MMMM YYYY HH:mm',
23952            LLLL: 'dddd D MMMM YYYY HH:mm',
23953        },
23954        calendar: {
23955            sameDay: '[اليوم على الساعة] LT',
23956            nextDay: '[غدا على الساعة] LT',
23957            nextWeek: 'dddd [على الساعة] LT',
23958            lastDay: '[أمس على الساعة] LT',
23959            lastWeek: 'dddd [على الساعة] LT',
23960            sameElse: 'L',
23961        },
23962        relativeTime: {
23963            future: 'في %s',
23964            past: 'منذ %s',
23965            s: 'ثوان',
23966            ss: '%d ثانية',
23967            m: 'دقيقة',
23968            mm: '%d دقائق',
23969            h: 'ساعة',
23970            hh: '%d ساعات',
23971            d: 'يوم',
23972            dd: '%d أيام',
23973            M: 'شهر',
23974            MM: '%d أشهر',
23975            y: 'سنة',
23976            yy: '%d سنوات',
23977        },
23978        week: {
23979            dow: 1, // Monday is the first day of the week.
23980            doy: 4, // The week that contains Jan 4th is the first week of the year.
23981        },
23982    });
23983
23984    return arTn;
23985
23986})));
23987
23988
23989/***/ }),
23990/* 12 */
23991/***/ (function(module, exports, __webpack_require__) {
23992
23993//! moment.js locale configuration
23994//! locale : Azerbaijani [az]
23995//! author : topchiyev : https://github.com/topchiyev
23996
23997;(function (global, factory) {
23998   
23998 true ? factory(__webpack_require__(0)) :
23999   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24000   factory(global.moment)
24001}(this, (function (moment) { 'use strict';
24002
24003    //! moment.js locale configuration
24004
24005    var suffixes = {
24006        1: '-inci',
24007        5: '-inci',
24008        8: '-inci',
24009        70: '-inci',
24010        80: '-inci',
24011        2: '-nci',
24012        7: '-nci',
24013        20: '-nci',
24014        50: '-nci',
24015        3: '-üncü',
24016        4: '-üncü',
24017        100: '-üncü',
24018        6: '-ncı',
24019        9: '-uncu',
24020        10: '-uncu',
24021        30: '-uncu',
24022        60: '-ıncı',
24023        90: '-ıncı',
24024    };
24025
24026    var az = moment.defineLocale('az', {
24027        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
24028            '_'
24029        ),
24030        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
24031        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
24032            '_'
24033        ),
24034        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
24035        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
24036        weekdaysParseExact: true,
24037        longDateFormat: {
24038            LT: 'HH:mm',
24039            LTS: 'HH:mm:ss',
24040            L: 'DD.MM.YYYY',
24041            LL: 'D MMMM YYYY',
24042            LLL: 'D MMMM YYYY HH:mm',
24043            LLLL: 'dddd, D MMMM YYYY HH:mm',
24044        },
24045        calendar: {
24046            sameDay: '[bugün saat] LT',
24047            nextDay: '[sabah saat] LT',
24048            nextWeek: '[gələn həftə] dddd [saat] LT',
24049            lastDay: '[dünən] LT',
24050            lastWeek: '[keçən həftə] dddd [saat] LT',
24051            sameElse: 'L',
24052        },
24053        relativeTime: {
24054            future: '%s sonra',
24055            past: '%s əvvəl',
24056            s: 'bir neçə saniyə',
24057            ss: '%d saniyə',
24058            m: 'bir dəqiqə',
24059            mm: '%d dəqiqə',
24060            h: 'bir saat',
24061            hh: '%d saat',
24062            d: 'bir gün',
24063            dd: '%d gün',
24064            M: 'bir ay',
24065            MM: '%d ay',
24066            y: 'bir il',
24067            yy: '%d il',
24068        },
24069        meridiemParse: /gecə|səhər|gündüz|axşam/,
24070        isPM: function (input) {
24071            return /^(gündüz|axşam)$/.test(input);
24072        },
24073        meridiem: function (hour, minute, isLower) {
24074            if (hour < 4) {
24075                return 'gecə';
24076            } else if (hour < 12) {
24077                return 'səhər';
24078            } else if (hour < 17) {
24079                return 'gündüz';
24080            } else {
24081                return 'axşam';
24082            }
24083        },
24084        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
24085        ordinal: function (number) {
24086            if (number === 0) {
24087                // special case for zero
24088                return number + '-ıncı';
24089            }
24090            var a = number % 10,
24091                b = (number % 100) - a,
24092                c = number >= 100 ? 100 : null;
24093            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
24094        },
24095        week: {
24096            dow: 1, // Monday is the first day of the week.
24097            doy: 7, // The week that contains Jan 7th is the first week of the year.
24098        },
24099    });
24100
24101    return az;
24102
24103})));
24104
24105
24106/***/ }),
24107/* 13 */
24108/***/ (function(module, exports, __webpack_require__) {
24109
24110//! moment.js locale configuration
24111//! locale : Belarusian [be]
24112//! author : Dmitry Demidov : https://github.com/demidov91
24113//! author: Praleska: http://praleska.pro/
24114//! Author : Menelion Elensúle : https://github.com/Oire
24115
24116;(function (global, factory) {
24117    true ? factory(__webpack_require__(0)) :
24118   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24119   factory(global.moment)
24120}(this, (function (moment) { 'use strict';
24121
24122    //! moment.js locale configuration
24123
24124    function plural(word, num) {
24125        var forms = word.split('_');
24126        return num % 10 === 1 && num % 100 !== 11
24127            ? forms[0]
24128            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
24129            ? forms[1]
24130            : forms[2];
24131    }
24132    function relativeTimeWithPlural(number, withoutSuffix, key) {
24133        var format = {
24134            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
24135            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
24136            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
24137            dd: 'дзень_дні_дзён',
24138            MM: 'месяц_месяцы_месяцаў',
24139            yy: 'год_гады_гадоў',
24140        };
24141        if (key === 'm') {
24142            return withoutSuffix ? 'хвіліна' : 'хвіліну';
24143        } else if (key === 'h') {
24144            return withoutSuffix ? 'гадзіна' : 'гадзіну';
24145        } else {
24146            return number + ' ' + plural(format[key], +number);
24147        }
24148    }
24149
24150    var be = moment.defineLocale('be', {
24151        months: {
24152            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
24153                '_'
24154            ),
24155            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
24156                '_'
24157            ),
24158        },
24159        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(
24160            '_'
24161        ),
24162        weekdays: {
24163            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
24164                '_'
24165            ),
24166            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
24167                '_'
24168            ),
24169            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
24170        },
24171        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
24172        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
24173        longDateFormat: {
24174            LT: 'HH:mm',
24175            LTS: 'HH:mm:ss',
24176            L: 'DD.MM.YYYY',
24177            LL: 'D MMMM YYYY г.',
24178            LLL: 'D MMMM YYYY г., HH:mm',
24179            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
24180        },
24181        calendar: {
24182            sameDay: '[Сёння ў] LT',
24183            nextDay: '[Заўтра ў] LT',
24184            lastDay: '[Учора ў] LT',
24185            nextWeek: function () {
24186                return '[У] dddd [ў] LT';
24187            },
24188            lastWeek: function () {
24189                switch (this.day()) {
24190                    case 0:
24191                    case 3:
24192                    case 5:
24193                    case 6:
24194                        return '[У мінулую] dddd [ў] LT';
24195                    case 1:
24196                    case 2:
24197                    case 4:
24198                        return '[У мінулы] dddd [ў] LT';
24199                }
24200            },
24201            sameElse: 'L',
24202        },
24203        relativeTime: {
24204            future: 'праз %s',
24205            past: '%s таму',
24206            s: 'некалькі секунд',
24207            m: relativeTimeWithPlural,
24208            mm: relativeTimeWithPlural,
24209            h: relativeTimeWithPlural,
24210            hh: relativeTimeWithPlural,
24211            d: 'дзень',
24212            dd: relativeTimeWithPlural,
24213            M: 'месяц',
24214            MM: relativeTimeWithPlural,
24215            y: 'год',
24216            yy: relativeTimeWithPlural,
24217        },
24218        meridiemParse: /ночы|раніцы|дня|вечара/,
24219        isPM: function (input) {
24220            return /^(дня|вечара)$/.test(input);
24221        },
24222        meridiem: function (hour, minute, isLower) {
24223            if (hour < 4) {
24224                return 'ночы';
24225            } else if (hour < 12) {
24226                return 'раніцы';
24227            } else if (hour < 17) {
24228                return 'дня';
24229            } else {
24230                return 'вечара';
24231            }
24232        },
24233        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
24234        ordinal: function (number, period) {
24235            switch (period) {
24236                case 'M':
24237                case 'd':
24238                case 'DDD':
24239                case 'w':
24240                case 'W':
24241                    return (number % 10 === 2 || number % 10 === 3) &&
24242                        number % 100 !== 12 &&
24243                        number % 100 !== 13
24244                        ? number + '-і'
24245                        : number + '-ы';
24246                case 'D':
24247                    return number + '-га';
24248                default:
24249                    return number;
24250            }
24251        },
24252        week: {
24253            dow: 1, // Monday is the first day of the week.
24254            doy: 7, // The week that contains Jan 7th is the first week of the year.
24255        },
24256    });
24257
24258    return be;
24259
24260})));
24261
24262
24263/***/ }),
24264/* 14 */
24265/***/ (function(module, exports, __webpack_require__) {
24266
24267//! moment.js locale configuration
24268//! locale : Bulgarian [bg]
24269//! author : Krasen Borisov : https://github.com/kraz
24270
24271;(function (global, factory) {
24272    true ? factory(__webpack_require__(0)) :
24273   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24274   factory(global.moment)
24275}(this, (function (moment) { 'use strict';
24276
24277    //! moment.js locale configuration
24278
24279    var bg = moment.defineLocale('bg', {
24280        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
24281            '_'
24282        ),
24283        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
24284        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
24285            '_'
24286        ),
24287        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
24288        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
24289        longDateFormat: {
24290            LT: 'H:mm',
24291            LTS: 'H:mm:ss',
24292            L: 'D.MM.YYYY',
24293            LL: 'D MMMM YYYY',
24294            LLL: 'D MMMM YYYY H:mm',
24295            LLLL: 'dddd, D MMMM YYYY H:mm',
24296        },
24297        calendar: {
24298            sameDay: '[Днес в] LT',
24299            nextDay: '[Утре в] LT',
24300            nextWeek: 'dddd [в] LT',
24301            lastDay: '[Вчера в] LT',
24302            lastWeek: function () {
24303                switch (this.day()) {
24304                    case 0:
24305                    case 3:
24306                    case 6:
24307                        return '[Миналата] dddd [в] LT';
24308                    case 1:
24309                    case 2:
24310                    case 4:
24311                    case 5:
24312                        return '[Миналия] dddd [в] LT';
24313                }
24314            },
24315            sameElse: 'L',
24316        },
24317        relativeTime: {
24318            future: 'след %s',
24319            past: 'преди %s',
24320            s: 'няколко секунди',
24321            ss: '%d секунди',
24322            m: 'минута',
24323            mm: '%d минути',
24324            h: 'час',
24325            hh: '%d часа',
24326            d: 'ден',
24327            dd: '%d дена',
24328            w: 'седмица',
24329            ww: '%d седмици',
24330            M: 'месец',
24331            MM: '%d месеца',
24332            y: 'година',
24333            yy: '%d години',
24334        },
24335        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
24336        ordinal: function (number) {
24337            var lastDigit = number % 10,
24338                last2Digits = number % 100;
24339            if (number === 0) {
24340                return number + '-ев';
24341            } else if (last2Digits === 0) {
24342                return number + '-ен';
24343            } else if (last2Digits > 10 && last2Digits < 20) {
24344                return number + '-ти';
24345            } else if (lastDigit === 1) {
24346                return number + '-ви';
24347            } else if (lastDigit === 2) {
24348                return number + '-ри';
24349            } else if (lastDigit === 7 || lastDigit === 8) {
24350                return number + '-ми';
24351            } else {
24352                return number + '-ти';
24353            }
24354        },
24355        week: {
24356            dow: 1, // Monday is the first day of the week.
24357            doy: 7, // The week that contains Jan 7th is the first week of the year.
24358        },
24359    });
24360
24361    return bg;
24362
24363})));
24364
24365
24366/***/ }),
24367/* 15 */
24368/***/ (function(module, exports, __webpack_require__) {
24369
24370//! moment.js locale configuration
24371//! locale : Bambara [bm]
24372//! author : Estelle Comment : https://github.com/estellecomment
24373
24374;(function (global, factory) {
24375    true ? factory(__webpack_require__(0)) :
24376   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24377   factory(global.moment)
24378}(this, (function (moment) { 'use strict';
24379
24380    //! moment.js locale configuration
24381
24382    var bm = moment.defineLocale('bm', {
24383        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
24384            '_'
24385        ),
24386        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
24387        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
24388        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
24389        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
24390        longDateFormat: {
24391            LT: 'HH:mm',
24392            LTS: 'HH:mm:ss',
24393            L: 'DD/MM/YYYY',
24394            LL: 'MMMM [tile] D [san] YYYY',
24395            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
24396            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
24397        },
24398        calendar: {
24399            sameDay: '[Bi lɛrɛ] LT',
24400            nextDay: '[Sini lɛrɛ] LT',
24401            nextWeek: 'dddd [don lɛrɛ] LT',
24402            lastDay: '[Kunu lɛrɛ] LT',
24403            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
24404            sameElse: 'L',
24405        },
24406        relativeTime: {
24407            future: '%s kɔnɔ',
24408            past: 'a bɛ %s bɔ',
24409            s: 'sanga dama dama',
24410            ss: 'sekondi %d',
24411            m: 'miniti kelen',
24412            mm: 'miniti %d',
24413            h: 'lɛrɛ kelen',
24414            hh: 'lɛrɛ %d',
24415            d: 'tile kelen',
24416            dd: 'tile %d',
24417            M: 'kalo kelen',
24418            MM: 'kalo %d',
24419            y: 'san kelen',
24420            yy: 'san %d',
24421        },
24422        week: {
24423            dow: 1, // Monday is the first day of the week.
24424            doy: 4, // The week that contains Jan 4th is the first week of the year.
24425        },
24426    });
24427
24428    return bm;
24429
24430})));
24431
24432
24433/***/ }),
24434/* 16 */
24435/***/ (function(module, exports, __webpack_require__) {
24436
24437//! moment.js locale configuration
24438//! locale : Bengali [bn]
24439//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
24440
24441;(function (global, factory) {
24442    true ? factory(__webpack_require__(0)) :
24443   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24444   factory(global.moment)
24445}(this, (function (moment) { 'use strict';
24446
24447    //! moment.js locale configuration
24448
24449    var symbolMap = {
24450            1: 'à§§',
24451            2: '২',
24452            3: 'à§©',
24453            4: '৪',
24454            5: 'à§«',
24455            6: '৬',
24456            7: 'à§­',
24457            8: 'à§®',
24458            9: '৯',
24459            0: '০',
24460        },
24461        numberMap = {
24462            'à§§': '1',
24463            '২': '2',
24464            'à§©': '3',
24465            '৪': '4',
24466            'à§«': '5',
24467            '৬': '6',
24468            'à§­': '7',
24469            'à§®': '8',
24470            '৯': '9',
24471            '০': '0',
24472        };
24473
24474    var bn = moment.defineLocale('bn', {
24475        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
24476            '_'
24477        ),
24478        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
24479            '_'
24480        ),
24481        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
24482            '_'
24483        ),
24484        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
24485        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
24486        longDateFormat: {
24487            LT: 'A h:mm সময়',
24488            LTS: 'A h:mm:ss সময়',
24489            L: 'DD/MM/YYYY',
24490            LL: 'D MMMM YYYY',
24491            LLL: 'D MMMM YYYY, A h:mm সময়',
24492            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
24493        },
24494        calendar: {
24495            sameDay: '[আজ] LT',
24496            nextDay: '[আগামীকাল] LT',
24497            nextWeek: 'dddd, LT',
24498            lastDay: '[গতকাল] LT',
24499            lastWeek: '[গত] dddd, LT',
24500            sameElse: 'L',
24501        },
24502        relativeTime: {
24503            future: '%s পরে',
24504            past: '%s আগে',
24505            s: 'কয়েক সেকেন্ড',
24506            ss: '%d সেকেন্ড',
24507            m: 'এক মিনিট',
24508            mm: '%d মিনিট',
24509            h: 'এক ঘন্টা',
24510            hh: '%d ঘন্টা',
24511            d: 'এক দিন',
24512            dd: '%d দিন',
24513            M: 'এক মাস',
24514            MM: '%d মাস',
24515            y: 'এক বছর',
24516            yy: '%d বছর',
24517        },
24518        preparse: function (string) {
24519            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
24520                return numberMap[match];
24521            });
24522        },
24523        postformat: function (string) {
24524            return string.replace(/\d/g, function (match) {
24525                return symbolMap[match];
24526            });
24527        },
24528        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
24529        meridiemHour: function (hour, meridiem) {
24530            if (hour === 12) {
24531                hour = 0;
24532            }
24533            if (
24534                (meridiem === 'রাত' && hour >= 4) ||
24535                (meridiem === 'দুপুর' && hour < 5) ||
24536                meridiem === 'বিকাল'
24537            ) {
24538                return hour + 12;
24539            } else {
24540                return hour;
24541            }
24542        },
24543        meridiem: function (hour, minute, isLower) {
24544            if (hour < 4) {
24545                return 'রাত';
24546            } else if (hour < 10) {
24547                return 'সকাল';
24548            } else if (hour < 17) {
24549                return 'দুপুর';
24550            } else if (hour < 20) {
24551                return 'বিকাল';
24552            } else {
24553                return 'রাত';
24554            }
24555        },
24556        week: {
24557            dow: 0, // Sunday is the first day of the week.
24558            doy: 6, // The week that contains Jan 6th is the first week of the year.
24559        },
24560    });
24561
24562    return bn;
24563
24564})));
24565
24566
24567/***/ }),
24568/* 17 */
24569/***/ (function(module, exports, __webpack_require__) {
24570
24571//! moment.js locale configuration
24572//! locale : Bengali (Bangladesh) [bn-bd]
24573//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
24574
24575;(function (global, factory) {
24576    true ? factory(__webpack_require__(0)) :
24577   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24578   factory(global.moment)
24579}(this, (function (moment) { 'use strict';
24580
24581    //! moment.js locale configuration
24582
24583    var symbolMap = {
24584            1: 'à§§',
24585            2: '২',
24586            3: 'à§©',
24587            4: '৪',
24588            5: 'à§«',
24589            6: '৬',
24590            7: 'à§­',
24591            8: 'à§®',
24592            9: '৯',
24593            0: '০',
24594        },
24595        numberMap = {
24596            'à§§': '1',
24597            '২': '2',
24598            'à§©': '3',
24599            '৪': '4',
24600            'à§«': '5',
24601            '৬': '6',
24602            'à§­': '7',
24603            'à§®': '8',
24604            '৯': '9',
24605            '০': '0',
24606        };
24607
24608    var bnBd = moment.defineLocale('bn-bd', {
24609        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
24610            '_'
24611        ),
24612        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
24613            '_'
24614        ),
24615        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
24616            '_'
24617        ),
24618        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
24619        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
24620        longDateFormat: {
24621            LT: 'A h:mm সময়',
24622            LTS: 'A h:mm:ss সময়',
24623            L: 'DD/MM/YYYY',
24624            LL: 'D MMMM YYYY',
24625            LLL: 'D MMMM YYYY, A h:mm সময়',
24626            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
24627        },
24628        calendar: {
24629            sameDay: '[আজ] LT',
24630            nextDay: '[আগামীকাল] LT',
24631            nextWeek: 'dddd, LT',
24632            lastDay: '[গতকাল] LT',
24633            lastWeek: '[গত] dddd, LT',
24634            sameElse: 'L',
24635        },
24636        relativeTime: {
24637            future: '%s পরে',
24638            past: '%s আগে',
24639            s: 'কয়েক সেকেন্ড',
24640            ss: '%d সেকেন্ড',
24641            m: 'এক মিনিট',
24642            mm: '%d মিনিট',
24643            h: 'এক ঘন্টা',
24644            hh: '%d ঘন্টা',
24645            d: 'এক দিন',
24646            dd: '%d দিন',
24647            M: 'এক মাস',
24648            MM: '%d মাস',
24649            y: 'এক বছর',
24650            yy: '%d বছর',
24651        },
24652        preparse: function (string) {
24653            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
24654                return numberMap[match];
24655            });
24656        },
24657        postformat: function (string) {
24658            return string.replace(/\d/g, function (match) {
24659                return symbolMap[match];
24660            });
24661        },
24662
24663        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
24664        meridiemHour: function (hour, meridiem) {
24665            if (hour === 12) {
24666                hour = 0;
24667            }
24668            if (meridiem === 'রাত') {
24669                return hour < 4 ? hour : hour + 12;
24670            } else if (meridiem === 'ভোর') {
24671                return hour;
24672            } else if (meridiem === 'সকাল') {
24673                return hour;
24674            } else if (meridiem === 'দুপুর') {
24675                return hour >= 3 ? hour : hour + 12;
24676            } else if (meridiem === 'বিকাল') {
24677                return hour + 12;
24678            } else if (meridiem === 'সন্ধ্যা') {
24679                return hour + 12;
24680            }
24681        },
24682
24683        meridiem: function (hour, minute, isLower) {
24684            if (hour < 4) {
24685                return 'রাত';
24686            } else if (hour < 6) {
24687                return 'ভোর';
24688            } else if (hour < 12) {
24689                return 'সকাল';
24690            } else if (hour < 15) {
24691                return 'দুপুর';
24692            } else if (hour < 18) {
24693                return 'বিকাল';
24694            } else if (hour < 20) {
24695                return 'সন্ধ্যা';
24696            } else {
24697                return 'রাত';
24698            }
24699        },
24700        week: {
24701            dow: 0, // Sunday is the first day of the week.
24702            doy: 6, // The week that contains Jan 6th is the first week of the year.
24703        },
24704    });
24705
24706    return bnBd;
24707
24708})));
24709
24710
24711/***/ }),
24712/* 18 */
24713/***/ (function(module, exports, __webpack_require__) {
24714
24715//! moment.js locale configuration
24716//! locale : Tibetan [bo]
24717//! author : Thupten N. Chakrishar : https://github.com/vajradog
24718
24719;(function (global, factory) {
24720    true ? factory(__webpack_require__(0)) :
24721   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24722   factory(global.moment)
24723}(this, (function (moment) { 'use strict';
24724
24725    //! moment.js locale configuration
24726
24727    var symbolMap = {
24728            1: '༡',
24729            2: '༢',
24730            3: '༣',
24731            4: '༤',
24732            5: '༥',
24733            6: '༦',
24734            7: '༧',
24735            8: '༨',
24736            9: '༩',
24737            0: '༠',
24738        },
24739        numberMap = {
24740            '༡': '1',
24741            '༢': '2',
24742            '༣': '3',
24743            '༤': '4',
24744            '༥': '5',
24745            '༦': '6',
24746            '༧': '7',
24747            '༨': '8',
24748            '༩': '9',
24749            '༠': '0',
24750        };
24751
24752    var bo = moment.defineLocale('bo', {
24753        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
24754            '_'
24755        ),
24756        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
24757            '_'
24758        ),
24759        monthsShortRegex: /^(ཟླ་\d{1,2})/,
24760        monthsParseExact: true,
24761        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
24762            '_'
24763        ),
24764        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
24765            '_'
24766        ),
24767        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
24768        longDateFormat: {
24769            LT: 'A h:mm',
24770            LTS: 'A h:mm:ss',
24771            L: 'DD/MM/YYYY',
24772            LL: 'D MMMM YYYY',
24773            LLL: 'D MMMM YYYY, A h:mm',
24774            LLLL: 'dddd, D MMMM YYYY, A h:mm',
24775        },
24776        calendar: {
24777            sameDay: '[དི་རིང] LT',
24778            nextDay: '[སང་ཉིན] LT',
24779            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
24780            lastDay: '[ཁ་སང] LT',
24781            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
24782            sameElse: 'L',
24783        },
24784        relativeTime: {
24785            future: '%s ལ་',
24786            past: '%s སྔན་ལ',
24787            s: 'ལམ་སང',
24788            ss: '%d སྐར་ཆ།',
24789            m: 'སྐར་མ་གཅིག',
24790            mm: '%d སྐར་མ',
24791            h: 'ཆུ་ཚོད་གཅིག',
24792            hh: '%d ཆུ་ཚོད',
24793            d: 'ཉིན་གཅིག',
24794            dd: '%d ཉིན་',
24795            M: 'ཟླ་བ་གཅིག',
24796            MM: '%d ཟླ་བ',
24797            y: 'ལོ་གཅིག',
24798            yy: '%d ལོ',
24799        },
24800        preparse: function (string) {
24801            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
24802                return numberMap[match];
24803            });
24804        },
24805        postformat: function (string) {
24806            return string.replace(/\d/g, function (match) {
24807                return symbolMap[match];
24808            });
24809        },
24810        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
24811        meridiemHour: function (hour, meridiem) {
24812            if (hour === 12) {
24813                hour = 0;
24814            }
24815            if (
24816                (meridiem === 'མཚན་མོ' && hour >= 4) ||
24817                (meridiem === 'ཉིན་གུང' && hour < 5) ||
24818                meridiem === 'དགོང་དག'
24819            ) {
24820                return hour + 12;
24821            } else {
24822                return hour;
24823            }
24824        },
24825        meridiem: function (hour, minute, isLower) {
24826            if (hour < 4) {
24827                return 'མཚན་མོ';
24828            } else if (hour < 10) {
24829                return 'ཞོགས་ཀས';
24830            } else if (hour < 17) {
24831                return 'ཉིན་གུང';
24832            } else if (hour < 20) {
24833                return 'དགོང་དག';
24834            } else {
24835                return 'མཚན་མོ';
24836            }
24837        },
24838        week: {
24839            dow: 0, // Sunday is the first day of the week.
24840            doy: 6, // The week that contains Jan 6th is the first week of the year.
24841        },
24842    });
24843
24844    return bo;
24845
24846})));
24847
24848
24849/***/ }),
24850/* 19 */
24851/***/ (function(module, exports, __webpack_require__) {
24852
24853//! moment.js locale configuration
24854//! locale : Breton [br]
24855//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
24856
24857;(function (global, factory) {
24858    true ? factory(__webpack_require__(0)) :
24859   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
24860   factory(global.moment)
24861}(this, (function (moment) { 'use strict';
24862
24863    //! moment.js locale configuration
24864
24865    function relativeTimeWithMutation(number, withoutSuffix, key) {
24866        var format = {
24867            mm: 'munutenn',
24868            MM: 'miz',
24869            dd: 'devezh',
24870        };
24871        return number + ' ' + mutation(format[key], number);
24872    }
24873    function specialMutationForYears(number) {
24874        switch (lastNumber(number)) {
24875            case 1:
24876            case 3:
24877            case 4:
24878            case 5:
24879            case 9:
24880                return number + ' bloaz';
24881            default:
24882                return number + ' vloaz';
24883        }
24884    }
24885    function lastNumber(number) {
24886        if (number > 9) {
24887            return lastNumber(number % 10);
24888        }
24889        return number;
24890    }
24891    function mutation(text, number) {
24892        if (number === 2) {
24893            return softMutation(text);
24894        }
24895        return text;
24896    }
24897    function softMutation(text) {
24898        var mutationTable = {
24899            m: 'v',
24900            b: 'v',
24901            d: 'z',
24902        };
24903        if (mutationTable[text.charAt(0)] === undefined) {
24904            return text;
24905        }
24906        return mutationTable[text.charAt(0)] + text.substring(1);
24907    }
24908
24909    var monthsParse = [
24910            /^gen/i,
24911            /^c[ʼ\']hwe/i,
24912            /^meu/i,
24913            /^ebr/i,
24914            /^mae/i,
24915            /^(mez|eve)/i,
24916            /^gou/i,
24917            /^eos/i,
24918            /^gwe/i,
24919            /^her/i,
24920            /^du/i,
24921            /^ker/i,
24922        ],
24923        monthsRegex = /^(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,
24924        monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
24925        monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
24926        fullWeekdaysParse = [
24927            /^sul/i,
24928            /^lun/i,
24929            /^meurzh/i,
24930            /^merc[ʼ\']her/i,
24931            /^yaou/i,
24932            /^gwener/i,
24933            /^sadorn/i,
24934        ],
24935        shortWeekdaysParse = [
24936            /^Sul/i,
24937            /^Lun/i,
24938            /^Meu/i,
24939            /^Mer/i,
24940            /^Yao/i,
24941            /^Gwe/i,
24942            /^Sad/i,
24943        ],
24944        minWeekdaysParse = [
24945            /^Su/i,
24946            /^Lu/i,
24947            /^Me([^r]|$)/i,
24948            /^Mer/i,
24949            /^Ya/i,
24950            /^Gw/i,
24951            /^Sa/i,
24952        ];
24953
24954    var br = moment.defineLocale('br', {
24955        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
24956            '_'
24957        ),
24958        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
24959        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
24960        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
24961        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
24962        weekdaysParse: minWeekdaysParse,
24963        fullWeekdaysParse: fullWeekdaysParse,
24964        shortWeekdaysParse: shortWeekdaysParse,
24965        minWeekdaysParse: minWeekdaysParse,
24966
24967        monthsRegex: monthsRegex,
24968        monthsShortRegex: monthsRegex,
24969        monthsStrictRegex: monthsStrictRegex,
24970        monthsShortStrictRegex: monthsShortStrictRegex,
24971        monthsParse: monthsParse,
24972        longMonthsParse: monthsParse,
24973        shortMonthsParse: monthsParse,
24974
24975        longDateFormat: {
24976            LT: 'HH:mm',
24977            LTS: 'HH:mm:ss',
24978            L: 'DD/MM/YYYY',
24979            LL: 'D [a viz] MMMM YYYY',
24980            LLL: 'D [a viz] MMMM YYYY HH:mm',
24981            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
24982        },
24983        calendar: {
24984            sameDay: '[Hiziv da] LT',
24985            nextDay: '[Warcʼhoazh da] LT',
24986            nextWeek: 'dddd [da] LT',
24987            lastDay: '[Decʼh da] LT',
24988            lastWeek: 'dddd [paset da] LT',
24989            sameElse: 'L',
24990        },
24991        relativeTime: {
24992            future: 'a-benn %s',
24993            past: '%s ʼzo',
24994            s: 'un nebeud segondennoù',
24995            ss: '%d eilenn',
24996            m: 'ur vunutenn',
24997            mm: relativeTimeWithMutation,
24998            h: 'un eur',
24999            hh: '%d eur',
25000            d: 'un devezh',
25001            dd: relativeTimeWithMutation,
25002            M: 'ur miz',
25003            MM: relativeTimeWithMutation,
25004            y: 'ur bloaz',
25005            yy: specialMutationForYears,
25006        },
25007        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
25008        ordinal: function (number) {
25009            var output = number === 1 ? 'añ' : 'vet';
25010            return number + output;
25011        },
25012        week: {
25013            dow: 1, // Monday is the first day of the week.
25014            doy: 4, // The week that contains Jan 4th is the first week of the year.
25015        },
25016        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
25017        isPM: function (token) {
25018            return token === 'g.m.';
25019        },
25020        meridiem: function (hour, minute, isLower) {
25021            return hour < 12 ? 'a.m.' : 'g.m.';
25022        },
25023    });
25024
25025    return br;
25026
25027})));
25028
25029
25030/***/ }),
25031/* 20 */
25032/***/ (function(module, exports, __webpack_require__) {
25033
25034//! moment.js locale configuration
25035//! locale : Bosnian [bs]
25036//! author : Nedim Cholich : https://github.com/frontyard
25037//! based on (hr) translation by Bojan Marković
25038
25039;(function (global, factory) {
25040    true ? factory(__webpack_require__(0)) :
25041   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25042   factory(global.moment)
25043}(this, (function (moment) { 'use strict';
25044
25045    //! moment.js locale configuration
25046
25047    function translate(number, withoutSuffix, key) {
25048        var result = number + ' ';
25049        switch (key) {
25050            case 'ss':
25051                if (number === 1) {
25052                    result += 'sekunda';
25053                } else if (number === 2 || number === 3 || number === 4) {
25054                    result += 'sekunde';
25055                } else {
25056                    result += 'sekundi';
25057                }
25058                return result;
25059            case 'm':
25060                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
25061            case 'mm':
25062                if (number === 1) {
25063                    result += 'minuta';
25064                } else if (number === 2 || number === 3 || number === 4) {
25065                    result += 'minute';
25066                } else {
25067                    result += 'minuta';
25068                }
25069                return result;
25070            case 'h':
25071                return withoutSuffix ? 'jedan sat' : 'jednog sata';
25072            case 'hh':
25073                if (number === 1) {
25074                    result += 'sat';
25075                } else if (number === 2 || number === 3 || number === 4) {
25076                    result += 'sata';
25077                } else {
25078                    result += 'sati';
25079                }
25080                return result;
25081            case 'dd':
25082                if (number === 1) {
25083                    result += 'dan';
25084                } else {
25085                    result += 'dana';
25086                }
25087                return result;
25088            case 'MM':
25089                if (number === 1) {
25090                    result += 'mjesec';
25091                } else if (number === 2 || number === 3 || number === 4) {
25092                    result += 'mjeseca';
25093                } else {
25094                    result += 'mjeseci';
25095                }
25096                return result;
25097            case 'yy':
25098                if (number === 1) {
25099                    result += 'godina';
25100                } else if (number === 2 || number === 3 || number === 4) {
25101                    result += 'godine';
25102                } else {
25103                    result += 'godina';
25104                }
25105                return result;
25106        }
25107    }
25108
25109    var bs = moment.defineLocale('bs', {
25110        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
25111            '_'
25112        ),
25113        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
25114            '_'
25115        ),
25116        monthsParseExact: true,
25117        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
25118            '_'
25119        ),
25120        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
25121        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
25122        weekdaysParseExact: true,
25123        longDateFormat: {
25124            LT: 'H:mm',
25125            LTS: 'H:mm:ss',
25126            L: 'DD.MM.YYYY',
25127            LL: 'D. MMMM YYYY',
25128            LLL: 'D. MMMM YYYY H:mm',
25129            LLLL: 'dddd, D. MMMM YYYY H:mm',
25130        },
25131        calendar: {
25132            sameDay: '[danas u] LT',
25133            nextDay: '[sutra u] LT',
25134            nextWeek: function () {
25135                switch (this.day()) {
25136                    case 0:
25137                        return '[u] [nedjelju] [u] LT';
25138                    case 3:
25139                        return '[u] [srijedu] [u] LT';
25140                    case 6:
25141                        return '[u] [subotu] [u] LT';
25142                    case 1:
25143                    case 2:
25144                    case 4:
25145                    case 5:
25146                        return '[u] dddd [u] LT';
25147                }
25148            },
25149            lastDay: '[jučer u] LT',
25150            lastWeek: function () {
25151                switch (this.day()) {
25152                    case 0:
25153                    case 3:
25154                        return '[prošlu] dddd [u] LT';
25155                    case 6:
25156                        return '[prošle] [subote] [u] LT';
25157                    case 1:
25158                    case 2:
25159                    case 4:
25160                    case 5:
25161                        return '[prošli] dddd [u] LT';
25162                }
25163            },
25164            sameElse: 'L',
25165        },
25166        relativeTime: {
25167            future: 'za %s',
25168            past: 'prije %s',
25169            s: 'par sekundi',
25170            ss: translate,
25171            m: translate,
25172            mm: translate,
25173            h: translate,
25174            hh: translate,
25175            d: 'dan',
25176            dd: translate,
25177            M: 'mjesec',
25178            MM: translate,
25179            y: 'godinu',
25180            yy: translate,
25181        },
25182        dayOfMonthOrdinalParse: /\d{1,2}\./,
25183        ordinal: '%d.',
25184        week: {
25185            dow: 1, // Monday is the first day of the week.
25186            doy: 7, // The week that contains Jan 7th is the first week of the year.
25187        },
25188    });
25189
25190    return bs;
25191
25192})));
25193
25194
25195/***/ }),
25196/* 21 */
25197/***/ (function(module, exports, __webpack_require__) {
25198
25199//! moment.js locale configuration
25200//! locale : Catalan [ca]
25201//! author : Juan G. Hurtado : https://github.com/juanghurtado
25202
25203;(function (global, factory) {
25204    true ? factory(__webpack_require__(0)) :
25205   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25206   factory(global.moment)
25207}(this, (function (moment) { 'use strict';
25208
25209    //! moment.js locale configuration
25210
25211    var ca = moment.defineLocale('ca', {
25212        months: {
25213            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
25214                '_'
25215            ),
25216            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(
25217                '_'
25218            ),
25219            isFormat: /D[oD]?(\s)+MMMM/,
25220        },
25221        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
25222            '_'
25223        ),
25224        monthsParseExact: true,
25225        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
25226            '_'
25227        ),
25228        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
25229        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
25230        weekdaysParseExact: true,
25231        longDateFormat: {
25232            LT: 'H:mm',
25233            LTS: 'H:mm:ss',
25234            L: 'DD/MM/YYYY',
25235            LL: 'D MMMM [de] YYYY',
25236            ll: 'D MMM YYYY',
25237            LLL: 'D MMMM [de] YYYY [a les] H:mm',
25238            lll: 'D MMM YYYY, H:mm',
25239            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
25240            llll: 'ddd D MMM YYYY, H:mm',
25241        },
25242        calendar: {
25243            sameDay: function () {
25244                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25245            },
25246            nextDay: function () {
25247                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25248            },
25249            nextWeek: function () {
25250                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25251            },
25252            lastDay: function () {
25253                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
25254            },
25255            lastWeek: function () {
25256                return (
25257                    '[el] dddd [passat a ' +
25258                    (this.hours() !== 1 ? 'les' : 'la') +
25259                    '] LT'
25260                );
25261            },
25262            sameElse: 'L',
25263        },
25264        relativeTime: {
25265            future: "d'aquí %s",
25266            past: 'fa %s',
25267            s: 'uns segons',
25268            ss: '%d segons',
25269            m: 'un minut',
25270            mm: '%d minuts',
25271            h: 'una hora',
25272            hh: '%d hores',
25273            d: 'un dia',
25274            dd: '%d dies',
25275            M: 'un mes',
25276            MM: '%d mesos',
25277            y: 'un any',
25278            yy: '%d anys',
25279        },
25280        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
25281        ordinal: function (number, period) {
25282            var output =
25283                number === 1
25284                    ? 'r'
25285                    : number === 2
25286                    ? 'n'
25287                    : number === 3
25288                    ? 'r'
25289                    : number === 4
25290                    ? 't'
25291                    : 'è';
25292            if (period === 'w' || period === 'W') {
25293                output = 'a';
25294            }
25295            return number + output;
25296        },
25297        week: {
25298            dow: 1, // Monday is the first day of the week.
25299            doy: 4, // The week that contains Jan 4th is the first week of the year.
25300        },
25301    });
25302
25303    return ca;
25304
25305})));
25306
25307
25308/***/ }),
25309/* 22 */
25310/***/ (function(module, exports, __webpack_require__) {
25311
25312//! moment.js locale configuration
25313//! locale : Czech [cs]
25314//! author : petrbela : https://github.com/petrbela
25315
25316;(function (global, factory) {
25317    true ? factory(__webpack_require__(0)) :
25318   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25319   factory(global.moment)
25320}(this, (function (moment) { 'use strict';
25321
25322    //! moment.js locale configuration
25323
25324    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.
25324split(
25325            '_'
25326        ),
25327        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
25328        monthsParse = [
25329            /^led/i,
25330            /^úno/i,
25331            /^bře/i,
25332            /^dub/i,
25333            /^kvě/i,
25334            /^(čvn|červen$|června)/i,
25335            /^(čvc|červenec|července)/i,
25336            /^srp/i,
25337            /^zář/i,
25338            /^říj/i,
25339            /^lis/i,
25340            /^pro/i,
25341        ],
25342        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
25343        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
25344        monthsRegex = /^(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;
25345
25346    function plural(n) {
25347        return n > 1 && n < 5 && ~~(n / 10) !== 1;
25348    }
25349    function translate(number, withoutSuffix, key, isFuture) {
25350        var result = number + ' ';
25351        switch (key) {
25352            case 's': // a few seconds / in a few seconds / a few seconds ago
25353                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
25354            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
25355                if (withoutSuffix || isFuture) {
25356                    return result + (plural(number) ? 'sekundy' : 'sekund');
25357                } else {
25358                    return result + 'sekundami';
25359                }
25360            case 'm': // a minute / in a minute / a minute ago
25361                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
25362            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
25363                if (withoutSuffix || isFuture) {
25364                    return result + (plural(number) ? 'minuty' : 'minut');
25365                } else {
25366                    return result + 'minutami';
25367                }
25368            case 'h': // an hour / in an hour / an hour ago
25369                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
25370            case 'hh': // 9 hours / in 9 hours / 9 hours ago
25371                if (withoutSuffix || isFuture) {
25372                    return result + (plural(number) ? 'hodiny' : 'hodin');
25373                } else {
25374                    return result + 'hodinami';
25375                }
25376            case 'd': // a day / in a day / a day ago
25377                return withoutSuffix || isFuture ? 'den' : 'dnem';
25378            case 'dd': // 9 days / in 9 days / 9 days ago
25379                if (withoutSuffix || isFuture) {
25380                    return result + (plural(number) ? 'dny' : 'dní');
25381                } else {
25382                    return result + 'dny';
25383                }
25384            case 'M': // a month / in a month / a month ago
25385                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
25386            case 'MM': // 9 months / in 9 months / 9 months ago
25387                if (withoutSuffix || isFuture) {
25388                    return result + (plural(number) ? 'měsíce' : 'měsíců');
25389                } else {
25390                    return result + 'měsíci';
25391                }
25392            case 'y': // a year / in a year / a year ago
25393                return withoutSuffix || isFuture ? 'rok' : 'rokem';
25394            case 'yy': // 9 years / in 9 years / 9 years ago
25395                if (withoutSuffix || isFuture) {
25396                    return result + (plural(number) ? 'roky' : 'let');
25397                } else {
25398                    return result + 'lety';
25399                }
25400        }
25401    }
25402
25403    var cs = moment.defineLocale('cs', {
25404        months: months,
25405        monthsShort: monthsShort,
25406        monthsRegex: monthsRegex,
25407        monthsShortRegex: monthsRegex,
25408        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
25409        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
25410        monthsStrictRegex: /^(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,
25411        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
25412        monthsParse: monthsParse,
25413        longMonthsParse: monthsParse,
25414        shortMonthsParse: monthsParse,
25415        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
25416        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
25417        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
25418        longDateFormat: {
25419            LT: 'H:mm',
25420            LTS: 'H:mm:ss',
25421            L: 'DD.MM.YYYY',
25422            LL: 'D. MMMM YYYY',
25423            LLL: 'D. MMMM YYYY H:mm',
25424            LLLL: 'dddd D. MMMM YYYY H:mm',
25425            l: 'D. M. YYYY',
25426        },
25427        calendar: {
25428            sameDay: '[dnes v] LT',
25429            nextDay: '[zítra v] LT',
25430            nextWeek: function () {
25431                switch (this.day()) {
25432                    case 0:
25433                        return '[v neděli v] LT';
25434                    case 1:
25435                    case 2:
25436                        return '[v] dddd [v] LT';
25437                    case 3:
25438                        return '[ve středu v] LT';
25439                    case 4:
25440                        return '[ve čtvrtek v] LT';
25441                    case 5:
25442                        return '[v pátek v] LT';
25443                    case 6:
25444                        return '[v sobotu v] LT';
25445                }
25446            },
25447            lastDay: '[včera v] LT',
25448            lastWeek: function () {
25449                switch (this.day()) {
25450                    case 0:
25451                        return '[minulou neděli v] LT';
25452                    case 1:
25453                    case 2:
25454                        return '[minulé] dddd [v] LT';
25455                    case 3:
25456                        return '[minulou středu v] LT';
25457                    case 4:
25458                    case 5:
25459                        return '[minulý] dddd [v] LT';
25460                    case 6:
25461                        return '[minulou sobotu v] LT';
25462                }
25463            },
25464            sameElse: 'L',
25465        },
25466        relativeTime: {
25467            future: 'za %s',
25468            past: 'před %s',
25469            s: translate,
25470            ss: translate,
25471            m: translate,
25472            mm: translate,
25473            h: translate,
25474            hh: translate,
25475            d: translate,
25476            dd: translate,
25477            M: translate,
25478            MM: translate,
25479            y: translate,
25480            yy: translate,
25481        },
25482        dayOfMonthOrdinalParse: /\d{1,2}\./,
25483        ordinal: '%d.',
25484        week: {
25485            dow: 1, // Monday is the first day of the week.
25486            doy: 4, // The week that contains Jan 4th is the first week of the year.
25487        },
25488    });
25489
25490    return cs;
25491
25492})));
25493
25494
25495/***/ }),
25496/* 23 */
25497/***/ (function(module, exports, __webpack_require__) {
25498
25499//! moment.js locale configuration
25500//! locale : Chuvash [cv]
25501//! author : Anatoly Mironov : https://github.com/mirontoli
25502
25503;(function (global, factory) {
25504    true ? factory(__webpack_require__(0)) :
25505   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25506   factory(global.moment)
25507}(this, (function (moment) { 'use strict';
25508
25509    //! moment.js locale configuration
25510
25511    var cv = moment.defineLocale('cv', {
25512        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
25513            '_'
25514        ),
25515        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
25516        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
25517            '_'
25518        ),
25519        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
25520        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
25521        longDateFormat: {
25522            LT: 'HH:mm',
25523            LTS: 'HH:mm:ss',
25524            L: 'DD-MM-YYYY',
25525            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
25526            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
25527            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
25528        },
25529        calendar: {
25530            sameDay: '[Паян] LT [сехетре]',
25531            nextDay: '[Ыран] LT [сехетре]',
25532            lastDay: '[Ӗнер] LT [сехетре]',
25533            nextWeek: '[Ҫитес] dddd LT [сехетре]',
25534            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
25535            sameElse: 'L',
25536        },
25537        relativeTime: {
25538            future: function (output) {
25539                var affix = /сехет$/i.exec(output)
25540                    ? 'рен'
25541                    : /ҫул$/i.exec(output)
25542                    ? 'тан'
25543                    : 'ран';
25544                return output + affix;
25545            },
25546            past: '%s каялла',
25547            s: 'пӗр-ик ҫеккунт',
25548            ss: '%d ҫеккунт',
25549            m: 'пӗр минут',
25550            mm: '%d минут',
25551            h: 'пӗр сехет',
25552            hh: '%d сехет',
25553            d: 'пӗр кун',
25554            dd: '%d кун',
25555            M: 'пӗр уйӑх',
25556            MM: '%d уйӑх',
25557            y: 'пӗр ҫул',
25558            yy: '%d ҫул',
25559        },
25560        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
25561        ordinal: '%d-мӗш',
25562        week: {
25563            dow: 1, // Monday is the first day of the week.
25564            doy: 7, // The week that contains Jan 7th is the first week of the year.
25565        },
25566    });
25567
25568    return cv;
25569
25570})));
25571
25572
25573/***/ }),
25574/* 24 */
25575/***/ (function(module, exports, __webpack_require__) {
25576
25577//! moment.js locale configuration
25578//! locale : Welsh [cy]
25579//! author : Robert Allen : https://github.com/robgallen
25580//! author : https://github.com/ryangreaves
25581
25582;(function (global, factory) {
25583    true ? factory(__webpack_require__(0)) :
25584   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25585   factory(global.moment)
25586}(this, (function (moment) { 'use strict';
25587
25588    //! moment.js locale configuration
25589
25590    var cy = moment.defineLocale('cy', {
25591        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
25592            '_'
25593        ),
25594        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
25595            '_'
25596        ),
25597        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
25598            '_'
25599        ),
25600        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
25601        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
25602        weekdaysParseExact: true,
25603        // time formats are the same as en-gb
25604        longDateFormat: {
25605            LT: 'HH:mm',
25606            LTS: 'HH:mm:ss',
25607            L: 'DD/MM/YYYY',
25608            LL: 'D MMMM YYYY',
25609            LLL: 'D MMMM YYYY HH:mm',
25610            LLLL: 'dddd, D MMMM YYYY HH:mm',
25611        },
25612        calendar: {
25613            sameDay: '[Heddiw am] LT',
25614            nextDay: '[Yfory am] LT',
25615            nextWeek: 'dddd [am] LT',
25616            lastDay: '[Ddoe am] LT',
25617            lastWeek: 'dddd [diwethaf am] LT',
25618            sameElse: 'L',
25619        },
25620        relativeTime: {
25621            future: 'mewn %s',
25622            past: '%s yn ôl',
25623            s: 'ychydig eiliadau',
25624            ss: '%d eiliad',
25625            m: 'munud',
25626            mm: '%d munud',
25627            h: 'awr',
25628            hh: '%d awr',
25629            d: 'diwrnod',
25630            dd: '%d diwrnod',
25631            M: 'mis',
25632            MM: '%d mis',
25633            y: 'blwyddyn',
25634            yy: '%d flynedd',
25635        },
25636        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
25637        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
25638        ordinal: function (number) {
25639            var b = number,
25640                output = '',
25641                lookup = [
25642                    '',
25643                    'af',
25644                    'il',
25645                    'ydd',
25646                    'ydd',
25647                    'ed',
25648                    'ed',
25649                    'ed',
25650                    'fed',
25651                    'fed',
25652                    'fed', // 1af to 10fed
25653                    'eg',
25654                    'fed',
25655                    'eg',
25656                    'eg',
25657                    'fed',
25658                    'eg',
25659                    'eg',
25660                    'fed',
25661                    'eg',
25662                    'fed', // 11eg to 20fed
25663                ];
25664            if (b > 20) {
25665                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
25666                    output = 'fed'; // not 30ain, 70ain or 90ain
25667                } else {
25668                    output = 'ain';
25669                }
25670            } else if (b > 0) {
25671                output = lookup[b];
25672            }
25673            return number + output;
25674        },
25675        week: {
25676            dow: 1, // Monday is the first day of the week.
25677            doy: 4, // The week that contains Jan 4th is the first week of the year.
25678        },
25679    });
25680
25681    return cy;
25682
25683})));
25684
25685
25686/***/ }),
25687/* 25 */
25688/***/ (function(module, exports, __webpack_require__) {
25689
25690//! moment.js locale configuration
25691//! locale : Danish [da]
25692//! author : Ulrik Nielsen : https://github.com/mrbase
25693
25694;(function (global, factory) {
25695    true ? factory(__webpack_require__(0)) :
25696   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25697   factory(global.moment)
25698}(this, (function (moment) { 'use strict';
25699
25700    //! moment.js locale configuration
25701
25702    var da = moment.defineLocale('da', {
25703        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
25704            '_'
25705        ),
25706        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
25707        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
25708        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
25709        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
25710        longDateFormat: {
25711            LT: 'HH:mm',
25712            LTS: 'HH:mm:ss',
25713            L: 'DD.MM.YYYY',
25714            LL: 'D. MMMM YYYY',
25715            LLL: 'D. MMMM YYYY HH:mm',
25716            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
25717        },
25718        calendar: {
25719            sameDay: '[i dag kl.] LT',
25720            nextDay: '[i morgen kl.] LT',
25721            nextWeek: 'på dddd [kl.] LT',
25722            lastDay: '[i går kl.] LT',
25723            lastWeek: '[i] dddd[s kl.] LT',
25724            sameElse: 'L',
25725        },
25726        relativeTime: {
25727            future: 'om %s',
25728            past: '%s siden',
25729            s: 'få sekunder',
25730            ss: '%d sekunder',
25731            m: 'et minut',
25732            mm: '%d minutter',
25733            h: 'en time',
25734            hh: '%d timer',
25735            d: 'en dag',
25736            dd: '%d dage',
25737            M: 'en måned',
25738            MM: '%d måneder',
25739            y: 'et år',
25740            yy: '%d år',
25741        },
25742        dayOfMonthOrdinalParse: /\d{1,2}\./,
25743        ordinal: '%d.',
25744        week: {
25745            dow: 1, // Monday is the first day of the week.
25746            doy: 4, // The week that contains Jan 4th is the first week of the year.
25747        },
25748    });
25749
25750    return da;
25751
25752})));
25753
25754
25755/***/ }),
25756/* 26 */
25757/***/ (function(module, exports, __webpack_require__) {
25758
25759//! moment.js locale configuration
25760//! locale : German [de]
25761//! author : lluchs : https://github.com/lluchs
25762//! author: Menelion Elensúle: https://github.com/Oire
25763//! author : Mikolaj Dadela : https://github.com/mik01aj
25764
25765;(function (global, factory) {
25766    true ? factory(__webpack_require__(0)) :
25767   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25768   factory(global.moment)
25769}(this, (function (moment) { 'use strict';
25770
25771    //! moment.js locale configuration
25772
25773    function processRelativeTime(number, withoutSuffix, key, isFuture) {
25774        var format = {
25775            m: ['eine Minute', 'einer Minute'],
25776            h: ['eine Stunde', 'einer Stunde'],
25777            d: ['ein Tag', 'einem Tag'],
25778            dd: [number + ' Tage', number + ' Tagen'],
25779            w: ['eine Woche', 'einer Woche'],
25780            M: ['ein Monat', 'einem Monat'],
25781            MM: [number + ' Monate', number + ' Monaten'],
25782            y: ['ein Jahr', 'einem Jahr'],
25783            yy: [number + ' Jahre', number + ' Jahren'],
25784        };
25785        return withoutSuffix ? format[key][0] : format[key][1];
25786    }
25787
25788    var de = moment.defineLocale('de', {
25789        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
25790            '_'
25791        ),
25792        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
25793            '_'
25794        ),
25795        monthsParseExact: true,
25796        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
25797            '_'
25798        ),
25799        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
25800        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
25801        weekdaysParseExact: true,
25802        longDateFormat: {
25803            LT: 'HH:mm',
25804            LTS: 'HH:mm:ss',
25805            L: 'DD.MM.YYYY',
25806            LL: 'D. MMMM YYYY',
25807            LLL: 'D. MMMM YYYY HH:mm',
25808            LLLL: 'dddd, D. MMMM YYYY HH:mm',
25809        },
25810        calendar: {
25811            sameDay: '[heute um] LT [Uhr]',
25812            sameElse: 'L',
25813            nextDay: '[morgen um] LT [Uhr]',
25814            nextWeek: 'dddd [um] LT [Uhr]',
25815            lastDay: '[gestern um] LT [Uhr]',
25816            lastWeek: '[letzten] dddd [um] LT [Uhr]',
25817        },
25818        relativeTime: {
25819            future: 'in %s',
25820            past: 'vor %s',
25821            s: 'ein paar Sekunden',
25822            ss: '%d Sekunden',
25823            m: processRelativeTime,
25824            mm: '%d Minuten',
25825            h: processRelativeTime,
25826            hh: '%d Stunden',
25827            d: processRelativeTime,
25828            dd: processRelativeTime,
25829            w: processRelativeTime,
25830            ww: '%d Wochen',
25831            M: processRelativeTime,
25832            MM: processRelativeTime,
25833            y: processRelativeTime,
25834            yy: processRelativeTime,
25835        },
25836        dayOfMonthOrdinalParse: /\d{1,2}\./,
25837        ordinal: '%d.',
25838        week: {
25839            dow: 1, // Monday is the first day of the week.
25840            doy: 4, // The week that contains Jan 4th is the first week of the year.
25841        },
25842    });
25843
25844    return de;
25845
25846})));
25847
25848
25849/***/ }),
25850/* 27 */
25851/***/ (function(module, exports, __webpack_require__) {
25852
25853//! moment.js locale configuration
25854//! locale : German (Austria) [de-at]
25855//! author : lluchs : https://github.com/lluchs
25856//! author: Menelion Elensúle: https://github.com/Oire
25857//! author : Martin Groller : https://github.com/MadMG
25858//! author : Mikolaj Dadela : https://github.com/mik01aj
25859
25860;(function (global, factory) {
25861    true ? factory(__webpack_require__(0)) :
25862   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25863   factory(global.moment)
25864}(this, (function (moment) { 'use strict';
25865
25866    //! moment.js locale configuration
25867
25868    function processRelativeTime(number, withoutSuffix, key, isFuture) {
25869        var format = {
25870            m: ['eine Minute', 'einer Minute'],
25871            h: ['eine Stunde', 'einer Stunde'],
25872            d: ['ein Tag', 'einem Tag'],
25873            dd: [number + ' Tage', number + ' Tagen'],
25874            w: ['eine Woche', 'einer Woche'],
25875            M: ['ein Monat', 'einem Monat'],
25876            MM: [number + ' Monate', number + ' Monaten'],
25877            y: ['ein Jahr', 'einem Jahr'],
25878            yy: [number + ' Jahre', number + ' Jahren'],
25879        };
25880        return withoutSuffix ? format[key][0] : format[key][1];
25881    }
25882
25883    var deAt = moment.defineLocale('de-at', {
25884        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
25885            '_'
25886        ),
25887        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
25888            '_'
25889        ),
25890        monthsParseExact: true,
25891        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
25892            '_'
25893        ),
25894        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
25895        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
25896        weekdaysParseExact: true,
25897        longDateFormat: {
25898            LT: 'HH:mm',
25899            LTS: 'HH:mm:ss',
25900            L: 'DD.MM.YYYY',
25901            LL: 'D. MMMM YYYY',
25902            LLL: 'D. MMMM YYYY HH:mm',
25903            LLLL: 'dddd, D. MMMM YYYY HH:mm',
25904        },
25905        calendar: {
25906            sameDay: '[heute um] LT [Uhr]',
25907            sameElse: 'L',
25908            nextDay: '[morgen um] LT [Uhr]',
25909            nextWeek: 'dddd [um] LT [Uhr]',
25910            lastDay: '[gestern um] LT [Uhr]',
25911            lastWeek: '[letzten] dddd [um] LT [Uhr]',
25912        },
25913        relativeTime: {
25914            future: 'in %s',
25915            past: 'vor %s',
25916            s: 'ein paar Sekunden',
25917            ss: '%d Sekunden',
25918            m: processRelativeTime,
25919            mm: '%d Minuten',
25920            h: processRelativeTime,
25921            hh: '%d Stunden',
25922            d: processRelativeTime,
25923            dd: processRelativeTime,
25924            w: processRelativeTime,
25925            ww: '%d Wochen',
25926            M: processRelativeTime,
25927            MM: processRelativeTime,
25928            y: processRelativeTime,
25929            yy: processRelativeTime,
25930        },
25931        dayOfMonthOrdinalParse: /\d{1,2}\./,
25932        ordinal: '%d.',
25933        week: {
25934            dow: 1, // Monday is the first day of the week.
25935            doy: 4, // The week that contains Jan 4th is the first week of the year.
25936        },
25937    });
25938
25939    return deAt;
25940
25941})));
25942
25943
25944/***/ }),
25945/* 28 */
25946/***/ (function(module, exports, __webpack_require__) {
25947
25948//! moment.js locale configuration
25949//! locale : German (Switzerland) [de-ch]
25950//! author : sschueller : https://github.com/sschueller
25951
25952;(function (global, factory) {
25953    true ? factory(__webpack_require__(0)) :
25954   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
25955   factory(global.moment)
25956}(this, (function (moment) { 'use strict';
25957
25958    //! moment.js locale configuration
25959
25960    function processRelativeTime(number, withoutSuffix, key, isFuture) {
25961        var format = {
25962            m: ['eine Minute', 'einer Minute'],
25963            h: ['eine Stunde', 'einer Stunde'],
25964            d: ['ein Tag', 'einem Tag'],
25965            dd: [number + ' Tage', number + ' Tagen'],
25966            w: ['eine Woche', 'einer Woche'],
25967            M: ['ein Monat', 'einem Monat'],
25968            MM: [number + ' Monate', number + ' Monaten'],
25969            y: ['ein Jahr', 'einem Jahr'],
25970            yy: [number + ' Jahre', number + ' Jahren'],
25971        };
25972        return withoutSuffix ? format[key][0] : format[key][1];
25973    }
25974
25975    var deCh = moment.defineLocale('de-ch', {
25976        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
25977            '_'
25978        ),
25979        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
25980            '_'
25981        ),
25982        monthsParseExact: true,
25983        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
25984            '_'
25985        ),
25986        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
25987        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
25988        weekdaysParseExact: true,
25989        longDateFormat: {
25990            LT: 'HH:mm',
25991            LTS: 'HH:mm:ss',
25992            L: 'DD.MM.YYYY',
25993            LL: 'D. MMMM YYYY',
25994            LLL: 'D. MMMM YYYY HH:mm',
25995            LLLL: 'dddd, D. MMMM YYYY HH:mm',
25996        },
25997        calendar: {
25998            sameDay: '[heute um] LT [Uhr]',
25999            sameElse: 'L',
26000            nextDay: '[morgen um] LT [Uhr]',
26001            nextWeek: 'dddd [um] LT [Uhr]',
26002            lastDay: '[gestern um] LT [Uhr]',
26003            lastWeek: '[letzten] dddd [um] LT [Uhr]',
26004        },
26005        relativeTime: {
26006            future: 'in %s',
26007            past: 'vor %s',
26008            s: 'ein paar Sekunden',
26009            ss: '%d Sekunden',
26010            m: processRelativeTime,
26011            mm: '%d Minuten',
26012            h: processRelativeTime,
26013            hh: '%d Stunden',
26014            d: processRelativeTime,
26015            dd: processRelativeTime,
26016            w: processRelativeTime,
26017            ww: '%d Wochen',
26018            M: processRelativeTime,
26019            MM: processRelativeTime,
26020            y: processRelativeTime,
26021            yy: processRelativeTime,
26022        },
26023        dayOfMonthOrdinalParse: /\d{1,2}\./,
26024        ordinal: '%d.',
26025        week: {
26026            dow: 1, // Monday is the first day of the week.
26027            doy: 4, // The week that contains Jan 4th is the first week of the year.
26028        },
26029    });
26030
26031    return deCh;
26032
26033})));
26034
26035
26036/***/ }),
26037/* 29 */
26038/***/ (function(module, exports, __webpack_require__) {
26039
26040//! moment.js locale configuration
26041//! locale : Maldivian [dv]
26042//! author : Jawish Hameed : https://github.com/jawish
26043
26044;(function (global, factory) {
26045    true ? factory(__webpack_require__(0)) :
26046   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26047   factory(global.moment)
26048}(this, (function (moment) { 'use strict';
26049
26050    //! moment.js locale configuration
26051
26052    var months = [
26053            'ޖެނުއަރީ',
26054            'ފެބްރުއަރީ',
26055            'މާރިޗު',
26056            'އޭޕްރީލު',
26057            'މޭ',
26058            'ޖޫން',
26059            'ޖުލައި',
26060            'އޯގަސްޓު',
26061            'ސެޕްޓެމްބަރު',
26062            'އޮކްޓޯބަރު',
26063            'ނޮވެމްބަރު',
26064            'ޑިސެމްބަރު',
26065        ],
26066        weekdays = [
26067            'އާދިއްތަ',
26068            'ހޯމަ',
26069            'އަންގާރަ',
26070            'ބުދަ',
26071            'ބުރާސްފަތި',
26072            'ހުކުރު',
26073            'ހޮނިހިރު',
26074        ];
26075
26076    var dv = moment.defineLocale('dv', {
26077        months: months,
26078        monthsShort: months,
26079        weekdays: weekdays,
26080        weekdaysShort: weekdays,
26081        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
26082        longDateFormat: {
26083            LT: 'HH:mm',
26084            LTS: 'HH:mm:ss',
26085            L: 'D/M/YYYY',
26086            LL: 'D MMMM YYYY',
26087            LLL: 'D MMMM YYYY HH:mm',
26088            LLLL: 'dddd D MMMM YYYY HH:mm',
26089        },
26090        meridiemParse: /މކ|މފ/,
26091        isPM: function (input) {
26092            return 'މފ' === input;
26093        },
26094        meridiem: function (hour, minute, isLower) {
26095            if (hour < 12) {
26096                return 'މކ';
26097            } else {
26098                return 'މފ';
26099            }
26100        },
26101        calendar: {
26102            sameDay: '[މިއަދު] LT',
26103            nextDay: '[މާދަމާ] LT',
26104            nextWeek: 'dddd LT',
26105            lastDay: '[އިއްޔެ] LT',
26106            lastWeek: '[ފާއިތުވި] dddd LT',
26107            sameElse: 'L',
26108        },
26109        relativeTime: {
26110            future: 'ތެރޭގައި %s',
26111            past: 'ކުރިން %s',
26112            s: 'ސިކުންތުކޮޅެއް',
26113            ss: 'd% ސިކުންތު',
26114            m: 'މިނިޓެއް',
26115            mm: 'މިނިޓު %d',
26116            h: 'ގަޑިއިރެއް',
26117            hh: 'ގަޑިއިރު %d',
26118            d: 'ދުވަހެއް',
26119            dd: 'ދުވަސް %d',
26120            M: 'މަހެއް',
26121            MM: 'މަސް %d',
26122            y: 'އަހަރެއް',
26123            yy: 'އަހަރު %d',
26124        },
26125        preparse: function (string) {
26126            return string.replace(/،/g, ',');
26127        },
26128        postformat: function (string) {
26129            return string.replace(/,/g, '،');
26130        },
26131        week: {
26132            dow: 7, // Sunday is the first day of the week.
26133            doy: 12, // The week that contains Jan 12th is the first week of the year.
26134        },
26135    });
26136
26137    return dv;
26138
26139})));
26140
26141
26142/***/ }),
26143/* 30 */
26144/***/ (function(module, exports, __webpack_require__) {
26145
26146//! moment.js locale configuration
26147//! locale : Greek [el]
26148//! author : Aggelos Karalias : https://github.com/mehiel
26149
26150;(function (global, factory) {
26151    true ? factory(__webpack_require__(0)) :
26152   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26153   factory(global.moment)
26154}(this, (function (moment) { 'use strict';
26155
26156    //! moment.js locale configuration
26157
26158    function isFunction(input) {
26159        return (
26160            (typeof Function !== 'undefined' && input instanceof Function) ||
26161            Object.prototype.toString.call(input) === '[object Function]'
26162        );
26163    }
26164
26165    var el = moment.defineLocale('el', {
26166        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
26167            '_'
26168        ),
26169        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
26170            '_'
26171        ),
26172        months: function (momentToFormat, format) {
26173            if (!momentToFormat) {
26174                return this._monthsNominativeEl;
26175            } else if (
26176                typeof format === 'string' &&
26177                /D/.test(format.substring(0, format.indexOf('MMMM')))
26178            ) {
26179                // if there is a day number before 'MMMM'
26180                return this._monthsGenitiveEl[momentToFormat.month()];
26181            } else {
26182                return this._monthsNominativeEl[momentToFormat.month()];
26183            }
26184        },
26185        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
26186        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
26187            '_'
26188        ),
26189        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
26190        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
26191        meridiem: function (hours, minutes, isLower) {
26192            if (hours > 11) {
26193                return isLower ? 'μμ' : 'ΜΜ';
26194            } else {
26195                return isLower ? 'πμ' : 'ΠΜ';
26196            }
26197        },
26198        isPM: function (input) {
26199            return (input + '').toLowerCase()[0] === 'μ';
26200        },
26201        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
26202        longDateFormat: {
26203            LT: 'h:mm A',
26204            LTS: 'h:mm:ss A',
26205            L: 'DD/MM/YYYY',
26206            LL: 'D MMMM YYYY',
26207            LLL: 'D MMMM YYYY h:mm A',
26208            LLLL: 'dddd, D MMMM YYYY h:mm A',
26209        },
26210        calendarEl: {
26211            sameDay: '[Σήμερα {}] LT',
26212            nextDay: '[Αύριο {}] LT',
26213            nextWeek: 'dddd [{}] LT',
26214            lastDay: '[Χθες {}] LT',
26215            lastWeek: function () {
26216                switch (this.day()) {
26217                    case 6:
26218                        return '[το προηγούμενο] dddd [{}] LT';
26219                    default:
26220                        return '[την προηγούμενη] dddd [{}] LT';
26221                }
26222            },
26223            sameElse: 'L',
26224        },
26225        calendar: function (key, mom) {
26226            var output = this._calendarEl[key],
26227                hours = mom && mom.hours();
26228            if (isFunction(output)) {
26229                output = output.apply(mom);
26230            }
26231            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
26232        },
26233        relativeTime: {
26234            future: 'σε %s',
26235            past: '%s πριν',
26236            s: 'λίγα δευτερόλεπτα',
26237            ss: '%d δευτερόλεπτα',
26238            m: 'ένα λεπτό',
26239            mm: '%d λεπτά',
26240            h: 'μία ώρα',
26241            hh: '%d ώρες',
26242            d: 'μία μέρα',
26243            dd: '%d μέρες',
26244            M: 'ένας μήνας',
26245            MM: '%d μήνες',
26246            y: 'ένας χρόνος',
26247            yy: '%d χρόνια',
26248        },
26249        dayOfMonthOrdinalParse: /\d{1,2}η/,
26250        ordinal: '%dη',
26251        week: {
26252            dow: 1, // Monday is the first day of the week.
26253            doy: 4, // The week that contains Jan 4st is the first week of the year.
26254        },
26255    });
26256
26257    return el;
26258
26259})));
26260
26261
26262/***/ }),
26263/* 31 */
26264/***/ (function(module, exports, __webpack_require__) {
26265
26266//! moment.js locale configuration
26267//! locale : English (Australia) [en-au]
26268//! author : Jared Morse : https://github.com/jarcoal
26269
26270;(function (global, factory) {
26271    true ? factory(__webpack_require__(0)) :
26272   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26273   factory(global.moment)
26274}(this, (function (moment) { 'use strict';
26275
26276    //! moment.js locale configuration
26277
26278    var enAu = moment.defineLocale('en-au', {
26279        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26280            '_'
26281        ),
26282        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26283        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26284            '_'
26285        ),
26286        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26287        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26288        longDateFormat: {
26289            LT: 'h:mm A',
26290            LTS: 'h:mm:ss A',
26291            L: 'DD/MM/YYYY',
26292            LL: 'D MMMM YYYY',
26293            LLL: 'D MMMM YYYY h:mm A',
26294            LLLL: 'dddd, D MMMM YYYY h:mm A',
26295        },
26296        calendar: {
26297            sameDay: '[Today at] LT',
26298            nextDay: '[Tomorrow at] LT',
26299            nextWeek: 'dddd [at] LT',
26300            lastDay: '[Yesterday at] LT',
26301            lastWeek: '[Last] dddd [at] LT',
26302            sameElse: 'L',
26303        },
26304        relativeTime: {
26305            future: 'in %s',
26306            past: '%s ago',
26307            s: 'a few seconds',
26308            ss: '%d seconds',
26309            m: 'a minute',
26310            mm: '%d minutes',
26311            h: 'an hour',
26312            hh: '%d hours',
26313            d: 'a day',
26314            dd: '%d days',
26315            M: 'a month',
26316            MM: '%d months',
26317            y: 'a year',
26318            yy: '%d years',
26319        },
26320        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26321        ordinal: function (number) {
26322            var b = number % 10,
26323                output =
26324                    ~~((number % 100) / 10) === 1
26325                        ? 'th'
26326                        : b === 1
26327                        ? 'st'
26328                        : b === 2
26329                        ? 'nd'
26330                        : b === 3
26331                        ? 'rd'
26332                        : 'th';
26333            return number + output;
26334        },
26335        week: {
26336            dow: 0, // Sunday is the first day of the week.
26337            doy: 4, // The week that contains Jan 4th is the first week of the year.
26338        },
26339    });
26340
26341    return enAu;
26342
26343})));
26344
26345
26346/***/ }),
26347/* 32 */
26348/***/ (function(module, exports, __webpack_require__) {
26349
26350//! moment.js locale configuration
26351//! locale : English (Canada) [en-ca]
26352//! author : Jonathan Abourbih : https://github.com/jonbca
26353
26354;(function (global, factory) {
26355    true ? factory(__webpack_require__(0)) :
26356   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26357   factory(global.moment)
26358}(this, (function (moment) { 'use strict';
26359
26360    //! moment.js locale configuration
26361
26362    var enCa = moment.defineLocale('en-ca', {
26363        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26364            '_'
26365        ),
26366        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26367        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26368            '_'
26369        ),
26370        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26371        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26372        longDateFormat: {
26373            LT: 'h:mm A',
26374            LTS: 'h:mm:ss A',
26375            L: 'YYYY-MM-DD',
26376            LL: 'MMMM D, YYYY',
26377            LLL: 'MMMM D, YYYY h:mm A',
26378            LLLL: 'dddd, MMMM D, YYYY h:mm A',
26379        },
26380        calendar: {
26381            sameDay: '[Today at] LT',
26382            nextDay: '[Tomorrow at] LT',
26383            nextWeek: 'dddd [at] LT',
26384            lastDay: '[Yesterday at] LT',
26385            lastWeek: '[Last] dddd [at] LT',
26386            sameElse: 'L',
26387        },
26388        relativeTime: {
26389            future: 'in %s',
26390            past: '%s ago',
26391            s: 'a few seconds',
26392            ss: '%d seconds',
26393            m: 'a minute',
26394            mm: '%d minutes',
26395            h: 'an hour',
26396            hh: '%d hours',
26397            d: 'a day',
26398            dd: '%d days',
26399            M: 'a month',
26400            MM: '%d months',
26401            y: 'a year',
26402            yy: '%d years',
26403        },
26404        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26405        ordinal: function (number) {
26406            var b = number % 10,
26407                output =
26408                    ~~((number % 100) / 10) === 1
26409                        ? 'th'
26410                        : b === 1
26411                        ? 'st'
26412                        : b === 2
26413                        ? 'nd'
26414                        : b === 3
26415                        ? 'rd'
26416                        : 'th';
26417            return number + output;
26418        },
26419    });
26420
26421    return enCa;
26422
26423})));
26424
26425
26426/***/ }),
26427/* 33 */
26428/***/ (function(module, exports, __webpack_require__) {
26429
26430//! moment.js locale configuration
26431//! locale : English (United Kingdom) [en-gb]
26432//! author : Chris Gedrim : https://github.com/chrisgedrim
26433
26434;(function (global, factory) {
26435    true ? factory(__webpack_require__(0)) :
26436   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26437   factory(global.moment)
26438}(this, (function (moment) { 'use strict';
26439
26440    //! moment.js locale configuration
26441
26442    var enGb = moment.defineLocale('en-gb', {
26443        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26444            '_'
26445        ),
26446        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26447        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26448            '_'
26449        ),
26450        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26451        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26452        longDateFormat: {
26453            LT: 'HH:mm',
26454            LTS: 'HH:mm:ss',
26455            L: 'DD/MM/YYYY',
26456            LL: 'D MMMM YYYY',
26457            LLL: 'D MMMM YYYY HH:mm',
26458            LLLL: 'dddd, D MMMM YYYY HH:mm',
26459        },
26460        calendar: {
26461            sameDay: '[Today at] LT',
26462            nextDay: '[Tomorrow at] LT',
26463            nextWeek: 'dddd [at] LT',
26464            lastDay: '[Yesterday at] LT',
26465            lastWeek: '[Last] dddd [at] LT',
26466            sameElse: 'L',
26467        },
26468        relativeTime: {
26469            future: 'in %s',
26470            past: '%s ago',
26471            s: 'a few seconds',
26472            ss: '%d seconds',
26473            m: 'a minute',
26474            mm: '%d minutes',
26475            h: 'an hour',
26476            hh: '%d hours',
26477            d: 'a day',
26478            dd: '%d days',
26479            M: 'a month',
26480            MM: '%d months',
26481            y: 'a year',
26482            yy: '%d years',
26483        },
26484        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26485        ordinal: function (number) {
26486            var b = number % 10,
26487                output =
26488                    ~~((number % 100) / 10) === 1
26489                        ? 'th'
26490                        : b === 1
26491                        ? 'st'
26492                        : b === 2
26493                        ? 'nd'
26494                        : b === 3
26495                        ? 'rd'
26496                        : 'th';
26497            return number + output;
26498        },
26499        week: {
26500            dow: 1, // Monday is the first day of the week.
26501            doy: 4, // The week that contains Jan 4th is the first week of the year.
26502        },
26503    });
26504
26505    return enGb;
26506
26507})));
26508
26509
26510/***/ }),
26511/* 34 */
26512/***/ (function(module, exports, __webpack_require__) {
26513
26514//! moment.js locale configuration
26515//! locale : English (Ireland) [en-ie]
26516//! author : Chris Cartlidge : https://github.com/chriscartlidge
26517
26518;(function (global, factory) {
26519    true ? factory(__webpack_require__(0)) :
26520   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26521   factory(global.moment)
26522}(this, (function (moment) { 'use strict';
26523
26524    //! moment.js locale configuration
26525
26526    var enIe = moment.defineLocale('en-ie', {
26527        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26528            '_'
26529        ),
26530        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26531        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26532            '_'
26533        ),
26534        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26535        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26536        longDateFormat: {
26537            LT: 'HH:mm',
26538            LTS: 'HH:mm:ss',
26539            L: 'DD/MM/YYYY',
26540            LL: 'D MMMM YYYY',
26541            LLL: 'D MMMM YYYY HH:mm',
26542            LLLL: 'dddd D MMMM YYYY HH:mm',
26543        },
26544        calendar: {
26545            sameDay: '[Today at] LT',
26546            nextDay: '[Tomorrow at] LT',
26547            nextWeek: 'dddd [at] LT',
26548            lastDay: '[Yesterday at] LT',
26549            lastWeek: '[Last] dddd [at] LT',
26550            sameElse: 'L',
26551        },
26552        relativeTime: {
26553            future: 'in %s',
26554            past: '%s ago',
26555            s: 'a few seconds',
26556            ss: '%d seconds',
26557            m: 'a minute',
26558            mm: '%d minutes',
26559            h: 'an hour',
26560            hh: '%d hours',
26561            d: 'a day',
26562            dd: '%d days',
26563            M: 'a month',
26564            MM: '%d months',
26565            y: 'a year',
26566            yy: '%d years',
26567        },
26568        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26569        ordinal: function (number) {
26570            var b = number % 10,
26571                output =
26572                    ~~((number % 100) / 10) === 1
26573                        ? 'th'
26574                        : b === 1
26575                        ? 'st'
26576                        : b === 2
26577                        ? 'nd'
26578                        : b === 3
26579                        ? 'rd'
26580                        : 'th';
26581            return number + output;
26582        },
26583        week: {
26584            dow: 1, // Monday is the first day of the week.
26585            doy: 4, // The week that contains Jan 4th is the first week of the year.
26586        },
26587    });
26588
26589    return enIe;
26590
26591})));
26592
26593
26594/***/ }),
26595/* 35 */
26596/***/ (function(module, exports, __webpack_require__) {
26597
26598//! moment.js locale configuration
26599//! locale : English (Israel) [en-il]
26600//! author : Chris Gedrim : https://github.com/chrisgedrim
26601
26602;(function (global, factory) {
26603    true ? factory(__webpack_require__(0)) :
26604   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26605   factory(global.moment)
26606}(this, (function (moment) { 'use strict';
26607
26608    //! moment.js locale configuration
26609
26610    var enIl = moment.defineLocale('en-il', {
26611        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26612            '_'
26613        ),
26614        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26615        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26616            '_'
26617        ),
26618        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26619        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26620        longDateFormat: {
26621            LT: 'HH:mm',
26622            LTS: 'HH:mm:ss',
26623            L: 'DD/MM/YYYY',
26624            LL: 'D MMMM YYYY',
26625            LLL: 'D MMMM YYYY HH:mm',
26626            LLLL: 'dddd, D MMMM YYYY HH:mm',
26627        },
26628        calendar: {
26629            sameDay: '[Today at] LT',
26630            nextDay: '[Tomorrow at] LT',
26631            nextWeek: 'dddd [at] LT',
26632            lastDay: '[Yesterday at] LT',
26633            lastWeek: '[Last] dddd [at] LT',
26634            sameElse: 'L',
26635        },
26636        relativeTime: {
26637            future: 'in %s',
26638            past: '%s ago',
26639            s: 'a few seconds',
26640            ss: '%d seconds',
26641            m: 'a minute',
26642            mm: '%d minutes',
26643            h: 'an hour',
26644            hh: '%d hours',
26645            d: 'a day',
26646            dd: '%d days',
26647            M: 'a month',
26648            MM: '%d months',
26649            y: 'a year',
26650            yy: '%d years',
26651        },
26652        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26653        ordinal: function (number) {
26654            var b = number % 10,
26655                output =
26656                    ~~((number % 100) / 10) === 1
26657                        ? 'th'
26658                        : b === 1
26659                        ? 'st'
26660                        : b === 2
26661                        ? 'nd'
26662                        : b === 3
26663                        ? 'rd'
26664                        : 'th';
26665            return number + output;
26666        },
26667    });
26668
26669    return enIl;
26670
26671})));
26672
26673
26674/***/ }),
26675/* 36 */
26676/***/ (function(module, exports, __webpack_require__) {
26677
26678//! moment.js locale configuration
26679//! locale : English (India) [en-in]
26680//! author : Jatin Agrawal : https://github.com/jatinag22
26681
26682;(function (global, factory) {
26683    true ? factory(__webpack_require__(0)) :
26684   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26685   factory(global.moment)
26686}(this, (function (moment) { 'use strict';
26687
26688    //! moment.js locale configuration
26689
26690    var enIn = moment.defineLocale('en-in', {
26691        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26692            '_'
26693        ),
26694        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26695        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26696            '_'
26697        ),
26698        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26699        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26700        longDateFormat: {
26701            LT: 'h:mm A',
26702            LTS: 'h:mm:ss A',
26703            L: 'DD/MM/YYYY',
26704            LL: 'D MMMM YYYY',
26705            LLL: 'D MMMM YYYY h:mm A',
26706            LLLL: 'dddd, D MMMM YYYY h:mm A',
26707        },
26708        calendar: {
26709            sameDay: '[Today at] LT',
26710            nextDay: '[Tomorrow at] LT',
26711            nextWeek: 'dddd [at] LT',
26712            lastDay: '[Yesterday at] LT',
26713            lastWeek: '[Last] dddd [at] LT',
26714            sameElse: 'L',
26715        },
26716        relativeTime: {
26717            future: 'in %s',
26718            past: '%s ago',
26719            s: 'a few seconds',
26720            ss: '%d seconds',
26721            m: 'a minute',
26722            mm: '%d minutes',
26723            h: 'an hour',
26724            hh: '%d hours',
26725            d: 'a day',
26726            dd: '%d days',
26727            M: 'a month',
26728            MM: '%d months',
26729            y: 'a year',
26730            yy: '%d years',
26731        },
26732        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26733        ordinal: function (number) {
26734            var b = number % 10,
26735                output =
26736                    ~~((number % 100) / 10) === 1
26737                        ? 'th'
26738                        : b === 1
26739                        ? 'st'
26740                        : b === 2
26741                        ? 'nd'
26742                        : b === 3
26743                        ? 'rd'
26744                        : 'th';
26745            return number + output;
26746        },
26747        week: {
26748            dow: 0, // Sunday is the first day of the week.
26749            doy: 6, // The week that contains Jan 1st is the first week of the year.
26750        },
26751    });
26752
26753    return enIn;
26754
26755})));
26756
26757
26758/***/ }),
26759/* 37 */
26760/***/ (function(module, exports, __webpack_require__) {
26761
26762//! moment.js locale configuration
26763//! locale : English (New Zealand) [en-nz]
26764//! author : Luke McGregor : https://github.com/lukemcgregor
26765
26766;(function (global, factory) {
26767    true ? factory(__webpack_require__(0)) :
26768   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26769   factory(global.moment)
26770}(this, (function (moment) { 'use strict';
26771
26772    //! moment.js locale configuration
26773
26774    var enNz = moment.defineLocale('en-nz', {
26775        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26776            '_'
26777        ),
26778        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26779        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26780            '_'
26781        ),
26782        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26783        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26784        longDateFormat: {
26785            LT: 'h:mm A',
26786            LTS: 'h:mm:ss A',
26787            L: 'DD/MM/YYYY',
26788            LL: 'D MMMM YYYY',
26789            LLL: 'D MMMM YYYY h:mm A',
26790            LLLL: 'dddd, D MMMM YYYY h:mm A',
26791        },
26792        calendar: {
26793            sameDay: '[Today at] LT',
26794            nextDay: '[Tomorrow at] LT',
26795            nextWeek: 'dddd [at] LT',
26796            lastDay: '[Yesterday at] LT',
26797            lastWeek: '[Last] dddd [at] LT',
26798            sameElse: 'L',
26799        },
26800        relativeTime: {
26801            future: 'in %s',
26802            past: '%s ago',
26803            s: 'a few seconds',
26804            ss: '%d seconds',
26805            m: 'a minute',
26806            mm: '%d minutes',
26807            h: 'an hour',
26808            hh: '%d hours',
26809            d: 'a day',
26810            dd: '%d days',
26811            M: 'a month',
26812            MM: '%d months',
26813            y: 'a year',
26814            yy: '%d years',
26815        },
26816        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26817        ordinal: function (number) {
26818            var b = number % 10,
26819                output =
26820                    ~~((number % 100) / 10) === 1
26821                        ? 'th'
26822                        : b === 1
26823                        ? 'st'
26824                        : b === 2
26825                        ? 'nd'
26826                        : b === 3
26827                        ? 'rd'
26828                        : 'th';
26829            return number + output;
26830        },
26831        week: {
26832            dow: 1, // Monday is the first day of the week.
26833            doy: 4, // The week that contains Jan 4th is the first week of the year.
26834        },
26835    });
26836
26837    return enNz;
26838
26839})));
26840
26841
26842/***/ }),
26843/* 38 */
26844/***/ (function(module, exports, __webpack_require__) {
26845
26846//! moment.js locale configuration
26847//! locale : English (Singapore) [en-sg]
26848//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
26849
26850;(function (global, factory) {
26851    true ? factory(__webpack_require__(0)) :
26852   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26853   factory(global.moment)
26854}(this, (function (moment) { 'use strict';
26855
26856    //! moment.js locale configuration
26857
26858    var enSg = moment.defineLocale('en-sg', {
26859        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
26860            '_'
26861        ),
26862        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
26863        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
26864            '_'
26865        ),
26866        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
26867        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
26868        longDateFormat: {
26869            LT: 'HH:mm',
26870            LTS: 'HH:mm:ss',
26871            L: 'DD/MM/YYYY',
26872            LL: 'D MMMM YYYY',
26873            LLL: 'D MMMM YYYY HH:mm',
26874            LLLL: 'dddd, D MMMM YYYY HH:mm',
26875        },
26876        calendar: {
26877            sameDay: '[Today at] LT',
26878            nextDay: '[Tomorrow at] LT',
26879            nextWeek: 'dddd [at] LT',
26880            lastDay: '[Yesterday at] LT',
26881            lastWeek: '[Last] dddd [at] LT',
26882            sameElse: 'L',
26883        },
26884        relativeTime: {
26885            future: 'in %s',
26886            past: '%s ago',
26887            s: 'a few seconds',
26888            ss: '%d seconds',
26889            m: 'a minute',
26890            mm: '%d minutes',
26891            h: 'an hour',
26892            hh: '%d hours',
26893            d: 'a day',
26894            dd: '%d days',
26895            M: 'a month',
26896            MM: '%d months',
26897            y: 'a year',
26898            yy: '%d years',
26899        },
26900        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
26901        ordinal: function (number) {
26902            var b = number % 10,
26903                output =
26904                    ~~((number % 100) / 10) === 1
26905                        ? 'th'
26906                        : b === 1
26907                        ? 'st'
26908                        : b === 2
26909                        ? 'nd'
26910                        : b === 3
26911                        ? 'rd'
26912                        : 'th';
26913            return number + output;
26914        },
26915        week: {
26916            dow: 1, // Monday is the first day of the week.
26917            doy: 4, // The week that contains Jan 4th is the first week of the year.
26918        },
26919    });
26920
26921    return enSg;
26922
26923})));
26924
26925
26926/***/ }),
26927/* 39 */
26928/***/ (function(module, exports, __webpack_require__) {
26929
26930//! moment.js locale configuration
26931//! locale : Esperanto [eo]
26932//! author : Colin Dean : https://github.com/colindean
26933//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
26934//! comment : miestasmia corrected the translation by colindean
26935//! comment : Vivakvo corrected the translation by colindean and miestasmia
26936
26937;(function (global, factory) {
26938    true ? factory(__webpack_require__(0)) :
26939   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
26940   factory(global.moment)
26941}(this, (function (moment) { 'use strict';
26942
26943    //! moment.js locale configuration
26944
26945    var eo = moment.defineLocale('eo', {
26946        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split(
26947            '_'
26948        ),
26949        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅ­g_sept_okt_nov_dec'.split('_'),
26950        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
26951        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
26952        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
26953        longDateFormat: {
26954            LT: 'HH:mm',
26955            LTS: 'HH:mm:ss',
26956            L: 'YYYY-MM-DD',
26957            LL: '[la] D[-an de] MMMM, YYYY',
26958            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
26959            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
26960            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
26961        },
26962        meridiemParse: /[ap]\.t\.m/i,
26963        isPM: function (input) {
26964            return input.charAt(0).toLowerCase() === 'p';
26965        },
26966        meridiem: function (hours, minutes, isLower) {
26967            if (hours > 11) {
26968                return isLower ? 'p.t.m.' : 'P.T.M.';
26969            } else {
26970                return isLower ? 'a.t.m.' : 'A.T.M.';
26971            }
26972        },
26973        calendar: {
26974            sameDay: '[HodiaÅ­ je] LT',
26975            nextDay: '[MorgaÅ­ je] LT',
26976            nextWeek: 'dddd[n je] LT',
26977            lastDay: '[HieraÅ­ je] LT',
26978            lastWeek: '[pasintan] dddd[n je] LT',
26979            sameElse: 'L',
26980        },
26981        relativeTime: {
26982            future: 'post %s',
26983            past: 'antaÅ­ %s',
26984            s: 'kelkaj sekundoj',
26985            ss: '%d sekundoj',
26986            m: 'unu minuto',
26987            mm: '%d minutoj',
26988            h: 'unu horo',
26989            hh: '%d horoj',
26990            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
26991            dd: '%d tagoj',
26992            M: 'unu monato',
26993            MM: '%d monatoj',
26994            y: 'unu jaro',
26995            yy: '%d jaroj',
26996        },
26997        dayOfMonthOrdinalParse: /\d{1,2}a/,
26998        ordinal: '%da',
26999        week: {
27000            dow: 1, // Monday is the first day of the week.
27001            doy: 7, // The week that contains Jan 7th is the first week of the year.
27002        },
27003    });
27004
27005    return eo;
27006
27007})));
27008
27009
27010/***/ }),
27011/* 40 */
27012/***/ (function(module, exports, __webpack_require__) {
27013
27014//! moment.js locale configuration
27015//! locale : Spanish [es]
27016//! author : Julio Napurí : https://github.com/julionc
27017
27018;(function (global, factory) {
27019    true ? factory(__webpack_require__(0)) :
27020   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27021   factory(global.moment)
27022}(this, (function (moment) { 'use strict';
27023
27024    //! moment.js locale configuration
27025
27026    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27027          
vendor: 16,304 bytes, lines 27027-27501
27027  '_'
27028        ),
27029        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27030        monthsParse = [
27031            /^ene/i,
27032            /^feb/i,
27033            /^mar/i,
27034            /^abr/i,
27035            /^may/i,
27036            /^jun/i,
27037            /^jul/i,
27038            /^ago/i,
27039            /^sep/i,
27040            /^oct/i,
27041            /^nov/i,
27042            /^dic/i,
27043        ],
27044        monthsRegex = /^(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;
27045
27046    var es = moment.defineLocale('es', {
27047        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27048            '_'
27049        ),
27050        monthsShort: function (m, format) {
27051            if (!m) {
27052                return monthsShortDot;
27053            } else if (/-MMM-/.test(format)) {
27054                return monthsShort[m.month()];
27055            } else {
27056                return monthsShortDot[m.month()];
27057            }
27058        },
27059        monthsRegex: monthsRegex,
27060        monthsShortRegex: monthsRegex,
27061        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27062        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27063        monthsParse: monthsParse,
27064        longMonthsParse: monthsParse,
27065        shortMonthsParse: monthsParse,
27066        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27067        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27068        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27069        weekdaysParseExact: true,
27070        longDateFormat: {
27071            LT: 'H:mm',
27072            LTS: 'H:mm:ss',
27073            L: 'DD/MM/YYYY',
27074            LL: 'D [de] MMMM [de] YYYY',
27075            LLL: 'D [de] MMMM [de] YYYY H:mm',
27076            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
27077        },
27078        calendar: {
27079            sameDay: function () {
27080                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27081            },
27082            nextDay: function () {
27083                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27084            },
27085            nextWeek: function () {
27086                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27087            },
27088            lastDay: function () {
27089                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27090            },
27091            lastWeek: function () {
27092                return (
27093                    '[el] dddd [pasado a la' +
27094                    (this.hours() !== 1 ? 's' : '') +
27095                    '] LT'
27096                );
27097            },
27098            sameElse: 'L',
27099        },
27100        relativeTime: {
27101            future: 'en %s',
27102            past: 'hace %s',
27103            s: 'unos segundos',
27104            ss: '%d segundos',
27105            m: 'un minuto',
27106            mm: '%d minutos',
27107            h: 'una hora',
27108            hh: '%d horas',
27109            d: 'un día',
27110            dd: '%d días',
27111            w: 'una semana',
27112            ww: '%d semanas',
27113            M: 'un mes',
27114            MM: '%d meses',
27115            y: 'un año',
27116            yy: '%d años',
27117        },
27118        dayOfMonthOrdinalParse: /\d{1,2}º/,
27119        ordinal: '%dº',
27120        week: {
27121            dow: 1, // Monday is the first day of the week.
27122            doy: 4, // The week that contains Jan 4th is the first week of the year.
27123        },
27124        invalidDate: 'Fecha inválida',
27125    });
27126
27127    return es;
27128
27129})));
27130
27131
27132/***/ }),
27133/* 41 */
27134/***/ (function(module, exports, __webpack_require__) {
27135
27136//! moment.js locale configuration
27137//! locale : Spanish (Dominican Republic) [es-do]
27138
27139;(function (global, factory) {
27140    true ? factory(__webpack_require__(0)) :
27141   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27142   factory(global.moment)
27143}(this, (function (moment) { 'use strict';
27144
27145    //! moment.js locale configuration
27146
27147    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27148            '_'
27149        ),
27150        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27151        monthsParse = [
27152            /^ene/i,
27153            /^feb/i,
27154            /^mar/i,
27155            /^abr/i,
27156            /^may/i,
27157            /^jun/i,
27158            /^jul/i,
27159            /^ago/i,
27160            /^sep/i,
27161            /^oct/i,
27162            /^nov/i,
27163            /^dic/i,
27164        ],
27165        monthsRegex = /^(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;
27166
27167    var esDo = moment.defineLocale('es-do', {
27168        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27169            '_'
27170        ),
27171        monthsShort: function (m, format) {
27172            if (!m) {
27173                return monthsShortDot;
27174            } else if (/-MMM-/.test(format)) {
27175                return monthsShort[m.month()];
27176            } else {
27177                return monthsShortDot[m.month()];
27178            }
27179        },
27180        monthsRegex: monthsRegex,
27181        monthsShortRegex: monthsRegex,
27182        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27183        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27184        monthsParse: monthsParse,
27185        longMonthsParse: monthsParse,
27186        shortMonthsParse: monthsParse,
27187        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27188        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27189        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27190        weekdaysParseExact: true,
27191        longDateFormat: {
27192            LT: 'h:mm A',
27193            LTS: 'h:mm:ss A',
27194            L: 'DD/MM/YYYY',
27195            LL: 'D [de] MMMM [de] YYYY',
27196            LLL: 'D [de] MMMM [de] YYYY h:mm A',
27197            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
27198        },
27199        calendar: {
27200            sameDay: function () {
27201                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27202            },
27203            nextDay: function () {
27204                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27205            },
27206            nextWeek: function () {
27207                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27208            },
27209            lastDay: function () {
27210                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27211            },
27212            lastWeek: function () {
27213                return (
27214                    '[el] dddd [pasado a la' +
27215                    (this.hours() !== 1 ? 's' : '') +
27216                    '] LT'
27217                );
27218            },
27219            sameElse: 'L',
27220        },
27221        relativeTime: {
27222            future: 'en %s',
27223            past: 'hace %s',
27224            s: 'unos segundos',
27225            ss: '%d segundos',
27226            m: 'un minuto',
27227            mm: '%d minutos',
27228            h: 'una hora',
27229            hh: '%d horas',
27230            d: 'un día',
27231            dd: '%d días',
27232            w: 'una semana',
27233            ww: '%d semanas',
27234            M: 'un mes',
27235            MM: '%d meses',
27236            y: 'un año',
27237            yy: '%d años',
27238        },
27239        dayOfMonthOrdinalParse: /\d{1,2}º/,
27240        ordinal: '%dº',
27241        week: {
27242            dow: 1, // Monday is the first day of the week.
27243            doy: 4, // The week that contains Jan 4th is the first week of the year.
27244        },
27245    });
27246
27247    return esDo;
27248
27249})));
27250
27251
27252/***/ }),
27253/* 42 */
27254/***/ (function(module, exports, __webpack_require__) {
27255
27256//! moment.js locale configuration
27257//! locale : Spanish (Mexico) [es-mx]
27258//! author : JC Franco : https://github.com/jcfranco
27259
27260;(function (global, factory) {
27261    true ? factory(__webpack_require__(0)) :
27262   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27263   factory(global.moment)
27264}(this, (function (moment) { 'use strict';
27265
27266    //! moment.js locale configuration
27267
27268    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27269            '_'
27270        ),
27271        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27272        monthsParse = [
27273            /^ene/i,
27274            /^feb/i,
27275            /^mar/i,
27276            /^abr/i,
27277            /^may/i,
27278            /^jun/i,
27279            /^jul/i,
27280            /^ago/i,
27281            /^sep/i,
27282            /^oct/i,
27283            /^nov/i,
27284            /^dic/i,
27285        ],
27286        monthsRegex = /^(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;
27287
27288    var esMx = moment.defineLocale('es-mx', {
27289        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27290            '_'
27291        ),
27292        monthsShort: function (m, format) {
27293            if (!m) {
27294                return monthsShortDot;
27295            } else if (/-MMM-/.test(format)) {
27296                return monthsShort[m.month()];
27297            } else {
27298                return monthsShortDot[m.month()];
27299            }
27300        },
27301        monthsRegex: monthsRegex,
27302        monthsShortRegex: monthsRegex,
27303        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27304        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27305        monthsParse: monthsParse,
27306        longMonthsParse: monthsParse,
27307        shortMonthsParse: monthsParse,
27308        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27309        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27310        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27311        weekdaysParseExact: true,
27312        longDateFormat: {
27313            LT: 'H:mm',
27314            LTS: 'H:mm:ss',
27315            L: 'DD/MM/YYYY',
27316            LL: 'D [de] MMMM [de] YYYY',
27317            LLL: 'D [de] MMMM [de] YYYY H:mm',
27318            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
27319        },
27320        calendar: {
27321            sameDay: function () {
27322                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27323            },
27324            nextDay: function () {
27325                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27326            },
27327            nextWeek: function () {
27328                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27329            },
27330            lastDay: function () {
27331                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27332            },
27333            lastWeek: function () {
27334                return (
27335                    '[el] dddd [pasado a la' +
27336                    (this.hours() !== 1 ? 's' : '') +
27337                    '] LT'
27338                );
27339            },
27340            sameElse: 'L',
27341        },
27342        relativeTime: {
27343            future: 'en %s',
27344            past: 'hace %s',
27345            s: 'unos segundos',
27346            ss: '%d segundos',
27347            m: 'un minuto',
27348            mm: '%d minutos',
27349            h: 'una hora',
27350            hh: '%d horas',
27351            d: 'un día',
27352            dd: '%d días',
27353            w: 'una semana',
27354            ww: '%d semanas',
27355            M: 'un mes',
27356            MM: '%d meses',
27357            y: 'un año',
27358            yy: '%d años',
27359        },
27360        dayOfMonthOrdinalParse: /\d{1,2}º/,
27361        ordinal: '%dº',
27362        week: {
27363            dow: 0, // Sunday is the first day of the week.
27364            doy: 4, // The week that contains Jan 4th is the first week of the year.
27365        },
27366        invalidDate: 'Fecha inválida',
27367    });
27368
27369    return esMx;
27370
27371})));
27372
27373
27374/***/ }),
27375/* 43 */
27376/***/ (function(module, exports, __webpack_require__) {
27377
27378//! moment.js locale configuration
27379//! locale : Spanish (United States) [es-us]
27380//! author : bustta : https://github.com/bustta
27381//! author : chrisrodz : https://github.com/chrisrodz
27382
27383;(function (global, factory) {
27384    true ? factory(__webpack_require__(0)) :
27385   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27386   factory(global.moment)
27387}(this, (function (moment) { 'use strict';
27388
27389    //! moment.js locale configuration
27390
27391    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
27392            '_'
27393        ),
27394        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
27395        monthsParse = [
27396            /^ene/i,
27397            /^feb/i,
27398            /^mar/i,
27399            /^abr/i,
27400            /^may/i,
27401            /^jun/i,
27402            /^jul/i,
27403            /^ago/i,
27404            /^sep/i,
27405            /^oct/i,
27406            /^nov/i,
27407            /^dic/i,
27408        ],
27409        monthsRegex = /^(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;
27410
27411    var esUs = moment.defineLocale('es-us', {
27412        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
27413            '_'
27414        ),
27415        monthsShort: function (m, format) {
27416            if (!m) {
27417                return monthsShortDot;
27418            } else if (/-MMM-/.test(format)) {
27419                return monthsShort[m.month()];
27420            } else {
27421                return monthsShortDot[m.month()];
27422            }
27423        },
27424        monthsRegex: monthsRegex,
27425        monthsShortRegex: monthsRegex,
27426        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
27427        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
27428        monthsParse: monthsParse,
27429        longMonthsParse: monthsParse,
27430        shortMonthsParse: monthsParse,
27431        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
27432        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
27433        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
27434        weekdaysParseExact: true,
27435        longDateFormat: {
27436            LT: 'h:mm A',
27437            LTS: 'h:mm:ss A',
27438            L: 'MM/DD/YYYY',
27439            LL: 'D [de] MMMM [de] YYYY',
27440            LLL: 'D [de] MMMM [de] YYYY h:mm A',
27441            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
27442        },
27443        calendar: {
27444            sameDay: function () {
27445                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27446            },
27447            nextDay: function () {
27448                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27449            },
27450            nextWeek: function () {
27451                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27452            },
27453            lastDay: function () {
27454                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
27455            },
27456            lastWeek: function () {
27457                return (
27458                    '[el] dddd [pasado a la' +
27459                    (this.hours() !== 1 ? 's' : '') +
27460                    '] LT'
27461                );
27462            },
27463            sameElse: 'L',
27464        },
27465        relativeTime: {
27466            future: 'en %s',
27467            past: 'hace %s',
27468            s: 'unos segundos',
27469            ss: '%d segundos',
27470            m: 'un minuto',
27471            mm: '%d minutos',
27472            h: 'una hora',
27473            hh: '%d horas',
27474            d: 'un día',
27475            dd: '%d días',
27476            w: 'una semana',
27477            ww: '%d semanas',
27478            M: 'un mes',
27479            MM: '%d meses',
27480            y: 'un año',
27481            yy: '%d años',
27482        },
27483        dayOfMonthOrdinalParse: /\d{1,2}º/,
27484        ordinal: '%dº',
27485        week: {
27486            dow: 0, // Sunday is the first day of the week.
27487            doy: 6, // The week that contains Jan 6th is the first week of the year.
27488        },
27489    });
27490
27491    return esUs;
27492
27493})));
27494
27495
27496/***/ }),
27497/* 44 */
27498/***/ (function(module, exports, __webpack_require__) {
27499
27500//! moment.js locale configuration
27501//! locale : Estonian [et]
27502//! author : Henry Kehlmann : https://github.com/madhenry
27503//! improvements : Illimar Tambek : https://github.com/ragulka
27504
27505;(function (global, factory) {
27506    true ? factory(__webpack_require__(0)) :
27507   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27508   factory(global.moment)
27509}(this, (function (moment) { 'use strict';
27510
27511    //! moment.js locale configuration
27512
27513    function processRelativeTime(number, withoutSuffix, key, isFuture) {
27514        var format = {
27515            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
27516            ss: [number + 'sekundi', number + 'sekundit'],
27517            m: ['ühe minuti', 'üks minut'],
27518            mm: [number + ' minuti', number + ' minutit'],
27519            h: ['ühe tunni', 'tund aega', 'üks tund'],
27520            hh: [number + ' tunni', number + ' tundi'],
27521            d: ['ühe päeva', 'üks päev'],
27522            M: ['kuu aja', 'kuu aega', 'üks kuu'],
27523            MM: [number + ' kuu', number + ' kuud'],
27524            y: ['ühe aasta', 'aasta', 'üks aasta'],
27525            yy: [number + ' aasta', number + ' aastat'],
27526        };
27527        if (withoutSuffix) {
27528            return format[key][2] ? format[key][2] : format[key][1];
27529        }
27530        return isFuture ? format[key][0] : format[key][1];
27531    }
27532
27533    var et = moment.defineLocale('et', {
27534        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
27535            '_'
27536        ),
27537        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(
27538            '_'
27539        ),
27540        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
27541            '_'
27542        ),
27543        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
27544        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
27545        longDateFormat: {
27546            LT: 'H:mm',
27547            LTS: 'H:mm:ss',
27548            L: 'DD.MM.YYYY',
27549            LL: 'D. MMMM YYYY',
27550            LLL: 'D. MMMM YYYY H:mm',
27551            LLLL: 'dddd, D. MMMM YYYY H:mm',
27552        },
27553        calendar: {
27554            sameDay: '[Täna,] LT',
27555            nextDay: '[Homme,] LT',
27556            nextWeek: '[Järgmine] dddd LT',
27557            lastDay: '[Eile,] LT',
27558            lastWeek: '[Eelmine] dddd LT',
27559            sameElse: 'L',
27560        },
27561        relativeTime: {
27562            future: '%s pärast',
27563            past: '%s tagasi',
27564            s: processRelativeTime,
27565            ss: processRelativeTime,
27566            m: processRelativeTime,
27567            mm: processRelativeTime,
27568            h: processRelativeTime,
27569            hh: processRelativeTime,
27570            d: processRelativeTime,
27571            dd: '%d päeva',
27572            M: processRelativeTime,
27573            MM: processRelativeTime,
27574            y: processRelativeTime,
27575            yy: processRelativeTime,
27576        },
27577        dayOfMonthOrdinalParse: /\d{1,2}\./,
27578        ordinal: '%d.',
27579        week: {
27580            dow: 1, // Monday is the first day of the week.
27581            doy: 4, // The week that contains Jan 4th is the first week of the year.
27582        },
27583    });
27584
27585    return et;
27586
27587})));
27588
27589
27590/***/ }),
27591/* 45 */
27592/***/ (function(module, exports, __webpack_require__) {
27593
27594//! moment.js locale configuration
27595//! locale : Basque [eu]
27596//! author : Eneko Illarramendi : https://github.com/eillarra
27597
27598;(function (global, factory) {
27599    true ? factory(__webpack_require__(0)) :
27600   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27601   factory(global.moment)
27602}(this, (function (moment) { 'use strict';
27603
27604    //! moment.js locale configuration
27605
27606    var eu = moment.defineLocale('eu', {
27607        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
27608            '_'
27609        ),
27610        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
27611            '_'
27612        ),
27613        monthsParseExact: true,
27614        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
27615            '_'
27616        ),
27617        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
27618        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
27619        weekdaysParseExact: true,
27620        longDateFormat: {
27621            LT: 'HH:mm',
27622            LTS: 'HH:mm:ss',
27623            L: 'YYYY-MM-DD',
27624            LL: 'YYYY[ko] MMMM[ren] D[a]',
27625            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
27626            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
27627            l: 'YYYY-M-D',
27628            ll: 'YYYY[ko] MMM D[a]',
27629            lll: 'YYYY[ko] MMM D[a] HH:mm',
27630            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
27631        },
27632        calendar: {
27633            sameDay: '[gaur] LT[etan]',
27634            nextDay: '[bihar] LT[etan]',
27635            nextWeek: 'dddd LT[etan]',
27636            lastDay: '[atzo] LT[etan]',
27637            lastWeek: '[aurreko] dddd LT[etan]',
27638            sameElse: 'L',
27639        },
27640        relativeTime: {
27641            future: '%s barru',
27642            past: 'duela %s',
27643            s: 'segundo batzuk',
27644            ss: '%d segundo',
27645            m: 'minutu bat',
27646            mm: '%d minutu',
27647            h: 'ordu bat',
27648            hh: '%d ordu',
27649            d: 'egun bat',
27650            dd: '%d egun',
27651            M: 'hilabete bat',
27652            MM: '%d hilabete',
27653            y: 'urte bat',
27654            yy: '%d urte',
27655        },
27656        dayOfMonthOrdinalParse: /\d{1,2}\./,
27657        ordinal: '%d.',
27658        week: {
27659            dow: 1, // Monday is the first day of the week.
27660            doy: 7, // The week that contains Jan 7th is the first week of the year.
27661        },
27662    });
27663
27664    return eu;
27665
27666})));
27667
27668
27669/***/ }),
27670/* 46 */
27671/***/ (function(module, exports, __webpack_require__) {
27672
27673//! moment.js locale configuration
27674//! locale : Persian [fa]
27675//! author : Ebrahim Byagowi : https://github.com/ebraminio
27676
27677;(function (global, factory) {
27678    true ? factory(__webpack_require__(0)) :
27679   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27680   factory(global.moment)
27681}(this, (function (moment) { 'use strict';
27682
27683    //! moment.js locale configuration
27684
27685    var symbolMap = {
27686            1: 'Û±',
27687            2: 'Û²',
27688            3: 'Û³',
27689            4: 'Û´',
27690            5: 'Ûµ',
27691            6: 'Û¶',
27692            7: 'Û·',
27693            8: 'Û¸',
27694            9: 'Û¹',
27695            0: 'Û°',
27696        },
27697        numberMap = {
27698            'Û±': '1',
27699            'Û²': '2',
27700            'Û³': '3',
27701            'Û´': '4',
27702            'Ûµ': '5',
27703            'Û¶': '6',
27704            'Û·': '7',
27705            'Û¸': '8',
27706            'Û¹': '9',
27707            'Û°': '0',
27708        };
27709
27710    var fa = moment.defineLocale('fa', {
27711        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
27712            '_'
27713        ),
27714        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
27715            '_'
27716        ),
27717        weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
27718            '_'
27719        ),
27720        weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
27721            '_'
27722        ),
27723        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
27724        weekdaysParseExact: true,
27725        longDateFormat: {
27726            LT: 'HH:mm',
27727            LTS: 'HH:mm:ss',
27728            L: 'DD/MM/YYYY',
27729            LL: 'D MMMM YYYY',
27730            LLL: 'D MMMM YYYY HH:mm',
27731            LLLL: 'dddd, D MMMM YYYY HH:mm',
27732        },
27733        meridiemParse: /قبل از ظهر|بعد از ظهر/,
27734        isPM: function (input) {
27735            return /بعد از ظهر/.test(input);
27736        },
27737        meridiem: function (hour, minute, isLower) {
27738            if (hour < 12) {
27739                return 'قبل از ظهر';
27740            } else {
27741                return 'بعد از ظهر';
27742            }
27743        },
27744        calendar: {
27745            sameDay: '[امروز ساعت] LT',
27746            nextDay: '[فردا ساعت] LT',
27747            nextWeek: 'dddd [ساعت] LT',
27748            lastDay: '[دیروز ساعت] LT',
27749            lastWeek: 'dddd [پیش] [ساعت] LT',
27750            sameElse: 'L',
27751        },
27752        relativeTime: {
27753            future: 'در %s',
27754            past: '%s پیش',
27755            s: 'چند ثانیه',
27756            ss: '%d ثانیه',
27757            m: 'یک دقیقه',
27758            mm: '%d دقیقه',
27759            h: 'یک ساعت',
27760            hh: '%d ساعت',
27761            d: 'یک روز',
27762            dd: '%d روز',
27763            M: 'یک ماه',
27764            MM: '%d ماه',
27765            y: 'یک سال',
27766            yy: '%d سال',
27767        },
27768        preparse: function (string) {
27769            return string
27770                .replace(/[Û°-Û¹]/g, function (match) {
27771                    return numberMap[match];
27772                })
27773                .replace(/،/g, ',');
27774        },
27775        postformat: function (string) {
27776            return string
27777                .replace(/\d/g, function (match) {
27778                    return symbolMap[match];
27779                })
27780                .replace(/,/g, '،');
27781        },
27782        dayOfMonthOrdinalParse: /\d{1,2}م/,
27783        ordinal: '%dم',
27784        week: {
27785            dow: 6, // Saturday is the first day of the week.
27786            doy: 12, // The week that contains Jan 12th is the first week of the year.
27787        },
27788    });
27789
27790    return fa;
27791
27792})));
27793
27794
27795/***/ }),
27796/* 47 */
27797/***/ (function(module, exports, __webpack_require__) {
27798
27799//! moment.js locale configuration
27800//! locale : Finnish [fi]
27801//! author : Tarmo Aidantausta : https://github.com/bleadof
27802
27803;(function (global, factory) {
27804    true ? factory(__webpack_require__(0)) :
27805   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27806   factory(global.moment)
27807}(this, (function (moment) { 'use strict';
27808
27809    //! moment.js locale configuration
27810
27811    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
27812            ' '
27813        ),
27814        numbersFuture = [
27815            'nolla',
27816            'yhden',
27817            'kahden',
27818            'kolmen',
27819            'neljän',
27820            'viiden',
27821            'kuuden',
27822            numbersPast[7],
27823            numbersPast[8],
27824            numbersPast[9],
27825        ];
27826    function translate(number, withoutSuffix, key, isFuture) {
27827        var result = '';
27828        switch (key) {
27829            case 's':
27830                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
27831            case 'ss':
27832                result = isFuture ? 'sekunnin' : 'sekuntia';
27833                break;
27834            case 'm':
27835                return isFuture ? 'minuutin' : 'minuutti';
27836            case 'mm':
27837                result = isFuture ? 'minuutin' : 'minuuttia';
27838                break;
27839            case 'h':
27840                return isFuture ? 'tunnin' : 'tunti';
27841            case 'hh':
27842                result = isFuture ? 'tunnin' : 'tuntia';
27843                break;
27844            case 'd':
27845                return isFuture ? 'päivän' : 'päivä';
27846            case 'dd':
27847                result = isFuture ? 'päivän' : 'päivää';
27848                break;
27849            case 'M':
27850                return isFuture ? 'kuukauden' : 'kuukausi';
27851            case 'MM':
27852                result = isFuture ? 'kuukauden' : 'kuukautta';
27853                break;
27854            case 'y':
27855                return isFuture ? 'vuoden' : 'vuosi';
27856            case 'yy':
27857                result = isFuture ? 'vuoden' : 'vuotta';
27858                break;
27859        }
27860        result = verbalNumber(number, isFuture) + ' ' + result;
27861        return result;
27862    }
27863    function verbalNumber(number, isFuture) {
27864        return number < 10
27865            ? isFuture
27866                ? numbersFuture[number]
27867                : numbersPast[number]
27868            : number;
27869    }
27870
27871    var fi = moment.defineLocale('fi', {
27872        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
27873            '_'
27874        ),
27875        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
27876            '_'
27877        ),
27878        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
27879            '_'
27880        ),
27881        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
27882        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
27883        longDateFormat: {
27884            LT: 'HH.mm',
27885            LTS: 'HH.mm.ss',
27886            L: 'DD.MM.YYYY',
27887            LL: 'Do MMMM[ta] YYYY',
27888            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
27889            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
27890            l: 'D.M.YYYY',
27891            ll: 'Do MMM YYYY',
27892            lll: 'Do MMM YYYY, [klo] HH.mm',
27893            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
27894        },
27895        calendar: {
27896            sameDay: '[tänään] [klo] LT',
27897            nextDay: '[huomenna] [klo] LT',
27898            nextWeek: 'dddd [klo] LT',
27899            lastDay: '[eilen] [klo] LT',
27900            lastWeek: '[viime] dddd[na] [klo] LT',
27901            sameElse: 'L',
27902        },
27903        relativeTime: {
27904            future: '%s päästä',
27905            past: '%s sitten',
27906            s: translate,
27907            ss: translate,
27908            m: translate,
27909            mm: translate,
27910            h: translate,
27911            hh: translate,
27912            d: translate,
27913            dd: translate,
27914            M: translate,
27915            MM: translate,
27916            y: translate,
27917            yy: translate,
27918        },
27919        dayOfMonthOrdinalParse: /\d{1,2}\./,
27920        ordinal: '%d.',
27921        week: {
27922            dow: 1, // Monday is the first day of the week.
27923            doy: 4, // The week that contains Jan 4th is the first week of the year.
27924        },
27925    });
27926
27927    return fi;
27928
27929}
27929)));
27930
27931
27932/***/ }),
27933/* 48 */
27934/***/ (function(module, exports, __webpack_require__) {
27935
27936//! moment.js locale configuration
27937//! locale : Filipino [fil]
27938//! author : Dan Hagman : https://github.com/hagmandan
27939//! author : Matthew Co : https://github.com/matthewdeeco
27940
27941;(function (global, factory) {
27942    true ? factory(__webpack_require__(0)) :
27943   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
27944   factory(global.moment)
27945}(this, (function (moment) { 'use strict';
27946
27947    //! moment.js locale configuration
27948
27949    var fil = moment.defineLocale('fil', {
27950        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
27951            '_'
27952        ),
27953        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
27954        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
27955            '_'
27956        ),
27957        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
27958        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
27959        longDateFormat: {
27960            LT: 'HH:mm',
27961            LTS: 'HH:mm:ss',
27962            L: 'MM/D/YYYY',
27963            LL: 'MMMM D, YYYY',
27964            LLL: 'MMMM D, YYYY HH:mm',
27965            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
27966        },
27967        calendar: {
27968            sameDay: 'LT [ngayong araw]',
27969            nextDay: '[Bukas ng] LT',
27970            nextWeek: 'LT [sa susunod na] dddd',
27971            lastDay: 'LT [kahapon]',
27972            lastWeek: 'LT [noong nakaraang] dddd',
27973            sameElse: 'L',
27974        },
27975        relativeTime: {
27976            future: 'sa loob ng %s',
27977            past: '%s ang nakalipas',
27978            s: 'ilang segundo',
27979            ss: '%d segundo',
27980            m: 'isang minuto',
27981            mm: '%d minuto',
27982            h: 'isang oras',
27983            hh: '%d oras',
27984            d: 'isang araw',
27985            dd: '%d araw',
27986            M: 'isang buwan',
27987            MM: '%d buwan',
27988            y: 'isang taon',
27989            yy: '%d taon',
27990        },
27991        dayOfMonthOrdinalParse: /\d{1,2}/,
27992        ordinal: function (number) {
27993            return number;
27994        },
27995        week: {
27996            dow: 1, // Monday is the first day of the week.
27997            doy: 4, // The week that contains Jan 4th is the first week of the year.
27998        },
27999    });
28000
28001    return fil;
28002
28003})));
28004
28005
28006/***/ }),
28007/* 49 */
28008/***/ (function(module, exports, __webpack_require__) {
28009
28010//! moment.js locale configuration
28011//! locale : Faroese [fo]
28012//! author : Ragnar Johannesen : https://github.com/ragnar123
28013//! author : Kristian Sakarisson : https://github.com/sakarisson
28014
28015;(function (global, factory) {
28016    true ? factory(__webpack_require__(0)) :
28017   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28018   factory(global.moment)
28019}(this, (function (moment) { 'use strict';
28020
28021    //! moment.js locale configuration
28022
28023    var fo = moment.defineLocale('fo', {
28024        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
28025            '_'
28026        ),
28027        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
28028        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
28029            '_'
28030        ),
28031        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
28032        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
28033        longDateFormat: {
28034            LT: 'HH:mm',
28035            LTS: 'HH:mm:ss',
28036            L: 'DD/MM/YYYY',
28037            LL: 'D MMMM YYYY',
28038            LLL: 'D MMMM YYYY HH:mm',
28039            LLLL: 'dddd D. MMMM, YYYY HH:mm',
28040        },
28041        calendar: {
28042            sameDay: '[Í dag kl.] LT',
28043            nextDay: '[Í morgin kl.] LT',
28044            nextWeek: 'dddd [kl.] LT',
28045            lastDay: '[Í gjár kl.] LT',
28046            lastWeek: '[síðstu] dddd [kl] LT',
28047            sameElse: 'L',
28048        },
28049        relativeTime: {
28050            future: 'um %s',
28051            past: '%s síðani',
28052            s: 'fá sekund',
28053            ss: '%d sekundir',
28054            m: 'ein minuttur',
28055            mm: '%d minuttir',
28056            h: 'ein tími',
28057            hh: '%d tímar',
28058            d: 'ein dagur',
28059            dd: '%d dagar',
28060            M: 'ein mánaður',
28061            MM: '%d mánaðir',
28062            y: 'eitt ár',
28063            yy: '%d ár',
28064        },
28065        dayOfMonthOrdinalParse: /\d{1,2}\./,
28066        ordinal: '%d.',
28067        week: {
28068            dow: 1, // Monday is the first day of the week.
28069            doy: 4, // The week that contains Jan 4th is the first week of the year.
28070        },
28071    });
28072
28073    return fo;
28074
28075})));
28076
28077
28078/***/ }),
28079/* 50 */
28080/***/ (function(module, exports, __webpack_require__) {
28081
28082//! moment.js locale configuration
28083//! locale : French [fr]
28084//! author : John Fischer : https://github.com/jfroffice
28085
28086;(function (global, factory) {
28087    true ? factory(__webpack_require__(0)) :
28088   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28089   factory(global.moment)
28090}(this, (function (moment) { 'use strict';
28091
28092    //! moment.js locale configuration
28093
28094    var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
28095        monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
vendor: 11,274 bytes, lines 28096-28441
28096        monthsRegex = /(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,
28097        monthsParse = [
28098            /^janv/i,
28099            /^févr/i,
28100            /^mars/i,
28101            /^avr/i,
28102            /^mai/i,
28103            /^juin/i,
28104            /^juil/i,
28105            /^août/i,
28106            /^sept/i,
28107            /^oct/i,
28108            /^nov/i,
28109            /^déc/i,
28110        ];
28111
28112    var fr = moment.defineLocale('fr', {
28113        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
28114            '_'
28115        ),
28116        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
28117            '_'
28118        ),
28119        monthsRegex: monthsRegex,
28120        monthsShortRegex: monthsRegex,
28121        monthsStrictRegex: monthsStrictRegex,
28122        monthsShortStrictRegex: monthsShortStrictRegex,
28123        monthsParse: monthsParse,
28124        longMonthsParse: monthsParse,
28125        shortMonthsParse: monthsParse,
28126        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
28127        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
28128        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
28129        weekdaysParseExact: true,
28130        longDateFormat: {
28131            LT: 'HH:mm',
28132            LTS: 'HH:mm:ss',
28133            L: 'DD/MM/YYYY',
28134            LL: 'D MMMM YYYY',
28135            LLL: 'D MMMM YYYY HH:mm',
28136            LLLL: 'dddd D MMMM YYYY HH:mm',
28137        },
28138        calendar: {
28139            sameDay: '[Aujourd’hui à] LT',
28140            nextDay: '[Demain à] LT',
28141            nextWeek: 'dddd [à] LT',
28142            lastDay: '[Hier à] LT',
28143            lastWeek: 'dddd [dernier à] LT',
28144            sameElse: 'L',
28145        },
28146        relativeTime: {
28147            future: 'dans %s',
28148            past: 'il y a %s',
28149            s: 'quelques secondes',
28150            ss: '%d secondes',
28151            m: 'une minute',
28152            mm: '%d minutes',
28153            h: 'une heure',
28154            hh: '%d heures',
28155            d: 'un jour',
28156            dd: '%d jours',
28157            w: 'une semaine',
28158            ww: '%d semaines',
28159            M: 'un mois',
28160            MM: '%d mois',
28161            y: 'un an',
28162            yy: '%d ans',
28163        },
28164        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
28165        ordinal: function (number, period) {
28166            switch (period) {
28167                // TODO: Return 'e' when day of month > 1. Move this case inside
28168                // block for masculine words below.
28169                // See https://github.com/moment/moment/issues/3375
28170                case 'D':
28171                    return number + (number === 1 ? 'er' : '');
28172
28173                // Words with masculine grammatical gender: mois, trimestre, jour
28174                default:
28175                case 'M':
28176                case 'Q':
28177                case 'DDD':
28178                case 'd':
28179                    return number + (number === 1 ? 'er' : 'e');
28180
28181                // Words with feminine grammatical gender: semaine
28182                case 'w':
28183                case 'W':
28184                    return number + (number === 1 ? 're' : 'e');
28185            }
28186        },
28187        week: {
28188            dow: 1, // Monday is the first day of the week.
28189            doy: 4, // The week that contains Jan 4th is the first week of the year.
28190        },
28191    });
28192
28193    return fr;
28194
28195})));
28196
28197
28198/***/ }),
28199/* 51 */
28200/***/ (function(module, exports, __webpack_require__) {
28201
28202//! moment.js locale configuration
28203//! locale : French (Canada) [fr-ca]
28204//! author : Jonathan Abourbih : https://github.com/jonbca
28205
28206;(function (global, factory) {
28207    true ? factory(__webpack_require__(0)) :
28208   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28209   factory(global.moment)
28210}(this, (function (moment) { 'use strict';
28211
28212    //! moment.js locale configuration
28213
28214    var frCa = moment.defineLocale('fr-ca', {
28215        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
28216            '_'
28217        ),
28218        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
28219            '_'
28220        ),
28221        monthsParseExact: true,
28222        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
28223        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
28224        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
28225        weekdaysParseExact: true,
28226        longDateFormat: {
28227            LT: 'HH:mm',
28228            LTS: 'HH:mm:ss',
28229            L: 'YYYY-MM-DD',
28230            LL: 'D MMMM YYYY',
28231            LLL: 'D MMMM YYYY HH:mm',
28232            LLLL: 'dddd D MMMM YYYY HH:mm',
28233        },
28234        calendar: {
28235            sameDay: '[Aujourd’hui à] LT',
28236            nextDay: '[Demain à] LT',
28237            nextWeek: 'dddd [à] LT',
28238            lastDay: '[Hier à] LT',
28239            lastWeek: 'dddd [dernier à] LT',
28240            sameElse: 'L',
28241        },
28242        relativeTime: {
28243            future: 'dans %s',
28244            past: 'il y a %s',
28245            s: 'quelques secondes',
28246            ss: '%d secondes',
28247            m: 'une minute',
28248            mm: '%d minutes',
28249            h: 'une heure',
28250            hh: '%d heures',
28251            d: 'un jour',
28252            dd: '%d jours',
28253            M: 'un mois',
28254            MM: '%d mois',
28255            y: 'un an',
28256            yy: '%d ans',
28257        },
28258        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
28259        ordinal: function (number, period) {
28260            switch (period) {
28261                // Words with masculine grammatical gender: mois, trimestre, jour
28262                default:
28263                case 'M':
28264                case 'Q':
28265                case 'D':
28266                case 'DDD':
28267                case 'd':
28268                    return number + (number === 1 ? 'er' : 'e');
28269
28270                // Words with feminine grammatical gender: semaine
28271                case 'w':
28272                case 'W':
28273                    return number + (number === 1 ? 're' : 'e');
28274            }
28275        },
28276    });
28277
28278    return frCa;
28279
28280})));
28281
28282
28283/***/ }),
28284/* 52 */
28285/***/ (function(module, exports, __webpack_require__) {
28286
28287//! moment.js locale configuration
28288//! locale : French (Switzerland) [fr-ch]
28289//! author : Gaspard Bucher : https://github.com/gaspard
28290
28291;(function (global, factory) {
28292    true ? factory(__webpack_require__(0)) :
28293   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28294   factory(global.moment)
28295}(this, (function (moment) { 'use strict';
28296
28297    //! moment.js locale configuration
28298
28299    var frCh = moment.defineLocale('fr-ch', {
28300        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
28301            '_'
28302        ),
28303        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
28304            '_'
28305        ),
28306        monthsParseExact: true,
28307        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
28308        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
28309        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
28310        weekdaysParseExact: true,
28311        longDateFormat: {
28312            LT: 'HH:mm',
28313            LTS: 'HH:mm:ss',
28314            L: 'DD.MM.YYYY',
28315            LL: 'D MMMM YYYY',
28316            LLL: 'D MMMM YYYY HH:mm',
28317            LLLL: 'dddd D MMMM YYYY HH:mm',
28318        },
28319        calendar: {
28320            sameDay: '[Aujourd’hui à] LT',
28321            nextDay: '[Demain à] LT',
28322            nextWeek: 'dddd [à] LT',
28323            lastDay: '[Hier à] LT',
28324            lastWeek: 'dddd [dernier à] LT',
28325            sameElse: 'L',
28326        },
28327        relativeTime: {
28328            future: 'dans %s',
28329            past: 'il y a %s',
28330            s: 'quelques secondes',
28331            ss: '%d secondes',
28332            m: 'une minute',
28333            mm: '%d minutes',
28334            h: 'une heure',
28335            hh: '%d heures',
28336            d: 'un jour',
28337            dd: '%d jours',
28338            M: 'un mois',
28339            MM: '%d mois',
28340            y: 'un an',
28341            yy: '%d ans',
28342        },
28343        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
28344        ordinal: function (number, period) {
28345            switch (period) {
28346                // Words with masculine grammatical gender: mois, trimestre, jour
28347                default:
28348                case 'M':
28349                case 'Q':
28350                case 'D':
28351                case 'DDD':
28352                case 'd':
28353                    return number + (number === 1 ? 'er' : 'e');
28354
28355                // Words with feminine grammatical gender: semaine
28356                case 'w':
28357                case 'W':
28358                    return number + (number === 1 ? 're' : 'e');
28359            }
28360        },
28361        week: {
28362            dow: 1, // Monday is the first day of the week.
28363            doy: 4, // The week that contains Jan 4th is the first week of the year.
28364        },
28365    });
28366
28367    return frCh;
28368
28369})));
28370
28371
28372/***/ }),
28373/* 53 */
28374/***/ (function(module, exports, __webpack_require__) {
28375
28376//! moment.js locale configuration
28377//! locale : Frisian [fy]
28378//! author : Robin van der Vliet : https://github.com/robin0van0der0v
28379
28380;(function (global, factory) {
28381    true ? factory(__webpack_require__(0)) :
28382   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28383   factory(global.moment)
28384}(this, (function (moment) { 'use strict';
28385
28386    //! moment.js locale configuration
28387
28388    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(
28389            '_'
28390        ),
28391        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(
28392            '_'
28393        );
28394
28395    var fy = moment.defineLocale('fy', {
28396        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
28397            '_'
28398        ),
28399        monthsShort: function (m, format) {
28400            if (!m) {
28401                return monthsShortWithDots;
28402            } else if (/-MMM-/.test(format)) {
28403                return monthsShortWithoutDots[m.month()];
28404            } else {
28405                return monthsShortWithDots[m.month()];
28406            }
28407        },
28408        monthsParseExact: true,
28409        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
28410            '_'
28411        ),
28412        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
28413        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
28414        weekdaysParseExact: true,
28415        longDateFormat: {
28416            LT: 'HH:mm',
28417            LTS: 'HH:mm:ss',
28418            L: 'DD-MM-YYYY',
28419            LL: 'D MMMM YYYY',
28420            LLL: 'D MMMM YYYY HH:mm',
28421            LLLL: 'dddd D MMMM YYYY HH:mm',
28422        },
28423        calendar: {
28424            sameDay: '[hjoed om] LT',
28425            nextDay: '[moarn om] LT',
28426            nextWeek: 'dddd [om] LT',
28427            lastDay: '[juster om] LT',
28428            lastWeek: '[ôfrûne] dddd [om] LT',
28429            sameElse: 'L',
28430        },
28431        relativeTime: {
28432            future: 'oer %s',
28433            past: '%s lyn',
28434            s: 'in pear sekonden',
28435            ss: '%d sekonden',
28436            m: 'ien minút',
28437            mm: '%d minuten',
28438            h: 'ien oere',
28439            hh: '%d oeren',
28440            d: 'ien dei',
28441            dd: '%d dagen',
28442            M: 'ien moanne',
28443            MM: '%d moannen',
28444            y: 'ien jier',
28445            yy: '%d jierren',
28446        },
28447        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
28448        ordinal: function (number) {
28449            return (
28450                number +
28451                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
28452            );
28453        },
28454        week: {
28455            dow: 1, // Monday is the first day of the week.
28456            doy: 4, // The week that contains Jan 4th is the first week of the year.
28457        },
28458    });
28459
28460    return fy;
28461
28462})));
28463
28464
28465/***/ }),
28466/* 54 */
28467/***/ (function(module, exports, __webpack_require__) {
28468
28469//! moment.js locale configuration
28470//! locale : Irish or Irish Gaelic [ga]
28471//! author : André Silva : https://github.com/askpt
28472
28473;(function (global, factory) {
28474    true ? factory(__webpack_require__(0)) :
28475   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28476   factory(global.moment)
28477}(this, (function (moment) { 'use strict';
28478
28479    //! moment.js locale configuration
28480
28481    var months = [
28482            'Eanáir',
28483            'Feabhra',
28484            'Márta',
28485            'Aibreán',
28486            'Bealtaine',
28487            'Meitheamh',
28488            'Iúil',
28489            'Lúnasa',
28490            'Meán Fómhair',
28491            'Deireadh Fómhair',
28492            'Samhain',
28493            'Nollaig',
28494        ],
28495        monthsShort = [
28496            'Ean',
28497            'Feabh',
28498            'Márt',
28499            'Aib',
28500            'Beal',
28501            'Meith',
28502            'Iúil',
28503            'Lún',
28504            'M.F.',
28505            'D.F.',
28506            'Samh',
28507            'Noll',
28508        ],
28509        weekdays = [
28510            'Dé Domhnaigh',
28511            'Dé Luain',
28512            'Dé Máirt',
28513            'Dé Céadaoin',
28514            'Déardaoin',
28515            'Dé hAoine',
28516            'Dé Sathairn',
28517        ],
28518        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
28519        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
28520
28521    var ga = moment.defineLocale('ga', {
28522        months: months,
28523        monthsShort: monthsShort,
28524        monthsParseExact: true,
28525        weekdays: weekdays,
28526        weekdaysShort: weekdaysShort,
28527        weekdaysMin: weekdaysMin,
28528        longDateFormat: {
28529            LT: 'HH:mm',
28530            LTS: 'HH:mm:ss',
28531            L: 'DD/MM/YYYY',
28532            LL: 'D MMMM YYYY',
28533            LLL: 'D MMMM YYYY HH:mm',
28534            LLLL: 'dddd, D MMMM YYYY HH:mm',
28535        },
28536        calendar: {
28537            sameDay: '[Inniu ag] LT',
28538            nextDay: '[Amárach ag] LT',
28539            nextWeek: 'dddd [ag] LT',
28540            lastDay: '[Inné ag] LT',
28541            lastWeek: 'dddd [seo caite] [ag] LT',
28542            sameElse: 'L',
28543        },
28544        relativeTime: {
28545            future: 'i %s',
28546            past: '%s ó shin',
28547            s: 'cúpla soicind',
28548            ss: '%d soicind',
28549            m: 'nóiméad',
28550            mm: '%d nóiméad',
28551            h: 'uair an chloig',
28552            hh: '%d uair an chloig',
28553            d: 'lá',
28554            dd: '%d lá',
28555            M: 'mí',
28556            MM: '%d míonna',
28557            y: 'bliain',
28558            yy: '%d bliain',
28559        },
28560        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
28561        ordinal: function (number) {
28562            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
28563            return number + output;
28564        },
28565        week: {
28566            dow: 1, // Monday is the first day of the week.
28567            doy: 4, // The week that contains Jan 4th is the first week of the year.
28568        },
28569    });
28570
28571    return ga;
28572
28573})));
28574
28575
28576/***/ }),
28577/* 55 */
28578/***/ (function(module, exports, __webpack_require__) {
28579
28580//! moment.js locale configuration
28581//! locale : Scottish Gaelic [gd]
28582//! author : Jon Ashdown : https://github.com/jonashdown
28583
28584;(function (global, factory) {
28585    true ? factory(__webpack_require__(0)) :
28586   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28587   factory(global.moment)
28588}(this, (function (moment) { 'use strict';
28589
28590    //! moment.js locale configuration
28591
28592    var months = [
28593            'Am Faoilleach',
28594            'An Gearran',
28595            'Am Màrt',
28596            'An Giblean',
28597            'An Cèitean',
28598            'An t-Ògmhios',
28599            'An t-Iuchar',
28600            'An Lùnastal',
28601            'An t-Sultain',
28602            'An Dàmhair',
28603            'An t-Samhain',
28604            'An Dùbhlachd',
28605        ],
28606        monthsShort = [
28607            'Faoi',
28608            'Gear',
28609            'Màrt',
28610            'Gibl',
28611            'Cèit',
28612            'Ògmh',
28613            'Iuch',
28614            'Lùn',
28615            'Sult',
28616            'Dàmh',
28617            'Samh',
28618            'Dùbh',
28619        ],
28620        weekdays = [
28621            'Didòmhnaich',
28622            'Diluain',
28623            'Dimàirt',
28624            'Diciadain',
28625            'Diardaoin',
28626            'Dihaoine',
28627            'Disathairne',
28628        ],
28629        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
28630        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
28631
28632    var gd = moment.defineLocale('gd', {
28633        months: months,
28634        monthsShort: monthsShort,
28635        monthsParseExact: true,
28636        weekdays: weekdays,
28637        weekdaysShort: weekdaysShort,
28638        weekdaysMin: weekdaysMin,
28639        longDateFormat: {
28640            LT: 'HH:mm',
28641            LTS: 'HH:mm:ss',
28642            L: 'DD/MM/YYYY',
28643            LL: 'D MMMM YYYY',
28644            LLL: 'D MMMM YYYY HH:mm',
28645            LLLL: 'dddd, D MMMM YYYY HH:mm',
28646        },
28647        calendar: {
28648            sameDay: '[An-diugh aig] LT',
28649            nextDay: '[A-màireach aig] LT',
28650            nextWeek: 'dddd [aig] LT',
28651            lastDay: '[An-dè aig] LT',
28652            lastWeek: 'dddd [seo chaidh] [aig] LT',
28653            sameElse: 'L',
28654        },
28655        relativeTime: {
28656            future: 'ann an %s',
28657            past: 'bho chionn %s',
28658            s: 'beagan diogan',
28659            ss: '%d diogan',
28660            m: 'mionaid',
28661            mm: '%d mionaidean',
28662            h: 'uair',
28663            hh: '%d uairean',
28664            d: 'latha',
28665            dd: '%d latha',
28666            M: 'mìos',
28667            MM: '%d mìosan',
28668            y: 'bliadhna',
28669            yy: '%d bliadhna',
28670        },
28671        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
28672        ordinal: function (number) {
28673            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
28674            return number + output;
28675        },
28676        week: {
28677            dow: 1, // Monday is the first day of the week.
28678            doy: 4, // The week that contains Jan 4th is the first week of the year.
28679        },
28680    });
28681
28682    return gd;
28683
28684})));
28685
28686
28687/***/ }),
28688/* 56 */
28689/***/ (function(module, exports, __webpack_require__) {
28690
28691//! moment.js locale configuration
28692//! locale : Galician [gl]
28693//! author : Juan G. Hurtado : https://github.com/juanghurtado
28694
28695;(function (global, factory) {
28696    true ? factory(__webpack_require__(0)) :
28697   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28698   factory(global.moment)
28699}(this, (function (moment) { 'use strict';
28700
28701    //! moment.js locale configuration
28702
28703    var gl = moment.defineLocale('gl', {
28704        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
28705            '_'
28706        ),
28707        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
28708            '_'
28709        ),
28710        monthsParseExact: true,
28711        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
28712        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
28713        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
28714        weekdaysParseExact: true,
28715        longDateFormat: {
28716            LT: 'H:mm',
28717            LTS: 'H:mm:ss',
28718            L: 'DD/MM/YYYY',
28719            LL: 'D [de] MMMM [de] YYYY',
28720            LLL: 'D [de] MMMM [de] YYYY H:mm',
28721            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
28722        },
28723        calendar: {
28724            sameDay: function () {
28725                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
28726            },
28727            nextDay: function () {
28728                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
28729            },
28730            nextWeek: function () {
28731                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
28732            },
28733            lastDay: function () {
28734                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
28735            },
28736            lastWeek: function () {
28737                return (
28738                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
28739                );
28740            },
28741            sameElse: 'L',
28742        },
28743        relativeTime: {
28744            future: function (str) {
28745                if (str.indexOf('un') === 0) {
28746                    return 'n' + str;
28747                }
28748                return 'en ' + str;
28749            },
28750            past: 'hai %s',
28751            s: 'uns segundos',
28752            ss: '%d segundos',
28753            m: 'un minuto',
28754            mm: '%d minutos',
28755            h: 'unha hora',
28756            hh: '%d horas',
28757            d: 'un día',
28758            dd: '%d días',
28759            M: 'un mes',
28760            MM: '%d meses',
28761            y: 'un ano',
28762            yy: '%d anos',
28763        },
28764        dayOfMonthOrdinalParse: /\d{1,2}º/,
28765        ordinal: '%dº',
28766        week: {
28767            dow: 1, // Monday is the first day of the week.
28768            doy: 4, // The week that contains Jan 4th is the first week of the year.
28769        },
28770    });
28771
28772    return gl;
28773
28774})));
28775
28776
28777/***/ }),
28778/* 57 */
28779/***/ (function(module, exports, __webpack_require__) {
28780
28781//! moment.js locale configuration
28782//! locale : Konkani Devanagari script [gom-deva]
28783//! author : The Discoverer : https://github.com/WikiDiscoverer
28784
28785;(function (global, factory) {
28786    true ? factory(__webpack_require__(0)) :
28787   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28788   factory(global.moment)
28789}(this, (function (moment) { 'use strict';
28790
28791    //! moment.js locale configuration
28792
28793    function processRelativeTime(number, withoutSuffix, key, isFuture) {
28794        var format = {
28795            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
28796            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
28797            m: ['एका मिणटान', 'एक मिनूट'],
28798            mm: [number + ' मिणटांनी', number + ' मिणटां'],
28799            h: ['एका वरान', 'एक वर'],
28800            hh: [number + ' वरांनी', number + ' वरां'],
28801            d: ['एका दिसान', 'एक दीस'],
28802            dd: [number + ' दिसांनी', number + ' दीस'],
28803            M: ['एका म्हयन्यान', 'एक म्हयनो'],
28804            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
28805            y: ['एका वर्सान', 'एक वर्स'],
28806            yy: [number + ' वर्सांनी', number + ' वर्सां'],
28807        };
28808        return isFuture ? format[key][0] : format[key][1];
28809    }
28810
28811    var gomDeva = moment.defineLocale('gom-deva', {
28812        months: {
28813            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
28814                '_'
28815            ),
28816            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
28817                '_'
28818            ),
28819            isFormat: /MMMM(\s)+D[oD]?/,
28820        },
28821        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
28822            '_'
28823        ),
28824        monthsParseExact: true,
28825        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्राà
28825¤°_शेनवार'.split('_'),
28826        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
28827        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
28828        weekdaysParseExact: true,
28829        longDateFormat: {
28830            LT: 'A h:mm [वाजतां]',
28831            LTS: 'A h:mm:ss [वाजतां]',
28832            L: 'DD-MM-YYYY',
28833            LL: 'D MMMM YYYY',
28834            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
28835            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
28836            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
28837        },
28838        calendar: {
28839            sameDay: '[आयज] LT',
28840            nextDay: '[फाल्यां] LT',
28841            nextWeek: '[फुडलो] dddd[,] LT',
28842            lastDay: '[काल] LT',
28843            lastWeek: '[फाटलो] dddd[,] LT',
28844            sameElse: 'L',
28845        },
28846        relativeTime: {
28847            future: '%s',
28848            past: '%s आदीं',
28849            s: processRelativeTime,
28850            ss: processRelativeTime,
28851            m: processRelativeTime,
28852            mm: processRelativeTime,
28853            h: processRelativeTime,
28854            hh: processRelativeTime,
28855            d: processRelativeTime,
28856            dd: processRelativeTime,
28857            M: processRelativeTime,
28858            MM: processRelativeTime,
28859            y: processRelativeTime,
28860            yy: processRelativeTime,
28861        },
28862        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
28863        ordinal: function (number, period) {
28864            switch (period) {
28865                // the ordinal 'वेर' only applies to day of the month
28866                case 'D':
28867                    return number + 'वेर';
28868                default:
28869                case 'M':
28870                case 'Q':
28871                case 'DDD':
28872                case 'd':
28873                case 'w':
28874                case 'W':
28875                    return number;
28876            }
28877        },
28878        week: {
28879            dow: 0, // Sunday is the first day of the week
28880            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
28881        },
28882        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
28883        meridiemHour: function (hour, meridiem) {
28884            if (hour === 12) {
28885                hour = 0;
28886            }
28887            if (meridiem === 'राती') {
28888                return hour < 4 ? hour : hour + 12;
28889            } else if (meridiem === 'सकाळीं') {
28890                return hour;
28891            } else if (meridiem === 'दनपारां') {
28892                return hour > 12 ? hour : hour + 12;
28893            } else if (meridiem === 'सांजे') {
28894                return hour + 12;
28895            }
28896        },
28897        meridiem: function (hour, minute, isLower) {
28898            if (hour < 4) {
28899                return 'राती';
28900            } else if (hour < 12) {
28901                return 'सकाळीं';
28902            } else if (hour < 16) {
28903                return 'दनपारां';
28904            } else if (hour < 20) {
28905                return 'सांजे';
28906            } else {
28907                return 'राती';
28908            }
28909        },
28910    });
28911
28912    return gomDeva;
28913
28914})));
28915
28916
28917/***/ }),
28918/* 58 */
28919/***/ (function(module, exports, __webpack_require__) {
28920
28921//! moment.js locale configuration
28922//! locale : Konkani Latin script [gom-latn]
28923//! author : The Discoverer : https://github.com/WikiDiscoverer
28924
28925;(function (global, factory) {
28926    true ? factory(__webpack_require__(0)) :
28927   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
28928   factory(global.moment)
28929}(this, (function (moment) { 'use strict';
28930
28931    //! moment.js locale configuration
28932
28933    function processRelativeTime(number, withoutSuffix, key, isFuture) {
28934        var format = {
28935            s: ['thoddea sekondamni', 'thodde sekond'],
28936            ss: [number + ' sekondamni', number + ' sekond'],
28937            m: ['eka mintan', 'ek minut'],
28938            mm: [number + ' mintamni', number + ' mintam'],
28939            h: ['eka voran', 'ek vor'],
28940            hh: [number + ' voramni', number + ' voram'],
28941            d: ['eka disan', 'ek dis'],
28942            dd: [number + ' disamni', number + ' dis'],
28943            M: ['eka mhoinean', 'ek mhoino'],
28944            MM: [number + ' mhoineamni', number + ' mhoine'],
28945            y: ['eka vorsan', 'ek voros'],
28946            yy: [number + ' vorsamni', number + ' vorsam'],
28947        };
28948        return isFuture ? format[key][0] : format[key][1];
28949    }
28950
28951    var gomLatn = moment.defineLocale('gom-latn', {
28952        months: {
28953            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
28954                '_'
28955            ),
28956            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
28957                '_'
28958            ),
28959            isFormat: /MMMM(\s)+D[oD]?/,
28960        },
28961        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(
28962            '_'
28963        ),
28964        monthsParseExact: true,
28965        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
28966        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
28967        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
28968        weekdaysParseExact: true,
28969        longDateFormat: {
28970            LT: 'A h:mm [vazta]',
28971            LTS: 'A h:mm:ss [vazta]',
28972            L: 'DD-MM-YYYY',
28973            LL: 'D MMMM YYYY',
28974            LLL: 'D MMMM YYYY A h:mm [vazta]',
28975            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
28976            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
28977        },
28978        calendar: {
28979            sameDay: '[Aiz] LT',
28980            nextDay: '[Faleam] LT',
28981            nextWeek: '[Fuddlo] dddd[,] LT',
28982            lastDay: '[Kal] LT',
28983            lastWeek: '[Fattlo] dddd[,] LT',
28984            sameElse: 'L',
28985        },
28986        relativeTime: {
28987            future: '%s',
28988            past: '%s adim',
28989            s: processRelativeTime,
28990            ss: processRelativeTime,
28991            m: processRelativeTime,
28992            mm: processRelativeTime,
28993            h: processRelativeTime,
28994            hh: processRelativeTime,
28995            d: processRelativeTime,
28996            dd: processRelativeTime,
28997            M: processRelativeTime,
28998            MM: processRelativeTime,
28999            y: processRelativeTime,
29000            yy: processRelativeTime,
29001        },
29002        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
29003        ordinal: function (number, period) {
29004            switch (period) {
29005                // the ordinal 'er' only applies to day of the month
29006                case 'D':
29007                    return number + 'er';
29008                default:
29009                case 'M':
29010                case 'Q':
29011                case 'DDD':
29012                case 'd':
29013                case 'w':
29014                case 'W':
29015                    return number;
29016            }
29017        },
29018        week: {
29019            dow: 0, // Sunday is the first day of the week
29020            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
29021        },
29022        meridiemParse: /rati|sokallim|donparam|sanje/,
29023        meridiemHour: function (hour, meridiem) {
29024            if (hour === 12) {
29025                hour = 0;
29026            }
29027            if (meridiem === 'rati') {
29028                return hour < 4 ? hour : hour + 12;
29029            } else if (meridiem === 'sokallim') {
29030                return hour;
29031            } else if (meridiem === 'donparam') {
29032                return hour > 12 ? hour : hour + 12;
29033            } else if (meridiem === 'sanje') {
29034                return hour + 12;
29035            }
29036        },
29037        meridiem: function (hour, minute, isLower) {
29038            if (hour < 4) {
29039                return 'rati';
29040            } else if (hour < 12) {
29041                return 'sokallim';
29042            } else if (hour < 16) {
29043                return 'donparam';
29044            } else if (hour < 20) {
29045                return 'sanje';
29046            } else {
29047                return 'rati';
29048            }
29049        },
29050    });
29051
29052    return gomLatn;
29053
29054})));
29055
29056
29057/***/ }),
29058/* 59 */
29059/***/ (function(module, exports, __webpack_require__) {
29060
29061//! moment.js locale configuration
29062//! locale : Gujarati [gu]
29063//! author : Kaushik Thanki : https://github.com/Kaushik1987
29064
29065;(function (global, factory) {
29066    true ? factory(__webpack_require__(0)) :
29067   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29068   factory(global.moment)
29069}(this, (function (moment) { 'use strict';
29070
29071    //! moment.js locale configuration
29072
29073    var symbolMap = {
29074            1: 'à«§',
29075            2: '૨',
29076            3: 'à«©',
29077            4: '૪',
29078            5: 'à««',
29079            6: '૬',
29080            7: 'à«­',
29081            8: 'à«®',
29082            9: '૯',
29083            0: '૦',
29084        },
29085        numberMap = {
29086            'à«§': '1',
29087            '૨': '2',
29088            'à«©': '3',
29089            '૪': '4',
29090            'à««': '5',
29091            '૬': '6',
29092            'à«­': '7',
29093            'à«®': '8',
29094            '૯': '9',
29095            '૦': '0',
29096        };
29097
29098    var gu = moment.defineLocale('gu', {
29099        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
29100            '_'
29101        ),
29102        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડà
29102ª¿àª¸à«‡.'.split(
29103            '_'
29104        ),
29105        monthsParseExact: true,
29106        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
29107            '_'
29108        ),
29109        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
29110        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
29111        longDateFormat: {
29112            LT: 'A h:mm વાગ્યે',
29113            LTS: 'A h:mm:ss વાગ્યે',
29114            L: 'DD/MM/YYYY',
29115            LL: 'D MMMM YYYY',
29116            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
29117            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
29118        },
29119        calendar: {
29120            sameDay: '[આજ] LT',
29121            nextDay: '[કાલે] LT',
29122            nextWeek: 'dddd, LT',
29123            lastDay: '[ગઇકાલે] LT',
29124            lastWeek: '[પાછલા] dddd, LT',
29125            sameElse: 'L',
29126        },
29127        relativeTime: {
29128            future: '%s મા',
29129            past: '%s પહેલા',
29130            s: 'અમુક પળો',
29131            ss: '%d સેકંડ',
29132            m: 'એક મિનિટ',
29133            mm: '%d મિનિટ',
29134            h: 'એક કલાક',
29135            hh: '%d કલાક',
29136            d: 'એક દિવસ',
29137            dd: '%d દિવસ',
29138            M: 'એક મહિનો',
29139            MM: '%d મહિનો',
29140            y: 'એક વર્ષ',
29141            yy: '%d વર્ષ',
29142        },
29143        preparse: function (string) {
29144            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
29145                return numberMap[match];
29146            });
29147        },
29148        postformat: function (string) {
29149            return string.replace(/\d/g, function (match) {
29150                return symbolMap[match];
29151            });
29152        },
29153        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
29154        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
29155        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
29156        meridiemHour: function (hour, meridiem) {
29157            if (hour === 12) {
29158                hour = 0;
29159            }
29160            if (meridiem === 'રાત') {
29161                return hour < 4 ? hour : hour + 12;
29162            } else if (meridiem === 'સવાર') {
29163                return hour;
29164            } else if (meridiem === 'બપોર') {
29165                return hour >= 10 ? hour : hour + 12;
29166            } else if (meridiem === 'સાંજ') {
29167                return hour + 12;
29168            }
29169        },
29170        meridiem: function (hour, minute, isLower) {
29171            if (hour < 4) {
29172                return 'રાત';
29173            } else if (hour < 10) {
29174                return 'સવાર';
29175            } else if (hour < 17) {
29176                return 'બપોર';
29177            } else if (hour < 20) {
29178                return 'સાંજ';
29179            } else {
29180                return 'રાત';
29181            }
29182        },
29183        week: {
29184            dow: 0, // Sunday is the first day of the week.
29185            doy: 6, // The week that contains Jan 6th is the first week of the year.
29186        },
29187    });
29188
29189    return gu;
29190
29191})));
29192
29193
29194/***/ }),
29195/* 60 */
29196/***/ (function(module, exports, __webpack_require__) {
29197
29198//! moment.js locale configuration
29199//! locale : Hebrew [he]
29200//! author : Tomer Cohen : https://github.com/tomer
29201//! author : Moshe Simantov : https://github.com/DevelopmentIL
29202//! author : Tal Ater : https://github.com/TalAter
29203
29204;(function (global, factory) {
29205    true ? factory(__webpack_require__(0)) :
29206   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29207   factory(global.moment)
29208}(this, (function (moment) { 'use strict';
29209
29210    //! moment.js locale configuration
29211
29212    var he = moment.defineLocale('he', {
29213        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
29214            '_'
29215        ),
29216        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(
29217            '_'
29218        ),
29219        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
29220        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
29221        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
29222        longDateFormat: {
29223            LT: 'HH:mm',
29224            LTS: 'HH:mm:ss',
29225            L: 'DD/MM/YYYY',
29226            LL: 'D [ב]MMMM YYYY',
29227            LLL: 'D [ב]MMMM YYYY HH:mm',
29228            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
29229            l: 'D/M/YYYY',
29230            ll: 'D MMM YYYY',
29231            lll: 'D MMM YYYY HH:mm',
29232            llll: 'ddd, D MMM YYYY HH:mm',
29233        },
29234        calendar: {
29235            sameDay: '[היום ב־]LT',
29236            nextDay: '[מחר ב־]LT',
29237            nextWeek: 'dddd [בשעה] LT',
29238            lastDay: '[אתמול ב־]LT',
29239            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
29240            sameElse: 'L',
29241        },
29242        relativeTime: {
29243            future: 'בעוד %s',
29244            past: 'לפני %s',
29245            s: 'מספר שניות',
29246            ss: '%d שניות',
29247            m: 'דקה',
29248            mm: '%d דקות',
29249            h: 'שעה',
29250            hh: function (number) {
29251                if (number === 2) {
29252                    return 'שעתיים';
29253                }
29254                return number + ' שעות';
29255            },
29256            d: 'יום',
29257            dd: function (number) {
29258                if (number === 2) {
29259                    return 'יומיים';
29260                }
29261                return number + ' ימים';
29262            },
29263            M: 'חודש',
29264            MM: function (number) {
29265                if (number === 2) {
29266                    return 'חודשיים';
29267                }
29268                return number + ' חודשים';
29269            },
29270            y: 'שנה',
29271            yy: function (number) {
29272                if (number === 2) {
29273                    return 'שנתיים';
29274                } else if (number % 10 === 0 && number !== 10) {
29275                    return number + ' שנה';
29276                }
29277                return number + ' שנים';
29278            },
29279        },
29280        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
29281        isPM: function (input) {
29282            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
29283        },
29284        meridiem: function (hour, minute, isLower) {
29285            if (hour < 5) {
29286                return 'לפנות בוקר';
29287            } else if (hour < 10) {
29288                return 'בבוקר';
29289            } else if (hour < 12) {
29290                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
29291            } else if (hour < 18) {
29292                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
29293            } else {
29294                return 'בערב';
29295            }
29296        },
29297    });
29298
29299    return he;
29300
29301})));
29302
29303
29304/***/ }),
29305/* 61 */
29306/***/ (function(module, exports, __webpack_require__) {
29307
29308//! moment.js locale configuration
vendor: 4,079 bytes, lines 29309-29416
29309//! locale : Hindi [hi]
29310//! author : Mayank Singhal : https://github.com/mayanksinghal
29311
29312;(function (global, factory) {
29313    true ? factory(__webpack_require__(0)) :
29314   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29315   factory(global.moment)
29316}(this, (function (moment) { 'use strict';
29317
29318    //! moment.js locale configuration
29319
29320    var symbolMap = {
29321            1: '१',
29322            2: '२',
29323            3: '३',
29324            4: '४',
29325            5: '५',
29326            6: '६',
29327            7: '७',
29328            8: '८',
29329            9: '९',
29330            0: '०',
29331        },
29332        numberMap = {
29333            '१': '1',
29334            '२': '2',
29335            '३': '3',
29336            '४': '4',
29337            '५': '5',
29338            '६': '6',
29339            '७': '7',
29340            '८': '8',
29341            '९': '9',
29342            '०': '0',
29343        };
29344
29345    var hi = moment.defineLocale('hi', {
29346        months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
29347            '_'
29348        ),
29349        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(
29350            '_'
29351        ),
29352        monthsParseExact: true,
29353        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
29354        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
29355        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
29356        longDateFormat: {
29357            LT: 'A h:mm बजे',
29358            LTS: 'A h:mm:ss बजे',
29359            L: 'DD/MM/YYYY',
29360            LL: 'D MMMM YYYY',
29361            LLL: 'D MMMM YYYY, A h:mm बजे',
29362            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
29363        },
29364        calendar: {
29365            sameDay: '[आज] LT',
29366            nextDay: '[कल] LT',
29367            nextWeek: 'dddd, LT',
29368            lastDay: '[कल] LT',
29369            lastWeek: '[पिछले] dddd, LT',
29370            sameElse: 'L',
29371        },
29372        relativeTime: {
29373            future: '%s में',
29374            past: '%s पहले',
29375            s: 'कुछ ही क्षण',
29376            ss: '%d सेकंड',
29377            m: 'एक मिनट',
29378            mm: '%d मिनट',
29379            h: 'एक घंटा',
29380            hh: '%d घंटे',
29381            d: 'एक दिन',
29382            dd: '%d दिन',
29383            M: 'एक महीने',
29384            MM: '%d महीने',
29385            y: 'एक वर्ष',
29386            yy: '%d वर्ष',
29387        },
29388        preparse: function (string) {
29389            return string.replace(/[१२३४५६७८९०]/g, function (match) {
29390                return numberMap[match];
29391            });
29392        },
29393        postformat: function (string) {
29394            return string.replace(/\d/g, function (match) {
29395                return symbolMap[match];
29396            });
29397        },
29398        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
29399        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
29400        meridiemParse: /रात|सुबह|दोपहर|शाम/,
29401        meridiemHour: function (hour, meridiem) {
29402            if (hour === 12) {
29403                hour = 0;
29404            }
29405            if (meridiem === 'रात') {
29406                return hour < 4 ? hour : hour + 12;
29407            } else if (meridiem === 'सुबह') {
29408                return hour;
29409            } else if (meridiem === 'दोपहर') {
29410                return hour >= 10 ? hour : hour + 12;
29411            } else if (meridiem === 'शाम') {
29412                return hour + 12;
29413            }
29414        },
29415        meridiem: function (hour, minute, isLower) {
29416            if (hour < 4) {
29417                return 'रात';
29418            } else if (hour < 10) {
29419                return 'सुबह';
29420            } else if (hour < 17) {
29421                return 'दोपहर';
29422            } else if (hour < 20) {
29423                return 'शाम';
29424            } else {
29425                return 'रात';
29426            }
29427        },
29428        week: {
29429            dow: 0, // Sunday is the first day of the week.
29430            doy: 6, // The week that contains Jan 6th is the first week of the year.
29431        },
29432    });
29433
29434    return hi;
29435
29436})));
29437
29438
29439/***/ }),
29440/* 62 */
29441/***/ (function(module, exports, __webpack_require__) {
29442
29443//! moment.js locale configuration
29444//! locale : Croatian [hr]
29445//! author : Bojan Marković : https://github.com/bmarkovic
29446
29447;(function (global, factory) {
29448    true ? factory(__webpack_require__(0)) :
29449   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29450   factory(global.moment)
29451}(this, (function (moment) { 'use strict';
29452
29453    //! moment.js locale configuration
29454
29455    function translate(number, withoutSuffix, key) {
29456        var result = number + ' ';
29457        switch (key) {
29458            case 'ss':
29459                if (number === 1) {
29460                    result += 'sekunda';
29461                } else if (number === 2 || number === 3 || number === 4) {
29462                    result += 'sekunde';
29463                } else {
29464                    result += 'sekundi';
29465                }
29466                return result;
29467            case 'm':
29468                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
29469            case 'mm':
29470                if (number === 1) {
29471                    result += 'minuta';
29472                } else if (number === 2 || number === 3 || number === 4) {
29473                    result += 'minute';
29474                } else {
29475                    result += 'minuta';
29476                }
29477                return result;
29478            case 'h':
29479                return withoutSuffix ? 'jedan sat' : 'jednog sata';
29480            case 'hh':
29481                if (number === 1) {
29482                    result += 'sat';
29483                } else if (number === 2 || number === 3 || number === 4) {
29484                    result += 'sata';
29485                } else {
29486                    result += 'sati';
29487                }
29488                return result;
29489            case 'dd':
29490                if (number === 1) {
29491                    result += 'dan';
29492                } else {
29493                    result += 'dana';
29494                }
29495                return result;
29496            case 'MM':
29497                if (number === 1) {
29498                    result += 'mjesec';
29499                } else if (number === 2 || number === 3 || number === 4) {
29500                    result += 'mjeseca';
29501                } else {
29502                    result += 'mjeseci';
29503                }
29504                return result;
29505            case 'yy':
29506                if (number === 1) {
29507                    result += 'godina';
29508                } else if (number === 2 || number === 3 || number === 4) {
29509                    result += 'godine';
29510                } else {
29511                    result += 'godina';
29512                }
29513                return result;
29514        }
29515    }
29516
29517    var hr = moment.defineLocale('hr', {
29518        months: {
29519            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
29520                '_'
29521            ),
29522            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
29523                '_'
29524            ),
29525        },
29526        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
29527            '_'
29528        ),
29529        monthsParseExact: true,
29530        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
29531            '_'
29532        ),
29533        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
29534        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
29535        weekdaysParseExact: true,
29536        longDateFormat: {
29537            LT: 'H:mm',
29538            LTS: 'H:mm:ss',
29539            L: 'DD.MM.YYYY',
29540            LL: 'Do MMMM YYYY',
29541            LLL: 'Do MMMM YYYY H:mm',
29542            LLLL: 'dddd, Do MMMM YYYY H:mm',
29543        },
29544        calendar: {
29545            sameDay: '[danas u] LT',
29546            nextDay: '[sutra u] LT',
29547            nextWeek: function () {
29548                switch (this.day()) {
29549                    case 0:
29550                        return '[u] [nedjelju] [u] LT';
29551                    case 3:
29552                        return '[u] [srijedu] [u] LT';
29553                    case 6:
29554                        return '[u] [subotu] [u] LT';
29555                    case 1:
29556                    case 2:
29557                    case 4:
29558                    case 5:
29559                        return '[u] dddd [u] LT';
29560                }
29561            },
29562            lastDay: '[jučer u] LT',
29563            lastWeek: function () {
29564                switch (this.day()) {
29565                    case 0:
29566                        return '[prošlu] [nedjelju] [u] LT';
29567                    case 3:
29568                        return '[prošlu] [srijedu] [u] LT';
29569                    case 6:
29570                        return '[prošle] [subote] [u] LT';
29571                    case 1:
29572                    case 2:
29573                    case 4:
29574                    case 5:
29575                        return '[prošli] dddd [u] LT';
29576                }
29577            },
29578            sameElse: 'L',
29579        },
29580        relativeTime: {
29581            future: 'za %s',
29582            past: 'prije %s',
29583            s: 'par sekundi',
29584            ss: translate,
29585            m: translate,
29586            mm: translate,
29587            h: translate,
29588            hh: translate,
29589            d: 'dan',
29590            dd: translate,
29591            M: 'mjesec',
29592            MM: translate,
29593            y: 'godinu',
29594            yy: translate,
29595        },
29596        dayOfMonthOrdinalParse: /\d{1,2}\./,
29597        ordinal: '%d.',
29598        week: {
29599            dow: 1, // Monday is the first day of the week.
29600            doy: 7, // The week that contains Jan 7th is the first week of the year.
29601        },
29602    });
29603
29604    return hr;
29605
29606})));
29607
29608
29609/***/ }),
29610/* 63 */
29611/***/ (function(module, exports, __webpack_require__) {
29612
29613//! moment.js locale configuration
29614//! locale : Hungarian [hu]
29615//! author : Adam Brunner : https://github.com/adambrunner
29616//! author : Peter Viszt  : https://github.com/passatgt
29617
29618;(function (global, factory) {
29619    true ? factory(__webpack_require__(0)) :
29620   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29621   factory(global.moment)
29622}(this, (function (moment) { 'use strict';
29623
29624    //! moment.js locale configuration
29625
29626    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(
29627        ' '
29628    );
29629    function translate(number, withoutSuffix, key, isFuture) {
29630        var num = number;
29631        switch (key) {
29632            case 's':
29633                return isFuture || withoutSuffix
29634                    ? 'néhány másodperc'
29635                    : 'néhány másodperce';
29636            case 'ss':
29637                return num + (isFuture || withoutSuffix)
29638                    ? ' másodperc'
29639                    : ' másodperce';
29640            case 'm':
29641                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
29642            case 'mm':
29643                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
29644            case 'h':
29645                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
29646            case 'hh':
29647                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
29648            case 'd':
29649                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
29650            case 'dd':
29651                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
29652            case 'M':
29653                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
29654            case 'MM':
29655                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
29656            case 'y':
29657                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
29658            case 'yy':
29659                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
29660        }
29661        return '';
29662    }
29663    function week(isFuture) {
29664        return (
29665            (isFuture ? '' : '[múlt] ') +
29666            '[' +
29667            weekEndings[this.day()] +
29668            '] LT[-kor]'
29669        );
29670    }
29671
29672    var hu = moment.defineLocale('hu', {
29673        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
29674            '_'
29675        ),
29676        monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
29677            '_'
29678        ),
29679        monthsParseExact: true,
29680        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
29681        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
29682        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
29683        longDateFormat: {
29684            LT: 'H:mm',
29685            LTS: 'H:mm:ss',
29686            L: 'YYYY.MM.DD.',
29687            LL: 'YYYY. MMMM D.',
29688            LLL: 'YYYY. MMMM D. H:mm',
29689            LLLL: 'YYYY. MMMM D., dddd H:mm',
29690        },
29691        meridiemParse: /de|du/i,
29692        isPM: function (input) {
29693            return input.charAt(1).toLowerCase() === 'u';
29694        },
29695        meridiem: function (hours, minutes, isLower) {
29696            if (hours < 12) {
29697                return isLower === true ? 'de' : 'DE';
29698            } else {
29699                return isLower === true ? 'du' : 'DU';
29700            }
29701        },
29702        calendar: {
29703            sameDay: '[ma] LT[-kor]',
29704            nextDay: '[holnap] LT[-kor]',
29705            nextWeek: function () {
29706                return week.call(this, true);
29707            },
29708            lastDay: '[tegnap] LT[-kor]',
29709            lastWeek: function () {
29710                return week.call(this, false);
29711            },
29712            sameElse: 'L',
29713        },
29714        relativeTime: {
29715            future: '%s múlva',
29716            past: '%s',
29717            s: translate,
29718            ss: translate,
29719            m: translate,
29720            mm: translate,
29721            h: translate,
29722            hh: translate,
29723            d: translate,
29724            dd: translate,
29725            M: translate,
29726            MM: translate,
29727            y: translate,
29728            yy: translate,
29729        },
29730        dayOfMonthOrdinalParse: /\d{1,2}\./,
29731        ordinal: '%d.',
29732        week: {
29733            dow: 1, // Monday is the first day of the week.
29734            doy: 4, // The week that contains Jan 4th is the first week of the year.
29735        },
29736    });
29737
29738    return hu;
29739
29740})));
29741
29742
29743/***/ }),
29744/* 64 */
29745/***/ (function(module, exports, __webpack_require__) {
29746
29747//! moment.js locale configuration
29748//! locale : Armenian [hy-am]
29749//! author : Armendarabyan : https://github.com/armendarabyan
29750
29751;(function (global, factory) {
29752    true ? factory(__webpack_require__(0)) :
29753   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29754   factory(global.moment)
29755}(this, (function (moment) { 'use strict';
29756
29757    //! moment.js locale configuration
29758
29759    var hyAm = moment.defineLocale('hy-am', {
29760        months: {
29761            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
29762                '_'
29763            ),
29764            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
29765                '_'
29766            ),
29767        },
29768        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
29769        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
29770            '_'
29771        ),
29772        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
29773        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
29774        longDateFormat: {
29775            LT: 'HH:mm',
29776            LTS: 'HH:mm:ss',
29777            L: 'DD.MM.YYYY',
29778            LL: 'D MMMM YYYY Õ©.',
29779            LLL: 'D MMMM YYYY Õ©., HH:mm',
29780            LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm',
29781        },
29782        calendar: {
29783            sameDay: '[այսօր] LT',
29784            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
29785            lastDay: '[երեկ] LT',
29786            nextWeek: function () {
29787                return 'dddd [օրը ժամը] LT';
29788            },
29789            lastWeek: function () {
29790                return '[անցած] dddd [օրը ժամը] LT';
29791            },
29792            sameElse: 'L',
29793        },
29794        relativeTime: {
29795            future: '%s Õ°Õ¥Õ¿Õ¸',
29796            past: '%s Õ¡Õ¼Õ¡Õ»',
29797            s: 'մի քանի վայրկյան',
29798            ss: '%d վայրկյան',
29799            m: 'րոպե',
29800            mm: '%d րոպե',
29801            h: 'ÕªÕ¡Õ´',
29802            hh: '%d ÕªÕ¡Õ´',
29803            d: 'օր',
29804            dd: '%d օր',
29805            M: 'Õ¡Õ´Õ«Õ½',
29806            MM: '%d Õ¡Õ´Õ«Õ½',
29807            y: 'տարի',
29808            yy: '%d տարի',
29809        },
29810        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
29811        isPM: function (input) {
29812            return /^(ցերեկվա|երեկոյան)$/.test(input);
29813        },
29814        meridiem: function (hour) {
29815            if (hour < 4) {
29816                return 'գիշերվա';
29817            } else if (hour < 12) {
29818                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
29819            } else if (hour < 17) {
29820                return 'ցերեկվա';
29821            } else {
29822                return 'երեկոյան';
29823            }
29824        },
29825        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
29826        ordinal: function (number, period) {
29827            switch (period) {
29828                case 'DDD':
29829                case 'w':
29830                case 'W':
29831                case 'DDDo':
29832                    if (number === 1) {
29833                        return number + '-Õ«Õ¶';
29834                    }
29835                    return number + '-րդ';
29836                default:
29837                    return number;
29838            }
29839        },
29840        week: {
29841            dow: 1, // Monday is the first day of the week.
29842            doy: 7, // The week that contains Jan 7th is the first week of the year.
29843        },
29844    });
29845
29846    return hyAm;
29847
29848})));
29849
29850
29851/***/ }),
29852/* 65 */
29853/***/ (function(module, exports, __webpack_require__) {
29854
29855//! moment.js locale configuration
29856//! locale : Indonesian [id]
29857//! author : Mohammad Satrio Utomo : https://github.com/tyok
29858//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
29859
29860;(function (global, factory) {
29861    true ? factory(__webpack_require__(0)) :
29862   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29863   factory(global.moment)
29864}(this, (function (moment) { 'use strict';
29865
29866    //! moment.js locale configuration
29867
29868    var id = moment.defineLocale('id', {
29869        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
29870            '_'
29871        ),
29872        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
29873        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
29874        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
29875        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
29876        longDateFormat: {
29877            LT: 'HH.mm',
29878            LTS: 'HH.mm.ss',
29879            L: 'DD/MM/YYYY',
29880            LL: 'D MMMM YYYY',
29881            LLL: 'D MMMM YYYY [pukul] HH.mm',
29882            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
29883        },
29884        meridiemParse: /pagi|siang|sore|malam/,
29885        meridiemHour: function (hour, meridiem) {
29886            if (hour === 12) {
29887                hour = 0;
29888            }
29889            if (meridiem === 'pagi') {
29890                return hour;
29891            } else if (meridiem === 'siang') {
29892                return hour >= 11 ? hour : hour + 12;
29893            } else if (meridiem === 'sore' || meridiem === 'malam') {
29894                return hour + 12;
29895            }
29896        },
29897        meridiem: function (hours, minutes, isLower) {
29898            if (hours < 11) {
29899                return 'pagi';
29900            } else if (hours < 15) {
29901                return 'siang';
29902            } else if (hours < 19) {
29903                return 'sore';
29904            } else {
29905                return 'malam';
29906            }
29907        },
29908        calendar: {
29909            sameDay: '[Hari ini pukul] LT',
29910            nextDay: '[Besok pukul] LT',
29911            nextWeek: 'dddd [pukul] LT',
29912            lastDay: '[Kemarin pukul] LT',
29913            lastWeek: 'dddd [lalu pukul] LT',
29914            sameElse: 'L',
29915        },
29916        relativeTime: {
29917            future: 'dalam %s',
29918            past: '%s yang lalu',
29919            s: 'beberapa detik',
29920            ss: '%d detik',
29921            m: 'semenit',
29922            mm: '%d menit',
29923            h: 'sejam',
29924            hh: '%d jam',
29925            d: 'sehari',
29926            dd: '%d hari',
29927            M: 'sebulan',
29928            MM: '%d bulan',
29929            y: 'setahun',
29930            yy: '%d tahun',
29931        },
29932        week: {
29933            dow: 0, // Sunday is the first day of the week.
29934            doy: 6, // The week that contains Jan 6th is the first week of the year.
29935        },
29936    });
29937
29938    return id;
29939
29940})));
29941
29942
29943/***/ }),
29944/* 66 */
29945/***/ (function(module, exports, __webpack_require__) {
29946
29947//! moment.js locale configuration
29948//! locale : Icelandic [is]
29949//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
29950
29951;(function (global, factory) {
29952    true ? factory(__webpack_require__(0)) :
29953   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
29954   factory(global.moment)
29955}(this, (function (moment) { 'use strict';
29956
29957    //! moment.js locale configuration
29958
29959    function plural(n) {
29960        if (n % 100 === 11) {
29961            return true;
29962        } else if (n % 10 === 1) {
29963            return false;
vendor: 4,823 bytes, lines 29964-30103
29964        }
29965        return true;
29966    }
29967    function translate(number, withoutSuffix, key, isFuture) {
29968        var result = number + ' ';
29969        switch (key) {
29970            case 's':
29971                return withoutSuffix || isFuture
29972                    ? 'nokkrar sekúndur'
29973                    : 'nokkrum sekúndum';
29974            case 'ss':
29975                if (plural(number)) {
29976                    return (
29977                        result +
29978                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
29979                    );
29980                }
29981                return result + 'sekúnda';
29982            case 'm':
29983                return withoutSuffix ? 'mínúta' : 'mínútu';
29984            case 'mm':
29985                if (plural(number)) {
29986                    return (
29987                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
29988                    );
29989                } else if (withoutSuffix) {
29990                    return result + 'mínúta';
29991                }
29992                return result + 'mínútu';
29993            case 'hh':
29994                if (plural(number)) {
29995                    return (
29996                        result +
29997                        (withoutSuffix || isFuture
29998                            ? 'klukkustundir'
29999                            : 'klukkustundum')
30000                    );
30001                }
30002                return result + 'klukkustund';
30003            case 'd':
30004                if (withoutSuffix) {
30005                    return 'dagur';
30006                }
30007                return isFuture ? 'dag' : 'degi';
30008            case 'dd':
30009                if (plural(number)) {
30010                    if (withoutSuffix) {
30011                        return result + 'dagar';
30012                    }
30013                    return result + (isFuture ? 'daga' : 'dögum');
30014                } else if (withoutSuffix) {
30015                    return result + 'dagur';
30016                }
30017                return result + (isFuture ? 'dag' : 'degi');
30018            case 'M':
30019                if (withoutSuffix) {
30020                    return 'mánuður';
30021                }
30022                return isFuture ? 'mánuð' : 'mánuði';
30023            case 'MM':
30024                if (plural(number)) {
30025                    if (withoutSuffix) {
30026                        return result + 'mánuðir';
30027                    }
30028                    return result + (isFuture ? 'mánuði' : 'mánuðum');
30029                } else if (withoutSuffix) {
30030                    return result + 'mánuður';
30031                }
30032                return result + (isFuture ? 'mánuð' : 'mánuði');
30033            case 'y':
30034                return withoutSuffix || isFuture ? 'ár' : 'ári';
30035            case 'yy':
30036                if (plural(number)) {
30037                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
30038                }
30039                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
30040        }
30041    }
30042
30043    var is = moment.defineLocale('is', {
30044        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
30045            '_'
30046        ),
30047        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
30048        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
30049            '_'
30050        ),
30051        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
30052        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
30053        longDateFormat: {
30054            LT: 'H:mm',
30055            LTS: 'H:mm:ss',
30056            L: 'DD.MM.YYYY',
30057            LL: 'D. MMMM YYYY',
30058            LLL: 'D. MMMM YYYY [kl.] H:mm',
30059            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
30060        },
30061        calendar: {
30062            sameDay: '[í dag kl.] LT',
30063            nextDay: '[á morgun kl.] LT',
30064            nextWeek: 'dddd [kl.] LT',
30065            lastDay: '[í gær kl.] LT',
30066            lastWeek: '[síðasta] dddd [kl.] LT',
30067            sameElse: 'L',
30068        },
30069        relativeTime: {
30070            future: 'eftir %s',
30071            past: 'fyrir %s síðan',
30072            s: translate,
30073            ss: translate,
30074            m: translate,
30075            mm: translate,
30076            h: 'klukkustund',
30077            hh: translate,
30078            d: translate,
30079            dd: translate,
30080            M: translate,
30081            MM: translate,
30082            y: translate,
30083            yy: translate,
30084        },
30085        dayOfMonthOrdinalParse: /\d{1,2}\./,
30086        ordinal: '%d.',
30087        week: {
30088            dow: 1, // Monday is the first day of the week.
30089            doy: 4, // The week that contains Jan 4th is the first week of the year.
30090        },
30091    });
30092
30093    return is;
30094
30095})));
30096
30097
30098/***/ }),
30099/* 67 */
30100/***/ (function(module, exports, __webpack_require__) {
30101
30102//! moment.js locale configuration
30103//! locale : Italian [it]
30104//! author : Lorenzo : https://github.com/aliem
30105//! author: Mattia Larentis: https://github.com/nostalgiaz
30106//! author: Marco : https://github.com/Manfre98
30107
30108;(function (global, factory) {
30109    true ? factory(__webpack_require__(0)) :
30110   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30111   factory(global.moment)
30112}(this, (function (moment) { 'use strict';
30113
30114    //! moment.js locale configuration
30115
30116    var it = moment.defineLocale('it', {
30117        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
30118            '_'
30119        ),
30120        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
30121        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
30122            '_'
30123        ),
30124        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
30125        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
30126        longDateFormat: {
30127            LT: 'HH:mm',
30128            LTS: 'HH:mm:ss',
30129            L: 'DD/MM/YYYY',
30130            LL: 'D MMMM YYYY',
30131            LLL: 'D MMMM YYYY HH:mm',
30132            LLLL: 'dddd D MMMM YYYY HH:mm',
30133        },
30134        calendar: {
30135            sameDay: function () {
30136                return (
30137                    '[Oggi a' +
30138                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30139                    ']LT'
30140                );
30141            },
30142            nextDay: function () {
30143                return (
30144                    '[Domani a' +
30145                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30146                    ']LT'
30147                );
30148            },
30149            nextWeek: function () {
30150                return (
30151                    'dddd [a' +
30152                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30153                    ']LT'
30154                );
30155            },
30156            lastDay: function () {
30157                return (
30158                    '[Ieri a' +
30159                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
30160                    ']LT'
30161                );
30162            },
30163            lastWeek: function () {
30164                switch (this.day()) {
30165                    case 0:
30166                        return (
30167                            '[La scorsa] dddd [a' +
30168                            (this.hours() > 1
30169                                ? 'lle '
30170                                : this.hours() === 0
30171                                ? ' '
30172                                : "ll'") +
30173                            ']LT'
30174                        );
30175                    default:
30176                        return (
30177                            '[Lo scorso] dddd [a' +
30178                            (this.hours() > 1
30179                                ? 'lle '
30180                                : this.hours() === 0
30181                                ? ' '
30182                                : "ll'") +
30183                            ']LT'
30184                        );
30185                }
30186            },
30187            sameElse: 'L',
30188        },
30189        relativeTime: {
30190            future: 'tra %s',
30191            past: '%s fa',
30192            s: 'alcuni secondi',
30193            ss: '%d secondi',
30194            m: 'un minuto',
30195            mm: '%d minuti',
30196            h: "un'ora",
30197            hh: '%d ore',
30198            d: 'un giorno',
30199            dd: '%d giorni',
30200            w: 'una settimana',
30201            ww: '%d settimane',
30202            M: 'un mese',
30203            MM: '%d mesi',
30204            y: 'un anno',
30205            yy: '%d anni',
30206        },
30207        dayOfMonthOrdinalParse: /\d{1,2}º/,
30208        ordinal: '%dº',
30209        week: {
30210            dow: 1, // Monday is the first day of the week.
30211            doy: 4, // The week that contains Jan 4th is the first week of the year.
30212        },
30213    });
30214
30215    return it;
30216
30217})));
30218
30219
30220/***/ }),
30221/* 68 */
30222/***/ (function(module, exports, __webpack_require__) {
30223
30224//! moment.js locale configuration
30225//! locale : Italian (Switzerland) [it-ch]
30226//! author : xfh : https://github.com/xfh
30227
30228;(function (global, factory) {
30229    true ? factory(__webpack_require__(0)) :
30230   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30231   factory(global.moment)
30232}(this, (function (moment) { 'use strict';
30233
30234    //! moment.js locale configuration
30235
30236    var itCh = moment.defineLocale('it-ch', {
30237        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
30238            '_'
30239        ),
30240        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
30241        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
30242            '_'
30243        ),
30244        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
30245        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
30246        longDateFormat: {
30247            LT: 'HH:mm',
30248            LTS: 'HH:mm:ss',
30249            L: 'DD.MM.YYYY',
30250            LL: 'D MMMM YYYY',
30251            LLL: 'D MMMM YYYY HH:mm',
30252            LLLL: 'dddd D MMMM YYYY HH:mm',
30253        },
30254        calendar: {
30255            sameDay: '[Oggi alle] LT',
30256            nextDay: '[Domani alle] LT',
30257            nextWeek: 'dddd [alle] LT',
30258            lastDay: '[Ieri alle] LT',
30259            lastWeek: function () {
30260                switch (this.day()) {
30261                    case 0:
30262                        return '[la scorsa] dddd [alle] LT';
30263                    default:
30264                        return '[lo scorso] dddd [alle] LT';
30265                }
30266            },
30267            sameElse: 'L',
30268        },
30269        relativeTime: {
30270            future: function (s) {
30271                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
30272            },
30273            past: '%s fa',
30274            s: 'alcuni secondi',
30275            ss: '%d secondi',
30276            m: 'un minuto',
30277            mm: '%d minuti',
30278            h: "un'ora",
30279            hh: '%d ore',
30280            d: 'un giorno',
30281            dd: '%d giorni',
30282            M: 'un mese',
30283            MM: '%d mesi',
30284            y: 'un anno',
30285            yy: '%d anni',
30286        },
30287        dayOfMonthOrdinalParse: /\d{1,2}º/,
30288        ordinal: '%dº',
30289        week: {
30290            dow: 1, // Monday is the first day of the week.
30291            doy: 4, // The week that contains Jan 4th is the first week of the year.
30292        },
30293    });
30294
30295    return itCh;
30296
30297})));
30298
30299
30300/***/ }),
30301/* 69 */
30302/***/ (function(module, exports, __webpack_require__) {
30303
30304//! moment.js locale configuration
vendor: 4,468 bytes, lines 30305-30446
30305//! locale : Japanese [ja]
30306//! author : LI Long : https://github.com/baryon
30307
30308;(function (global, factory) {
30309    true ? factory(__webpack_require__(0)) :
30310   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30311   factory(global.moment)
30312}(this, (function (moment) { 'use strict';
30313
30314    //! moment.js locale configuration
30315
30316    var ja = moment.defineLocale('ja', {
30317        eras: [
30318            {
30319                since: '2019-05-01',
30320                offset: 1,
30321                name: '令和',
30322                narrow: '㋿',
30323                abbr: 'R',
30324            },
30325            {
30326                since: '1989-01-08',
30327                until: '2019-04-30',
30328                offset: 1,
30329                name: '平成',
30330                narrow: '㍻',
30331                abbr: 'H',
30332            },
30333            {
30334                since: '1926-12-25',
30335                until: '1989-01-07',
30336                offset: 1,
30337                name: '昭和',
30338                narrow: '㍼',
30339                abbr: 'S',
30340            },
30341            {
30342                since: '1912-07-30',
30343                until: '1926-12-24',
30344                offset: 1,
30345                name: '大正',
30346                narrow: '㍽',
30347                abbr: 'T',
30348            },
30349            {
30350                since: '1873-01-01',
30351                until: '1912-07-29',
30352                offset: 6,
30353                name: '明治',
30354                narrow: '㍾',
30355                abbr: 'M',
30356            },
30357            {
30358                since: '0001-01-01',
30359                until: '1873-12-31',
30360                offset: 1,
30361                name: '西暦',
30362                narrow: 'AD',
30363                abbr: 'AD',
30364            },
30365            {
30366                since: '0000-12-31',
30367                until: -Infinity,
30368                offset: 1,
30369                name: '紀元前',
30370                narrow: 'BC',
30371                abbr: 'BC',
30372            },
30373        ],
30374        eraYearOrdinalRegex: /(元|\d+)年/,
30375        eraYearOrdinalParse: function (input, match) {
30376            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
30377        },
30378        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
30379        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
30380            '_'
30381        ),
30382        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
30383        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
30384        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
30385        longDateFormat: {
30386            LT: 'HH:mm',
30387            LTS: 'HH:mm:ss',
30388            L: 'YYYY/MM/DD',
30389            LL: 'YYYY年M月D日',
30390            LLL: 'YYYY年M月D日 HH:mm',
30391            LLLL: 'YYYY年M月D日 dddd HH:mm',
30392            l: 'YYYY/MM/DD',
30393            ll: 'YYYY年M月D日',
30394            lll: 'YYYY年M月D日 HH:mm',
30395            llll: 'YYYY年M月D日(ddd) HH:mm',
30396        },
30397        meridiemParse: /午前|午後/i,
30398        isPM: function (input) {
30399            return input === '午後';
30400        },
30401        meridiem: function (hour, minute, isLower) {
30402            if (hour < 12) {
30403                return '午前';
30404            } else {
30405                return '午後';
30406            }
30407        },
30408        calendar: {
30409            sameDay: '[今日] LT',
30410            nextDay: '[明日] LT',
30411            nextWeek: function (now) {
30412                if (now.week() !== this.week()) {
30413                    return '[来週]dddd LT';
30414                } else {
30415                    return 'dddd LT';
30416                }
30417            },
30418            lastDay: '[昨日] LT',
30419            lastWeek: function (now) {
30420                if (this.week() !== now.week()) {
30421                    return '[先週]dddd LT';
30422                } else {
30423                    return 'dddd LT';
30424                }
30425            },
30426            sameElse: 'L',
30427        },
30428        dayOfMonthOrdinalParse: /\d{1,2}日/,
30429        ordinal: function (number, period) {
30430            switch (period) {
30431                case 'y':
30432                    return number === 1 ? '元年' : number + '年';
30433                case 'd':
30434                case 'D':
30435                case 'DDD':
30436                    return number + '日';
30437                default:
30438                    return number;
30439            }
30440        },
30441        relativeTime: {
30442            future: '%s後',
30443            past: '%s前',
30444            s: '数秒',
30445            ss: '%d秒',
30446            m: '1分',
30447            mm: '%d分',
30448            h: '1時間',
30449            hh: '%d時間',
30450            d: '1日',
30451            dd: '%d日',
30452            M: '1ヶ月',
30453            MM: '%dヶ月',
30454            y: '1å¹´',
30455            yy: '%då¹´',
30456        },
30457    });
30458
30459    return ja;
30460
30461})));
30462
30463
30464/***/ }),
30465/* 70 */
30466/***/ (function(module, exports, __webpack_require__) {
30467
30468//! moment.js locale configuration
30469//! locale : Javanese [jv]
30470//! author : Rony Lantip : https://github.com/lantip
30471//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
30472
30473;(function (global, factory) {
30474    true ? factory(__webpack_require__(0)) :
30475   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30476   factory(global.moment)
30477}(this, (function (moment) { 'use strict';
30478
30479    //! moment.js locale configuration
30480
30481    var jv = moment.defineLocale('jv', {
30482        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
30483            '_'
30484        ),
30485        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
30486        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
30487        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
30488        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
30489        longDateFormat: {
30490            LT: 'HH.mm',
30491            LTS: 'HH.mm.ss',
30492            L: 'DD/MM/YYYY',
30493            LL: 'D MMMM YYYY',
30494            LLL: 'D MMMM YYYY [pukul] HH.mm',
30495            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
30496        },
30497        meridiemParse: /enjing|siyang|sonten|ndalu/,
30498        meridiemHour: function (hour, meridiem) {
30499            if (hour === 12) {
30500                hour = 0;
30501            }
30502            if (meridiem === 'enjing') {
30503                return hour;
30504            } else if (meridiem === 'siyang') {
30505                return hour >= 11 ? hour : hour + 12;
30506            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
30507                return hour + 12;
30508            }
30509        },
30510        meridiem: function (hours, minutes, isLower) {
30511            if (hours < 11) {
30512                return 'enjing';
30513            } else if (hours < 15) {
30514                return 'siyang';
30515            } else if (hours < 19) {
30516                return 'sonten';
30517            } else {
30518                return 'ndalu';
30519            }
30520        },
30521        calendar: {
30522            sameDay: '[Dinten puniko pukul] LT',
30523            nextDay: '[Mbenjang pukul] LT',
30524            nextWeek: 'dddd [pukul] LT',
30525            lastDay: '[Kala wingi pukul] LT',
30526            lastWeek: 'dddd [kepengker pukul] LT',
30527            sameElse: 'L',
30528        },
30529        relativeTime: {
30530            future: 'wonten ing %s',
30531            past: '%s ingkang kepengker',
30532            s: 'sawetawis detik',
30533            ss: '%d detik',
30534            m: 'setunggal menit',
30535            mm: '%d menit',
30536            h: 'setunggal jam',
30537            hh: '%d jam',
30538            d: 'sedinten',
30539            dd: '%d dinten',
30540            M: 'sewulan',
30541            MM: '%d wulan',
30542            y: 'setaun',
30543            yy: '%d taun',
30544        },
30545        week: {
30546            dow: 1, // Monday is the first day of the week.
30547            doy: 7, // The week that contains Jan 7th is the first week of the year.
30548        },
30549    });
30550
30551    return jv;
30552
30553})));
30554
30555
30556/***/ }),
30557/* 71 */
30558/***/ (function(module, exports, __webpack_require__) {
30559
30560//! moment.js locale configuration
30561//! locale : Georgian [ka]
30562//! author : Irakli Janiashvili : https://github.com/IrakliJani
30563
30564;(function (global, factory) {
30565    true ? factory(__webpack_require__(0)) :
30566   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30567   factory(global.moment)
30568}(this, (function (moment) { 'use strict';
30569
30570    //! moment.js locale configuration
30571
30572    var ka = moment.defineLocale('ka', {
30573        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
30574            '_'
30575        ),
30576        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
30577        weekdays: {
30578            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.
30578split(
30579                '_'
30580            ),
30581            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
30582                '_'
30583            ),
30584            isFormat: /(წინა|შემდეგ)/,
30585        },
30586        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
30587        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
30588        longDateFormat: {
30589            LT: 'HH:mm',
30590            LTS: 'HH:mm:ss',
30591            L: 'DD/MM/YYYY',
30592            LL: 'D MMMM YYYY',
30593            LLL: 'D MMMM YYYY HH:mm',
30594            LLLL: 'dddd, D MMMM YYYY HH:mm',
30595        },
30596        calendar: {
30597            sameDay: '[დღეს] LT[-ზე]',
30598            nextDay: '[ხვალ] LT[-ზე]',
30599            lastDay: '[გუშინ] LT[-ზე]',
30600            nextWeek: '[შემდეგ] dddd LT[-ზე]',
30601            lastWeek: '[წინა] dddd LT-ზე',
30602            sameElse: 'L',
30603        },
30604        relativeTime: {
30605            future: function (s) {
30606                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (
30607                    $0,
30608                    $1,
30609                    $2
30610                ) {
30611                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
30612                });
30613            },
30614            past: function (s) {
30615                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
30616                    return s.replace(/(ი|ე)$/, 'ის წინ');
30617                }
30618                if (/წელი/.test(s)) {
30619                    return s.replace(/წელი$/, 'წლის წინ');
30620                }
30621                return s;
30622            },
30623            s: 'რამდენიმე წამი',
30624            ss: '%d წამი',
30625            m: 'წუთი',
30626            mm: '%d წუთი',
30627            h: 'საათი',
30628            hh: '%d საათი',
30629            d: 'დღე',
30630            dd: '%d დღე',
30631            M: 'თვე',
30632            MM: '%d თვე',
30633            y: 'წელი',
30634            yy: '%d წელი',
30635        },
30636        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
30637        ordinal: function (number) {
30638            if (number === 0) {
30639                return number;
30640            }
30641            if (number === 1) {
30642                return number + '-ლი';
30643            }
30644            if (
30645                number < 20 ||
30646                (number <= 100 && number % 20 === 0) ||
30647                number % 100 === 0
30648            ) {
30649                return 'მე-' + number;
30650            }
30651            return number + '-ე';
30652        },
30653        week: {
30654            dow: 1,
30655            doy: 7,
30656        },
30657    });
30658
30659    return ka;
30660
30661})));
30662
30663
30664/***/ }),
30665/* 72 */
30666/***/ (function(module, exports, __webpack_require__) {
30667
30668//! moment.js locale configuration
30669//! locale : Kazakh [kk]
30670//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
30671
30672;(function (global, factory) {
30673    true ? factory(__webpack_require__(0)) :
30674   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30675   factory(global.moment)
30676}(this, (function (moment) { 'use strict';
30677
30678    //! moment.js locale configuration
30679
30680    var suffixes = {
30681        0: '-ші',
30682        1: '-ші',
30683        2: '-ші',
30684        3: '-ші',
30685        4: '-ші',
30686        5: '-ші',
30687        6: '-шы',
30688        7: '-ші',
30689        8: '-ші',
30690        9: '-шы',
30691        10: '-шы',
30692        20: '-шы',
30693        30: '-шы',
30694        40: '-шы',
30695        50: '-ші',
30696        60: '-шы',
30697        70: '-ші',
30698        80: '-ші',
30699        90: '-шы',
30700        100: '-ші',
30701    };
30702
30703    var kk = moment.defineLocale('kk', {
30704        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
30705            '_'
30706        ),
30707        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
30708        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
30709            '_'
30710        ),
30711        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
30712        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
30713        longDateFormat: {
30714            LT: 'HH:mm',
30715            LTS: 'HH:mm:ss',
30716            L: 'DD.MM.YYYY',
30717            LL: 'D MMMM YYYY',
30718            LLL: 'D MMMM YYYY HH:mm',
30719            LLLL: 'dddd, D MMMM YYYY HH:mm',
30720        },
30721        calendar: {
30722            sameDay: '[Бүгін сағат] LT',
30723            nextDay: '[Ертең сағат] LT',
30724            nextWeek: 'dddd [сағат] LT',
30725            lastDay: '[Кеше сағат] LT',
30726            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
30727            sameElse: 'L',
30728        },
30729        relativeTime: {
30730            future: '%s ішінде',
30731            past: '%s бұрын',
30732            s: 'бірнеше секунд',
30733            ss: '%d секунд',
30734            m: 'бір минут',
30735            mm: '%d минут',
30736            h: 'бір сағат',
30737            hh: '%d сағат',
30738            d: 'бір күн',
30739            dd: '%d күн',
30740            M: 'бір ай',
30741            MM: '%d ай',
30742            y: 'бір жыл',
30743            yy: '%d жыл',
30744        },
30745        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
30746        ordinal: function (number) {
30747            var a = number % 10,
30748                b = number >= 100 ? 100 : null;
30749            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
30750        },
30751        week: {
30752            dow: 1, // Monday is the first day of the week.
30753            doy: 7, // The week that contains Jan 7th is the first week of the year.
30754        },
30755    });
30756
30757    return kk;
30758
30759})));
30760
30761
30762/***/ }),
30763/* 73 */
30764/***/ (function(module, exports, __webpack_require__) {
30765
30766//! moment.js locale configuration
30767//! locale : Cambodian [km]
30768//! author : Kruy Vanna : https://github.com/kruyvanna
30769
30770;(function (global, factory) {
30771    true ? factory(__webpack_require__(0)) :
30772   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30773   factory(global.moment)
30774}(this, (function (moment) { 'use strict';
30775
30776    //! moment.js locale configuration
30777
30778    var symbolMap = {
30779            1: '១',
30780            2: '២',
30781            3: '៣',
30782            4: '៤',
30783            5: '៥',
30784            6: '៦',
30785            7: '៧',
30786            8: '៨',
30787            9: '៩',
30788            0: '០',
30789        },
30790        numberMap = {
30791            '១': '1',
30792            '២': '2',
30793            '៣': '3',
30794            '៤': '4',
30795            '៥': '5',
30796            '៦': '6',
30797            '៧': '7',
30798            '៨': '8',
30799            '៩': '9',
30800            '០': '0',
30801        };
30802
30803    var km = moment.defineLocale('km', {
30804        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
30805            '_'
30806        ),
30807        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
30808            '_'
30809        ),
30810        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
30811        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
30812        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
30813        weekdaysParseExact: true,
30814        longDateFormat: {
30815            LT: 'HH:mm',
30816            LTS: 'HH:mm:ss',
30817            L: 'DD/MM/YYYY',
30818            LL: 'D MMMM YYYY',
30819            LLL: 'D MMMM YYYY HH:mm',
30820            LLLL: 'dddd, D MMMM YYYY HH:mm',
30821        },
30822        meridiemParse: /ព្រឹក|ល្ងាច/,
30823        isPM: function (input) {
30824            return input === 'ល្ងាច';
30825        },
30826        meridiem: function (hour, minute, isLower) {
30827            if (hour < 12) {
30828                return 'ព្រឹក';
30829            } else {
30830                return 'ល្ងាច';
30831            }
30832        },
30833        calendar: {
30834            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
30835            nextDay: '[ស្អែក ម៉ោង] LT',
30836            nextWeek: 'dddd [ម៉ោង] LT',
30837            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
30838            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
30839            sameElse: 'L',
30840        },
30841        relativeTime: {
30842            future: '%sទៀត',
30843            past: '%sមុន',
30844            s: 'ប៉ុន្មានវិនាទី',
30845            ss: '%d វិនាទី',
30846            m: 'មួយនាទី',
30847            mm: '%d នាទី',
30848            h: 'មួយម៉ោង',
30849            hh: '%d ម៉ោង',
30850            d: 'មួយថ្ងៃ',
30851            dd: '%d ថ្ងៃ',
30852            M: 'មួយខែ',
30853            MM: '%d ខែ',
30854            y: 'មួយឆ្នាំ',
30855            yy: '%d ឆ្នាំ',
30856        },
30857        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
30858        ordinal: 'ទី%d',
30859        preparse: function (string) {
30860            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
30861                return numberMap[match];
30862            });
30863        },
30864        postformat: function (string) {
30865            return string.replace(/\d/g, function (match) {
30866                return symbolMap[match];
30867            });
30868        },
30869        week: {
30870            dow: 1, // Monday is the first day of the week.
30871            doy: 4, // The week that contains Jan 4th is the first week of the year.
30872        },
30873    });
30874
30875    return km;
30876
30877})));
30878
30879
30880/***/ }),
30881/* 74 */
30882/***/ (function(module, exports, __webpack_require__) {
30883
30884//! moment.js locale configuration
30885//! locale : Kannada [kn]
30886//! author : Rajeev Naik : https://github.com/rajeevnaikte
30887
30888;(function (global, factory) {
30889    true ? factory(__webpack_require__(0)) :
30890   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
30891   factory(global.moment)
30892}(this, (function (moment) { 'use strict';
30893
30894    //! moment.js locale configuration
30895
30896    var symbolMap = {
30897            1: 'à³§',
30898            2: '೨',
30899            3: '೩',
30900            4: '೪',
30901            5: '೫',
30902            6: '೬',
30903            7: 'à³­',
30904            8: 'à³®',
30905            9: '೯',
30906            0: '೦',
30907        },
30908        numberMap = {
30909            'à³§': '1',
30910            '೨': '2',
30911            '೩': '3',
30912            '೪': '4',
30913            '೫': '5',
30914            '೬': '6',
30915            'à³­': '7',
30916            'à³®': '8',
30917            '೯': '9',
30918            '೦': '0',
30919        };
30920
30921    var kn = moment.defineLocale('kn', {
30922        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
30923            '_'
30924        ),
30925        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
30926            '_'
30927        ),
30928        monthsParseExact: true,
30929        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
30930            '_'
30931        ),
30932        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
30933        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
30934        longDateFormat: {
30935            LT: 'A h:mm',
30936            LTS: 'A h:mm:ss',
30937            L: 'DD/MM/YYYY',
30938            LL: 'D MMMM YYYY',
30939            LLL: 'D MMMM YYYY, A h:mm',
30940            LLLL: 'dddd, D MMMM YYYY, A h:mm',
30941        },
30942        calendar: {
30943            sameDay: '[ಇಂದು] LT',
30944            nextDay: '[ನಾಳೆ] LT',
30945            nextWeek: 'dddd, LT',
30946            lastDay: '[ನಿನ್ನೆ] LT',
30947            lastWeek: '[ಕೊನೆಯ] dddd, LT',
30948            sameElse: 'L',
30949        },
30950        relativeTime: {
30951            future: '%s ನಂತರ',
30952            past: '%s ಹಿಂದೆ',
30953            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
30954            ss: '%d ಸೆಕೆಂಡುಗಳು',
30955            m: 'ಒಂದು ನಿಮಿಷ',
30956            mm: '%d ನಿಮಿಷ',
30957            h: 'ಒಂದು ಗಂಟೆ',
30958            hh: '%d ಗಂಟೆ',
30959            d: 'ಒಂದು ದಿನ',
30960            dd: '%d ದಿನ',
30961            M: 'ಒಂದು ತಿಂಗಳು',
30962            MM: '%d ತಿಂಗಳು',
30963            y: 'ಒಂದು ವರ್ಷ',
30964            yy: '%d ವರ್ಷ',
30965        },
30966        preparse: function (string) {
30967            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
30968                return numberMap[match];
30969            });
30970        },
30971        postformat: function (string) {
30972            return string.replace(/\d/g, function (match) {
30973                return symbolMap[match];
30974            });
30975        },
30976        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
30977        meridiemHour: function (hour, meridiem) {
30978            if (hour === 12) {
30979                hour = 0;
30980            }
30981            if (meridiem === 'ರಾತ್ರಿ') {
30982                return hour < 4 ? hour : hour + 12;
30983            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
30984                return hour;
30985            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
30986                return hour >= 10 ? hour : hour + 12;
30987            } else if (meridiem === 'ಸಂಜೆ') {
30988                return hour + 12;
30989            }
30990        },
30991        meridiem: function (hour, minute, isLower) {
30992            if (hour < 4) {
30993                return 'ರಾತ್ರಿ';
30994            } else if (hour < 10) {
30995                return 'ಬೆಳಿಗ್ಗೆ';
30996            } else if (hour < 17) {
30997                return 'ಮಧ್ಯಾಹ್ನ';
30998            } else if (hour < 20) {
30999                return 'ಸಂಜೆ';
31000            } else {
31001                return 'ರಾತ್ರಿ';
31002            }
31003        },
31004        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
31005        ordinal: function (number) {
31006            return number + 'ನೇ';
31007        },
31008        week: {
31009            dow: 0, // Sunday is the first day of the week.
31010            doy: 6, // The week that contains Jan 6th is the first week of the year.
31011        },
31012    });
31013
31014    return kn;
31015
31016})));
31017
31018
31019/***/ }),
31020/* 75 */
31021/***/ (function(module, exports, __webpack_require__) {
31022
31023//! moment.js locale configuration
31024//! locale : Korean [ko]
31025//! author : Kyungwook, Park : https://github.com/kyungw00k
31026//! author : Jeeeyul Lee <[email protected]>
31027
31028;(function (global, factory) {
31029    true ? factory(__webpack_require__(0)) :
31030   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31031   factory(global.moment)
31032}(this, (function (moment) { 'use strict';
31033
31034    //! moment.js locale configuration
31035
31036    var ko = moment.defineLocale('ko', {
31037        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
31038        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
31039            '_'
31040        ),
31041        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
31042        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
31043        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
31044        longDateFormat: {
31045            LT: 'A h:mm',
31046            LTS: 'A h:mm:ss',
31047            L: 'YYYY.MM.DD.',
31048            LL: 'YYYY년 MMMM D일',
31049            LLL: 'YYYY년 MMMM D일 A h:mm',
31050            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
31051            l: 'YYYY.MM.DD.',
31052            ll: 'YYYY년 MMMM D일',
31053            lll: 'YYYY년 MMMM D일 A h:mm',
31054            llll: 'YYYY년 MMMM D일 dddd A h:mm',
31055        },
31056        calendar: {
31057            sameDay: '오늘 LT',
31058            nextDay: '내일 LT',
31059            nextWeek: 'dddd LT',
31060            lastDay: '어제 LT',
31061            lastWeek: '지난주 dddd LT',
31062            sameElse: 'L',
31063        },
31064        relativeTime: {
31065            future: '%s 후',
31066            past: '%s 전',
31067            s: '몇 초',
31068            ss: '%d초',
31069            m: '1분',
31070            mm: '%d분',
31071            h: '한 시간',
31072            hh: '%d시간',
31073            d: '하루',
31074            dd: '%d일',
31075            M: '한 달',
31076            MM: '%d달',
31077            y: '일 년',
31078            yy: '%d년',
31079        },
31080        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
31081        ordinal: function (number, period) {
31082            switch (period) {
31083                case 'd':
31084                case 'D':
31085                case 'DDD':
31086                    return number + '일';
31087                case 'M':
31088                    return number + '월';
31089                case 'w':
31090                case 'W':
31091                    return number + '주';
31092                default:
31093                    return number;
31094            }
31095        },
31096        meridiemParse: /오전|오후/,
31097        isPM: function (token) {
31098            return token === '오후';
31099        },
31100        meridiem: function (hour, minute, isUpper) {
31101            return hour < 12 ? '오전' : '오후';
31102        },
31103    });
31104
31105    return ko;
31106
31107})));
31108
31109
31110/***/ }),
31111/* 76 */
31112/***/ (function(module, exports, __webpack_require__) {
31113
31114//! moment.js locale configuration
31115//! locale : Kurdish [ku]
31116//! author : Shahram Mebashar : https://github.com/ShahramMebashar
31117
31118;(function (global, factory) {
31119    true ? factory(__webpack_require__(0)) :
31120   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31121   factory(global.moment)
31122}(this, (function (moment) { 'use strict';
31123
31124    //! moment.js locale configuration
31125
31126    var symbolMap = {
31127            1: 'Ù¡',
31128            2: 'Ù¢',
31129            3: 'Ù£',
31130            4: 'Ù¤',
31131            5: 'Ù¥',
31132            6: 'Ù¦',
31133            7: 'Ù§',
31134            8: 'Ù¨',
31135            9: 'Ù©',
31136            0: 'Ù ',
31137        },
31138        numberMap = {
31139            'Ù¡': '1',
31140            'Ù¢': '2',
31141            'Ù£': '3',
31142            'Ù¤': '4',
31143            'Ù¥': '5',
31144            'Ù¦': '6',
31145            'Ù§': '7',
31146            'Ù¨': '8',
31147            'Ù©': '9',
31148            'Ù ': '0',
31149        },
31150        months = [
31151            'کانونی دووەم',
31152            'شوبات',
31153            'ئازار',
31154            'نیسان',
31155            'ئایار',
31156            'حوزەیران',
31157            'تەمموز',
31158            'ئاب',
31159            'ئەیلوول',
31160            'تشرینی یەكەم',
31161            'تشرینی دووەم',
31162            'كانونی یەکەم',
31163        ];
31164
31165    var ku = moment.defineLocale('ku', {
31166        months: months,
31167        monthsShort: months,
31168        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
31169            '_'
31170        ),
31171        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(
31172            '_'
31173        ),
31174        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
31175        weekdaysParseExact: true,
31176        longDateFormat: {
31177            LT: 'HH:mm',
31178            LTS: 'HH:mm:ss',
31179            L: 'DD/MM/YYYY',
31180            LL: 'D MMMM YYYY',
31181            LLL: 'D MMMM YYYY HH:mm',
31182            LLLL: 'dddd, D MMMM YYYY HH:mm',
31183        },
31184        meridiemParse: /ئێواره‌|به‌یانی/,
31185        isPM: function (input) {
31186            return /ئێواره‌/.test(input);
31187        },
31188        meridiem: function (hour, minute, isLower) {
31189            if (hour < 12) {
31190                return 'به‌یانی';
31191            } else {
31192                return 'ئێواره‌';
31193            }
31194        },
31195        calendar: {
31196            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
31197            nextDay: '[به‌یانی كاتژمێر] LT',
31198            nextWeek: 'dddd [كاتژمێر] LT',
31199            lastDay: '[دوێنێ كاتژمێر] LT',
31200            lastWeek: 'dddd [كاتژمێر] LT',
31201            sameElse: 'L',
31202        },
31203        relativeTime: {
31204            future: 'له‌ %s',
31205            past: '%s',
31206            s: 'چه‌ند چركه‌یه‌ك',
31207            ss: 'چركه‌ %d',
31208            m: 'یه‌ك خوله‌ك',
31209            mm: '%d خوله‌ك',
31210            h: 'یه‌ك كاتژمێر',
31211            hh: '%d كاتژمێر',
31212            d: 'یه‌ك ڕۆژ',
31213            dd: '%d ڕۆژ',
31214            M: 'یه‌ك مانگ',
31215            MM: '%d مانگ',
31216            y: 'یه‌ك ساڵ',
31217            yy: '%d ساڵ',
31218        },
31219        preparse: function (string) {
31220            return string
31221                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
31222                    return numberMap[match];
31223                })
31224                .replace(/،/g, ',');
31225        },
31226        postformat: function (string) {
31227            return string
31228                .replace(/\d/g, function (match) {
31229                    return symbolMap[match];
31230                })
31231                .replace(/,/g, '،');
31232        },
31233        week: {
31234            dow: 6, // Saturday is the first day of the week.
31235            doy: 12, // The week that contains Jan 12th is the first week of the year.
31236        },
31237    });
31238
31239    return ku;
31240
31241})));
31242
31243
31244/***/ }),
31245/* 77 */
31246/***/ (function(module, exports, __webpack_require__) {
31247
31248//! moment.js locale configuration
31249//! locale : Kyrgyz [ky]
31250//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
31251
31252;(function (global, factory) {
31253    true ? factory(__webpack_require__(0)) :
31254   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31255   factory(global.moment)
31256}(this, (function (moment) { 'use strict';
31257
31258    //! moment.js locale configuration
31259
31260    var suffixes = {
31261        0: '-чү',
31262        1: '-чи',
31263        2: '-чи',
31264        3: '-чү',
31265        4: '-чү',
31266        5: '-чи',
31267        6: '-чы',
31268        7: '-чи',
31269        8: '-чи',
31270        9: '-чу',
31271        10: '-чу',
31272        20: '-чы',
31273        30: '-чу',
31274        40: '-чы',
31275        50: '-чү',
31276        60: '-чы',
31277        70: '-чи',
31278        80: '-чи',
31279        90: '-чу',
31280        100: '-чү',
31281    };
31282
31283    var ky = moment.defineLocale('ky', {
31284        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
31285            '_'
31286        ),
31287        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
31288            '_'
31289        ),
31290        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
31291            '_'
31292        ),
31293        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
31294        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
31295        longDateFormat: {
31296            LT: 'HH:mm',
31297            LTS: 'HH:mm:ss',
31298            L: 'DD.MM.YYYY',
31299            LL: 'D MMMM YYYY',
31300            LLL: 'D MMMM YYYY HH:mm',
31301            LLLL: 'dddd, D MMMM YYYY HH:mm',
31302        },
31303        calendar: {
31304            sameDay: '[Бүгүн саат] LT',
31305            nextDay: '[Эртең саат] LT',
31306            nextWeek: 'dddd [саат] LT',
31307            lastDay: '[Кечээ саат] LT',
31308            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
31309            sameElse: 'L',
31310        },
31311        relativeTime: {
31312            future: '%s ичинде',
31313            past: '%s мурун',
31314            s: 'бирнече секунд',
31315            ss: '%d секунд',
31316            m: 'бир мүнөт',
31317            mm: '%d мүнөт',
31318            h: 'бир саат',
31319            hh: '%d саат',
31320            d: 'бир күн',
31321            dd: '%d күн',
31322            M: 'бир ай',
31323            MM: '%d ай',
31324            y: 'бир жыл',
31325            yy: '%d жыл',
31326        },
31327        dayOfMonthOrdinalParse
31327: /\d{1,2}-(чи|чы|чү|чу)/,
31328        ordinal: function (number) {
31329            var a = number % 10,
31330                b = number >= 100 ? 100 : null;
31331            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
31332        },
31333        week: {
31334            dow: 1, // Monday is the first day of the week.
31335            doy: 7, // The week that contains Jan 7th is the first week of the year.
31336        },
31337    });
31338
31339    return ky;
31340
31341})));
31342
31343
31344/***/ }),
31345/* 78 */
31346/***/ (function(module, exports, __webpack_require__) {
31347
31348//! moment.js locale configuration
31349//! locale : Luxembourgish [lb]
31350//! author : mweimerskirch : https://github.com/mweimerskirch
31351//! author : David Raison : https://github.com/kwisatz
31352
31353;(function (global, factory) {
31354    true ? factory(__webpack_require__(0)) :
31355   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31356   factory(global.moment)
31357}(this, (function (moment) { 'use strict';
31358
31359    //! moment.js locale configuration
31360
31361    function processRelativeTime(number, withoutSuffix, key, isFuture) {
31362        var format = {
31363            m: ['eng Minutt', 'enger Minutt'],
31364            h: ['eng Stonn', 'enger Stonn'],
31365            d: ['een Dag', 'engem Dag'],
31366            M: ['ee Mount', 'engem Mount'],
31367            y: ['ee Joer', 'engem Joer'],
31368        };
31369        return withoutSuffix ? format[key][0] : format[key][1];
31370    }
31371    function processFutureTime(string) {
31372        var number = string.substr(0, string.indexOf(' '));
31373        if (eifelerRegelAppliesToNumber(number)) {
31374            return 'a ' + string;
31375        }
31376        return 'an ' + string;
31377    }
31378    function processPastTime(string) {
31379        var number = string.substr(0, string.indexOf(' '));
31380        if (eifelerRegelAppliesToNumber(number)) {
31381            return 'viru ' + string;
31382        }
31383        return 'virun ' + string;
31384    }
31385    /**
31386     * Returns true if the word before the given number loses the '-n' ending.
31387     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
31388     *
31389     * @param number {integer}
31390     * @returns {boolean}
31391     */
31392    function eifelerRegelAppliesToNumber(number) {
31393        number = parseInt(number, 10);
31394        if (isNaN(number)) {
31395            return false;
31396        }
31397        if (number < 0) {
31398            // Negative Number --> always true
31399            return true;
31400        } else if (number < 10) {
31401            // Only 1 digit
31402            if (4 <= number && number <= 7) {
31403                return true;
31404            }
31405            return false;
31406        } else if (number < 100) {
31407            // 2 digits
31408            var lastDigit = number % 10,
31409                firstDigit = number / 10;
31410            if (lastDigit === 0) {
31411                return eifelerRegelAppliesToNumber(firstDigit);
31412            }
31413            return eifelerRegelAppliesToNumber(lastDigit);
31414        } else if (number < 10000) {
31415            // 3 or 4 digits --> recursively check first digit
31416            while (number >= 10) {
31417                number = number / 10;
31418            }
31419            return eifelerRegelAppliesToNumber(number);
31420        } else {
31421            // Anything larger than 4 digits: recursively check first n-3 digits
31422            number = number / 1000;
31423            return eifelerRegelAppliesToNumber(number);
31424        }
31425    }
31426
31427    var lb = moment.defineLocale('lb', {
31428        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
31429            '_'
31430        ),
31431        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
31432            '_'
31433        ),
31434        monthsParseExact: true,
31435        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
31436            '_'
31437        ),
31438        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
31439        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
31440        weekdaysParseExact: true,
31441        longDateFormat: {
31442            LT: 'H:mm [Auer]',
31443            LTS: 'H:mm:ss [Auer]',
31444            L: 'DD.MM.YYYY',
31445            LL: 'D. MMMM YYYY',
31446            LLL: 'D. MMMM YYYY H:mm [Auer]',
31447            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
31448        },
31449        calendar: {
31450            sameDay: '[Haut um] LT',
31451            sameElse: 'L',
31452            nextDay: '[Muer um] LT',
31453            nextWeek: 'dddd [um] LT',
31454            lastDay: '[Gëschter um] LT',
31455            lastWeek: function () {
31456                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
31457                switch (this.day()) {
31458                    case 2:
31459                    case 4:
31460                        return '[Leschten] dddd [um] LT';
31461                    default:
31462                        return '[Leschte] dddd [um] LT';
31463                }
31464            },
31465        },
31466        relativeTime: {
31467            future: processFutureTime,
31468            past: processPastTime,
31469            s: 'e puer Sekonnen',
31470            ss: '%d Sekonnen',
31471            m: processRelativeTime,
31472            mm: '%d Minutten',
31473            h: processRelativeTime,
31474            hh: '%d Stonnen',
31475            d: processRelativeTime,
31476            dd: '%d Deeg',
31477            M: processRelativeTime,
31478            MM: '%d Méint',
31479            y: processRelativeTime,
31480            yy: '%d Joer',
31481        },
31482        dayOfMonthOrdinalParse: /\d{1,2}\./,
31483        ordinal: '%d.',
31484        week: {
31485            dow: 1, // Monday is the first day of the week.
31486            doy: 4, // The week that contains Jan 4th is the first week of the year.
31487        },
31488    });
31489
31490    return lb;
31491
31492})));
31493
31494
31495/***/ }),
31496/* 79 */
31497/***/ (function(module, exports, __webpack_require__) {
31498
31499//! moment.js locale configuration
31500//! locale : Lao [lo]
31501//! author : Ryan Hart : https://github.com/ryanhart2
31502
31503;(function (global, factory) {
31504    true ? factory(__webpack_require__(0)) :
31505   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31506   factory(global.moment)
31507}(this, (function (moment) { 'use strict';
31508
31509    //! moment.js locale configuration
31510
31511    var lo = moment.defineLocale('lo', {
31512        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
31513            '_'
31514        ),
31515        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
31516            '_'
31517        ),
31518        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
31519        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
31520        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
31521        weekdaysParseExact: true,
31522        longDateFormat: {
31523            LT: 'HH:mm',
31524            LTS: 'HH:mm:ss',
31525            L: 'DD/MM/YYYY',
31526            LL: 'D MMMM YYYY',
31527            LLL: 'D MMMM YYYY HH:mm',
31528            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
31529        },
31530        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
31531        isPM: function (input) {
31532            return input === 'ຕອນແລງ';
31533        },
31534        meridiem: function (hour, minute, isLower) {
31535            if (hour < 12) {
31536                return 'ຕອນເຊົ້າ';
31537            } else {
31538                return 'ຕອນແລງ';
31539            }
31540        },
31541        calendar: {
31542            sameDay: '[ມື້ນີ້ເວລາ] LT',
31543            nextDay: '[ມື້ອື່ນເວລາ] LT',
31544            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
31545            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
31546            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
31547            sameElse: 'L',
31548        },
31549        relativeTime: {
31550            future: 'ອີກ %s',
31551            past: '%sຜ່ານມາ',
31552            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
31553            ss: '%d ວິນາທີ',
31554            m: '1 ນາທີ',
31555            mm: '%d ນາທີ',
31556            h: '1 ຊົ່ວໂມງ',
31557            hh: '%d ຊົ່ວໂມງ',
31558            d: '1 ມື້',
31559            dd: '%d ມື້',
31560            M: '1 ເດືອນ',
31561            MM: '%d ເດືອນ',
31562            y: '1 ປີ',
31563            yy: '%d ປີ',
31564        },
31565        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
31566        ordinal: function (number) {
31567            return 'ທີ່' + number;
31568        },
31569    });
31570
31571    return lo;
31572
31573})));
31574
31575
31576/***/ }),
31577/* 80 */
31578/***/ (function(module, exports, __webpack_require__) {
31579
31580//! moment.js locale configuration
31581//! locale : Lithuanian [lt]
31582//! author : Mindaugas Mozūras : https://github.com/mmozuras
31583
31584;(function (global, factory) {
31585    true ? factory(__webpack_require__(0)) :
31586   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31587   factory(global.moment)
31588}(this, (function (moment) { 'use strict';
31589
31590    //! moment.js locale configuration
31591
31592    var units = {
31593        ss: 'sekundė_sekundžių_sekundes',
31594        m: 'minutė_minutės_minutę',
31595        mm: 'minutės_minučių_minutes',
31596        h: 'valanda_valandos_valandą',
31597        hh: 'valandos_valandų_valandas',
vendor: 4,203 bytes, lines 31598-31720
31598        d: 'diena_dienos_dieną',
31599        dd: 'dienos_dienų_dienas',
31600        M: 'mėnuo_mėnesio_mėnesį',
31601        MM: 'mėnesiai_mėnesių_mėnesius',
31602        y: 'metai_metų_metus',
31603        yy: 'metai_metų_metus',
31604    };
31605    function translateSeconds(number, withoutSuffix, key, isFuture) {
31606        if (withoutSuffix) {
31607            return 'kelios sekundės';
31608        } else {
31609            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
31610        }
31611    }
31612    function translateSingular(number, withoutSuffix, key, isFuture) {
31613        return withoutSuffix
31614            ? forms(key)[0]
31615            : isFuture
31616            ? forms(key)[1]
31617            : forms(key)[2];
31618    }
31619    function special(number) {
31620        return number % 10 === 0 || (number > 10 && number < 20);
31621    }
31622    function forms(key) {
31623        return units[key].split('_');
31624    }
31625    function translate(number, withoutSuffix, key, isFuture) {
31626        var result = number + ' ';
31627        if (number === 1) {
31628            return (
31629                result + translateSingular(number, withoutSuffix, key[0], isFuture)
31630            );
31631        } else if (withoutSuffix) {
31632            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
31633        } else {
31634            if (isFuture) {
31635                return result + forms(key)[1];
31636            } else {
31637                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
31638            }
31639        }
31640    }
31641    var lt = moment.defineLocale('lt', {
31642        months: {
31643            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
31644                '_'
31645            ),
31646            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
31647                '_'
31648            ),
31649            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
31650        },
31651        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
31652        weekdays: {
31653            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
31654                '_'
31655            ),
31656            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
31657                '_'
31658            ),
31659            isFormat: /dddd HH:mm/,
31660        },
31661        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
31662        weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
31663        weekdaysParseExact: true,
31664        longDateFormat: {
31665            LT: 'HH:mm',
31666            LTS: 'HH:mm:ss',
31667            L: 'YYYY-MM-DD',
31668            LL: 'YYYY [m.] MMMM D [d.]',
31669            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
31670            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
31671            l: 'YYYY-MM-DD',
31672            ll: 'YYYY [m.] MMMM D [d.]',
31673            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
31674            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
31675        },
31676        calendar: {
31677            sameDay: '[Å iandien] LT',
31678            nextDay: '[Rytoj] LT',
31679            nextWeek: 'dddd LT',
31680            lastDay: '[Vakar] LT',
31681            lastWeek: '[Praėjusį] dddd LT',
31682            sameElse: 'L',
31683        },
31684        relativeTime: {
31685            future: 'po %s',
31686            past: 'prieš %s',
31687            s: translateSeconds,
31688            ss: translate,
31689            m: translateSingular,
31690            mm: translate,
31691            h: translateSingular,
31692            hh: translate,
31693            d: translateSingular,
31694            dd: translate,
31695            M: translateSingular,
31696            MM: translate,
31697            y: translateSingular,
31698            yy: translate,
31699        },
31700        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
31701        ordinal: function (number) {
31702            return number + '-oji';
31703        },
31704        week: {
31705            dow: 1, // Monday is the first day of the week.
31706            doy: 4, // The week that contains Jan 4th is the first week of the year.
31707        },
31708    });
31709
31710    return lt;
31711
31712})));
31713
31714
31715/***/ }),
31716/* 81 */
31717/***/ (function(module, exports, __webpack_require__) {
31718
31719//! moment.js locale configuration
31720//! locale : Latvian [lv]
31721//! author : Kristaps Karlsons : https://github.com/skakri
31722//! author : Jānis Elmeris : https://github.com/JanisE
31723
31724;(function (global, factory) {
31725    true ? factory(__webpack_require__(0)) :
31726   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31727   factory(global.moment)
31728}(this, (function (moment) { 'use strict';
31729
31730    //! moment.js locale configuration
31731
31732    var units = {
31733        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
31734        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
31735        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
31736        h: 'stundas_stundām_stunda_stundas'.split('_'),
31737        hh: 'stundas_stundām_stunda_stundas'.split('_'),
31738        d: 'dienas_dienām_diena_dienas'.split('_'),
31739        dd: 'dienas_dienām_diena_dienas'.split('_'),
31740        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
31741        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
31742        y: 'gada_gadiem_gads_gadi'.split('_'),
31743        yy: 'gada_gadiem_gads_gadi'.split('_'),
31744    };
31745    /**
31746     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
31747     */
31748    function format(forms, number, withoutSuffix) {
31749        if (withoutSuffix) {
31750            // E.g. "21 minūte", "3 minūtes".
31751            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
31752        } else {
31753            // E.g. "21 minūtes" as in "pēc 21 minūtes".
31754            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
31755            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
31756        }
31757    }
31758    function relativeTimeWithPlural(number, withoutSuffix, key) {
31759        return number + ' ' + format(units[key], number, withoutSuffix);
31760    }
31761    function relativeTimeWithSingular(number, withoutSuffix, key) {
31762        return format(units[key], number, withoutSuffix);
31763    }
31764    function relativeSeconds(number, withoutSuffix) {
31765        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
31766    }
31767
31768    var lv = moment.defineLocale('lv', {
31769        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
31770            '_'
31771        ),
31772        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
31773        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
31774            '_'
31775        ),
31776        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
31777        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
31778        weekdaysParseExact: true,
31779        longDateFormat: {
31780            LT: 'HH:mm',
31781            LTS: 'HH:mm:ss',
31782            L: 'DD.MM.YYYY.',
31783            LL: 'YYYY. [gada] D. MMMM',
31784            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
31785            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
31786        },
31787        calendar: {
31788            sameDay: '[Å odien pulksten] LT',
31789            nextDay: '[Rīt pulksten] LT',
31790            nextWeek: 'dddd [pulksten] LT',
31791            lastDay: '[Vakar pulksten] LT',
31792            lastWeek: '[Pagājušā] dddd [pulksten] LT',
31793            sameElse: 'L',
31794        },
31795        relativeTime: {
31796            future: 'pēc %s',
31797            past: 'pirms %s',
31798            s: relativeSeconds,
31799            ss: relativeTimeWithPlural,
31800            m: relativeTimeWithSingular,
31801            mm: relativeTimeWithPlural,
31802            h: relativeTimeWithSingular,
31803            hh: relativeTimeWithPlural,
31804            d: relativeTimeWithSingular,
31805            dd: relativeTimeWithPlural,
31806            M: relativeTimeWithSingular,
31807            MM: relativeTimeWithPlural,
31808            y: relativeTimeWithSingular,
31809            yy: relativeTimeWithPlural,
31810        },
31811        dayOfMonthOrdinalParse: /\d{1,2}\./,
31812        ordinal: '%d.',
31813        week: {
31814            dow: 1, // Monday is the first day of the week.
31815            doy: 4, // The week that contains Jan 4th is the first week of the year.
31816        },
31817    });
31818
31819    return lv;
31820
31821})));
31822
31823
31824/***/ }),
31825/* 82 */
31826/***/ (function(module, exports, __webpack_require__) {
31827
31828//! moment.js locale configuration
31829//! locale : Montenegrin [me]
31830//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
31831
31832;(function (global, factory) {
31833    true ? factory(__webpack_require__(0)) :
31834   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31835   factory(global.moment)
31836}(this, (function (moment) { 'use strict';
31837
31838    //! moment.js locale configuration
31839
31840    var translator = {
31841        words: {
31842            //Different grammatical cases
31843            ss: ['sekund', 'sekunda', 'sekundi'],
31844            m: ['jedan minut', 'jednog minuta'],
31845            mm: ['minut', 'minuta', 'minuta'],
31846            h: ['jedan sat', 'jednog sata'],
31847            hh: ['sat', 'sata', 'sati'],
31848            dd: ['dan', 'dana', 'dana'],
31849            MM: ['mjesec', 'mjeseca', 'mjeseci'],
31850            yy: ['godina', 'godine', 'godina'],
31851        },
31852        correctGrammaticalCase: function (number, wordKey) {
31853            return number === 1
31854                ? wordKey[0]
31855                : number >= 2 && number <= 4
31856                ? wordKey[1]
31857                : wordKey[2];
31858        },
31859        translate: function (number, withoutSuffix, key) {
31860            var wordKey = translator.words[key];
31861            if (key.length === 1) {
31862                return withoutSuffix ? wordKey[0] : wordKey[1];
31863            } else {
31864                return (
31865                    number +
31866                    ' ' +
31867                    translator.correctGrammaticalCase(number, wordKey)
31868                );
31869            }
31870        },
31871    };
31872
31873    var me = moment.defineLocale('me', {
31874        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
31875            '_'
31876        ),
31877        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
31878            '_'
31879        ),
31880        monthsParseExact: true,
31881        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
31882            '_'
31883        ),
31884        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
31885        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
31886        weekdaysParseExact: true,
31887        longDateFormat: {
31888            LT: 'H:mm',
31889            LTS: 'H:mm:ss',
31890            L: 'DD.MM.YYYY',
31891            LL: 'D. MMMM YYYY',
31892            LLL: 'D. MMMM YYYY H:mm',
31893            LLLL: 'dddd, D. MMMM YYYY H:mm',
31894        },
31895        calendar: {
31896            sameDay: '[danas u] LT',
31897            nextDay: '[sjutra u] LT',
31898
31899            nextWeek: function () {
31900                switch (this.day()) {
31901                    case 0:
31902                        return '[u] [nedjelju] [u] LT';
31903                    case 3:
31904                        return '[u] [srijedu] [u] LT';
31905                    case 6:
31906                        return '[u] [subotu] [u] LT';
31907                    case 1:
31908                    case 2:
31909                    case 4:
31910                    case 5:
31911                        return '[u] dddd [u] LT';
31912                }
31913            },
31914            lastDay: '[juče u] LT',
31915            lastWeek: function () {
31916                var lastWeekDays = [
31917                    '[prošle] [nedjelje] [u] LT',
31918                    '[prošlog] [ponedjeljka] [u] LT',
31919                    '[prošlog] [utorka] [u] LT',
31920                    '[prošle] [srijede] [u] LT',
31921                    '[prošlog] [četvrtka] [u] LT',
31922                    '[prošlog] [petka] [u] LT',
31923                    '[prošle] [subote] [u] LT',
31924                ];
31925                return lastWeekDays[this.day()];
31926            },
31927            sameElse: 'L',
31928        },
31929        relativeTime: {
31930            future: 'za %s',
31931            past: 'prije %s',
31932            s: 'nekoliko sekundi',
31933            ss: translator.translate,
31934            m: translator.translate,
31935            mm: translator.translate,
31936            h: translator.translate,
31937            hh: translator.translate,
31938            d: 'dan',
31939            dd: translator.translate,
31940            M: 'mjesec',
31941            MM: translator.translate,
31942            y: 'godinu',
31943            yy: translator.translate,
31944        },
31945        dayOfMonthOrdinalParse: /\d{1,2}\./,
31946        ordinal: '%d.',
31947        week: {
31948            dow: 1, // Monday is the first day of the week.
31949            doy: 7, // The week that contains Jan 7th is the first week of the year.
31950        },
31951    });
31952
31953    return me;
31954
31955})));
31956
31957
31958/***/ }),
31959/* 83 */
31960/***/ (function(module, exports, __webpack_require__) {
31961
31962//! moment.js locale configuration
31963//! locale : Maori [mi]
31964//! author : John Corrigan <[email protected]> : https://github.com/johnideal
31965
31966;(function (global, factory) {
31967    true ? factory(__webpack_require__(0)) :
31968   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
31969   factory(global.moment)
31970}(this, (function (moment) { 'use strict';
31971
31972    //! moment.js locale configuration
31973
31974    var mi = moment.defineLocale('mi', {
31975        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(
31976            '_'
31977        ),
31978        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
31979            '_'
31980        ),
31981        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
31982        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
31983        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
31984        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
31985        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
31986        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
31987        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
31988        longDateFormat: {
31989            LT: 'HH:mm',
31990            LTS: 'HH:mm:ss',
31991            L: 'DD/MM/YYYY',
31992            LL: 'D MMMM YYYY',
31993            LLL: 'D MMMM YYYY [i] HH:mm',
31994            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
31995        },
31996        calendar: {
31997            sameDay: '[i teie mahana, i] LT',
31998            nextDay: '[apopo i] LT',
31999            nextWeek: 'dddd [i] LT',
32000            lastDay: '[inanahi i] LT',
32001            lastWeek: 'dddd [whakamutunga i] LT',
32002            sameElse: 'L',
32003        },
32004        relativeTime: {
32005            future: 'i roto i %s',
32006            past: '%s i mua',
32007            s: 'te hēkona ruarua',
32008            ss: '%d hēkona',
32009            m: 'he meneti',
32010            mm: '%d meneti',
32011            h: 'te haora',
32012            hh: '%d haora',
32013            d: 'he ra',
32014            dd: '%d ra',
32015            M: 'he marama',
32016            MM: '%d marama',
32017            y: 'he tau',
32018            yy: '%d tau',
32019        },
32020        dayOfMonthOrdinalParse: /\d{1,2}º/,
32021        ordinal: '%dº',
32022        week: {
32023            dow: 1, // Monday is the first day of the week.
32024            doy: 4, // The week that contains Jan 4th is the first week of the year.
32025        },
32026    });
32027
32028    return mi;
32029
32030})));
32031
32032
32033/***/ }),
32034/* 84 */
32035/***/ (function(module, exports, __webpack_require__) {
32036
32037//! moment.js locale configuration
32038//! locale : Macedonian [mk]
32039//! author : Borislav Mickov : https://github.com/B0k0
32040//! author : Sashko Todorov : https://github.com/bkyceh
32041
32042;(function (global, factory) {
32043    true ? factory(__webpack_require__(0)) :
32044   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32045   factory(global.moment)
32046}(this, (function (moment) { 'use strict';
32047
32048    //! moment.js locale configuration
32049
32050    var mk = moment.defineLocale('mk', {
32051        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
32052            '_'
32053        ),
32054        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
32055        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
32056            '_'
32057        ),
32058        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
32059        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
32060        longDateFormat: {
32061            LT: 'H:mm',
32062            LTS: 'H:mm:ss',
32063            L: 'D.MM.YYYY',
32064            LL: 'D MMMM YYYY',
32065            LLL: 'D MMMM YYYY H:mm',
32066            LLLL: 'dddd, D MMMM YYYY H:mm',
32067        },
32068        calendar: {
32069            sameDay: '[Денес во] LT',
32070            nextDay: '[Утре во] LT',
32071            nextWeek: '[Во] dddd [во] LT',
32072            lastDay: '[Вчера во] LT',
32073            lastWeek: function () {
32074                switch (this.day()) {
32075                    case 0:
32076                    case 3:
32077                    case 6:
32078                        return '[Изминатата] dddd [во] LT';
32079                    case 1:
32080                    case 2:
32081                    case 4:
32082                    case 5:
32083                        return '[Изминатиот] dddd [во] LT';
32084                }
32085            },
32086            sameElse: 'L',
32087        },
32088        relativeTime: {
32089            future: 'за %s',
32090            past: 'пред %s',
32091            s: 'неколку секунди',
32092            ss: '%d секунди',
32093            m: 'една минута',
32094            mm: '%d минути',
32095            h: 'еден час',
32096            hh: '%d часа',
32097            d: 'еден ден',
32098            dd: '%d дена',
32099            M: 'еден месец',
32100            MM: '%d месеци',
32101            y: 'една година',
32102            yy: '%d години',
32103        },
32104        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
32105        ordinal: function (number) {
32106            var lastDigit = number % 10,
32107                last2Digits = number % 100;
32108            if (number === 0) {
32109                return number + '-ев';
32110            } else if (last2Digits === 0) {
32111                return number + '-ен';
32112            } else if (last2Digits > 10 && last2Digits < 20) {
32113                return number + '-ти';
32114            } else if (lastDigit === 1) {
32115                return number + '-ви';
32116            } else if (lastDigit === 2) {
32117                return number + '-ри';
32118            } else if (lastDigit === 7 || lastDigit === 8) {
32119                return number + '-ми';
32120            } else {
32121                return number + '-ти';
32122            }
32123        },
32124        week: {
32125            dow: 1, // Monday is the first day of the week.
32126            doy: 7, // The week that contains Jan 7th is the first week of the year.
32127        },
32128    });
32129
32130    return mk;
32131
32132})));
32133
32134
32135/***/ }),
32136/* 85 */
32137/***/ (function(module, exports, __webpack_require__) {
32138
32139//! moment.js locale configuration
32140//! locale : Malayalam [ml]
32141//! author : Floyd Pink : https://github.com/floydpink
32142
32143;(function (global, factory) {
32144    true ? factory(__webpack_require__(0)) :
32145   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32146   factory(global.moment)
32147}(this, (function (moment) { 'use strict';
32148
32149    //! moment.js locale configuration
32150
32151    var ml = moment.defineLocale('ml', {
32152        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ചà
32152µ_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
32153            '_'
32154        ),
32155        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
32156            '_'
32157        ),
32158        monthsParseExact: true,
32159        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
32160            '_'
32161        ),
32162        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
32163        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
32164        longDateFormat: {
32165            LT: 'A h:mm -നു',
32166            LTS: 'A h:mm:ss -നു',
32167            L: 'DD/MM/YYYY',
32168            LL: 'D MMMM YYYY',
32169            LLL: 'D MMMM YYYY, A h:mm -നു',
32170            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
32171        },
32172        calendar: {
32173            sameDay: '[ഇന്ന്] LT',
32174            nextDay: '[നാളെ] LT',
32175            nextWeek: 'dddd, LT',
32176            lastDay: '[ഇന്നലെ] LT',
32177            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
32178            sameElse: 'L',
32179        },
32180        relativeTime: {
32181            future: '%s കഴിഞ്ഞ്',
32182            past: '%s മുൻപ്',
32183            s: 'അൽപ നിമിഷങ്ങൾ',
32184            ss: '%d സെക്കൻഡ്',
32185            m: 'ഒരു മിനിറ്റ്',
32186            mm: '%d മിനിറ്റ്',
32187            h: 'ഒരു മണിക്കൂർ',
32188            hh: '%d മണിക്കൂർ',
32189            d: 'ഒരു ദിവസം',
32190            dd: '%d ദിവസം',
32191            M: 'ഒരു മാസം',
32192            MM: '%d മാസം',
32193            y: 'ഒരു വർഷം',
32194            yy: '%d വർഷം',
32195        },
32196        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
32197        meridiemHour: function (hour, meridiem) {
32198            if (hour === 12) {
32199                hour = 0;
32200            }
32201            if (
32202                (meridiem === 'രാത്രി' && hour >= 4) ||
32203                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
32204                meridiem === 'വൈകുന്നേരം'
32205            ) {
32206                return hour + 12;
32207            } else {
32208                return hour;
32209            }
32210        },
32211        meridiem: function (hour, minute, isLower) {
32212            if (hour < 4) {
32213                return 'രാത്രി';
32214            } else if (hour < 12) {
32215                return 'രാവിലെ';
32216            } else if (hour < 17) {
32217                return 'ഉച്ച കഴിഞ്ഞ്';
32218            } else if (hour < 20) {
32219                return 'വൈകുന്നേരം';
32220            } else {
32221                return 'രാത്രി';
32222            }
32223        },
32224    });
32225
32226    return ml;
32227
32228})));
32229
32230
32231/***/ }),
32232/* 86 */
32233/***/ (function(module, exports, __webpack_require__) {
32234
32235//! moment.js locale configuration
32236//! locale : Mongolian [mn]
32237//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
32238
32239;(function (global, factory) {
32240    true ? factory(__webpack_require__(0)) :
32241   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32242   factory(global.moment)
32243}(this, (function (moment) { 'use strict';
32244
32245    //! moment.js locale configuration
32246
32247    function translate(number, withoutSuffix, key, isFuture) {
32248        switch (key) {
32249            case 's':
32250                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
32251            case 'ss':
32252                return number + (withoutSuffix ? ' секунд' : ' секундын');
32253            case 'm':
32254            case 'mm':
32255                return number + (withoutSuffix ? ' минут' : ' минутын');
32256            case 'h':
32257            case 'hh':
32258                return number + (withoutSuffix ? ' цаг' : ' цагийн');
32259            case 'd':
32260            case 'dd':
32261                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
32262            case 'M':
32263            case 'MM':
32264                return number + (withoutSuffix ? ' сар' : ' сарын');
32265            case 'y':
32266            case 'yy':
32267                return number + (withoutSuffix ? ' жил' : ' жилийн');
32268            default:
32269                return number;
32270        }
32271    }
32272
32273    var mn = moment.defineLocale('mn', {
32274        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
32275            '_'
32276        ),
32277        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
32278            '_'
32279        ),
32280        monthsParseExact: true,
32281        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
32282        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
32283        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
32284        weekdaysParseExact: true,
32285        longDateFormat: {
32286            LT: 'HH:mm',
32287            LTS: 'HH:mm:ss',
32288            L: 'YYYY-MM-DD',
32289            LL: 'YYYY оны MMMMын D',
32290            LLL: 'YYYY оны MMMMын D HH:mm',
32291            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
32292        },
32293        meridiemParse: /ҮӨ|ҮХ/i,
32294        isPM: function (input) {
32295            return input === 'ҮХ';
32296        },
32297        meridiem: function (hour, minute, isLower) {
32298            if (hour < 12) {
32299                return 'Ò®Ó¨';
32300            } else {
32301                return 'ҮХ';
32302            }
32303        },
32304        calendar: {
32305            sameDay: '[Өнөөдөр] LT',
32306            nextDay: '[Маргааш] LT',
32307            nextWeek: '[Ирэх] dddd LT',
32308            lastDay: '[Өчигдөр] LT',
32309            lastWeek: '[Өнгөрсөн] dddd LT',
32310            sameElse: 'L',
32311        },
32312        relativeTime: {
32313            future: '%s дараа',
32314            past: '%s өмнө',
32315            s: translate,
32316            ss: translate,
32317            m: translate,
32318            mm: translate,
32319            h: translate,
32320            hh: translate,
32321            d: translate,
32322            dd: translate,
32323            M: translate,
32324            MM: translate,
32325            y: translate,
32326            yy: translate,
32327        },
32328        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
32329        ordinal: function (number, period) {
32330            switch (period) {
32331                case 'd':
32332                case 'D':
32333                case 'DDD':
32334                    return number + ' өдөр';
32335                default:
32336                    return number;
32337            }
32338        },
32339    });
32340
32341    return mn;
32342
32343})));
32344
32345
32346/***/ }),
32347/* 87 */
32348/***/ (function(module, exports, __webpack_require__) {
32349
32350//! moment.js locale configuration
32351//! locale : Marathi [mr]
32352//! author : Harshad Kale : https://github.com/kalehv
32353//! author : Vivek Athalye : https://github.com/vnathalye
32354
32355;(function (global, factory) {
32356    true ? factory(__webpack_require__(0)) :
32357   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32358   factory(global.moment)
32359}(this, (function (moment) { 'use strict';
32360
32361    //! moment.js locale configuration
32362
32363    var symbolMap = {
32364            1: '१',
32365            2: '२',
32366            3: '३',
32367            4: '४',
32368            5: '५',
32369            6: '६',
32370            7: '७',
32371            8: '८',
32372            9: '९',
32373            0: '०',
32374        },
32375        numberMap = {
32376            '१': '1',
32377            '२': '2',
32378            '३': '3',
32379            '४': '4',
32380            '५': '5',
32381            '६': '6',
32382            '७': '7',
32383            '८': '8',
32384            '९': '9',
32385            '०': '0',
32386        };
32387
32388    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
32389        var output = '';
32390        if (withoutSuffix) {
32391            switch (string) {
32392                case 's':
32393                    output = 'काही सेकंद';
32394                    break;
32395                case 'ss':
32396                    output = '%d सेकंद';
32397                    break;
32398                case 'm':
32399                    output = 'एक मिनिट';
32400                    break;
32401                case 'mm':
32402                    output = '%d मिनिटे';
32403                    break;
32404                case 'h':
32405                    output = 'एक तास';
32406                    break;
32407                case 'hh':
32408                    output = '%d तास';
32409                    break;
32410                case 'd':
32411                    output = 'एक दिवस';
32412                    break;
32413                case 'dd':
32414                    output = '%d दिवस';
32415                    break;
32416                case 'M':
32417                    output = 'एक महिना';
32418                    break;
32419                case 'MM':
32420                    output = '%d महिने';
32421                    break;
32422                case 'y':
32423                    output = 'एक वर्ष';
32424                    break;
32425                case 'yy':
32426                    output = '%d वर्षे';
32427                    break;
32428            }
32429        } else {
32430            switch (string) {
32431                case 's':
32432                    output = 'काही सेकंदां';
32433                    break;
32434                case 'ss':
32435                    output = '%d सेकंदां';
32436                    break;
32437                case 'm':
32438                    output = 'एका मिनिटा';
32439                    break;
32440                case 'mm':
32441                    output = '%d मिनिटां';
32442                    break;
32443                case 'h':
32444                    output = 'एका तासा';
32445                    break;
32446                case 'hh':
32447                    output = '%d तासां';
32448                    break;
32449                case 'd':
32450                    output = 'एका दिवसा';
32451                    break;
32452                case 'dd':
32453                    output = '%d दिवसां';
32454                    break;
32455                case 'M':
32456                    output = 'एका महिन्या';
32457                    break;
32458                case 'MM':
32459                    output = '%d महिन्यां';
32460                    break;
32461                case 'y':
32462                    output = 'एका वर्षा';
32463                    break;
32464                case 'yy':
32465                    output = '%d वर्षां';
32466                    break;
32467            }
32468        }
32469        return output.replace(/%d/i, number);
32470    }
32471
32472    var mr = moment.defineLocale('mr', {
32473        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
32474            '_'
32475        ),
32476        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
32477            '_'
32478        ),
32479        monthsParseExact: true,
32480        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
32481        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
32482        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
32483        longDateFormat: {
32484            LT: 'A h:mm वाजता',
32485            LTS: 'A h:mm:ss वाजता',
32486            L: 'DD/MM/YYYY',
32487            LL: 'D MMMM YYYY',
32488            LLL: 'D MMMM YYYY, A h:mm वाजता',
32489            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
32490        },
32491        calendar: {
32492            sameDay: '[आज] LT',
32493            nextDay: '[उद्या] LT',
32494            nextWeek: 'dddd, LT',
32495            lastDay: '[काल] LT',
32496            lastWeek: '[मागील] dddd, LT',
32497            sameElse: 'L',
32498        },
32499        relativeTime: {
32500            future: '%sमध्ये',
32501            past: '%sपूर्वी',
32502            s: relativeTimeMr,
32503            ss: relativeTimeMr,
32504            m: relativeTimeMr,
32505            mm: relativeTimeMr,
32506            h: relativeTimeMr,
32507            hh: relativeTimeMr,
32508            d: relativeTimeMr,
32509            dd: relativeTimeMr,
32510            M: relativeTimeMr,
32511            MM: relativeTimeMr,
32512            y: relativeTimeMr,
32513            yy: relativeTimeMr,
32514        },
32515        preparse: function (string) {
32516            return string.replace(/[१२३४५६७८९०]/g, function (match) {
32517                return numberMap[match];
32518            });
32519        },
32520        postformat: function (string) {
32521            return string.replace(/\d/g, function (match) {
32522                return symbolMap[match];
32523            });
32524        },
32525        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
32526        meridiemHour: function (hour, meridiem) {
32527            if (hour === 12) {
32528                hour = 0;
32529            }
32530            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
32531                return hour;
32532            } else if (
32533                meridiem === 'दुपारी' ||
32534                meridiem === 'सायंकाळी' ||
32535                meridiem === 'रात्री'
32536            ) {
32537                return hour >= 12 ? hour : hour + 12;
32538            }
32539        },
32540        meridiem: function (hour, minute, isLower) {
32541            if (hour >= 0 && hour < 6) {
32542                return 'पहाटे';
32543            } else if (hour < 12) {
32544                return 'सकाळी';
32545            } else if (hour < 17) {
32546                return 'दुपारी';
32547            } else if (hour < 20) {
32548                return 'सायंकाळी';
32549            } else {
32550                return 'रात्री';
32551            }
32552        },
32553        week: {
32554            dow: 0, // Sunday is the first day of the week.
32555            doy: 6, // The week that contains Jan 6th is the first week of the year.
32556        },
32557    });
32558
32559    return mr;
32560
32561})));
32562
32563
32564/***/ }),
32565/* 88 */
32566/***/ (function(module, exports, __webpack_require__) {
32567
32568//! moment.js locale configuration
32569//! locale : Malay [ms]
32570//! author : Weldan Jamili : https://github.com/weldan
32571
32572;(function (global, factory) {
32573    true ? factory(__webpack_require__(0)) :
32574   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32575   factory(global.moment)
32576}(this, (function (moment) { 'use strict';
32577
32578    //! moment.js locale configuration
32579
32580    var ms = moment.defineLocale('ms', {
32581        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
32582            '_'
32583        ),
32584        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
32585        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
32586        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
32587        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
32588        longDateFormat: {
32589            LT: 'HH.mm',
32590            LTS: 'HH.mm.ss',
32591            L: 'DD/MM/YYYY',
32592            LL: 'D MMMM YYYY',
32593            LLL: 'D MMMM YYYY [pukul] HH.mm',
32594            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
32595        },
32596        meridiemParse: /pagi|tengahari|petang|malam/,
32597        meridiemHour: function (hour, meridiem) {
32598            if (hour === 12) {
32599                hour = 0;
32600            }
32601            if (meridiem === 'pagi') {
32602                return hour;
32603            } else if (meridiem === 'tengahari') {
32604                return hour >= 11 ? hour : hour + 12;
32605            } else if (meridiem === 'petang' || meridiem === 'malam') {
32606                return hour + 12;
32607            }
32608        },
32609        meridiem: function (hours, minutes, isLower) {
32610            if (hours < 11) {
32611                return 'pagi';
32612            } else if (hours < 15) {
32613                return 'tengahari';
32614            } else if (hours < 19) {
32615                return 'petang';
32616            } else {
32617                return 'malam';
32618            }
32619        },
32620        calendar: {
32621            sameDay: '[Hari ini pukul] LT',
32622            nextDay: '[Esok pukul] LT',
32623            nextWeek: 'dddd [pukul] LT',
32624            lastDay: '[Kelmarin pukul] LT',
32625            lastWeek: 'dddd [lepas pukul] LT',
32626            sameElse: 'L',
32627        },
32628        relativeTime: {
32629            future: 'dalam %s',
32630            past: '%s yang lepas',
32631            s: 'beberapa saat',
32632            ss: '%d saat',
32633            m: 'seminit',
32634            mm: '%d minit',
32635            h: 'sejam',
32636            hh: '%d jam',
32637            d: 'sehari',
32638            dd: '%d hari',
32639            M: 'sebulan',
32640            MM: '%d bulan',
32641            y: 'setahun',
32642            yy: '%d tahun',
32643        },
32644        week: {
32645            dow: 1, // Monday is the first day of the week.
32646            doy: 7, // The week that contains Jan 7th is the first week of the year.
32647        },
32648    });
32649
32650    return ms;
32651
32652})));
32653
32654
32655/***/ }),
32656/* 89 */
32657/***/ (function(module, exports, __webpack_require__) {
32658
32659//! moment.js locale configuration
32660//! locale : Malay [ms-my]
32661//! note : DEPRECATED, the correct one is [ms]
32662//! author : Weldan Jamili : https://github.com/weldan
32663
32664;(function (global, factory) {
32665    true ? factory(__webpack_require__(0)) :
32666   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32667   factory(global.moment)
32668}(this, (function (moment) { 'use strict';
32669
32670    //! moment.js locale configuration
32671
32672    var msMy = moment.defineLocale('ms-my', {
32673        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
32674            '_'
32675        ),
32676        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
32677        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
32678        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
32679        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
32680        longDateFormat: {
32681            LT: 'HH.mm',
32682            LTS: 'HH.mm.ss',
32683            L: 'DD/MM/YYYY',
32684            LL: 'D MMMM YYYY',
32685            LLL: 'D MMMM YYYY [pukul] HH.mm',
32686            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
32687        },
32688        meridiemParse: /pagi|tengahari|petang|malam/,
32689        meridiemHour: function (hour, meridiem) {
32690            if (hour === 12) {
32691                hour = 0;
32692            }
32693            if (meridiem === 'pagi') {
32694                return hour;
32695            } else if (meridiem === 'tengahari') {
32696                return hour >= 11 ? hour : hour + 12;
32697            } else if (meridiem === 'petang' || meridiem === 'malam') {
32698                return hour + 12;
32699            }
32700        },
32701        meridiem: function (hours, minutes, isLower) {
32702            if (hours < 11) {
32703                return 'pagi';
32704            } else if (hours < 15) {
32705                return 'tengahari';
32706            } else if (hours < 19) {
32707                return 'petang';
32708            } else {
32709                return 'malam';
32710            }
32711        },
32712        calendar: {
32713            sameDay: '[Hari ini pukul] LT',
32714            nextDay: '[Esok pukul] LT',
32715            nextWeek: 'dddd [pukul] LT',
32716            lastDay: '[Kelmarin pukul] LT',
32717            lastWeek: 'dddd [lepas pukul] LT',
32718            sameElse: 'L',
32719        },
32720        relativeTime: {
32721            future: 'dalam %s',
32722            past: '%s yang lepas',
32723            s: 'beberapa saat',
32724            ss: '%d saat',
32725            m: 'seminit',
32726            mm: '%d minit',
32727            h: 'sejam',
32728            hh: '%d jam',
32729            d: 'sehari',
32730            dd: '%d hari',
32731            M: 'sebulan',
32732            MM: '%d bulan',
32733            y: 'setahun',
32734            yy: '%d tahun',
32735        },
32736        week: {
32737            dow: 1, // Monday is the first day of the week.
32738            doy: 7, // The week that contains Jan 7th is the first week of the year.
32739        },
32740    });
32741
32742    return msMy;
32743
32744})));
32745
32746
32747/***/ }),
32748/* 90 */
32749/***/ (function(module, exports, __webpack_require__) {
32750
32751//! moment.js locale configuration
32752//! locale : Maltese (Malta) [mt]
32753//! author : Alessandro Maruccia : https://github.com/alesma
32754
32755;(function (global, factory) {
32756    true ? factory(__webpack_require__(0)) :
32757   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32758   factory(global.moment)
32759}(this, (function (moment) { 'use strict';
32760
32761    //! moment.js locale configuration
32762
32763    var mt = moment.defineLocale('mt', {
32764        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
32765            '_'
32766        ),
32767        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
32768        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
32769            '_'
32770        ),
32771        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
32772        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
32773        longDateFormat: {
32774            LT: 'HH:mm',
32775            LTS: 'HH:mm:ss',
32776            L: 'DD/MM/YYYY',
32777            LL: 'D MMMM YYYY',
32778            LLL: 'D MMMM YYYY HH:mm',
32779            LLLL: 'dddd, D MMMM YYYY HH:mm',
32780        },
32781        calendar: {
32782            sameDay: '[Illum fil-]LT',
32783            nextDay: '[Għada fil-]LT',
32784            nextWeek: 'dddd [fil-]LT',
32785            lastDay: '[Il-bieraħ fil-]LT',
32786            lastWeek: 'dddd [li għadda] [fil-]LT',
32787            sameElse: 'L',
32788        },
32789        relativeTime: {
32790            future: 'f’ %s',
32791            past: '%s ilu',
32792            s: 'ftit sekondi',
32793            ss: '%d sekondi',
32794            m: 'minuta',
32795            mm: '%d minuti',
32796            h: 'siegħa',
32797            hh: '%d siegħat',
32798            d: 'ġurnata',
32799            dd: '%d ġranet',
32800            M: 'xahar',
32801            MM: '%d xhur',
32802            y: 'sena',
32803            yy: '%d sni',
32804        },
32805        dayOfMonthOrdinalParse: /\d{1,2}º/,
32806        ordinal: '%dº',
32807        week: {
32808            dow: 1, // Monday is the first day of the week.
32809            doy: 4, // The week that contains Jan 4th is the first week of the year.
32810        },
32811    });
32812
32813    return mt;
32814
32815})));
32816
32817
32818/***/ }),
32819/* 91 */
32820/***/ (function(module, exports, __webpack_require__) {
32821
32822//! moment.js locale configuration
32823//! locale : Burmese [my]
32824//! author : Squar team, mysquar.com
32825//! author : David Rossellat : https://github.com/gholadr
32826//! author : Tin Aung Lin : https://github.com/thanyawzinmin
32827
32828;(function (global, factory) {
32829    true ? factory(__webpack_require__(0)) :
32830   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32831   factory(global.moment)
32832}(this, (function (moment) { 'use strict';
32833
32834    //! moment.js locale configuration
32835
32836    var symbolMap = {
32837            1: '၁',
32838            2: '၂',
32839            3: '၃',
32840            4: '၄',
32841            5: '၅',
32842            6: '၆',
32843            7: '၇',
32844            8: '၈',
32845            9: '၉',
32846            0: '၀',
32847        },
32848        numberMap = {
32849            '၁': '1',
32850            '၂': '2',
32851            '၃': '3',
32852            '၄': '4',
32853            '၅': '5',
32854            '၆': '6',
32855            '၇': '7',
32856            '၈': '8',
32857            '၉': '9',
32858            '၀': '0',
32859        };
32860
32861    var my = moment.defineLocale('my', {
32862        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
32863            '_'
32864        ),
32865        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
32866        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
32867            '_'
32868        ),
32869        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
32870        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
32871
32872        longDateFormat: {
32873            LT: 'HH:mm',
32874            LTS: 'HH:mm:ss',
32875            L: 'DD/MM/YYYY',
32876            LL: 'D MMMM YYYY',
32877            LLL: 'D MMMM YYYY HH:mm',
32878            LLLL: 'dddd D MMMM YYYY HH:mm',
32879        },
32880        calendar: {
32881            sameDay: '[ယနေ.] LT [မှာ]',
32882            nextDay: '[မနက်ဖြန်] LT [မှာ]',
32883            nextWeek: 'dddd LT [မှာ]',
32884            lastDay: '[မနေ.က] LT [မှာ]',
32885            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
32886            sameElse: 'L',
32887        },
32888        relativeTime: {
32889            future: 'လာမည့် %s မှာ',
32890            past: 'လွန်ခဲ့သော %s က',
32891            s: 'စက္ကန်.အနည်းငယ်',
32892            ss: '%d စက္ကန့်',
32893            m: 'တစ်မိနစ်',
32894            mm: '%d မိနစ်',
32895            h: 'တစ်နာရီ',
32896            hh: '%d နာရီ',
32897            d: 'တစ်ရက်',
32898            dd: '%d ရက်',
32899            M: 'တစ်လ',
32900            MM: '%d လ',
32901            y: 'တစ်နှစ်',
32902            yy: '%d နှစ်',
32903        },
32904        preparse: function (string) {
32905            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
32906                return numberMap[match];
32907            });
32908        },
32909        postformat: function (string) {
32910            return string.replace(/\d/g, function (match) {
32911                return symbolMap[match];
32912            });
32913        },
32914        week: {
32915            dow: 1, // Monday is the first day of the week.
32916            doy: 4, // The week that contains Jan 4th is the first week of the year.
32917        },
32918    });
32919
32920    return my;
32921
32922})));
32923
32924
32925/***/ }),
32926/* 92 */
32927/***/ (function(module, exports, __webpack_require__) {
32928
32929//! moment.js locale configuration
32930//! locale : Norwegian Bokmål [nb]
32931//! authors : Espen Hovlandsdal : https://github.com/rexxars
32932//!           Sigurd Gartmann : https://github.com/sigurdga
32933//!           Stephen Ramthun : https://github.com/stephenramthun
32934
32935;(function (global, factory) {
32936    true ? factory(__webpack_require__(0)) :
32937   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
32938   factory(global.moment)
32939}(this, (function (moment) { 'use strict';
32940
32941    //! moment.js locale configuration
32942
32943    var nb = moment.defineLocale('nb', {
32944        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
32945            '_'
32946        ),
32947        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
32948            '_'
32949        ),
32950        monthsParseExact: true,
32951        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
32952        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
32953        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
32954        weekdaysParseExact: true,
32955        longDateFormat: {
32956            LT: 'HH:mm',
32957            LTS: 'HH:mm:ss',
32958            L: 'DD.MM.YYYY',
32959            LL: 'D. MMMM YYYY',
32960            LLL: 'D. MMMM YYYY [kl.] HH:mm',
32961            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
32962        },
32963        calendar: {
32964            sameDay: '[i dag kl.] LT',
32965            nextDay: '[i morgen kl.] LT',
32966            nextWeek: 'dddd [kl.] LT',
32967            lastDay: '[i går kl.] LT',
32968            lastWeek: '[forrige] dddd [kl.] LT',
32969            sameElse: 'L',
32970        },
32971        relativeTime: {
32972            future: 'om %s',
32973            past: '%s siden',
32974            s: 'noen sekunder',
32975            ss: '%d sekunder',
32976            m: 'ett minutt',
32977            mm: '%d minutter',
32978            h: 'en time',
32979            hh: '%d timer',
32980            d: 'en dag',
32981            dd: '%d dager',
32982            w: 'en uke',
32983            ww: '%d uker',
32984            M: 'en måned',
32985            MM: '%d måneder',
32986            y: 'ett år',
32987            yy: '%d år',
32988        },
32989        dayOfMonthOrdinalParse: /\d{1,2}\./,
32990        ordinal: '%d.',
32991        week: {
32992            dow: 1, // Monday is the first day of the week.
32993            doy: 4, // The week that contains Jan 4th is the first week of the year.
32994        },
32995    });
32996
32997    return nb;
32998
32999})));
33000
33001
33002/***/ }),
33003/* 93 */
33004/***/ (function(module, exports, __webpack_require__) {
33005
33006//! moment.js locale configuration
33007//! locale : Nepalese [ne]
33008//! author : suvash : https://github.com/suvash
33009
33010;(function (global, factory) {
33011    true ? factory(__webpack_require__(0)) :
33012   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33013   factory(global.moment)
33014}(this, (function (moment) { 'use strict';
33015
33016    //! moment.js locale configuration
33017
33018    var symbolMap = {
33019            1: '१',
33020            2: '२',
33021            3: '३',
33022            4: '४',
33023            5: '५',
33024            6: '६',
33025            7: '७',
33026            8: '८',
33027            9: '९',
33028            0: '०',
33029        },
33030        numberMap = {
33031            '१': '1',
33032            '२': '2',
33033            '३': '3',
33034            '४': '4',
33035            '५': '5',
33036            '६': '6',
33037            '७': '7',
33038            '८': '8',
33039            '९': '9',
33040            '०': '0',
33041        };
33042
33043    var ne = moment.defineLocale('ne', {
33044        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
33045            '_'
33046        ),
33047        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
33048            '_'
33049        ),
33050        monthsParseExact: true,
33051        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
33052            '_'
33053        ),
33054        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
33055        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
33056        weekdaysParseExact: true,
33057        longDateFormat: {
33058            LT: 'Aको h:mm बजे',
33059            LTS: 'Aको h:mm:ss बजे',
33060            L: 'DD/MM/YYYY',
33061            LL: 'D MMMM YYYY',
33062            LLL: 'D MMMM YYYY, Aको h:mm बजे',
33063            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
33064        },
33065        preparse: function (string) {
33066            return string.replace(/[१२३४५६७८९०]/g, function (match) {
33067                return numberMap[match];
33068            });
33069        },
33070        postformat: function (string) {
33071            return string.replace(/\d/g, function (match) {
33072                return symbolMap[match];
33073            });
33074        },
33075        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
33076        meridiemHour: function (hour, meridiem) {
33077            if (hour === 12) {
33078                hour = 0;
33079            }
33080            if (meridiem === 'राति') {
33081                return hour < 4 ? hour : hour + 12;
33082            } else if (meridiem === 'बिहान') {
33083                return hour;
33084            } else if (meridiem === 'दिउँसो') {
33085                return hour >= 10 ? hour : hour + 12;
33086            } else if (meridiem === 'साँझ') {
33087                return hour + 12;
33088            }
33089        },
33090        meridiem: function (hour, minute, isLower) {
33091            if (hour < 3) {
33092                return 'राति';
33093            } else if (hour < 12) {
33094                return 'बिहान';
33095            } else if (hour < 16) {
33096                return 'दिउँसो';
33097            } else if (hour < 20) {
33098                return 'साँझ';
33099            } else {
33100                return 'राति';
33101            }
33102        },
33103        calendar: {
33104            sameDay: '[आज] LT',
33105            nextDay: '[भोलि] LT',
33106            nextWeek: '[आउँदो] dddd[,] LT',
33107            lastDay: '[हिजो] LT',
33108            lastWeek: '[गएको] dddd[,] LT',
33109            sameElse: 'L',
33110        },
33111        relativeTime: {
33112            future: '%sमा',
33113            past: '%s अगाडि',
33114            s: 'केही क्षण',
33115            ss: '%d सेकेण्ड',
33116            m: 'एक मिनेट',
33117            mm: '%d मिनेट',
33118            h: 'एक घण्टा',
33119            hh: '%d घण्टा',
33120            d: 'एक दिन',
33121            dd: '%d दिन',
33122            M: 'एक महिना',
33123            MM: '%d महिना',
33124            y: 'एक बर्ष',
33125            yy: '%d बर्ष',
33126        },
33127        week: {
33128            dow: 0, // Sunday is the first day of the week.
33129            doy: 6, // The week that contains Jan 6th is the first week of the year.
33130        },
33131    });
33132
33133    return ne;
33134
33135})));
33136
33137
33138/***/ }),
33139/* 94 */
33140/***/ (function(module, exports, __webpack_require__) {
33141
33142//! moment.js locale configuration
33143//! locale : Dutch [nl]
33144//! author : Joris Röling : https://github.com/jorisroling
33145//! author : Jacob Middag : https://github.com/middagj
33146
33147;(function (global, factory) {
33148    true ? factory(__webpack_require__(0)) :
33149   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33150   factory(global.moment)
33151}(this, (function (moment) { 'use strict';
33152
33153    //! moment.js locale configuration
33154
33155    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
33156            '_'
33157        ),
33158        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
33159            '_'
33160        ),
33161        monthsParse = [
33162            /^jan/i,
33163            /^feb/i,
33164            /^maart|mrt.?$/i,
33165            /^apr/i,
33166            /^mei$/i,
33167            /^jun[i.]?$/i,
33168            /^jul[i.]?$/i,
33169            /^aug/i,
33170            /^sep/i,
33171            /^okt/i,
33172            /^nov/i,
33173            /^dec/i,
33174        ],
33175        monthsRegex = /^(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;
33176
33177    var nl = moment.defineLocale('nl', {
33178        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
33179            '_'
33180        ),
33181        monthsShort: function (m, format) {
33182            if (!m) {
33183                return monthsShortWithDots;
33184            } else if (/-MMM-/.test(format)) {
33185                return monthsShortWithoutDots[m.month()];
33186            } else {
33187                return monthsShortWithDots[m.month()];
33188            }
33189        },
33190
33191        monthsRegex: monthsRegex,
33192        monthsShortRegex: monthsRegex,
33193        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
33194        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
vendor: 5,180 bytes, lines 33195-33354
33195
33196        monthsParse: monthsParse,
33197        longMonthsParse: monthsParse,
33198        shortMonthsParse: monthsParse,
33199
33200        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
33201            '_'
33202        ),
33203        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
33204        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
33205        weekdaysParseExact: true,
33206        longDateFormat: {
33207            LT: 'HH:mm',
33208            LTS: 'HH:mm:ss',
33209            L: 'DD-MM-YYYY',
33210            LL: 'D MMMM YYYY',
33211            LLL: 'D MMMM YYYY HH:mm',
33212            LLLL: 'dddd D MMMM YYYY HH:mm',
33213        },
33214        calendar: {
33215            sameDay: '[vandaag om] LT',
33216            nextDay: '[morgen om] LT',
33217            nextWeek: 'dddd [om] LT',
33218            lastDay: '[gisteren om] LT',
33219            lastWeek: '[afgelopen] dddd [om] LT',
33220            sameElse: 'L',
33221        },
33222        relativeTime: {
33223            future: 'over %s',
33224            past: '%s geleden',
33225            s: 'een paar seconden',
33226            ss: '%d seconden',
33227            m: 'één minuut',
33228            mm: '%d minuten',
33229            h: 'één uur',
33230            hh: '%d uur',
33231            d: 'één dag',
33232            dd: '%d dagen',
33233            w: 'één week',
33234            ww: '%d weken',
33235            M: 'één maand',
33236            MM: '%d maanden',
33237            y: 'één jaar',
33238            yy: '%d jaar',
33239        },
33240        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
33241        ordinal: function (number) {
33242            return (
33243                number +
33244                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
33245            );
33246        },
33247        week: {
33248            dow: 1, // Monday is the first day of the week.
33249            doy: 4, // The week that contains Jan 4th is the first week of the year.
33250        },
33251    });
33252
33253    return nl;
33254
33255})));
33256
33257
33258/***/ }),
33259/* 95 */
33260/***/ (function(module, exports, __webpack_require__) {
33261
33262//! moment.js locale configuration
33263//! locale : Dutch (Belgium) [nl-be]
33264//! author : Joris Röling : https://github.com/jorisroling
33265//! author : Jacob Middag : https://github.com/middagj
33266
33267;(function (global, factory) {
33268    true ? factory(__webpack_require__(0)) :
33269   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33270   factory(global.moment)
33271}(this, (function (moment) { 'use strict';
33272
33273    //! moment.js locale configuration
33274
33275    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
33276            '_'
33277        ),
33278        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
33279            '_'
33280        ),
33281        monthsParse = [
33282            /^jan/i,
33283            /^feb/i,
33284            /^maart|mrt.?$/i,
33285            /^apr/i,
33286            /^mei$/i,
33287            /^jun[i.]?$/i,
33288            /^jul[i.]?$/i,
33289            /^aug/i,
33290            /^sep/i,
33291            /^okt/i,
33292            /^nov/i,
33293            /^dec/i,
33294        ],
33295        monthsRegex = /^(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;
33296
33297    var nlBe = moment.defineLocale('nl-be', {
33298        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
33299            '_'
33300        ),
33301        monthsShort: function (m, format) {
33302            if (!m) {
33303                return monthsShortWithDots;
33304            } else if (/-MMM-/.test(format)) {
33305                return monthsShortWithoutDots[m.month()];
33306            } else {
33307                return monthsShortWithDots[m.month()];
33308            }
33309        },
33310
33311        monthsRegex: monthsRegex,
33312        monthsShortRegex: monthsRegex,
33313        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
33314        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
33315
33316        monthsParse: monthsParse,
33317        longMonthsParse: monthsParse,
33318        shortMonthsParse: monthsParse,
33319
33320        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
33321            '_'
33322        ),
33323        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
33324        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
33325        weekdaysParseExact: true,
33326        longDateFormat: {
33327            LT: 'HH:mm',
33328            LTS: 'HH:mm:ss',
33329            L: 'DD/MM/YYYY',
33330            LL: 'D MMMM YYYY',
33331            LLL: 'D MMMM YYYY HH:mm',
33332            LLLL: 'dddd D MMMM YYYY HH:mm',
33333        },
33334        calendar: {
33335            sameDay: '[vandaag om] LT',
33336            nextDay: '[morgen om] LT',
33337            nextWeek: 'dddd [om] LT',
33338            lastDay: '[gisteren om] LT',
33339            lastWeek: '[afgelopen] dddd [om] LT',
33340            sameElse: 'L',
33341        },
33342        relativeTime: {
33343            future: 'over %s',
33344            past: '%s geleden',
33345            s: 'een paar seconden',
33346            ss: '%d seconden',
33347            m: 'één minuut',
33348            mm: '%d minuten',
33349            h: 'één uur',
33350            hh: '%d uur',
33351            d: 'één dag',
33352            dd: '%d dagen',
33353            M: 'één maand',
33354            MM: '%d maanden',
33355            y: 'één jaar',
33356            yy: '%d jaar',
33357        },
33358        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
33359        ordinal: function (number) {
33360            return (
33361                number +
33362                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
33363            );
33364        },
33365        week: {
33366            dow: 1, // Monday is the first day of the week.
33367            doy: 4, // The week that contains Jan 4th is the first week of the year.
33368        },
33369    });
33370
33371    return nlBe;
33372
33373})));
33374
33375
33376/***/ }),
33377/* 96 */
33378/***/ (function(module, exports, __webpack_require__) {
33379
33380//! moment.js locale configuration
33381//! locale : Nynorsk [nn]
33382//! authors : https://github.com/mechuwind
33383//!           Stephen Ramthun : https://github.com/stephenramthun
33384
33385;(function (global, factory) {
33386    true ? factory(__webpack_require__(0)) :
33387   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33388   factory(global.moment)
33389}(this, (function (moment) { 'use strict';
33390
33391    //! moment.js locale configuration
33392
33393    var nn = moment.defineLocale('nn', {
33394        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
33395            '_'
33396        ),
33397        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
33398            '_'
33399        ),
33400        monthsParseExact: true,
33401        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
33402        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
33403        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
33404        weekdaysParseExact: true,
33405        longDateFormat: {
33406            LT: 'HH:mm',
33407            LTS: 'HH:mm:ss',
33408            L: 'DD.MM.YYYY',
33409            LL: 'D. MMMM YYYY',
33410            LLL: 'D. MMMM YYYY [kl.] H:mm',
33411            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
33412        },
33413        calendar: {
33414            sameDay: '[I dag klokka] LT',
33415            nextDay: '[I morgon klokka] LT',
33416            nextWeek: 'dddd [klokka] LT',
33417            lastDay: '[I går klokka] LT',
33418            lastWeek: '[Føregåande] dddd [klokka] LT',
33419            sameElse: 'L',
33420        },
33421        relativeTime: {
33422            future: 'om %s',
33423            past: '%s sidan',
33424            s: 'nokre sekund',
33425            ss: '%d sekund',
33426            m: 'eit minutt',
33427            mm: '%d minutt',
33428            h: 'ein time',
33429            hh: '%d timar',
33430            d: 'ein dag',
33431            dd: '%d dagar',
33432            w: 'ei veke',
33433            ww: '%d veker',
33434            M: 'ein månad',
33435            MM: '%d månader',
33436            y: 'eit år',
33437            yy: '%d år',
33438        },
33439        dayOfMonthOrdinalParse: /\d{1,2}\./,
33440        ordinal: '%d.',
33441        week: {
33442            dow: 1, // Monday is the first day of the week.
33443            doy: 4, // The week that contains Jan 4th is the first week of the year.
33444        },
33445    });
33446
33447    return nn;
33448
33449})));
33450
33451
33452/***/ }),
33453/* 97 */
33454/***/ (function(module, exports, __webpack_require__) {
33455
33456//! moment.js locale configuration
33457//! locale : Occitan, lengadocian dialecte [oc-lnc]
33458//! author : Quentin PAGÈS : https://github.com/Quenty31
33459
33460;(function (global, factory) {
33461    true ? factory(__webpack_require__(0)) :
33462   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33463   factory(global.moment)
33464}(this, (function (moment) { 'use strict';
33465
33466    //! moment.js locale configuration
33467
33468    var ocLnc = moment.defineLocale('oc-lnc', {
33469        months: {
33470            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
33471                '_'
33472            ),
33473            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(
33474                '_'
33475            ),
33476            isFormat: /D[oD]?(\s)+MMMM/,
33477        },
33478        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
33479            '_'
33480        ),
33481        monthsParseExact: true,
33482        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
33483            '_'
33484        ),
33485        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
33486        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
33487        weekdaysParseExact: true,
33488        longDateFormat: {
33489            LT: 'H:mm',
33490            LTS: 'H:mm:ss',
33491            L: 'DD/MM/YYYY',
33492            LL: 'D MMMM [de] YYYY',
33493            ll: 'D MMM YYYY',
33494            LLL: 'D MMMM [de] YYYY [a] H:mm',
33495            lll: 'D MMM YYYY, H:mm',
33496            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
33497            llll: 'ddd D MMM YYYY, H:mm',
33498        },
33499        calendar: {
33500            sameDay: '[uèi a] LT',
33501            nextDay: '[deman a] LT',
33502            nextWeek: 'dddd [a] LT',
33503            lastDay: '[ièr a] LT',
33504            lastWeek: 'dddd [passat a] LT',
33505            sameElse: 'L',
33506        },
33507        relativeTime: {
33508            future: "d'aquí %s",
33509            past: 'fa %s',
33510            s: 'unas segondas',
33511            ss: '%d segondas',
33512            m: 'una minuta',
33513            mm: '%d minutas',
33514            h: 'una ora',
33515            hh: '%d oras',
33516            d: 'un jorn',
33517            dd: '%d jorns',
33518            M: 'un mes',
33519            MM: '%d meses',
33520            y: 'un an',
33521            yy: '%d ans',
33522        },
33523        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
33524        ordinal: function (number, period) {
33525            var output =
33526                number === 1
33527                    ? 'r'
33528                    : number === 2
33529                    ? 'n'
33530                    : number === 3
33531                    ? 'r'
33532                    : number === 4
33533                    ? 't'
33534                    : 'è';
33535            if (period === 'w' || period === 'W') {
33536                output = 'a';
33537            }
33538            return number + output;
33539        },
33540        week: {
33541            dow: 1, // Monday is the first day of the week.
33542            doy: 4,
33543        },
33544    });
33545
33546    return ocLnc;
33547
33548})));
33549
33550
33551/***/ }),
33552/* 98 */
33553/***/ (function(module, exports, __webpack_require__) {
33554
33555//! moment.js locale configuration
33556//! locale : Punjabi (India) [pa-in]
33557//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
33558
33559;(function (global, factory) {
33560    true ? factory(__webpack_require__(0)) :
33561   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33562   factory(global.moment)
33563}(this, (function (moment) { 'use strict';
33564
33565    //! moment.js locale configuration
33566
33567    var symbolMap = {
33568            1: 'à©§',
33569            2: '੨',
33570            3: 'à©©',
33571            4: '੪',
33572            5: 'à©«',
33573            6: '੬',
33574            7: 'à©­',
33575            8: 'à©®',
33576            9: '੯',
33577            0: '੦',
33578        },
33579        numberMap = {
33580            'à©§': '1',
33581            '੨': '2',
33582            'à©©': '3',
33583            '੪': '4',
33584            'à©«': '5',
33585            '੬': '6',
33586            'à©­': '7',
33587            'à©®': '8',
33588            '੯': '9',
33589            '੦': '0',
33590        };
33591
33592    var paIn = moment.defineLocale('pa-in', {
33593        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
33594        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
33595            '_'
33596        ),
33597        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
33598            '_'
33599        ),
33600        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
33601            '_'
33602        ),
33603        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
33604        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
33605        longDateFormat: {
33606            LT: 'A h:mm ਵਜੇ',
33607            LTS: 'A h:mm:ss ਵਜੇ',
33608            L: 'DD/MM/YYYY',
33609            LL: 'D MMMM YYYY',
33610            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
33611            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
33612        },
33613        calendar: {
33614            sameDay: '[ਅਜ] LT',
33615            nextDay: '[ਕਲ] LT',
33616            nextWeek: '[ਅਗਲਾ] dddd, LT',
33617            lastDay: '[ਕਲ] LT',
33618            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
33619            sameElse: 'L',
33620        },
33621        relativeTime: {
33622            future: '%s ਵਿੱਚ',
33623            past: '%s ਪਿਛਲੇ',
33624            s: 'ਕੁਝ ਸਕਿੰਟ',
33625            ss: '%d ਸਕਿੰਟ',
33626            m: 'ਇਕ ਮਿੰਟ',
33627            mm: '%d ਮਿੰਟ',
33628            h: 'ਇੱਕ ਘੰਟਾ',
33629            hh: '%d ਘੰਟੇ',
33630            d: 'ਇੱਕ ਦਿਨ',
33631            dd: '%d ਦਿਨ',
33632            M: 'ਇੱਕ ਮਹੀਨਾ',
33633            MM: '%d ਮਹੀਨੇ',
33634            y: 'ਇੱਕ ਸਾਲ',
33635            yy: '%d ਸਾਲ',
33636        },
33637        preparse: function (string) {
33638            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
33639                return numberMap[match];
33640            });
33641        },
33642        postformat: function (string) {
33643            return string.replace(/\d/g, function (match) {
33644                return symbolMap[match];
33645            });
33646        },
33647        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
33648        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
33649        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
33650        meridiemHour: function (hour, meridiem) {
33651            if (hour === 12) {
33652                hour = 0;
33653            }
33654            if (meridiem === 'ਰਾਤ') {
33655                return hour < 4 ? hour : hour + 12;
33656            } else if (meridiem === 'ਸਵੇਰ') {
33657                return hour;
33658            } else if (meridiem === 'ਦੁਪਹਿਰ') {
33659                return hour >= 10 ? hour : hour + 12;
33660            } else if (meridiem === 'ਸ਼ਾਮ') {
33661                return hour + 12;
33662            }
33663        },
33664        meridiem: function (hour, minute, isLower) {
33665            if (hour < 4) {
33666                return 'ਰਾਤ';
33667            } else if (hour < 10) {
33668                return 'ਸਵੇਰ';
33669            } else if (hour < 17) {
33670                return 'ਦੁਪਹਿਰ';
33671            } else if (hour < 20) {
33672                return 'ਸ਼ਾਮ';
33673            } else {
33674                return 'ਰਾਤ';
33675            }
33676        },
33677        week: {
33678            dow: 0, // Sunday is the first day of the week.
33679            doy: 6, // The week that contains Jan 6th is the first week of the year.
33680        },
33681    });
33682
33683    return paIn;
33684
33685})));
33686
33687
33688/***/ }),
33689/* 99 */
33690/***/ (function(module, exports, __webpack_require__) {
33691
33692//! moment.js locale configuration
33693//! locale : Polish [pl]
33694//! author : Rafal Hirsz : https://github.com/evoL
33695
33696;(function (global, factory) {
33697    true ? factory(__webpack_require__(0)) :
33698   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33699   factory(global.moment)
33700}(this, (function (moment) { 'use strict';
33701
33702    //! moment.js locale configuration
33703
vendor: 27,360 bytes, lines 33704-34492
33704    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
33705            '_'
33706        ),
33707        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
33708            '_'
33709        ),
33710        monthsParse = [
33711            /^sty/i,
33712            /^lut/i,
33713            /^mar/i,
33714            /^kwi/i,
33715            /^maj/i,
33716            /^cze/i,
33717            /^lip/i,
33718            /^sie/i,
33719            /^wrz/i,
33720            /^paź/i,
33721            /^lis/i,
33722            /^gru/i,
33723        ];
33724    function plural(n) {
33725        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
33726    }
33727    function translate(number, withoutSuffix, key) {
33728        var result = number + ' ';
33729        switch (key) {
33730            case 'ss':
33731                return result + (plural(number) ? 'sekundy' : 'sekund');
33732            case 'm':
33733                return withoutSuffix ? 'minuta' : 'minutę';
33734            case 'mm':
33735                return result + (plural(number) ? 'minuty' : 'minut');
33736            case 'h':
33737                return withoutSuffix ? 'godzina' : 'godzinę';
33738            case 'hh':
33739                return result + (plural(number) ? 'godziny' : 'godzin');
33740            case 'ww':
33741                return result + (plural(number) ? 'tygodnie' : 'tygodni');
33742            case 'MM':
33743                return result + (plural(number) ? 'miesiące' : 'miesięcy');
33744            case 'yy':
33745                return result + (plural(number) ? 'lata' : 'lat');
33746        }
33747    }
33748
33749    var pl = moment.defineLocale('pl', {
33750        months: function (momentToFormat, format) {
33751            if (!momentToFormat) {
33752                return monthsNominative;
33753            } else if (/D MMMM/.test(format)) {
33754                return monthsSubjective[momentToFormat.month()];
33755            } else {
33756                return monthsNominative[momentToFormat.month()];
33757            }
33758        },
33759        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
33760        monthsParse: monthsParse,
33761        longMonthsParse: monthsParse,
33762        shortMonthsParse: monthsParse,
33763        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(
33764            '_'
33765        ),
33766        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
33767        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
33768        longDateFormat: {
33769            LT: 'HH:mm',
33770            LTS: 'HH:mm:ss',
33771            L: 'DD.MM.YYYY',
33772            LL: 'D MMMM YYYY',
33773            LLL: 'D MMMM YYYY HH:mm',
33774            LLLL: 'dddd, D MMMM YYYY HH:mm',
33775        },
33776        calendar: {
33777            sameDay: '[Dziś o] LT',
33778            nextDay: '[Jutro o] LT',
33779            nextWeek: function () {
33780                switch (this.day()) {
33781                    case 0:
33782                        return '[W niedzielę o] LT';
33783
33784                    case 2:
33785                        return '[We wtorek o] LT';
33786
33787                    case 3:
33788                        return '[W środę o] LT';
33789
33790                    case 6:
33791                        return '[W sobotę o] LT';
33792
33793                    default:
33794                        return '[W] dddd [o] LT';
33795                }
33796            },
33797            lastDay: '[Wczoraj o] LT',
33798            lastWeek: function () {
33799                switch (this.day()) {
33800                    case 0:
33801                        return '[W zeszłą niedzielę o] LT';
33802                    case 3:
33803                        return '[W zeszłą środę o] LT';
33804                    case 6:
33805                        return '[W zeszłą sobotę o] LT';
33806                    default:
33807                        return '[W zeszły] dddd [o] LT';
33808                }
33809            },
33810            sameElse: 'L',
33811        },
33812        relativeTime: {
33813            future: 'za %s',
33814            past: '%s temu',
33815            s: 'kilka sekund',
33816            ss: translate,
33817            m: translate,
33818            mm: translate,
33819            h: translate,
33820            hh: translate,
33821            d: '1 dzień',
33822            dd: '%d dni',
33823            w: 'tydzień',
33824            ww: translate,
33825            M: 'miesiąc',
33826            MM: translate,
33827            y: 'rok',
33828            yy: translate,
33829        },
33830        dayOfMonthOrdinalParse: /\d{1,2}\./,
33831        ordinal: '%d.',
33832        week: {
33833            dow: 1, // Monday is the first day of the week.
33834            doy: 4, // The week that contains Jan 4th is the first week of the year.
33835        },
33836    });
33837
33838    return pl;
33839
33840})));
33841
33842
33843/***/ }),
33844/* 100 */
33845/***/ (function(module, exports, __webpack_require__) {
33846
33847//! moment.js locale configuration
33848//! locale : Portuguese [pt]
33849//! author : Jefferson : https://github.com/jalex79
33850
33851;(function (global, factory) {
33852    true ? factory(__webpack_require__(0)) :
33853   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33854   factory(global.moment)
33855}(this, (function (moment) { 'use strict';
33856
33857    //! moment.js locale configuration
33858
33859    var pt = moment.defineLocale('pt', {
33860        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
33861            '_'
33862        ),
33863        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
33864        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
33865            '_'
33866        ),
33867        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
33868        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
33869        weekdaysParseExact: true,
33870        longDateFormat: {
33871            LT: 'HH:mm',
33872            LTS: 'HH:mm:ss',
33873            L: 'DD/MM/YYYY',
33874            LL: 'D [de] MMMM [de] YYYY',
33875            LLL: 'D [de] MMMM [de] YYYY HH:mm',
33876            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
33877        },
33878        calendar: {
33879            sameDay: '[Hoje às] LT',
33880            nextDay: '[Amanhã às] LT',
33881            nextWeek: 'dddd [às] LT',
33882            lastDay: '[Ontem às] LT',
33883            lastWeek: function () {
33884                return this.day() === 0 || this.day() === 6
33885                    ? '[Último] dddd [às] LT' // Saturday + Sunday
33886                    : '[Última] dddd [às] LT'; // Monday - Friday
33887            },
33888            sameElse: 'L',
33889        },
33890        relativeTime: {
33891            future: 'em %s',
33892            past: 'há %s',
33893            s: 'segundos',
33894            ss: '%d segundos',
33895            m: 'um minuto',
33896            mm: '%d minutos',
33897            h: 'uma hora',
33898            hh: '%d horas',
33899            d: 'um dia',
33900            dd: '%d dias',
33901            w: 'uma semana',
33902            ww: '%d semanas',
33903            M: 'um mês',
33904            MM: '%d meses',
33905            y: 'um ano',
33906            yy: '%d anos',
33907        },
33908        dayOfMonthOrdinalParse: /\d{1,2}º/,
33909        ordinal: '%dº',
33910        week: {
33911            dow: 1, // Monday is the first day of the week.
33912            doy: 4, // The week that contains Jan 4th is the first week of the year.
33913        },
33914    });
33915
33916    return pt;
33917
33918})));
33919
33920
33921/***/ }),
33922/* 101 */
33923/***/ (function(module, exports, __webpack_require__) {
33924
33925//! moment.js locale configuration
33926//! locale : Portuguese (Brazil) [pt-br]
33927//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
33928
33929;(function (global, factory) {
33930    true ? factory(__webpack_require__(0)) :
33931   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
33932   factory(global.moment)
33933}(this, (function (moment) { 'use strict';
33934
33935    //! moment.js locale configuration
33936
33937    var ptBr = moment.defineLocale('pt-br', {
33938        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
33939            '_'
33940        ),
33941        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
33942        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
33943            '_'
33944        ),
33945        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
33946        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
33947        weekdaysParseExact: true,
33948        longDateFormat: {
33949            LT: 'HH:mm',
33950            LTS: 'HH:mm:ss',
33951            L: 'DD/MM/YYYY',
33952            LL: 'D [de] MMMM [de] YYYY',
33953            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
33954            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
33955        },
33956        calendar: {
33957            sameDay: '[Hoje às] LT',
33958            nextDay: '[Amanhã às] LT',
33959            nextWeek: 'dddd [às] LT',
33960            lastDay: '[Ontem às] LT',
33961            lastWeek: function () {
33962                return this.day() === 0 || this.day() === 6
33963                    ? '[Último] dddd [às] LT' // Saturday + Sunday
33964                    : '[Última] dddd [às] LT'; // Monday - Friday
33965            },
33966            sameElse: 'L',
33967        },
33968        relativeTime: {
33969            future: 'em %s',
33970            past: 'há %s',
33971            s: 'poucos segundos',
33972            ss: '%d segundos',
33973            m: 'um minuto',
33974            mm: '%d minutos',
33975            h: 'uma hora',
33976            hh: '%d horas',
33977            d: 'um dia',
33978            dd: '%d dias',
33979            M: 'um mês',
33980            MM: '%d meses',
33981            y: 'um ano',
33982            yy: '%d anos',
33983        },
33984        dayOfMonthOrdinalParse: /\d{1,2}º/,
33985        ordinal: '%dº',
33986        invalidDate: 'Data inválida',
33987    });
33988
33989    return ptBr;
33990
33991})));
33992
33993
33994/***/ }),
33995/* 102 */
33996/***/ (function(module, exports, __webpack_require__) {
33997
33998//! moment.js locale configuration
33999//! locale : Romanian [ro]
34000//! author : Vlad Gurdiga : https://github.com/gurdiga
34001//! author : Valentin Agachi : https://github.com/avaly
34002//! author : Emanuel Cepoi : https://github.com/cepem
34003
34004;(function (global, factory) {
34005    true ? factory(__webpack_require__(0)) :
34006   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34007   factory(global.moment)
34008}(this, (function (moment) { 'use strict';
34009
34010    //! moment.js locale configuration
34011
34012    function relativeTimeWithPlural(number, withoutSuffix, key) {
34013        var format = {
34014                ss: 'secunde',
34015                mm: 'minute',
34016                hh: 'ore',
34017                dd: 'zile',
34018                ww: 'săptămâni',
34019                MM: 'luni',
34020                yy: 'ani',
34021            },
34022            separator = ' ';
34023        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
34024            separator = ' de ';
34025        }
34026        return number + separator + format[key];
34027    }
34028
34029    var ro = moment.defineLocale('ro', {
34030        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
34031            '_'
34032        ),
34033        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
34034            '_'
34035        ),
34036        monthsParseExact: true,
34037        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
34038        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
34039        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
34040        longDateFormat: {
34041            LT: 'H:mm',
34042            LTS: 'H:mm:ss',
34043            L: 'DD.MM.YYYY',
34044            LL: 'D MMMM YYYY',
34045            LLL: 'D MMMM YYYY H:mm',
34046            LLLL: 'dddd, D MMMM YYYY H:mm',
34047        },
34048        calendar: {
34049            sameDay: '[azi la] LT',
34050            nextDay: '[mâine la] LT',
34051            nextWeek: 'dddd [la] LT',
34052            lastDay: '[ieri la] LT',
34053            lastWeek: '[fosta] dddd [la] LT',
34054            sameElse: 'L',
34055        },
34056        relativeTime: {
34057            future: 'peste %s',
34058            past: '%s în urmă',
34059            s: 'câteva secunde',
34060            ss: relativeTimeWithPlural,
34061            m: 'un minut',
34062            mm: relativeTimeWithPlural,
34063            h: 'o oră',
34064            hh: relativeTimeWithPlural,
34065            d: 'o zi',
34066            dd: relativeTimeWithPlural,
34067            w: 'o săptămână',
34068            ww: relativeTimeWithPlural,
34069            M: 'o lună',
34070            MM: relativeTimeWithPlural,
34071            y: 'un an',
34072            yy: relativeTimeWithPlural,
34073        },
34074        week: {
34075            dow: 1, // Monday is the first day of the week.
34076            doy: 7, // The week that contains Jan 7th is the first week of the year.
34077        },
34078    });
34079
34080    return ro;
34081
34082})));
34083
34084
34085/***/ }),
34086/* 103 */
34087/***/ (function(module, exports, __webpack_require__) {
34088
34089//! moment.js locale configuration
34090//! locale : Russian [ru]
34091//! author : Viktorminator : https://github.com/Viktorminator
34092//! author : Menelion Elensúle : https://github.com/Oire
34093//! author : Коренберг Марк : https://github.com/socketpair
34094
34095;(function (global, factory) {
34096    true ? factory(__webpack_require__(0)) :
34097   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34098   factory(global.moment)
34099}(this, (function (moment) { 'use strict';
34100
34101    //! moment.js locale configuration
34102
34103    function plural(word, num) {
34104        var forms = word.split('_');
34105        return num % 10 === 1 && num % 100 !== 11
34106            ? forms[0]
34107            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
34108            ? forms[1]
34109            : forms[2];
34110    }
34111    function relativeTimeWithPlural(number, withoutSuffix, key) {
34112        var format = {
34113            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
34114            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
34115            hh: 'час_часа_часов',
34116            dd: 'день_дня_дней',
34117            ww: 'неделя_недели_недель',
34118            MM: 'месяц_месяца_месяцев',
34119            yy: 'год_года_лет',
34120        };
34121        if (key === 'm') {
34122            return withoutSuffix ? 'минута' : 'минуту';
34123        } else {
34124            return number + ' ' + plural(format[key], +number);
34125        }
34126    }
34127    var monthsParse = [
34128        /^янв/i,
34129        /^фев/i,
34130        /^мар/i,
34131        /^апр/i,
34132        /^ма[йя]/i,
34133        /^июн/i,
34134        /^июл/i,
34135        /^авг/i,
34136        /^сен/i,
34137        /^окт/i,
34138        /^ноя/i,
34139        /^дек/i,
34140    ];
34141
34142    // http://new.gramota.ru/spravka/rules/139-prop : § 103
34143    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
34144    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
34145    var ru = moment.defineLocale('ru', {
34146        months: {
34147            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
34148                '_'
34149            ),
34150            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
34151                '_'
34152            ),
34153        },
34154        monthsShort: {
34155            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
34156            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
34157                '_'
34158            ),
34159            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
34160                '_'
34161            ),
34162        },
34163        weekdays: {
34164            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
34165                '_'
34166            ),
34167            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
34168                '_'
34169            ),
34170            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
34171        },
34172        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
34173        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
34174        monthsParse: monthsParse,
34175        longMonthsParse: monthsParse,
34176        shortMonthsParse: monthsParse,
34177
34178        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
34179        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
34180
34181        // копия предыдущего
34182        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
34183
34184        // полные названия с падежами
34185        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
34186
34187        // Выражение, которое соответствует только сокращённым формам
34188        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
34189        longDateFormat: {
34190            LT: 'H:mm',
34191            LTS: 'H:mm:ss',
34192            L: 'DD.MM.YYYY',
34193            LL: 'D MMMM YYYY г.',
34194            LLL: 'D MMMM YYYY г., H:mm',
34195            LLLL: 'dddd, D MMMM YYYY г., H:mm',
34196        },
34197        calendar: {
34198            sameDay: '[Сегодня, в] LT',
34199            nextDay: '[Завтра, в] LT',
34200            lastDay: '[Вчера, в] LT',
34201            nextWeek: function (now) {
34202                if (now.week() !== this.week()) {
34203                    switch (this.day()) {
34204                        case 0:
34205                            return '[В следующее] dddd, [в] LT';
34206                        case 1:
34207                        case 2:
34208                        case 4:
34209                            return '[В следующий] dddd, [в] LT';
34210                        case 3:
34211                        case 5:
34212                        case 6:
34213                            return '[В следующую] dddd, [в] LT';
34214                    }
34215                } else {
34216                    if (this.day() === 2) {
34217                        return '[Во] dddd, [в] LT';
34218                    } else {
34219                        return '[В] dddd, [в] LT';
34220                    }
34221                }
34222            },
34223            lastWeek: function (now) {
34224                if (now.week() !== this.week()) {
34225                    switch (this.day()) {
34226                        case 0:
34227                            return '[В прошлое] dddd, [в] LT';
34228                        case 1:
34229                        case 2:
34230                        case 4:
34231                            return '[В прошлый] dddd, [в] LT';
34232                        case 3:
34233                        case 5:
34234                        case 6:
34235                            return '[В прошлую] dddd, [в] LT';
34236                    }
34237                } else {
34238                    if (this.day() === 2) {
34239                        return '[Во] dddd, [в] LT';
34240                    } else {
34241                        return '[В] dddd, [в] LT';
34242                    }
34243                }
34244            },
34245            sameElse: 'L',
34246        },
34247        relativeTime: {
34248            future: 'через %s',
34249            past: '%s назад',
34250            s: 'несколько секунд',
34251            ss: relativeTimeWithPlural,
34252            m: relativeTimeWithPlural,
34253            mm: relativeTimeWithPlural,
34254            h: 'час',
34255            hh: relativeTimeWithPlural,
34256            d: 'день',
34257            dd: relativeTimeWithPlural,
34258            w: 'неделя',
34259            ww: relativeTimeWithPlural,
34260            M: 'месяц',
34261            MM: relativeTimeWithPlural,
34262            y: 'год',
34263            yy: relativeTimeWithPlural,
34264        },
34265        meridiemParse: /ночи|утра|дня|вечера/i,
34266        isPM: function (input) {
34267            return /^(дня|вечера)$/.test(input);
34268        },
34269        meridiem: function (hour, minute, isLower) {
34270            if (hour < 4) {
34271                return 'ночи';
34272            } else if (hour < 12) {
34273                return 'утра';
34274            } else if (hour < 17) {
34275                return 'дня';
34276            } else {
34277                return 'вечера';
34278            }
34279        },
34280        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
34281        ordinal: function (number, period) {
34282            switch (period) {
34283                case 'M':
34284                case 'd':
34285                case 'DDD':
34286                    return number + '-й';
34287                case 'D':
34288                    return number + '-го';
34289                case 'w':
34290                case 'W':
34291                    return number + '-я';
34292                default:
34293                    return number;
34294            }
34295        },
34296        week: {
34297            dow: 1, // Monday is the first day of the week.
34298            doy: 4, // The week that contains Jan 4th is the first week of the year.
34299        },
34300    });
34301
34302    return ru;
34303
34304})));
34305
34306
34307/***/ }),
34308/* 104 */
34309/***/ (function(module, exports, __webpack_require__) {
34310
34311//! moment.js locale configuration
34312//! locale : Sindhi [sd]
34313//! author : Narain Sagar : https://github.com/narainsagar
34314
34315;(function (global, factory) {
34316    true ? factory(__webpack_require__(0)) :
34317   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34318   factory(global.moment)
34319}(this, (function (moment) { 'use strict';
34320
34321    //! moment.js locale configuration
34322
34323    var months = [
34324            'جنوري',
34325            'فيبروري',
34326            'مارچ',
34327            'اپريل',
34328            'مئي',
34329            'جون',
34330            'جولاءِ',
34331            'آگسٽ',
34332            'سيپٽمبر',
34333            'آڪٽوبر',
34334            'نومبر',
34335            'ڊسمبر',
34336        ],
34337        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
34338
34339    var sd = moment.defineLocale('sd', {
34340        months: months,
34341        monthsShort: months,
34342        weekdays: days,
34343        weekdaysShort: days,
34344        weekdaysMin: days,
34345        longDateFormat: {
34346            LT: 'HH:mm',
34347            LTS: 'HH:mm:ss',
34348            L: 'DD/MM/YYYY',
34349            LL: 'D MMMM YYYY',
34350            LLL: 'D MMMM YYYY HH:mm',
34351            LLLL: 'dddd، D MMMM YYYY HH:mm',
34352        },
34353        meridiemParse: /صبح|شام/,
34354        isPM: function (input) {
34355            return 'شام' === input;
34356        },
34357        meridiem: function (hour, minute, isLower) {
34358            if (hour < 12) {
34359                return 'صبح';
34360            }
34361            return 'شام';
34362        },
34363        calendar: {
34364            sameDay: '[اڄ] LT',
34365            nextDay: '[سڀاڻي] LT',
34366            nextWeek: 'dddd [اڳين هفتي تي] LT',
34367            lastDay: '[ڪالهه] LT',
34368            lastWeek: '[گزريل هفتي] dddd [تي] LT',
34369            sameElse: 'L',
34370        },
34371        relativeTime: {
34372            future: '%s پوء',
34373            past: '%s اڳ',
34374            s: 'چند سيڪنڊ',
34375            ss: '%d سيڪنڊ',
34376            m: 'هڪ منٽ',
34377            mm: '%d منٽ',
34378            h: 'هڪ ڪلاڪ',
34379            hh: '%d ڪلاڪ',
34380            d: 'هڪ ڏينهن',
34381            dd: '%d ڏينهن',
34382            M: 'هڪ مهينو',
34383            MM: '%d مهينا',
34384            y: 'هڪ سال',
34385            yy: '%d سال',
34386        },
34387        preparse: function (string) {
34388            return string.replace(/،/g, ',');
34389        },
34390        postformat: function (string) {
34391            return string.replace(/,/g, '،');
34392        },
34393        week: {
34394            dow: 1, // Monday is the first day of the week.
34395            doy: 4, // The week that contains Jan 4th is the first week of the year.
34396        },
34397    });
34398
34399    return sd;
34400
34401})));
34402
34403
34404/***/ }),
34405/* 105 */
34406/***/ (function(module, exports, __webpack_require__) {
34407
34408//! moment.js locale configuration
34409//! locale : Northern Sami [se]
34410//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
34411
34412;(function (global, factory) {
34413    true ? factory(__webpack_require__(0)) :
34414   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34415   factory(global.moment)
34416}(this, (function (moment) { 'use strict';
34417
34418    //! moment.js locale configuration
34419
34420    var se = moment.defineLocale('se', {
34421        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(
34422            '_'
34423        ),
34424        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(
34425            '_'
34426        ),
34427        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
34428            '_'
34429        ),
34430        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
34431        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
34432        longDateFormat: {
34433            LT: 'HH:mm',
34434            LTS: 'HH:mm:ss',
34435            L: 'DD.MM.YYYY',
34436            LL: 'MMMM D. [b.] YYYY',
34437            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
34438            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
34439        },
34440        calendar: {
34441            sameDay: '[otne ti] LT',
34442            nextDay: '[ihttin ti] LT',
34443            nextWeek: 'dddd [ti] LT',
34444            lastDay: '[ikte ti] LT',
34445            lastWeek: '[ovddit] dddd [ti] LT',
34446            sameElse: 'L',
34447        },
34448        relativeTime: {
34449            future: '%s geažes',
34450            past: 'maŋit %s',
34451            s: 'moadde sekunddat',
34452            ss: '%d sekunddat',
34453            m: 'okta minuhta',
34454            mm: '%d minuhtat',
34455            h: 'okta diimmu',
34456            hh: '%d diimmut',
34457            d: 'okta beaivi',
34458            dd: '%d beaivvit',
34459            M: 'okta mánnu',
34460            MM: '%d mánut',
34461            y: 'okta jahki',
34462            yy: '%d jagit',
34463        },
34464        dayOfMonthOrdinalParse: /\d{1,2}\./,
34465        ordinal: '%d.',
34466        week: {
34467            dow: 1, // Monday is the first day of the week.
34468            doy: 4, // The week that contains Jan 4th is the first week of the year.
34469        },
34470    });
34471
34472    return se;
34473
34474})));
34475
34476
34477/***/ }),
34478/* 106 */
34479/***/ (function(module, exports, __webpack_require__) {
34480
34481//! moment.js locale configuration
34482//! locale : Sinhalese [si]
34483//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
34484
34485;(function (global, factory) {
34486    true ? factory(__webpack_require__(0)) :
34487   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34488   factory(global.moment)
34489}(this, (function (moment) { 'use strict';
34490
34491    //! moment.js locale configuration
34492
34493    /*jshint -W100*/
34494    var si = moment.defineLocale('si', {
34495        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
34496            '_'
34497        ),
34498        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
34499            '_'
34500        ),
34501        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
34502            '_'
34503        ),
34504        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
34505        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
34506        weekdaysParseExact: true,
34507        longDateFormat: {
34508            LT: 'a h:mm',
34509            LTS: 'a h:mm:ss',
34510            L: 'YYYY/MM/DD',
34511            LL: 'YYYY MMMM D',
34512            LLL: 'YYYY MMMM D, a h:mm',
34513            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
34514        },
34515        calendar: {
34516            sameDay: '[අද] LT[ට]',
34517            nextDay: '[හෙට] LT[ට]',
34518            nextWeek: 'dddd LT[à¶§]',
34519            lastDay: '[ඊයේ] LT[ට]',
34520            lastWeek: '[පසුගිය] dddd LT[ට]',
34521            sameElse: 'L',
34522        },
34523        relativeTime: {
34524            future: '%sකින්',
34525            past: '%sකට පෙර',
34526            s: 'තත්පර කිහිපය',
34527            ss: 'තත්පර %d',
34528            m: 'මිනිත්තුව',
34529            mm: 'මිනිත්තු %d',
34530            h: 'පැය',
34531            hh: 'පැය %d',
34532            d: 'දිනය',
34533            dd: 'දින %d',
34534            M: 'මාසය',
34535            MM: 'මාස %d',
34536            y: 'වසර',
34537            yy: 'වසර %d',
34538        },
34539        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
34540        ordinal: function (number) {
34541            return number + ' වැනි';
34542        },
34543        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
34544        isPM: function (input) {
34545            return input === 'ප.ව.' || input === 'පස් වරු';
34546        },
34547        meridiem: function (hours, minutes, isLower) {
34548            if (hours > 11) {
34549                return isLower ? 'ප.ව.' : 'පස් වරු';
34550            } else {
34551                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
34552            }
34553        },
34554    });
34555
34556    return si;
34557
34558})));
34559
34560
34561/***/ }),
34562/* 107 */
34563/***/ (function(module, exports, __webpack_require__) {
34564
34565//! moment.js locale configuration
34566//! locale : Slovak [sk]
34567//! author : Martin Minka : https://github.com/k2s
34568//! based on work of petrbela : https://github.com/petrbela
34569
34570;(function (global, factory) {
34571    true ? factory(__webpack_require__(0)) :
34572   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34573   factory(global.moment)
34574}(this, (function (moment) { 'use strict';
34575
34576    //! moment.js locale configuration
34577
34578    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
34579            '_'
34580        ),
34581        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
34582    function plural(n) {
34583        return n > 1 && n < 5;
34584    }
34585    function translate(number, withoutSuffix, key, isFuture) {
34586        var result = number + ' ';
34587        switch (key) {
34588            case 's': // a few seconds / in a few seconds / a few seconds ago
34589                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
34590            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
34591                if (withoutSuffix || isFuture) {
34592                    return result + (plural(number) ? 'sekundy' : 'sekúnd');
34593                } else {
34594                    return result + 'sekundami';
34595                }
34596            case 'm': // a minute / in a minute / a minute ago
34597                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
34598            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
34599                if (withoutSuffix || isFuture) {
34600                    return result + (plural(number) ? 'minúty' : 'minút');
34601                } else {
34602                    return result + 'minútami';
34603                }
34604            case 'h': // an hour / in an hour / an hour ago
34605                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
34606            case 'hh': // 9 hours / in 9 hours / 9 hours ago
34607                if (withoutSuffix || isFuture) {
34608                    return result + (plural(number) ? 'hodiny' : 'hodín');
34609                } else {
34610                    return result + 'hodinami';
34611                }
34612            case 'd': // a day / in a day / a day ago
34613                return withoutSuffix || isFuture ? 'deň' : 'dňom';
34614            case 'dd': // 9 days / in 9 days / 9 days ago
34615                if (withoutSuffix || isFuture) {
34616                    return result + (plural(number) ? 'dni' : 'dní');
34617                } else {
34618                    return result + 'dňami';
34619                }
34620            case 'M': // a month / in a month / a month ago
34621                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
34622            case 'MM': // 9 months / in 9 months / 9 months ago
34623                if (withoutSuffix || isFuture) {
34624                    return result + (plural(number) ? 'mesiace' : 'mesiacov');
34625                } else {
34626                    return result + 'mesiacmi';
34627                }
34628            case 'y': // a year / in a year / a year ago
34629                return withoutSuffix || isFuture ? 'rok' : 'rokom';
34630            case 'yy': // 9 years / in 9 years / 9 years ago
34631                if (withoutSuffix || isFuture) {
34632                    return result + (plural(number) ? 'roky' : 'rokov');
34633                } else {
34634                    return result + 'rokmi';
34635                }
34636        }
34637    }
34638
34639    var sk = moment.defineLocale('sk', {
34640        months: months,
34641        monthsShort: monthsShort,
34642        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
34643        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
34644        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
34645        longDateFormat: {
34646            LT: 'H:mm',
34647            LTS: 'H:mm:ss',
34648            L: 'DD.MM.YYYY',
34649            LL: 'D. MMMM YYYY',
34650            LLL: 'D. MMMM YYYY H:mm',
34651            LLLL: 'dddd D. MMMM YYYY H:mm',
34652        },
34653        calendar: {
34654            sameDay: '[dnes o] LT',
34655            nextDay: '[zajtra o] LT',
34656            nextWeek: function () {
34657                switch (this.day()) {
34658                    case 0:
34659                        return '[v nedeľu o] LT';
34660                    case 1:
34661                    case 2:
34662                        return '[v] dddd [o] LT';
34663                    case 3:
34664                        return '[v stredu o] LT';
34665                    case 4:
34666                        return '[vo štvrtok o] LT';
34667                    case 5:
34668                        return '[v piatok o] LT';
34669                    case 6:
34670                        return '[v sobotu o] LT';
34671                }
34672            },
34673            lastDay: '[včera o] LT',
34674            lastWeek: function () {
34675                switch (this.day()) {
34676                    case 0:
34677                        return '[minulú nedeľu o] LT';
34678                    case 1:
34679                    case 2:
34680                        return '[minulý] dddd [o] LT';
34681                    case 3:
34682                        return '[minulú stredu o] LT';
34683                    case 4:
34684                    case 5:
34685                        return '[minulý] dddd [o] LT';
34686                    case 6:
34687                        return '[minulú sobotu o] LT';
34688                }
34689            },
34690            sameElse: 'L',
34691        },
34692        relativeTime: {
34693            future: 'za %s',
34694            past: 'pred %s',
34695            s: translate,
34696            ss: translate,
34697            m: translate,
34698            mm: translate,
34699            h: translate,
34700            hh: translate,
34701            d: translate,
34702            dd: translate,
34703            M: translate,
34704            MM: translate,
34705            y: translate,
34706            yy: translate,
34707        },
34708        dayOfMonthOrdinalParse: /\d{1,2}\./,
34709        ordinal: '%d.',
34710        week: {
34711            dow: 1, // Monday is the first day of the week.
34712            doy: 4, // The week that contains Jan 4th is the first week of the year.
34713        },
34714    });
34715
34716    return sk;
34717
34718})));
34719
34720
34721/***/ }),
34722/* 108 */
34723/***/ (function(module, exports, __webpack_require__) {
34724
34725//! moment.js locale configuration
34726//! locale : Slovenian [sl]
34727//! author : Robert Sedovšek : https://github.com/sedovsek
34728
34729;(function (global, factory) {
34730    true ? factory(__webpack_require__(0)) :
34731   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34732   factory(global.moment)
34733}(this, (function (moment) { 'use strict';
34734
34735    //! moment.js locale configuration
34736
34737    function processRelativeTime(number, withoutSuffix, key, isFuture) {
34738        var result = number + ' ';
34739        switch (key) {
34740            case 's':
34741                return withoutSuffix || isFuture
34742                    ? 'nekaj sekund'
34743                    : 'nekaj sekundami';
34744            case 'ss':
34745                if (number === 1) {
34746                    result += withoutSuffix ? 'sekundo' : 'sekundi';
34747                } else if (number === 2) {
34748                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
34749                } else if (number < 5) {
34750                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
34751                } else {
34752                    result += 'sekund';
34753                }
34754                return result;
34755            case 'm':
34756                return withoutSuffix ? 'ena minuta' : 'eno minuto';
34757            case 'mm':
34758                if (number === 1) {
34759                    result += withoutSuffix ? 'minuta' : 'minuto';
34760                } else if (number === 2) {
34761                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
34762                } else if (number < 5) {
34763                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
34764                } else {
34765                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
34766                }
34767                return result;
34768            case 'h':
34769                return withoutSuffix ? 'ena ura' : 'eno uro';
34770            case 'hh':
34771                if (number === 1) {
34772                    result += withoutSuffix ? 'ura' : 'uro';
34773                } else if (number === 2) {
34774                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
34775                } else if (number < 5) {
34776                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
34777                } else {
34778                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
34779                }
34780                return result;
34781            case 'd':
34782                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
34783            case 'dd':
34784                if (number === 1) {
34785                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
34786                } else if (number === 2) {
34787                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
34788                } else {
34789                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
34790                }
34791                return result;
34792            case 'M':
34793                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
34794            case 'MM':
34795                if (number === 1) {
34796                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
34797                } else if (number === 2) {
34798                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
34799                } else if (number < 5) {
34800                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
34801                } else {
34802                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
34803                }
34804                return result;
34805            case 'y':
34806                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
34807            case 'yy':
34808                if (number === 1) {
34809                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
34810                } else if (number === 2) {
34811                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
34812                } else if (number < 5) {
34813                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
34814                } else {
34815                    result += withoutSuffix || isFuture ? 'let' : 'leti';
34816                }
34817                return result;
34818        }
34819    }
34820
34821    var sl = moment.defineLocale('sl', {
34822        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
34823            '_'
34824        ),
34825        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
34826            '_'
34827        ),
34828        monthsParseExact: true,
34829        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
34830        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
34831        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
34832        weekdaysParseExact: true,
34833        longDateFormat: {
34834            LT: 'H:mm',
34835            LTS: 'H:mm:ss',
34836            L: 'DD. MM. YYYY',
34837            LL: 'D. MMMM YYYY',
34838            LLL: 'D. MMMM YYYY H:mm',
34839            LLLL: 'dddd, D. MMMM YYYY H:mm',
34840        },
34841        calendar: {
34842            sameDay: '[danes ob] LT',
34843            nextDay: '[jutri ob] LT',
34844
34845            nextWeek: function () {
34846                switch (this.day()) {
34847                    case 0:
34848                        return '[v] [nedeljo] [ob] LT';
34849                    case 3:
34850                        return '[v] [sredo] [ob] LT';
34851                    case 6:
34852                        return '[v] [soboto] [ob] LT';
34853                    case 1:
34854                    case 2:
34855                    case 4:
34856                    case 5:
34857                        return '[v] dddd [ob] LT';
34858                }
34859            },
34860            lastDay: '[včeraj ob] LT',
34861            lastWeek: function () {
34862                switch (this.day()) {
34863                    case 0:
34864                        return '[prejšnjo] [nedeljo] [ob] LT';
34865                    case 3:
34866                        return '[prejšnjo] [sredo] [ob] LT';
34867                    case 6:
34868                        return '[prejšnjo] [soboto] [ob] LT';
34869                    case 1:
34870                    case 2:
34871                    case 4:
34872                    case 5:
34873                        return '[prejšnji] dddd [ob] LT';
34874                }
34875            },
34876            sameElse: 'L',
34877        },
34878        relativeTime: {
34879            future: 'čez %s',
34880            past: 'pred %s',
34881            s: processRelativeTime,
34882            ss: processRelativeTime,
34883            m: processRelativeTime,
34884            mm: processRelativeTime,
34885            h: processRelativeTime,
34886            hh: processRelativeTime,
34887            d: processRelativeTime,
34888            dd: processRelativeTime,
34889            M: processRelativeTime,
34890            MM: processRelativeTime,
34891            y: processRelativeTime,
34892            yy: processRelativeTime,
34893        },
34894        dayOfMonthOrdinalParse: /\d{1,2}\./,
34895        ordinal: '%d.',
34896        week: {
34897            dow: 1, // Monday is the first day of the week.
34898            doy: 7, // The week that contains Jan 7th is the first week of the year.
34899        },
34900    });
34901
34902    return sl;
34903
34904})));
34905
34906
34907/***/ }),
34908/* 109 */
34909/***/ (function(module, exports, __webpack_require__) {
34910
34911//! moment.js locale configuration
34912//! locale : Albanian [sq]
34913//! author : Flakërim Ismani : https://github.com/flakerimi
34914//! author : Menelion Elensúle : https://github.com/Oire
34915//! author : Oerd Cukalla : https://github.com/oerd
34916
34917;(function (global, factory) {
34918    true ? factory(__webpack_require__(0)) :
34919   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
34920   factory(global.moment)
34921}(this, (funct
34921ion (moment) { 'use strict';
34922
34923    //! moment.js locale configuration
34924
34925    var sq = moment.defineLocale('sq', {
34926        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
34927            '_'
34928        ),
34929        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
34930        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
34931            '_'
34932        ),
34933        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
34934        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
34935        weekdaysParseExact: true,
34936        meridiemParse: /PD|MD/,
34937        isPM: function (input) {
34938            return input.charAt(0) === 'M';
34939        },
34940        meridiem: function (hours, minutes, isLower) {
34941            return hours < 12 ? 'PD' : 'MD';
34942        },
34943        longDateFormat: {
34944            LT: 'HH:mm',
34945            LTS: 'HH:mm:ss',
34946            L: 'DD/MM/YYYY',
34947            LL: 'D MMMM YYYY',
34948            LLL: 'D MMMM YYYY HH:mm',
34949            LLLL: 'dddd, D MMMM YYYY HH:mm',
34950        },
34951        calendar: {
34952            sameDay: '[Sot në] LT',
34953            nextDay: '[Nesër në] LT',
34954            nextWeek: 'dddd [në] LT',
34955            lastDay: '[Dje në] LT',
34956            lastWeek: 'dddd [e kaluar në] LT',
34957            sameElse: 'L',
34958        },
34959        relativeTime: {
34960            future: 'në %s',
34961            past: '%s më parë',
34962            s: 'disa sekonda',
34963            ss: '%d sekonda',
34964            m: 'një minutë',
34965            mm: '%d minuta',
34966            h: 'një orë',
34967            hh: '%d orë',
34968            d: 'një ditë',
34969            dd: '%d ditë',
34970            M: 'një muaj',
34971            MM: '%d muaj',
34972            y: 'një vit',
34973            yy: '%d vite',
34974        },
34975        dayOfMonthOrdinalParse: /\d{1,2}\./,
34976        ordinal: '%d.',
34977        week: {
34978            dow: 1, // Monday is the first day of the week.
34979            doy: 4, // The week that contains Jan 4th is the first week of the year.
34980        },
34981    });
34982
34983    return sq;
34984
34985})));
34986
34987
34988/***/ }),
34989/* 110 */
34990/***/ (function(module, exports, __webpack_require__) {
34991
34992//! moment.js locale configuration
34993//! locale : Serbian [sr]
34994//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
34995//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
34996
34997;(function (global, factory) {
34998    true ? factory(__webpack_require__(0)) :
34999   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35000   factory(global.moment)
35001}(this, (function (moment) { 'use strict';
35002
35003    //! moment.js locale configuration
35004
35005    var translator = {
35006        words: {
35007            //Different grammatical cases
35008            ss: ['sekunda', 'sekunde', 'sekundi'],
35009            m: ['jedan minut', 'jedne minute'],
35010            mm: ['minut', 'minute', 'minuta'],
35011            h: ['jedan sat', 'jednog sata'],
35012            hh: ['sat', 'sata', 'sati'],
35013            dd: ['dan', 'dana', 'dana'],
35014            MM: ['mesec', 'meseca', 'meseci'],
35015            yy: ['godina', 'godine', 'godina'],
35016        },
35017        correctGrammaticalCase: function (number, wordKey) {
35018            return number === 1
35019                ? wordKey[0]
35020                : number >= 2 && number <= 4
35021                ? wordKey[1]
35022                : wordKey[2];
35023        },
35024        translate: function (number, withoutSuffix, key) {
35025            var wordKey = translator.words[key];
35026            if (key.length === 1) {
35027                return withoutSuffix ? wordKey[0] : wordKey[1];
35028            } else {
35029                return (
35030                    number +
35031                    ' ' +
35032                    translator.correctGrammaticalCase(number, wordKey)
35033                );
35034            }
35035        },
35036    };
35037
35038    var sr = moment.defineLocale('sr', {
35039        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
35040            '_'
35041        ),
35042        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
35043            '_'
35044        ),
35045        monthsParseExact: true,
35046        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
35047            '_'
35048        ),
35049        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
35050        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
35051        weekdaysParseExact: true,
35052        longDateFormat: {
35053            LT: 'H:mm',
35054            LTS: 'H:mm:ss',
35055            L: 'D. M. YYYY.',
35056            LL: 'D. MMMM YYYY.',
35057            LLL: 'D. MMMM YYYY. H:mm',
35058            LLLL: 'dddd, D. MMMM YYYY. H:mm',
35059        },
35060        calendar: {
35061            sameDay: '[danas u] LT',
35062            nextDay: '[sutra u] LT',
35063            nextWeek: function () {
35064                switch (this.day()) {
35065                    case 0:
35066                        return '[u] [nedelju] [u] LT';
35067                    case 3:
35068                        return '[u] [sredu] [u] LT';
35069                    case 6:
35070                        return '[u] [subotu] [u] LT';
35071                    case 1:
35072                    case 2:
35073                    case 4:
35074                    case 5:
35075                        return '[u] dddd [u] LT';
35076                }
35077            },
35078            lastDay: '[juče u] LT',
35079            lastWeek: function () {
35080                var lastWeekDays = [
35081                    '[prošle] [nedelje] [u] LT',
35082                    '[prošlog] [ponedeljka] [u] LT',
35083                    '[prošlog] [utorka] [u] LT',
35084                    '[prošle] [srede] [u] LT',
35085                    '[prošlog] [četvrtka] [u] LT',
35086                    '[prošlog] [petka] [u] LT',
35087                    '[prošle] [subote] [u] LT',
35088                ];
35089                return lastWeekDays[this.day()];
35090            },
35091            sameElse: 'L',
35092        },
35093        relativeTime: {
35094            future: 'za %s',
35095            past: 'pre %s',
35096            s: 'nekoliko sekundi',
35097            ss: translator.translate,
35098            m: translator.translate,
35099            mm: translator.translate,
35100            h: translator.translate,
35101            hh: translator.translate,
35102            d: 'dan',
35103            dd: translator.translate,
35104            M: 'mesec',
35105            MM: translator.translate,
35106            y: 'godinu',
35107            yy: translator.translate,
35108        },
35109        dayOfMonthOrdinalParse: /\d{1,2}\./,
35110        ordinal: '%d.',
35111        week: {
35112            dow: 1, // Monday is the first day of the week.
35113            doy: 7, // The week that contains Jan 7th is the first week of the year.
35114        },
35115    });
35116
35117    return sr;
35118
35119})));
35120
35121
35122/***/ }),
35123/* 111 */
35124/***/ (function(module, exports, __webpack_require__) {
35125
35126//! moment.js locale configuration
35127//! locale : Serbian Cyrillic [sr-cyrl]
35128//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
35129//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
35130
35131;(function (global, factory) {
35132    true ? factory(__webpack_require__(0)) :
35133   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35134   factory(global.moment)
35135}(this, (function (moment) { 'use strict';
35136
35137    //! moment.js locale configuration
35138
35139    var translator = {
35140        words: {
35141            //Different grammatical cases
35142            ss: ['секунда', 'секунде', 'секунди'],
35143            m: ['један минут', 'једне минуте'],
35144            mm: ['минут', 'минуте', 'минута'],
35145            h: ['један сат', 'једног сата'],
35146            hh: ['сат', 'сата', 'сати'],
35147            dd: ['дан', 'дана', 'дана'],
35148            MM: ['месец', 'месеца', 'месеци'],
35149            yy: ['година', 'године', 'година'],
35150        },
35151        correctGrammaticalCase: function (number, wordKey) {
35152            return number === 1
35153                ? wordKey[0]
35154                : number >= 2 && number <= 4
35155                ? wordKey[1]
35156                : wordKey[2];
35157        },
35158        translate: function (number, withoutSuffix, key) {
35159            var wordKey = translator.words[key];
35160            if (key.length === 1) {
35161                return withoutSuffix ? wordKey[0] : wordKey[1];
35162            } else {
35163                return (
35164                    number +
35165                    ' ' +
35166                    translator.correctGrammaticalCase(number, wordKey)
35167                );
35168            }
35169        },
35170    };
35171
35172    var srCyrl = moment.defineLocale('sr-cyrl', {
35173        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_ок
35173тобар_новембар_децембар'.split(
35174            '_'
35175        ),
35176        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(
35177            '_'
35178        ),
35179        monthsParseExact: true,
35180        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
35181        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
35182        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
35183        weekdaysParseExact: true,
35184        longDateFormat: {
35185            LT: 'H:mm',
35186            LTS: 'H:mm:ss',
35187            L: 'D. M. YYYY.',
35188            LL: 'D. MMMM YYYY.',
35189            LLL: 'D. MMMM YYYY. H:mm',
35190            LLLL: 'dddd, D. MMMM YYYY. H:mm',
35191        },
35192        calendar: {
35193            sameDay: '[данас у] LT',
35194            nextDay: '[сутра у] LT',
35195            nextWeek: function () {
35196                switch (this.day()) {
35197                    case 0:
35198                        return '[у] [недељу] [у] LT';
35199                    case 3:
35200                        return '[у] [среду] [у] LT';
35201                    case 6:
35202                        return '[у] [суботу] [у] LT';
35203                    case 1:
35204                    case 2:
35205                    case 4:
35206                    case 5:
35207                        return '[у] dddd [у] LT';
35208                }
35209            },
35210            lastDay: '[јуче у] LT',
35211            lastWeek: function () {
35212                var lastWeekDays = [
35213                    '[прошле] [недеље] [у] LT',
35214                    '[прошлог] [понедељка] [у] LT',
35215                    '[прошлог] [уторка] [у] LT',
35216                    '[прошле] [среде] [у] LT',
35217                    '[прошлог] [четвртка] [у] LT',
35218                    '[прошлог] [петка] [у] LT',
35219                    '[прошле] [суботе] [у] LT',
35220                ];
35221                return lastWeekDays[this.day()];
35222            },
35223            sameElse: 'L',
35224        },
35225        relativeTime: {
35226            future: 'за %s',
35227            past: 'пре %s',
35228            s: 'неколико секунди',
35229            ss: translator.translate,
35230            m: translator.translate,
35231            mm: translator.translate,
35232            h: translator.translate,
35233            hh: translator.translate,
35234            d: 'дан',
35235            dd: translator.translate,
35236            M: 'месец',
35237            MM: translator.translate,
35238            y: 'годину',
35239            yy: translator.translate,
35240        },
35241        dayOfMonthOrdinalParse: /\d{1,2}\./,
35242        ordinal: '%d.',
35243        week: {
35244            dow: 1, // Monday is the first day of the week.
35245            doy: 7, // The week that contains Jan 1st is the first week of the year.
35246        },
35247    });
35248
35249    return srCyrl;
35250
35251})));
35252
35253
35254/***/ }),
35255/* 112 */
35256/***/ (function(module, exports, __webpack_require__) {
35257
35258//! moment.js locale configuration
35259//! locale : siSwati [ss]
35260//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
35261
35262;(function (global, factory) {
35263    true ? factory(__webpack_require__(0)) :
35264   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35265   factory(global.moment)
35266}(this, (function (moment) { 'use strict';
35267
35268    //! moment.js locale configuration
35269
35270    var ss = moment.defineLocale('ss', {
35271        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
35272            '_'
35273        ),
35274        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
35275        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
35276            '_'
35277        ),
35278        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
35279        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
35280        weekdaysParseExact: true,
35281        longDateFormat: {
35282            LT: 'h:mm A',
35283            LTS: 'h:mm:ss A',
35284            L: 'DD/MM/YYYY',
35285            LL: 'D MMMM YYYY',
35286            LLL: 'D MMMM YYYY h:mm A',
35287            LLLL: 'dddd, D MMMM YYYY h:mm A',
35288        },
35289        calendar: {
35290            sameDay: '[Namuhla nga] LT',
35291            nextDay: '[Kusasa nga] LT',
35292            nextWeek: 'dddd [nga] LT',
35293            lastDay: '[Itolo nga] LT',
35294            lastWeek: 'dddd [leliphelile] [nga] LT',
35295            sameElse: 'L',
35296        },
35297        relativeTime: {
35298            future: 'nga %s',
35299            past: 'wenteka nga %s',
35300            s: 'emizuzwana lomcane',
35301            ss: '%d mzuzwana',
35302            m: 'umzuzu',
35303            mm: '%d emizuzu',
35304            h: 'lihora',
35305            hh: '%d emahora',
35306            d: 'lilanga',
35307            dd: '%d emalanga',
35308            M: 'inyanga',
35309            MM: '%d tinyanga',
35310            y: 'umnyaka',
35311            yy: '%d iminyaka',
35312        },
35313        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
35314        meridiem: function (hours, minutes, isLower) {
35315            if (hours < 11) {
35316                return 'ekuseni';
35317            } else if (hours < 15) {
35318                return 'emini';
35319            } else if (hours < 19) {
35320                return 'entsambama';
35321            } else {
35322                return 'ebusuku';
35323            }
35324        },
35325        meridiemHour: function (hour, meridiem) {
35326            if (hour === 12) {
35327                hour = 0;
35328            }
35329            if (meridiem === 'ekuseni') {
35330                return hour;
35331            } else if (meridiem === 'emini') {
35332                return hour >= 11 ? hour : hour + 12;
35333            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
35334                if (hour === 0) {
35335                    return 0;
35336                }
35337                return hour + 12;
35338            }
35339        },
35340        dayOfMonthOrdinalParse: /\d{1,2}/,
35341        ordinal: '%d',
35342        week: {
35343            dow: 1, // Monday is the first day of the week.
35344            doy: 4, // The week that contains Jan 4th is the first week of the year.
35345        },
35346    });
35347
35348    return ss;
35349
35350})));
35351
35352
35353/***/ }),
35354/* 113 */
35355/***/ (function(module, exports, __webpack_require__) {
35356
35357//! moment.js locale configuration
35358//! locale : Swedish [sv]
35359//! author : Jens Alm : https://github.com/ulmus
35360
35361;(function (global, factory) {
35362    true ? factory(__webpack_require__(0)) :
35363   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35364   factory(global.moment)
35365}(this, (function (moment) { 'use strict';
35366
35367    //! moment.js locale configuration
35368
35369    var sv = moment.defineLocale('sv', {
35370        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
35371            '_'
35372        ),
35373        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
35374        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
35375        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
35376        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
35377        longDateFormat: {
35378            LT: 'HH:mm',
35379            LTS: 'HH:mm:ss',
35380            L: 'YYYY-MM-DD',
35381            LL: 'D MMMM YYYY',
35382            LLL: 'D MMMM YYYY [kl.] HH:mm',
35383            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
35384            lll: 'D MMM YYYY HH:mm',
35385            llll: 'ddd D MMM YYYY HH:mm',
35386        },
35387        calendar: {
35388            sameDay: '[Idag] LT',
35389            nextDay: '[Imorgon] LT',
35390            lastDay: '[Igår] LT',
35391            nextWeek: '[PÃ¥] dddd LT',
35392            lastWeek: '[I] dddd[s] LT',
35393            sameElse: 'L',
35394        },
35395        relativeTime: {
35396            future: 'om %s',
35397            past: 'för %s sedan',
35398            s: 'några sekunder',
35399            ss: '%d sekunder',
35400            m: 'en minut',
35401            mm: '%d minuter',
35402            h: 'en timme',
35403            hh: '%d timmar',
35404            d: 'en dag',
35405            dd: '%d dagar',
35406            M: 'en månad',
35407            MM: '%d månader',
35408            y: 'ett år',
35409            yy: '%d år',
35410        },
35411        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
35412        ordinal: function (number) {
35413            var b = number % 10,
35414                output =
35415                    ~~((number % 100) / 10) === 1
35416                        ? ':e'
35417                        : b === 1
35418                        ? ':a'
35419                        : b === 2
35420                        ? ':a'
35421                        : b === 3
35422                        ? ':e'
35423                        : ':e';
35424            return number + output;
35425        },
35426        week: {
35427            dow: 1, // Monday is the first day of the week.
35428            doy: 4, // The week that contains Jan 4th is the first week of the year.
35429        },
35430    });
35431
35432    return sv;
35433
35434})));
35435
35436
35437/***/ }),
35438/* 114 */
35439/***/ (function(module, exports, __webpack_require__) {
35440
35441//! moment.js locale configuration
35442//! locale : Swahili [sw]
35443//! author : Fahad Kassim : https://github.com/fadsel
35444
35445;(function (global, factory) {
35446    true ? factory(__webpack_require__(0)) :
35447   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35448   factory(global.moment)
35449}(this, (function (moment) { 'use strict';
35450
35451    //! moment.js locale configuration
35452
35453    var sw = moment.defineLocale('sw', {
35454        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
35455            '_'
35456        ),
35457        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
35458        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
35459            '_'
35460        ),
35461        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
35462        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
35463        weekdaysParseExact: true,
35464        longDateFormat: {
35465            LT: 'hh:mm A',
35466            LTS: 'HH:mm:ss',
35467            L: 'DD.MM.YYYY',
35468            LL: 'D MMMM YYYY',
35469            LLL: 'D MMMM YYYY HH:mm',
35470            LLLL: 'dddd, D MMMM YYYY HH:mm',
35471        },
35472        calendar: {
35473            sameDay: '[leo saa] LT',
35474            nextDay: '[kesho saa] LT',
35475            nextWeek: '[wiki ijayo] dddd [saat] LT',
35476            lastDay: '[jana] LT',
35477            lastWeek: '[wiki iliyopita] dddd [saat] LT',
35478            sameElse: 'L',
35479        },
35480        relativeTime: {
35481            future: '%s baadaye',
35482            past: 'tokea %s',
35483            s: 'hivi punde',
35484            ss: 'sekunde %d',
35485            m: 'dakika moja',
35486            mm: 'dakika %d',
35487            h: 'saa limoja',
35488            hh: 'masaa %d',
35489            d: 'siku moja',
35490            dd: 'siku %d',
35491            M: 'mwezi mmoja',
35492            MM: 'miezi %d',
35493            y: 'mwaka mmoja',
35494            yy: 'miaka %d',
35495        },
35496        week: {
35497            dow: 1, // Monday is the first day of the week.
35498            doy: 7, // The week that contains Jan 7th is the first week of the year.
35499        },
35500    });
35501
35502    return sw;
35503
35504})));
35505
35506
35507/***/ }),
35508/* 115 */
35509/***/ (function(module, exports, __webpack_require__) {
35510
35511//! moment.js locale configuration
35512//! locale : Tamil [ta]
35513//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
35514
35515;(function (global, factory) {
35516    true ? factory(__webpack_require__(0)) :
35517   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35518   factory(global.moment)
35519}(this, (function (moment) { 'use strict';
35520
35521    //! moment.js locale configuration
35522
35523    var symbolMap = {
35524            1: '௧',
35525            2: '௨',
35526            3: '௩',
35527            4: '௪',
35528            5: '௫',
35529            6: '௬',
35530            7: '௭',
35531            8: '௮',
35532            9: '௯',
35533            0: '௦',
35534        },
35535        numberMap = {
35536            '௧': '1',
35537            '௨': '2',
35538            '௩': '3',
35539            '௪': '4',
35540            '௫': '5',
35541            '௬': '6',
35542            '௭': '7',
35543            '௮': '8',
35544            '௯': '9',
35545            '௦': '0',
35546        };
35547
35548    var ta = moment.defineLocale('ta', {
35549        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்ப
35549ர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
35550            '_'
35551        ),
35552        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
35553            '_'
35554        ),
35555        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
35556            '_'
35557        ),
35558        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
35559            '_'
35560        ),
35561        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
35562        longDateFormat: {
35563            LT: 'HH:mm',
35564            LTS: 'HH:mm:ss',
35565            L: 'DD/MM/YYYY',
35566            LL: 'D MMMM YYYY',
35567            LLL: 'D MMMM YYYY, HH:mm',
35568            LLLL: 'dddd, D MMMM YYYY, HH:mm',
35569        },
35570        calendar: {
35571            sameDay: '[இன்று] LT',
35572            nextDay: '[நாளை] LT',
35573            nextWeek: 'dddd, LT',
35574            lastDay: '[நேற்று] LT',
35575            lastWeek: '[கடந்த வாரம்] dddd, LT',
35576            sameElse: 'L',
35577        },
35578        relativeTime: {
35579            future: '%s இல்',
35580            past: '%s முன்',
35581            s: 'ஒரு சில விநாடிகள்',
35582            ss: '%d விநாடிகள்',
35583            m: 'ஒரு நிமிடம்',
35584            mm: '%d நிமிடங்கள்',
35585            h: 'ஒரு மணி நேரம்',
35586            hh: '%d மணி நேரம்',
35587            d: 'ஒரு நாள்',
35588            dd: '%d நாட்கள்',
35589            M: 'ஒரு மாதம்',
35590            MM: '%d மாதங்கள்',
35591            y: 'ஒரு வருடம்',
35592            yy: '%d ஆண்டுகள்',
35593        },
35594        dayOfMonthOrdinalParse: /\d{1,2}வது/,
35595        ordinal: function (number) {
35596            return number + 'வது';
35597        },
35598        preparse: function (string) {
35599            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
35600                return numberMap[match];
35601            });
35602        },
35603        postformat: function (string) {
35604            return string.replace(/\d/g, function (match) {
35605                return symbolMap[match];
35606            });
35607        },
35608        // refer http://ta.wikipedia.org/s/1er1
35609        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
35610        meridiem: function (hour, minute, isLower) {
35611            if (hour < 2) {
35612                return ' யாமம்';
35613            } else if (hour < 6) {
35614                return ' வைகறை'; // வைகறை
35615            } else if (hour < 10) {
35616                return ' காலை'; // காலை
35617            } else if (hour < 14) {
35618                return ' நண்பகல்'; // நண்பகல்
35619            } else if (hour < 18) {
35620                return ' எற்பாடு'; // எற்பாடு
35621            } else if (hour < 22) {
35622                return ' மாலை'; // மாலை
35623            } else {
35624                return ' யாமம்';
35625            }
35626        },
35627        meridiemHour: function (hour, meridiem) {
35628            if (hour === 12) {
35629                hour = 0;
35630            }
35631            if (meridiem === 'யாமம்') {
35632                return hour < 2 ? hour : hour + 12;
35633            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
35634                return hour;
35635            } else if (meridiem === 'நண்பகல்') {
35636                return hour >= 10 ? hour : hour + 12;
35637            } else {
35638                return hour + 12;
35639            }
35640        },
35641        week: {
35642            dow: 0, // Sunday is the first day of the week.
35643            doy: 6, // The week that contains Jan 6th is the first week of the year.
35644        },
35645    });
35646
35647    return ta;
35648
35649})));
35650
35651
35652/***/ }),
35653/* 116 */
35654/***/ (function(module, exports, __webpack_require__) {
35655
35656//! moment.js locale configuration
35657//! locale : Telugu [te]
35658//! author : Krishna Chaitanya Thota : https://github.com/kcthota
35659
35660;(function (global, factory) {
35661    true ? factory(__webpack_require__(0)) :
35662   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35663   factory(global.moment)
35664}(this, (function (moment) { 'use strict';
35665
35666    //! moment.js locale configuration
35667
35668    var te = moment.defineLocale('te', {
35669        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
35670            '_'
35671        ),
35672        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
35673            '_'
35674        ),
35675        monthsParseExact: true,
35676        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
35677            '_'
35678        ),
35679        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
35680        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
35681        longDateFormat: {
35682            LT: 'A h:mm',
35683            LTS: 'A h:mm:ss',
35684            L: 'DD/MM/YYYY',
35685            LL: 'D MMMM YYYY',
35686            LLL: 'D MMMM YYYY, A h:mm',
35687            LLLL: 'dddd, D MMMM YYYY, A h:mm',
35688        },
35689        calendar: {
35690            sameDay: '[నేడు] LT',
35691            nextDay: '[రేపు] LT',
35692            nextWeek: 'dddd, LT',
35693            lastDay: '[నిన్న] LT',
35694            lastWeek: '[గత] dddd, LT',
35695            sameElse: 'L',
35696        },
35697        relativeTime: {
35698            future: '%s లో',
35699            past: '%s క్రితం',
35700            s: 'కొన్ని క్షణాలు',
35701            ss: '%d సెకన్లు',
35702            m: 'ఒక నిమిషం',
35703            mm: '%d నిమిషాలు',
35704            h: 'ఒక గంట',
35705            hh: '%d గంటలు',
35706            d: 'ఒక రోజు',
35707            dd: '%d రోజులు',
35708            M: 'ఒక నెల',
35709            MM: '%d నెలలు',
35710            y: 'ఒక సంవత్సరం',
35711            yy: '%d సంవత్సరాలు',
35712        },
35713        dayOfMonthOrdinalParse: /\d{1,2}à°µ/,
35714        ordinal: '%dà°µ',
35715        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
35716        meridiemHour: function (hour, meridiem) {
35717            if (hour === 12) {
35718                hour = 0;
35719            }
35720            if (meridiem === 'రాత్రి') {
35721                return hour < 4 ? hour : hour + 12;
35722            } else if (meridiem === 'ఉదయం') {
35723                return hour;
35724            } else if (meridiem === 'మధ్యాహ్నం') {
35725                return hour >= 10 ? hour : hour + 12;
35726            } else if (meridiem === 'సాయంత్రం') {
35727                return hour + 12;
35728            }
35729        },
35730        meridiem: function (hour, minute, isLower) {
35731            if (hour < 4) {
35732                return 'రాత్రి';
35733            } else if (hour < 10) {
35734                return 'ఉదయం';
35735            } else if (hour < 17) {
35736                return 'మధ్యాహ్నం';
35737            } else if (hour < 20) {
35738                return 'సాయంత్రం';
35739            } else {
35740                return 'రాత్రి';
35741            }
35742        },
35743        week: {
35744            dow: 0, // Sunday is the first day of the week.
35745            doy: 6, // The week that contains Jan 6th is the first week of the year.
35746        },
35747    });
35748
35749    return te;
35750
35751})));
35752
35753
35754/***/ }),
35755/* 117 */
35756/***/ (function(module, exports, __webpack_require__) {
35757
35758//! moment.js locale configuration
35759//! locale : Tetun Dili (East Timor) [tet]
35760//! author : Joshua Brooks : https://github.com/joshbrooks
35761//! author : Onorio De J. Afonso : https://github.com/marobo
35762//! author : Sonia Simoes : https://github.com/soniasimoes
35763
35764;(function (global, factory) {
35765    true ? factory(__webpack_require__(0)) :
35766   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35767   factory(global.moment)
35768}(this, (function (moment) { 'use strict';
35769
35770    //! moment.js locale configuration
35771
35772    var tet = moment.defineLocale('tet', {
35773        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
35774            '_'
35775        ),
35776        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
35777        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
35778        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
35779        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
35780        longDateFormat: {
35781            LT: 'HH:mm',
35782            LTS: 'HH:mm:ss',
35783            L: 'DD/MM/YYYY',
35784            LL: 'D MMMM YYYY',
35785            LLL: 'D MMMM YYYY HH:mm',
35786            LLLL: 'dddd, D MMMM YYYY HH:mm',
35787        },
35788        calendar: {
35789            sameDay: '[Ohin iha] LT',
35790            nextDay: '[Aban iha] LT',
35791            nextWeek: 'dddd [iha] LT',
35792            lastDay: '[Horiseik iha] LT',
35793            lastWeek: 'dddd [semana kotuk] [iha] LT',
35794            sameElse: 'L',
35795        },
35796        relativeTime: {
35797            future: 'iha %s',
35798            past: '%s liuba',
35799            s: 'segundu balun',
35800            ss: 'segundu %d',
35801            m: 'minutu ida',
35802            mm: 'minutu %d',
35803            h: 'oras ida',
35804            hh: 'oras %d',
35805            d: 'loron ida',
35806            dd: 'loron %d',
35807            M: 'fulan ida',
35808            MM: 'fulan %d',
35809            y: 'tinan ida',
35810            yy: 'tinan %d',
35811        },
35812        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
35813        ordinal: function (number) {
35814            var b = number % 10,
35815                output =
35816                    ~~((number % 100) / 10) === 1
35817                        ? 'th'
35818                        : b === 1
35819                        ? 'st'
35820                        : b === 2
35821                        ? 'nd'
35822                        : b === 3
35823                        ? 'rd'
35824                        : 'th';
35825            return number + output;
35826        },
35827        week: {
35828            dow: 1, // Monday is the first day of the week.
35829            doy: 4, // The week that contains Jan 4th is the first week of the year.
35830        },
35831    });
35832
35833    return tet;
35834
35835})));
35836
35837
35838/***/ }),
35839/* 118 */
35840/***/ (function(module, exports, __webpack_require__) {
35841
35842//! moment.js locale configuration
35843//! locale : Tajik [tg]
35844//! author : Orif N. Jr. : https://github.com/orif-jr
35845
35846;(function (global, factory) {
35847    true ? factory(__webpack_require__(0)) :
35848   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35849   factory(global.moment)
35850}(this, (function (moment) { 'use strict';
35851
35852    //! moment.js locale configuration
35853
35854    var suffixes = {
35855        0: '-ум',
35856        1: '-ум',
35857        2: '-юм',
35858        3: '-юм',
35859        4: '-ум',
35860        5: '-ум',
35861        6: '-ум',
35862        7: '-ум',
35863        8: '-ум',
35864        9: '-ум',
35865        10: '-ум',
35866        12: '-ум',
35867        13: '-ум',
35868        20: '-ум',
35869        30: '-юм',
35870        40: '-ум',
35871        50: '-ум',
35872        60: '-ум',
35873        70: '-ум',
35874        80: '-ум',
35875        90: '-ум',
35876        100: '-ум',
35877    };
35878
35879    var tg = moment.defineLocale('tg', {
35880        months: {
35881            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
35882                '_'
35883            ),
35884            standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
35885                '_'
35886            ),
35887        },
35888        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
35889        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
35890            '_'
35891        ),
35892        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
35893        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
35894        longDateFormat: {
35895            LT: 'HH:mm',
35896            LTS: 'HH:mm:ss',
35897            L: 'DD.MM.YYYY',
35898            LL: 'D MMMM YYYY',
35899            LLL: 'D MMMM YYYY HH:mm',
35900            LLLL: 'dddd, D MMMM YYYY HH:mm',
35901        },
35902        calendar: {
35903            sameDay: '[Имрӯз соати] LT',
35904            nextDay: '[Фардо соати] LT',
35905            lastDay: '[Дирӯз соати] LT',
35906            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
35907            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
35908            sameElse: 'L',
35909        },
35910        relativeTime: {
35911            future: 'баъди %s',
35912            past: '%s пеш',
35913            s: 'якчанд сония',
35914            m: 'як дақиқа',
35915            mm: '%d дақиқа',
35916            h: 'як соат',
35917            hh: '%d соат',
35918            d: 'як рӯз',
35919            dd: '%d рӯз',
35920            M: 'як моҳ',
35921            MM: '%d моҳ',
35922            y: 'як сол',
35923            yy: '%d сол',
35924        },
35925        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
35926        meridiemHour: function (hour, meridiem) {
35927            if (hour === 12) {
35928                hour = 0;
35929            }
35930            if (meridiem === 'шаб') {
35931                return hour < 4 ? hour : hour + 12;
35932            } else if (meridiem === 'субҳ') {
35933                return hour;
35934            } else if (meridiem === 'рӯз') {
35935                return hour >= 11 ? hour : hour + 12;
35936            } else if (meridiem === 'бегоҳ') {
35937                return hour + 12;
35938            }
35939        },
35940        meridiem: function (hour, minute, isLower) {
35941            if (hour < 4) {
35942                return 'шаб';
35943            } else if (hour < 11) {
35944                return 'субҳ';
35945            } else if (hour < 16) {
35946                return 'рӯз';
35947            } else if (hour < 19) {
35948                return 'бегоҳ';
35949            } else {
35950                return 'шаб';
35951            }
35952        },
35953        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
35954        ordinal: function (number) {
35955            var a = number % 10,
35956                b = number >= 100 ? 100 : null;
35957            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
35958        },
35959        week: {
35960            dow: 1, // Monday is the first day of the week.
35961            doy: 7, // The week that contains Jan 1th is the first week of the year.
35962        },
35963    });
35964
35965    return tg;
35966
35967})));
35968
35969
35970/***/ }),
35971/* 119 */
35972/***/ (function(module, exports, __webpack_require__) {
35973
35974//! moment.js locale configuration
35975//! locale : Thai [th]
35976//! author : Kridsada Thanabulpong : https://github.com/sirn
35977
35978;(function (global, factory) {
35979    true ? factory(__webpack_require__(0)) :
35980   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
35981   factory(global.moment)
35982}(this, (function (moment) { 'use strict';
35983
35984    //! moment.js locale configuration
35985
35986    var th = moment.defineLocale('th', {
35987        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
35988            '_'
35989        ),
35990        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
35991            '_'
35992        ),
35993        monthsParseExact: true,
35994        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.
vendor: 7,079 bytes, lines 35994-36209
35994split('_'),
35995        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
35996        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
35997        weekdaysParseExact: true,
35998        longDateFormat: {
35999            LT: 'H:mm',
36000            LTS: 'H:mm:ss',
36001            L: 'DD/MM/YYYY',
36002            LL: 'D MMMM YYYY',
36003            LLL: 'D MMMM YYYY เวลา H:mm',
36004            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
36005        },
36006        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
36007        isPM: function (input) {
36008            return input === 'หลังเที่ยง';
36009        },
36010        meridiem: function (hour, minute, isLower) {
36011            if (hour < 12) {
36012                return 'ก่อนเที่ยง';
36013            } else {
36014                return 'หลังเที่ยง';
36015            }
36016        },
36017        calendar: {
36018            sameDay: '[วันนี้ เวลา] LT',
36019            nextDay: '[พรุ่งนี้ เวลา] LT',
36020            nextWeek: 'dddd[หน้า เวลา] LT',
36021            lastDay: '[เมื่อวานนี้ เวลา] LT',
36022            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
36023            sameElse: 'L',
36024        },
36025        relativeTime: {
36026            future: 'อีก %s',
36027            past: '%sที่แล้ว',
36028            s: 'ไม่กี่วินาที',
36029            ss: '%d วินาที',
36030            m: '1 นาที',
36031            mm: '%d นาที',
36032            h: '1 ชั่วโมง',
36033            hh: '%d ชั่วโมง',
36034            d: '1 วัน',
36035            dd: '%d วัน',
36036            w: '1 สัปดาห์',
36037            ww: '%d สัปดาห์',
36038            M: '1 เดือน',
36039            MM: '%d เดือน',
36040            y: '1 ปี',
36041            yy: '%d ปี',
36042        },
36043    });
36044
36045    return th;
36046
36047})));
36048
36049
36050/***/ }),
36051/* 120 */
36052/***/ (function(module, exports, __webpack_require__) {
36053
36054//! moment.js locale configuration
36055//! locale : Turkmen [tk]
36056//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
36057
36058;(function (global, factory) {
36059    true ? factory(__webpack_require__(0)) :
36060   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36061   factory(global.moment)
36062}(this, (function (moment) { 'use strict';
36063
36064    //! moment.js locale configuration
36065
36066    var suffixes = {
36067        1: "'inji",
36068        5: "'inji",
36069        8: "'inji",
36070        70: "'inji",
36071        80: "'inji",
36072        2: "'nji",
36073        7: "'nji",
36074        20: "'nji",
36075        50: "'nji",
36076        3: "'ünji",
36077        4: "'ünji",
36078        100: "'ünji",
36079        6: "'njy",
36080        9: "'unjy",
36081        10: "'unjy",
36082        30: "'unjy",
36083        60: "'ynjy",
36084        90: "'ynjy",
36085    };
36086
36087    var tk = moment.defineLocale('tk', {
36088        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
36089            '_'
36090        ),
36091        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
36092        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
36093            '_'
36094        ),
36095        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
36096        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
36097        longDateFormat: {
36098            LT: 'HH:mm',
36099            LTS: 'HH:mm:ss',
36100            L: 'DD.MM.YYYY',
36101            LL: 'D MMMM YYYY',
36102            LLL: 'D MMMM YYYY HH:mm',
36103            LLLL: 'dddd, D MMMM YYYY HH:mm',
36104        },
36105        calendar: {
36106            sameDay: '[bugün sagat] LT',
36107            nextDay: '[ertir sagat] LT',
36108            nextWeek: '[indiki] dddd [sagat] LT',
36109            lastDay: '[düýn] LT',
36110            lastWeek: '[geçen] dddd [sagat] LT',
36111            sameElse: 'L',
36112        },
36113        relativeTime: {
36114            future: '%s soň',
36115            past: '%s öň',
36116            s: 'birnäçe sekunt',
36117            m: 'bir minut',
36118            mm: '%d minut',
36119            h: 'bir sagat',
36120            hh: '%d sagat',
36121            d: 'bir gün',
36122            dd: '%d gün',
36123            M: 'bir aý',
36124            MM: '%d aý',
36125            y: 'bir ýyl',
36126            yy: '%d ýyl',
36127        },
36128        ordinal: function (number, period) {
36129            switch (period) {
36130                case 'd':
36131                case 'D':
36132                case 'Do':
36133                case 'DD':
36134                    return number;
36135                default:
36136                    if (number === 0) {
36137                        // special case for zero
36138                        return number + "'unjy";
36139                    }
36140                    var a = number % 10,
36141                        b = (number % 100) - a,
36142                        c = number >= 100 ? 100 : null;
36143                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
36144            }
36145        },
36146        week: {
36147            dow: 1, // Monday is the first day of the week.
36148            doy: 7, // The week that contains Jan 7th is the first week of the year.
36149        },
36150    });
36151
36152    return tk;
36153
36154})));
36155
36156
36157/***/ }),
36158/* 121 */
36159/***/ (function(module, exports, __webpack_require__) {
36160
36161//! moment.js locale configuration
36162//! locale : Tagalog (Philippines) [tl-ph]
36163//! author : Dan Hagman : https://github.com/hagmandan
36164
36165;(function (global, factory) {
36166    true ? factory(__webpack_require__(0)) :
36167   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36168   factory(global.moment)
36169}(this, (function (moment) { 'use strict';
36170
36171    //! moment.js locale configuration
36172
36173    var tlPh = moment.defineLocale('tl-ph', {
36174        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
36175            '_'
36176        ),
36177        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
36178        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
36179            '_'
36180        ),
36181        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
36182        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
36183        longDateFormat: {
36184            LT: 'HH:mm',
36185            LTS: 'HH:mm:ss',
36186            L: 'MM/D/YYYY',
36187            LL: 'MMMM D, YYYY',
36188            LLL: 'MMMM D, YYYY HH:mm',
36189            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
36190        },
36191        calendar: {
36192            sameDay: 'LT [ngayong araw]',
36193            nextDay: '[Bukas ng] LT',
36194            nextWeek: 'LT [sa susunod na] dddd',
36195            lastDay: 'LT [kahapon]',
36196            lastWeek: 'LT [noong nakaraang] dddd',
36197            sameElse: 'L',
36198        },
36199        relativeTime: {
36200            future: 'sa loob ng %s',
36201            past: '%s ang nakalipas',
36202            s: 'ilang segundo',
36203            ss: '%d segundo',
36204            m: 'isang minuto',
36205            mm: '%d minuto',
36206            h: 'isang oras',
36207            hh: '%d oras',
36208            d: 'isang araw',
36209            dd: '%d araw',
36210            M: 'isang buwan',
36211            MM: '%d buwan',
36212            y: 'isang taon',
36213            yy: '%d taon',
36214        },
36215        dayOfMonthOrdinalParse: /\d{1,2}/,
36216        ordinal: function (number) {
36217            return number;
36218        },
36219        week: {
36220            dow: 1, // Monday is the first day of the week.
36221            doy: 4, // The week that contains Jan 4th is the first week of the year.
36222        },
36223    });
36224
36225    return tlPh;
36226
36227})));
36228
36229
36230/***/ }),
36231/* 122 */
36232/***/ (function(module, exports, __webpack_require__) {
36233
36234//! moment.js locale configuration
36235//! locale : Klingon [tlh]
36236//! author : Dominika Kruk : https://github.com/amaranthrose
36237
36238;(function (global, factory) {
36239    true ? factory(__webpack_require__(0)) :
36240   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36241   factory(global.moment)
36242}(this, (function (moment) { 'use strict';
36243
36244    //! moment.js locale configuration
36245
36246    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
36247
36248    function translateFuture(output) {
36249        var time = output;
36250        time =
36251            output.indexOf('jaj') !== -1
36252                ? time.slice(0, -3) + 'leS'
36253                : output.indexOf('jar') !== -1
36254                ? time.slice(0, -3) + 'waQ'
36255                : output.indexOf('DIS') !== -1
36256                ? time.slice(0, -3) + 'nem'
36257                : time + ' pIq';
36258        return time;
36259    }
36260
36261    function translatePast(output) {
36262        var time = output;
36263        time =
36264            output.indexOf('jaj') !== -1
36265                ? time.slice(0, -3) + 'Hu’'
36266                : output.indexOf('jar') !== -1
36267                ? time.slice(0, -3) + 'wen'
36268                : output.indexOf('DIS') !== -1
36269                ? time.slice(0, -3) + 'ben'
36270                : time + ' ret';
36271        return time;
36272    }
36273
36274    function translate(number, withoutSuffix, string, isFuture) {
36275        var numberNoun = numberAsNoun(number);
36276        switch (string) {
36277            case 'ss':
36278                return numberNoun + ' lup';
36279            case 'mm':
36280                return numberNoun + ' tup';
36281            case 'hh':
36282                return numberNoun + ' rep';
36283            case 'dd':
36284                return numberNoun + ' jaj';
36285            case 'MM':
36286                return numberNoun + ' jar';
36287            case 'yy':
36288                return numberNoun + ' DIS';
36289        }
36290    }
36291
36292    function numberAsNoun(number) {
36293        var hundred = Math.floor((number % 1000) / 100),
36294            ten = Math.floor((number % 100) / 10),
36295            one = number % 10,
36296            word = '';
36297        if (hundred > 0) {
36298            word += numbersNouns[hundred] + 'vatlh';
36299        }
36300        if (ten > 0) {
36301            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
36302        }
36303        if (one > 0) {
36304            word += (word !== '' ? ' ' : '') + numbersNouns[one];
36305        }
36306        return word === '' ? 'pagh' : word;
36307    }
36308
36309    var tlh = moment.defineLocale('tlh', {
36310        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(
36311            '_'
36312        ),
36313        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
36314            '_'
36315        ),
36316        monthsParseExact: true,
36317        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
36318            '_'
36319        ),
36320        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
36321            '_'
36322        ),
36323        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
36324            '_'
36325        ),
36326        longDateFormat: {
36327            LT: 'HH:mm',
36328            LTS: 'HH:mm:ss',
36329            L: 'DD.MM.YYYY',
36330            LL: 'D MMMM YYYY',
36331            LLL: 'D MMMM YYYY HH:mm',
36332            LLLL: 'dddd, D MMMM YYYY HH:mm',
36333        },
36334        calendar: {
36335            sameDay: '[DaHjaj] LT',
36336            nextDay: '[wa’leS] LT',
36337            nextWeek: 'LLL',
36338            lastDay: '[wa’Hu’] LT',
36339            lastWeek: 'LLL',
36340            sameElse: 'L',
36341        },
36342        relativeTime: {
36343            future: translateFuture,
36344            past: translatePast,
36345            s: 'puS lup',
36346            ss: translate,
36347            m: 'wa’ tup',
36348            mm: translate,
36349            h: 'wa’ rep',
36350            hh: translate,
36351            d: 'wa’ jaj',
36352            dd: translate,
36353            M: 'wa’ jar',
36354            MM: translate,
36355            y: 'wa’ DIS',
36356            yy: translate,
36357        },
36358        dayOfMonthOrdinalParse: /\d{1,2}\./,
36359        ordinal: '%d.',
36360        week: {
36361            dow: 1, // Monday is the first day of the week.
36362            doy: 4, // The week that contains Jan 4th is the first week of the year.
36363        },
36364    });
36365
36366    return tlh;
36367
36368})));
36369
36370
36371/***/ }),
36372/* 123 */
36373/***/ (function(module, exports, __webpack_require__) {
36374
36375//! moment.js locale configuration
36376//! locale : Turkish [tr]
36377//! authors : Erhan Gundogan : https://github.com/erhangundogan,
36378//!           Burak Yiğit Kaya: https://github.com/BYK
36379
36380;(function (global, factory) {
36381    true ? factory(__webpack_require__(0)) :
36382   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36383   factory(global.moment)
36384}(this, (function (moment) { 'use strict';
36385
36386    //! moment.js locale configuration
36387
36388    var suffixes = {
36389        1: "'inci",
36390        5: "'inci",
36391        8: "'inci",
36392        70: "'inci",
36393        80: "'inci",
36394        2: "'nci",
36395        7: "'nci",
36396        20: "'nci",
36397        50: "'nci",
36398        3: "'üncü",
36399        4: "'üncü",
36400        100: "'üncü",
36401        6: "'ncı",
36402        9: "'uncu",
36403        10: "'uncu",
36404        30: "'uncu",
36405        60: "'ıncı",
36406        90: "'ıncı",
36407    };
36408
36409    var tr = moment.defineLocale('tr', {
36410        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
36411            '_'
36412        ),
36413        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
36414        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
36415            '_'
36416        ),
36417        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
36418        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
36419        meridiem: function (hours, minutes, isLower) {
36420            if (hours < 12) {
36421                return isLower ? 'öö' : 'ÖÖ';
36422            } else {
36423                return isLower ? 'ös' : 'ÖS';
36424            }
36425        },
36426        meridiemParse: /öö|ÖÖ|ös|ÖS/,
36427        isPM: function (input) {
36428            return input === 'ös' || input === 'ÖS';
36429        },
36430        longDateFormat: {
36431            LT: 'HH:mm',
36432            LTS: 'HH:mm:ss',
36433            L: 'DD.MM.YYYY',
36434            LL: 'D MMMM YYYY',
36435            LLL: 'D MMMM YYYY HH:mm',
36436            LLLL: 'dddd, D MMMM YYYY HH:mm',
36437        },
36438        calendar: {
36439            sameDay: '[bugün saat] LT',
36440            nextDay: '[yarın saat] LT',
36441            nextWeek: '[gelecek] dddd [saat] LT',
36442            lastDay: '[dün] LT',
36443            lastWeek: '[geçen] dddd [saat] LT',
36444            sameElse: 'L',
36445        },
36446        relativeTime: {
36447            future: '%s sonra',
36448            past: '%s önce',
36449            s: 'birkaç saniye',
36450            ss: '%d saniye',
36451            m: 'bir dakika',
36452            mm: '%d dakika',
36453            h: 'bir saat',
36454            hh: '%d saat',
36455            d: 'bir gün',
36456            dd: '%d gün',
36457            w: 'bir hafta',
36458            ww: '%d hafta',
36459            M: 'bir ay',
36460            MM: '%d ay',
36461            y: 'bir yıl',
36462            yy: '%d yıl',
36463        },
36464        ordinal: function (number, period) {
36465            switch (period) {
36466                case 'd':
36467                case 'D':
36468                case 'Do':
36469                case 'DD':
36470                    return number;
36471                default:
36472                    if (number === 0) {
36473                        // special case for zero
36474                        return number + "'ıncı";
36475                    }
36476                    var a = number % 10,
36477                        b = (number % 100) - a,
36478                        c = number >= 100 ? 100 : null;
36479                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
36480            }
36481        },
36482        week: {
36483            dow: 1, // Monday is the first day of the week.
36484            doy: 7, // The week that contains Jan 7th is the first week of the year.
36485        },
36486    });
36487
36488    return tr;
36489
36490})));
36491
36492
36493/***/ }),
36494/* 124 */
36495/***/ (function(module, exports, __webpack_require__) {
36496
36497//! moment.js locale configuration
36498//! locale : Talossan [tzl]
36499//! author : Robin van der Vliet : https://github.com/robin0van0der0v
36500//! author : Iustì Canun
36501
36502;(function (global, factory) {
36503    true ? factory(__webpack_require__(0)) :
36504   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36505   factory(global.moment)
36506}(this, (function (moment) { 'use strict';
36507
36508    //! moment.js locale configuration
36509
36510    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
36511    // This is currently too difficult (maybe even impossible) to add.
36512    var tzl = moment.defineLocale('tzl', {
36513        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
36514            '_'
36515        ),
36516        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
36517        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
36518        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
36519        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
36520        longDateFormat: {
36521            LT: 'HH.mm',
36522            LTS: 'HH.mm.ss',
36523            L: 'DD.MM.YYYY',
36524            LL: 'D. MMMM [dallas] YYYY',
36525            LLL: 'D. MMMM [dallas] YYYY HH.mm',
36526            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
36527        },
36528        meridiemParse: /d\'o|d\'a/i,
36529        isPM: function (input) {
36530            return "d'o" === input.toLowerCase();
36531        },
36532        meridiem: function (hours, minutes, isLower) {
36533            if (hours > 11) {
36534                return isLower ? "d'o" : "D'O";
36535            } else {
36536                return isLower ? "d'a" : "D'A";
36537            }
36538        },
36539        calendar: {
36540            sameDay: '[oxhi à] LT',
36541            nextDay: '[demà à] LT',
36542            nextWeek: 'dddd [à] LT',
36543            lastDay: '[ieiri à] LT',
36544            lastWeek: '[sür el] dddd [lasteu à] LT',
36545            sameElse: 'L',
36546        },
36547        relativeTime: {
36548            future: 'osprei %s',
36549            past: 'ja%s',
36550            s: processRelativeTime,
36551            ss: processRelativeTime,
36552            m: processRelativeTime,
36553            mm: processRelativeTime,
36554            h: processRelativeTime,
36555            hh: processRelativeTime,
36556            d: processRelativeTime,
36557            dd: processRelativeTime,
36558            M: processRelativeTime,
36559            MM: processRelativeTime,
36560            y: processRelativeTime,
36561            yy: processRelativeTime,
36562        },
36563        dayOfMonthOrdinalParse: /\d{1,2}\./,
36564        ordinal: '%d.',
36565        week: {
36566            dow: 1, // Monday is the first day of the week.
36567            doy: 4, // The week that contains Jan 4th is the first week of the year.
36568        },
36569    });
36570
36571    function processRelativeTime(number, withoutSuffix, key, isFuture) {
36572        var format = {
36573            s: ['viensas secunds', "'iensas secunds"],
36574            ss: [number + ' secunds', '' + number + ' secunds'],
36575            m: ["'n míut", "'iens míut"],
36576            mm: [number + ' míuts', '' + number + ' míuts'],
36577            h: ["'n þora", "'iensa þora"],
36578            hh: [number + ' þoras', '' + number + ' þoras'],
36579            d: ["'n ziua", "'iensa ziua"],
36580            dd: [number + ' ziuas', '' + number + ' ziuas'],
36581            M: ["'n mes", "'iens mes"],
36582            MM: [number + ' mesen', '' + number + ' mesen'],
36583            y: ["'n ar", "'iens ar"],
36584            yy: [number + ' ars', '' + number + ' ars'],
36585        };
36586        return isFuture
36587            ? format[key][0]
36588            : withoutSuffix
36589            ? format[key][0]
36590            : format[key][1];
36591    }
36592
36593    return tzl;
36594
36595})));
36596
36597
36598/***/ }),
36599/* 125 */
36600/***/ (function(module, exports, __webpack_require__) {
36601
36602//! moment.js locale configuration
36603//! locale : Central Atlas Tamazight [tzm]
36604//! author : Abdel Said : https://github.com/abdelsaid
36605
36606;(function (global, factory) {
36607    true ? factory(__webpack_require__(0)) :
36608   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36609   factory(global.moment)
36610}(this, (function (moment) { 'use strict';
36611
36612    //! moment.js locale configuration
36613
36614    var tzm = moment.defineLocale('tzm', {
36615        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
36616            '_'
36617        ),
36618        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
36619            '_'
36620        ),
36621        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
36622        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
36623        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
36624        longDateFormat: {
36625            LT: 'HH:mm',
36626            LTS: 'HH:mm:ss',
36627            L: 'DD/MM/YYYY',
36628            LL: 'D MMMM YYYY',
36629            LLL: 'D MMMM YYYY HH:mm',
36630            LLLL: 'dddd D MMMM YYYY HH:mm',
36631        },
36632        calendar: {
36633            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
36634            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
36635            nextWeek: 'dddd [â´´] LT',
36636            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
36637            lastWeek: 'dddd [â´´] LT',
36638            sameElse: 'L',
36639        },
36640        relativeTime: {
36641            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
36642            past: 'ⵢⴰⵏ %s',
36643            s: 'ⵉⵎⵉⴽ',
36644            ss: '%d ⵉⵎⵉⴽ',
36645            m: 'ⵎⵉⵏⵓⴺ',
36646            mm: '%d ⵎⵉⵏⵓⴺ',
36647            h: 'ⵙⴰⵄⴰ',
36648            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
36649            d: 'ⴰⵙⵙ',
36650            dd: '%d oⵙⵙⴰⵏ',
36651            M: 'ⴰⵢoⵓⵔ',
36652            MM: '%d ⵉⵢⵢⵉⵔⵏ',
36653            y: 'ⴰⵙⴳⴰⵙ',
36654            yy: '%d ⵉⵙⴳⴰⵙⵏ',
36655        },
36656        week: {
36657            dow: 6, // Saturday is the first day of the week.
36658            doy: 12, // The week that contains Jan 12th is the first week of the year.
36659        },
36660    });
36661
36662    return tzm;
36663
36664})));
36665
36666
36667/***/ }),
36668/* 126 */
36669/***/ (function(module, exports, __webpack_require__) {
36670
36671//! moment.js locale configuration
36672//! locale : Central Atlas Tamazight Latin [tzm-latn]
36673//! author : Abdel Said : https://github.com/abdelsaid
36674
36675;(function (global, factory) {
36676    true ? factory(__webpack_require__(0)) :
36677   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36678   factory(global.moment)
36679}(this, (function (moment) { 'use strict';
36680
36681    //! moment.js locale configuration
36682
36683    var tzmLatn = moment.defineLocale('tzm-latn', {
36684        months: 'innayr_brˤayrˤ_marˤsˤ_ibr
36684ir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
36685            '_'
36686        ),
36687        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
36688            '_'
36689        ),
36690        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
36691        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
36692        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
36693        longDateFormat: {
36694            LT: 'HH:mm',
36695            LTS: 'HH:mm:ss',
36696            L: 'DD/MM/YYYY',
36697            LL: 'D MMMM YYYY',
36698            LLL: 'D MMMM YYYY HH:mm',
36699            LLLL: 'dddd D MMMM YYYY HH:mm',
36700        },
36701        calendar: {
36702            sameDay: '[asdkh g] LT',
36703            nextDay: '[aska g] LT',
36704            nextWeek: 'dddd [g] LT',
36705            lastDay: '[assant g] LT',
36706            lastWeek: 'dddd [g] LT',
36707            sameElse: 'L',
36708        },
36709        relativeTime: {
36710            future: 'dadkh s yan %s',
36711            past: 'yan %s',
36712            s: 'imik',
36713            ss: '%d imik',
36714            m: 'minuḍ',
36715            mm: '%d minuḍ',
36716            h: 'saɛa',
36717            hh: '%d tassaɛin',
36718            d: 'ass',
36719            dd: '%d ossan',
36720            M: 'ayowr',
36721            MM: '%d iyyirn',
36722            y: 'asgas',
36723            yy: '%d isgasn',
36724        },
36725        week: {
36726            dow: 6, // Saturday is the first day of the week.
36727            doy: 12, // The week that contains Jan 12th is the first week of the year.
36728        },
36729    });
36730
36731    return tzmLatn;
36732
36733})));
36734
36735
36736/***/ }),
36737/* 127 */
36738/***/ (function(module, exports, __webpack_require__) {
36739
36740//! moment.js locale configuration
36741//! locale : Uyghur (China) [ug-cn]
36742//! author: boyaq : https://github.com/boyaq
36743
36744;(function (global, factory) {
36745    true ? factory(__webpack_require__(0)) :
36746   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36747   factory(global.moment)
36748}(this, (function (moment) { 'use strict';
36749
36750    //! moment.js locale configuration
36751
36752    var ugCn = moment.defineLocale('ug-cn', {
36753        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
36754            '_'
36755        ),
36756        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
36757            '_'
36758        ),
36759        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
36760            '_'
36761        ),
36762        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
36763        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
36764        longDateFormat: {
36765            LT: 'HH:mm',
36766            LTS: 'HH:mm:ss',
36767            L: 'YYYY-MM-DD',
36768            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
36769            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
36770            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
36771        },
36772        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
36773        meridiemHour: function (hour, meridiem) {
36774            if (hour === 12) {
36775                hour = 0;
36776            }
36777            if (
36778                meridiem === 'يېرىم كېچە' ||
36779                meridiem === 'سەھەر' ||
36780                meridiem === 'چۈشتىن بۇرۇن'
36781            ) {
36782                return hour;
36783            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
36784                return hour + 12;
36785            } else {
36786                return hour >= 11 ? hour : hour + 12;
36787            }
36788        },
36789        meridiem: function (hour, minute, isLower) {
36790            var hm = hour * 100 + minute;
36791            if (hm < 600) {
36792                return 'يېرىم كېچە';
36793            } else if (hm < 900) {
36794                return 'سەھەر';
36795            } else if (hm < 1130) {
vendor: 14,247 bytes, lines 36796-37210
36796                return 'چۈشتىن بۇرۇن';
36797            } else if (hm < 1230) {
36798                return 'چۈش';
36799            } else if (hm < 1800) {
36800                return 'چۈشتىن كېيىن';
36801            } else {
36802                return 'كەچ';
36803            }
36804        },
36805        calendar: {
36806            sameDay: '[بۈگۈن سائەت] LT',
36807            nextDay: '[ئەتە سائەت] LT',
36808            nextWeek: '[كېلەركى] dddd [سائەت] LT',
36809            lastDay: '[تۆنۈگۈن] LT',
36810            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
36811            sameElse: 'L',
36812        },
36813        relativeTime: {
36814            future: '%s كېيىن',
36815            past: '%s بۇرۇن',
36816            s: 'نەچچە سېكونت',
36817            ss: '%d سېكونت',
36818            m: 'بىر مىنۇت',
36819            mm: '%d مىنۇت',
36820            h: 'بىر سائەت',
36821            hh: '%d سائەت',
36822            d: 'بىر كۈن',
36823            dd: '%d كۈن',
36824            M: 'بىر ئاي',
36825            MM: '%d ئاي',
36826            y: 'بىر يىل',
36827            yy: '%d يىل',
36828        },
36829
36830        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
36831        ordinal: function (number, period) {
36832            switch (period) {
36833                case 'd':
36834                case 'D':
36835                case 'DDD':
36836                    return number + '-كۈنى';
36837                case 'w':
36838                case 'W':
36839                    return number + '-ھەپتە';
36840                default:
36841                    return number;
36842            }
36843        },
36844        preparse: function (string) {
36845            return string.replace(/،/g, ',');
36846        },
36847        postformat: function (string) {
36848            return string.replace(/,/g, '،');
36849        },
36850        week: {
36851            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
36852            dow: 1, // Monday is the first day of the week.
36853            doy: 7, // The week that contains Jan 1st is the first week of the year.
36854        },
36855    });
36856
36857    return ugCn;
36858
36859})));
36860
36861
36862/***/ }),
36863/* 128 */
36864/***/ (function(module, exports, __webpack_require__) {
36865
36866//! moment.js locale configuration
36867//! locale : Ukrainian [uk]
36868//! author : zemlanin : https://github.com/zemlanin
36869//! Author : Menelion Elensúle : https://github.com/Oire
36870
36871;(function (global, factory) {
36872    true ? factory(__webpack_require__(0)) :
36873   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
36874   factory(global.moment)
36875}(this, (function (moment) { 'use strict';
36876
36877    //! moment.js locale configuration
36878
36879    function plural(word, num) {
36880        var forms = word.split('_');
36881        return num % 10 === 1 && num % 100 !== 11
36882            ? forms[0]
36883            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
36884            ? forms[1]
36885            : forms[2];
36886    }
36887    function relativeTimeWithPlural(number, withoutSuffix, key) {
36888        var format = {
36889            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
36890            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
36891            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
36892            dd: 'день_дні_днів',
36893            MM: 'місяць_місяці_місяців',
36894            yy: 'рік_роки_років',
36895        };
36896        if (key === 'm') {
36897            return withoutSuffix ? 'хвилина' : 'хвилину';
36898        } else if (key === 'h') {
36899            return withoutSuffix ? 'година' : 'годину';
36900        } else {
36901            return number + ' ' + plural(format[key], +number);
36902        }
36903    }
36904    function weekdaysCaseReplace(m, format) {
36905        var weekdays = {
36906                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
36907                    '_'
36908                ),
36909                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
36910                    '_'
36911                ),
36912                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
36913                    '_'
36914                ),
36915            },
36916            nounCase;
36917
36918        if (m === true) {
36919            return weekdays['nominative']
36920                .slice(1, 7)
36921                .concat(weekdays['nominative'].slice(0, 1));
36922        }
36923        if (!m) {
36924            return weekdays['nominative'];
36925        }
36926
36927        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
36928            ? 'accusative'
36929            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
36930            ? 'genitive'
36931            : 'nominative';
36932        return weekdays[nounCase][m.day()];
36933    }
36934    function processHoursFunction(str) {
36935        return function () {
36936            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
36937        };
36938    }
36939
36940    var uk = moment.defineLocale('uk', {
36941        months: {
36942            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
36943                '_'
36944            ),
36945            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
36946                '_'
36947            ),
36948        },
36949        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
36950            '_'
36951        ),
36952        weekdays: weekdaysCaseReplace,
36953        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
36954        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
36955        longDateFormat: {
36956            LT: 'HH:mm',
36957            LTS: 'HH:mm:ss',
36958            L: 'DD.MM.YYYY',
36959            LL: 'D MMMM YYYY р.',
36960            LLL: 'D MMMM YYYY р., HH:mm',
36961            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
36962        },
36963        calendar: {
36964            sameDay: processHoursFunction('[Сьогодні '),
36965            nextDay: processHoursFunction('[Завтра '),
36966            lastDay: processHoursFunction('[Вчора '),
36967            nextWeek: processHoursFunction('[У] dddd ['),
36968            lastWeek: function () {
36969                switch (this.day()) {
36970                    case 0:
36971                    case 3:
36972                    case 5:
36973                    case 6:
36974                        return processHoursFunction('[Минулої] dddd [').call(this);
36975                    case 1:
36976                    case 2:
36977                    case 4:
36978                        return processHoursFunction('[Минулого] dddd [').call(this);
36979                }
36980            },
36981            sameElse: 'L',
36982        },
36983        relativeTime: {
36984            future: 'за %s',
36985            past: '%s тому',
36986            s: 'декілька секунд',
36987            ss: relativeTimeWithPlural,
36988            m: relativeTimeWithPlural,
36989            mm: relativeTimeWithPlural,
36990            h: 'годину',
36991            hh: relativeTimeWithPlural,
36992            d: 'день',
36993            dd: relativeTimeWithPlural,
36994            M: 'місяць',
36995            MM: relativeTimeWithPlural,
36996            y: 'рік',
36997            yy: relativeTimeWithPlural,
36998        },
36999        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
37000        meridiemParse: /ночі|ранку|дня|вечора/,
37001        isPM: function (input) {
37002            return /^(дня|вечора)$/.test(input);
37003        },
37004        meridiem: function (hour, minute, isLower) {
37005            if (hour < 4) {
37006                return 'ночі';
37007            } else if (hour < 12) {
37008                return 'ранку';
37009            } else if (hour < 17) {
37010                return 'дня';
37011            } else {
37012                return 'вечора';
37013            }
37014        },
37015        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
37016        ordinal: function (number, period) {
37017            switch (period) {
37018                case 'M':
37019                case 'd':
37020                case 'DDD':
37021                case 'w':
37022                case 'W':
37023                    return number + '-й';
37024                case 'D':
37025                    return number + '-го';
37026                default:
37027                    return number;
37028            }
37029        },
37030        week: {
37031            dow: 1, // Monday is the first day of the week.
37032            doy: 7, // The week that contains Jan 7th is the first week of the year.
37033        },
37034    });
37035
37036    return uk;
37037
37038})));
37039
37040
37041/***/ }),
37042/* 129 */
37043/***/ (function(module, exports, __webpack_require__) {
37044
37045//! moment.js locale configuration
37046//! locale : Urdu [ur]
37047//! author : Sawood Alam : https://github.com/ibnesayeed
37048//! author : Zack : https://github.com/ZackVision
37049
37050;(function (global, factory) {
37051    true ? factory(__webpack_require__(0)) :
37052   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37053   factory(global.moment)
37054}(this, (function (moment) { 'use strict';
37055
37056    //! moment.js locale configuration
37057
37058    var months = [
37059            'جنوری',
37060            'فروری',
37061            'مارچ',
37062            'اپریل',
37063            'مئی',
37064            'جون',
37065            'جولائی',
37066            'اگست',
37067            'ستمبر',
37068            'اکتوبر',
37069            'نومبر',
37070            'دسمبر',
37071        ],
37072        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
37073
37074    var ur = moment.defineLocale('ur', {
37075        months: months,
37076        monthsShort: months,
37077        weekdays: days,
37078        weekdaysShort: days,
37079        weekdaysMin: days,
37080        longDateFormat: {
37081            LT: 'HH:mm',
37082            LTS: 'HH:mm:ss',
37083            L: 'DD/MM/YYYY',
37084            LL: 'D MMMM YYYY',
37085            LLL: 'D MMMM YYYY HH:mm',
37086            LLLL: 'dddd، D MMMM YYYY HH:mm',
37087        },
37088        meridiemParse: /صبح|شام/,
37089        isPM: function (input) {
37090            return 'شام' === input;
37091        },
37092        meridiem: function (hour, minute, isLower) {
37093            if (hour < 12) {
37094                return 'صبح';
37095            }
37096            return 'شام';
37097        },
37098        calendar: {
37099            sameDay: '[آج بوقت] LT',
37100            nextDay: '[کل بوقت] LT',
37101            nextWeek: 'dddd [بوقت] LT',
37102            lastDay: '[گذشتہ روز بوقت] LT',
37103            lastWeek: '[گذشتہ] dddd [بوقت] LT',
37104            sameElse: 'L',
37105        },
37106        relativeTime: {
37107            future: '%s بعد',
37108            past: '%s قبل',
37109            s: 'چند سیکنڈ',
37110            ss: '%d سیکنڈ',
37111            m: 'ایک منٹ',
37112            mm: '%d منٹ',
37113            h: 'ایک گھنٹہ',
37114            hh: '%d گھنٹے',
37115            d: 'ایک دن',
37116            dd: '%d دن',
37117            M: 'ایک ماہ',
37118            MM: '%d ماہ',
37119            y: 'ایک سال',
37120            yy: '%d سال',
37121        },
37122        preparse: function (string) {
37123            return string.replace(/،/g, ',');
37124        },
37125        postformat: function (string) {
37126            return string.replace(/,/g, '،');
37127        },
37128        week: {
37129            dow: 1, // Monday is the first day of the week.
37130            doy: 4, // The week that contains Jan 4th is the first week of the year.
37131        },
37132    });
37133
37134    return ur;
37135
37136})));
37137
37138
37139/***/ }),
37140/* 130 */
37141/***/ (function(module, exports, __webpack_require__) {
37142
37143//! moment.js locale configuration
37144//! locale : Uzbek [uz]
37145//! author : Sardor Muminov : https://github.com/muminoff
37146
37147;(function (global, factory) {
37148    true ? factory(__webpack_require__(0)) :
37149   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37150   factory(global.moment)
37151}(this, (function (moment) { 'use strict';
37152
37153    //! moment.js locale configuration
37154
37155    var uz = moment.defineLocale('uz', {
37156        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
37157            '_'
37158        ),
37159        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
37160        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
37161        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
37162        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
37163        longDateFormat: {
37164            LT: 'HH:mm',
37165            LTS: 'HH:mm:ss',
37166            L: 'DD/MM/YYYY',
37167            LL: 'D MMMM YYYY',
37168            LLL: 'D MMMM YYYY HH:mm',
37169            LLLL: 'D MMMM YYYY, dddd HH:mm',
37170        },
37171        calendar: {
37172            sameDay: '[Бугун соат] LT [да]',
37173            nextDay: '[Эртага] LT [да]',
37174            nextWeek: 'dddd [куни соат] LT [да]',
37175            lastDay: '[Кеча соат] LT [да]',
37176            lastWeek: '[Утган] dddd [куни соат] LT [да]',
37177            sameElse: 'L',
37178        },
37179        relativeTime: {
37180            future: 'Якин %s ичида',
37181            past: 'Бир неча %s олдин',
37182            s: 'фурсат',
37183            ss: '%d фурсат',
37184            m: 'бир дакика',
37185            mm: '%d дакика',
37186            h: 'бир соат',
37187            hh: '%d соат',
37188            d: 'бир кун',
37189            dd: '%d кун',
37190            M: 'бир ой',
37191            MM: '%d ой',
37192            y: 'бир йил',
37193            yy: '%d йил',
37194        },
37195        week: {
37196            dow: 1, // Monday is the first day of the week.
37197            doy: 7, // The week that contains Jan 4th is the first week of the year.
37198        },
37199    });
37200
37201    return uz;
37202
37203})));
37204
37205
37206/***/ }),
37207/* 131 */
37208/***/ (function(module, exports, __webpack_require__) {
37209
37210//! moment.js locale configuration
37211//! locale : Uzbek Latin [uz-latn]
37212//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
37213
37214;(function (global, factory) {
37215    true ? factory(__webpack_require__(0)) :
37216   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37217   factory(global.moment)
37218}(this, (function (moment) { 'use strict';
37219
37220    //! moment.js locale configuration
37221
37222    var uzLatn = moment.defineLocale('uz-latn', {
37223        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
37224            '_'
37225        ),
37226        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
37227        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
37228            '_'
37229        ),
37230        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
37231        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
37232        longDateFormat: {
37233            LT: 'HH:mm',
37234            LTS: 'HH:mm:ss',
37235            L: 'DD/MM/YYYY',
37236            LL: 'D MMMM YYYY',
37237            LLL: 'D MMMM YYYY HH:mm',
37238            LLLL: 'D MMMM YYYY, dddd HH:mm',
37239        },
37240        calendar: {
37241            sameDay: '[Bugun soat] LT [da]',
37242            nextDay: '[Ertaga] LT [da]',
37243            nextWeek: 'dddd [kuni soat] LT [da]',
37244            lastDay: '[Kecha soat] LT [da]',
37245            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
37246            sameElse: 'L',
37247        },
37248        relativeTime: {
37249            future: 'Yaqin %s ichida',
37250            past: 'Bir necha %s oldin',
37251            s: 'soniya',
37252            ss: '%d soniya',
37253            m: 'bir daqiqa',
37254            mm: '%d daqiqa',
37255            h: 'bir soat',
37256            hh: '%d soat',
37257            d: 'bir kun',
37258            dd: '%d kun',
37259            M: 'bir oy',
37260            MM: '%d oy',
37261            y: 'bir yil',
37262            yy: '%d yil',
37263        },
37264        week: {
37265            dow: 1, // Monday is the first day of the week.
37266            doy: 7, // The week that contains Jan 7th is the first week of the year.
37267        },
37268    });
37269
37270    return uzLatn;
37271
37272})));
37273
37274
37275/***/ }),
37276/* 132 */
37277/***/ (function(module, exports, __webpack_require__) {
37278
37279//! moment.js locale configuration
37280//! locale : Vietnamese [vi]
37281//! author : Bang Nguyen : https://github.com/bangnk
37282//! author : Chien Kira : https://github.com/chienkira
37283
37284;(function (global, factory) {
37285    true ? factory(__webpack_require__(0)) :
37286   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37287   factory(global.moment)
37288}(this, (function (moment) { 'use strict';
37289
37290    //! moment.js locale configuration
37291
37292    var vi = moment.defineLocale('vi', {
37293        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(
37294            '_'
37295        ),
37296        monthsShort: '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(
37297            '_'
37298        ),
37299        monthsParseExact: true,
37300        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
37301            '_'
37302        ),
37303        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
37304        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
37305        weekdaysParseExact: true,
37306        meridiemParse: /sa|ch/i,
37307        isPM: function (input) {
37308            return /^ch$/i.test(input);
37309        },
37310        meridiem: function (hours, minutes, isLower) {
37311            if (hours < 12) {
37312                return isLower ? 'sa' : 'SA';
37313            } else {
37314                return isLower ? 'ch' : 'CH';
37315            }
37316        },
37317        longDateFormat: {
37318            LT: 'HH:mm',
37319            LTS: 'HH:mm:ss',
37320            L: 'DD/MM/YYYY',
37321            LL: 'D MMMM [năm] YYYY',
37322            LLL: 'D MMMM [năm] YYYY HH:mm',
37323            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
37324            l: 'DD/M/YYYY',
37325            ll: 'D MMM YYYY',
37326            lll: 'D MMM YYYY HH:mm',
37327            llll: 'ddd, D MMM YYYY HH:mm',
37328        },
37329        calendar: {
37330            sameDay: '[Hôm nay lúc] LT',
37331            nextDay: '[Ngày mai lúc] LT',
37332            nextWeek: 'dddd [tuần tới lúc] LT',
37333            lastDay: '[Hôm qua lúc] LT',
37334            lastWeek: 'dddd [tuần trước lúc] LT',
37335            sameElse: 'L',
37336        },
37337        relativeTime: {
37338            future: '%s tới',
37339            past: '%s trước',
37340            s: 'vài giây',
37341            ss: '%d giây',
37342            m: 'một phút',
37343            mm: '%d phút',
37344            h: 'một giờ',
37345            hh: '%d giờ',
37346            d: 'một ngày',
37347            dd: '%d ngày',
37348            w: 'một tuần',
37349            ww: '%d tuần',
37350            M: 'một tháng',
37351            MM: '%d tháng',
37352            y: 'một năm',
37353            yy: '%d năm',
37354        },
37355        dayOfMonthOrdinalParse: /\d{1,2}/,
37356        ordinal: function (number) {
37357            return number;
37358        },
37359        week: {
37360            dow: 1, // Monday is the first day of the week.
37361            doy: 4, // The week that contains Jan 4th is the first week of the year.
37362        },
37363    });
37364
37365    return vi;
37366
37367})));
37368
37369
37370/***/ }),
37371/* 133 */
37372/***/ (function(module, exports, __webpack_require__) {
37373
37374//! moment.js locale configuration
37375//! locale : Pseudo [x-pseudo]
37376//! author : Andrew Hood : https://github.com/andrewhood125
37377
37378;(function (global, factory) {
37379    true ? factory(__webpack_require__(0)) :
37380   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37381   factory(global.moment)
37382}(this, (function (moment) { 'use strict';
37383
37384    //! moment.js locale configuration
37385
37386    var xPseudo = moment.defineLocale('x-pseudo', {
37387        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(
37388            '_'
37389        ),
37390        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.
37390split(
37391            '_'
37392        ),
37393        monthsParseExact: true,
37394        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
37395            '_'
37396        ),
37397        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
37398        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
37399        weekdaysParseExact: true,
37400        longDateFormat: {
37401            LT: 'HH:mm',
37402            L: 'DD/MM/YYYY',
37403            LL: 'D MMMM YYYY',
37404            LLL: 'D MMMM YYYY HH:mm',
37405            LLLL: 'dddd, D MMMM YYYY HH:mm',
37406        },
37407        calendar: {
37408            sameDay: '[T~ódá~ý át] LT',
37409            nextDay: '[T~ómó~rró~w át] LT',
37410            nextWeek: 'dddd [át] LT',
37411            lastDay: '[Ý~ést~érdá~ý át] LT',
37412            lastWeek: '[L~ást] dddd [át] LT',
37413            sameElse: 'L',
37414        },
37415        relativeTime: {
37416            future: 'í~ñ %s',
37417            past: '%s á~gó',
37418            s: 'á ~féw ~sécó~ñds',
37419            ss: '%d s~écóñ~ds',
37420            m: 'á ~míñ~úté',
37421            mm: '%d m~íñú~tés',
37422            h: 'á~ñ hó~úr',
37423            hh: '%d h~óúrs',
37424            d: 'á ~dáý',
37425            dd: '%d d~áýs',
37426            M: 'á ~móñ~th',
37427            MM: '%d m~óñt~hs',
37428            y: 'á ~ýéár',
37429            yy: '%d ý~éárs',
37430        },
37431        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
37432        ordinal: function (number) {
37433            var b = number % 10,
37434                output =
37435                    ~~((number % 100) / 10) === 1
37436                        ? 'th'
37437                        : b === 1
37438                        ? 'st'
37439                        : b === 2
37440                        ? 'nd'
37441                        : b === 3
37442                        ? 'rd'
37443                        : 'th';
37444            return number + output;
37445        },
37446        week: {
37447            dow: 1, // Monday is the first day of the week.
37448            doy: 4, // The week that contains Jan 4th is the first week of the year.
37449        },
37450    });
37451
37452    return xPseudo;
37453
37454})));
37455
37456
37457/***/ }),
37458/* 134 */
37459/***/ (function(module, exports, __webpack_require__) {
37460
37461//! moment.js locale configuration
37462//! locale : Yoruba Nigeria [yo]
37463//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
37464
37465;(function (global, factory) {
37466    true ? factory(__webpack_require__(0)) :
37467   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37468   factory(global.moment)
37469}(this, (function (moment) { 'use strict';
37470
37471    //! moment.js locale configuration
37472
37473    var yo = moment.defineLocale('yo', {
37474        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
37475            '_'
37476        ),
37477        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
37478        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
37479        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
37480        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
37481        longDateFormat: {
37482            LT: 'h:mm A',
37483            LTS: 'h:mm:ss A',
37484            L: 'DD/MM/YYYY',
37485            LL: 'D MMMM YYYY',
37486            LLL: 'D MMMM YYYY h:mm A',
37487            LLLL: 'dddd, D MMMM YYYY h:mm A',
37488        },
37489        calendar: {
37490            sameDay: '[Ònì ni] LT',
37491            nextDay: '[Ọ̀la ni] LT',
37492            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
37493            lastDay: '[Àna ni] LT',
37494            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
37495            sameElse: 'L',
37496        },
37497        relativeTime: {
37498            future: 'ní %s',
37499            past: '%s kọjá',
37500            s: 'ìsẹjú aayá die',
37501            ss: 'aayá %d',
37502            m: 'ìsẹjú kan',
37503            mm: 'ìsẹjú %d',
37504            h: 'wákati kan',
37505            hh: 'wákati %d',
37506            d: 'ọjọ́ kan',
37507            dd: 'ọjọ́ %d',
37508            M: 'osù kan',
37509            MM: 'osù %d',
37510            y: 'ọdún kan',
37511            yy: 'ọdún %d',
37512        },
37513        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
37514        ordinal: 'ọjọ́ %d',
37515        week: {
37516            dow: 1, // Monday is the first day of the week.
37517            doy: 4, // The week that contains Jan 4th is the first week of the year.
37518        },
37519    });
37520
37521    return yo;
37522
37523})));
37524
37525
37526/***/ }),
37527/* 135 */
37528/***/ (function(module, exports, __webpack_require__) {
37529
37530//! moment.js locale configuration
37531//! locale : Chinese (China) [zh-cn]
37532//! author : suupic : https://github.com/suupic
37533//! author : Zeno Zeng : https://github.com/zenozeng
37534//! author : uu109 : https://github.com/uu109
37535
37536;(function (global, factory) {
37537    true ? factory(__webpack_require__(0)) :
37538   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37539   factory(global.moment)
37540}(this, (function (moment) { 'use strict';
37541
37542    //! moment.js locale configuration
37543
37544    var zhCn = moment.defineLocale('zh-cn', {
37545        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
37546            '_'
37547        ),
37548        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
37549            '_'
37550        ),
37551        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
37552        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
37553        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
37554        longDateFormat: {
37555            LT: 'HH:mm',
37556            LTS: 'HH:mm:ss',
37557            L: 'YYYY/MM/DD',
37558            LL: 'YYYY年M月D日',
37559            LLL: 'YYYY年M月D日Ah点mm分',
37560            LLLL: 'YYYY年M月D日ddddAh点mm分',
37561            l: 'YYYY/M/D',
37562            ll: 'YYYY年M月D日',
37563            lll: 'YYYY年M月D日 HH:mm',
37564            llll: 'YYYY年M月D日dddd HH:mm',
37565        },
37566        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
37567        meridiemHour: function (hour, meridiem) {
37568            if (hour === 12) {
37569                hour = 0;
37570            }
37571            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
37572                return hour;
37573            } else if (meridiem === '下午' || meridiem === '晚上') {
37574                return hour + 12;
37575            } else {
37576                // '中午'
37577                return hour >= 11 ? hour : hour + 12;
37578            }
37579        },
37580        meridiem: function (hour, minute, isLower) {
37581            var hm = hour * 100 + minute;
37582            if (hm < 600) {
37583                return '凌晨';
37584            } else if (hm < 900) {
37585                return '早上';
37586            } else if (hm < 1130) {
37587                return '上午';
37588            } else if (hm < 1230) {
37589                return '中午';
37590            } else if (hm < 1800) {
37591                return '下午';
37592            } else {
37593                return '晚上';
37594            }
37595        },
37596        calendar: {
37597            sameDay: '[今天]LT',
37598            nextDay: '[明天]LT',
37599            nextWeek: function (now) {
37600                if (now.week() !== this.week()) {
37601                    return '[下]dddLT';
37602                } else {
37603                    return '[本]dddLT';
37604                }
37605            },
37606            lastDay: '[昨天]LT',
37607            lastWeek: function (now) {
37608                if (this.week() !== now.week()) {
37609                    return '[上]dddLT';
37610                } else {
37611                    return '[本]dddLT';
37612                }
37613            },
37614            sameElse: 'L',
37615        },
37616        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
37617        ordinal: function (number, period) {
37618            switch (period) {
37619                case 'd':
37620                case 'D':
37621                case 'DDD':
37622                    return number + '日';
37623                case 'M':
37624                    return number + '月';
37625                case 'w':
37626                case 'W':
37627                    return number + '周';
37628                default:
37629                    return number;
37630            }
37631        },
37632        relativeTime: {
37633            future: '%s后',
37634            past: '%s前',
37635            s: '几秒',
37636            ss: '%d 秒',
37637            m: '1 分钟',
37638            mm: '%d 分钟',
37639            h: '1 小时',
37640            hh: '%d 小时',
37641            d: '1 天',
37642            dd: '%d 天',
37643            w: '1 周',
37644            ww: '%d 周',
37645            M: '1 个月',
37646            MM: '%d 个月',
37647            y: '1 å¹´',
37648            yy: '%d å¹´',
37649        },
37650        week: {
37651            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
37652            dow: 1, // Monday is the first day of the week.
37653            doy: 4, // The week that contains Jan 4th is the first week of the year.
37654        },
37655    });
37656
37657    return zhCn;
37658
37659})));
37660
37661
37662/***/ }),
37663/* 136 */
37664/***/ (function(module, exports, __webpack_require__) {
37665
37666//! moment.js locale configuration
37667//! locale : Chinese (Hong Kong) [zh-hk]
37668//! author : Ben : https://github.com/ben-lin
37669//! author : Chris Lam : https://github.com/hehachris
37670//! author : Konstantin : https://github.com/skfd
37671//! author : Anthony : https://github.com/anthonylau
37672
37673;(function (global, factory) {
37674    true ? factory(__webpack_require__(0)) :
37675   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37676   factory(global.moment)
37677}(this, (function (moment) { 'use strict';
37678
37679    //! moment.js locale configuration
37680
37681    var zhHk = moment.defineLocale('zh-hk', {
37682        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
37683            '_'
37684        ),
37685        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
37686            '_'
37687        ),
37688        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
37689        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
37690        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
37691        longDateFormat: {
37692            LT: 'HH:mm',
37693            LTS: 'HH:mm:ss',
37694            L: 'YYYY/MM/DD',
37695            LL: 'YYYY年M月D日',
37696            LLL: 'YYYY年M月D日 HH:mm',
37697            LLLL: 'YYYY年M月D日dddd HH:mm',
37698            l: 'YYYY/M/D',
37699            ll: 'YYYY年M月D日',
37700            lll: 'YYYY年M月D日 HH:mm',
37701            llll: 'YYYY年M月D日dddd HH:mm',
37702        },
37703        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
37704        meridiemHour: function (hour, meridiem) {
37705            if (hour === 12) {
37706                hour = 0;
37707            }
37708            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
37709                return hour;
37710            } else if (meridiem === '中午') {
37711                return hour >= 11 ? hour : hour + 12;
37712            } else if (meridiem === '下午' || meridiem === '晚上') {
37713                return hour + 12;
37714            }
37715        },
37716        meridiem: function (hour, minute, isLower) {
37717            var hm = hour * 100 + minute;
37718            if (hm < 600) {
37719                return '凌晨';
37720            } else if (hm < 900) {
37721                return '早上';
37722            } else if (hm < 1200) {
37723                return '上午';
37724            } else if (hm === 1200) {
37725                return '中午';
37726            } else if (hm < 1800) {
37727                return '下午';
37728            } else {
37729                return '晚上';
37730            }
37731        },
37732        calendar: {
37733            sameDay: '[今天]LT',
37734            nextDay: '[明天]LT',
37735            nextWeek: '[下]ddddLT',
37736            lastDay: '[昨天]LT',
37737            lastWeek: '[上]ddddLT',
37738            sameElse: 'L',
37739        },
37740        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
37741        ordinal: function (number, period) {
37742            switch (period) {
37743                case 'd':
37744                case 'D':
37745                case 'DDD':
37746                    return number + '日';
37747                case 'M':
37748                    return number + '月';
37749                case 'w':
37750                case 'W':
37751                    return number + '週';
37752                default:
37753                    return number;
37754            }
37755        },
37756        relativeTime: {
37757            future: '%s後',
37758            past: '%s前',
37759            s: '幾秒',
37760            ss: '%d 秒',
37761            m: '1 分鐘',
37762            mm: '%d 分鐘',
37763            h: '1 小時',
37764            hh: '%d 小時',
37765            d: '1 天',
37766            dd: '%d 天',
37767            M: '1 個月',
37768            MM: '%d 個月',
37769            y: '1 å¹´',
37770            yy: '%d å¹´',
37771        },
37772    });
37773
37774    return zhHk;
37775
37776})));
37777
37778
37779/***/ }),
37780/* 137 */
37781/***/ (function(module, exports, __webpack_require__) {
37782
37783//! moment.js locale configuration
37784//! locale : Chinese (Macau) [zh-mo]
37785//! author : Ben : https://github.com/ben-lin
37786//! author : Chris Lam : https://github.com/hehachris
37787//! author : Tan Yuanhong : https://github.com/le0tan
37788
37789;(function (global, factory) {
37790    true ? factory(__webpack_require__(0)) :
37791   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37792   factory(global.moment)
37793}(this, (function (moment) { 'use strict';
37794
37795    //! moment.js locale configuration
37796
37797    var zhMo = moment.defineLocale('zh-mo', {
37798        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
37799            '_'
37800        ),
37801        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
37802            '_'
37803        ),
37804        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
37805        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
37806        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
37807        longDateFormat: {
37808            LT: 'HH:mm',
37809            LTS: 'HH:mm:ss',
37810            L: 'DD/MM/YYYY',
37811            LL: 'YYYY年M月D日',
37812            LLL: 'YYYY年M月D日 HH:mm',
37813            LLLL: 'YYYY年M月D日dddd HH:mm',
37814            l: 'D/M/YYYY',
37815            ll: 'YYYY年M月D日',
37816            lll: 'YYYY年M月D日 HH:mm',
37817            llll: 'YYYY年M月D日dddd HH:mm',
37818        },
37819        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
37820        meridiemHour: function (hour, meridiem) {
37821            if (hour === 12) {
37822                hour = 0;
37823            }
37824            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
37825                return hour;
37826            } else if (meridiem === '中午') {
37827                return hour >= 11 ? hour : hour + 12;
37828            } else if (meridiem === '下午' || meridiem === '晚上') {
37829                return hour + 12;
37830            }
37831        },
37832        meridiem: function (hour, minute, isLower) {
37833            var hm = hour * 100 + minute;
37834            if (hm < 600) {
37835                return '凌晨';
37836            } else if (hm < 900) {
37837                return '早上';
37838            } else if (hm < 1130) {
37839                return '上午';
37840            } else if (hm < 1230) {
37841                return '中午';
37842            } else if (hm < 1800) {
37843                return '下午';
37844            } else {
37845                return '晚上';
37846            }
37847        },
37848        calendar: {
37849            sameDay: '[今天] LT',
37850            nextDay: '[明天] LT',
37851            nextWeek: '[下]dddd LT',
37852            lastDay: '[昨天] LT',
37853            lastWeek: '[上]dddd LT',
37854            sameElse: 'L',
37855        },
37856        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
37857        ordinal: function (number, period) {
37858            switch (period) {
37859                case 'd':
37860                case 'D':
37861                case 'DDD':
37862                    return number + '日';
37863                case 'M':
37864                    return number + '月';
37865                case 'w':
37866                case 'W':
37867                    return number + '週';
37868                default:
37869                    return number;
37870            }
37871        },
37872        relativeTime: {
37873            future: '%s內',
37874            past: '%s前',
37875            s: '幾秒',
37876            ss: '%d 秒',
37877            m: '1 分鐘',
37878            mm: '%d 分鐘',
37879            h: '1 小時',
37880            hh: '%d 小時',
37881            d: '1 天',
37882            dd: '%d 天',
37883            M: '1 個月',
37884            MM: '%d 個月',
37885            y: '1 å¹´',
37886            yy: '%d å¹´',
37887        },
37888    });
37889
37890    return zhMo;
37891
37892})));
37893
37894
37895/***/ }),
37896/* 138 */
37897/***/ (function(module, exports, __webpack_require__) {
37898
37899//! moment.js locale configuration
37900//! locale : Chinese (Taiwan) [zh-tw]
37901//! author : Ben : https://github.com/ben-lin
37902//! author : Chris Lam : https://github.com/hehachris
37903
37904;(function (global, factory) {
37905    true ? factory(__webpack_require__(0)) :
37906   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
37907   factory(global.moment)
37908}(this, (function (moment) { 'use strict';
37909
37910    //! moment.js locale configuration
37911
37912    var zhTw = moment.defineLocale('zh-tw', {
37913        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
37914            '_'
37915        ),
37916        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
37917            '_'
37918        ),
37919        weekdays: '星期日_æ
37919˜ŸæœŸä¸€_星期二_星期三_星期四_星期五_星期六'.split('_'),
37920        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
37921        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
37922        longDateFormat: {
37923            LT: 'HH:mm',
37924            LTS: 'HH:mm:ss',
37925            L: 'YYYY/MM/DD',
37926            LL: 'YYYY年M月D日',
37927            LLL: 'YYYY年M月D日 HH:mm',
37928            LLLL: 'YYYY年M月D日dddd HH:mm',
37929            l: 'YYYY/M/D',
37930            ll: 'YYYY年M月D日',
37931            lll: 'YYYY年M月D日 HH:mm',
37932            llll: 'YYYY年M月D日dddd HH:mm',
37933        },
37934        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
37935        meridiemHour: function (hour, meridiem) {
37936            if (hour === 12) {
37937                hour = 0;
37938            }
37939            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
37940                return hour;
37941            } else if (meridiem === '中午') {
37942                return hour >= 11 ? hour : hour + 12;
37943            } else if (meridiem === '下午' || meridiem === '晚上') {
37944                return hour + 12;
37945            }
37946        },
37947        meridiem: function (hour, minute, isLower) {
37948            var hm = hour * 100 + minute;
37949            if (hm < 600) {
37950                return '凌晨';
37951            } else if (hm < 900) {
37952                return '早上';
37953            } else if (hm < 1130) {
37954                return '上午';
37955            } else if (hm < 1230) {
37956                return '中午';
37957            } else if (hm < 1800) {
37958                return '下午';
37959            } else {
37960                return '晚上';
37961            }
37962        },
37963        calendar: {
37964            sameDay: '[今天] LT',
37965            nextDay: '[明天] LT',
37966            nextWeek: '[下]dddd LT',
37967            lastDay: '[昨天] LT',
37968            lastWeek: '[上]dddd LT',
37969            sameElse: 'L',
37970        },
37971        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
37972        ordinal: function (number, period) {
37973            switch (period) {
37974                case 'd':
37975                case 'D':
37976                case 'DDD':
37977                    return number + '日';
37978                case 'M':
37979                    return number + '月';
37980                case 'w':
37981                case 'W':
37982                    return number + '週';
37983                default:
37984                    return number;
37985            }
37986        },
37987        relativeTime: {
37988            future: '%s後',
37989            past: '%s前',
37990            s: '幾秒',
37991            ss: '%d 秒',
37992            m: '1 分鐘',
37993            mm: '%d 分鐘',
37994            h: '1 小時',
37995            hh: '%d 小時',
37996            d: '1 天',
37997            dd: '%d 天',
37998            M: '1 個月',
37999            MM: '%d 個月',
38000            y: '1 å¹´',
38001            yy: '%d å¹´',
38002        },
38003    });
38004
38005    return zhTw;
38006
38007})));
38008
38009
38010/***/ }),
38011/* 139 */
38012/***/ (function(module, exports, __webpack_require__) {
38013
38014__webpack_require__(140);
38015__webpack_require__(164);
38016module.exports = __webpack_require__(165);
38017
38018
38019/***/ }),
38020/* 140 */
38021/***/ (function(module, __webpack_exports__, __webpack_require__) {
38022
38023"use strict";
38024Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
38025/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_whatwg_fetch__ = __webpack_require__(141);
38026/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__modules_BetterNav__ = __webpack_require__(142);
38027/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__modules_Carousels__ = __webpack_require__(144);
38028/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__modules_MomentResolver__ = __webpack_require__(145);
38029/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__modules_YearSelector__ = __webpack_require__(150);
38030/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__modules_SocialMedia__ = __webpack_require__(151);
38031/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__modules_Navigation__ = __webpack_require__(156);
38032/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__modules_MenuToggle__ = __webpack_require__(157);
38033/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__all_blacks_javascript_modules_ScheduledBanner__ = __webpack_require__(159);
38034
38035
38036
38037
38038
38039
38040
38041
38042
38043
38044var existingOnload = window.onload;
38045window.onload = function () {
38046    if (existingOnload) {
38047        existingOnload();
38048    }
38049
38050    jQuery.noConflict();
38051    __WEBPACK_IMPORTED_MODULE_1__modules_BetterNav__["a" /* default */].init();
38052    __WEBPACK_IMPORTED_MODULE_2__modules_Carousels__["a" /* default */].init();
38053    __WEBPACK_IMPORTED_MODULE_3__modules_MomentResolver__["a" /* default */].init();
38054    __WEBPACK_IMPORTED_MODULE_4__modules_YearSelector__["a" /* default */].init();
38055    __WEBPACK_IMPORTED_MODULE_5__modules_SocialMedia__["a" /* default */].init();
38056    __WEBPACK_IMPORTED_MODULE_6__modules_Navigation__["a" /* default */].init();
vendor: 13,986 bytes, lines 38057-38563
38057    Object(__WEBPACK_IMPORTED_MODULE_7__modules_MenuToggle__["a" /* default */])();
38058    Object(__WEBPACK_IMPORTED_MODULE_8__all_blacks_javascript_modules_ScheduledBanner__["a" /* default */])();
38059};
38060
38061/***/ }),
38062/* 141 */
38063/***/ (function(module, __webpack_exports__, __webpack_require__) {
38064
38065"use strict";
38066/* unused harmony export Headers */
38067/* unused harmony export Request */
38068/* unused harmony export Response */
38069/* unused harmony export DOMException */
38070/* unused harmony export fetch */
38071var global =
38072  (typeof globalThis !== 'undefined' && globalThis) ||
38073  (typeof self !== 'undefined' && self) ||
38074  (typeof global !== 'undefined' && global)
38075
38076var support = {
38077  searchParams: 'URLSearchParams' in global,
38078  iterable: 'Symbol' in global && 'iterator' in Symbol,
38079  blob:
38080    'FileReader' in global &&
38081    'Blob' in global &&
38082    (function() {
38083      try {
38084        new Blob()
38085        return true
38086      } catch (e) {
38087        return false
38088      }
38089    })(),
38090  formData: 'FormData' in global,
38091  arrayBuffer: 'ArrayBuffer' in global
38092}
38093
38094function isDataView(obj) {
38095  return obj && DataView.prototype.isPrototypeOf(obj)
38096}
38097
38098if (support.arrayBuffer) {
38099  var viewClasses = [
38100    '[object Int8Array]',
38101    '[object Uint8Array]',
38102    '[object Uint8ClampedArray]',
38103    '[object Int16Array]',
38104    '[object Uint16Array]',
38105    '[object Int32Array]',
38106    '[object Uint32Array]',
38107    '[object Float32Array]',
38108    '[object Float64Array]'
38109  ]
38110
38111  var isArrayBufferView =
38112    ArrayBuffer.isView ||
38113    function(obj) {
38114      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
38115    }
38116}
38117
38118function normalizeName(name) {
38119  if (typeof name !== 'string') {
38120    name = String(name)
38121  }
38122  if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
38123    throw new TypeError('Invalid character in header field name')
38124  }
38125  return name.toLowerCase()
38126}
38127
38128function normalizeValue(value) {
38129  if (typeof value !== 'string') {
38130    value = String(value)
38131  }
38132  return value
38133}
38134
38135// Build a destructive iterator for the value list
38136function iteratorFor(items) {
38137  var iterator = {
38138    next: function() {
38139      var value = items.shift()
38140      return {done: value === undefined, value: value}
38141    }
38142  }
38143
38144  if (support.iterable) {
38145    iterator[Symbol.iterator] = function() {
38146      return iterator
38147    }
38148  }
38149
38150  return iterator
38151}
38152
38153function Headers(headers) {
38154  this.map = {}
38155
38156  if (headers instanceof Headers) {
38157    headers.forEach(function(value, name) {
38158      this.append(name, value)
38159    }, this)
38160  } else if (Array.isArray(headers)) {
38161    headers.forEach(function(header) {
38162      this.append(header[0], header[1])
38163    }, this)
38164  } else if (headers) {
38165    Object.getOwnPropertyNames(headers).forEach(function(name) {
38166      this.append(name, headers[name])
38167    }, this)
38168  }
38169}
38170
38171Headers.prototype.append = function(name, value) {
38172  name = normalizeName(name)
38173  value = normalizeValue(value)
38174  var oldValue = this.map[name]
38175  this.map[name] = oldValue ? oldValue + ', ' + value : value
38176}
38177
38178Headers.prototype['delete'] = function(name) {
38179  delete this.map[normalizeName(name)]
38180}
38181
38182Headers.prototype.get = function(name) {
38183  name = normalizeName(name)
38184  return this.has(name) ? this.map[name] : null
38185}
38186
38187Headers.prototype.has = function(name) {
38188  return this.map.hasOwnProperty(normalizeName(name))
38189}
38190
38191Headers.prototype.set = function(name, value) {
38192  this.map[normalizeName(name)] = normalizeValue(value)
38193}
38194
38195Headers.prototype.forEach = function(callback, thisArg) {
38196  for (var name in this.map) {
38197    if (this.map.hasOwnProperty(name)) {
38198      callback.call(thisArg, this.map[name], name, this)
38199    }
38200  }
38201}
38202
38203Headers.prototype.keys = function() {
38204  var items = []
38205  this.forEach(function(value, name) {
38206    items.push(name)
38207  })
38208  return iteratorFor(items)
38209}
38210
38211Headers.prototype.values = function() {
38212  var items = []
38213  this.forEach(function(value) {
38214    items.push(value)
38215  })
38216  return iteratorFor(items)
38217}
38218
38219Headers.prototype.entries = function() {
38220  var items = []
38221  this.forEach(function(value, name) {
38222    items.push([name, value])
38223  })
38224  return iteratorFor(items)
38225}
38226
38227if (support.iterable) {
38228  Headers.prototype[Symbol.iterator] = Headers.prototype.entries
38229}
38230
38231function consumed(body) {
38232  if (body.bodyUsed) {
38233    return Promise.reject(new TypeError('Already read'))
38234  }
38235  body.bodyUsed = true
38236}
38237
38238function fileReaderReady(reader) {
38239  return new Promise(function(resolve, reject) {
38240    reader.onload = function() {
38241      resolve(reader.result)
38242    }
38243    reader.onerror = function() {
38244      reject(reader.error)
38245    }
38246  })
38247}
38248
38249function readBlobAsArrayBuffer(blob) {
38250  var reader = new FileReader()
38251  var promise = fileReaderReady(reader)
38252  reader.readAsArrayBuffer(blob)
38253  return promise
38254}
38255
38256function readBlobAsText(blob) {
38257  var reader = new FileReader()
38258  var promise = fileReaderReady(reader)
38259  reader.readAsText(blob)
38260  return promise
38261}
38262
38263function readArrayBufferAsText(buf) {
38264  var view = new Uint8Array(buf)
38265  var chars = new Array(view.length)
38266
38267  for (var i = 0; i < view.length; i++) {
38268    chars[i] = String.fromCharCode(view[i])
38269  }
38270  return chars.join('')
38271}
38272
38273function bufferClone(buf) {
38274  if (buf.slice) {
38275    return buf.slice(0)
38276  } else {
38277    var view = new Uint8Array(buf.byteLength)
38278    view.set(new Uint8Array(buf))
38279    return view.buffer
38280  }
38281}
38282
38283function Body() {
38284  this.bodyUsed = false
38285
38286  this._initBody = function(body) {
38287    /*
38288      fetch-mock wraps the Response object in an ES6 Proxy to
38289      provide useful test harness features such as flush. However, on
38290      ES5 browsers without fetch or Proxy support pollyfills must be used;
38291      the proxy-pollyfill is unable to proxy an attribute unless it exists
38292      on the object before the Proxy is created. This change ensures
38293      Response.bodyUsed exists on the instance, while maintaining the
38294      semantic of setting Request.bodyUsed in the constructor before
38295      _initBody is called.
38296    */
38297    this.bodyUsed = this.bodyUsed
38298    this._bodyInit = body
38299    if (!body) {
38300      this._bodyText = ''
38301    } else if (typeof body === 'string') {
38302      this._bodyText = body
38303    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
38304      this._bodyBlob = body
38305    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
38306      this._bodyFormData = body
38307    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
38308      this._bodyText = body.toString()
38309    } else if (support.arrayBuffer && support.blob && isDataView(body)) {
38310      this._bodyArrayBuffer = bufferClone(body.buffer)
38311      // IE 10-11 can't handle a DataView body.
38312      this._bodyInit = new Blob([this._bodyArrayBuffer])
38313    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
38314      this._bodyArrayBuffer = bufferClone(body)
38315    } else {
38316      this._bodyText = body = Object.prototype.toString.call(body)
38317    }
38318
38319    if (!this.headers.get('content-type')) {
38320      if (typeof body === 'string') {
38321        this.headers.set('content-type', 'text/plain;charset=UTF-8')
38322      } else if (this._bodyBlob && this._bodyBlob.type) {
38323        this.headers.set('content-type', this._bodyBlob.type)
38324      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
38325        this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')
38326      }
38327    }
38328  }
38329
38330  if (support.blob) {
38331    this.blob = function() {
38332      var rejected = consumed(this)
38333      if (rejected) {
38334        return rejected
38335      }
38336
38337      if (this._bodyBlob) {
38338        return Promise.resolve(this._bodyBlob)
38339      } else if (this._bodyArrayBuffer) {
38340        return Promise.resolve(new Blob([this._bodyArrayBuffer]))
38341      } else if (this._bodyFormData) {
38342        throw new Error('could not read FormData body as blob')
38343      } else {
38344        return Promise.resolve(new Blob([this._bodyText]))
38345      }
38346    }
38347
38348    this.arrayBuffer = function() {
38349      if (this._bodyArrayBuffer) {
38350        var isConsumed = consumed(this)
38351        if (isConsumed) {
38352          return isConsumed
38353        }
38354        if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
38355          return Promise.resolve(
38356            this._bodyArrayBuffer.buffer.slice(
38357              this._bodyArrayBuffer.byteOffset,
38358              this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
38359            )
38360          )
38361        } else {
38362          return Promise.resolve(this._bodyArrayBuffer)
38363        }
38364      } else {
38365        return this.blob().then(readBlobAsArrayBuffer)
38366      }
38367    }
38368  }
38369
38370  this.text = function() {
38371    var rejected = consumed(this)
38372    if (rejected) {
38373      return rejected
38374    }
38375
38376    if (this._bodyBlob) {
38377      return readBlobAsText(this._bodyBlob)
38378    } else if (this._bodyArrayBuffer) {
38379      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
38380    } else if (this._bodyFormData) {
38381      throw new Error('could not read FormData body as text')
38382    } else {
38383      return Promise.resolve(this._bodyText)
38384    }
38385  }
38386
38387  if (support.formData) {
38388    this.formData = function() {
38389      return this.text().then(decode)
38390    }
38391  }
38392
38393  this.json = function() {
38394    return this.text().then(JSON.parse)
38395  }
38396
38397  return this
38398}
38399
38400// HTTP methods whose capitalization should be normalized
38401var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']
38402
38403function normalizeMethod(method) {
38404  var upcased = method.toUpperCase()
38405  return methods.indexOf(upcased) > -1 ? upcased : method
38406}
38407
38408function Request(input, options) {
38409  if (!(this instanceof Request)) {
38410    throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
38411  }
38412
38413  options = options || {}
38414  var body = options.body
38415
38416  if (input instanceof Request) {
38417    if (input.bodyUsed) {
38418      throw new TypeError('Already read')
38419    }
38420    this.url = input.url
38421    this.credentials = input.credentials
38422    if (!options.headers) {
38423      this.headers = new Headers(input.headers)
38424    }
38425    this.method = input.method
38426    this.mode = input.mode
38427    this.signal = input.signal
38428    if (!body && input._bodyInit != null) {
38429      body = input._bodyInit
38430      input.bodyUsed = true
38431    }
38432  } else {
38433    this.url = String(input)
38434  }
38435
38436  this.credentials = options.credentials || this.credentials || 'same-origin'
38437  if (options.headers || !this.headers) {
38438    this.headers = new Headers(options.headers)
38439  }
38440  this.method = normalizeMethod(options.method || this.method || 'GET')
38441  this.mode = options.mode || this.mode || null
38442  this.signal = options.signal || this.signal
38443  this.referrer = null
38444
38445  if ((this.method === 'GET' || this.method === 'HEAD') && body) {
38446    throw new TypeError('Body not allowed for GET or HEAD requests')
38447  }
38448  this._initBody(body)
38449
38450  if (this.method === 'GET' || this.method === 'HEAD') {
38451    if (options.cache === 'no-store' || options.cache === 'no-cache') {
38452      // Search for a '_' parameter in the query string
38453      var reParamSearch = /([?&])_=[^&]*/
38454      if (reParamSearch.test(this.url)) {
38455        // If it already exists then set the value with the current time
38456        this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())
38457      } else {
38458        // Otherwise add a new '_' parameter to the end with the current time
38459        var reQueryString = /\?/
38460        this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()
38461      }
38462    }
38463  }
38464}
38465
38466Request.prototype.clone = function() {
38467  return new Request(this, {body: this._bodyInit})
38468}
38469
38470function decode(body) {
38471  var form = new FormData()
38472  body
38473    .trim()
38474    .split('&')
38475    .forEach(function(bytes) {
38476      if (bytes) {
38477        var split = bytes.split('=')
38478        var name = split.shift().replace(/\+/g, ' ')
38479        var value = split.join('=').replace(/\+/g, ' ')
38480        form.append(decodeURIComponent(name), decodeURIComponent(value))
38481      }
38482    })
38483  return form
38484}
38485
38486function parseHeaders(rawHeaders) {
38487  var headers = new Headers()
38488  // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
38489  // https://tools.ietf.org/html/rfc7230#section-3.2
38490  var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ')
38491  preProcessedHeaders.split(/\r?\n/).forEach(function(line) {
38492    var parts = line.split(':')
38493    var key = parts.shift().trim()
38494    if (key) {
38495      var value = parts.join(':').trim()
38496      headers.append(key, value)
38497    }
38498  })
38499  return headers
38500}
38501
38502Body.call(Request.prototype)
38503
38504function Response(bodyInit, options) {
38505  if (!(this instanceof Response)) {
38506    throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
38507  }
38508  if (!options) {
38509    options = {}
38510  }
38511
38512  this.type = 'default'
38513  this.status = options.status === undefined ? 200 : options.status
38514  this.ok = this.status >= 200 && this.status < 300
38515  this.statusText = 'statusText' in options ? options.statusText : ''
38516  this.headers = new Headers(options.headers)
38517  this.url = options.url || ''
38518  this._initBody(bodyInit)
38519}
38520
38521Body.call(Response.prototype)
38522
38523Response.prototype.clone = function() {
38524  return new Response(this._bodyInit, {
38525    status: this.status,
38526    statusText: this.statusText,
38527    headers: new Headers(this.headers),
38528    url: this.url
38529  })
38530}
38531
38532Response.error = function() {
38533  var response = new Response(null, {status: 0, statusText: ''})
38534  response.type = 'error'
38535  return response
38536}
38537
38538var redirectStatuses = [301, 302, 303, 307, 308]
38539
38540Response.redirect = function(url, status) {
38541  if (redirectStatuses.indexOf(status) === -1) {
38542    throw new RangeError('Invalid status code')
38543  }
38544
38545  return new Response(null, {status: status, headers: {location: url}})
38546}
38547
38548var DOMException = global.DOMException
38549try {
38550  new DOMException()
38551} catch (err) {
38552  DOMException = function(message, name) {
38553    this.message = message
38554    this.name = name
38555    var error = Error(message)
38556    this.stack = error.stack
38557  }
38558  DOMException.prototype = Object.create(Error.prototype)
38559  DOMException.prototype.constructor = DOMException
38560}
38561
38562function fetch(input, init) {
38563  return new Promise(function(resolve, reject) {
38564    var request = new Request(input, init)
38565
38566    if (request.signal && request.signal.aborted) {
38567      return reject(new DOMException('Aborted', 'AbortError'))
38568    }
38569
38570    var xhr = new XMLHttpRequest()
38571
38572    function abortXhr() {
38573      xhr.abort()
38574    }
38575
38576    xhr.onload = function() {
38577      var options = {
38578        status: xhr.status,
38579        statusText: xhr.statusText,
38580        headers: parseHeaders(xhr.getAllResponseHeaders() || '')
38581      }
38582      options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')
38583      var body = 'response' in xhr ? xhr.response : xhr.responseText
38584      setTimeout(function() {
38585        resolve(new Response(body, options))
38586      }, 0)
38587    }
38588
38589    xhr.onerror = function() {
38590      setTimeout(function() {
38591        reject(new TypeError('Network request failed'))
38592      }, 0)
38593    }
38594
38595    xhr.ontimeout = function() {
38596      setTimeout(function() {
38597        reject(new TypeError('Network request failed'))
38598      }, 0)
38599    }
38600
38601    xhr.onabort = function() {
38602      setTimeout(function() {
38603        reject(new DOMException('Aborted', 'AbortError'))
38604      }, 0)
38605    }
38606
38607    function fixUrl(url) {
38608      try {
38609        return url === '' && global.location.href ? global.location.href : url
38610      } catch (e) {
38611        return url
38612      }
38613    }
38614
38615    xhr.open(request.method, fixUrl(request.url), true)
38616
38617    if (request.credentials === 'include') {
38618      xhr.withCredentials = true
38619    } else if (request.credentials === 'omit') {
38620      xhr.withCredentials = false
38621    }
38622
38623    if ('responseType' in xhr) {
38624      if (support.blob) {
38625        xhr.responseType = 'blob'
38626      } else if (
38627        support.arrayBuffer &&
38628        request.headers.get('Content-Type') &&
38629        request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1
38630      ) {
38631        xhr.responseType = 'arraybuffer'
38632      }
38633    }
38634
38635    if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {
38636      Object.getOwnPropertyNames(init.headers).forEach(function(name) {
38637        xhr.setRequestHeader(name, normalizeValue(init.headers[name]))
38638      })
38639    } else {
38640      request.headers.forEach(function(value, name) {
38641        xhr.setRequestHeader(name, value)
38642      })
38643    }
38644
38645    if (request.signal) {
38646      request.signal.addEventListener('abort', abortXhr)
38647
38648      xhr.onreadystatechange = function() {
38649        // DONE (success or failure)
38650        if (xhr.readyState === 4) {
38651          request.signal.removeEventListener('abort', abortXhr)
38652        }
38653      }
38654    }
38655
38656    xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)
38657  })
38658}
38659
38660fetch.polyfill = true
38661
38662if (!global.fetch) {
38663  global.fetch = fetch
38664  global.Headers = Headers
38665  global.Request = Request
38666  global.Response = Response
38667}
38668
38669
38670/***/ }),
38671/* 142 */
38672/***/ (function(module, __webpack_exports__, __webpack_require__) {
38673
38674"use strict";
38675/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash__ = __webpack_require__(1);
38676/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash__);
38677var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
38678
38679function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38680
38681
38682
38683var BetterNav = function () {
38684    function BetterNav() {
38685        _classCallCheck(this, BetterNav);
38686
38687        this.key = 'groot';
38688        this.isAdmin = this.checkIfAdmin();
38689    }
38690
38691    _createClass(BetterNav, [{
38692        key: 'init',
38693        value: function init() {
38694            var betterNavEl = document.getElementById('BetterNavigator');
38695            if (!betterNavEl) {
38696                return;
38697            }
38698
38699            if (this.isAdmin) {
38700                betterNavEl.style.display = 'block';
38701            } else {
38702                betterNavEl.parentNode.removeChild(betterNavEl); // IE doesn't support remove() native Javascript function but does support removeChild().
38703            }
38704        }
38705    }, {
38706        key: 'checkIfAdmin',
38707        value: function checkIfAdmin() {
38708            var _this = this;
38709
38710            return !!document.cookie.split(';').filter(function (item) {
38711                return __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.includes(item, _this.key + '=1');
38712            }).length;
38713        }
38714    }]);
38715
38716    return BetterNav;
38717}();
38718
38719/* harmony default export */ __webpack_exports__["a"] = (new BetterNav());
38720
38721/***/ }),
38722/* 143 */
38723/***/ (function(module, exports) {
38724
38725var g;
38726
38727// This works in non-strict mode
38728g = (function() {
38729	return this;
38730})();
38731
38732try {
38733	// This works if eval is allowed (see CSP)
38734	g = g || Function("return this")() || (1,eval)("this");
38735} catch(e) {
38736	// This works if the window reference is available
38737	if(typeof window === "object")
38738		g = window;
38739}
38740
38741// g can still be undefined, but nothing to do about it...
38742// We return undefined, instead of nothing here, so it's
38743// easier to handle this case. if(!global) { ...}
38744
38745module.exports = g;
38746
38747
38748/***/ }),
38749/* 144 */
38750/***/ (function(module, __webpack_exports__, __webpack_require__) {
38751
38752"use strict";
38753/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash__ = __webpack_require__(1);
38754/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lodash__);
38755/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__(2);
38756var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
38757
38758var _RESPONSIVE_SETTINGS;
38759
38760function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38761
38762function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
38763
38764
38765
38766
38767var SELECTOR_NORMAL = '.slider';
38768var SELECTOR_MOBILE_ONLY = '.only-mobile-slider';
38769var SELECTOR_NARROW = '.slider-narrow';
38770var SCREEN_SIZES = [1199, 991, 480, 418];
38771
38772var MOBILE_VISIBLE_PAGES = 5;
38773var EDGE_PAGE_CLASS = 'smaller';
38774var EDGE_CLASS_ANIMATION_TIME = 150;
38775
38776function createSettings(slides, arrows) {
38777    return {
38778        slidesToShow: slides,
38779        slidesToScroll: slides,
38780        arrows: arrows
38781    };
38782}
38783
38784var RESPONSIVE_SETTINGS = (_RESPONSIVE_SETTINGS = {}, _defineProperty(_RESPONSIVE_SETTINGS, SELECTOR_MOBILE_ONLY, ['unslick', createSettings(3, true), createSettings(2, false)]), _defineProperty(_RESPONSIVE_SETTINGS, SELECTOR_NORMAL, [createSettings(4, true), createSettings(3, true), createSettings(2, false)]), _defineProperty(_RESPONSIVE_SETTINGS, SELECTOR_NARROW, [createSettings(5, true), createSettings(4, true), createSettings(3, true), createSettings(2, false)]), _RESPONSIVE_SETTINGS);
38785
38786var Carousels = function () {
38787    function Carousels() {
38788        _classCallCheck(this, Carousels);
38789    }
38790
38791    _createClass(Carousels, [{
38792        key: 'init',
38793        value: function init() {
38794            var elements = document.querySelectorAll(SELECTOR_NORMAL + ', ' + SELECTOR_MOBILE_ONLY);
38795            this.initCarousels(elements);
38796            this.bindResizing();
38797            this.animateOpacityAll('.slider-fade');
38798
38799            // Need some special treatment for fixtures carousel on homepage because of background.
38800            jQuery('.upcoming-games .slider').addClass('special-background-next');
38801            jQuery('.upcoming-games .slick-next, .upcoming-games .slick-prev').click(function () {
38802                if (jQuery('.upcoming-games .slick-prev').is('[aria-disabled=false]')) {
38803                    jQuery('.upcoming-games .slider').addClass('special-background-prev');
38804                    jQuery('.upcoming-games .slider').removeClass('special-background-next');
38805                } else if (jQuery('.upcoming-games .slick-next').is('[aria-disabled=false]')) {
38806                    jQuery('.upcoming-games .slider').addClass('special-background-next');
38807                    jQuery('.upcoming-games .slider').removeClass('special-background-prev');
38808                }
38809            });
38810        }
38811
38812        // slowly fade in carousels to solve FOUC
38813
38814    }, {
38815        key: 'animateOpacityAll',
38816        value: function animateOpacityAll(selector) {
38817            var links = document.querySelectorAll(selector);
38818            __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.forEach(links, function (link) {
38819                return link.classList.add('opacity-1');
38820            });
38821        }
38822    }, {
38823        key: 'initCarousels',
38824        value: function initCarousels(elements) {
38825            var _this = this;
38826
38827            jQuery(elements).each(function (index, element) {
38828                var responsive = _this.createBreakPoints(element);
38829                var $this = jQuery(element);
38830
38831                $this.find('.inner').slick({
38832                    mobileFirst: true,
38833                    //initialSlide: getInitialSlide($this),
38834                    initialSlide: 0,
38835                    dots: true,
38836                    infinite: false,
38837                    prevArrow: '<button class="slick-prev slick-arrow" aria-label="Previous" type="button" />',
38838                    nextArrow: '<button class="slick-next slick-arrow" aria-label="Next" type="button" />',
38839                    arrows: false,
38840                    slidesToShow: 1,
38841                    slidesToScroll: 1,
38842                    responsive: responsive
38843                });
38844
38845                initPaging(element);
38846            });
38847        }
38848    }, {
38849        key: 'createBreakPoints',
38850        value: function createBreakPoints(element) {
38851            var isMobileOnly = element.classList.contains(SELECTOR_MOBILE_ONLY.slice(1));
38852            var isNarrow = element.classList.contains(SELECTOR_NARROW.slice(1));
38853
38854            var key = isMobileOnly ? SELECTOR_MOBILE_ONLY : isNarrow ? SELECTOR_NARROW : SELECTOR_NORMAL;
38855
38856            return this.getSettings(key);
38857        }
38858    }, {
38859        key: 'getSettings',
38860        value: function getSettings(key) {
38861            var settings = RESPONSIVE_SETTINGS[key];
38862            var screenSizes = SCREEN_SIZES.slice(0, settings.length);
38863
38864            return __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.map(screenSizes, function (screenSize, index) {
38865                return {
38866                    breakpoint: screenSize,
38867                    settings: settings[index]
38868                };
38869            });
38870        }
38871    }, {
38872        key: 'bindResizing',
38873        value: function bindResizing() {
38874            var _this2 = this;
38875
38876            Object(__WEBPACK_IMPORTED_MODULE_1__utils__["c" /* throttleAnimationFrame */])('resize', 'optimizedResize');
38877
38878            window.addEventListener('optimizedResize', function () {
38879                _this2.reInitMobileCarousels();
38880
38881                // We need to wait for the carousel to finish initialising to update the paging that's why we need the setTimeout.
38882                setTimeout(function () {
38883                    var elements = document.querySelectorAll(SELECTOR_NORMAL + ', ' + SELECTOR_MOBILE_ONLY);
38884                    __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.forEach(elements, initPaging);
38885                }, 500);
38886            });
38887        }
38888    }, {
38889        key: 'reInitMobileCarousels',
38890        value: function reInitMobileCarousels() {
38891            this.reInitCarousel(SELECTOR_MOBILE_ONLY);
38892        }
38893    }, {
38894        key: 'reInitCarousel',
38895        value: function reInitCarousel(selector) {
38896            var _this3 = this;
38897
38898            var elements = document.querySelectorAll(selector);
38899            __WEBPACK_IMPORTED_MODULE_0_lodash___default.a.forEach(elements, function (element) {
38900                var carouselContainer = element.querySelector('.inner');
38901                if (carouselContainer.classList.contains('slick-initialized')) {
38902                    jQuery(carouselContainer).slick('resize');
38903                    initPaging(element);
38904                } else {
38905                    _this3.initCarousels(element);
38906                }
38907            });
38908        }
38909    }]);
38910
38911    return Carousels;
38912}();
38913
38914/**
38915 * To avoid showing a massive amount of dots in mobile we have a maximum and "carousel" through the dots.
38916 * @param {DOM} carousel - our carousel element.
38917 */
38918
38919
38920function initPaging(carousel) {
38921    if (!Object(__WEBPACK_IMPORTED_MODULE_1__utils__["a" /* isMobileDevice */])()) {
38922        jQuery(carousel).find('li').removeClass(EDGE_PAGE_CLASS).show();
38923        return;
38924    }
38925
38926    var carouselInner = carousel.querySelector('.inner');
38927    var $slick = carouselInner.slick;
38928    var pagesCount = $slick.getDotCount();
38929
38930    // We only do something if there are more than 5 pages.
38931    if (pagesCount <= 5) {
38932        return;
38933    }
38934
38935    initialisePagesDots($slick);
38936
38937    var paging = $slick.$dots;
38938
38939    jQuery(carouselInner).off('beforeChange').on('beforeChange', function (event, slick, currentSlideIndex, nextSlideIndex) {
38940        return updatePagingDots(paging, currentSlideIndex, nextSlideIndex);
38941    });
38942}
38943
38944function updatePagingDots(paging, currentSlideIndex, nextSlideIndex) {
38945    // We only do something if we have reached the edge.
38946    if (!paging.find('li:eq(' + nextSlideIndex + ')').hasClass(EDGE_PAGE_CLASS)) {
38947        return;
38948    }
38949
38950    var $lastVisible = paging.find('li:visible:last');
38951    var $firstVisible = paging.find('li:visible:first');
38952
38953    // We find out if it's going right or left.
38954    var moveMethod = currentSlideIndex < nextSlideIndex ? moveRight : moveLeft;
38955    moveMethod($firstVisible, $lastVisible);
38956}
38957
38958function initialisePagesDots($slick) {
38959    var paging = $slick.$dots;
38960    var pagesCount = $slick.getDotCount();
38961
38962    // Figure out which pages should be visible.
38963
38964    var _getFirstAndLastVisib = getFirstAndLastVisiblePageIndex($slick.getCurrent()),
38965        firstVisiblePageIndex = _getFirstAndLastVisib.firstVisiblePageIndex,
38966        lastVisiblePageIndex = _getFirstAndLastVisib.lastVisiblePageIndex;
38967
38968    // Hide everything that's not in that range.
38969
38970
38971    paging.find('li:lt(' + firstVisiblePageIndex + '), li:gt(' + lastVisiblePageIndex + ')').hide();
38972
38973    // Add the EDGE_PAGE_CLASS to indicate they are the last visible ones but there are more if you scroll in that direction.
38974    if (firstVisiblePageIndex > 0) {
38975        paging.find('li:eq(' + firstVisiblePageIndex + ')').addClass(EDGE_PAGE_CLASS);
38976    }
38977    if (lastVisiblePageIndex < pagesCount) {
38978        paging.find('li:eq(' + lastVisiblePageIndex + ')').addClass(EDGE_PAGE_CLASS);
38979    }
38980}
38981
38982/**
38983 * This function returns the index of the first and last element that should be visible based on MOBILE_VISIBLE_PAGES.
38984 * @param activePageIndex - The index of the currently active page.
38985 * @returns {Number, Number} - First and last index.
38986 */
38987function getFirstAndLastVisiblePageIndex(activePageIndex) {
38988    var firstVisiblePageIndex = void 0;
38989    var lastVisiblePageIndex = void 0;
38990    if (activePageIndex < MOBILE_VISIBLE_PAGES - 1) {
38991        firstVisiblePageIndex = 0;
38992        lastVisiblePageIndex = MOBILE_VISIBLE_PAGES - 1;
38993    } else {
38994        // I think this will never happen.
38995        lastVisiblePageIndex = activePageIndex + 1;
38996        firstVisiblePageIndex = lastVisiblePageIndex - MOBILE_VISIBLE_PAGES - 1;
38997    }
38998    return {
38999        firstVisiblePageIndex: firstVisiblePageIndex,
39000        lastVisiblePageIndex: lastVisiblePageIndex
39001    };
39002}
39003var FADE_TIME = 200;
39004function moveRight($first, $last) {
39005    var $newLast = $last.next();
39006    if (!$newLast.is(':last-child')) {
39007        $newLast.addClass(EDGE_PAGE_CLASS);
39008    }
39009    $newLast.delay(EDGE_CLASS_ANIMATION_TIME - 1).fadeIn(FADE_TIME);
39010    $first.next().addClass(EDGE_PAGE_CLASS);
39011
39012    $first.delay(EDGE_CLASS_ANIMATION_TIME).fadeOut(FADE_TIME);
39013    $last.removeClass(EDGE_PAGE_CLASS);
39014}
39015
39016function moveLeft($first, $last) {
39017    var $newFirst = $first.prev();
39018    if (!$newFirst.is(':first-child')) {
39019        $newFirst.addClass(EDGE_PAGE_CLASS);
39020    }
39021    $newFirst.delay(EDGE_CLASS_ANIMATION_TIME - 1).fadeIn(FADE_TIME);
39022
39023    $last.prev().addClass(EDGE_PAGE_CLASS);
39024
39025    $last.delay(EDGE_CLASS_ANIMATION_TIME).fadeOut(FADE_TIME);
39026    $first.removeClass(EDGE_PAGE_CLASS);
39027}
39028
39029// finds first slide that has been marked as initial
39030// function getInitialSlide(thisSlider) {
39031
39032//     let initialSlide = 0;
39033
39034//     const allSlides = thisSlider.find('.slide');
39035//     const index = _.findIndex(allSlides, game => game.classList.contains('initial-slide'));
39036
39037//     if (index > 0) {
39038//         initialSlide = index;
39039//     }
39040
39041//     return initialSlide;
39042// }
39043
39044/* harmony default export */ __webpack_exports__["a"] = (new Carousels());
39045
39046/***/ }),
39047/* 145 */
39048/***/ (function(module, __webpack_exports__, __webpack_require__) {
39049
39050"use strict";
39051/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment_timezone__ = __webpack_require__(146);
39052/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_moment_timezone__);
39053/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
39054/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
39055var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
39056
39057function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
39058
39059
39060
39061
39062var MomentResolver = function () {
39063    function MomentResolver() {
39064        _classCallCheck(this, MomentResolver);
39065    }
39066
39067    _createClass(MomentResolver, [{
39068        key: 'init',
39069        value: function init() {
39070
39071            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.tz.add('Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5');
39072            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.tz.setDefault('Pacific/Auckland');
39073
39074            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.updateLocale('ja', {
39075                longDateFormat: {
39076                    LLL: 'M月D日 (ddd)',
39077                    LL: 'YYYY年M月D日',
39078                    L: 'M月D日'
39079                }
39080            });
39081
39082            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.updateLocale('en', {
39083                longDateFormat: {
39084                    LLL: 'ddd DD MMM',
39085                    LL: 'D MMMM YYYY',
39086                    L: 'D MMM'
39087                }
39088            });
39089
39090            // set locale
39091            var language = document.documentElement.lang.slice(0, document.documentElement.lang.indexOf('-'));
39092            __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.locale(language);
39093
39094            // time ago
39095            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-ago time[moment]'), function (momentTimeAgo) {
39096                return momentTimeAgo.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default.a.tz(momentTimeAgo.getAttribute('datetime'), 'Pacific/Auckland').fromNow();
39097            });
39098
39099            // month
39100            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-month time[moment]'), function (momentMonth) {
39101                return momentMonth.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentMonth.getAttribute('datetime')).format('MMM');
39102            });
39103
39104            // day
39105            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-day time[moment]'), function (momentDay) {
39106                return momentDay.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDay.getAttribute('datetime')).format('Do');
39107            });
39108
39109            // date
39110            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-date time[moment]'), function (momentDate) {
39111                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('LL');
39112            });
39113
39114            // updated
39115            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-updated time[moment]'), function (momentDate) {
39116                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('L');
39117            });
39118
39119            // time
39120            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.time-time time[moment]'), function (momentDate) {
39121                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('D MMM  h:mmA');
39122            });
39123
39124            // 3:15PM
39125            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.only-time time[moment]'), function (momentDate) {
39126                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).locale('en').format('h:mmA');
39127            });
39128
39129            // Thu 18 Oct
39130            Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["forEach"])(document.querySelectorAll('.ddd-DD-MMM time[moment]'), function (momentDate) {
39131                return momentDate.textContent = __WEBPACK_IMPORTED_MODULE_0_moment_timezone___default()(momentDate.getAttribute('datetime')).format('LLL');
39132            });
39133        }
39134    }]);
39135
39136    return MomentResolver;
39137}();
39138
39139/* harmony default export */ __webpack_exports__["a"] = (new MomentResolver());
39140
39141/***/ }),
39142/* 146 */
39143/***/ (function(module, exports, __webpack_require__) {
39144
39145var moment = module.exports = __webpack_require__(147);
39146moment.tz.load(__webpack_require__(149));
39147
39148
39149/***/ }),
39150/* 147 */
39151/***/ (function(module, exports, __webpack_require__) {
39152
39153var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//! moment-timezone.js
39154//! version : 0.5.31
39155//! Copyright (c) JS Foundation and other contributors
39156//! license : MIT
39157//! github.com/moment/moment-timezone
39158
39159(function (root, factory) {
39160	"use strict";
39161
39162	/*global define*/
39163	if (typeof module === 'object' && module.exports) {
39164		module.exports = factory(__webpack_require__(0)); // Node
39165	} else if (true) {
39166		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(0)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
39167				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
39168				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
vendor: 7,921 bytes, lines 39169-39500
39169				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));                 // AMD
39170	} else {
39171		factory(root.moment);                        // Browser
39172	}
39173}(this, function (moment) {
39174	"use strict";
39175
39176	// Resolves es6 module loading issue
39177	if (moment.version === undefined && moment.default) {
39178		moment = moment.default;
39179	}
39180
39181	// Do not load moment-timezone a second time.
39182	// if (moment.tz !== undefined) {
39183	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
39184	// 	return moment;
39185	// }
39186
39187	var VERSION = "0.5.31",
39188		zones = {},
39189		links = {},
39190		countries = {},
39191		names = {},
39192		guesses = {},
39193		cachedGuess;
39194
39195	if (!moment || typeof moment.version !== 'string') {
39196		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
39197	}
39198
39199	var momentVersion = moment.version.split('.'),
39200		major = +momentVersion[0],
39201		minor = +momentVersion[1];
39202
39203	// Moment.js version check
39204	if (major < 2 || (major === 2 && minor < 6)) {
39205		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
39206	}
39207
39208	/************************************
39209		Unpacking
39210	************************************/
39211
39212	function charCodeToInt(charCode) {
39213		if (charCode > 96) {
39214			return charCode - 87;
39215		} else if (charCode > 64) {
39216			return charCode - 29;
39217		}
39218		return charCode - 48;
39219	}
39220
39221	function unpackBase60(string) {
39222		var i = 0,
39223			parts = string.split('.'),
39224			whole = parts[0],
39225			fractional = parts[1] || '',
39226			multiplier = 1,
39227			num,
39228			out = 0,
39229			sign = 1;
39230
39231		// handle negative numbers
39232		if (string.charCodeAt(0) === 45) {
39233			i = 1;
39234			sign = -1;
39235		}
39236
39237		// handle digits before the decimal
39238		for (i; i < whole.length; i++) {
39239			num = charCodeToInt(whole.charCodeAt(i));
39240			out = 60 * out + num;
39241		}
39242
39243		// handle digits after the decimal
39244		for (i = 0; i < fractional.length; i++) {
39245			multiplier = multiplier / 60;
39246			num = charCodeToInt(fractional.charCodeAt(i));
39247			out += num * multiplier;
39248		}
39249
39250		return out * sign;
39251	}
39252
39253	function arrayToInt (array) {
39254		for (var i = 0; i < array.length; i++) {
39255			array[i] = unpackBase60(array[i]);
39256		}
39257	}
39258
39259	function intToUntil (array, length) {
39260		for (var i = 0; i < length; i++) {
39261			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
39262		}
39263
39264		array[length - 1] = Infinity;
39265	}
39266
39267	function mapIndices (source, indices) {
39268		var out = [], i;
39269
39270		for (i = 0; i < indices.length; i++) {
39271			out[i] = source[indices[i]];
39272		}
39273
39274		return out;
39275	}
39276
39277	function unpack (string) {
39278		var data = string.split('|'),
39279			offsets = data[2].split(' '),
39280			indices = data[3].split(''),
39281			untils  = data[4].split(' ');
39282
39283		arrayToInt(offsets);
39284		arrayToInt(indices);
39285		arrayToInt(untils);
39286
39287		intToUntil(untils, indices.length);
39288
39289		return {
39290			name       : data[0],
39291			abbrs      : mapIndices(data[1].split(' '), indices),
39292			offsets    : mapIndices(offsets, indices),
39293			untils     : untils,
39294			population : data[5] | 0
39295		};
39296	}
39297
39298	/************************************
39299		Zone object
39300	************************************/
39301
39302	function Zone (packedString) {
39303		if (packedString) {
39304			this._set(unpack(packedString));
39305		}
39306	}
39307
39308	Zone.prototype = {
39309		_set : function (unpacked) {
39310			this.name       = unpacked.name;
39311			this.abbrs      = unpacked.abbrs;
39312			this.untils     = unpacked.untils;
39313			this.offsets    = unpacked.offsets;
39314			this.population = unpacked.population;
39315		},
39316
39317		_index : function (timestamp) {
39318			var target = +timestamp,
39319				untils = this.untils,
39320				i;
39321
39322			for (i = 0; i < untils.length; i++) {
39323				if (target < untils[i]) {
39324					return i;
39325				}
39326			}
39327		},
39328
39329		countries : function () {
39330			var zone_name = this.name;
39331			return Object.keys(countries).filter(function (country_code) {
39332				return countries[country_code].zones.indexOf(zone_name) !== -1;
39333			});
39334		},
39335
39336		parse : function (timestamp) {
39337			var target  = +timestamp,
39338				offsets = this.offsets,
39339				untils  = this.untils,
39340				max     = untils.length - 1,
39341				offset, offsetNext, offsetPrev, i;
39342
39343			for (i = 0; i < max; i++) {
39344				offset     = offsets[i];
39345				offsetNext = offsets[i + 1];
39346				offsetPrev = offsets[i ? i - 1 : i];
39347
39348				if (offset < offsetNext && tz.moveAmbiguousForward) {
39349					offset = offsetNext;
39350				} else if (offset > offsetPrev && tz.moveInvalidForward) {
39351					offset = offsetPrev;
39352				}
39353
39354				if (target < untils[i] - (offset * 60000)) {
39355					return offsets[i];
39356				}
39357			}
39358
39359			return offsets[max];
39360		},
39361
39362		abbr : function (mom) {
39363			return this.abbrs[this._index(mom)];
39364		},
39365
39366		offset : function (mom) {
39367			logError("zone.offset has been deprecated in favor of zone.utcOffset");
39368			return this.offsets[this._index(mom)];
39369		},
39370
39371		utcOffset : function (mom) {
39372			return this.offsets[this._index(mom)];
39373		}
39374	};
39375
39376	/************************************
39377		Country object
39378	************************************/
39379
39380	function Country (country_name, zone_names) {
39381		this.name = country_name;
39382		this.zones = zone_names;
39383	}
39384
39385	/************************************
39386		Current Timezone
39387	************************************/
39388
39389	function OffsetAt(at) {
39390		var timeString = at.toTimeString();
39391		var abbr = timeString.match(/\([a-z ]+\)/i);
39392		if (abbr && abbr[0]) {
39393			// 17:56:31 GMT-0600 (CST)
39394			// 17:56:31 GMT-0600 (Central Standard Time)
39395			abbr = abbr[0].match(/[A-Z]/g);
39396			abbr = abbr ? abbr.join('') : undefined;
39397		} else {
39398			// 17:56:31 CST
39399			// 17:56:31 GMT+0800 (台北標準時間)
39400			abbr = timeString.match(/[A-Z]{3,5}/g);
39401			abbr = abbr ? abbr[0] : undefined;
39402		}
39403
39404		if (abbr === 'GMT') {
39405			abbr = undefined;
39406		}
39407
39408		this.at = +at;
39409		this.abbr = abbr;
39410		this.offset = at.getTimezoneOffset();
39411	}
39412
39413	function ZoneScore(zone) {
39414		this.zone = zone;
39415		this.offsetScore = 0;
39416		this.abbrScore = 0;
39417	}
39418
39419	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
39420		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
39421		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
39422			this.abbrScore++;
39423		}
39424	};
39425
39426	function findChange(low, high) {
39427		var mid, diff;
39428
39429		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
39430			mid = new OffsetAt(new Date(low.at + diff));
39431			if (mid.offset === low.offset) {
39432				low = mid;
39433			} else {
39434				high = mid;
39435			}
39436		}
39437
39438		return low;
39439	}
39440
39441	function userOffsets() {
39442		var startYear = new Date().getFullYear() - 2,
39443			last = new OffsetAt(new Date(startYear, 0, 1)),
39444			offsets = [last],
39445			change, next, i;
39446
39447		for (i = 1; i < 48; i++) {
39448			next = new OffsetAt(new Date(startYear, i, 1));
39449			if (next.offset !== last.offset) {
39450				change = findChange(last, next);
39451				offsets.push(change);
39452				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
39453			}
39454			last = next;
39455		}
39456
39457		for (i = 0; i < 4; i++) {
39458			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
39459			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
39460		}
39461
39462		return offsets;
39463	}
39464
39465	function sortZoneScores (a, b) {
39466		if (a.offsetScore !== b.offsetScore) {
39467			return a.offsetScore - b.offsetScore;
39468		}
39469		if (a.abbrScore !== b.abbrScore) {
39470			return a.abbrScore - b.abbrScore;
39471		}
39472		if (a.zone.population !== b.zone.population) {
39473			return b.zone.population - a.zone.population;
39474		}
39475		return b.zone.name.localeCompare(a.zone.name);
39476	}
39477
39478	function addToGuesses (name, offsets) {
39479		var i, offset;
39480		arrayToInt(offsets);
39481		for (i = 0; i < offsets.length; i++) {
39482			offset = offsets[i];
39483			guesses[offset] = guesses[offset] || {};
39484			guesses[offset][name] = true;
39485		}
39486	}
39487
39488	function guessesForUserOffsets (offsets) {
39489		var offsetsLength = offsets.length,
39490			filteredGuesses = {},
39491			out = [],
39492			i, j, guessesOffset;
39493
39494		for (i = 0; i < offsetsLength; i++) {
39495			guessesOffset = guesses[offsets[i].offset] || {};
39496			for (j in guessesOffset) {
39497				if (guessesOffset.hasOwnProperty(j)) {
39498					filteredGuesses[j] = true;
39499				}
39500			}
vendor: 4,401 bytes, lines 39500-39703
39500
39501		}
39502
39503		for (i in filteredGuesses) {
39504			if (filteredGuesses.hasOwnProperty(i)) {
39505				out.push(names[i]);
39506			}
39507		}
39508
39509		return out;
39510	}
39511
39512	function rebuildGuess () {
39513
39514		// use Intl API when available and returning valid time zone
39515		try {
39516			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
39517			if (intlName && intlName.length > 3) {
39518				var name = names[normalizeName(intlName)];
39519				if (name) {
39520					return name;
39521				}
39522				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
39523			}
39524		} catch (e) {
39525			// Intl unavailable, fall back to manual guessing.
39526		}
39527
39528		var offsets = userOffsets(),
39529			offsetsLength = offsets.length,
39530			guesses = guessesForUserOffsets(offsets),
39531			zoneScores = [],
39532			zoneScore, i, j;
39533
39534		for (i = 0; i < guesses.length; i++) {
39535			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
39536			for (j = 0; j < offsetsLength; j++) {
39537				zoneScore.scoreOffsetAt(offsets[j]);
39538			}
39539			zoneScores.push(zoneScore);
39540		}
39541
39542		zoneScores.sort(sortZoneScores);
39543
39544		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
39545	}
39546
39547	function guess (ignoreCache) {
39548		if (!cachedGuess || ignoreCache) {
39549			cachedGuess = rebuildGuess();
39550		}
39551		return cachedGuess;
39552	}
39553
39554	/************************************
39555		Global Methods
39556	************************************/
39557
39558	function normalizeName (name) {
39559		return (name || '').toLowerCase().replace(/\//g, '_');
39560	}
39561
39562	function addZone (packed) {
39563		var i, name, split, normalized;
39564
39565		if (typeof packed === "string") {
39566			packed = [packed];
39567		}
39568
39569		for (i = 0; i < packed.length; i++) {
39570			split = packed[i].split('|');
39571			name = split[0];
39572			normalized = normalizeName(name);
39573			zones[normalized] = packed[i];
39574			names[normalized] = name;
39575			addToGuesses(normalized, split[2].split(' '));
39576		}
39577	}
39578
39579	function getZone (name, caller) {
39580
39581		name = normalizeName(name);
39582
39583		var zone = zones[name];
39584		var link;
39585
39586		if (zone instanceof Zone) {
39587			return zone;
39588		}
39589
39590		if (typeof zone === 'string') {
39591			zone = new Zone(zone);
39592			zones[name] = zone;
39593			return zone;
39594		}
39595
39596		// Pass getZone to prevent recursion more than 1 level deep
39597		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
39598			zone = zones[name] = new Zone();
39599			zone._set(link);
39600			zone.name = names[name];
39601			return zone;
39602		}
39603
39604		return null;
39605	}
39606
39607	function getNames () {
39608		var i, out = [];
39609
39610		for (i in names) {
39611			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
39612				out.push(names[i]);
39613			}
39614		}
39615
39616		return out.sort();
39617	}
39618
39619	function getCountryNames () {
39620		return Object.keys(countries);
39621	}
39622
39623	function addLink (aliases) {
39624		var i, alias, normal0, normal1;
39625
39626		if (typeof aliases === "string") {
39627			aliases = [aliases];
39628		}
39629
39630		for (i = 0; i < aliases.length; i++) {
39631			alias = aliases[i].split('|');
39632
39633			normal0 = normalizeName(alias[0]);
39634			normal1 = normalizeName(alias[1]);
39635
39636			links[normal0] = normal1;
39637			names[normal0] = alias[0];
39638
39639			links[normal1] = normal0;
39640			names[normal1] = alias[1];
39641		}
39642	}
39643
39644	function addCountries (data) {
39645		var i, country_code, country_zones, split;
39646		if (!data || !data.length) return;
39647		for (i = 0; i < data.length; i++) {
39648			split = data[i].split('|');
39649			country_code = split[0].toUpperCase();
39650			country_zones = split[1].split(' ');
39651			countries[country_code] = new Country(
39652				country_code,
39653				country_zones
39654			);
39655		}
39656	}
39657
39658	function getCountry (name) {
39659		name = name.toUpperCase();
39660		return countries[name] || null;
39661	}
39662
39663	function zonesForCountry(country, with_offset) {
39664		country = getCountry(country);
39665
39666		if (!country) return null;
39667
39668		var zones = country.zones.sort();
39669
39670		if (with_offset) {
39671			return zones.map(function (zone_name) {
39672				var zone = getZone(zone_name);
39673				return {
39674					name: zone_name,
39675					offset: zone.utcOffset(new Date())
39676				};
39677			});
39678		}
39679
39680		return zones;
39681	}
39682
39683	function loadData (data) {
39684		addZone(data.zones);
39685		addLink(data.links);
39686		addCountries(data.countries);
39687		tz.dataVersion = data.version;
39688	}
39689
39690	function zoneExists (name) {
39691		if (!zoneExists.didShowError) {
39692			zoneExists.didShowError = true;
39693				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
39694		}
39695		return !!getZone(name);
39696	}
39697
39698	function needsOffset (m) {
39699		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
39700		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
39701	}
39702
39703	function 
vendor: 7,502 bytes, lines 39703-40096
39703logError (message) {
39704		if (typeof console !== 'undefined' && typeof console.error === 'function') {
39705			console.error(message);
39706		}
39707	}
39708
39709	/************************************
39710		moment.tz namespace
39711	************************************/
39712
39713	function tz (input) {
39714		var args = Array.prototype.slice.call(arguments, 0, -1),
39715			name = arguments[arguments.length - 1],
39716			zone = getZone(name),
39717			out  = moment.utc.apply(null, args);
39718
39719		if (zone && !moment.isMoment(input) && needsOffset(out)) {
39720			out.add(zone.parse(out), 'minutes');
39721		}
39722
39723		out.tz(name);
39724
39725		return out;
39726	}
39727
39728	tz.version      = VERSION;
39729	tz.dataVersion  = '';
39730	tz._zones       = zones;
39731	tz._links       = links;
39732	tz._names       = names;
39733	tz._countries	= countries;
39734	tz.add          = addZone;
39735	tz.link         = addLink;
39736	tz.load         = loadData;
39737	tz.zone         = getZone;
39738	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
39739	tz.guess        = guess;
39740	tz.names        = getNames;
39741	tz.Zone         = Zone;
39742	tz.unpack       = unpack;
39743	tz.unpackBase60 = unpackBase60;
39744	tz.needsOffset  = needsOffset;
39745	tz.moveInvalidForward   = true;
39746	tz.moveAmbiguousForward = false;
39747	tz.countries    = getCountryNames;
39748	tz.zonesForCountry = zonesForCountry;
39749
39750	/************************************
39751		Interface with Moment.js
39752	************************************/
39753
39754	var fn = moment.fn;
39755
39756	moment.tz = tz;
39757
39758	moment.defaultZone = null;
39759
39760	moment.updateOffset = function (mom, keepTime) {
39761		var zone = moment.defaultZone,
39762			offset;
39763
39764		if (mom._z === undefined) {
39765			if (zone && needsOffset(mom) && !mom._isUTC) {
39766				mom._d = moment.utc(mom._a)._d;
39767				mom.utc().add(zone.parse(mom), 'minutes');
39768			}
39769			mom._z = zone;
39770		}
39771		if (mom._z) {
39772			offset = mom._z.utcOffset(mom);
39773			if (Math.abs(offset) < 16) {
39774				offset = offset / 60;
39775			}
39776			if (mom.utcOffset !== undefined) {
39777				var z = mom._z;
39778				mom.utcOffset(-offset, keepTime);
39779				mom._z = z;
39780			} else {
39781				mom.zone(offset, keepTime);
39782			}
39783		}
39784	};
39785
39786	fn.tz = function (name, keepTime) {
39787		if (name) {
39788			if (typeof name !== 'string') {
39789				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
39790			}
39791			this._z = getZone(name);
39792			if (this._z) {
39793				moment.updateOffset(this, keepTime);
39794			} else {
39795				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
39796			}
39797			return this;
39798		}
39799		if (this._z) { return this._z.name; }
39800	};
39801
39802	function abbrWrap (old) {
39803		return function () {
39804			if (this._z) { return this._z.abbr(this); }
39805			return old.call(this);
39806		};
39807	}
39808
39809	function resetZoneWrap (old) {
39810		return function () {
39811			this._z = null;
39812			return old.apply(this, arguments);
39813		};
39814	}
39815
39816	function resetZoneWrap2 (old) {
39817		return function () {
39818			if (arguments.length > 0) this._z = null;
39819			return old.apply(this, arguments);
39820		};
39821	}
39822
39823	fn.zoneName  = abbrWrap(fn.zoneName);
39824	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
39825	fn.utc       = resetZoneWrap(fn.utc);
39826	fn.local     = resetZoneWrap(fn.local);
39827	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
39828
39829	moment.tz.setDefault = function(name) {
39830		if (major < 2 || (major === 2 && minor < 9)) {
39831			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
39832		}
39833		moment.defaultZone = name ? getZone(name) : null;
39834		return moment;
39835	};
39836
39837	// Cloning a moment should include the _z property.
39838	var momentProperties = moment.momentProperties;
39839	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
39840		// moment 2.8.1+
39841		momentProperties.push('_z');
39842		momentProperties.push('_a');
39843	} else if (momentProperties) {
39844		// moment 2.7.0
39845		momentProperties._z = null;
39846	}
39847
39848	// INJECT DATA
39849
39850	return moment;
39851}));
39852
39853
39854/***/ }),
39855/* 148 */
39856/***/ (function(module, exports, __webpack_require__) {
39857
39858var map = {
39859	"./af": 4,
39860	"./af.js": 4,
39861	"./ar": 5,
39862	"./ar-dz": 6,
39863	"./ar-dz.js": 6,
39864	"./ar-kw": 7,
39865	"./ar-kw.js": 7,
39866	"./ar-ly": 8,
39867	"./ar-ly.js": 8,
39868	"./ar-ma": 9,
39869	"./ar-ma.js": 9,
39870	"./ar-sa": 10,
39871	"./ar-sa.js": 10,
39872	"./ar-tn": 11,
39873	"./ar-tn.js": 11,
39874	"./ar.js": 5,
39875	"./az": 12,
39876	"./az.js": 12,
39877	"./be": 13,
39878	"./be.js": 13,
39879	"./bg": 14,
39880	"./bg.js": 14,
39881	"./bm": 15,
39882	"./bm.js": 15,
39883	"./bn": 16,
39884	"./bn-bd": 17,
39885	"./bn-bd.js": 17,
39886	"./bn.js": 16,
39887	"./bo": 18,
39888	"./bo.js": 18,
39889	"./br": 19,
39890	"./br.js": 19,
39891	"./bs": 20,
39892	"./bs.js": 20,
39893	"./ca": 21,
39894	"./ca.js": 21,
39895	"./cs": 22,
39896	"./cs.js": 22,
39897	"./cv": 23,
39898	"./cv.js": 23,
39899	"./cy": 24,
39900	"./cy.js": 24,
39901	"./da": 25,
39902	"./da.js": 25,
39903	"./de": 26,
39904	"./de-at": 27,
39905	"./de-at.js": 27,
39906	"./de-ch": 28,
39907	"./de-ch.js": 28,
39908	"./de.js": 26,
39909	"./dv": 29,
39910	"./dv.js": 29,
39911	"./el": 30,
39912	"./el.js": 30,
39913	"./en-au": 31,
39914	"./en-au.js": 31,
39915	"./en-ca": 32,
39916	"./en-ca.js": 32,
39917	"./en-gb": 33,
39918	"./en-gb.js": 33,
39919	"./en-ie": 34,
39920	"./en-ie.js": 34,
39921	"./en-il": 35,
39922	"./en-il.js": 35,
39923	"./en-in": 36,
39924	"./en-in.js": 36,
39925	"./en-nz": 37,
39926	"./en-nz.js": 37,
39927	"./en-sg": 38,
39928	"./en-sg.js": 38,
39929	"./eo": 39,
39930	"./eo.js": 39,
39931	"./es": 40,
39932	"./es-do": 41,
39933	"./es-do.js": 41,
39934	"./es-mx": 42,
39935	"./es-mx.js": 42,
39936	"./es-us": 43,
39937	"./es-us.js": 43,
39938	"./es.js": 40,
39939	"./et": 44,
39940	"./et.js": 44,
39941	"./eu": 45,
39942	"./eu.js": 45,
39943	"./fa": 46,
39944	"./fa.js": 46,
39945	"./fi": 47,
39946	"./fi.js": 47,
39947	"./fil": 48,
39948	"./fil.js": 48,
39949	"./fo": 49,
39950	"./fo.js": 49,
39951	"./fr": 50,
39952	"./fr-ca": 51,
39953	"./fr-ca.js": 51,
39954	"./fr-ch": 52,
39955	"./fr-ch.js": 52,
39956	"./fr.js": 50,
39957	"./fy": 53,
39958	"./fy.js": 53,
39959	"./ga": 54,
39960	"./ga.js": 54,
39961	"./gd": 55,
39962	"./gd.js": 55,
39963	"./gl": 56,
39964	"./gl.js": 56,
39965	"./gom-deva": 57,
39966	"./gom-deva.js": 57,
39967	"./gom-latn": 58,
39968	"./gom-latn.js": 58,
39969	"./gu": 59,
39970	"./gu.js": 59,
39971	"./he": 60,
39972	"./he.js": 60,
39973	"./hi": 61,
39974	"./hi.js": 61,
39975	"./hr": 62,
39976	"./hr.js": 62,
39977	"./hu": 63,
39978	"./hu.js": 63,
39979	"./hy-am": 64,
39980	"./hy-am.js": 64,
39981	"./id": 65,
39982	"./id.js": 65,
39983	"./is": 66,
39984	"./is.js": 66,
39985	"./it": 67,
39986	"./it-ch": 68,
39987	"./it-ch.js": 68,
39988	"./it.js": 67,
39989	"./ja": 69,
39990	"./ja.js": 69,
39991	"./jv": 70,
39992	"./jv.js": 70,
39993	"./ka": 71,
39994	"./ka.js": 71,
39995	"./kk": 72,
39996	"./kk.js": 72,
39997	"./km": 73,
39998	"./km.js": 73,
39999	"./kn": 74,
40000	"./kn.js": 74,
40001	"./ko": 75,
40002	"./ko.js": 75,
40003	"./ku": 76,
40004	"./ku.js": 76,
40005	"./ky": 77,
40006	"./ky.js": 77,
40007	"./lb": 78,
40008	"./lb.js": 78,
40009	"./lo": 79,
40010	"./lo.js": 79,
40011	"./lt": 80,
40012	"./lt.js": 80,
40013	"./lv": 81,
40014	"./lv.js": 81,
40015	"./me": 82,
40016	"./me.js": 82,
40017	"./mi": 83,
40018	"./mi.js": 83,
40019	"./mk": 84,
40020	"./mk.js": 84,
40021	"./ml": 85,
40022	"./ml.js": 85,
40023	"./mn": 86,
40024	"./mn.js": 86,
40025	"./mr": 87,
40026	"./mr.js": 87,
40027	"./ms": 88,
40028	"./ms-my": 89,
40029	"./ms-my.js": 89,
40030	"./ms.js": 88,
40031	"./mt": 90,
40032	"./mt.js": 90,
40033	"./my": 91,
40034	"./my.js": 91,
40035	"./nb": 92,
40036	"./nb.js": 92,
40037	"./ne": 93,
40038	"./ne.js": 93,
40039	"./nl": 94,
40040	"./nl-be": 95,
40041	"./nl-be.js": 95,
40042	"./nl.js": 94,
40043	"./nn": 96,
40044	"./nn.js": 96,
40045	"./oc-lnc": 97,
40046	"./oc-lnc.js": 97,
40047	"./pa-in": 98,
40048	"./pa-in.js": 98,
40049	"./pl": 99,
40050	"./pl.js": 99,
40051	"./pt": 100,
40052	"./pt-br": 101,
40053	"./pt-br.js": 101,
40054	"./pt.js": 100,
40055	"./ro": 102,
40056	"./ro.js": 102,
40057	"./ru": 103,
40058	"./ru.js": 103,
40059	"./sd": 104,
40060	"./sd.js": 104,
40061	"./se": 105,
40062	"./se.js": 105,
40063	"./si": 106,
40064	"./si.js": 106,
40065	"./sk": 107,
40066	"./sk.js": 107,
40067	"./sl": 108,
40068	"./sl.js": 108,
40069	"./sq": 109,
40070	"./sq.js": 109,
40071	"./sr": 110,
40072	"./sr-cyrl": 111,
40073	"./sr-cyrl.js": 111,
40074	"./sr.js": 110,
40075	"./ss": 112,
40076	"./ss.js": 112,
40077	"./sv": 113,
40078	"./sv.js": 113,
40079	"./sw": 114,
40080	"./sw.js": 114,
40081	"./ta": 115,
40082	"./ta.js": 115,
40083	"./te": 116,
40084	"./te.js": 116,
40085	"./tet": 117,
40086	"./tet.js": 117,
40087	"./tg": 118,
40088	"./tg.js": 118,
40089	"./th": 119,
40090	"./th.js": 119,
40091	"./tk": 120,
40092	"./tk.js": 120,
40093	"./tl-ph": 121,
40094	"./tl-ph.js": 121,
40095	"./tlh": 122,
40096	"./tlh.js": 122,
40097	"./tr": 123,
40098	"./tr.js": 123,
40099	"./tzl": 124,
40100	"./tzl.js": 124,
40101	"./tzm": 125,
40102	"./tzm-latn": 126,
40103	"./tzm-latn.js": 126,
40104	"./tzm.js": 125,
40105	"./ug-cn": 127,
40106	"./ug-cn.js": 127,
40107	"./uk": 128,
40108	"./uk.js": 128,
40109	"./ur": 129,
40110	"./ur.js": 129,
40111	"./uz": 130,
40112	"./uz-latn": 131,
40113	"./uz-latn.js": 131,
40114	"./uz.js": 130,
40115	"./vi": 132,
40116	"./vi.js": 132,
40117	"./x-pseudo": 133,
40118	"./x-pseudo.js": 133,
40119	"./yo": 134,
40120	"./yo.js": 134,
40121	"./zh-cn": 135,
40122	"./zh-cn.js": 135,
40123	"./zh-hk": 136,
40124	"./zh-hk.js": 136,
40125	"./zh-mo": 137,
40126	"./zh-mo.js": 137,
40127	"./zh-tw": 138,
40128	"./zh-tw.js": 138
40129};
40130function webpackContext(req) {
40131	return __webpack_require__(webpackContextResolve(req));
40132};
40133function webpackContextResolve(req) {
40134	var id = map[req];
40135	if(!(id + 1)) // check for number or string
40136		throw new Error("Cannot find module '" + req + "'.");
40137	return id;
40138};
40139webpackContext.keys = function webpackContextKeys() {
40140	return Object.keys(map);
40141};
40142webpackContext.resolve = webpackContextResolve;
40143module.exports = webpackContext;
40144webpackContext.id = 148;
40145
40146/***/ }),
40147/* 149 */
40148/***/ (function(module, exports) {
40149
40150module.exports = {"version":"2020a","zones":["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
4015000 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e
4015000 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|0121|-2le00 4i6N0 2q00|","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 8
401500 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG
401500 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|01010230405656565656565656565656565656565656565656565656565656565656565656565656565656565657|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|01023232323232324523232323232323232323232323232323232323232676767676767676767676767676767676767676767676867676
401507676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 8
401500 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010401054541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 8
401500 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|01203030303030303030303030303030304545450454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/Ne
40150w_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 de
40150L0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT N
40150DDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT MST|90 80 80 80 70 80 70 70|01010230405656565656565656565656565656565656565656565656565656565656565656565656565656565657|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|010202020202
4015002020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 
40150-30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010101010101010|-23uw0 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312
40150121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|0101010101010101010101010101010123232323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0 11c0 1rc0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +03 +04|-1U.U -20 -30 -30 -40|0121212121212121212121212121212121212121212121234312121212121212121212121212121212121212121212121212121212121212123|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b
401500 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 bXd0 gM0 8Q00 IM0 1wM0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|L
40150MT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|PST PDT JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5","Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|012323232323232323232123232323232323232323232323|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|010202020202
4015002020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|
4015011.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 
401501cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0||","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","Etc
40150/GMT-0|GMT|0|0||","Etc/GMT-1|+01|-10|0||","Pacific/Port_Moresby|+10|-a0|0||25e4","Etc/GMT-11|+11|-b0|0||","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0||","Etc/GMT-14|+14|-e0|0||","Etc/GMT-2|+02|-20|0||","Etc/GMT-3|+03|-30|0||","Etc/GMT-4|+04|-40|0||","Etc/GMT-5|+05|-50|0||","Etc/GMT-6|+06|-60|0||","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0||","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0||","Etc/GMT+10|-10|a0|0||","Etc/GMT+11|-11|b0|0||","Etc/GMT+12|-12|c0|0||","Etc/GMT+3|-03|30|0||","Etc/GMT+4|-04|40|0||","Etc/GMT+5|-05|50|0||","Etc/GMT+6|-06|60|0||","Etc/GMT+7|-07|70|0||","Etc/GMT+8|-08|80|0||","Etc/GMT+9|-09|90|0||","Etc/UTC|UTC|0|0||","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","
40150Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST EET EEST MSK MSD +03|-10 -20 -20 -30 -30 -40 -30|01010101010101232454545454545454543232323232323232323232323232323232323232323262|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 
40150-10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -2
401500 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0||","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 +10 +09 -12 +12|-b0 -a0 -90 c0 -c0|012034|-1kln0 akp0 6Up0 12ry0 Wan0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|","MST|MST|70|0||","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Chuuk|+10 +09|-a0 -90|01010|-2ewy0 axB0 RVX0 axd0|49e3","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|
40150c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0 s00 1VA0 s00|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST +09 GDT ChST|-a0 -90 -b0 -a0|01020202020202020203|-18jK0 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4","Pacific/Honolulu|HST HDT HWT HPT HST|au 9u 9u 9u a0|0102304|-1thLu 8x0 lef0 8wWu iAu 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +09 +10 +12|-b0 -90 -a0 -c0|01021030|-2ewz0 axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2","Pacific/Majuro|+11 +09 +10 +12|-b0 -90 -a0 -c0|0102103|-2ewz0 axC0 HBy0 akp0 6RB0 12um0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11 +12|-bc -bu -cu -b0 -c0|012134343434343434343434343434343434343434|-Kgbc W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Pohnpei|+11 +09 +10|-b0 -90 -a0|010210|-2ewz0 axC0 HBy0 akp0 axd0|34e3","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|"],"links":["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigal
40150i","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Godthab|America/Nuuk","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada
40150/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Chuuk|Pacific/Truk","Pacific/Chuuk|Pacific/Yap","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"],"countries":["AD|Europe/Andorra","AE|Asia/Dubai","AF|Asia/Kabul","AG|America/Port_of_Spain America/Antigua","AI|America/Port_of_Spain America/Anguilla","AL|Europe/Tirane","AM|Asia/Yerevan","AO|Africa/Lagos Africa/Luanda","AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo","AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia","AS|Pacific/Pago_Pago","AT|Europe/Vienna","AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla","AW|America/Curacao America/Aruba","AX|Europe/Helsinki Europe/Mariehamn","AZ|Asia/Baku","BA|Europe/Belgrade Europe/Sarajevo","BB|America/Barbados","BD|Asia/Dhaka","BE|Europe/Brussels","BF|Africa/Abidjan Africa/Ouagadougou","BG|Europe/Sofia","BH|Asia/Qatar Asia/Bahrain","BI|Africa/Maputo Africa/Bujumbura","BJ|Africa/Lagos Africa/Porto-Novo","BL|America/Port_of_Spain America/St_Barthelemy","BM|Atlantic/Bermuda","BN|Asia/Brunei","BO|America/La_Paz","BQ|America/Curacao America/Kralendijk","BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco","BS|America/Nassau","BT|Asia/Thimphu","BW|Africa/Maputo Africa/Gaborone","BY|Europe/Minsk","BZ|America/Belize","CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson","CC|Indian/Cocos","CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi","CF|Africa/Lagos Africa/Bangui","CG|Africa/Lagos Africa/Brazzaville","CH|Europe/Zurich","CI|Africa/Abidjan","CK|Pacific/Rarotonga","CL|America/Santiago America/Punta_Arenas Pacific/Easter","CM|Africa/Lagos Africa/Douala","CN|Asia/Shanghai Asia/Urumqi","CO|America/Bogota","CR|America/Costa_Rica","CU|America/Havana","CV|Atlantic/Cape_Verde","CW|America/Curacao","CX|Indian/Christmas","CY|Asia/Nicosia Asia/Famagusta","CZ|Europe/Prague","DE|Europe/Zurich Europe/Berlin Europe/Busingen","DJ|Africa/Nairobi Africa/Djibouti","DK|Europe/Copenhagen","DM|America/Port_of_Spain America/Dominica","DO|America/Santo_Domingo","DZ|Africa/Algiers","EC|America/Guayaquil Pacific/Galapagos","EE|Europe/Tallinn","EG|Africa/Cairo","EH|Africa/El_Aaiun","ER|Africa/Nairobi Africa/Asmara","ES|Europe/Madrid Africa/Ceuta Atlantic/Canary","ET|Africa/Nairobi Africa/Addis_Ababa","FI|Europe/Helsinki","FJ|Pacific/Fiji","FK|Atlantic/Stanley","FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae","FO|Atlantic/Faroe","FR|Europe/Paris","GA|Africa/Lagos Africa/Libreville","GB|Europe/London","GD|America/Port_of_Spain America/Grenada","GE|Asia/Tbilisi","GF|America/Cayenne","GG|Europe/London 
40150Europe/Guernsey","GH|Africa/Accra","GI|Europe/Gibraltar","GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule","GM|Africa/Abidjan Africa/Banjul","GN|Africa/Abidjan Africa/Conakry","GP|America/Port_of_Spain America/Guadeloupe","GQ|Africa/Lagos Africa/Malabo","GR|Europe/Athens","GS|Atlantic/South_Georgia","GT|America/Guatemala","GU|Pacific/Guam","GW|Africa/Bissau","GY|America/Guyana","HK|Asia/Hong_Kong","HN|America/Tegucigalpa","HR|Europe/Belgrade Europe/Zagreb","HT|America/Port-au-Prince","HU|Europe/Budapest","ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura","IE|Europe/Dublin","IL|Asia/Jerusalem","IM|Europe/London Europe/Isle_of_Man","IN|Asia/Kolkata","IO|Indian/Chagos","IQ|Asia/Baghdad","IR|Asia/Tehran","IS|Atlantic/Reykjavik","IT|Europe/Rome","JE|Europe/London Europe/Jersey","JM|America/Jamaica","JO|Asia/Amman","JP|Asia/Tokyo","KE|Africa/Nairobi","KG|Asia/Bishkek","KH|Asia/Bangkok Asia/Phnom_Penh","KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati","KM|Africa/Nairobi Indian/Comoro","KN|America/Port_of_Spain America/St_Kitts","KP|Asia/Pyongyang","KR|Asia/Seoul","KW|Asia/Riyadh Asia/Kuwait","KY|America/Panama America/Cayman","KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral","LA|Asia/Bangkok Asia/Vientiane","LB|Asia/Beirut","LC|America/Port_of_Spain America/St_Lucia","LI|Europe/Zurich Europe/Vaduz","LK|Asia/Colombo","LR|Africa/Monrovia","LS|Africa/Johannesburg Africa/Maseru","LT|Europe/Vilnius","LU|Europe/Luxembourg","LV|Europe/Riga","LY|Africa/Tripoli","MA|Africa/Casablanca","MC|Europe/Monaco","MD|Europe/Chisinau","ME|Europe/Belgrade Europe/Podgorica","MF|America/Port_of_Spain America/Marigot","MG|Africa/Nairobi Indian/Antananarivo","MH|Pacific/Majuro Pacific/Kwajalein","MK|Europe/Belgrade Europe/Skopje","ML|Africa/Abidjan Africa/Bamako","MM|Asia/Yangon","MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan","MO|Asia/Macau","MP|Pacific/Guam Pacific/Saipan","MQ|America/Martinique","MR|Africa/Abidjan Africa/Nouakchott","MS|America/Port_of_Spain America/Montserrat","MT|Europe/Malta","MU|Indian/Mauritius","MV|Indian/Maldives","MW|Africa/Maputo Africa/Blantyre","MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas","MY|Asia/Kuala_Lumpur Asia/Kuching","MZ|Africa/Maputo","NA|Africa/Windhoek","NC|Pacific/Noumea","NE|Africa/Lagos Africa/Niamey","NF|Pacific/Norfolk","NG|Africa/Lagos","NI|America/Managua","NL|Europe/Amsterdam","NO|Europe/Oslo","NP|Asia/Kathmandu","NR|Pacific/Nauru","NU|Pacific/Niue","NZ|Pacific/Auckland Pacific/Chatham","OM|Asia/Dubai Asia/Muscat","PA|America/Panama","PE|America/Lima","PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier","PG|Pacific/Port_Moresby Pacific/Bougainville","PH|Asia/Manila","PK|Asia/Karachi","PL|Europe/Warsaw","PM|America/Miquelon","PN|Pacific/Pitcairn","PR|America/Puerto_Rico","PS|Asia/Gaza Asia/Hebron","PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores","PW|Pacific/Palau","PY|America/Asuncion","QA|Asia/Qatar","RE|Indian/Reunion","RO|Europe/Bucharest","RS|Europe/Belgrade","RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr","RW|Africa/Maputo Africa/Kigali","SA|Asia/Riyadh","SB|Pacific/Guadalcanal","SC|Indian/Mahe","SD|Africa/Khartoum","SE|Europe/Stockholm","SG|Asia/Singapore","SH|Africa/Abidjan Atlantic/St_Helena","SI|Europe/Belgrade Europe/Ljubljana","SJ|Europe/Oslo Arctic/Longyearbyen","SK|Europe/Prague Europe/Bratislava","SL|Africa/Abidjan Africa/Freetown","SM|Europe/Rome Europe/San_Marino","SN|Africa/Abidjan Africa/Dakar","SO|Africa/Nairobi Africa/Mogadishu","SR|America/Paramaribo","SS|Africa/Juba","ST|Africa/Sao_Tome","SV|America/El_Salvador","SX|America/Curacao America/Lower_Princes","SY|Asia/Damascus","SZ|Africa/Johannesburg Africa/Mbabane","TC|America/Grand_Turk","TD|Africa/Ndjamena","TF|Indian/Reunion Indian/Kerguelen","TG|Africa/Abidjan Africa/Lome","TH|Asia/Bangkok","TJ|Asia/Dushanbe","TK|Pacific/Fakaofo","TL|Asia/Dili","TM|Asia/Ashgabat","TN|Africa/Tunis","TO|Pacific/Tongatapu","TR|Europe/Istanbul","TT|America/Port_of_Spain","TV|Pacific/Funafuti","TW|Asia/Taipei","TZ|Africa/Nairobi Africa/Dar_es_Salaam","UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye","UG|Africa/Nairobi Africa/Kampala","UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway","US|America/Ne
40150w_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu","UY|America/Montevideo","UZ|Asia/Samarkand Asia/Tashkent","VA|Europe/Rome Europe/Vatican","VC|America/Port_of_Spain America/St_Vincent","VE|America/Caracas","VG|America/Port_of_Spain America/Tortola","VI|America/Port_of_Spain America/St_Thomas","VN|Asia/Bangkok Asia/Ho_Chi_Minh","VU|Pacific/Efate","WF|Pacific/Wallis","WS|Pacific/Apia","YE|Asia/Riyadh Asia/Aden","YT|Africa/Nairobi Indian/Mayotte","ZA|Africa/Johannesburg","ZM|Africa/Maputo Africa/Lusaka","ZW|Africa/Maputo Africa/Harare"]}
40151
40152/***/ }),
40153/* 150 */
40154/***/ (function(module, __webpack_exports__, __webpack_require__) {
40155
40156"use strict";
40157var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40158
40159function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40160
40161var YearSelector = function () {
40162    function YearSelector() {
40163        _classCallCheck(this, YearSelector);
40164    }
40165
40166    _createClass(YearSelector, [{
40167        key: 'init',
40168
40169
40170        /**
40171         * Changes URL passed from year select
40172         * Expects selector to have id #YearSelector
40173         */
40174
40175        value: function init() {
40176            var _this = this;
40177
40178            var currentLocation = window.location.href;
40179            var selector = document.getElementById('YearSelector');
40180            if (selector) {
40181                var prev_year = selector.value;
40182                var url = currentLocation.split('/' + prev_year)[0];
40183                document.getElementById('YearSelector').addEventListener('change', function (event) {
40184                    return _this.updateYear(event, url);
40185                });
40186            }
40187        }
40188    }, {
40189        key: 'updateYear',
40190        value: function updateYear(event, url) {
40191            var newYear = event.target.value;
40192            if (newYear !== 'allyears') {
40193                var urlParts = url.split('?');
40194                url = urlParts[0] + '/' + newYear;
40195            }
40196            window.location.href = url;
40197        }
40198    }]);
40199
40200    return YearSelector;
40201}();
40202
40203/* harmony default export */ __webpack_exports__["a"] = (new YearSelector());
40204
40205/***/ }),
40206/* 151 */
40207/***/ (function(module, __webpack_exports__, __webpack_require__) {
40208
40209"use strict";
40210/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__EmailAPI__ = __webpack_require__(152);
40211/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__FacebookAPI__ = __webpack_require__(153);
40212/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__PinterestAPI__ = __webpack_require__(154);
40213/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__TwitterAPI__ = __webpack_require__(155);
40214/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash__ = __webpack_require__(1);
40215/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash__);
40216var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40217
40218function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40219
40220
40221
40222
40223
40224
40225
40226var SocialMedia = function () {
40227    function SocialMedia() {
40228        _classCallCheck(this, SocialMedia);
40229    }
40230
40231    _createClass(SocialMedia, [{
40232        key: 'init',
40233        value: function init() {
40234            var _this = this;
40235
40236            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.facebook-share'), function (link) {
40237                return link.addEventListener('click', _this.onFacebookShare);
40238            });
40239            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.twitter-share'), function (link) {
40240                return link.addEventListener('click', _this.onTwitterShare);
40241            });
40242            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.pinterest-share'), function (link) {
40243                return link.addEventListener('click', _this.onPinterestShare);
40244            });
40245            Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["forEach"])(document.querySelectorAll('.email-share'), function (link) {
40246                return link.addEventListener('click', _this.onEmailShare);
40247            });
40248        }
40249    }, {
40250        key: 'onFacebookShare',
40251        value: function onFacebookShare(event) {
40252            __WEBPACK_IMPORTED_MODULE_1__FacebookAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
40253        }
40254    }, {
40255        key: 'onTwitterShare',
40256        value: function onTwitterShare(event) {
40257            __WEBPACK_IMPORTED_MODULE_3__TwitterAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
40258        }
40259    }, {
40260        key: 'onPinterestShare',
40261        value: function onPinterestShare(event) {
40262            __WEBPACK_IMPORTED_MODULE_2__PinterestAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
40263        }
40264    }, {
40265        key: 'onEmailShare',
40266        value: function onEmailShare(event) {
40267            __WEBPACK_IMPORTED_MODULE_0__EmailAPI__["a" /* default */].share(Object(__WEBPACK_IMPORTED_MODULE_4_lodash__["assign"])({}, event.currentTarget.dataset));
40268        }
40269    }]);
40270
40271    return SocialMedia;
40272}();
40273
40274/* harmony default export */ __webpack_exports__["a"] = (new SocialMedia());
40275
40276/***/ }),
40277/* 152 */
40278/***/ (function(module, __webpack_exports__, __webpack_require__) {
40279
40280"use strict";
40281/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(2);
40282/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
40283/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
40284var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40285
40286function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40287
40288
40289
40290
40291var EmailAPI = function () {
40292    function EmailAPI() {
40293        _classCallCheck(this, EmailAPI);
40294    }
40295
40296    _createClass(EmailAPI, [{
40297        key: 'share',
40298
40299
40300        /**
40301         * Triggers a link to send an email.
40302         * Expects DOM element to have data-subject and data-body.
40303         * @param {Object} userOptions
40304         */
40305        value: function share(userOptions) {
40306            var options = Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["assign"])({}, {
40307                subject: '',
40308                body: ''
40309            }, userOptions);
40310
40311            var queryParams = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["b" /* serialize */])(options);
40312            var url = 'mailto:?' + queryParams;
40313            location.replace(url);
40314        }
40315    }]);
40316
40317    return EmailAPI;
40318}();
40319
40320/* harmony default export */ __webpack_exports__["a"] = (new EmailAPI());
40321
40322/***/ }),
40323/* 153 */
40324/***/ (function(module, __webpack_exports__, __webpack_require__) {
40325
40326"use strict";
40327var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40328
40329function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40330
40331var FacebookAPI = function () {
40332    function FacebookAPI() {
40333        _classCallCheck(this, FacebookAPI);
40334    }
40335
40336    _createClass(FacebookAPI, [{
40337        key: 'share',
40338
40339
40340        /**
40341         * Creates popup to share something on Facebook.
40342         * Expects DOM element to have data-url (required), data-media and data-description.
40343         * @param {Object} userOptions
40344         */
40345        value: function share(options) {
40346            var url = 'https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(options.url);
40347            var facebookShare = window.open(url, 'FacebookShare', 'height=350,width=558,resizable,scrollbars,status');
40348            if (window.focus) {
40349                facebookShare.focus();
40350            }
40351        }
40352    }]);
40353
40354    return FacebookAPI;
40355}();
40356
40357/* harmony default export */ __webpack_exports__["a"] = (new FacebookAPI());
40358
40359/***/ }),
40360/* 154 */
40361/***/ (function(module, __webpack_exports__, __webpack_require__) {
40362
40363"use strict";
40364/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(2);
40365/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
40366/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
40367var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40368
40369function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40370
40371
40372
40373
40374var PinterestAPI = function () {
40375    function PinterestAPI() {
40376        _classCallCheck(this, PinterestAPI);
40377    }
40378
40379    _createClass(PinterestAPI, [{
40380        key: 'share',
40381
40382
40383        /**
40384         * Creates popup to share something on Pinterest.
40385         * Expects DOM element to have data-url (required), data-media and data-description.
40386         * @param {Object} userOptions
40387         */
40388        value: function share(userOptions) {
40389            var options = Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["assign"])({}, {
40390                url: '',
40391                description: '',
40392                media: ''
40393            }, userOptions);
40394
40395            var queryParams = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["b" /* serialize */])(options);
40396            var url = 'https://pinterest.com/pin/create/button/?' + queryParams;
40397            var pinterestShare = window.open(url, 'PinterestShare', 'height=783,width=6
4039750,resizable,scrollbars,status');
40398            if (window.focus) {
40399                pinterestShare.focus();
40400            }
40401        }
40402    }]);
40403
40404    return PinterestAPI;
40405}();
40406
40407/* harmony default export */ __webpack_exports__["a"] = (new PinterestAPI());
40408
40409/***/ }),
40410/* 155 */
40411/***/ (function(module, __webpack_exports__, __webpack_require__) {
40412
40413"use strict";
40414/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(2);
40415/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash__ = __webpack_require__(1);
40416/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_lodash__);
40417var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40418
40419function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40420
40421
40422
40423
40424var TwitterAPI = function () {
40425    function TwitterAPI() {
40426        _classCallCheck(this, TwitterAPI);
40427    }
40428
40429    _createClass(TwitterAPI, [{
40430        key: 'share',
40431
40432
40433        /**
40434         * Creates popup to share something on Twitter.
40435         * Expects DOM element to have data-via, data-related, data-hasthags and data-text.
40436         * @param {Object} userOptions
40437         */
40438        value: function share(userOptions) {
40439            var options = Object(__WEBPACK_IMPORTED_MODULE_1_lodash__["assign"])({}, {
40440                // via: 'allblacks',
40441                // related: 'twitterapi,twitter',
40442                // hashtags: 'example,demo',
40443                // text: 'Custom Text',
40444            }, userOptions);
40445
40446            var queryParams = Object(__WEBPACK_IMPORTED_MODULE_0__utils__["b" /* serialize */])(options);
40447            var url = 'https://twitter.com/share?' + queryParams;
40448            var twitterShare = window.open(url, 'TwitterShare', 'height=445,width=680,resizable,scrollbars,status');
40449            if (window.focus) {
40450                twitterShare.focus();
40451            }
40452        }
40453    }]);
40454
40455    return TwitterAPI;
40456}();
40457
40458/* harmony default export */ __webpack_exports__["a"] = (new TwitterAPI());
40459
40460/***/ }),
40461/* 156 */
40462/***/ (function(module, __webpack_exports__, __webpack_require__) {
40463
40464"use strict";
40465var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
40466
40467function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
40468
40469var Navigation = function () {
40470    function Navigation() {
40471        _classCallCheck(this, Navigation);
40472    }
40473
40474    _createClass(Navigation, [{
40475        key: 'init',
40476        value: function init() {
40477            var eventType = 'ontouchstart' in document.documentElement === true ? 'touchstart' : 'click';
40478            var elems = document.querySelectorAll('.primary-level-item');
40479            var hoverThreshold = 992;
40480
40481            // Mouse users
40482            // https://www.w3.org/WAI/tutorials/menus/flyout/#mouse-users
40483            elems.forEach(function (el) {
40484                var hasChildWithClass = el.querySelector('.second-level-nav__container') !== null;
40485
40486                if (!hasChildWithClass) {
40487                    return;
40488                }
40489
40490                var closeAction = function closeAction(target) {
40491                    target.parentNode.classList.remove('active');
40492                    target.setAttribute('aria-expanded', 'false');
40493
40494                    // Remove esc event listener
40495                    if (target.escController) {
40496                        target.escController.abort();
40497
40498                        // eslint-disable-next-line no-param-reassign
40499                        delete target.escController;
40500                    }
40501                };
40502
40503                var escapeEvent = function escapeEvent(closeEvt, target) {
40504                    if (closeEvt.key === 'Escape') {
40505                        closeEvt.stopPropagation();
40506                        closeAction(target);
40507                    }
40508                };
40509
40510                var closeOtherDropdowns = function closeOtherDropdowns() {
40511                    document.querySelectorAll('.primary-level-item.active [aria-expanded]').forEach(function (dropdown) {
40512                        return closeAction(dropdown);
40513                    });
40514                };
40515
40516                var openAction = function openAction(target) {
40517                    closeOtherDropdowns();
40518                    target.parentNode.classList.add('active');
40519                    target.setAttribute('aria-expanded', 'true');
40520
40521                    // Allow removal of esc event listener
40522                    var escController = new AbortController();
40523                    // eslint-disable-next-line no-param-reassign
40524                    target.escController = escController;
40525                    document.addEventListener('keydown', function (evt) {
40526                        return escapeEvent(evt, target);
40527                    }, {
40528                        signal: escController.signal
40529                    });
40530                };
40531
40532                // Keyboard users
40533                // https://www.w3.org/WAI/tutorials/menus/flyout/#use-button-as-toggle
40534                var childNavButton = el.querySelector('button');
40535                if (childNavButton) {
40536                    childNavButton.addEventListener(eventType, function (evt) {
40537                        if (evt.target.parentNode.classList.contains('active')) {
40538                            closeAction(evt.target);
40539                            return;
40540                        }
40541                        openAction(evt.target);
40542                    });
40543                }
40544
40545                // Check screen width before adding hover event listeners
40546                if (window.innerWidth > hoverThreshold) {
40547                    el.addEventListener('mouseover', function () {
40548                        openAction(childNavButton);
40549                    });
40550
40551                    el.addEventListener('mouseout', function () {
40552                        closeAction(childNavButton);
40553                    });
40554                }
40555
40556                var primaryNavContainer = el.querySelector('.second-level-nav');
40557
40558                primaryNavContainer.addEventListener('focusout', function (e) {
40559                    if (primaryNavContainer.contains(e.relatedTarget)) {
40560                        return;
40561                    }
40562                    // Pass in button to use same function
40563                    closeAction(childNavButton);
40564                });
40565            });
40566        }
40567    }]);
40568
40569    return Navigation;
40570}();
40571
40572/* harmony default export */ __webpack_exports__["a"] = (new Navigation());
40573
40574/***/ }),
40575/* 157 */
40576/***/ (function(module, __webpack_exports__, __webpack_require__) {
40577
40578"use strict";
40579/* unused harmony export MenuToggle */
40580/* harmony export (immutable) */ __webpack_exports__["a"] = init;
40581/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_throttle_debounce__ = __webpack_require__(158);
40582// import { createFocusTrap } from 'focus-trap';
40583
40584
40585var componentSelector = '[data-menu-toggle]';
40586
40587var toggleMenu = function toggleMenu(menu) {
40588    var setToVisible = menu.getAttribute('aria-expanded') === 'false';
40589    menu.setAttribute('aria-expanded', setToVisible);
40590
40591    if (menu.escEventAbort && menu.escEventAbort.abort) {
40592        menu.escEventAbort.abort();
40593    }
40594    if (menu.menuFocusTrap && menu.menuFocusTrap.deactivate) {
40595        menu.menuFocusTrap.deactivate();
40596    }
40597};
40598
40599// Close any open menus if the screen gets resized to the medium breakpoint
40600window.addEventListener('resize', Object(__WEBPACK_IMPORTED_MODULE_0_throttle_debounce__["a" /* throttle */])(200, function () {
40601    if (window.innerWidth >= 768) {
40602        document.querySelectorAll(componentSelector).forEach(function () {
40603            var menu = document.querySelector('[data-menu]');
40604
40605            if (menu.escEventAbort && menu.escEventAbort.abort) {
40606                menu.escEventAbort.abort();
40607            }
40608            if (menu.menuFocusTrap && menu.menuFocusTrap.deactivate) {
40609                menu.menuFocusTrap.deactivate();
40610            }
40611        });
40612    }
40613}));
40614
40615/**
40616 * Menu controls on mobile
40617 *
40618 * @param {HTMLElement} el
40619 * @returns
40620 */
40621var MenuToggle = function MenuToggle(el) {
40622    var menuNames = el.getAttribute('aria-controls').split(' ');
40623
40624    menuNames.forEach(function (menuName) {
40625        var menu = document.querySelector('#' + menuName);
40626
40627        if (!menu) return;
40628
40629        el.addEventListener('click', function () {
40630            return toggleMenu(menu);
40631        });
40632    });
40633};
40634
40635function init() {
40636    var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
40637
40638    scope.querySelectorAll(componentSelector).forEach(function (el) {
40639        return MenuToggle(el);
40640    });
40641}
40642
40643/***/ }),
40644/* 158 */
40645/***/ (function(module, __webpack_exports__, __webpack_require__) {
40646
40647"use strict";
40648/* unused harmony export debounce */
40649/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throttle; });
40650/* eslint-disable no-undefined,no-param-reassign,no-shadow */
40651
40652/**
40653 * Throttle execution of a function. Especially useful for rate limiting
40654 * execution of handlers on events like resize and scroll.
40655 *
40656 * @param {number} delay -                  A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)
40657 *                                            are most useful.
40658 * @param {Function} callback -               A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,
40659 *                                            as-is, to `callback` when the throttled-function is executed.
40660 * @param {object} [options] -              An object to configure options.
40661 * @param {boolean} [options.noTrailing] -   Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds
40662 *                                            while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed
40663 *                                            one final time after the last throttled-function call. (After the throttled-function has not been called for
40664 *                                            `delay` milliseconds, the internal 
40664counter is reset).
40665 * @param {boolean} [options.noLeading] -   Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback
40666 *                                            immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that
40667 *                                            callback will never executed if both noLeading = true and noTrailing = true.
40668 * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is
40669 *                                            false (at end), schedule `callback` to execute after `delay` ms.
40670 *
40671 * @returns {Function} A new, throttled, function.
40672 */
40673function throttle (delay, callback, options) {
40674  var _ref = options || {},
40675      _ref$noTrailing = _ref.noTrailing,
40676      noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,
40677      _ref$noLeading = _ref.noLeading,
40678      noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,
40679      _ref$debounceMode = _ref.debounceMode,
40680      debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;
40681  /*
40682   * After wrapper has stopped being called, this timeout ensures that
40683   * `callback` is executed at the proper times in `throttle` and `end`
40684   * debounce modes.
40685   */
40686
40687
40688  var timeoutID;
40689  var cancelled = false; // Keep track of the last time `callback` was executed.
40690
40691  var lastExec = 0; // Function to clear existing timeout
40692
40693  function clearExistingTimeout() {
40694    if (timeoutID) {
40695      clearTimeout(timeoutID);
40696    }
40697  } // Function to cancel next exec
40698
40699
40700  function cancel(options) {
40701    var _ref2 = options || {},
40702        _ref2$upcomingOnly = _ref2.upcomingOnly,
40703        upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;
40704
40705    clearExistingTimeout();
40706    cancelled = !upcomingOnly;
40707  }
40708  /*
40709   * The `wrapper` function encapsulates all of the throttling / debouncing
40710   * functionality and when executed will limit the rate at which `callback`
40711   * is executed.
40712   */
40713
40714
40715  function wrapper() {
40716    for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
40717      arguments_[_key] = arguments[_key];
40718    }
40719
40720    var self = this;
40721    var elapsed = Date.now() - lastExec;
40722
40723    if (cancelled) {
40724      return;
40725    } // Execute `callback` and update the `lastExec` timestamp.
40726
40727
40728    function exec() {
40729      lastExec = Date.now();
40730      callback.apply(self, arguments_);
40731    }
40732    /*
40733     * If `debounceMode` is true (at begin) this is used to clear the flag
40734     * to allow future `callback` executions.
40735     */
40736
40737
40738    function clear() {
40739      timeoutID = undefined;
40740    }
40741
40742    if (!noLeading && debounceMode && !timeoutID) {
40743      /*
40744       * Since `wrapper` is being called for the first time and
40745       * `debounceMode` is true (at begin), execute `callback`
40746       * and noLeading != true.
40747       */
40748      exec();
40749    }
40750
40751    clearExistingTimeout();
40752
40753    if (debounceMode === undefined && elapsed > delay) {
40754      if (noLeading) {
40755        /*
40756         * In throttle mode with noLeading, if `delay` time has
40757         * been exceeded, update `lastExec` and schedule `callback`
40758         * to execute after `delay` ms.
40759         */
40760        lastExec = Date.now();
40761
40762        if (!noTrailing) {
40763          timeoutID = setTimeout(debounceMode ? clear : exec, delay);
40764        }
40765      } else {
40766        /*
40767         * In throttle mode without noLeading, if `delay` time has been exceeded, execute
40768         * `callback`.
40769         */
40770        exec();
40771      }
40772    } else if (noTrailing !== true) {
40773      /*
40774       * In trailing throttle mode, since `delay` time has not been
40775       * exceeded, schedule `callback` to execute `delay` ms after most
40776       * recent execution.
40777       *
40778       * If `debounceMode` is true (at begin), schedule `clear` to execute
40779       * after `delay` ms.
40780       *
40781       * If `debounceMode` is false (at end), schedule `callback` to
40782       * execute after `delay` ms.
40783       */
40784      timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
40785    }
40786  }
40787
40788  wrapper.cancel = cancel; // Return the wrapper function.
40789
40790  return wrapper;
40791}
40792
40793/* eslint-disable no-undefined */
40794/**
40795 * Debounce execution of a function. Debouncing, unlike throttling,
40796 * guarantees that a function is only executed a single time, either at the
40797 * very beginning of a series of calls, or at the very end.
40798 *
40799 * @param {number} delay -               A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
40800 * @param {Function} callback -          A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
40801 *                                        to `callback` when the debounced-function is executed.
40802 * @param {object} [options] -           An object to configure options.
40803 * @param {boolean} [options.atBegin] -  Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
40804 *                                        after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
40805 *                                        (After the throttled-function has not been called for `delay` milliseconds, the internal 
40805counter is reset).
40806 *
40807 * @returns {Function} A new, debounced function.
40808 */
40809
40810function debounce (delay, callback, options) {
40811  var _ref = options || {},
40812      _ref$atBegin = _ref.atBegin,
40813      atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;
40814
40815  return throttle(delay, callback, {
40816    debounceMode: atBegin !== false
40817  });
40818}
40819
40820
40821//# sourceMappingURL=index.js.map
40822
40823
40824/***/ }),
40825/* 159 */
40826/***/ (function(module, __webpack_exports__, __webpack_require__) {
40827
40828"use strict";
40829/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator__ = __webpack_require__(160);
40830/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator__);
40831/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dompurify__ = __webpack_require__(163);
40832/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_dompurify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_dompurify__);
40833
40834
40835var _this = this;
40836
40837function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
40838
40839
40840
40841var ScheduledBanner = function ScheduledBanner() {
40842    var holders = document.querySelectorAll('[data-scheduled-banner]');
40843    holders.forEach(function () {
40844        var _ref = _asyncToGenerator( /*#__PURE__*/__WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default.a.mark(function _callee(holder) {
40845            var url, response, html, sanitizedHTML;
40846            return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_regenerator___default.a.wrap(function _callee$(_context) {
40847                while (1) {
40848                    switch (_context.prev = _context.next) {
40849                        case 0:
40850                            url = holder.dataset.scheduledBanner;
40851
40852                            if (!url) {
40853                                _context.next = 12;
40854                                break;
40855                            }
40856
40857                            _context.next = 4;
40858                            return fetch(url, {
40859                                headers: {
40860                                    'x-requested-with': 'XMLHttpRequest'
40861                                }
40862                            });
40863
40864                        case 4:
40865                            response = _context.sent;
40866
40867                            if (response.ok) {
40868                                _context.next = 7;
40869                                break;
40870                            }
40871
40872                            return _context.abrupt('return');
40873
40874                        case 7:
40875                            _context.next = 9;
40876                            return response.text();
40877
40878                        case 9:
40879                            html = _context.sent;
40880                            sanitizedHTML = __WEBPACK_IMPORTED_MODULE_1_dompurify___default.a.sanitize(html);
40881
40882
40883                            if (sanitizedHTML.length > 0) {
40884                                holder.innerHTML = sanitizedHTML;
40885                                holder.style.maxHeight = holder.scrollHeight + 'px';
40886                            }
40887
40888                        case 12:
40889                        case 'end':
40890                            return _context.stop();
40891                    }
40892                }
40893            }, _callee, _this);
40894        }));
40895
40896        return function (_x) {
40897            return _ref.apply(this, arguments);
40898        };
40899    }());
40900};
40901
40902/* harmony default export */ __webpack_exports__["a"] = (ScheduledBanner);
40903
40904/***/ }),
40905/* 160 */
40906/***/ (function(module, exports, __webpack_require__) {
40907
40908module.exports = __webpack_require__(161);
40909
40910
40911/***/ }),
40912/* 161 */
40913/***/ (function(module, exports, __webpack_require__) {
40914
40915/**
40916 * Copyright (c) 2014-present, Facebook, Inc.
40917 *
40918 * This source code is licensed under the MIT license found in the
40919 * LICENSE file in the root directory of this source tree.
40920 */
40921
40922// This method of obtaining a reference to the global object needs to be
40923// kept identical to the way it is obtained in runtime.js
40924var g = (function() { return this })() || Function("return this")();
40925
40926// Use `getOwnPropertyNames` because not all browsers support calling
40927// `hasOwnProperty` on the global `self` object in a worker. See #183.
40928var hadRuntime = g.regeneratorRuntime &&
40929  Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
40930
40931// Save the old regeneratorRuntime in case it needs to be restored later.
40932var oldRuntime = hadRuntime && g.regeneratorRuntime;
40933
40934// Force reevalutation of runtime.js.
40935g.regeneratorRuntime = undefined;
40936
40937module.exports = __webpack_require__(162);
40938
40939if (hadRuntime) {
40940  // Restore the original runtime.
40941  g.regeneratorRuntime = oldRuntime;
40942} else {
40943  // Remove the global property added by runtime.js.
40944  try {
40945    delete g.regeneratorRuntime;
40946  } catch(e) {
40947    g.regeneratorRuntime = undefined;
40948  }
40949}
40950
40951
40952/***/ }),
40953/* 162
vendor: 24,180 bytes, lines 40953-41686
40953 */
40954/***/ (function(module, exports) {
40955
40956/**
40957 * Copyright (c) 2014-present, Facebook, Inc.
40958 *
40959 * This source code is licensed under the MIT license found in the
40960 * LICENSE file in the root directory of this source tree.
40961 */
40962
40963!(function(global) {
40964  "use strict";
40965
40966  var Op = Object.prototype;
40967  var hasOwn = Op.hasOwnProperty;
40968  var undefined; // More compressible than void 0.
40969  var $Symbol = typeof Symbol === "function" ? Symbol : {};
40970  var iteratorSymbol = $Symbol.iterator || "@@iterator";
40971  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
40972  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
40973
40974  var inModule = typeof module === "object";
40975  var runtime = global.regeneratorRuntime;
40976  if (runtime) {
40977    if (inModule) {
40978      // If regeneratorRuntime is defined globally and we're in a module,
40979      // make the exports object identical to regeneratorRuntime.
40980      module.exports = runtime;
40981    }
40982    // Don't bother evaluating the rest of this file if the runtime was
40983    // already defined globally.
40984    return;
40985  }
40986
40987  // Define the runtime globally (as expected by generated code) as either
40988  // module.exports (if we're in a module) or a new, empty object.
40989  runtime = global.regeneratorRuntime = inModule ? module.exports : {};
40990
40991  function wrap(innerFn, outerFn, self, tryLocsList) {
40992    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
40993    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
40994    var generator = Object.create(protoGenerator.prototype);
40995    var context = new Context(tryLocsList || []);
40996
40997    // The ._invoke method unifies the implementations of the .next,
40998    // .throw, and .return methods.
40999    generator._invoke = makeInvokeMethod(innerFn, self, context);
41000
41001    return generator;
41002  }
41003  runtime.wrap = wrap;
41004
41005  // Try/catch helper to minimize deoptimizations. Returns a completion
41006  // record like context.tryEntries[i].completion. This interface could
41007  // have been (and was previously) designed to take a closure to be
41008  // invoked without arguments, but in all the cases we care about we
41009  // already have an existing method we want to call, so there's no need
41010  // to create a new function object. We can even get away with assuming
41011  // the method takes exactly one argument, since that happens to be true
41012  // in every case, so we don't have to touch the arguments object. The
41013  // only additional allocation required is the completion record, which
41014  // has a stable shape and so hopefully should be cheap to allocate.
41015  function tryCatch(fn, obj, arg) {
41016    try {
41017      return { type: "normal", arg: fn.call(obj, arg) };
41018    } catch (err) {
41019      return { type: "throw", arg: err };
41020    }
41021  }
41022
41023  var GenStateSuspendedStart = "suspendedStart";
41024  var GenStateSuspendedYield = "suspendedYield";
41025  var GenStateExecuting = "executing";
41026  var GenStateCompleted = "completed";
41027
41028  // Returning this object from the innerFn has the same effect as
41029  // breaking out of the dispatch switch statement.
41030  var ContinueSentinel = {};
41031
41032  // Dummy constructor functions that we use as the .constructor and
41033  // .constructor.prototype properties for functions that return Generator
41034  // objects. For full spec compliance, you may wish to configure your
41035  // minifier not to mangle the names of these two functions.
41036  function Generator() {}
41037  function GeneratorFunction() {}
41038  function GeneratorFunctionPrototype() {}
41039
41040  // This is a polyfill for %IteratorPrototype% for environments that
41041  // don't natively support it.
41042  var IteratorPrototype = {};
41043  IteratorPrototype[iteratorSymbol] = function () {
41044    return this;
41045  };
41046
41047  var getProto = Object.getPrototypeOf;
41048  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
41049  if (NativeIteratorPrototype &&
41050      NativeIteratorPrototype !== Op &&
41051      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
41052    // This environment has a native %IteratorPrototype%; use it instead
41053    // of the polyfill.
41054    IteratorPrototype = NativeIteratorPrototype;
41055  }
41056
41057  var Gp = GeneratorFunctionPrototype.prototype =
41058    Generator.prototype = Object.create(IteratorPrototype);
41059  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
41060  GeneratorFunctionPrototype.constructor = GeneratorFunction;
41061  GeneratorFunctionPrototype[toStringTagSymbol] =
41062    GeneratorFunction.displayName = "GeneratorFunction";
41063
41064  // Helper for defining the .next, .throw, and .return methods of the
41065  // Iterator interface in terms of a single ._invoke method.
41066  function defineIteratorMethods(prototype) {
41067    ["next", "throw", "return"].forEach(function(method) {
41068      prototype[method] = function(arg) {
41069        return this._invoke(method, arg);
41070      };
41071    });
41072  }
41073
41074  runtime.isGeneratorFunction = function(genFun) {
41075    var ctor = typeof genFun === "function" && genFun.constructor;
41076    return ctor
41077      ? ctor === GeneratorFunction ||
41078        // For the native GeneratorFunction constructor, the best we can
41079        // do is to check its .name property.
41080        (ctor.displayName || ctor.name) === "GeneratorFunction"
41081      : false;
41082  };
41083
41084  runtime.mark = function(genFun) {
41085    if (Object.setPrototypeOf) {
41086      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
41087    } else {
41088      genFun.__proto__ = GeneratorFunctionPrototype;
41089      if (!(toStringTagSymbol in genFun)) {
41090        genFun[toStringTagSymbol] = "GeneratorFunction";
41091      }
41092    }
41093    genFun.prototype = Object.create(Gp);
41094    return genFun;
41095  };
41096
41097  // Within the body of any async function, `await x` is transformed to
41098  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
41099  // `hasOwn.call(value, "__await")` to determine if the yielded value is
41100  // meant to be awaited.
41101  runtime.awrap = function(arg) {
41102    return { __await: arg };
41103  };
41104
41105  function AsyncIterator(generator) {
41106    function invoke(method, arg, resolve, reject) {
41107      var record = tryCatch(generator[method], generator, arg);
41108      if (record.type === "throw") {
41109        reject(record.arg);
41110      } else {
41111        var result = record.arg;
41112        var value = result.value;
41113        if (value &&
41114            typeof value === "object" &&
41115            hasOwn.call(value, "__await")) {
41116          return Promise.resolve(value.__await).then(function(value) {
41117            invoke("next", value, resolve, reject);
41118          }, function(err) {
41119            invoke("throw", err, resolve, reject);
41120          });
41121        }
41122
41123        return Promise.resolve(value).then(function(unwrapped) {
41124          // When a yielded Promise is resolved, its final value becomes
41125          // the .value of the Promise<{value,done}> result for the
41126          // current iteration. If the Promise is rejected, however, the
41127          // result for this iteration will be rejected with the same
41128          // reason. Note that rejections of yielded Promises are not
41129          // thrown back into the generator function, as is the case
41130          // when an awaited Promise is rejected. This difference in
41131          // behavior between yield and await is important, because it
41132          // allows the consumer to decide what to do with the yielded
41133          // rejection (swallow it and continue, manually .throw it back
41134          // into the generator, abandon iteration, whatever). With
41135          // await, by contrast, there is no opportunity to examine the
41136          // rejection reason outside the generator function, so the
41137          // only option is to throw it from the await expression, and
41138          // let the generator function handle the exception.
41139          result.value = unwrapped;
41140          resolve(result);
41141        }, reject);
41142      }
41143    }
41144
41145    var previousPromise;
41146
41147    function enqueue(method, arg) {
41148      function callInvokeWithMethodAndArg() {
41149        return new Promise(function(resolve, reject) {
41150          invoke(method, arg, resolve, reject);
41151        });
41152      }
41153
41154      return previousPromise =
41155        // If enqueue has been called before, then we want to wait until
41156        // all previous Promises have been resolved before calling invoke,
41157        // so that results are always delivered in the correct order. If
41158        // enqueue has not been called before, then it is important to
41159        // call invoke immediately, without waiting on a callback to fire,
41160        // so that the async generator function has the opportunity to do
41161        // any necessary setup in a predictable way. This predictability
41162        // is why the Promise constructor synchronously invokes its
41163        // executor callback, and why async functions synchronously
41164        // execute code before the first await. Since we implement simple
41165        // async functions in terms of async generators, it is especially
41166        // important to get this right, even though it requires care.
41167        previousPromise ? previousPromise.then(
41168          callInvokeWithMethodAndArg,
41169          // Avoid propagating failures to Promises returned by later
41170          // invocations of the iterator.
41171          callInvokeWithMethodAndArg
41172        ) : callInvokeWithMethodAndArg();
41173    }
41174
41175    // Define the unified helper method that is used to implement .next,
41176    // .throw, and .return (see defineIteratorMethods).
41177    this._invoke = enqueue;
41178  }
41179
41180  defineIteratorMethods(AsyncIterator.prototype);
41181  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
41182    return this;
41183  };
41184  runtime.AsyncIterator = AsyncIterator;
41185
41186  // Note that simple async functions are implemented on top of
41187  // AsyncIterator objects; they just return a Promise for the value of
41188  // the final result produced by the iterator.
41189  runtime.async = function(innerFn, outerFn, self, tryLocsList) {
41190    var iter = new AsyncIterator(
41191      wrap(innerFn, outerFn, self, tryLocsList)
41192    );
41193
41194    return runtime.isGeneratorFunction(outerFn)
41195      ? iter // If outerFn is a generator, return the full iterator.
41196      : iter.next().then(function(result) {
41197          return result.done ? result.value : iter.next();
41198        });
41199  };
41200
41201  function makeInvokeMethod(innerFn, self, context) {
41202    var state = GenStateSuspendedStart;
41203
41204    return function invoke(method, arg) {
41205      if (state === GenStateExecuting) {
41206        throw new Error("Generator is already running");
41207      }
41208
41209      if (state === GenStateCompleted) {
41210        if (method === "throw") {
41211          throw arg;
41212        }
41213
41214        // Be forgiving, per 25.3.3.3.3 of the spec:
41215        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
41216        return doneResult();
41217      }
41218
41219      context.method = method;
41220      context.arg = arg;
41221
41222      while (true) {
41223        var delegate = context.delegate;
41224        if (delegate) {
41225          var delegateResult = maybeInvokeDelegate(delegate, context);
41226          if (delegateResult) {
41227            if (delegateResult === ContinueSentinel) continue;
41228            return delegateResult;
41229          }
41230        }
41231
41232        if (context.method === "next") {
41233          // Setting context._sent for legacy support of Babel's
41234          // function.sent implementation.
41235          context.sent = context._sent = context.arg;
41236
41237        } else if (context.method === "throw") {
41238          if (state === GenStateSuspendedStart) {
41239            state = GenStateCompleted;
41240            throw context.arg;
41241          }
41242
41243          context.dispatchException(context.arg);
41244
41245        } else if (context.method === "return") {
41246          context.abrupt("return", context.arg);
41247        }
41248
41249        state = GenStateExecuting;
41250
41251        var record = tryCatch(innerFn, self, context);
41252        if (record.type === "normal") {
41253          // If an exception is thrown from innerFn, we leave state ===
41254          // GenStateExecuting and loop back for another invocation.
41255          state = context.done
41256            ? GenStateCompleted
41257            : GenStateSuspendedYield;
41258
41259          if (record.arg === ContinueSentinel) {
41260            continue;
41261          }
41262
41263          return {
41264            value: record.arg,
41265            done: context.done
41266          };
41267
41268        } else if (record.type === "throw") {
41269          state = GenStateCompleted;
41270          // Dispatch the exception by looping back around to the
41271          // context.dispatchException(context.arg) call above.
41272          context.method = "throw";
41273          context.arg = record.arg;
41274        }
41275      }
41276    };
41277  }
41278
41279  // Call delegate.iterator[context.method](context.arg) and handle the
41280  // result, either by returning a { value, done } result from the
41281  // delegate iterator, or by modifying context.method and context.arg,
41282  // setting context.delegate to null, and returning the ContinueSentinel.
41283  function maybeInvokeDelegate(delegate, context) {
41284    var method = delegate.iterator[context.method];
41285    if (method === undefined) {
41286      // A .throw or .return when the delegate iterator has no .throw
41287      // method always terminates the yield* loop.
41288      context.delegate = null;
41289
41290      if (context.method === "throw") {
41291        if (delegate.iterator.return) {
41292          // If the delegate iterator has a return method, give it a
41293          // chance to clean up.
41294          context.method = "return";
41295          context.arg = undefined;
41296          maybeInvokeDelegate(delegate, context);
41297
41298          if (context.method === "throw") {
41299            // If maybeInvokeDelegate(context) changed context.method from
41300            // "return" to "throw", let that override the TypeError below.
41301            return ContinueSentinel;
41302          }
41303        }
41304
41305        context.method = "throw";
41306        context.arg = new TypeError(
41307          "The iterator does not provide a 'throw' method");
41308      }
41309
41310      return ContinueSentinel;
41311    }
41312
41313    var record = tryCatch(method, delegate.iterator, context.arg);
41314
41315    if (record.type === "throw") {
41316      context.method = "throw";
41317      context.arg = record.arg;
41318      context.delegate = null;
41319      return ContinueSentinel;
41320    }
41321
41322    var info = record.arg;
41323
41324    if (! info) {
41325      context.method = "throw";
41326      context.arg = new TypeError("iterator result is not an object");
41327      context.delegate = null;
41328      return ContinueSentinel;
41329    }
41330
41331    if (info.done) {
41332      // Assign the result of the finished delegate to the temporary
41333      // variable specified by delegate.resultName (see delegateYield).
41334      context[delegate.resultName] = info.value;
41335
41336      // Resume execution at the desired location (see delegateYield).
41337      context.next = delegate.nextLoc;
41338
41339      // If context.method was "throw" but the delegate handled the
41340      // exception, let the outer generator proceed normally. If
41341      // context.method was "next", forget context.arg since it has been
41342      // "consumed" by the delegate iterator. If context.method was
41343      // "return", allow the original .return call to continue in the
41344      // outer generator.
41345      if (context.method !== "return") {
41346        context.method = "next";
41347        context.arg = undefined;
41348      }
41349
41350    } else {
41351      // Re-yield the result returned by the delegate method.
41352      return info;
41353    }
41354
41355    // The delegate iterator is finished, so forget it and continue with
41356    // the outer generator.
41357    context.delegate = null;
41358    return ContinueSentinel;
41359  }
41360
41361  // Define Generator.prototype.{next,throw,return} in terms of the
41362  // unified ._invoke helper method.
41363  defineIteratorMethods(Gp);
41364
41365  Gp[toStringTagSymbol] = "Generator";
41366
41367  // A Generator should always return itself as the iterator object when the
41368  // @@iterator function is called on it. Some browsers' implementations of the
41369  // iterator prototype chain incorrectly implement this, causing the Generator
41370  // object to not be returned from this call. This ensures that doesn't happen.
41371  // See https://github.com/facebook/regenerator/issues/274 for more details.
41372  Gp[iteratorSymbol] = function() {
41373    return this;
41374  };
41375
41376  Gp.toString = function() {
41377    return "[object Generator]";
41378  };
41379
41380  function pushTryEntry(locs) {
41381    var entry = { tryLoc: locs[0] };
41382
41383    if (1 in locs) {
41384      entry.catchLoc = locs[1];
41385    }
41386
41387    if (2 in locs) {
41388      entry.finallyLoc = locs[2];
41389      entry.afterLoc = locs[3];
41390    }
41391
41392    this.tryEntries.push(entry);
41393  }
41394
41395  function resetTryEntry(entry) {
41396    var record = entry.completion || {};
41397    record.type = "normal";
41398    delete record.arg;
41399    entry.completion = record;
41400  }
41401
41402  function Context(tryLocsList) {
41403    // The root entry object (effectively a try statement without a catch
41404    // or a finally block) gives us a place to store values thrown from
41405    // locations where there is no enclosing try statement.
41406    this.tryEntries = [{ tryLoc: "root" }];
41407    tryLocsList.forEach(pushTryEntry, this);
41408    this.reset(true);
41409  }
41410
41411  runtime.keys = function(object) {
41412    var keys = [];
41413    for (var key in object) {
41414      keys.push(key);
41415    }
41416    keys.reverse();
41417
41418    // Rather than returning an object with a next method, we keep
41419    // things simple and return the next function itself.
41420    return function next() {
41421      while (keys.length) {
41422        var key = keys.pop();
41423        if (key in object) {
41424          next.value = key;
41425          next.done = false;
41426          return next;
41427        }
41428      }
41429
41430      // To avoid creating an additional object, we just hang the .value
41431      // and .done properties off the next function object itself. This
41432      // also ensures that the minifier will not anonymize the function.
41433      next.done = true;
41434      return next;
41435    };
41436  };
41437
41438  function values(iterable) {
41439    if (iterable) {
41440      var iteratorMethod = iterable[iteratorSymbol];
41441      if (iteratorMethod) {
41442        return iteratorMethod.call(iterable);
41443      }
41444
41445      if (typeof iterable.next === "function") {
41446        return iterable;
41447      }
41448
41449      if (!isNaN(iterable.length)) {
41450        var i = -1, next = function next() {
41451          while (++i < iterable.length) {
41452            if (hasOwn.call(iterable, i)) {
41453              next.value = iterable[i];
41454              next.done = false;
41455              return next;
41456            }
41457          }
41458
41459          next.value = undefined;
41460          next.done = true;
41461
41462          return next;
41463        };
41464
41465        return next.next = next;
41466      }
41467    }
41468
41469    // Return an iterator with no values.
41470    return { next: doneResult };
41471  }
41472  runtime.values = values;
41473
41474  function doneResult() {
41475    return { value: undefined, done: true };
41476  }
41477
41478  Context.prototype = {
41479    constructor: Context,
41480
41481    reset: function(skipTempReset) {
41482      this.prev = 0;
41483      this.next = 0;
41484      // Resetting context._sent for legacy support of Babel's
41485      // function.sent implementation.
41486      this.sent = this._sent = undefined;
41487      this.done = false;
41488      this.delegate = null;
41489
41490      this.method = "next";
41491      this.arg = undefined;
41492
41493      this.tryEntries.forEach(resetTryEntry);
41494
41495      if (!skipTempReset) {
41496        for (var name in this) {
41497          // Not sure about the optimal order of these conditions:
41498          if (name.charAt(0) === "t" &&
41499              hasOwn.call(this, name) &&
41500              !isNaN(+name.slice(1))) {
41501            this[name] = undefined;
41502          }
41503        }
41504      }
41505    },
41506
41507    stop: function() {
41508      this.done = true;
41509
41510      var rootEntry = this.tryEntries[0];
41511      var rootRecord = rootEntry.completion;
41512      if (rootRecord.type === "throw") {
41513        throw rootRecord.arg;
41514      }
41515
41516      return this.rval;
41517    },
41518
41519    dispatchException: function(exception) {
41520      if (this.done) {
41521        throw exception;
41522      }
41523
41524      var context = this;
41525      function handle(loc, caught) {
41526        record.type = "throw";
41527        record.arg = exception;
41528        context.next = loc;
41529
41530        if (caught) {
41531          // If the dispatched exception was caught by a catch block,
41532          // then let that catch block handle the exception normally.
41533          context.method = "next";
41534          context.arg = undefined;
41535        }
41536
41537        return !! caught;
41538      }
41539
41540      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41541        var entry = this.tryEntries[i];
41542        var record = entry.completion;
41543
41544        if (entry.tryLoc === "root") {
41545          // Exception thrown outside of any try block that could handle
41546          // it, so set the completion value of the entire function to
41547          // throw the exception.
41548          return handle("end");
41549        }
41550
41551        if (entry.tryLoc <= this.prev) {
41552          var hasCatch = hasOwn.call(entry, "catchLoc");
41553          var hasFinally = hasOwn.call(entry, "finallyLoc");
41554
41555          if (hasCatch && hasFinally) {
41556            if (this.prev < entry.catchLoc) {
41557              return handle(entry.catchLoc, true);
41558            } else if (this.prev < entry.finallyLoc) {
41559              return handle(entry.finallyLoc);
41560            }
41561
41562          } else if (hasCatch) {
41563            if (this.prev < entry.catchLoc) {
41564              return handle(entry.catchLoc, true);
41565            }
41566
41567          } else if (hasFinally) {
41568            if (this.prev < entry.finallyLoc) {
41569              return handle(entry.finallyLoc);
41570            }
41571
41572          } else {
41573            throw new Error("try statement without catch or finally");
41574          }
41575        }
41576      }
41577    },
41578
41579    abrupt: function(type, arg) {
41580      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41581        var entry = this.tryEntries[i];
41582        if (entry.tryLoc <= this.prev &&
41583            hasOwn.call(entry, "finallyLoc") &&
41584            this.prev < entry.finallyLoc) {
41585          var finallyEntry = entry;
41586          break;
41587        }
41588      }
41589
41590      if (finallyEntry &&
41591          (type === "break" ||
41592           type === "continue") &&
41593          finallyEntry.tryLoc <= arg &&
41594          arg <= finallyEntry.finallyLoc) {
41595        // Ignore the finally entry if control is not jumping to a
41596        // location outside the try/catch block.
41597        finallyEntry = null;
41598      }
41599
41600      var record = finallyEntry ? finallyEntry.completion : {};
41601      record.type = type;
41602      record.arg = arg;
41603
41604      if (finallyEntry) {
41605        this.method = "next";
41606        this.next = finallyEntry.finallyLoc;
41607        return ContinueSentinel;
41608      }
41609
41610      return this.complete(record);
41611    },
41612
41613    complete: function(record, afterLoc) {
41614      if (record.type === "throw") {
41615        throw record.arg;
41616      }
41617
41618      if (record.type === "break" ||
41619          record.type === "continue") {
41620        this.next = record.arg;
41621      } else if (record.type === "return") {
41622        this.rval = this.arg = record.arg;
41623        this.method = "return";
41624        this.next = "end";
41625      } else if (record.type === "normal" && afterLoc) {
41626        this.next = afterLoc;
41627      }
41628
41629      return ContinueSentinel;
41630    },
41631
41632    finish: function(finallyLoc) {
41633      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41634        var entry = this.tryEntries[i];
41635        if (entry.finallyLoc === finallyLoc) {
41636          this.complete(entry.completion, entry.afterLoc);
41637          resetTryEntry(entry);
41638          return ContinueSentinel;
41639        }
41640      }
41641    },
41642
41643    "catch": function(tryLoc) {
41644      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
41645        var entry = this.tryEntries[i];
41646        if (entry.tryLoc === tryLoc) {
41647          var record = entry.completion;
41648          if (record.type === "throw") {
41649            var thrown = record.arg;
41650            resetTryEntry(entry);
41651          }
41652          return thrown;
41653        }
41654      }
41655
41656      // The context.catch method must only be called with a location
41657      // argument that corresponds to a known catch block.
41658      throw new Error("illegal catch attempt");
41659    },
41660
41661    delegateYield: function(iterable, resultName, nextLoc) {
41662      this.delegate = {
41663        iterator: values(iterable),
41664        resultName: resultName,
41665        nextLoc: nextLoc
41666      };
41667
41668      if (this.method === "next") {
41669        // Deliberately forget the last sent value so that we don't
41670        // accidentally pass it on to the delegate.
41671        this.arg = undefined;
41672      }
41673
41674      return ContinueSentinel;
41675    }
41676  };
41677})(
41678  // In sloppy mode, unbound `this` refers to the global object, fallback to
41679  // Function constructor if we're in global strict mode. That is sadly a form
41680  // of indirect eval which violates Content Security Policy.
41681  (function() { return this })() || Function("return this")()
41682);
41683
41684
41685/***/ }),
41686/* 1
vendor: 3,475 bytes, lines 41686-41778
4168663 */
41687/***/ (function(module, exports, __webpack_require__) {
41688
41689/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */
41690
41691(function (global, factory) {
41692   true ? module.exports = factory() :
41693  typeof define === 'function' && define.amd ? define(factory) :
41694  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());
41695})(this, (function () { 'use strict';
41696
41697  const {
41698    entries,
41699    setPrototypeOf,
41700    isFrozen,
41701    getPrototypeOf,
41702    getOwnPropertyDescriptor
41703  } = Object;
41704  let {
41705    freeze,
41706    seal,
41707    create
41708  } = Object; // eslint-disable-line import/no-mutable-exports
41709  let {
41710    apply,
41711    construct
41712  } = typeof Reflect !== 'undefined' && Reflect;
41713  if (!freeze) {
41714    freeze = function freeze(x) {
41715      return x;
41716    };
41717  }
41718  if (!seal) {
41719    seal = function seal(x) {
41720      return x;
41721    };
41722  }
41723  if (!apply) {
41724    apply = function apply(func, thisArg) {
41725      for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
41726        args[_key - 2] = arguments[_key];
41727      }
41728      return func.apply(thisArg, args);
41729    };
41730  }
41731  if (!construct) {
41732    construct = function construct(Func) {
41733      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
41734        args[_key2 - 1] = arguments[_key2];
41735      }
41736      return new Func(...args);
41737    };
41738  }
41739  const arrayForEach = unapply(Array.prototype.forEach);
41740  const arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
41741  const arrayPop = unapply(Array.prototype.pop);
41742  const arrayPush = unapply(Array.prototype.push);
41743  const arraySplice = unapply(Array.prototype.splice);
41744  const stringToLowerCase = unapply(String.prototype.toLowerCase);
41745  const stringToString = unapply(String.prototype.toString);
41746  const stringMatch = unapply(String.prototype.match);
41747  const stringReplace = unapply(String.prototype.replace);
41748  const stringIndexOf = unapply(String.prototype.indexOf);
41749  const stringTrim = unapply(String.prototype.trim);
41750  const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
41751  const regExpTest = unapply(RegExp.prototype.test);
41752  const typeErrorCreate = unconstruct(TypeError);
41753  /**
41754   * Creates a new function that calls the given function with a specified thisArg and arguments.
41755   *
41756   * @param func - The function to be wrapped and called.
41757   * @returns A new function that calls the given function with a specified thisArg and arguments.
41758   */
41759  function unapply(func) {
41760    return function (thisArg) {
41761      if (thisArg instanceof RegExp) {
41762        thisArg.lastIndex = 0;
41763      }
41764      for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
41765        args[_key3 - 1] = arguments[_key3];
41766      }
41767      return apply(func, thisArg, args);
41768    };
41769  }
41770  /**
41771   * Creates a new function that constructs an instance of the given constructor function with the provided arguments.
41772   *
41773   * @param func - The constructor function to be wrapped and called.
41774   * @returns A new function that constructs an instance of the given constructor function with the provided arguments.
41775   */
41776  function unconstruct(Func) {
41777    return function () {
41778      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
vendor: 6,361 bytes, lines 41779-41891
41779        args[_key4] = arguments[_key4];
41780      }
41781      return construct(Func, args);
41782    };
41783  }
41784  /**
41785   * Add properties to a lookup table
41786   *
41787   * @param set - The set to which elements will be added.
41788   * @param array - The array containing elements to be added to the set.
41789   * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.
41790   * @returns The modified set with added elements.
41791   */
41792  function addToSet(set, array) {
41793    let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;
41794    if (setPrototypeOf) {
41795      // Make 'in' and truthy checks like Boolean(set.constructor)
41796      // independent of any properties defined on Object.prototype.
41797      // Prevent prototype setters from intercepting set as a this value.
41798      setPrototypeOf(set, null);
41799    }
41800    let l = array.length;
41801    while (l--) {
41802      let element = array[l];
41803      if (typeof element === 'string') {
41804        const lcElement = transformCaseFunc(element);
41805        if (lcElement !== element) {
41806          // Config presets (e.g. tags.js, attrs.js) are immutable.
41807          if (!isFrozen(array)) {
41808            array[l] = lcElement;
41809          }
41810          element = lcElement;
41811        }
41812      }
41813      set[element] = true;
41814    }
41815    return set;
41816  }
41817  /**
41818   * Clean up an array to harden against CSPP
41819   *
41820   * @param array - The array to be cleaned.
41821   * @returns The cleaned version of the array
41822   */
41823  function cleanArray(array) {
41824    for (let index = 0; index < array.length; index++) {
41825      const isPropertyExist = objectHasOwnProperty(array, index);
41826      if (!isPropertyExist) {
41827        array[index] = null;
41828      }
41829    }
41830    return array;
41831  }
41832  /**
41833   * Shallow clone an object
41834   *
41835   * @param object - The object to be cloned.
41836   * @returns A new object that copies the original.
41837   */
41838  function clone(object) {
41839    const newObject = create(null);
41840    for (const [property, value] of entries(object)) {
41841      const isPropertyExist = objectHasOwnProperty(object, property);
41842      if (isPropertyExist) {
41843        if (Array.isArray(value)) {
41844          newObject[property] = cleanArray(value);
41845        } else if (value && typeof value === 'object' && value.constructor === Object) {
41846          newObject[property] = clone(value);
41847        } else {
41848          newObject[property] = value;
41849        }
41850      }
41851    }
41852    return newObject;
41853  }
41854  /**
41855   * This method automatically checks if the prop is function or getter and behaves accordingly.
41856   *
41857   * @param object - The object to look up the getter function in its prototype chain.
41858   * @param prop - The property name for which to find the getter function.
41859   * @returns The getter function found in the prototype chain or a fallback function.
41860   */
41861  function lookupGetter(object, prop) {
41862    while (object !== null) {
41863      const desc = getOwnPropertyDescriptor(object, prop);
41864      if (desc) {
41865        if (desc.get) {
41866          return unapply(desc.get);
41867        }
41868        if (typeof desc.value === 'function') {
41869          return unapply(desc.value);
41870        }
41871      }
41872      object = getPrototypeOf(object);
41873    }
41874    function fallbackValue() {
41875      return null;
41876    }
41877    return fallbackValue;
41878  }
41879
41880  const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
41881  const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
41882  const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
41883  // List of SVG elements that are disallowed by default.
41884  // We still need to know them so that we can do namespace
41885  // checks properly in case one wants to add them to
41886  // allow-list.
41887  const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);
41888  const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);
41889  // Similarly to SVG, we want to know all MathML elements,
41890  // even those that we disallow by default.
41891  const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'n
41891one']);
41892  const text = freeze(['#text']);
41893
41894  const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);
41895  const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
41896  const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'n
vendor: 4,502 bytes, lines 41896-42002
41896otation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
41897  const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
41898
41899  // eslint-disable-next-line unicorn/better-regex
41900  const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
41901  const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
41902  const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex
41903  const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape
41904  const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
41905  const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
41906  );
41907  const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
41908  const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex
41909  );
41910  const DOCTYPE_NAME = seal(/^html$/i);
41911  const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
41912
41913  var EXPRESSIONS = /*#__PURE__*/Object.freeze({
41914    __proto__: null,
41915    ARIA_ATTR: ARIA_ATTR,
41916    ATTR_WHITESPACE: ATTR_WHITESPACE,
41917    CUSTOM_ELEMENT: CUSTOM_ELEMENT,
41918    DATA_ATTR: DATA_ATTR,
41919    DOCTYPE_NAME: DOCTYPE_NAME,
41920    ERB_EXPR: ERB_EXPR,
41921    IS_ALLOWED_URI: IS_ALLOWED_URI,
41922    IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
41923    MUSTACHE_EXPR: MUSTACHE_EXPR,
41924    TMPLIT_EXPR: TMPLIT_EXPR
41925  });
41926
41927  /* eslint-disable @typescript-eslint/indent */
41928  // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
41929  const NODE_TYPE = {
41930    element: 1,
41931    attribute: 2,
41932    text: 3,
41933    cdataSection: 4,
41934    entityReference: 5,
41935    // Deprecated
41936    entityNode: 6,
41937    // Deprecated
41938    progressingInstruction: 7,
41939    comment: 8,
41940    document: 9,
41941    documentType: 10,
41942    documentFragment: 11,
41943    notation: 12 // Deprecated
41944  };
41945  const getGlobal = function getGlobal() {
41946    return typeof window === 'undefined' ? null : window;
41947  };
41948  /**
41949   * Creates a no-op policy for internal use only.
41950   * Don't export this function outside this module!
41951   * @param trustedTypes The policy factory.
41952   * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).
41953   * @return The policy created (or null, if Trusted Types
41954   * are not supported or creating the policy failed).
41955   */
41956  const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
41957    if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {
41958      return null;
41959    }
41960    // Allow the callers to control the unique policy name
41961    // by adding a data-tt-policy-suffix to the script element with the DOMPurify.
41962    // Policy creation with duplicate names throws in Trusted Types.
41963    let suffix = null;
41964    const ATTR_NAME = 'data-tt-policy-suffix';
41965    if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
41966      suffix = purifyHostElement.getAttribute(ATTR_NAME);
41967    }
41968    const policyName = 'dompurify' + (suffix ? '#' + suffix : '');
41969    try {
41970      return trustedTypes.createPolicy(policyName, {
41971        createHTML(html) {
41972          return html;
41973        },
41974        createScriptURL(scriptUrl) {
41975          return scriptUrl;
41976        }
41977      });
41978    } catch (_) {
41979      // Policy creation failed (most likely another DOMPurify script has
41980      // already run). Skip creating the policy, as this will only cause errors
41981      // if TT are enforced.
41982      console.warn('TrustedTypes policy ' + policyName + ' could not be created.');
41983      return null;
41984    }
41985  };
41986  const _createHooksMap = function _createHooksMap() {
41987    return {
41988      afterSanitizeAttributes: [],
41989      afterSanitizeElements: [],
41990      afterSanitizeShadowDOM: [],
41991      beforeSanitizeAttributes: [],
41992      beforeSanitizeElements: [],
41993      beforeSanitizeShadowDOM: [],
41994      uponSanitizeAttribute: [],
41995      uponSanitizeElement: [],
41996      uponSanitizeShadowNode: []
41997    };
41998  };
41999  function createDOMPurify() {
42000    let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
42001    const DOMPurify = root => createDOMPurify(root);
42002    DOMPurify.version = '3.3.1
vendor: 4,967 bytes, lines 42002-42133
42002';
42003    DOMPurify.removed = [];
42004    if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
42005      // Not running in a browser, provide a factory function
42006      // so that you can pass your own Window
42007      DOMPurify.isSupported = false;
42008      return DOMPurify;
42009    }
42010    let {
42011      document
42012    } = window;
42013    const originalDocument = document;
42014    const currentScript = originalDocument.currentScript;
42015    const {
42016      DocumentFragment,
42017      HTMLTemplateElement,
42018      Node,
42019      Element,
42020      NodeFilter,
42021      NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
42022      HTMLFormElement,
42023      DOMParser,
42024      trustedTypes
42025    } = window;
42026    const ElementPrototype = Element.prototype;
42027    const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
42028    const remove = lookupGetter(ElementPrototype, 'remove');
42029    const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
42030    const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
42031    const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
42032    // As per issue #47, the web-components registry is inherited by a
42033    // new document created via createHTMLDocument. As per the spec
42034    // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
42035    // a new empty registry is used when creating a template contents owner
42036    // document, so we use that as our parent document to ensure nothing
42037    // is inherited.
42038    if (typeof HTMLTemplateElement === 'function') {
42039      const template = document.createElement('template');
42040      if (template.content && template.content.ownerDocument) {
42041        document = template.content.ownerDocument;
42042      }
42043    }
42044    let trustedTypesPolicy;
42045    let emptyHTML = '';
42046    const {
42047      implementation,
42048      createNodeIterator,
42049      createDocumentFragment,
42050      getElementsByTagName
42051    } = document;
42052    const {
42053      importNode
42054    } = originalDocument;
42055    let hooks = _createHooksMap();
42056    /**
42057     * Expose whether this browser supports running the full DOMPurify.
42058     */
42059    DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
42060    const {
42061      MUSTACHE_EXPR,
42062      ERB_EXPR,
42063      TMPLIT_EXPR,
42064      DATA_ATTR,
42065      ARIA_ATTR,
42066      IS_SCRIPT_OR_DATA,
42067      ATTR_WHITESPACE,
42068      CUSTOM_ELEMENT
42069    } = EXPRESSIONS;
42070    let {
42071      IS_ALLOWED_URI: IS_ALLOWED_URI$1
42072    } = EXPRESSIONS;
42073    /**
42074     * We consider the elements and attributes below to be safe. Ideally
42075     * don't add any new ones but feel free to remove unwanted ones.
42076     */
42077    /* allowed element names */
42078    let ALLOWED_TAGS = null;
42079    const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
42080    /* Allowed attribute names */
42081    let ALLOWED_ATTR = null;
42082    const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
42083    /*
42084     * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.
42085     * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)
42086     * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)
42087     * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.
42088     */
42089    let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
42090      tagNameCheck: {
42091        writable: true,
42092        configurable: false,
42093        enumerable: true,
42094        value: null
42095      },
42096      attributeNameCheck: {
42097        writable: true,
42098        configurable: false,
42099        enumerable: true,
42100        value: null
42101      },
42102      allowCustomizedBuiltInElements: {
42103        writable: true,
42104        configurable: false,
42105        enumerable: true,
42106        value: false
42107      }
42108    }));
42109    /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
42110    let FORBID_TAGS = null;
42111    /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
42112    let FORBID_ATTR = null;
42113    /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */
42114    const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {
42115      tagCheck: {
42116        writable: true,
42117        configurable: false,
42118        enumerable: true,
42119        value: null
42120      },
42121      attributeCheck: {
42122        writable: true,
42123        configurable: false,
42124        enumerable: true,
42125        value: null
42126      }
42127    }));
42128    /* Decide if ARIA attributes are okay */
42129    let ALLOW_ARIA_ATTR = true;
42130    /* Decide if custom data attributes are okay */
42131    let ALLOW_DATA_ATTR = true;
42132    /* Decide if unknown protocols are okay */
42133    let ALLOW_UNKNOWN_PROTOCOLS = false;
vendor: 3,079 bytes, lines 42134-42191
42134    /* Decide if self-closing tags in attributes are allowed.
42135     * Usually removed due to a mXSS issue in jQuery 3.0 */
42136    let ALLOW_SELF_CLOSE_IN_ATTR = true;
42137    /* Output should be safe for common template engines.
42138     * This means, DOMPurify removes data attributes, mustaches and ERB
42139     */
42140    let SAFE_FOR_TEMPLATES = false;
42141    /* Output should be safe even for XML used within HTML and alike.
42142     * This means, DOMPurify removes comments when containing risky content.
42143     */
42144    let SAFE_FOR_XML = true;
42145    /* Decide if document with <html>... should be returned */
42146    let WHOLE_DOCUMENT = false;
42147    /* Track whether config is already set on this instance of DOMPurify. */
42148    let SET_CONFIG = false;
42149    /* Decide if all elements (e.g. style, script) must be children of
42150     * document.body. By default, browsers might move them to document.head */
42151    let FORCE_BODY = false;
42152    /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html
42153     * string (or a TrustedHTML object if Trusted Types are supported).
42154     * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead
42155     */
42156    let RETURN_DOM = false;
42157    /* Decide if a DOM `DocumentFragment` should be returned, instead of a html
42158     * string  (or a TrustedHTML object if Trusted Types are supported) */
42159    let RETURN_DOM_FRAGMENT = false;
42160    /* Try to return a Trusted Type object instead of a string, return a string in
42161     * case Trusted Types are not supported  */
42162    let RETURN_TRUSTED_TYPE = false;
42163    /* Output should be free from DOM clobbering attacks?
42164     * This sanitizes markups named with colliding, clobberable built-in DOM APIs.
42165     */
42166    let SANITIZE_DOM = true;
42167    /* Achieve full DOM Clobbering protection by isolating the namespace of named
42168     * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.
42169     *
42170     * HTML/DOM spec rules that enable DOM Clobbering:
42171     *   - Named Access on Window (§7.3.3)
42172     *   - DOM Tree Accessors (§3.1.5)
42173     *   - Form Element Parent-Child Relations (§4.10.3)
42174     *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)
42175     *   - HTMLCollection (§4.2.10.2)
42176     *
42177     * Namespace isolation is implemented by prefixing `id` and `name` attributes
42178     * with a constant string, i.e., `user-content-`
42179     */
42180    let SANITIZE_NAMED_PROPS = false;
42181    const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';
42182    /* Keep element content when removing element? */
42183    let KEEP_CONTENT = true;
42184    /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
42185     * of importing it into a new Document and returning a sanitized copy */
42186    let IN_PLACE = false;
42187    /* Allow usage of profiles like html, svg and mathMl */
42188    let USE_PROFILES = {};
42189    /* Tags to ignore content of when KEEP_CONTENT is true */
42190    let FORBID_CONTENTS = null;
42191    const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'n
vendor: 5,875 bytes, lines 42191-42278
42191oscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);
42192    /* Tags that are safe for data: URIs */
42193    let DATA_URI_TAGS = null;
42194    const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);
42195    /* Attributes safe for values like "javascript:" */
42196    let URI_SAFE_ATTRIBUTES = null;
42197    const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);
42198    const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
42199    const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
42200    const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
42201    /* Document namespace */
42202    let NAMESPACE = HTML_NAMESPACE;
42203    let IS_EMPTY_INPUT = false;
42204    /* Allowed XHTML+XML namespaces */
42205    let ALLOWED_NAMESPACES = null;
42206    const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
42207    let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);
42208    let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);
42209    // Certain elements are allowed in both SVG and HTML
42210    // namespace. We need to specify them explicitly
42211    // so that they don't get erroneously deleted from
42212    // HTML namespace.
42213    const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);
42214    /* Parsing of strict XHTML documents */
42215    let PARSER_MEDIA_TYPE = null;
42216    const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];
42217    const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';
42218    let transformCaseFunc = null;
42219    /* Keep a reference to config to pass to hooks */
42220    let CONFIG = null;
42221    /* Ideally, do not touch anything below this line */
42222    /* ______________________________________________ */
42223    const formElement = document.createElement('form');
42224    const isRegexOrFunction = function isRegexOrFunction(testValue) {
42225      return testValue instanceof RegExp || testValue instanceof Function;
42226    };
42227    /**
42228     * _parseConfig
42229     *
42230     * @param cfg optional config literal
42231     */
42232    // eslint-disable-next-line complexity
42233    const _parseConfig = function _parseConfig() {
42234      let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
42235      if (CONFIG && CONFIG === cfg) {
42236        return;
42237      }
42238      /* Shield configuration object from tampering */
42239      if (!cfg || typeof cfg !== 'object') {
42240        cfg = {};
42241      }
42242      /* Shield configuration object from prototype pollution */
42243      cfg = clone(cfg);
42244      PARSER_MEDIA_TYPE =
42245      // eslint-disable-next-line unicorn/prefer-includes
42246      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
42247      // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
42248      transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;
42249      /* Set configuration parameters */
42250      ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
42251      ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
42252      ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
42253      URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
42254      DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
42255      FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
42256      FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
42257      FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
42258      USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;
42259      ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
42260      ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
42261      ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
42262      ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true
42263      SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false
42264      SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true
42265      WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false
42266      RETURN_DOM = cfg.RETURN_DOM || false; // Default false
42267      RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false
42268      RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false
42269      FORCE_BODY = cfg.FORCE_BODY || false; // Default false
42270      SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true
42271      SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false
42272      KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
42273      IN_PLACE = cfg.IN_PLACE || false; // Default false
42274      IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
42275      NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
42276      MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
42277      HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
42278      CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || 
vendor: 1,621 bytes, lines 42278-42317
42278{};
42279      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
42280        CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
42281      }
42282      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
42283        CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
42284      }
42285      if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {
42286        CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
42287      }
42288      if (SAFE_FOR_TEMPLATES) {
42289        ALLOW_DATA_ATTR = false;
42290      }
42291      if (RETURN_DOM_FRAGMENT) {
42292        RETURN_DOM = true;
42293      }
42294      /* Parse profile info */
42295      if (USE_PROFILES) {
42296        ALLOWED_TAGS = addToSet({}, text);
42297        ALLOWED_ATTR = [];
42298        if (USE_PROFILES.html === true) {
42299          addToSet(ALLOWED_TAGS, html$1);
42300          addToSet(ALLOWED_ATTR, html);
42301        }
42302        if (USE_PROFILES.svg === true) {
42303          addToSet(ALLOWED_TAGS, svg$1);
42304          addToSet(ALLOWED_ATTR, svg);
42305          addToSet(ALLOWED_ATTR, xml);
42306        }
42307        if (USE_PROFILES.svgFilters === true) {
42308          addToSet(ALLOWED_TAGS, svgFilters);
42309          addToSet(ALLOWED_ATTR, svg);
42310          addToSet(ALLOWED_ATTR, xml);
42311        }
42312        if (USE_PROFILES.mathMl === true) {
42313          addToSet(ALLOWED_TAGS, mathMl$1);
42314          addToSet(ALLOWED_ATTR, mathMl);
42315          addToSet(ALLOWED_ATTR, xml);
42316        }
42317      }
vendor: 4,275 bytes, lines 42317-42419
42317
42318      /* Merge configuration parameters */
42319      if (cfg.ADD_TAGS) {
42320        if (typeof cfg.ADD_TAGS === 'function') {
42321          EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
42322        } else {
42323          if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
42324            ALLOWED_TAGS = clone(ALLOWED_TAGS);
42325          }
42326          addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
42327        }
42328      }
42329      if (cfg.ADD_ATTR) {
42330        if (typeof cfg.ADD_ATTR === 'function') {
42331          EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
42332        } else {
42333          if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
42334            ALLOWED_ATTR = clone(ALLOWED_ATTR);
42335          }
42336          addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
42337        }
42338      }
42339      if (cfg.ADD_URI_SAFE_ATTR) {
42340        addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
42341      }
42342      if (cfg.FORBID_CONTENTS) {
42343        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
42344          FORBID_CONTENTS = clone(FORBID_CONTENTS);
42345        }
42346        addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
42347      }
42348      if (cfg.ADD_FORBID_CONTENTS) {
42349        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
42350          FORBID_CONTENTS = clone(FORBID_CONTENTS);
42351        }
42352        addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
42353      }
42354      /* Add #text in case KEEP_CONTENT is set to true */
42355      if (KEEP_CONTENT) {
42356        ALLOWED_TAGS['#text'] = true;
42357      }
42358      /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
42359      if (WHOLE_DOCUMENT) {
42360        addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);
42361      }
42362      /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */
42363      if (ALLOWED_TAGS.table) {
42364        addToSet(ALLOWED_TAGS, ['tbody']);
42365        delete FORBID_TAGS.tbody;
42366      }
42367      if (cfg.TRUSTED_TYPES_POLICY) {
42368        if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {
42369          throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
42370        }
42371        if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {
42372          throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
42373        }
42374        // Overwrite existing TrustedTypes policy.
42375        trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
42376        // Sign local variables required by `sanitize`.
42377        emptyHTML = trustedTypesPolicy.createHTML('');
42378      } else {
42379        // Uninitialized policy, attempt to initialize the internal dompurify policy.
42380        if (trustedTypesPolicy === undefined) {
42381          trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
42382        }
42383        // If creating the internal policy succeeded sign internal variables.
42384        if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {
42385          emptyHTML = trustedTypesPolicy.createHTML('');
42386        }
42387      }
42388      // Prevent further manipulation of configuration.
42389      // Not available in IE8, Safari 5, etc.
42390      if (freeze) {
42391        freeze(cfg);
42392      }
42393      CONFIG = cfg;
42394    };
42395    /* Keep track of all possible SVG and MathML tags
42396     * so that we can perform the namespace checks
42397     * correctly. */
42398    const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
42399    const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
42400    /**
42401     * @param element a DOM element whose namespace is being checked
42402     * @returns Return false if the element has a
42403     *  namespace that a spec-compliant parser would never
42404     *  return. Return true otherwise.
42405     */
42406    const _checkValidNamespace = function _checkValidNamespace(element) {
42407      let parent = getParentNode(element);
42408      // In JSDOM, if we're inside shadow DOM, then parentNode
42409      // can be null. We just simulate parent in this case.
42410      if (!parent || !parent.tagName) {
42411        parent = {
42412          namespaceURI: NAMESPACE,
42413          tagName: 'template'
42414        };
42415      }
42416      const tagName = stringToLowerCase(element.tagName);
42417      const parentTagName = stringToLowerCase(parent.tagName);
42418      if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
42419        return false;
vendor: 9,119 bytes, lines 42420-42640
42420      }
42421      if (element.namespaceURI === SVG_NAMESPACE) {
42422        // The only way to switch from HTML namespace to SVG
42423        // is via <svg>. If it happens via any other tag, then
42424        // it should be killed.
42425        if (parent.namespaceURI === HTML_NAMESPACE) {
42426          return tagName === 'svg';
42427        }
42428        // The only way to switch from MathML to SVG is via`
42429        // svg if parent is either <annotation-xml> or MathML
42430        // text integration points.
42431        if (parent.namespaceURI === MATHML_NAMESPACE) {
42432          return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
42433        }
42434        // We only allow elements that are defined in SVG
42435        // spec. All others are disallowed in SVG namespace.
42436        return Boolean(ALL_SVG_TAGS[tagName]);
42437      }
42438      if (element.namespaceURI === MATHML_NAMESPACE) {
42439        // The only way to switch from HTML namespace to MathML
42440        // is via <math>. If it happens via any other tag, then
42441        // it should be killed.
42442        if (parent.namespaceURI === HTML_NAMESPACE) {
42443          return tagName === 'math';
42444        }
42445        // The only way to switch from SVG to MathML is via
42446        // <math> and HTML integration points
42447        if (parent.namespaceURI === SVG_NAMESPACE) {
42448          return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];
42449        }
42450        // We only allow elements that are defined in MathML
42451        // spec. All others are disallowed in MathML namespace.
42452        return Boolean(ALL_MATHML_TAGS[tagName]);
42453      }
42454      if (element.namespaceURI === HTML_NAMESPACE) {
42455        // The only way to switch from SVG to HTML is via
42456        // HTML integration points, and from MathML to HTML
42457        // is via MathML text integration points
42458        if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
42459          return false;
42460        }
42461        if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
42462          return false;
42463        }
42464        // We disallow tags that are specific for MathML
42465        // or SVG and should never appear in HTML namespace
42466        return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
42467      }
42468      // For XHTML and XML documents that support custom namespaces
42469      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {
42470        return true;
42471      }
42472      // The code should never reach this place (this means
42473      // that the element somehow got namespace that is not
42474      // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).
42475      // Return false just in case.
42476      return false;
42477    };
42478    /**
42479     * _forceRemove
42480     *
42481     * @param node a DOM node
42482     */
42483    const _forceRemove = function _forceRemove(node) {
42484      arrayPush(DOMPurify.removed, {
42485        element: node
42486      });
42487      try {
42488        // eslint-disable-next-line unicorn/prefer-dom-node-remove
42489        getParentNode(node).removeChild(node);
42490      } catch (_) {
42491        remove(node);
42492      }
42493    };
42494    /**
42495     * _removeAttribute
42496     *
42497     * @param name an Attribute name
42498     * @param element a DOM node
42499     */
42500    const _removeAttribute = function _removeAttribute(name, element) {
42501      try {
42502        arrayPush(DOMPurify.removed, {
42503          attribute: element.getAttributeNode(name),
42504          from: element
42505        });
42506      } catch (_) {
42507        arrayPush(DOMPurify.removed, {
42508          attribute: null,
42509          from: element
42510        });
42511      }
42512      element.removeAttribute(name);
42513      // We void attribute values for unremovable "is" attributes
42514      if (name === 'is') {
42515        if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
42516          try {
42517            _forceRemove(element);
42518          } catch (_) {}
42519        } else {
42520          try {
42521            element.setAttribute(name, '');
42522          } catch (_) {}
42523        }
42524      }
42525    };
42526    /**
42527     * _initDocument
42528     *
42529     * @param dirty - a string of dirty markup
42530     * @return a DOM, filled with the dirty markup
42531     */
42532    const _initDocument = function _initDocument(dirty) {
42533      /* Create a HTML document */
42534      let doc = null;
42535      let leadingWhitespace = null;
42536      if (FORCE_BODY) {
42537        dirty = '<remove></remove>' + dirty;
42538      } else {
42539        /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
42540        const matches = stringMatch(dirty, /^[\r\n\t ]+/);
42541        leadingWhitespace = matches && matches[0];
42542      }
42543      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {
42544        // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
42545        dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>';
42546      }
42547      const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
42548      /*
42549       * Use the DOMParser API by default, fallback later if needs be
42550       * DOMParser not work for svg when has multiple root element.
42551       */
42552      if (NAMESPACE === HTML_NAMESPACE) {
42553        try {
42554          doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
42555        } catch (_) {}
42556      }
42557      /* Use createHTMLDocument in case DOMParser is not available */
42558      if (!doc || !doc.documentElement) {
42559        doc = implementation.createDocument(NAMESPACE, 'template', null);
42560        try {
42561          doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
42562        } catch (_) {
42563          // Syntax error if dirtyPayload is invalid xml
42564        }
42565      }
42566      const body = doc.body || doc.documentElement;
42567      if (dirty && leadingWhitespace) {
42568        body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
42569      }
42570      /* Work on whole document or just its body */
42571      if (NAMESPACE === HTML_NAMESPACE) {
42572        return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];
42573      }
42574      return WHOLE_DOCUMENT ? doc.documentElement : body;
42575    };
42576    /**
42577     * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
42578     *
42579     * @param root The root element or node to start traversing on.
42580     * @return The created NodeIterator
42581     */
42582    const _createNodeIterator = function _createNodeIterator(root) {
42583      return createNodeIterator.call(root.ownerDocument || root, root,
42584      // eslint-disable-next-line no-bitwise
42585      NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
42586    };
42587    /**
42588     * _isClobbered
42589     *
42590     * @param element element to check for clobbering attacks
42591     * @return true if clobbered, false if safe
42592     */
42593    const _isClobbered = function _isClobbered(element) {
42594      return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');
42595    };
42596    /**
42597     * Checks whether the given object is a DOM node.
42598     *
42599     * @param value object to check whether it's a DOM node
42600     * @return true is object is a DOM node
42601     */
42602    const _isNode = function _isNode(value) {
42603      return typeof Node === 'function' && value instanceof Node;
42604    };
42605    function _executeHooks(hooks, currentNode, data) {
42606      arrayForEach(hooks, hook => {
42607        hook.call(DOMPurify, currentNode, data, CONFIG);
42608      });
42609    }
42610    /**
42611     * _sanitizeElements
42612     *
42613     * @protect nodeName
42614     * @protect textContent
42615     * @protect removeChild
42616     * @param currentNode to check for permission to exist
42617     * @return true if node was killed, false if left alive
42618     */
42619    const _sanitizeElements = function _sanitizeElements(currentNode) {
42620      let content = null;
42621      /* Execute a hook if present */
42622      _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
42623      /* Check if element is clobbered or can clobber */
42624      if (_isClobbered(currentNode)) {
42625        _forceRemove(currentNode);
42626        return true;
42627      }
42628      /* Now let's check the element's type and name */
42629      const tagName = transformCaseFunc(currentNode.nodeName);
42630      /* Execute a hook if present */
42631      _executeHooks(hooks.uponSanitizeElement, currentNode, {
42632        tagName,
42633        allowedTags: ALLOWED_TAGS
42634      });
42635      /* Detect mXSS attempts abusing namespace confusion */
42636      if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
42637        _forceRemove(currentNode);
42638        return true;
42639      }
42640      /* Remove 
vendor: 928 bytes, lines 42640-42655
42640any occurrence of processing instructions */
42641      if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
42642        _forceRemove(currentNode);
42643        return true;
42644      }
42645      /* Remove any kind of possibly harmful comments */
42646      if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
42647        _forceRemove(currentNode);
42648        return true;
42649      }
42650      /* Remove element if anything forbids its presence */
42651      if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {
42652        /* Check if we have a custom element to handle */
42653        if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
42654          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
42655            return false;
vendor: 4,849 bytes, lines 42656-42732
42656          }
42657          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
42658            return false;
42659          }
42660        }
42661        /* Keep content except for bad-listed elements */
42662        if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
42663          const parentNode = getParentNode(currentNode) || currentNode.parentNode;
42664          const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
42665          if (childNodes && parentNode) {
42666            const childCount = childNodes.length;
42667            for (let i = childCount - 1; i >= 0; --i) {
42668              const childClone = cloneNode(childNodes[i], true);
42669              childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
42670              parentNode.insertBefore(childClone, getNextSibling(currentNode));
42671            }
42672          }
42673        }
42674        _forceRemove(currentNode);
42675        return true;
42676      }
42677      /* Check whether element has a valid namespace */
42678      if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
42679        _forceRemove(currentNode);
42680        return true;
42681      }
42682      /* Make sure that older browsers don't get fallback-tag mXSS */
42683      if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
42684        _forceRemove(currentNode);
42685        return true;
42686      }
42687      /* Sanitize element content to be template-safe */
42688      if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
42689        /* Get the element's text content */
42690        content = currentNode.textContent;
42691        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
42692          content = stringReplace(content, expr, ' ');
42693        });
42694        if (currentNode.textContent !== content) {
42695          arrayPush(DOMPurify.removed, {
42696            element: currentNode.cloneNode()
42697          });
42698          currentNode.textContent = content;
42699        }
42700      }
42701      /* Execute a hook if present */
42702      _executeHooks(hooks.afterSanitizeElements, currentNode, null);
42703      return false;
42704    };
42705    /**
42706     * _isValidAttribute
42707     *
42708     * @param lcTag Lowercase tag name of containing element.
42709     * @param lcName Lowercase attribute name.
42710     * @param value Attribute value.
42711     * @return Returns true if `value` is valid, otherwise false.
42712     */
42713    // eslint-disable-next-line complexity
42714    const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
42715      /* Make sure attribute cannot clobber */
42716      if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
42717        return false;
42718      }
42719      /* Allow valid data-* attributes: At least one character after "-"
42720          (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
42721          XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
42722          We don't need to check the value; it's always URI safe. */
42723      if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
42724        if (
42725        // First condition does a very basic check if a) it's basically a valid custom element tagname AND
42726        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
42727        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
42728        _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||
42729        // Alternative, second condition checks if it's an `is`-attribute, AND
42730        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
42731        lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {
42732          return false;
vendor: 14,279 bytes, lines 42733-43098
42733        }
42734        /* Check value is safe. First, is attr inert? If so, is safe */
42735      } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
42736        return false;
42737      } else ;
42738      return true;
42739    };
42740    /**
42741     * _isBasicCustomElement
42742     * checks if at least one dash is included in tagName, and it's not the first char
42743     * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name
42744     *
42745     * @param tagName name of the tag of the node to sanitize
42746     * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
42747     */
42748    const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
42749      return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);
42750    };
42751    /**
42752     * _sanitizeAttributes
42753     *
42754     * @protect attributes
42755     * @protect nodeName
42756     * @protect removeAttribute
42757     * @protect setAttribute
42758     *
42759     * @param currentNode to sanitize
42760     */
42761    const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
42762      /* Execute a hook if present */
42763      _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
42764      const {
42765        attributes
42766      } = currentNode;
42767      /* Check if we have attributes; if not we might have a text node */
42768      if (!attributes || _isClobbered(currentNode)) {
42769        return;
42770      }
42771      const hookEvent = {
42772        attrName: '',
42773        attrValue: '',
42774        keepAttr: true,
42775        allowedAttributes: ALLOWED_ATTR,
42776        forceKeepAttr: undefined
42777      };
42778      let l = attributes.length;
42779      /* Go backwards over all attributes; safely remove bad ones */
42780      while (l--) {
42781        const attr = attributes[l];
42782        const {
42783          name,
42784          namespaceURI,
42785          value: attrValue
42786        } = attr;
42787        const lcName = transformCaseFunc(name);
42788        const initValue = attrValue;
42789        let value = name === 'value' ? initValue : stringTrim(initValue);
42790        /* Execute a hook if present */
42791        hookEvent.attrName = lcName;
42792        hookEvent.attrValue = value;
42793        hookEvent.keepAttr = true;
42794        hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set
42795        _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
42796        value = hookEvent.attrValue;
42797        /* Full DOM Clobbering protection via namespace isolation,
42798         * Prefix id and name attributes with `user-content-`
42799         */
42800        if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
42801          // Remove the attribute with this value
42802          _removeAttribute(name, currentNode);
42803          // Prefix the value and later re-create the attribute with the sanitized value
42804          value = SANITIZE_NAMED_PROPS_PREFIX + value;
42805        }
42806        /* Work around a security issue with comments inside attributes */
42807        if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) {
42808          _removeAttribute(name, currentNode);
42809          continue;
42810        }
42811        /* Make sure we cannot easily use animated hrefs, even if animations are allowed */
42812        if (lcName === 'attributename' && stringMatch(value, 'href')) {
42813          _removeAttribute(name, currentNode);
42814          continue;
42815        }
42816        /* Did the hooks approve of the attribute? */
42817        if (hookEvent.forceKeepAttr) {
42818          continue;
42819        }
42820        /* Did the hooks approve of the attribute? */
42821        if (!hookEvent.keepAttr) {
42822          _removeAttribute(name, currentNode);
42823          continue;
42824        }
42825        /* Work around a security issue in jQuery 3.0 */
42826        if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
42827          _removeAttribute(name, currentNode);
42828          continue;
42829        }
42830        /* Sanitize attribute content to be template-safe */
42831        if (SAFE_FOR_TEMPLATES) {
42832          arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
42833            value = stringReplace(value, expr, ' ');
42834          });
42835        }
42836        /* Is `value` valid for this attribute? */
42837        const lcTag = transformCaseFunc(currentNode.nodeName);
42838        if (!_isValidAttribute(lcTag, lcName, value)) {
42839          _removeAttribute(name, currentNode);
42840          continue;
42841        }
42842        /* Handle attributes that require Trusted Types */
42843        if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {
42844          if (namespaceURI) ; else {
42845            switch (trustedTypes.getAttributeType(lcTag, lcName)) {
42846              case 'TrustedHTML':
42847                {
42848                  value = trustedTypesPolicy.createHTML(value);
42849                  break;
42850                }
42851              case 'TrustedScriptURL':
42852                {
42853                  value = trustedTypesPolicy.createScriptURL(value);
42854                  break;
42855                }
42856            }
42857          }
42858        }
42859        /* Handle invalid data-* attribute set by try-catching it */
42860        if (value !== initValue) {
42861          try {
42862            if (namespaceURI) {
42863              currentNode.setAttributeNS(namespaceURI, name, value);
42864            } else {
42865              /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
42866              currentNode.setAttribute(name, value);
42867            }
42868            if (_isClobbered(currentNode)) {
42869              _forceRemove(currentNode);
42870            } else {
42871              arrayPop(DOMPurify.removed);
42872            }
42873          } catch (_) {
42874            _removeAttribute(name, currentNode);
42875          }
42876        }
42877      }
42878      /* Execute a hook if present */
42879      _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
42880    };
42881    /**
42882     * _sanitizeShadowDOM
42883     *
42884     * @param fragment to iterate over recursively
42885     */
42886    const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
42887      let shadowNode = null;
42888      const shadowIterator = _createNodeIterator(fragment);
42889      /* Execute a hook if present */
42890      _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
42891      while (shadowNode = shadowIterator.nextNode()) {
42892        /* Execute a hook if present */
42893        _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
42894        /* Sanitize tags and elements */
42895        _sanitizeElements(shadowNode);
42896        /* Check attributes next */
42897        _sanitizeAttributes(shadowNode);
42898        /* Deep shadow DOM detected */
42899        if (shadowNode.content instanceof DocumentFragment) {
42900          _sanitizeShadowDOM(shadowNode.content);
42901        }
42902      }
42903      /* Execute a hook if present */
42904      _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
42905    };
42906    // eslint-disable-next-line complexity
42907    DOMPurify.sanitize = function (dirty) {
42908      let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
42909      let body = null;
42910      let importedNode = null;
42911      let currentNode = null;
42912      let returnNode = null;
42913      /* Make sure we have a string to sanitize.
42914        DO NOT return early, as this will return the wrong type if
42915        the user has requested a DOM object rather than a string */
42916      IS_EMPTY_INPUT = !dirty;
42917      if (IS_EMPTY_INPUT) {
42918        dirty = '<!-->';
42919      }
42920      /* Stringify, in case dirty is an object */
42921      if (typeof dirty !== 'string' && !_isNode(dirty)) {
42922        if (typeof dirty.toString === 'function') {
42923          dirty = dirty.toString();
42924          if (typeof dirty !== 'string') {
42925            throw typeErrorCreate('dirty is not a string, aborting');
42926          }
42927        } else {
42928          throw typeErrorCreate('toString is not a function');
42929        }
42930      }
42931      /* Return dirty HTML if DOMPurify cannot run */
42932      if (!DOMPurify.isSupported) {
42933        return dirty;
42934      }
42935      /* Assign config vars */
42936      if (!SET_CONFIG) {
42937        _parseConfig(cfg);
42938      }
42939      /* Clean up removed elements */
42940      DOMPurify.removed = [];
42941      /* Check if dirty is correctly typed for IN_PLACE */
42942      if (typeof dirty === 'string') {
42943        IN_PLACE = false;
42944      }
42945      if (IN_PLACE) {
42946        /* Do some early pre-sanitization to avoid unsafe root nodes */
42947        if (dirty.nodeName) {
42948          const tagName = transformCaseFunc(dirty.nodeName);
42949          if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
42950            throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
42951          }
42952        }
42953      } else if (dirty instanceof Node) {
42954        /* If dirty is a DOM element, append to an empty document to avoid
42955           elements being stripped by the parser */
42956        body = _initDocument('<!---->');
42957        importedNode = body.ownerDocument.importNode(dirty, true);
42958        if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {
42959          /* Node is already a body, use as is */
42960          body = importedNode;
42961        } else if (importedNode.nodeName === 'HTML') {
42962          body = importedNode;
42963        } else {
42964          // eslint-disable-next-line unicorn/prefer-dom-node-append
42965          body.appendChild(importedNode);
42966        }
42967      } else {
42968        /* Exit directly if we have nothing to do */
42969        if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
42970        // eslint-disable-next-line unicorn/prefer-includes
42971        dirty.indexOf('<') === -1) {
42972          return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
42973        }
42974        /* Initialize the document to work on */
42975        body = _initDocument(dirty);
42976        /* Check we have a DOM node from the data */
42977        if (!body) {
42978          return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';
42979        }
42980      }
42981      /* Remove first element node (ours) if FORCE_BODY is set */
42982      if (body && FORCE_BODY) {
42983        _forceRemove(body.firstChild);
42984      }
42985      /* Get node iterator */
42986      const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
42987      /* Now start iterating over the created document */
42988      while (currentNode = nodeIterator.nextNode()) {
42989        /* Sanitize tags and elements */
42990        _sanitizeElements(currentNode);
42991        /* Check attributes next */
42992        _sanitizeAttributes(currentNode);
42993        /* Shadow DOM detected, sanitize it */
42994        if (currentNode.content instanceof DocumentFragment) {
42995          _sanitizeShadowDOM(currentNode.content);
42996        }
42997      }
42998      /* If we sanitized `dirty` in-place, return it. */
42999      if (IN_PLACE) {
43000        return dirty;
43001      }
43002      /* Return sanitized string or DOM */
43003      if (RETURN_DOM) {
43004        if (RETURN_DOM_FRAGMENT) {
43005          returnNode = createDocumentFragment.call(body.ownerDocument);
43006          while (body.firstChild) {
43007            // eslint-disable-next-line unicorn/prefer-dom-node-append
43008            returnNode.appendChild(body.firstChild);
43009          }
43010        } else {
43011          returnNode = body;
43012        }
43013        if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
43014          /*
43015            AdoptNode() is not used because internal state is not reset
43016            (e.g. the past names map of a HTMLFormElement), this is safe
43017            in theory but we would rather not risk another attack vector.
43018            The state that is cloned by importNode() is explicitly defined
43019            by the specs.
43020          */
43021          returnNode = importNode.call(originalDocument, returnNode, true);
43022        }
43023        return returnNode;
43024      }
43025      let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
43026      /* Serialize doctype if allowed */
43027      if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
43028        serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\n' + serializedHTML;
43029      }
43030      /* Sanitize final string template-safe */
43031      if (SAFE_FOR_TEMPLATES) {
43032        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
43033          serializedHTML = stringReplace(serializedHTML, expr, ' ');
43034        });
43035      }
43036      return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
43037    };
43038    DOMPurify.setConfig = function () {
43039      let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
43040      _parseConfig(cfg);
43041      SET_CONFIG = true;
43042    };
43043    DOMPurify.clearConfig = function () {
43044      CONFIG = null;
43045      SET_CONFIG = false;
43046    };
43047    DOMPurify.isValidAttribute = function (tag, attr, value) {
43048      /* Initialize shared config vars if necessary. */
43049      if (!CONFIG) {
43050        _parseConfig({});
43051      }
43052      const lcTag = transformCaseFunc(tag);
43053      const lcName = transformCaseFunc(attr);
43054      return _isValidAttribute(lcTag, lcName, value);
43055    };
43056    DOMPurify.addHook = function (entryPoint, hookFunction) {
43057      if (typeof hookFunction !== 'function') {
43058        return;
43059      }
43060      arrayPush(hooks[entryPoint], hookFunction);
43061    };
43062    DOMPurify.removeHook = function (entryPoint, hookFunction) {
43063      if (hookFunction !== undefined) {
43064        const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);
43065        return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];
43066      }
43067      return arrayPop(hooks[entryPoint]);
43068    };
43069    DOMPurify.removeHooks = function (entryPoint) {
43070      hooks[entryPoint] = [];
43071    };
43072    DOMPurify.removeAllHooks = function () {
43073      hooks = _createHooksMap();
43074    };
43075    return DOMPurify;
43076  }
43077  var purify = createDOMPurify();
43078
43079  return purify;
43080
43081}));
43082//# sourceMappingURL=purify.js.map
43083
43084
43085/***/ }),
43086/* 164 */
43087/***/ (function(module, exports) {
43088
43089// removed by extract-text-webpack-plugin
43090
43091/***/ }),
43092/* 165 */
43093/***/ (function(module, exports) {
43094
43095// removed by extract-text-webpack-plugin
43096
43097/***/ })
43098/******/ ]);

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