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 '&': '&', 6133 '<': '<', 6134 '>': '>', 6135 '"': '"', 6136 "'": ''' 6137 }; 6138 6139 /** Used to map HTML entities to characters. */ 6140 var htmlUnescapes = { 6141 '&': '&', 6142 '<': '<', 6143 '>': '>', 6144 '"': '"', 6145 ''': "'" 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, & 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, & 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><script></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 * `&`, `<`, `>`, `"`, and `'` 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, & 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ẹÌ_EÌreÌleÌ_ẸrẹÌnaÌ_IÌgbeÌ_EÌbibi_OÌkuÌdu_Agẹmo_OÌguÌn_Owewe_á»ÌwaÌraÌ_BeÌluÌ_á»ÌpẹÌÌ'.split( 37475 '_' 37476 ), 37477 monthsShort: 'SẹÌr_EÌrl_Ẹrn_IÌgb_EÌbi_OÌkuÌ_Agẹ_OÌguÌ_Owe_á»ÌwaÌ_BeÌl_á»ÌpẹÌÌ'.split('_'), 37478 weekdays: 'AÌiÌkuÌ_AjeÌ_IÌsẹÌgun_á»já»ÌruÌ_á»já»Ìbá»_ẸtiÌ_AÌbaÌmẹÌta'.split('_'), 37479 weekdaysShort: 'AÌiÌk_AjeÌ_IÌsẹÌ_á»jr_á»jb_ẸtiÌ_AÌbaÌ'.split('_'), 37480 weekdaysMin: 'AÌiÌ_Aj_IÌs_á»r_á»b_Ẹt_AÌ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: '[OÌniÌ ni] LT', 37491 nextDay: '[á»Ìla ni] LT', 37492 nextWeek: "dddd [á»sáº¹Ì toÌn'bá»] [ni] LT", 37493 lastDay: '[AÌna ni] LT', 37494 lastWeek: 'dddd [á»sáº¹Ì toÌlá»Ì] [ni] LT', 37495 sameElse: 'L', 37496 }, 37497 relativeTime: { 37498 future: 'niÌ %s', 37499 past: '%s ká»jaÌ', 37500 s: 'iÌsẹjuÌ aayaÌ die', 37501 ss: 'aayaÌ %d', 37502 m: 'iÌsẹjuÌ kan', 37503 mm: 'iÌsẹjuÌ %d', 37504 h: 'waÌkati kan', 37505 hh: 'waÌkati %d', 37506 d: 'á»já»Ì kan', 37507 dd: 'á»já»Ì %d', 37508 M: 'osuÌ kan', 37509 MM: 'osuÌ %d', 37510 y: 'á»duÌn kan', 37511 yy: 'á»duÌ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.