!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/rtail-expressjs/node_modules/chrono-node/dist/   drwxr-xr-x
Free 12.88 GB of 57.97 GB (22.22%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     chrono.js (259.79 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory();
	else if(typeof define === 'function' && define.amd)
		define([], factory);
	else if(typeof exports === 'object')
		exports["chrono"] = factory();
	else
		root["chrono"] = factory();
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 12);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

function ParsedResult(result) {
  result = result || {};
  this.ref = result.ref;
  this.index = result.index;
  this.text = result.text;
  this.tags = result.tags || {};
  this.start = new ParsedComponents(result.start, result.ref);

  if (result.end) {
    this.end = new ParsedComponents(result.end, result.ref);
  }
}

ParsedResult.prototype.clone = function () {
  var result = new ParsedResult(this);
  result.tags = JSON.parse(JSON.stringify(this.tags));
  result.start = this.start.clone();

  if (this.end) {
    result.end = this.end.clone();
  }

  return result;
};

ParsedResult.prototype.date = function () {
  return this.start.date();
};

ParsedResult.prototype.hasPossibleDates = function () {
  return this.start.isPossibleDate() && (!this.end || this.end.isPossibleDate());
};

ParsedResult.prototype.isOnlyWeekday = function () {
  return this.start.isOnlyWeekdayComponent();
};

ParsedResult.prototype.isOnlyDayMonth = function () {
  return this.start.isOnlyDayMonthComponent();
};

function ParsedComponents(components, ref) {
  this.knownValues = {};
  this.impliedValues = {};

  if (components) {
    for (var key in components) {
      this.knownValues[key] = components[key];
    }
  }

  if (ref) {
    ref = dayjs(ref);
    this.imply('day', ref.date());
    this.imply('month', ref.month() + 1);
    this.imply('year', ref.year());
  }

  this.imply('hour', 12);
  this.imply('minute', 0);
  this.imply('second', 0);
  this.imply('millisecond', 0);
}

ParsedComponents.prototype.clone = function () {
  var component = new ParsedComponents();
  component.knownValues = JSON.parse(JSON.stringify(this.knownValues));
  component.impliedValues = JSON.parse(JSON.stringify(this.impliedValues));
  return component;
};

ParsedComponents.prototype.get = function (component, value) {
  if (component in this.knownValues) return this.knownValues[component];
  if (component in this.impliedValues) return this.impliedValues[component];
};

ParsedComponents.prototype.assign = function (component, value) {
  this.knownValues[component] = value;
  delete this.impliedValues[component];
};

ParsedComponents.prototype.imply = function (component, value) {
  if (component in this.knownValues) return;
  this.impliedValues[component] = value;
};

ParsedComponents.prototype.isCertain = function (component) {
  return component in this.knownValues;
};

ParsedComponents.prototype.isOnlyWeekdayComponent = function () {
  return this.isCertain('weekday') && !this.isCertain('day') && !this.isCertain('month');
};

ParsedComponents.prototype.isOnlyDayMonthComponent = function () {
  return this.isCertain('day') && this.isCertain('month') && !this.isCertain('year');
};

ParsedComponents.prototype.isPossibleDate = function () {
  var dateMoment = this.dayjs();

  if (this.isCertain('timezoneOffset')) {
    var adjustTimezoneOffset = this.get('timezoneOffset') - dateMoment.utcOffset();
    dateMoment = dateMoment.add(adjustTimezoneOffset, 'minutes');
  }

  if (dateMoment.get('year') != this.get('year')) return false;
  if (dateMoment.get('month') != this.get('month') - 1) return false;
  if (dateMoment.get('date') != this.get('day')) return false;
  if (dateMoment.get('hour') != this.get('hour')) return false;
  if (dateMoment.get('minute') != this.get('minute')) return false;
  return true;
};

ParsedComponents.prototype.date = function () {
  var result = this.dayjs();
  return result.toDate();
};

ParsedComponents.prototype.dayjs = function () {
  var result = dayjs();
  result = result.year(this.get('year'));
  result = result.month(this.get('month') - 1);
  result = result.date(this.get('day'));
  result = result.hour(this.get('hour'));
  result = result.minute(this.get('minute'));
  result = result.second(this.get('second'));
  result = result.millisecond(this.get('millisecond')); // Javascript Date Object return minus timezone offset

  var currentTimezoneOffset = result.utcOffset();
  var targetTimezoneOffset = this.get('timezoneOffset') !== undefined ? this.get('timezoneOffset') : currentTimezoneOffset;
  var adjustTimezoneOffset = targetTimezoneOffset - currentTimezoneOffset;
  result = result.add(-adjustTimezoneOffset, 'minute');
  return result;
};

ParsedComponents.prototype.moment = function () {
  // Keep for compatibility
  return this.dayjs();
};

exports.ParsedComponents = ParsedComponents;
exports.ParsedResult = ParsedResult;

/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

exports.Parser = function (config) {
  config = config || {};
  var strictMode = config.strict;

  this.isStrictMode = function () {
    return strictMode == true;
  };

  this.pattern = function () {
    return /./i;
  };

  this.extract = function (text, ref, match, opt) {
    return null;
  };

  this.execute = function (text, ref, opt) {
    var results = [];
    var regex = this.pattern();
    var remainingText = text;
    var match = regex.exec(remainingText);

    while (match) {
      // Calculate match index on the full text;
      match.index += text.length - remainingText.length;
      var result = this.extract(text, ref, match, opt);

      if (result) {
        // If success, start from the end of the result
        remainingText = text.substring(result.index + result.text.length);

        if (!this.isStrictMode() || result.hasPossibleDates()) {
          results.push(result);
        }
      } else {
        // If fail, move on by 1
        remainingText = text.substring(match.index + 1);
      }

      match = regex.exec(remainingText);
    }

    if (this.refiners) {
      this.refiners.forEach(function () {
        results = refiner.refine(results, text, options);
      });
    }

    return results;
  };
};

exports.findYearClosestToRef = function (ref, day, month) {
  //Find the most appropriated year
  var refMoment = dayjs(ref);
  var dateMoment = refMoment;
  dateMoment = dateMoment.month(month - 1);
  dateMoment = dateMoment.date(day);
  dateMoment = dateMoment.year(refMoment.year());
  var nextYear = dateMoment.add(1, 'y');
  var lastYear = dateMoment.add(-1, 'y');

  if (Math.abs(nextYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {
    dateMoment = nextYear;
  } else if (Math.abs(lastYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {
    dateMoment = lastYear;
  }

  return dateMoment.year();
};

exports.ENISOFormatParser = __webpack_require__(14).Parser;
exports.ENDeadlineFormatParser = __webpack_require__(15).Parser;
exports.ENRelativeDateFormatParser = __webpack_require__(16).Parser;
exports.ENMonthNameLittleEndianParser = __webpack_require__(17).Parser;
exports.ENMonthNameMiddleEndianParser = __webpack_require__(18).Parser;
exports.ENMonthNameParser = __webpack_require__(19).Parser;
exports.ENSlashDateFormatParser = __webpack_require__(20).Parser;
exports.ENSlashDateFormatStartWithYearParser = __webpack_require__(21).Parser;
exports.ENSlashMonthFormatParser = __webpack_require__(22).Parser;
exports.ENTimeAgoFormatParser = __webpack_require__(23).Parser;
exports.ENTimeExpressionParser = __webpack_require__(24).Parser;
exports.ENTimeLaterFormatParser = __webpack_require__(25).Parser;
exports.ENWeekdayParser = __webpack_require__(6).Parser;
exports.ENCasualDateParser = __webpack_require__(26).Parser;
exports.ENCasualTimeParser = __webpack_require__(27).Parser;
exports.JPStandardParser = __webpack_require__(28).Parser;
exports.JPCasualDateParser = __webpack_require__(30).Parser;
exports.PTCasualDateParser = __webpack_require__(31).Parser;
exports.PTDeadlineFormatParser = __webpack_require__(32).Parser;
exports.PTMonthNameLittleEndianParser = __webpack_require__(33).Parser;
exports.PTSlashDateFormatParser = __webpack_require__(35).Parser;
exports.PTTimeAgoFormatParser = __webpack_require__(36).Parser;
exports.PTTimeExpressionParser = __webpack_require__(37).Parser;
exports.PTWeekdayParser = __webpack_require__(38).Parser;
exports.ESCasualDateParser = __webpack_require__(39).Parser;
exports.ESDeadlineFormatParser = __webpack_require__(40).Parser;
exports.ESTimeAgoFormatParser = __webpack_require__(41).Parser;
exports.ESTimeExpressionParser = __webpack_require__(42).Parser;
exports.ESWeekdayParser = __webpack_require__(43).Parser;
exports.ESMonthNameLittleEndianParser = __webpack_require__(44).Parser;
exports.ESSlashDateFormatParser = __webpack_require__(46).Parser;
exports.FRCasualDateParser = __webpack_require__(47).Parser;
exports.FRDeadlineFormatParser = __webpack_require__(48).Parser;
exports.FRMonthNameLittleEndianParser = __webpack_require__(49).Parser;
exports.FRSlashDateFormatParser = __webpack_require__(50).Parser;
exports.FRTimeAgoFormatParser = __webpack_require__(51).Parser;
exports.FRTimeExpressionParser = __webpack_require__(52).Parser;
exports.FRWeekdayParser = __webpack_require__(53).Parser;
exports.FRRelativeDateFormatParser = __webpack_require__(54).Parser;
exports.ZHHantDateParser = __webpack_require__(56).Parser;
exports.ZHHantWeekdayParser = __webpack_require__(57).Parser;
exports.ZHHantTimeExpressionParser = __webpack_require__(58).Parser;
exports.ZHHantCasualDateParser = __webpack_require__(59).Parser;
exports.ZHHantDeadlineFormatParser = __webpack_require__(60).Parser;
exports.DEDeadlineFormatParser = __webpack_require__(61).Parser;
exports.DEMonthNameLittleEndianParser = __webpack_require__(62).Parser;
exports.DEMonthNameParser = __webpack_require__(63).Parser;
exports.DESlashDateFormatParser = __webpack_require__(64).Parser;
exports.DETimeAgoFormatParser = __webpack_require__(65).Parser;
exports.DETimeExpressionParser = __webpack_require__(66).Parser;
exports.DEWeekdayParser = __webpack_require__(67).Parser;
exports.DECasualDateParser = __webpack_require__(68).Parser;
exports.NLMonthNameParser = __webpack_require__(69).Parser;
exports.NLMonthNameLittleEndianParser = __webpack_require__(70).Parser;
exports.NLSlashDateFormatParser = __webpack_require__(71).Parser;
exports.NLWeekdayParser = __webpack_require__(72).Parser;
exports.NLTimeExpressionParser = __webpack_require__(73).Parser;
exports.NLCasualDateParser = __webpack_require__(74).Parser;
exports.NLCasualTimeParser = __webpack_require__(75).Parser;

/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {

!function(t,e){ true?module.exports=e():undefined}(this,function(){"use strict";var t="millisecond",e="second",n="minute",r="hour",i="day",s="week",u="month",o="quarter",a="year",h=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,f=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},d={s:c,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+c(r,2,"0")+":"+c(i,2,"0")},m:function(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,u),i=e-r<0,s=t.clone().add(n+(i?-1:1),u);return Number(-(n+(e-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,D:"date",h:r,m:n,s:e,ms:t,Q:o}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},$={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},l="en",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,e,n){var r;if(!t)return l;if("string"==typeof t)m[t]&&(r=t),e&&(m[t]=e,r=t);else{var i=t.name;m[i]=t,r=i}return!n&&r&&(l=r),r||!n&&l},g=function(t,e){if(y(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new v(n)},D=d;D.l=M,D.i=y,D.w=function(t,e){return g(t,{locale:e.$L,utc:e.$u,$offset:e.$offset})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(h);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(e)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(t,e){var n=g(t);return this.startOf(e)<=n&&n<=this.endOf(e)},d.isAfter=function(t,e){return g(t)<this.startOf(e)},d.isBefore=function(t,e){return this.endOf(e)<g(t)},d.$g=function(t,e,n){return D.u(t)?this[e]:this.set(n,t)},d.year=function(t){return this.$g(t,"$y",a)},d.month=function(t){return this.$g(t,"$M",u)},d.day=function(t){return this.$g(t,"$W",i)},d.date=function(t){return this.$g(t,"$D","date")},d.hour=function(t){return this.$g(t,"$H",r)},d.minute=function(t){return this.$g(t,"$m",n)},d.second=function(t){return this.$g(t,"$s",e)},d.millisecond=function(e){return this.$g(e,"$ms",t)},d.unix=function(){return Math.floor(this.valueOf()/1e3)},d.valueOf=function(){return this.$d.getTime()},d.startOf=function(t,o){var h=this,f=!!D.u(o)||o,c=D.p(t),d=function(t,e){var n=D.w(h.$u?Date.UTC(h.$y,e,t):new Date(h.$y,e,t),h);return f?n:n.endOf(i)},$=function(t,e){return D.w(h.toDate()[t].apply(h.toDate("s"),(f?[0,0,0,0]:[23,59,59,999]).slice(e)),h)},l=this.$W,m=this.$M,y=this.$D,M="set"+(this.$u?"UTC":"");switch(c){case a:return f?d(1,0):d(31,11);case u:return f?d(1,m):d(0,m+1);case s:var g=this.$locale().weekStart||0,v=(l<g?l+7:l)-g;return d(f?y-v:y+(6-v),m);case i:case"date":return $(M+"Hours",0);case r:return $(M+"Minutes",1);case n:return $(M+"Seconds",2);case e:return $(M+"Milliseconds",3);default:return this.clone()}},d.endOf=function(t){return this.startOf(t,!1)},d.$set=function(s,o){var h,f=D.p(s),c="set"+(this.$u?"UTC":""),d=(h={},h[i]=c+"Date",h.date=c+"Date",h[u]=c+"Month",h[a]=c+"FullYear",h[r]=c+"Hours",h[n]=c+"Minutes",h[e]=c+"Seconds",h[t]=c+"Milliseconds",h)[f],$=f===i?this.$D+(o-this.$W):o;if(f===u||f===a){var l=this.clone().set("date",1);l.$d[d]($),l.init(),this.$d=l.set("date",Math.min(this.$D,l.daysInMonth())).toDate()}else d&&this.$d[d]($);return this.init(),this},d.set=function(t,e){return this.clone().$set(t,e)},d.get=function(t){return this[D.p(t)]()},d.add=function(t,o){var h,f=this;t=Number(t);var c=D.p(o),d=function(e){var n=g(f);return D.w(n.date(n.date()+Math.round(e*t)),f)};if(c===u)return this.set(u,this.$M+t);if(c===a)return this.set(a,this.$y+t);if(c===i)return d(1);if(c===s)return d(7);var $=(h={},h[n]=6e4,h[r]=36e5,h[e]=1e3,h)[c]||1,l=this.$d.getTime()+t*$;return D.w(l,this)},d.subtract=function(t,e){return this.add(-1*t,e)},d.format=function(t){var e=this;if(!this.isValid())return"Invalid Date";var n=t||"YYYY-MM-DDTHH:mm:ssZ",r=D.z(this),i=this.$locale(),s=this.$H,u=this.$m,o=this.$M,a=i.weekdays,h=i.months,c=function(t,r,i,s){return t&&(t[r]||t(e,n))||i[r].substr(0,s)},d=function(t){return D.s(s%12||12,t,"0")},$=i.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:D.s(o+1,2,"0"),MMM:c(i.monthsShort,o,h,3),MMMM:c(h,o),D:this.$D,DD:D.s(this.$D,2,"0"),d:String(this.$W),dd:c(i.weekdaysMin,this.$W,a,2),ddd:c(i.weekdaysShort,this.$W,a,3),dddd:a[this.$W],H:String(s),HH:D.s(s,2,"0"),h:d(1),hh:d(2),a:$(s,u,!0),A:$(s,u,!1),m:String(u),mm:D.s(u,2,"0"),s:String(this.$s),ss:D.s(this.$s,2,"0"),SSS:D.s(this.$ms,3,"0"),Z:r};return n.replace(f,function(t,e){return e||l[t]||r.replace(":","")})},d.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},d.diff=function(t,h,f){var c,d=D.p(h),$=g(t),l=6e4*($.utcOffset()-this.utcOffset()),m=this-$,y=D.m(this,$);return y=(c={},c[a]=y/12,c[u]=y,c[o]=y/3,c[s]=(m-l)/6048e5,c[i]=(m-l)/864e5,c[r]=m/36e5,c[n]=m/6e4,c[e]=m/1e3,c)[d]||m,f?y:D.a(y)},d.daysInMonth=function(){return this.endOf(u).$D},d.$locale=function(){return m[this.$L]},d.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=M(t,e,!0);return r&&(n.$L=r),n},d.clone=function(){return D.w(this.$d,this)},d.toDate=function(){return new Date(this.valueOf())},d.toJSON=function(){return this.isValid()?this.toISOString():null},d.toISOString=function(){return this.$d.toISOString()},d.toString=function(){return this.$d.toUTCString()},c}();return g.prototype=v.prototype,g.extend=function(t,e){return t(e,v,g),g},g.locale=M,g.isDayjs=y,g.unix=function(t){return g(1e3*t)},g.en=m[l],g.Ls=m,g});


/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {

exports.Refiner = function Refiner() {
  this.refine = function (text, results, opt) {
    return results;
  };
};

exports.Filter = function Filter() {
  exports.Refiner.call(this);

  this.isValid = function (text, result, opt) {
    return true;
  };

  this.refine = function (text, results, opt) {
    var filteredResult = [];

    for (var i = 0; i < results.length; i++) {
      var result = results[i];

      if (this.isValid(text, result, opt)) {
        filteredResult.push(result);
      }
    }

    return filteredResult;
  };
}; // Common refiners


exports.OverlapRemovalRefiner = __webpack_require__(76).Refiner;
exports.ExtractTimezoneOffsetRefiner = __webpack_require__(77).Refiner;
exports.ExtractTimezoneAbbrRefiner = __webpack_require__(78).Refiner;
exports.ForwardDateRefiner = __webpack_require__(79).Refiner;
exports.UnlikelyFormatFilter = __webpack_require__(80).Refiner; // en refiners

exports.ENMergeDateTimeRefiner = __webpack_require__(5).Refiner;
exports.ENMergeDateRangeRefiner = __webpack_require__(9).Refiner;
exports.ENPrioritizeSpecificDateRefiner = __webpack_require__(81).Refiner; // ja refiners

exports.JPMergeDateRangeRefiner = __webpack_require__(82).Refiner; // fr refiners

exports.FRMergeDateRangeRefiner = __webpack_require__(83).Refiner;
exports.FRMergeDateTimeRefiner = __webpack_require__(84).Refiner; // de refiners

exports.DEMergeDateRangeRefiner = __webpack_require__(85).Refiner;
exports.DEMergeDateTimeRefiner = __webpack_require__(86).Refiner; // nl refiners

exports.NLMergeDateRangeRefiner = __webpack_require__(87).Refiner;
exports.NLMergeDateTimeRefiner = __webpack_require__(88).Refiner;

/***/ }),
/* 4 */
/***/ (function(module, exports) {

exports.WEEKDAY_OFFSET = {
  'sunday': 0,
  'sun': 0,
  'monday': 1,
  'mon': 1,
  'tuesday': 2,
  'tue': 2,
  'wednesday': 3,
  'wed': 3,
  'thursday': 4,
  'thur': 4,
  'thu': 4,
  'friday': 5,
  'fri': 5,
  'saturday': 6,
  'sat': 6
};
exports.MONTH_OFFSET = {
  'january': 1,
  'jan': 1,
  'jan.': 1,
  'february': 2,
  'feb': 2,
  'feb.': 2,
  'march': 3,
  'mar': 3,
  'mar.': 3,
  'april': 4,
  'apr': 4,
  'apr.': 4,
  'may': 5,
  'june': 6,
  'jun': 6,
  'jun.': 6,
  'july': 7,
  'jul': 7,
  'jul.': 7,
  'august': 8,
  'aug': 8,
  'aug.': 8,
  'september': 9,
  'sep': 9,
  'sep.': 9,
  'sept': 9,
  'sept.': 9,
  'october': 10,
  'oct': 10,
  'oct.': 10,
  'november': 11,
  'nov': 11,
  'nov.': 11,
  'december': 12,
  'dec': 12,
  'dec.': 12
};
exports.MONTH_PATTERN = '(?:' + Object.keys(exports.MONTH_OFFSET).join('|').replace(/\./g, '\\.') + ')';
exports.INTEGER_WORDS = {
  'one': 1,
  'two': 2,
  'three': 3,
  'four': 4,
  'five': 5,
  'six': 6,
  'seven': 7,
  'eight': 8,
  'nine': 9,
  'ten': 10,
  'eleven': 11,
  'twelve': 12
};
exports.INTEGER_WORDS_PATTERN = '(?:' + Object.keys(exports.INTEGER_WORDS).join('|') + ')';
exports.ORDINAL_WORDS = {
  'first': 1,
  'second': 2,
  'third': 3,
  'fourth': 4,
  'fifth': 5,
  'sixth': 6,
  'seventh': 7,
  'eighth': 8,
  'ninth': 9,
  'tenth': 10,
  'eleventh': 11,
  'twelfth': 12,
  'thirteenth': 13,
  'fourteenth': 14,
  'fifteenth': 15,
  'sixteenth': 16,
  'seventeenth': 17,
  'eighteenth': 18,
  'nineteenth': 19,
  'twentieth': 20,
  'twenty first': 21,
  'twenty second': 22,
  'twenty third': 23,
  'twenty fourth': 24,
  'twenty fifth': 25,
  'twenty sixth': 26,
  'twenty seventh': 27,
  'twenty eighth': 28,
  'twenty ninth': 29,
  'thirtieth': 30,
  'thirty first': 31
};
exports.ORDINAL_WORDS_PATTERN = '(?:' + Object.keys(exports.ORDINAL_WORDS).join('|').replace(/ /g, '[ -]') + ')';
var TIME_UNIT = '(' + exports.INTEGER_WORDS_PATTERN + '|[0-9]+|[0-9]+\.[0-9]+|an?(?:\\s*few)?|half(?:\\s*an?)?)\\s*' + '(sec(?:onds?)?|min(?:ute)?s?|h(?:r|rs|our|ours)?|weeks?|days?|months?|years?)\\s*';
var TIME_UNIT_STRICT = '(?:[0-9]+|an?)\\s*' + '(?:seconds?|minutes?|hours?|days?)\\s*';
var PATTERN_TIME_UNIT = new RegExp(TIME_UNIT, 'i');
exports.TIME_UNIT_PATTERN = '(?:' + TIME_UNIT + ')+';
exports.TIME_UNIT_STRICT_PATTERN = '(?:' + TIME_UNIT_STRICT + ')+';

exports.extractDateTimeUnitFragments = function (timeunitText) {
  var fragments = {};
  var remainingText = timeunitText;
  var match = PATTERN_TIME_UNIT.exec(remainingText);

  while (match) {
    collectDateTimeFragment(match, fragments);
    remainingText = remainingText.substring(match[0].length);
    match = PATTERN_TIME_UNIT.exec(remainingText);
  }

  return fragments;
};

function collectDateTimeFragment(match, fragments) {
  var num = match[1].toLowerCase();

  if (exports.INTEGER_WORDS[num] !== undefined) {
    num = exports.INTEGER_WORDS[num];
  } else if (num === 'a' || num === 'an') {
    num = 1;
  } else if (num.match(/few/)) {
    num = 3;
  } else if (num.match(/half/)) {
    num = 0.5;
  } else {
    num = parseFloat(num);
  }

  if (match[2].match(/^h/i)) {
    fragments['hour'] = num;
  } else if (match[2].match(/min/i)) {
    fragments['minute'] = num;
  } else if (match[2].match(/sec/i)) {
    fragments['second'] = num;
  } else if (match[2].match(/week/i)) {
    fragments['week'] = num;
  } else if (match[2].match(/day/i)) {
    fragments['d'] = num;
  } else if (match[2].match(/month/i)) {
    fragments['month'] = num;
  } else if (match[2].match(/year/i)) {
    fragments['year'] = num;
  }

  return fragments;
}

/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

/*
    
*/
var ParsedComponents = __webpack_require__(0).ParsedComponents;

var Refiner = __webpack_require__(3).Refiner;

var PATTERN = new RegExp("^[ ]*(T|at|after|before|on|of|,|-)?[ ]*$");

var isDateOnly = exports.isDateOnly = function (result) {
  return !result.start.isCertain('hour');
};

var isTimeOnly = exports.isTimeOnly = function (result) {
  return !result.start.isCertain('month') && !result.start.isCertain('weekday');
};

var isAbleToMerge = exports.isAbleToMerge = function (text, prevResult, curResult) {
  var textBetween = text.substring(prevResult.index + prevResult.text.length, curResult.index);
  return textBetween.match(PATTERN);
};

var mergeDateTimeComponent = exports.mergeDateTimeComponent = function (dateComponent, timeComponent) {
  var dateTimeComponent = dateComponent.clone();

  if (timeComponent.isCertain('hour')) {
    dateTimeComponent.assign('hour', timeComponent.get('hour'));
    dateTimeComponent.assign('minute', timeComponent.get('minute'));

    if (timeComponent.isCertain('second')) {
      dateTimeComponent.assign('second', timeComponent.get('second'));

      if (timeComponent.isCertain('millisecond')) {
        dateTimeComponent.assign('millisecond', timeComponent.get('millisecond'));
      } else {
        dateTimeComponent.imply('millisecond', timeComponent.get('millisecond'));
      }
    } else {
      dateTimeComponent.imply('second', timeComponent.get('second'));
      dateTimeComponent.imply('millisecond', timeComponent.get('millisecond'));
    }
  } else {
    dateTimeComponent.imply('hour', timeComponent.get('hour'));
    dateTimeComponent.imply('minute', timeComponent.get('minute'));
    dateTimeComponent.imply('second', timeComponent.get('second'));
    dateTimeComponent.imply('millisecond', timeComponent.get('millisecond'));
  }

  if (timeComponent.isCertain('meridiem')) {
    dateTimeComponent.assign('meridiem', timeComponent.get('meridiem'));
  } else if (timeComponent.get('meridiem') !== undefined && dateTimeComponent.get('meridiem') === undefined) {
    dateTimeComponent.imply('meridiem', timeComponent.get('meridiem'));
  }

  if (dateTimeComponent.get('meridiem') == 1 && dateTimeComponent.get('hour') < 12) {
    if (timeComponent.isCertain('hour')) {
      dateTimeComponent.assign('hour', dateTimeComponent.get('hour') + 12);
    } else {
      dateTimeComponent.imply('hour', dateTimeComponent.get('hour') + 12);
    }
  }

  return dateTimeComponent;
};

function mergeResult(text, dateResult, timeResult) {
  var beginDate = dateResult.start;
  var beginTime = timeResult.start;
  var beginDateTime = mergeDateTimeComponent(beginDate, beginTime);

  if (dateResult.end != null || timeResult.end != null) {
    var endDate = dateResult.end == null ? dateResult.start : dateResult.end;
    var endTime = timeResult.end == null ? timeResult.start : timeResult.end;
    var endDateTime = mergeDateTimeComponent(endDate, endTime);

    if (dateResult.end == null && endDateTime.date().getTime() < beginDateTime.date().getTime()) {
      // Ex. 9pm - 1am
      if (endDateTime.isCertain('day')) {
        endDateTime.assign('day', endDateTime.get('day') + 1);
      } else {
        endDateTime.imply('day', endDateTime.get('day') + 1);
      }
    }

    dateResult.end = endDateTime;
  }

  dateResult.start = beginDateTime;
  var startIndex = Math.min(dateResult.index, timeResult.index);
  var endIndex = Math.max(dateResult.index + dateResult.text.length, timeResult.index + timeResult.text.length);
  dateResult.index = startIndex;
  dateResult.text = text.substring(startIndex, endIndex);

  for (var tag in timeResult.tags) {
    dateResult.tags[tag] = true;
  }

  dateResult.tags['ENMergeDateAndTimeRefiner'] = true;
  return dateResult;
}

exports.Refiner = function ENMergeDateTimeRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var mergedResult = [];
    var currResult = null;
    var prevResult = null;

    for (var i = 1; i < results.length; i++) {
      currResult = results[i];
      prevResult = results[i - 1];

      if (isDateOnly(prevResult) && isTimeOnly(currResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, prevResult, currResult);
        currResult = results[i + 1];
        i += 1;
      } else if (isDateOnly(currResult) && isTimeOnly(prevResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, currResult, prevResult);
        currResult = results[i + 1];
        i += 1;
      }

      mergedResult.push(prevResult);
    }

    if (currResult != null) {
      mergedResult.push(currResult);
    }

    return mergedResult;
  };
};

/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var DAYS_OFFSET = {
  'sunday': 0,
  'sun': 0,
  'monday': 1,
  'mon': 1,
  'tuesday': 2,
  'tues': 2,
  'tue': 2,
  'wednesday': 3,
  'wed': 3,
  'thursday': 4,
  'thurs': 4,
  'thur': 4,
  'thu': 4,
  'friday': 5,
  'fri': 5,
  'saturday': 6,
  'sat': 6
};
var PATTERN = new RegExp('(\\W|^)' + '(?:(?:\\,|\\(|\\()\\s*)?' + '(?:on\\s*?)?' + '(?:(this|last|past|next)\\s*)?' + '(' + Object.keys(DAYS_OFFSET).join('|') + ')' + '(?:\\s*(?:\\,|\\)|\\)))?' + '(?:\\s*(this|last|past|next)\\s*week)?' + '(?=\\W|$)', 'i');
var PREFIX_GROUP = 2;
var WEEKDAY_GROUP = 3;
var POSTFIX_GROUP = 4;

exports.updateParsedComponent = function updateParsedComponent(result, ref, offset, modifier) {
  var startMoment = dayjs(ref);
  var startMomentFixed = false;
  var refOffset = startMoment.day();

  if (modifier == 'last' || modifier == 'past') {
    startMoment = startMoment.day(offset - 7);
    startMomentFixed = true;
  } else if (modifier == 'next') {
    startMoment = startMoment.day(offset + 7);
    startMomentFixed = true;
  } else if (modifier == 'this') {
    startMoment = startMoment.day(offset);
  } else {
    if (Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {
      startMoment = startMoment.day(offset - 7);
    } else if (Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {
      startMoment = startMoment.day(offset + 7);
    } else {
      startMoment = startMoment.day(offset);
    }
  }

  result.start.assign('weekday', offset);

  if (startMomentFixed) {
    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
  } else {
    result.start.imply('day', startMoment.date());
    result.start.imply('month', startMoment.month() + 1);
    result.start.imply('year', startMoment.year());
  }

  return result;
};

exports.Parser = function ENWeekdayParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
    var offset = DAYS_OFFSET[dayOfWeek];

    if (offset === undefined) {
      return null;
    }

    var prefix = match[PREFIX_GROUP];
    var postfix = match[POSTFIX_GROUP];
    var norm = prefix || postfix;
    norm = norm || '';
    norm = norm.toLowerCase();
    exports.updateParsedComponent(result, ref, offset, norm);
    result.tags['ENWeekdayParser'] = true;
    return result;
  };
};

/***/ }),
/* 7 */
/***/ (function(module, exports) {

var NUMBER = {
  '零': 0,
  '一': 1,
  '二': 2,
  '兩': 2,
  '三': 3,
  '四': 4,
  '五': 5,
  '六': 6,
  '七': 7,
  '八': 8,
  '九': 9,
  '十': 10,
  '廿': 20,
  '卅': 30
};
var WEEKDAY_OFFSET = {
  '天': 0,
  '日': 0,
  '一': 1,
  '二': 2,
  '三': 3,
  '四': 4,
  '五': 5,
  '六': 6
};
exports.NUMBER = NUMBER;
exports.WEEKDAY_OFFSET = WEEKDAY_OFFSET;

exports.zhStringToNumber = function (text) {
  var number = 0;

  for (var i = 0; i < text.length; i++) {
    var _char = text[i];

    if (_char === '十') {
      number = number === 0 ? NUMBER[_char] : number * NUMBER[_char];
    } else {
      number += NUMBER[_char];
    }
  }

  return number;
};

exports.zhStringToYear = function (text) {
  var string = '';

  for (var i = 0; i < text.length; i++) {
    var _char2 = text[i];
    string = string + NUMBER[_char2];
  }

  return parseInt(string);
};

/***/ }),
/* 8 */
/***/ (function(module, exports) {

exports.WEEKDAY_OFFSET = {
  'sonntag': 0,
  'so': 0,
  'montag': 1,
  'mo': 1,
  'dienstag': 2,
  'di': 2,
  'mittwoch': 3,
  'mi': 3,
  'donnerstag': 4,
  'do': 4,
  'freitag': 5,
  'fr': 5,
  'samstag': 6,
  'sa': 6
};
exports.MONTH_OFFSET = {
  'januar': 1,
  'jan': 1,
  'jan.': 1,
  'februar': 2,
  'feb': 2,
  'feb.': 2,
  'märz': 3,
  'maerz': 3,
  'mär': 3,
  'mär.': 3,
  'mrz': 3,
  'mrz.': 3,
  'april': 4,
  'apr': 4,
  'apr.': 4,
  'mai': 5,
  'juni': 6,
  'jun': 6,
  'jun.': 6,
  'juli': 7,
  'jul': 7,
  'jul.': 7,
  'august': 8,
  'aug': 8,
  'aug.': 8,
  'september': 9,
  'sep': 9,
  'sep.': 9,
  'sept': 9,
  'sept.': 9,
  'oktober': 10,
  'okt': 10,
  'okt.': 10,
  'november': 11,
  'nov': 11,
  'nov.': 11,
  'dezember': 12,
  'dez': 12,
  'dez.': 12
};
exports.INTEGER_WORDS_PATTERN = '(?:eins|zwei|drei|vier|fünf|fuenf|sechs|sieben|acht|neun|zehn|elf|zwölf|zwoelf)';
exports.INTEGER_WORDS = {
  'eins': 1,
  'zwei': 2,
  'drei': 3,
  'vier': 4,
  'fünf': 5,
  'fuenf': 5,
  'sechs': 6,
  'sieben': 7,
  'acht': 8,
  'neun': 9,
  'zehn': 10,
  'elf': 11,
  'zwölf': 12,
  'zwoelf': 12
};

/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {

/*
  
*/
var Refiner = __webpack_require__(3).Refiner;

exports.Refiner = function ENMergeDateRangeRefiner() {
  Refiner.call(this);

  this.pattern = function () {
    return /^\s*(to|\-)\s*$/i;
  };

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var mergedResult = [];
    var currResult = null;
    var prevResult = null;

    for (var i = 1; i < results.length; i++) {
      currResult = results[i];
      prevResult = results[i - 1];

      if (!prevResult.end && !currResult.end && this.isAbleToMerge(text, prevResult, currResult)) {
        prevResult = this.mergeResult(text, prevResult, currResult);
        currResult = null;
        i += 1;
      }

      mergedResult.push(prevResult);
    }

    if (currResult != null) {
      mergedResult.push(currResult);
    }

    return mergedResult;
  };

  this.isAbleToMerge = function (text, result1, result2) {
    var begin = result1.index + result1.text.length;
    var end = result2.index;
    var textBetween = text.substring(begin, end);
    return textBetween.match(this.pattern());
  };

  this.mergeResult = function (text, fromResult, toResult) {
    if (!fromResult.isOnlyWeekday() && !toResult.isOnlyWeekday()) {
      var timeKeys = {
        'hour': true,
        'minute': true,
        'second': true
      };

      for (var key in toResult.start.knownValues) {
        if (!fromResult.start.isCertain(key)) {
          fromResult.start.assign(key, toResult.start.get(key));
        }
      }

      for (var key in fromResult.start.knownValues) {
        if (!toResult.start.isCertain(key)) {
          toResult.start.assign(key, fromResult.start.get(key));
        }
      }
    }

    if (fromResult.start.date().getTime() > toResult.start.date().getTime()) {
      var fromMoment = fromResult.start.dayjs();
      var toMoment = toResult.start.dayjs();

      if (fromResult.isOnlyWeekday() && fromMoment.add(-7, 'days').isBefore(toMoment)) {
        fromMoment = fromMoment.add(-7, 'days');
        fromResult.start.imply('day', fromMoment.date());
        fromResult.start.imply('month', fromMoment.month() + 1);
        fromResult.start.imply('year', fromMoment.year());
      } else if (toResult.isOnlyWeekday() && toMoment.add(7, 'days').isAfter(fromMoment)) {
        toMoment = toMoment.add(7, 'days');
        toResult.start.imply('day', toMoment.date());
        toResult.start.imply('month', toMoment.month() + 1);
        toResult.start.imply('year', toMoment.year());
      } else {
        var tmp = toResult;
        toResult = fromResult;
        fromResult = tmp;
      }
    }

    fromResult.end = toResult.start;

    for (var tag in toResult.tags) {
      fromResult.tags[tag] = true;
    }

    var startIndex = Math.min(fromResult.index, toResult.index);
    var endIndex = Math.max(fromResult.index + fromResult.text.length, toResult.index + toResult.text.length);
    fromResult.index = startIndex;
    fromResult.text = text.substring(startIndex, endIndex);
    fromResult.tags[this.constructor.name] = true;
    return fromResult;
  };
};

/***/ }),
/* 10 */
/***/ (function(module, exports) {

exports.WEEKDAY_OFFSET = {
  'dimanche': 0,
  'dim': 0,
  'lundi': 1,
  'lun': 1,
  'mardi': 2,
  'mar': 2,
  'mercredi': 3,
  'mer': 3,
  'jeudi': 4,
  'jeu': 4,
  'vendredi': 5,
  'ven': 5,
  'samedi': 6,
  'sam': 6
};
exports.MONTH_OFFSET = {
  'janvier': 1,
  'jan': 1,
  'jan.': 1,
  'février': 2,
  'fév': 2,
  'fév.': 2,
  'fevrier': 2,
  'fev': 2,
  'fev.': 2,
  'mars': 3,
  'mar': 3,
  'mar.': 3,
  'avril': 4,
  'avr': 4,
  'avr.': 4,
  'mai': 5,
  'juin': 6,
  'jun': 6,
  'juillet': 7,
  'jul': 7,
  'jul.': 7,
  'août': 8,
  'aout': 8,
  'septembre': 9,
  'sep': 9,
  'sep.': 9,
  'sept': 9,
  'sept.': 9,
  'octobre': 10,
  'oct': 10,
  'oct.': 10,
  'novembre': 11,
  'nov': 11,
  'nov.': 11,
  'décembre': 12,
  'decembre': 12,
  'dec': 12,
  'dec.': 12
};
exports.INTEGER_WORDS_PATTERN = '(?:un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize)';
exports.INTEGER_WORDS = {
  'un': 1,
  'deux': 2,
  'trois': 3,
  'quatre': 4,
  'cinq': 5,
  'six': 6,
  'sept': 7,
  'huit': 8,
  'neuf': 9,
  'dix': 10,
  'onze': 11,
  'douze': 12,
  'treize': 13
};

/***/ }),
/* 11 */
/***/ (function(module, exports) {

exports.WEEKDAY_OFFSET = {
  'zondag': 0,
  'zo': 0,
  'zo.': 0,
  'maandag': 1,
  'ma': 1,
  'ma.': 1,
  'dinsdag': 2,
  'di': 2,
  'di.': 2,
  'woensdag': 3,
  'wo': 3,
  'wo.': 3,
  'donderdag': 4,
  'do': 4,
  'do.': 4,
  'vrijdag': 5,
  'vr': 5,
  'vr.': 5,
  'zaterdag': 6,
  'za': 6,
  'za.': 6
};
exports.WEEKDAY_PATTERN = '(?:' + Object.keys(exports.WEEKDAY_OFFSET).join('|').replace(/\./g, '\\.') + ')';
exports.MONTH_OFFSET = {
  'januari': 1,
  'jan': 1,
  'jan.': 1,
  'februari': 2,
  'feb': 2,
  'feb.': 2,
  'maart': 3,
  'mrt': 3,
  'mrt.': 3,
  'april': 4,
  'apr': 4,
  'apr.': 4,
  'mei': 5,
  'juni': 6,
  'jun': 6,
  'jun.': 6,
  'juli': 7,
  'jul': 7,
  'jul.': 7,
  'augustus': 8,
  'aug': 8,
  'aug.': 8,
  'september': 9,
  'sep': 9,
  'sep.': 9,
  'sept': 9,
  'sept.': 9,
  'oktober': 10,
  'okt': 10,
  'okt.': 10,
  'november': 11,
  'nov': 11,
  'nov.': 11,
  'december': 12,
  'dec': 12,
  'dec.': 12
};
exports.MONTH_PATTERN = '(?:' + Object.keys(exports.MONTH_OFFSET).join('|').replace(/\./g, '\\.') + ')';
exports.INTEGER_WORDS = {
  'een': 1,
  'één': 1,
  'twee': 2,
  'drie': 3,
  'vier': 4,
  'vijf': 5,
  'zes': 6,
  'zeven': 7,
  'acht': 8,
  'negen': 9,
  'tien': 10,
  'elf': 11,
  'twaalf': 12
};
exports.INTEGER_WORDS_PATTERN = '(?:' + Object.keys(exports.INTEGER_WORDS).join('|') + ')';
exports.ORDINAL_WORDS = {
  'eerste': 1,
  'tweede': 2,
  'derde': 3,
  'vierde': 4,
  'vijfde': 5,
  'zesde': 6,
  'zevende': 7,
  'achste': 8,
  'negende': 9,
  'tiende': 10,
  'elfde': 11,
  'twaalfde': 12,
  'dertiende': 13,
  'veertiende': 14,
  'vijftiende': 15,
  'zestiende': 16,
  'zeventiende': 17,
  'achttiende': 18,
  'negentiende': 19,
  'twintigste': 20,
  'eenentwintigste': 21,
  'tweeëntwintigste': 22,
  'drieëntwintigste': 23,
  'vierentwintigste': 24,
  'vijfentwintigste': 25,
  'zesentwintigste': 26,
  'zevenentwintigste': 27,
  'achtentwintigste': 28,
  'negenentwintigste': 29,
  'dertigste': 30,
  'eenendertigste': 31
};
exports.ORDINAL_WORDS_PATTERN = '(?:' + Object.keys(exports.ORDINAL_WORDS).join('|').replace(/ /g, '[ -]') + ')';
var TIME_UNIT = '(' + exports.INTEGER_WORDS_PATTERN + '|[0-9]+|[0-9]+\.[0-9]+|en(?:\\s*few)?|half)\\s*' + '(sec(?:onde?)?|min(?:uten)?s?|(?:uur|uren)?|weken?|dagen?|maanden?|jaren?)\\s*';
var TIME_UNIT_STRICT = '(?:[0-9]+?)\\s*' + '(?:seconden?|(?:minuut|minuten)|(?:uur|uren)|(?:dag|dagen))\\s*';
var PATTERN_TIME_UNIT = new RegExp(TIME_UNIT, 'i');
exports.TIME_UNIT_PATTERN = '(?:' + TIME_UNIT + ')+';
exports.TIME_UNIT_STRICT_PATTERN = '(?:' + TIME_UNIT_STRICT + ')+';

exports.extractDateTimeUnitFragments = function (timeunitText) {
  var fragments = {};
  var remainingText = timeunitText;
  var match = PATTERN_TIME_UNIT.exec(remainingText);

  while (match) {
    collectDateTimeFragment(match, fragments);
    remainingText = remainingText.substring(match[0].length);
    match = PATTERN_TIME_UNIT.exec(remainingText);
  }

  return fragments;
};

function collectDateTimeFragment(match, fragments) {
  var num = match[1].toLowerCase();

  if (exports.INTEGER_WORDS[num] !== undefined) {
    num = exports.INTEGER_WORDS[num];
  } else if (num.match(/half/)) {
    num = 0.5;
  } else {
    num = parseFloat(num);
  }

  if (match[2].match(/^(?:uur|uren)/i)) {
    fragments['hour'] = num;
  } else if (match[2].match(/min/i)) {
    fragments['minute'] = num;
  } else if (match[2].match(/sec/i)) {
    fragments['second'] = num;
  } else if (match[2].match(/week/i)) {
    fragments['week'] = num;
  } else if (match[2].match(/dag/i)) {
    fragments['d'] = num;
  } else if (match[2].match(/maand/i)) {
    fragments['month'] = num;
  } else if (match[2].match(/jaar/i)) {
    fragments['year'] = num;
  }

  return fragments;
}

/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

var options = exports.options = __webpack_require__(13);

exports.parser = __webpack_require__(1);
exports.refiner = __webpack_require__(3);
exports.Parser = exports.parser.Parser;
exports.Refiner = exports.refiner.Refiner;
exports.Filter = exports.refiner.Filter;
exports.ParsedResult = __webpack_require__(0).ParsedResult;
exports.ParsedComponents = __webpack_require__(0).ParsedComponents;

var Chrono = function Chrono(option) {
  option = option || exports.options.casualOption();
  this.parsers = new Object(option.parsers);
  this.refiners = new Object(option.refiners);
};

Chrono.prototype.parse = function (text, refDate, opt) {
  refDate = refDate || new Date();
  opt = opt || {};
  opt.forwardDate = opt.forwardDate || opt.forwardDate;
  var allResults = [];
  this.parsers.forEach(function (parser) {
    var results = parser.execute(text, refDate, opt);
    allResults = allResults.concat(results);
  });
  allResults.sort(function (a, b) {
    return a.index - b.index;
  });
  this.refiners.forEach(function (refiner) {
    allResults = refiner.refine(text, allResults, opt);
  });
  return allResults;
};

Chrono.prototype.parseDate = function (text, refDate, opt) {
  var results = this.parse(text, refDate, opt);

  if (results.length > 0) {
    return results[0].start.date();
  }

  return null;
};

exports.Chrono = Chrono;
exports.strict = new Chrono(options.strictOption());
exports.casual = new Chrono(options.casualOption());
exports.en = new Chrono(options.mergeOptions([options.en.casual, options.commonPostProcessing]));
exports.en_GB = new Chrono(options.mergeOptions([options.en_GB.casual, options.commonPostProcessing]));
exports.de = new Chrono(options.mergeOptions([options.de.casual, options.en, options.commonPostProcessing]));
exports.nl = new Chrono(options.mergeOptions([options.nl.casual, options.en, options.commonPostProcessing]));
exports.pt = new Chrono(options.mergeOptions([options.pt.casual, options.en, options.commonPostProcessing]));
exports.es = new Chrono(options.mergeOptions([options.es.casual, options.en, options.commonPostProcessing]));
exports.fr = new Chrono(options.mergeOptions([options.fr.casual, options.en, options.commonPostProcessing]));
exports.ja = new Chrono(options.mergeOptions([options.ja.casual, options.en, options.commonPostProcessing]));

exports.parse = function () {
  return exports.casual.parse.apply(exports.casual, arguments);
};

exports.parseDate = function () {
  return exports.casual.parseDate.apply(exports.casual, arguments);
};

/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {

var parser = __webpack_require__(1);

var refiner = __webpack_require__(3);

exports.mergeOptions = function (options) {
  var addedTypes = {};
  var mergedOption = {
    parsers: [],
    refiners: []
  };
  options.forEach(function (option) {
    if (option.call) {
      option = option.call();
    }

    if (option.parsers) {
      option.parsers.forEach(function (p) {
        if (!addedTypes[p.constructor]) {
          mergedOption.parsers.push(p);
          addedTypes[p.constructor] = true;
        }
      });
    }

    if (option.refiners) {
      option.refiners.forEach(function (r) {
        if (!addedTypes[r.constructor]) {
          mergedOption.refiners.push(r);
          addedTypes[r.constructor] = true;
        }
      });
    }
  });
  return mergedOption;
};

exports.commonPostProcessing = function () {
  return {
    refiners: [// These should be after all other refiners
    new refiner.ExtractTimezoneOffsetRefiner(), new refiner.ExtractTimezoneAbbrRefiner(), new refiner.UnlikelyFormatFilter()]
  };
}; // -------------------------------------------------------------


exports.strictOption = function () {
  var strictConfig = {
    strict: true
  };
  return exports.mergeOptions([exports.en(strictConfig), exports.de(strictConfig), exports.nl(strictConfig), exports.pt(strictConfig), exports.es(strictConfig), exports.fr(strictConfig), exports.ja(strictConfig), exports.zh, exports.commonPostProcessing]);
};

exports.casualOption = function () {
  return exports.mergeOptions([exports.en.casual, // Some German abbriviate overlap with common English
  exports.de({
    strict: true
  }), exports.nl, exports.pt, exports.es, exports.fr, exports.ja, exports.zh, exports.commonPostProcessing]);
}; // -------------------------------------------------------------


exports.de = function (config) {
  return {
    parsers: [new parser.DEDeadlineFormatParser(config), new parser.DEMonthNameLittleEndianParser(config), new parser.DEMonthNameParser(config), new parser.DESlashDateFormatParser(config), new parser.DETimeAgoFormatParser(config), new parser.DETimeExpressionParser(config)],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner(), new refiner.DEMergeDateTimeRefiner(), new refiner.DEMergeDateRangeRefiner()]
  };
};

exports.de.casual = function () {
  var option = exports.de({
    strict: false
  });
  option.parsers.unshift(new parser.DECasualDateParser());
  option.parsers.unshift(new parser.DEWeekdayParser());
  return option;
}; // -------------------------------------------------------------


exports.nl = function (config) {
  return {
    parsers: [new parser.NLMonthNameLittleEndianParser(config), new parser.NLMonthNameParser(config), new parser.NLSlashDateFormatParser(config), new parser.NLTimeExpressionParser(config)],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner(), new refiner.NLMergeDateTimeRefiner(), new refiner.NLMergeDateRangeRefiner()]
  };
};

exports.nl.casual = function () {
  var option = exports.nl({
    strict: false
  });
  option.parsers.unshift(new parser.NLCasualDateParser());
  option.parsers.unshift(new parser.NLCasualTimeParser());
  option.parsers.unshift(new parser.NLWeekdayParser());
  return option;
}; // -------------------------------------------------------------


exports.en = function (config) {
  return {
    parsers: [new parser.ENISOFormatParser(config), new parser.ENDeadlineFormatParser(config), new parser.ENMonthNameLittleEndianParser(config), new parser.ENMonthNameMiddleEndianParser(config), new parser.ENMonthNameParser(config), new parser.ENSlashDateFormatParser(config), new parser.ENSlashDateFormatStartWithYearParser(config), new parser.ENSlashMonthFormatParser(config), new parser.ENTimeAgoFormatParser(config), new parser.ENTimeLaterFormatParser(config), new parser.ENTimeExpressionParser(config)],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner(), // English
    new refiner.ENMergeDateTimeRefiner(), new refiner.ENMergeDateRangeRefiner(), new refiner.ENPrioritizeSpecificDateRefiner()]
  };
};

exports.en.casual = function (config) {
  config = config || {};
  config.strict = false;
  var option = exports.en(config); // en

  option.parsers.unshift(new parser.ENCasualDateParser());
  option.parsers.unshift(new parser.ENCasualTimeParser());
  option.parsers.unshift(new parser.ENWeekdayParser());
  option.parsers.unshift(new parser.ENRelativeDateFormatParser());
  return option;
};

exports.en_GB = function (config) {
  config = config || {};
  config.littleEndian = true;
  return exports.en(config);
};

exports.en_GB.casual = function (config) {
  config = config || {};
  config.littleEndian = true;
  return exports.en.casual(config);
}; // -------------------------------------------------------------


exports.ja = function () {
  return {
    parsers: [new parser.JPStandardParser()],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner(), new refiner.JPMergeDateRangeRefiner()]
  };
};

exports.ja.casual = function () {
  var option = exports.ja();
  option.parsers.unshift(new parser.JPCasualDateParser());
  return option;
}; // -------------------------------------------------------------


exports.pt = function (config) {
  return {
    parsers: [new parser.PTTimeAgoFormatParser(config), new parser.PTDeadlineFormatParser(config), new parser.PTTimeExpressionParser(config), new parser.PTMonthNameLittleEndianParser(config), new parser.PTSlashDateFormatParser(config)],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner()]
  };
};

exports.pt.casual = function () {
  var option = exports.pt({
    strict: false
  });
  option.parsers.unshift(new parser.PTCasualDateParser());
  option.parsers.unshift(new parser.PTWeekdayParser());
  return option;
}; // -------------------------------------------------------------


exports.es = function (config) {
  return {
    parsers: [new parser.ESTimeAgoFormatParser(config), new parser.ESDeadlineFormatParser(config), new parser.ESTimeExpressionParser(config), new parser.ESMonthNameLittleEndianParser(config), new parser.ESSlashDateFormatParser(config)],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner()]
  };
};

exports.es.casual = function () {
  var option = exports.es({
    strict: false
  });
  option.parsers.unshift(new parser.ESCasualDateParser());
  option.parsers.unshift(new parser.ESWeekdayParser());
  return option;
}; // -------------------------------------------------------------


exports.fr = function (config) {
  return {
    parsers: [new parser.FRDeadlineFormatParser(config), new parser.FRMonthNameLittleEndianParser(config), new parser.FRSlashDateFormatParser(config), new parser.FRTimeAgoFormatParser(config), new parser.FRTimeExpressionParser(config)],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner(), new refiner.FRMergeDateRangeRefiner(), new refiner.FRMergeDateTimeRefiner()]
  };
};

exports.fr.casual = function () {
  var option = exports.fr({
    strict: false
  });
  option.parsers.unshift(new parser.FRCasualDateParser());
  option.parsers.unshift(new parser.FRWeekdayParser());
  option.parsers.unshift(new parser.FRRelativeDateFormatParser());
  return option;
}; // -------------------------------------------------------------


exports.zh = function () {
  return {
    parsers: [new parser.ZHHantDateParser(), new parser.ZHHantWeekdayParser(), new parser.ZHHantTimeExpressionParser(), new parser.ZHHantCasualDateParser(), new parser.ZHHantDeadlineFormatParser()],
    refiners: [new refiner.OverlapRemovalRefiner(), new refiner.ForwardDateRefiner()]
  };
};

/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

/*
    ISO 8601
    http://www.w3.org/TR/NOTE-datetime
    - YYYY-MM-DD
    - YYYY-MM-DDThh:mmTZD
    - YYYY-MM-DDThh:mm:ssTZD
    - YYYY-MM-DDThh:mm:ss.sTZD 
    - TZD = (Z or +hh:mm or -hh:mm)
*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)' + '([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})' + '(?:T' //..
+ '([0-9]{1,2}):([0-9]{1,2})' // hh:mm
+ '(?::([0-9]{1,2})(?:\\.(\\d{1,4}))?)?' // :ss.s
+ '(?:Z|([+-]\\d{2}):?(\\d{2})?)?' // TZD (Z or ±hh:mm or ±hhmm or ±hh)
+ ')?' //..
+ '(?=\\W|$)', 'i');
var YEAR_NUMBER_GROUP = 2;
var MONTH_NUMBER_GROUP = 3;
var DATE_NUMBER_GROUP = 4;
var HOUR_NUMBER_GROUP = 5;
var MINUTE_NUMBER_GROUP = 6;
var SECOND_NUMBER_GROUP = 7;
var MILLISECOND_NUMBER_GROUP = 8;
var TZD_HOUR_OFFSET_GROUP = 9;
var TZD_MINUTE_OFFSET_GROUP = 10;

exports.Parser = function ENISOFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    result.start.assign('year', parseInt(match[YEAR_NUMBER_GROUP]));
    result.start.assign('month', parseInt(match[MONTH_NUMBER_GROUP]));
    result.start.assign('day', parseInt(match[DATE_NUMBER_GROUP]));

    if (dayjs(result.start.get('month')) > 12 || dayjs(result.start.get('month')) < 1 || dayjs(result.start.get('day')) > 31 || dayjs(result.start.get('day')) < 1) {
      return null;
    }

    if (match[HOUR_NUMBER_GROUP] != null) {
      result.start.assign('hour', parseInt(match[HOUR_NUMBER_GROUP]));
      result.start.assign('minute', parseInt(match[MINUTE_NUMBER_GROUP]));

      if (match[SECOND_NUMBER_GROUP] != null) {
        result.start.assign('second', parseInt(match[SECOND_NUMBER_GROUP]));
      }

      if (match[MILLISECOND_NUMBER_GROUP] != null) {
        result.start.assign('millisecond', parseInt(match[MILLISECOND_NUMBER_GROUP]));
      }

      if (match[TZD_HOUR_OFFSET_GROUP] == null) {
        result.start.assign('timezoneOffset', 0);
      } else {
        var minuteOffset = 0;
        var hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]);
        if (match[TZD_MINUTE_OFFSET_GROUP] != null) minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]);
        var offset = hourOffset * 60;

        if (offset < 0) {
          offset -= minuteOffset;
        } else {
          offset += minuteOffset;
        }

        result.start.assign('timezoneOffset', offset);
      }
    }

    result.tags['ENISOFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('(\\W|^)' + '(within|in)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|an?(?:\\s*few)?|half(?:\\s*an?)?)\\s*' + '(seconds?|min(?:ute)?s?|hours?|days?|weeks?|months?|years?)\\s*' + '(?=\\W|$)', 'i');
var STRICT_PATTERN = new RegExp('(\\W|^)' + '(within|in)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|an?)\\s*' + '(seconds?|minutes?|hours?|days?)\\s*' + '(?=\\W|$)', 'i');

exports.Parser = function ENDeadlineFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return this.isStrictMode() ? STRICT_PATTERN : PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = match[3].toLowerCase();

    if (util.INTEGER_WORDS[num] !== undefined) {
      num = util.INTEGER_WORDS[num];
    } else if (num === 'a' || num === 'an') {
      num = 1;
    } else if (num.match(/few/i)) {
      num = 3;
    } else if (num.match(/half/i)) {
      num = 0.5;
    } else {
      num = parseInt(num);
    }

    var date = dayjs(ref);

    if (match[4].match(/day|week|month|year/i)) {
      if (match[4].match(/day/i)) {
        date = date.add(num, 'd');
      } else if (match[4].match(/week/i)) {
        date = date.add(num * 7, 'd');
      } else if (match[4].match(/month/i)) {
        date = date.add(num, 'month');
      } else if (match[4].match(/year/i)) {
        date = date.add(num, 'year');
      }

      result.start.imply('year', date.year());
      result.start.imply('month', date.month() + 1);
      result.start.imply('day', date.date());
      return result;
    }

    if (match[4].match(/hour/i)) {
      date = date.add(num, 'hour');
    } else if (match[4].match(/min/i)) {
      date = date.add(num, 'minute');
    } else if (match[4].match(/second/i)) {
      date = date.add(num, 'second');
    }

    result.start.imply('year', date.year());
    result.start.imply('month', date.month() + 1);
    result.start.imply('day', date.date());
    result.start.imply('hour', date.hour());
    result.start.imply('minute', date.minute());
    result.start.imply('second', date.second());
    result.tags['ENDeadlineFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('(\\W|^)' + '(this|next|last|past)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|few|half(?:\\s*an?)?)?\\s*' + '(seconds?|min(?:ute)?s?|hours?|days?|weeks?|months?|years?)(?=\\s*)' + '(?=\\W|$)', 'i');
var MODIFIER_WORD_GROUP = 2;
var MULTIPLIER_WORD_GROUP = 3;
var RELATIVE_WORD_GROUP = 4;

exports.Parser = function ENRelativeDateFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var modifier = match[MODIFIER_WORD_GROUP].toLowerCase().match(/^next/) ? 1 : -1;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    result.tags['ENRelativeDateFormatParser'] = true;
    var num = match[MULTIPLIER_WORD_GROUP] === undefined ? '' : match[3].toLowerCase();

    if (util.INTEGER_WORDS[num] !== undefined) {
      num = util.INTEGER_WORDS[num];
    } else if (num === '') {
      num = 1;
    } else if (num.match(/few/i)) {
      num = 3;
    } else if (num.match(/half/i)) {
      num = 0.5;
    } else {
      num = parseInt(num);
    }

    num *= modifier;
    var date = dayjs(ref);

    if (match[MODIFIER_WORD_GROUP].toLowerCase().match(/^this/)) {
      if (match[MULTIPLIER_WORD_GROUP]) {
        return null;
      }

      if (match[RELATIVE_WORD_GROUP].match(/day|week|month|year/i)) {
        // This week
        if (match[RELATIVE_WORD_GROUP].match(/week/i)) {
          date = date.add(-date.get('d'), 'd');
          result.start.imply('day', date.date());
          result.start.imply('month', date.month() + 1);
          result.start.imply('year', date.year());
        } // This month
        else if (match[RELATIVE_WORD_GROUP].match(/month/i)) {
            date = date.add(-date.date() + 1, 'd');
            result.start.imply('day', date.date());
            result.start.assign('year', date.year());
            result.start.assign('month', date.month() + 1);
          } // This year
          else if (match[RELATIVE_WORD_GROUP].match(/year/i)) {
              date = date.add(-date.date() + 1, 'd');
              date = date.add(-date.month(), 'month');
              result.start.imply('day', date.date());
              result.start.imply('month', date.month() + 1);
              result.start.assign('year', date.year());
            }

        return result;
      }
    }

    if (match[RELATIVE_WORD_GROUP].match(/day|week|month|year/i)) {
      if (match[RELATIVE_WORD_GROUP].match(/day/i)) {
        date = date.add(num, 'd');
        result.start.assign('year', date.year());
        result.start.assign('month', date.month() + 1);
        result.start.assign('day', date.date());
      } else if (match[RELATIVE_WORD_GROUP].match(/week/i)) {
        date = date.add(num * 7, 'd'); // We don't know the exact date for next/last week so we imply
        // them

        result.start.imply('day', date.date());
        result.start.imply('month', date.month() + 1);
        result.start.imply('year', date.year());
      } else if (match[RELATIVE_WORD_GROUP].match(/month/i)) {
        date = date.add(num, 'month'); // We don't know the exact day for next/last month

        result.start.imply('day', date.date());
        result.start.assign('year', date.year());
        result.start.assign('month', date.month() + 1);
      } else if (match[RELATIVE_WORD_GROUP].match(/year/i)) {
        date = date.add(num, 'year'); // We don't know the exact day for month on next/last year

        result.start.imply('day', date.date());
        result.start.imply('month', date.month() + 1);
        result.start.assign('year', date.year());
      }

      return result;
    }

    if (match[RELATIVE_WORD_GROUP].match(/hour/i)) {
      date = date.add(num, 'hour');
      result.start.imply('minute', date.minute());
      result.start.imply('second', date.second());
    } else if (match[RELATIVE_WORD_GROUP].match(/min/i)) {
      date = date.add(num, 'minute');
      result.start.assign('minute', date.minute());
      result.start.imply('second', date.second());
    } else if (match[RELATIVE_WORD_GROUP].match(/second/i)) {
      date = date.add(num, 'second');
      result.start.assign('second', date.second());
      result.start.assign('minute', date.minute());
    }

    result.start.assign('hour', date.hour());
    result.start.assign('year', date.year());
    result.start.assign('month', date.month() + 1);
    result.start.assign('day', date.date());
    return result;
  };
};

/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('(\\W|^)' + '(?:on\\s*?)?' + '(?:(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sun|Mon|Tue|Wed|Thu|Fri|Sat)\\s*,?\\s*)?' + '(([0-9]{1,2})(?:st|nd|rd|th)?|' + util.ORDINAL_WORDS_PATTERN + ')' + '(?:\\s*' + '(?:to|\\-|\\–|until|through|till|\\s)\\s*' + '(([0-9]{1,2})(?:st|nd|rd|th)?|' + util.ORDINAL_WORDS_PATTERN + ')' + ')?' + '(?:-|\/|\\s*(?:of)?\\s*)' + '(' + util.MONTH_PATTERN + ')' + '(?:' + '(?:-|\/|,?\\s*)' + '((?:' + '[1-9][0-9]{0,3}\\s*(?:BE|AD|BC)|' + '[1-2][0-9]{3}|' + '[5-9][0-9]' + ')(?![^\\s]\\d))' + ')?' + '(?=\\W|$)', 'i');
var WEEKDAY_GROUP = 2;
var DATE_GROUP = 3;
var DATE_NUM_GROUP = 4;
var DATE_TO_GROUP = 5;
var DATE_TO_NUM_GROUP = 6;
var MONTH_NAME_GROUP = 7;
var YEAR_GROUP = 8;

exports.Parser = function ENMonthNameLittleEndianParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = match[DATE_NUM_GROUP] ? parseInt(match[DATE_NUM_GROUP]) : util.ORDINAL_WORDS[match[DATE_GROUP].trim().replace('-', ' ').toLowerCase()];
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];

      if (/BE/i.test(year)) {
        // Buddhist Era
        year = year.replace(/BE/i, '');
        year = parseInt(year) - 543;
      } else if (/BC/i.test(year)) {
        // Before Christ
        year = year.replace(/BC/i, '');
        year = -parseInt(year);
      } else if (/AD/i.test(year)) {
        year = year.replace(/AD/i, '');
        year = parseInt(year);
      } else {
        year = parseInt(year);

        if (year < 100) {
          if (year > 50) {
            year = year + 1900;
          } else {
            year = year + 2000;
          }
        }
      }
    }

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Weekday component


    if (match[WEEKDAY_GROUP]) {
      var weekday = match[WEEKDAY_GROUP];
      weekday = util.WEEKDAY_OFFSET[weekday.toLowerCase()];
      result.start.assign('weekday', weekday);
    } // Text can be 'range' value. Such as '12 - 13 January 2012'


    if (match[DATE_TO_GROUP]) {
      var endDate = match[DATE_TO_NUM_GROUP] ? parseInt(match[DATE_TO_NUM_GROUP]) : util.ORDINAL_WORDS[match[DATE_TO_GROUP].trim().replace('-', ' ').toLowerCase()];
      result.end = result.start.clone();
      result.end.assign('day', endDate);
    }

    result.tags['ENMonthNameLittleEndianParser'] = true;
    return result;
  };
};

/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {

/*

    The parser for parsing US's date format that begin with month's name.

    EX.
        - January 13
        - January 13, 2012
        - January 13 - 15, 2012
        - Tuesday, January 13, 2012

    Watch out for:
        - January 12:00
        - January 12.44
        - January 1222344
*/
var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('(\\W|^)' + '(?:' + '(?:on\\s*?)?' + '(Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sun\\.?|Mon\\.?|Tue\\.?|Wed\\.?|Thu\\.?|Fri\\.?|Sat\\.?)' + '\\s*,?\\s*)?' + '(' + util.MONTH_PATTERN + ')' + '(?:-|\/|\\s*,?\\s*)' + '(([0-9]{1,2})(?:st|nd|rd|th)?|' + util.ORDINAL_WORDS_PATTERN + ')(?!\\s*(?:am|pm))\\s*' + '' + '(?:' + '(?:to|\\-)\\s*' + '(([0-9]{1,2})(?:st|nd|rd|th)?| ' + util.ORDINAL_WORDS_PATTERN + ')\\s*' + ')?' + '(?:' + '(?:-|\/|\\s*,?\\s*)' + '(?:([0-9]{4})\\s*(BE|AD|BC)?|([0-9]{1,4})\\s*(AD|BC))\\s*' + ')?' + '(?=\\W|$)(?!\\:\\d)', 'i');
var WEEKDAY_GROUP = 2;
var MONTH_NAME_GROUP = 3;
var DATE_GROUP = 4;
var DATE_NUM_GROUP = 5;
var DATE_TO_GROUP = 6;
var DATE_TO_NUM_GROUP = 7;
var YEAR_GROUP = 8;
var YEAR_BE_GROUP = 9;
var YEAR_GROUP2 = 10;
var YEAR_BE_GROUP2 = 11;

exports.Parser = function ENMonthNameMiddleEndianParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = match[DATE_NUM_GROUP] ? parseInt(match[DATE_NUM_GROUP]) : util.ORDINAL_WORDS[match[DATE_GROUP].trim().replace('-', ' ').toLowerCase()];
    var year = null;

    if (match[YEAR_GROUP] || match[YEAR_GROUP2]) {
      year = match[YEAR_GROUP] || match[YEAR_GROUP2];
      year = parseInt(year);
      var yearBE = match[YEAR_BE_GROUP] || match[YEAR_BE_GROUP2];

      if (yearBE) {
        if (/BE/i.test(yearBE)) {
          // Buddhist Era
          year = year - 543;
        } else if (/BC/i.test(yearBE)) {
          // Before Christ
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Weekday component


    if (match[WEEKDAY_GROUP]) {
      var weekday = match[WEEKDAY_GROUP];
      weekday = util.WEEKDAY_OFFSET[weekday.toLowerCase()];
      result.start.assign('weekday', weekday);
    } // Text can be 'range' value. Such as 'January 12 - 13, 2012'


    if (match[DATE_TO_GROUP]) {
      var endDate = match[DATE_TO_NUM_GROUP] ? endDate = parseInt(match[DATE_TO_NUM_GROUP]) : util.ORDINAL_WORDS[match[DATE_TO_GROUP].replace('-', ' ').trim().toLowerCase()];
      result.end = result.start.clone();
      result.end.assign('day', endDate);
    }

    result.tags['ENMonthNameMiddleEndianParser'] = true;
    return result;
  };
};

/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {

/*
    
    The parser for parsing month name and year.
    
    EX. 
        - January
        - January 2012
        - January, 2012
*/
var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('(^|\\D\\s+|[^\\w\\s])' + '(' + util.MONTH_PATTERN + ')' + '\\s*' + '(?:' + '[,-]?\\s*([0-9]{4})(\\s*BE|AD|BC)?' + ')?' + '(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)', 'i');
var MONTH_NAME_GROUP = 2;
var YEAR_GROUP = 3;
var YEAR_BE_GROUP = 4;

exports.Parser = function ENMonthNameParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var day = 1;
    var monthName = match[MONTH_NAME_GROUP];
    var month = util.MONTH_OFFSET[monthName.toLowerCase()];
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];
      year = parseInt(year);

      if (match[YEAR_BE_GROUP]) {
        if (match[YEAR_BE_GROUP].match(/BE/)) {
          // Buddhist Era
          year = year - 543;
        } else if (match[YEAR_BE_GROUP].match(/BC/)) {
          // Before Christ
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.imply('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.imply('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    }

    if (result.text.match(/^\w{3}$/)) {
      return false;
    }

    result.tags['ENMonthNameParser'] = true;
    return result;
  };
};

/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Date format with slash "/" (also "-" and ".") between numbers
    - Tuesday 11/3/2015 
    - 11/3/2015
    - 11/3

    By default the paser us "middle-endien" format (US English),
    then fallback to little-endian if failed.
    - 11/3/2015 = November 3rd, 2015
    - 23/4/2015 = April 23th, 2015

    If "littleEndian" config is set, the parser will try the little-endian first. 
    - 11/3/2015 = March 11th, 2015
*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)' + '(?:' + '(?:on\\s*?)?' + '((?:sun|mon|tues?|wed(?:nes)?|thu(?:rs?)?|fri|sat(?:ur)?)(?:day)?)' + '\\s*\\,?\\s*' + ')?' + '([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})' + '(?:' + '[\\/\\.\\-]' + '([0-9]{4}\s*\,?\s*|[0-9]{2}\s*\,?\s*)' + ')?' + '(\\W|$)', 'i');
var DAYS_OFFSET = {
  'sunday': 0,
  'sun': 0,
  'monday': 1,
  'mon': 1,
  'tuesday': 2,
  'wednesday': 3,
  'wed': 3,
  'thursday': 4,
  'thur': 4,
  'friday': 5,
  'fri': 5,
  'saturday': 6,
  'sat': 6
};
var OPENNING_GROUP = 1;
var ENDING_GROUP = 6;
var WEEKDAY_GROUP = 2;
var FIRST_NUMBERS_GROUP = 3;
var SECOND_NUMBERS_GROUP = 4;
var YEAR_GROUP = 5;

exports.Parser = function ENSlashDateFormatParser(config) {
  Parser.apply(this, arguments);
  config = config || {};
  var littleEndian = config.littleEndian;
  var MONTH_GROUP = littleEndian ? SECOND_NUMBERS_GROUP : FIRST_NUMBERS_GROUP;
  var DAY_GROUP = littleEndian ? FIRST_NUMBERS_GROUP : SECOND_NUMBERS_GROUP;

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match[OPENNING_GROUP] == '/' || match[ENDING_GROUP] == '/') {
      // Long skip, if there is some overlapping like:
      // XX[/YY/ZZ]
      // [XX/YY/]ZZ
      match.index += match[0].length;
      return;
    }

    var index = match.index + match[OPENNING_GROUP].length;
    var text = match[0].substr(match[OPENNING_GROUP].length, match[0].length - match[ENDING_GROUP].length);
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    if (text.match(/^\d\.\d$/)) return;
    if (text.match(/^\d\.\d{1,2}\.\d{1,2}$/)) return; // MM/dd -> OK
    // MM.dd -> NG

    if (!match[YEAR_GROUP] && match[0].indexOf('/') < 0) return;
    var date = null;
    var year = match[YEAR_GROUP] || dayjs(ref).year() + '';
    var month = match[MONTH_GROUP];
    var day = match[DAY_GROUP];
    month = parseInt(month);
    day = parseInt(day);
    year = parseInt(year);

    if (month < 1 || month > 12) {
      if (month > 12) {
        // dd/mm/yyyy date format if day looks like a month, and month
        // looks like a day.
        if (day >= 1 && day <= 12 && month >= 13 && month <= 31) {
          // unambiguous
          var tday = month;
          month = day;
          day = tday;
        } else {
          // both month and day are <= 12
          return null;
        }
      }
    }

    if (day < 1 || day > 31) return null;

    if (year < 100) {
      if (year > 50) {
        year = year + 1900;
      } else {
        year = year + 2000;
      }
    }

    result.start.assign('day', day);
    result.start.assign('month', month);

    if (match[YEAR_GROUP]) {
      result.start.assign('year', year);
    } else {
      result.start.imply('year', year);
    } //Day of week


    if (match[WEEKDAY_GROUP]) {
      result.start.assign('weekday', DAYS_OFFSET[match[WEEKDAY_GROUP].toLowerCase()]);
    }

    result.tags['ENSlashDateFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Date format with slash "/" between numbers like ENSlashDateFormatParser,
    but this parser expect year before month and date. 
    - YYYY/MM/DD
    - YYYY-MM-DD
    - YYYY.MM.DD
*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('(\\W|^)' + '([0-9]{4})[\\-\\.\\/]' + '((?:' + util.MONTH_PATTERN + '|[0-9]{1,2}))[\\-\\.\\/]' + '([0-9]{1,2})' + '(?=\\W|$)', 'i');
var YEAR_NUMBER_GROUP = 2;
var MONTH_NUMBER_GROUP = 3;
var DATE_NUMBER_GROUP = 4;

exports.Parser = function ENSlashDateFormatStartWithYearParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    var month = match[MONTH_NUMBER_GROUP].toLowerCase();
    month = util.MONTH_OFFSET[month] | month;
    result.start.assign('year', parseInt(match[YEAR_NUMBER_GROUP]));
    result.start.assign('month', parseInt(month));
    result.start.assign('day', parseInt(match[DATE_NUMBER_GROUP]));

    if (dayjs(result.start.get('month')) > 12 || dayjs(result.start.get('month')) < 1 || dayjs(result.start.get('day')) > 31 || dayjs(result.start.get('day')) < 1) {
      return null;
    }

    result.tags['ENDateFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Month/Year date format with slash "/" (also "-" and ".") between numbers 
    - 11/05
    - 06/2005
*/
var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(^|[^\\d/]\\s+|[^\\w\\s])' + '([0-9]|0[1-9]|1[012])/([0-9]{4})' + '(?=[^\\d/]|$)', 'i');
var OPENNING_GROUP = 1;
var MONTH_GROUP = 2;
var YEAR_GROUP = 3;

exports.Parser = function ENSlashMonthFormatParser(argument) {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[OPENNING_GROUP].length;
    var text = match[0].substr(match[OPENNING_GROUP].length, match[0].length).trim();
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    var year = match[YEAR_GROUP];
    var month = match[MONTH_GROUP];
    var day = 1;
    month = parseInt(month);
    year = parseInt(year);
    result.start.imply('day', day);
    result.start.assign('month', month);
    result.start.assign('year', year);
    result.tags['ENSlashMonthFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('' + '(\\W|^)' + '(?:within\\s*)?' + '(' + util.TIME_UNIT_PATTERN + ')' + '(?:ago|before|earlier)(?=(?:\\W|$))', 'i');
var STRICT_PATTERN = new RegExp('' + '(\\W|^)' + '(?:within\\s*)?' + '(' + util.TIME_UNIT_STRICT_PATTERN + ')' + 'ago(?=(?:\\W|$))', 'i');

exports.Parser = function ENTimeAgoFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return this.isStrictMode() ? STRICT_PATTERN : PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var fragments = util.extractDateTimeUnitFragments(match[2]);
    var date = dayjs(ref);

    for (var key in fragments) {
      date = date.add(-fragments[key], key);
    }

    if (fragments['hour'] > 0 || fragments['minute'] > 0 || fragments['second'] > 0) {
      result.start.assign('hour', date.hour());
      result.start.assign('minute', date.minute());
      result.start.assign('second', date.second());
      result.tags['ENTimeAgoFormatParser'] = true;
    }

    if (fragments['d'] > 0 || fragments['month'] > 0 || fragments['year'] > 0) {
      result.start.assign('day', date.date());
      result.start.assign('month', date.month() + 1);
      result.start.assign('year', date.year());
    } else {
      if (fragments['week'] > 0) {
        result.start.imply('weekday', date.day());
      }

      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
    }

    return result;
  };
};

/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var ParsedComponents = __webpack_require__(0).ParsedComponents;

var FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:at|from)\\s*)??" + "(\\d{1,4}|noon|midnight)" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\:|\\:)(\\d{2})(?:\\.(\\d{1,6}))?" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?|O\\W*CLOCK))?" + "(?=\\W|$)", 'i');
var SECOND_REG_PATTERN = new RegExp("^\\s*" + "(\\-|\\–|\\~|\\〜|to|\\?)\\s*" + "(\\d{1,4})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})(?:\\.(\\d{1,6}))?" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?|O\\W*CLOCK))?" + "(?=\\W|$)", 'i');
var HOUR_GROUP = 2;
var MINUTE_GROUP = 3;
var SECOND_GROUP = 4;
var MILLI_SECOND_GROUP = 5;
var AM_PM_HOUR_GROUP = 6;

exports.Parser = function ENTimeExpressionParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return FIRST_REG_PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    // This pattern can be overlapped Ex. [12] AM, 1[2] AM
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var refMoment = dayjs(ref);
    var result = new ParsedResult();
    result.ref = ref;
    result.index = match.index + match[1].length;
    result.text = match[0].substring(match[1].length);
    result.tags['ENTimeExpressionParser'] = true;
    result.start.imply('day', refMoment.date());
    result.start.imply('month', refMoment.month() + 1);
    result.start.imply('year', refMoment.year());
    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Millisecond

    if (match[MILLI_SECOND_GROUP] != null) {
      var millisecond = parseInt(match[MILLI_SECOND_GROUP].substring(0, 3));
      if (millisecond >= 1000) return null;
      result.start.assign('millisecond', millisecond);
    } // ----- Second


    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.start.assign('second', second);
    } // ----- Hours


    if (match[HOUR_GROUP].toLowerCase() == "noon") {
      meridiem = 1;
      hour = 12;
    } else if (match[HOUR_GROUP].toLowerCase() == "midnight") {
      meridiem = 0;
      hour = 0;
    } else {
      hour = parseInt(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM  


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;
        if (hour == 12) hour = 0;
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.start.assign('hour', hour);
    result.start.assign('minute', minute);

    if (meridiem >= 0) {
      result.start.assign('meridiem', meridiem);
    } else {
      if (hour < 12) {
        result.start.imply('meridiem', 0);
      } else {
        result.start.imply('meridiem', 1);
      }
    } // ==============================================================
    //                  Extracting the 'to' chunk
    // ==============================================================


    match = SECOND_REG_PATTERN.exec(text.substring(result.index + result.text.length));

    if (!match) {
      return result;
    } // Pattern "YY.YY -XXXX" is more like timezone offset


    if (match[0].match(/^\s*(\+|\-)\s*\d{3,4}$/)) {
      return result;
    }

    if (result.end == null) {
      result.end = new ParsedComponents(null, result.start.date());
    }

    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Millisecond

    if (match[MILLI_SECOND_GROUP] != null) {
      var millisecond = parseInt(match[MILLI_SECOND_GROUP].substring(0, 3));
      if (millisecond >= 1000) return null;
      result.end.assign('millisecond', millisecond);
    } // ----- Second


    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.end.assign('second', second);
    }

    hour = parseInt(match[2]); // ----- Minute

    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
      if (minute >= 60) return result;
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM 


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;

        if (hour == 12) {
          hour = 0;

          if (!result.end.isCertain('day')) {
            result.end.imply('day', result.end.get('day') + 1);
          }
        }
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }

      if (!result.start.isCertain('meridiem')) {
        if (meridiem == 0) {
          result.start.imply('meridiem', 0);

          if (result.start.get('hour') == 12) {
            result.start.assign('hour', 0);
          }
        } else {
          result.start.imply('meridiem', 1);

          if (result.start.get('hour') != 12) {
            result.start.assign('hour', result.start.get('hour') + 12);
          }
        }
      }
    }

    result.text = result.text + match[0];
    result.end.assign('hour', hour);
    result.end.assign('minute', minute);

    if (meridiem >= 0) {
      result.end.assign('meridiem', meridiem);
    } else {
      var startAtPM = result.start.isCertain('meridiem') && result.start.get('meridiem') == 1;

      if (startAtPM && result.start.get('hour') > hour) {
        // 10pm - 1 (am)
        result.end.imply('meridiem', 0);
      } else if (hour > 12) {
        result.end.imply('meridiem', 1);
      }
    }

    if (result.end.date().getTime() < result.start.date().getTime()) {
      result.end.imply('day', result.end.get('day') + 1);
    }

    return result;
  };
};

/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(4);

var PATTERN = new RegExp('' +
/*match[1]*/
'(\\W|^)' +
/*match[2]*/
'(in )?' +
/*match[3]*/
'(' + util.TIME_UNIT_PATTERN + ')' +
/*match[4]*/
'(later|after|from now|henceforth|forward|out)?' +
/*match[5]*/
'(?=(?:\\W|$))', 'i');
var STRICT_PATTERN = new RegExp('' +
/*match[1]*/
'(\\W|^)' +
/*match[2]*/
'(in )?' +
/*match[3]*/
'(' + util.TIME_UNIT_STRICT_PATTERN + ')' +
/*match[4]*/
'(later|from now)?' +
/*match[5]*/
'(?=(?:\\W|$))', 'i');

exports.Parser = function ENTimeLaterFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return this.isStrictMode() ? STRICT_PATTERN : PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var prefix = match[2];
    var suffix = match[4];
    if (!prefix && !suffix) return null;
    var preamble = match[1];
    var text = match[0].substr(preamble.length, match[0].length - preamble.length);
    var index = match.index + preamble.length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var fragments = util.extractDateTimeUnitFragments(match[3]);
    var date = dayjs(ref);

    for (var key in fragments) {
      date = date.add(fragments[key], key);
    }

    if (fragments['hour'] > 0 || fragments['minute'] > 0 || fragments['second'] > 0) {
      result.start.assign('hour', date.hour());
      result.start.assign('minute', date.minute());
      result.start.assign('second', date.second());
      result.tags['ENTimeAgoFormatParser'] = true;
    }

    if (fragments['d'] > 0 || fragments['month'] > 0 || fragments['year'] > 0) {
      result.start.assign('day', date.date());
      result.start.assign('month', date.month() + 1);
      result.start.assign('year', date.year());
    } else {
      if (fragments['week'] > 0) {
        result.start.imply('weekday', date.day());
      }

      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
    }

    return result;
  };
};

/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)(now|today|tonight|last\s*night|(?:tomorrow|tmr|yesterday)\s*|tomorrow|tmr|yesterday)(?=\W|$)/i;

exports.Parser = function ENCasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var startMoment = refMoment;
    var lowerText = text.toLowerCase();

    if (lowerText == 'tonight') {
      // Normally means this coming midnight
      result.start.imply('hour', 22);
      result.start.imply('meridiem', 1);
    } else if (/^tomorrow|^tmr/.test(lowerText)) {
      // Check not "Tomorrow" on late night
      if (refMoment.hour() > 1) {
        startMoment = startMoment.add(1, 'day');
      }
    } else if (/^yesterday/.test(lowerText)) {
      startMoment = startMoment.add(-1, 'day');
    } else if (lowerText.match(/last\s*night/)) {
      result.start.imply('hour', 0);

      if (refMoment.hour() > 6) {
        startMoment = startMoment.add(-1, 'day');
      }
    } else if (lowerText.match("now")) {
      result.start.assign('hour', refMoment.hour());
      result.start.assign('minute', refMoment.minute());
      result.start.assign('second', refMoment.second());
      result.start.assign('millisecond', refMoment.millisecond());
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags['ENCasualDateParser'] = true;
    return result;
  };
};

/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)((this)?\s*(morning|afternoon|evening|noon|night))/i;
var TIME_MATCH = 4;

exports.Parser = function ENCasualTimeParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    if (!match[TIME_MATCH]) TIME_MATCH = 3;

    switch (match[TIME_MATCH].toLowerCase()) {
      case 'afternoon':
        result.start.imply('meridiem', 1);
        result.start.imply('hour', 15);
        break;

      case 'evening':
      case 'night':
        result.start.imply('meridiem', 1);
        result.start.imply('hour', 20);
        break;

      case 'morning':
        result.start.imply('meridiem', 0);
        result.start.imply('hour', 6);
        break;

      case 'noon':
        result.start.imply('meridiem', 0);
        result.start.imply('hour', 12);
        break;
    }

    result.tags['ENCasualTimeParser'] = true;
    return result;
  };
};

/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(29);

var PATTERN = /(?:(同|今|本|((昭和|平成|令和)?([0-90-9]{1,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i;
var SPECIAL_YEAR_GROUP = 1;
var TYPICAL_YEAR_GROUP = 2;
var ERA_GROUP = 3;
var YEAR_NUMBER_GROUP = 4;
var MONTH_GROUP = 5;
var DAY_GROUP = 6;

exports.Parser = function JPStandardParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0],
      index: match.index,
      ref: ref
    });
    var month = match[MONTH_GROUP];
    month = util.toHankaku(month);
    month = parseInt(month);
    var day = match[DAY_GROUP];
    day = util.toHankaku(day);
    day = parseInt(day);
    result.start.assign('day', day);
    result.start.assign('month', month);

    if (match[TYPICAL_YEAR_GROUP]) {
      var year = match[YEAR_NUMBER_GROUP];

      if (year == '元') {
        year = 1;
      } else {
        year = util.toHankaku(year);
        year = parseInt(year);
      }

      if (match[ERA_GROUP] == '令和') {
        year += 2018;
      } else if (match[ERA_GROUP] == '平成') {
        year += 1988;
      } else if (match[ERA_GROUP] == '昭和') {
        year += 1925;
      }

      result.start.assign('year', year);
    } else if (match[SPECIAL_YEAR_GROUP] && match[SPECIAL_YEAR_GROUP].match('同|今|本')) {
      var moment = dayjs(ref);
      result.start.assign('year', moment.year());
    } else {
      var _year = parser.findYearClosestToRef(ref, day, month);

      result.start.imply('year', _year);
    }

    result.tags['JPStandardParser'] = true;
    return result;
  };
};

/***/ }),
/* 29 */
/***/ (function(module, exports) {

/**
 * to-hankaku.js
 * convert to ascii code strings.
 *
 * @version 1.0.1
 * @author think49
 * @url https://gist.github.com/964592
 * @license http://www.opensource.org/licenses/mit-license.php (The MIT License)
 */
exports.toHankaku = function (String, fromCharCode) {
  function toHankaku(string) {
    return String(string).replace(/\u2019/g, "'").replace(/\u201D/g, "\"").replace(/\u3000/g, " ").replace(/\uFFE5/g, "\xA5").replace(/[\uFF01\uFF03-\uFF06\uFF08\uFF09\uFF0C-\uFF19\uFF1C-\uFF1F\uFF21-\uFF3B\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5E]/g, alphaNum);
  }

  function alphaNum(token) {
    return fromCharCode(token.charCodeAt(0) - 65248);
  }

  return toHankaku;
}(String, String.fromCharCode);
/**
 * to-zenkaku.js
 * convert to multi byte strings.
 *
 * @version 1.0.2
 * @author think49
 * @url https://gist.github.com/964592
 * @license http://www.opensource.org/licenses/mit-license.php (The MIT License)
 */


exports.toZenkaku = function (String, fromCharCode) {
  function toZenkaku(string) {
    return String(string).replace(/\u0020/g, "\u3000").replace(/\u0022/g, "\u201D").replace(/\u0027/g, "\u2019").replace(/\u00A5/g, "\uFFE5").replace(/[!#-&(),-9\u003C-?A-[\u005D_a-{}~]/g, alphaNum);
  }

  function alphaNum(token) {
    return fromCharCode(token.charCodeAt(0) + 65248);
  }

  return toZenkaku;
}(String, String.fromCharCode);

/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i;

exports.Parser = function JPCasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index;
    var text = match[0];
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var startMoment = refMoment;

    if (text == '今夜' || text == '今夕' || text == '今晩') {
      // Normally means this coming midnight 
      result.start.imply('hour', 22);
      result.start.imply('meridiem', 1);
    } else if (text == '明日') {
      // Check not "Tomorrow" on late night
      if (refMoment.hour() > 4) {
        startMoment = startMoment.add(1, 'day');
      }
    } else if (text == '昨日') {
      startMoment = startMoment.add(-1, 'day');
    } else if (text.match("今朝")) {
      result.start.imply('hour', 6);
      result.start.imply('meridiem', 0);
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags['JPCasualDateParser'] = true;
    return result;
  };
};

/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;
/*
  Valid patterns:
  - esta manhã -> today in the morning
  - esta tarde -> today in the afternoon/evening
  - esta noite -> tonight
  - ontem de -> yesterday in the morning
  - ontem a tarde -> yesterday in the afternoon/evening
  - ontem a noite -> yesterday at night
  - amanhã de manhã -> tomorrow in the morning
  - amanhã a tarde -> tomorrow in the afternoon/evening
  - amanhã a noite -> tomorrow at night
  - hoje -> today
  - ontem -> yesterday
  - amanhã -> tomorrow
 */


var PATTERN = /(\W|^)(agora|esta\s*(manhã|tarde|noite)|(ontem|amanhã)\s*(de|à)\s*(manhã|tarde|noite)|hoje|amanhã|ontem|noite)(?=\W|$)/i;

exports.Parser = function PTCasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var startMoment = refMoment;
    var lowerText = text.toLowerCase().replace(/\s+/g, ' ');

    if (lowerText == 'amanhã') {
      // Check not "Tomorrow" on late night
      if (refMoment.hour() > 1) {
        startMoment = startMoment.add(1, 'day');
      }
    } else if (lowerText == 'ontem') {
      startMoment = startMoment.add(-1, 'day');
    } else if (lowerText == 'noite') {
      result.start.imply('hour', 0);

      if (refMoment.hour() > 6) {
        startMoment = startMoment.add(-1, 'day');
      }
    } else if (lowerText.match("esta")) {
      var secondMatch = match[3].toLowerCase();

      if (secondMatch == "tarde") {
        result.start.imply('hour', 18);
      } else if (secondMatch == "manhã") {
        result.start.imply('hour', 6);
      } else if (secondMatch == "noite") {
        // Normally means this coming midnight
        result.start.imply('hour', 22);
        result.start.imply('meridiem', 1);
      }
    } else if (lowerText.match(/de|à/)) {
      var firstMatch = match[4].toLowerCase();

      if (firstMatch === 'ontem') {
        startMoment = startMoment.add(-1, 'day');
      } else if (firstMatch === 'amanhã') {
        startMoment = startMoment.add(1, 'day');
      }

      var secondMatch = match[6].toLowerCase();

      if (secondMatch == "tarde") {
        result.start.imply('hour', 18);
      } else if (secondMatch == "manhã") {
        result.start.imply('hour', 9);
      } else if (secondMatch == "noite") {
        // Normally means this coming midnight
        result.start.imply('hour', 22);
        result.start.imply('meridiem', 1);
      }
    } else if (lowerText.match("agora")) {
      result.start.imply('hour', refMoment.hour());
      result.start.imply('minute', refMoment.minute());
      result.start.imply('second', refMoment.second());
      result.start.imply('millisecond', refMoment.millisecond());
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags['PTCasualDateParser'] = true;
    return result;
  };
};

/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)(dentro\s*de|em|em*até)\s*([0-9]+|mei[oa]|uma?)\s*(minutos?|horas?|dias?)\s*(?=(?:\W|$))/i;

exports.Parser = function PTDeadlineFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = parseInt(match[3]);

    if (isNaN(num)) {
      if (match[3].match(/(meio|meia)/)) {
        num = 0.5;
      } else {
        num = 1;
      }
    }

    var date = dayjs(ref);

    if (match[4].match(/dia/)) {
      date = date.add(num, 'd');
      result.start.assign('year', date.year());
      result.start.assign('month', date.month() + 1);
      result.start.assign('day', date.date());
      return result;
    }

    if (match[4].match(/hora/)) {
      date = date.add(num, 'hour');
    } else if (match[4].match(/minuto/)) {
      date = date.add(num, 'minute');
    }

    result.start.imply('year', date.year());
    result.start.imply('month', date.month() + 1);
    result.start.imply('day', date.date());
    result.start.assign('hour', date.hour());
    result.start.assign('minute', date.minute());
    result.tags['PTDeadlineFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {

var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(34);

var DAYS_OFFSET = util.WEEKDAY_OFFSET;
var PATTERN = new RegExp('(\\W|^)' + '(?:(domingo|segunda|segunda-feira|terça|terça-feira|quarta|quarta-feira|quinta|quinta-feira|sexta|sexta-feira|sábado|sabado|dom|seg|ter|qua|qui|sex|sab)\\s*,?\\s*)?' + '([0-9]{1,2})(?:º|ª|°)?' + '(?:\\s*(?:desde|de|\\-|\\–|ao?|\\s)\\s*([0-9]{1,2})(?:º|ª|°)?)?\\s*(?:de)?\\s*' + '(Jan(?:eiro|\\.)?|Fev(?:ereiro|\\.)?|Mar(?:ço|\\.)?|Abr(?:il|\\.)?|Mai(?:o|\\.)?|Jun(?:ho|\\.)?|Jul(?:ho|\\.)?|Ago(?:sto|\\.)?|Set(?:embro|\\.)?|Out(?:ubro|\\.)?|Nov(?:embro|\\.)?|Dez(?:embro|\\.)?)' + '(?:\\s*(?:de?)?(\\s*[0-9]{1,4}(?![^\\s]\\d))(\\s*[ad]\\.?\\s*c\\.?|a\\.?\\s*d\\.?)?)?' + '(?=\\W|$)', 'i');
var WEEKDAY_GROUP = 2;
var DATE_GROUP = 3;
var DATE_TO_GROUP = 4;
var MONTH_NAME_GROUP = 5;
var YEAR_GROUP = 6;
var YEAR_BE_GROUP = 7;

exports.Parser = function PTMonthNameLittleEndianParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = match[DATE_GROUP];
    day = parseInt(day);
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];
      year = parseInt(year);

      if (match[YEAR_BE_GROUP]) {
        if (/a\.?\s*c\.?/i.test(match[YEAR_BE_GROUP])) {
          // antes de Cristo
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Weekday component


    if (match[WEEKDAY_GROUP]) {
      var weekday = match[WEEKDAY_GROUP];
      weekday = util.WEEKDAY_OFFSET[weekday.toLowerCase()];
      result.start.assign('weekday', weekday);
    } // Text can be 'range' value. Such as '12 - 13 January 2012'


    if (match[DATE_TO_GROUP]) {
      result.end = result.start.clone();
      result.end.assign('day', parseInt(match[DATE_TO_GROUP]));
    }

    result.tags['PTMonthNameLittleEndianParser'] = true;
    return result;
  };
};

/***/ }),
/* 34 */
/***/ (function(module, exports) {

exports.WEEKDAY_OFFSET = {
  'domingo': 0,
  'dom': 0,
  'segunda': 1,
  'segunda-feira': 1,
  'seg': 1,
  'terça': 2,
  'terca': 2,
  'terça-feira': 2,
  'terca-feira': 2,
  'ter': 2,
  'quarta': 3,
  'quarta-feira': 3,
  'qua': 3,
  'quinta': 4,
  'quinta-feira': 4,
  'qui': 4,
  'sexta': 5,
  'sexta-feira': 5,
  'sex': 5,
  'sábado': 6,
  'sabado': 6,
  'sab': 6
};
exports.MONTH_OFFSET = {
  'janeiro': 1,
  'jan': 1,
  'jan.': 1,
  'fevereiro': 2,
  'fev': 2,
  'fev.': 2,
  'março': 3,
  'mar': 3,
  'mar.': 3,
  'abril': 4,
  'abr': 4,
  'abr.': 4,
  'maio': 5,
  'mai': 5,
  'mai.': 5,
  'junho': 6,
  'jun': 6,
  'jun.': 6,
  'julho': 7,
  'jul': 7,
  'jul.': 7,
  'agosto': 8,
  'ago': 8,
  'ago.': 8,
  'setembro': 9,
  'set': 9,
  'set.': 9,
  'outubro': 10,
  'out': 10,
  'out.': 10,
  'novembro': 11,
  'nov': 11,
  'nov.': 11,
  'dezembro': 12,
  'dez': 12,
  'dez.': 12
};

/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Date format with slash "/" (also "-" and ".") between numbers
    - Martes 3/11/2015
    - 3/11/2015
    - 3/11
*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)' + '(?:' + '((?:domingo|dom|segunda|segunda-feira|seg|terça|terça-feira|ter|quarta|quarta-feira|qua|quinta|quinta-feira|qui|sexta|sexta-feira|sex|s[áa]bado|sab))' + '\\s*\\,?\\s*' + ')?' + '([0-1]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})' + '(?:' + '[\\/\\.\\-]' + '([0-9]{4}\s*\,?\s*|[0-9]{2}\s*\,?\s*)' + ')?' + '(\\W|$)', 'i');
var DAYS_OFFSET = {
  'domingo': 0,
  'dom': 0,
  'segunda': 1,
  'segunda-feira': 1,
  'seg': 1,
  'terça': 2,
  'terça-feira': 2,
  'ter': 2,
  'quarta': 3,
  'quarta-feira': 3,
  'qua': 3,
  'quinta': 4,
  'quinta-feira': 4,
  'qui': 4,
  'sexta': 5,
  'sexta-feira': 5,
  'sex': 5,
  'sábado': 6,
  'sabado': 6,
  'sab': 6
};
var OPENNING_GROUP = 1;
var ENDING_GROUP = 6; // in Spanish we use day/month/year

var WEEKDAY_GROUP = 2;
var MONTH_GROUP = 4;
var DAY_GROUP = 3;
var YEAR_GROUP = 5;

exports.Parser = function PTSlashDateFormatParser(argument) {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match[OPENNING_GROUP] == '/' || match[ENDING_GROUP] == '/') {
      // Long skip, if there is some overlapping like:
      // XX[/YY/ZZ]
      // [XX/YY/]ZZ
      match.index += match[0].length;
      return;
    }

    var index = match.index + match[OPENNING_GROUP].length;
    var text = match[0].substr(match[OPENNING_GROUP].length, match[0].length - match[ENDING_GROUP].length);
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    if (text.match(/^\d\.\d$/)) return;
    if (text.match(/^\d\.\d{1,2}\.\d{1,2}$/)) return; // MM/dd -> OK
    // MM.dd -> NG

    if (!match[YEAR_GROUP] && match[0].indexOf('/') < 0) return;
    var date = null;
    var year = match[YEAR_GROUP] || dayjs(ref).year() + '';
    var month = match[MONTH_GROUP];
    var day = match[DAY_GROUP];
    month = parseInt(month);
    day = parseInt(day);
    year = parseInt(year);

    if (month < 1 || month > 12) {
      if (month > 12) {
        // dd/mm/yyyy date format if day looks like a month, and month
        // looks like a day.
        if (day >= 1 && day <= 12 && month >= 13 && month <= 31) {
          // unambiguous
          var tday = month;
          month = day;
          day = tday;
        } else {
          // both month and day are <= 12
          return null;
        }
      }
    }

    if (day < 1 || day > 31) return null;

    if (year < 100) {
      if (year > 50) {
        year = year + 1900;
      } else {
        year = year + 2000;
      }
    }

    result.start.assign('day', day);
    result.start.assign('month', month);
    result.start.assign('year', year); //Day of week

    if (match[WEEKDAY_GROUP]) {
      result.start.assign('weekday', DAYS_OFFSET[match[WEEKDAY_GROUP].toLowerCase()]);
    }

    result.tags['PTSlashDateFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)há\s*([0-9]+|mei[oa]|uma?)\s*(minutos?|horas?|semanas?|dias?|mes(es)?|anos?)(?=(?:\W|$))/i;

exports.Parser = function PTTimeAgoFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = parseInt(match[2]);

    if (isNaN(num)) {
      if (match[2].match(/mei/)) {
        num = 0.5;
      } else {
        num = 1;
      }
    }

    var date = dayjs(ref);

    if (match[3].match(/hora/) || match[3].match(/minuto/)) {
      if (match[3].match(/hora/)) {
        date = date.add(-num, 'hour');
      } else if (match[3].match(/minuto/)) {
        date = date.add(-num, 'minute');
      }

      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.assign('hour', date.hour());
      result.start.assign('minute', date.minute());
      result.tags['PTTimeAgoFormatParser'] = true;
      return result;
    }

    if (match[3].match(/semana/)) {
      date = date.add(-num, 'week');
      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.imply('weekday', date.day());
      return result;
    }

    if (match[3].match(/dia/)) {
      date = date.add(-num, 'd');
    }

    if (match[3].match(/mes/)) {
      date = date.add(-num, 'month');
    }

    if (match[3].match(/ano/)) {
      date = date.add(-num, 'year');
    }

    result.start.assign('day', date.date());
    result.start.assign('month', date.month() + 1);
    result.start.assign('year', date.year());
    return result;
  };
};

/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var ParsedComponents = __webpack_require__(0).ParsedComponents;

var FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:ao?|às?|das|da|de|do)\\s*)?" + "(\\d{1,4}|meio-dia|meia-noite|meio dia|meia noite)" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\:|\\:)(\\d{2})" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?" + "(?=\\W|$)", 'i');
var SECOND_REG_PATTERN = new RegExp("^\\s*" + "(\\-|\\–|\\~|\\〜|a(?:o)?|\\?)\\s*" + "(\\d{1,4})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?" + "(?=\\W|$)", 'i');
var HOUR_GROUP = 2;
var MINUTE_GROUP = 3;
var SECOND_GROUP = 4;
var AM_PM_HOUR_GROUP = 5;

exports.Parser = function PTTimeExpressionParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return FIRST_REG_PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    // This pattern can be overlaped Ex. [12] AM, 1[2] AM
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var refMoment = dayjs(ref);
    var result = new ParsedResult();
    result.ref = ref;
    result.index = match.index + match[1].length;
    result.text = match[0].substring(match[1].length);
    result.tags['PTTimeExpressionParser'] = true;
    result.start.imply('day', refMoment.date());
    result.start.imply('month', refMoment.month() + 1);
    result.start.imply('year', refMoment.year());
    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.start.assign('second', second);
    } // ----- Hours


    if (match[HOUR_GROUP].toLowerCase().match(/meio\-di/)) {
      meridiem = 1;
      hour = 12;
    } else if (match[HOUR_GROUP].toLowerCase() == "meia-noite") {
      meridiem = 0;
      hour = 0;
    } else {
      hour = parseInt(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;
        if (hour == 12) hour = 0;
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.start.assign('hour', hour);
    result.start.assign('minute', minute);

    if (meridiem >= 0) {
      result.start.assign('meridiem', meridiem);
    } // ==============================================================
    //                  Extracting the 'to' chunk
    // ==============================================================


    match = SECOND_REG_PATTERN.exec(text.substring(result.index + result.text.length));

    if (!match) {
      // Not accept number only result
      if (result.text.match(/^\d+$/)) {
        return null;
      }

      return result;
    } // Pattern "YY.YY -XXXX" is more like timezone offset


    if (match[0].match(/^\s*(\+|\-)\s*\d{3,4}$/)) {
      return result;
    }

    if (result.end == null) {
      result.end = new ParsedComponents(null, result.start.date());
    }

    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.end.assign('second', second);
    }

    hour = parseInt(match[2]); // ----- Minute

    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
      if (minute >= 60) return result;
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;

      if (match[AM_PM_HOUR_GROUP][0].toLowerCase() == "a") {
        meridiem = 0;

        if (hour == 12) {
          hour = 0;

          if (!result.end.isCertain('day')) {
            result.end.imply('day', result.end.get('day') + 1);
          }
        }
      }

      if (match[AM_PM_HOUR_GROUP][0].toLowerCase() == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }

      if (!result.start.isCertain('meridiem')) {
        if (meridiem == 0) {
          result.start.imply('meridiem', 0);

          if (result.start.get('hour') == 12) {
            result.start.assign('hour', 0);
          }
        } else {
          result.start.imply('meridiem', 1);

          if (result.start.get('hour') != 12) {
            result.start.assign('hour', result.start.get('hour') + 12);
          }
        }
      }
    } else if (hour >= 12) {
      meridiem = 1;
    }

    result.text = result.text + match[0];
    result.end.assign('hour', hour);
    result.end.assign('minute', minute);

    if (meridiem >= 0) {
      result.end.assign('meridiem', meridiem);
    }

    if (result.end.date().getTime() < result.start.date().getTime()) {
      result.end.imply('day', result.end.get('day') + 1);
    }

    return result;
  };
};

/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var updateParsedComponent = __webpack_require__(6).updateParsedComponent;

var DAYS_OFFSET = {
  'domingo': 0,
  'dom': 0,
  'segunda': 1,
  'segunda-feira': 1,
  'seg': 1,
  'terça': 2,
  'terça-feira': 2,
  'ter': 2,
  'quarta': 3,
  'quarta-feira': 3,
  'qua': 3,
  'quinta': 4,
  'quinta-feira': 4,
  'qui': 4,
  'sexta': 5,
  'sexta-feira': 5,
  'sex': 5,
  'sábado': 6,
  'sabado': 6,
  'sab': 6
};
var PATTERN = new RegExp('(\\W|^)' + '(?:(?:\\,|\\(|\\()\\s*)?' + '(?:(este|esta|passado|pr[oó]ximo)\\s*)?' + '(' + Object.keys(DAYS_OFFSET).join('|') + ')' + '(?:\\s*(?:\\,|\\)|\\)))?' + '(?:\\s*(este|esta|passado|pr[óo]ximo)\\s*semana)?' + '(?=\\W|$)', 'i');
var PREFIX_GROUP = 2;
var WEEKDAY_GROUP = 3;
var POSTFIX_GROUP = 4;

exports.Parser = function PTWeekdayParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
    var offset = DAYS_OFFSET[dayOfWeek];
    if (offset === undefined) return null;
    var modifier = null;
    var prefix = match[PREFIX_GROUP];
    var postfix = match[POSTFIX_GROUP];

    if (prefix || postfix) {
      var norm = prefix || postfix;
      norm = norm.toLowerCase();

      if (norm == 'passado') {
        modifier = 'this';
      } else if (norm == 'próximo' || norm == 'proximo') {
        modifier = 'next';
      } else if (norm == 'este') {
        modifier = 'this';
      }
    }

    updateParsedComponent(result, ref, offset, modifier);
    result.tags['PTWeekdayParser'] = true;
    return result;
  };
};

/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;
/*
  Valid patterns:
  - esta mañana -> today in the morning
  - esta tarde -> today in the afternoon/evening
  - esta noche -> tonight
  - ayer por la mañana -> yesterday in the morning
  - ayer por la tarde -> yesterday in the afternoon/evening
  - ayer por la noche -> yesterday at night
  - mañana por la mañana -> tomorrow in the morning
  - mañana por la tarde -> tomorrow in the afternoon/evening
  - mañana por la noche -> tomorrow at night
  - anoche -> tomorrow at night
  - hoy -> today
  - ayer -> yesterday
  - mañana -> tomorrow
 */


var PATTERN = /(\W|^)(ahora|esta\s*(mañana|tarde|noche)|(ayer|mañana)\s*por\s*la\s*(mañana|tarde|noche)|hoy|mañana|ayer|anoche)(?=\W|$)/i;

exports.Parser = function ESCasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var startMoment = refMoment;
    var lowerText = text.toLowerCase().replace(/\s+/g, ' ');

    if (lowerText == 'mañana') {
      // Check not "Tomorrow" on late night
      if (refMoment.hour() > 1) {
        startMoment = startMoment.add(1, 'day');
      }
    } else if (lowerText == 'ayer') {
      startMoment = startMoment.add(-1, 'day');
    } else if (lowerText == 'anoche') {
      result.start.imply('hour', 0);

      if (refMoment.hour() > 6) {
        startMoment = startMoment.add(-1, 'day');
      }
    } else if (lowerText.match("esta")) {
      var secondMatch = match[3].toLowerCase();

      if (secondMatch == "tarde") {
        result.start.imply('hour', 18);
      } else if (secondMatch == "mañana") {
        result.start.imply('hour', 6);
      } else if (secondMatch == "noche") {
        // Normally means this coming midnight
        result.start.imply('hour', 22);
        result.start.imply('meridiem', 1);
      }
    } else if (lowerText.match(/por\s*la/)) {
      var firstMatch = match[4].toLowerCase();

      if (firstMatch === 'ayer') {
        startMoment = startMoment.add(-1, 'day');
      } else if (firstMatch === 'mañana') {
        startMoment = startMoment.add(1, 'day');
      }

      var secondMatch = match[5].toLowerCase();

      if (secondMatch == "tarde") {
        result.start.imply('hour', 18);
      } else if (secondMatch == "mañana") {
        result.start.imply('hour', 9);
      } else if (secondMatch == "noche") {
        // Normally means this coming midnight
        result.start.imply('hour', 22);
        result.start.imply('meridiem', 1);
      }
    } else if (lowerText.match("ahora")) {
      result.start.imply('hour', refMoment.hour());
      result.start.imply('minute', refMoment.minute());
      result.start.imply('second', refMoment.second());
      result.start.imply('millisecond', refMoment.millisecond());
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags['ESCasualDateParser'] = true;
    return result;
  };
};

/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)(dentro\s*de|en)\s*([0-9]+|medi[oa]|una?)\s*(minutos?|horas?|d[ií]as?)\s*(?=(?:\W|$))/i;

exports.Parser = function ESDeadlineFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = parseInt(match[3]);

    if (isNaN(num)) {
      if (match[3].match(/medi/)) {
        num = 0.5;
      } else {
        num = 1;
      }
    }

    var date = dayjs(ref);

    if (match[4].match(/d[ií]a/)) {
      date = date.add(num, 'd');
      result.start.assign('year', date.year());
      result.start.assign('month', date.month() + 1);
      result.start.assign('day', date.date());
      return result;
    }

    if (match[4].match(/hora/)) {
      date = date.add(num, 'hour');
    } else if (match[4].match(/minuto/)) {
      date = date.add(num, 'minute');
    }

    result.start.imply('year', date.year());
    result.start.imply('month', date.month() + 1);
    result.start.imply('day', date.date());
    result.start.assign('hour', date.hour());
    result.start.assign('minute', date.minute());
    result.tags['ESDeadlineFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)hace\s*([0-9]+|medi[oa]|una?)\s*(minutos?|horas?|semanas?|d[ií]as?|mes(es)?|años?)(?=(?:\W|$))/i;

exports.Parser = function ESTimeAgoFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = parseInt(match[2]);

    if (isNaN(num)) {
      if (match[2].match(/medi/)) {
        num = 0.5;
      } else {
        num = 1;
      }
    }

    var date = dayjs(ref);

    if (match[3].match(/hora/) || match[3].match(/minuto/)) {
      if (match[3].match(/hora/)) {
        date = date.add(-num, 'hour');
      } else if (match[3].match(/minuto/)) {
        date = date.add(-num, 'minute');
      }

      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.assign('hour', date.hour());
      result.start.assign('minute', date.minute());
      result.tags['ESTimeAgoFormatParser'] = true;
      return result;
    }

    if (match[3].match(/semana/)) {
      date = date.add(-num, 'week');
      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.imply('weekday', date.day());
      return result;
    }

    if (match[3].match(/d[ií]a/)) {
      date = date.add(-num, 'd');
    }

    if (match[3].match(/mes/)) {
      date = date.add(-num, 'month');
    }

    if (match[3].match(/año/)) {
      date = date.add(-num, 'year');
    }

    result.start.assign('day', date.date());
    result.start.assign('month', date.month() + 1);
    result.start.assign('year', date.year());
    return result;
  };
};

/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var ParsedComponents = __webpack_require__(0).ParsedComponents;

var FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:a las?|al?|desde|de)\\s*)?" + "(\\d{1,4}|mediod[ií]a|medianoche)" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\:|\\:)(\\d{2})" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?" + "(?=\\W|$)", 'i');
var SECOND_REG_PATTERN = new RegExp("^\\s*" + "(\\-|\\–|\\~|\\〜|a(?:\s*las)?|\\?)\\s*" + "(\\d{1,4})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?" + "(?=\\W|$)", 'i');
var HOUR_GROUP = 2;
var MINUTE_GROUP = 3;
var SECOND_GROUP = 4;
var AM_PM_HOUR_GROUP = 5;

exports.Parser = function ESTimeExpressionParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return FIRST_REG_PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    // This pattern can be overlaped Ex. [12] AM, 1[2] AM
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var refMoment = dayjs(ref);
    var result = new ParsedResult();
    result.ref = ref;
    result.index = match.index + match[1].length;
    result.text = match[0].substring(match[1].length);
    result.tags['ESTimeExpressionParser'] = true;
    result.start.imply('day', refMoment.date());
    result.start.imply('month', refMoment.month() + 1);
    result.start.imply('year', refMoment.year());
    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.start.assign('second', second);
    } // ----- Hours


    if (match[HOUR_GROUP].toLowerCase().match(/mediod/)) {
      meridiem = 1;
      hour = 12;
    } else if (match[HOUR_GROUP].toLowerCase() == "medianoche") {
      meridiem = 0;
      hour = 0;
    } else {
      hour = parseInt(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;
        if (hour == 12) hour = 0;
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.start.assign('hour', hour);
    result.start.assign('minute', minute);

    if (meridiem >= 0) {
      result.start.assign('meridiem', meridiem);
    } // ==============================================================
    //                  Extracting the 'to' chunk
    // ==============================================================


    match = SECOND_REG_PATTERN.exec(text.substring(result.index + result.text.length));

    if (!match) {
      // Not accept number only result
      if (result.text.match(/^\d+$/)) {
        return null;
      }

      return result;
    } // Pattern "YY.YY -XXXX" is more like timezone offset


    if (match[0].match(/^\s*(\+|\-)\s*\d{3,4}$/)) {
      return result;
    }

    if (result.end == null) {
      result.end = new ParsedComponents(null, result.start.date());
    }

    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.end.assign('second', second);
    }

    hour = parseInt(match[2]); // ----- Minute

    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
      if (minute >= 60) return result;
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;

      if (match[AM_PM_HOUR_GROUP][0].toLowerCase() == "a") {
        meridiem = 0;

        if (hour == 12) {
          hour = 0;

          if (!result.end.isCertain('day')) {
            result.end.imply('day', result.end.get('day') + 1);
          }
        }
      }

      if (match[AM_PM_HOUR_GROUP][0].toLowerCase() == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }

      if (!result.start.isCertain('meridiem')) {
        if (meridiem == 0) {
          result.start.imply('meridiem', 0);

          if (result.start.get('hour') == 12) {
            result.start.assign('hour', 0);
          }
        } else {
          result.start.imply('meridiem', 1);

          if (result.start.get('hour') != 12) {
            result.start.assign('hour', result.start.get('hour') + 12);
          }
        }
      }
    } else if (hour >= 12) {
      meridiem = 1;
    }

    result.text = result.text + match[0];
    result.end.assign('hour', hour);
    result.end.assign('minute', minute);

    if (meridiem >= 0) {
      result.end.assign('meridiem', meridiem);
    }

    if (result.end.date().getTime() < result.start.date().getTime()) {
      result.end.imply('day', result.end.get('day') + 1);
    }

    return result;
  };
};

/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var updateParsedComponent = __webpack_require__(6).updateParsedComponent;

var DAYS_OFFSET = {
  'domingo': 0,
  'dom': 0,
  'lunes': 1,
  'lun': 1,
  'martes': 2,
  'mar': 2,
  'miercoles': 3,
  'miércoles': 3,
  'mie': 3,
  'jueves': 4,
  'jue': 4,
  'viernes': 5,
  'vier': 5,
  'sabado': 6,
  'sábado': 6,
  'sab': 6
};
var PATTERN = new RegExp('(\\W|^)' + '(?:(?:\\,|\\(|\\()\\s*)?' + '(?:(este|pasado|pr[oó]ximo)\\s*)?' + '(' + Object.keys(DAYS_OFFSET).join('|') + ')' + '(?:\\s*(?:\\,|\\)|\\)))?' + '(?:\\s*(este|pasado|pr[óo]ximo)\\s*week)?' + '(?=\\W|$)', 'i');
var PREFIX_GROUP = 2;
var WEEKDAY_GROUP = 3;
var POSTFIX_GROUP = 4;

exports.Parser = function ESWeekdayParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
    var offset = DAYS_OFFSET[dayOfWeek];
    if (offset === undefined) return null;
    var modifier = null;
    var prefix = match[PREFIX_GROUP];
    var postfix = match[POSTFIX_GROUP];

    if (prefix || postfix) {
      var norm = prefix || postfix;
      norm = norm.toLowerCase();

      if (norm == 'pasado') {
        modifier = 'this';
      } else if (norm == 'próximo' || norm == 'proximo') {
        modifier = 'next';
      } else if (norm == 'este') {
        modifier = 'this';
      }
    }

    updateParsedComponent(result, ref, offset, modifier);
    result.tags['ESWeekdayParser'] = true;
    return result;
  };
};

/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {

var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(45);

var DAYS_OFFSET = util.WEEKDAY_OFFSET;
var PATTERN = new RegExp('(\\W|^)' + '(?:(Domingo|Lunes|Martes|Miércoles|Miercoles|Jueves|Viernes|Sábado|Sabado|Dom|Lun|Mar|Mie|Jue|Vie|Sab)\\s*,?\\s*)?' + '([0-9]{1,2})(?:º|ª|°)?' + '(?:\\s*(?:desde|de|\\-|\\–|al?|hasta|\\s)\\s*([0-9]{1,2})(?:º|ª|°)?)?\\s*(?:de)?\\s*' + '(Ene(?:ro|\\.)?|Feb(?:rero|\\.)?|Mar(?:zo|\\.)?|Abr(?:il|\\.)?|May(?:o|\\.)?|Jun(?:io|\\.)?|Jul(?:io|\\.)?|Ago(?:sto|\\.)?|Sep(?:tiembre|\\.)?|Set(?:iembre|\\.)?|Oct(?:ubre|\\.)?|Nov(?:iembre|\\.)?|Dic(?:iembre|\\.)?)' + '(?:\\s*(?:del?)?(\\s*[0-9]{1,4}(?![^\\s]\\d))(\\s*[ad]\\.?\\s*c\\.?|a\\.?\\s*d\\.?)?)?' + '(?=\\W|$)', 'i');
var WEEKDAY_GROUP = 2;
var DATE_GROUP = 3;
var DATE_TO_GROUP = 4;
var MONTH_NAME_GROUP = 5;
var YEAR_GROUP = 6;
var YEAR_BE_GROUP = 7;

exports.Parser = function ESMonthNameLittleEndianParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = match[DATE_GROUP];
    day = parseInt(day);
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];
      year = parseInt(year);

      if (match[YEAR_BE_GROUP]) {
        if (/a\.?\s*c\.?/i.test(match[YEAR_BE_GROUP])) {
          // antes de Cristo
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Weekday component


    if (match[WEEKDAY_GROUP]) {
      var weekday = match[WEEKDAY_GROUP];
      weekday = util.WEEKDAY_OFFSET[weekday.toLowerCase()];
      result.start.assign('weekday', weekday);
    } // Text can be 'range' value. Such as '12 - 13 January 2012'


    if (match[DATE_TO_GROUP]) {
      result.end = result.start.clone();
      result.end.assign('day', parseInt(match[DATE_TO_GROUP]));
    }

    result.tags['ESMonthNameLittleEndianParser'] = true;
    return result;
  };
};

/***/ }),
/* 45 */
/***/ (function(module, exports) {

exports.WEEKDAY_OFFSET = {
  'domingo': 0,
  'dom': 0,
  'lunes': 1,
  'lun': 1,
  'martes': 2,
  'mar': 2,
  'miércoles': 3,
  'miercoles': 3,
  'mie': 3,
  'jueves': 4,
  'jue': 4,
  'viernes': 5,
  'vie': 5,
  'sábado': 6,
  'sabado': 6,
  'sab': 6
};
exports.MONTH_OFFSET = {
  'enero': 1,
  'ene': 1,
  'ene.': 1,
  'febrero': 2,
  'feb': 2,
  'feb.': 2,
  'marzo': 3,
  'mar': 3,
  'mar.': 3,
  'abril': 4,
  'abr': 4,
  'abr.': 4,
  'mayo': 5,
  'may': 5,
  'may.': 5,
  'junio': 6,
  'jun': 6,
  'jun.': 6,
  'julio': 7,
  'jul': 7,
  'jul.': 7,
  'agosto': 8,
  'ago': 8,
  'ago.': 8,
  'septiembre': 9,
  'sep': 9,
  'sept': 9,
  'sep.': 9,
  'sept.': 9,
  'octubre': 10,
  'oct': 10,
  'oct.': 10,
  'noviembre': 11,
  'nov': 11,
  'nov.': 11,
  'diciembre': 12,
  'dic': 12,
  'dic.': 12
};

/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Date format with slash "/" (also "-" and ".") between numbers
    - Martes 3/11/2015
    - 3/11/2015
    - 3/11
*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)' + '(?:' + '((?:domingo|dom|lunes|lun|martes|mar|mi[ée]rcoles|mie|jueves|jue|viernes|vie|s[áa]bado|sab))' + '\\s*\\,?\\s*' + ')?' + '([0-1]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})' + '(?:' + '[\\/\\.\\-]' + '([0-9]{4}\s*\,?\s*|[0-9]{2}\s*\,?\s*)' + ')?' + '(\\W|$)', 'i');
var DAYS_OFFSET = {
  'domingo': 0,
  'dom': 0,
  'lunes': 1,
  'lun': 1,
  'martes': 2,
  'mar': 2,
  'miercoles': 3,
  'miércoles': 3,
  'mie': 3,
  'jueves': 4,
  'jue': 4,
  'viernes': 5,
  'vier': 5,
  'sábado': 6,
  'sabado': 6,
  'sab': 6
};
var OPENNING_GROUP = 1;
var ENDING_GROUP = 6; // in Spanish we use day/month/year

var WEEKDAY_GROUP = 2;
var MONTH_GROUP = 4;
var DAY_GROUP = 3;
var YEAR_GROUP = 5;

exports.Parser = function ESSlashDateFormatParser(argument) {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match[OPENNING_GROUP] == '/' || match[ENDING_GROUP] == '/') {
      // Long skip, if there is some overlapping like:
      // XX[/YY/ZZ]
      // [XX/YY/]ZZ
      match.index += match[0].length;
      return;
    }

    var index = match.index + match[OPENNING_GROUP].length;
    var text = match[0].substr(match[OPENNING_GROUP].length, match[0].length - match[ENDING_GROUP].length);
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    if (text.match(/^\d\.\d$/)) return;
    if (text.match(/^\d\.\d{1,2}\.\d{1,2}$/)) return; // MM/dd -> OK
    // MM.dd -> NG

    if (!match[YEAR_GROUP] && match[0].indexOf('/') < 0) return;
    var date = null;
    var year = match[YEAR_GROUP] || dayjs(ref).year() + '';
    var month = match[MONTH_GROUP];
    var day = match[DAY_GROUP];
    month = parseInt(month);
    day = parseInt(day);
    year = parseInt(year);

    if (month < 1 || month > 12) {
      if (month > 12) {
        // dd/mm/yyyy date format if day looks like a month, and month
        // looks like a day.
        if (day >= 1 && day <= 12 && month >= 13 && month <= 31) {
          // unambiguous
          var tday = month;
          month = day;
          day = tday;
        } else {
          // both month and day are <= 12
          return null;
        }
      }
    }

    if (day < 1 || day > 31) return null;

    if (year < 100) {
      if (year > 50) {
        year = year + 1900;
      } else {
        year = year + 2000;
      }
    }

    result.start.assign('day', day);
    result.start.assign('month', month);
    result.start.assign('year', year); //Day of week

    if (match[WEEKDAY_GROUP]) {
      result.start.assign('weekday', DAYS_OFFSET[match[WEEKDAY_GROUP].toLowerCase()]);
    }

    result.tags['ESSlashDateFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)(maintenant|aujourd'hui|ajd|cette\s*nuit|la\s*veille|(demain|hier)(\s*(matin|soir|aprem|après-midi))?|ce\s*(matin|soir)|cet\s*(après-midi|aprem))(?=\W|$)/i;

exports.Parser = function FRCasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var startMoment = refMoment;
    var lowerText = text.toLowerCase();

    if (lowerText.match(/demain/)) {
      // Check not "Tomorrow" on late night
      if (refMoment.hour() > 1) {
        startMoment = startMoment.add(1, 'day');
      }
    }

    if (lowerText.match(/hier/)) {
      startMoment = startMoment.add(-1, 'day');
    }

    if (lowerText.match(/cette\s*nuit/)) {
      // Normally means this coming midnight
      result.start.imply('hour', 22);
      result.start.imply('meridiem', 1);
    } else if (lowerText.match(/la\s*veille/)) {
      result.start.imply('hour', 0);

      if (refMoment.hour() > 6) {
        startMoment = startMoment.add(-1, 'day');
      }
    } else if (lowerText.match(/(après-midi|aprem)/)) {
      result.start.imply('hour', 14);
    } else if (lowerText.match(/(soir)/)) {
      result.start.imply('hour', 18);
    } else if (lowerText.match(/matin/)) {
      result.start.imply('hour', 8);
    } else if (lowerText.match("maintenant")) {
      result.start.imply('hour', refMoment.hour());
      result.start.imply('minute', refMoment.minute());
      result.start.imply('second', refMoment.second());
      result.start.imply('millisecond', refMoment.millisecond());
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags['FRCasualDateParser'] = true;
    return result;
  };
};

/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(10);

var PATTERN = new RegExp('(\\W|^)' + '(dans|en)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|une?|(?:\\s*quelques)?|demi(?:\\s*|-?)?)\\s*' + '(secondes?|min(?:ute)?s?|heures?|jours?|semaines?|mois|années?)\\s*' + '(?=\\W|$)', 'i');
var STRICT_PATTERN = new RegExp('(\\W|^)' + '(dans|en)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|un?)\\s*' + '(secondes?|minutes?|heures?|jours?)\\s*' + '(?=\\W|$)', 'i');

exports.Parser = function FRDeadlineFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return this.isStrictMode() ? STRICT_PATTERN : PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = match[3];

    if (util.INTEGER_WORDS[num] !== undefined) {
      num = util.INTEGER_WORDS[num];
    } else if (num === 'un' || num === 'une') {
      num = 1;
    } else if (num.match(/quelques?/i)) {
      num = 3;
    } else if (num.match(/demi-?/i)) {
      num = 0.5;
    } else {
      num = parseInt(num);
    }

    var date = dayjs(ref);

    if (match[4].match(/jour|semaine|mois|année/i)) {
      if (match[4].match(/jour/)) {
        date = date.add(num, 'd');
      } else if (match[4].match(/semaine/i)) {
        date = date.add(num * 7, 'd');
      } else if (match[4].match(/mois/i)) {
        date = date.add(num, 'month');
      } else if (match[4].match(/année/i)) {
        date = date.add(num, 'year');
      }

      result.start.assign('year', date.year());
      result.start.assign('month', date.month() + 1);
      result.start.assign('day', date.date());
      return result;
    }

    if (match[4].match(/heure/i)) {
      date = date.add(num, 'hour');
    } else if (match[4].match(/min/i)) {
      date = date.add(num, 'minutes');
    } else if (match[4].match(/secondes/i)) {
      date = date.add(num, 'second');
    }

    result.start.imply('year', date.year());
    result.start.imply('month', date.month() + 1);
    result.start.imply('day', date.date());
    result.start.assign('hour', date.hour());
    result.start.assign('minute', date.minute());
    result.start.assign('second', date.second());
    result.tags['FRDeadlineFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {

var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(10);

var DAYS_OFFSET = util.WEEKDAY_OFFSET;
var PATTERN = new RegExp('(\\W|^)' + '(?:(Dimanche|Lundi|Mardi|mercredi|Jeudi|Vendredi|Samedi|Dim|Lun|Mar|Mer|Jeu|Ven|Sam)\\s*,?\\s*)?' + '([0-9]{1,2}|1er)' + '(?:\\s*(?:au|\\-|\\–|jusqu\'au?|\\s)\\s*([0-9]{1,2})(?:er)?)?\\s*(?:de)?\\s*' + '(Jan(?:vier|\\.)?|F[ée]v(?:rier|\\.)?|Mars|Avr(?:il|\\.)?|Mai|Juin|Juil(?:let|\\.)?|Ao[uû]t|Sept(?:embre|\\.)?|Oct(?:obre|\\.)?|Nov(?:embre|\\.)?|d[ée]c(?:embre|\\.)?)' + '(?:\\s*(\\s*[0-9]{1,4}(?![^\\s]\\d))(?:\\s*(AC|[ap]\\.?\\s*c(?:h(?:r)?)?\\.?\\s*n\\.?))?)?' + '(?=\\W|$)', 'i');
var WEEKDAY_GROUP = 2;
var DATE_GROUP = 3;
var DATE_TO_GROUP = 4;
var MONTH_NAME_GROUP = 5;
var YEAR_GROUP = 6;
var YEAR_BE_GROUP = 7;

exports.Parser = function FRMonthNameLittleEndianParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = match[DATE_GROUP];
    day = parseInt(day);
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];
      year = parseInt(year);

      if (match[YEAR_BE_GROUP]) {
        if (/a/i.test(match[YEAR_BE_GROUP])) {
          // Ante Christe natum
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Weekday component


    if (match[WEEKDAY_GROUP]) {
      var weekday = match[WEEKDAY_GROUP];
      weekday = util.WEEKDAY_OFFSET[weekday.toLowerCase()];
      result.start.assign('weekday', weekday);
    } // Text can be 'range' value. Such as '12 - 13 janvier 2012'


    if (match[DATE_TO_GROUP]) {
      result.end = result.start.clone();
      result.end.assign('day', parseInt(match[DATE_TO_GROUP]));
    }

    result.tags['FRMonthNameLittleEndianParser'] = true;
    return result;
  };
};

/***/ }),
/* 50 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Date format with slash "/" (also "-" and ".") between numbers
    - Martes 3/11/2015
    - 3/11/2015
    - 3/11
*/
var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)' + '(?:' + '((?:dimanche|dim|lundi|lun|mardi|mar|mercredi|mer|jeudi|jeu|vendredi|ven|samedi|sam|le))' + '\\s*\\,?\\s*' + ')?' + '([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})' + '(?:' + '[\\/\\.\\-]' + '([0-9]{4}\s*\,?\s*|[0-9]{2}\s*\,?\s*)' + ')?' + '(\\W|$)', 'i');
var DAYS_OFFSET = {
  'dimanche': 0,
  'dim': 0,
  'lundi': 1,
  'lun': 1,
  'mardi': 2,
  'mar': 2,
  'mercredi': 3,
  'mer': 3,
  'jeudi': 4,
  'jeu': 4,
  'vendredi': 5,
  'ven': 5,
  'samedi': 6,
  'sam': 6
};
var OPENNING_GROUP = 1;
var ENDING_GROUP = 6; // In French we use day/month/year

var WEEKDAY_GROUP = 2;
var DAY_GROUP = 3;
var MONTH_GROUP = 4;
var YEAR_GROUP = 5;

exports.Parser = function FRSlashDateFormatParser(argument) {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match[OPENNING_GROUP] == '/' || match[ENDING_GROUP] == '/') {
      // Long skip, if there is some overlapping like:
      // XX[/YY/ZZ]
      // [XX/YY/]ZZ
      match.index += match[0].length;
      return;
    }

    var index = match.index + match[OPENNING_GROUP].length;
    var text = match[0].substr(match[OPENNING_GROUP].length, match[0].length - match[ENDING_GROUP].length);
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    if (text.match(/^\d\.\d$/)) return;
    if (text.match(/^\d\.\d{1,2}\.\d{1,2}$/)) return; // MM/dd -> OK
    // MM.dd -> NG

    if (!match[YEAR_GROUP] && match[0].indexOf('/') < 0) return;
    var date = null;
    var month = match[MONTH_GROUP];
    var day = match[DAY_GROUP];
    day = parseInt(day);
    month = parseInt(month);
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];
      year = parseInt(year);

      if (year < 100) {
        year = year + 2000;
      }
    }

    if (month < 1 || month > 12) {
      if (month > 12) {
        // dd/mm/yyyy date format if day looks like a month, and month looks like a day.
        if (day >= 1 && day <= 12 && month >= 13 && month <= 31) {
          // unambiguous
          var tday = month;
          month = day;
          day = tday;
        } else {
          // both month and day are <= 12
          return null;
        }
      }
    }

    if (day < 1 || day > 31) return null;

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Day of week


    if (match[WEEKDAY_GROUP]) {
      result.start.assign('weekday', DAYS_OFFSET[match[WEEKDAY_GROUP].toLowerCase()]);
    }

    result.tags['FRSlashDateFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)il y a\s*([0-9]+|une?)\s*(minutes?|heures?|semaines?|jours?|mois|années?|ans?)(?=(?:\W|$))/i;

exports.Parser = function FRTimeAgoFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    result.tags['FRTimeAgoFormatParser'] = true;
    var num = parseInt(match[2]);

    if (isNaN(num)) {
      if (match[2].match(/demi/)) {
        num = 0.5;
      } else {
        num = 1;
      }
    }

    var date = dayjs(ref);

    if (match[3].match(/heure/) || match[3].match(/minute/)) {
      if (match[3].match(/heure/)) {
        date = date.add(-num, 'hour');
      } else if (match[3].match(/minute/)) {
        date = date.add(-num, 'minute');
      }

      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.assign('hour', date.hour());
      result.start.assign('minute', date.minute());
      return result;
    }

    if (match[3].match(/semaine/)) {
      date = date.add(-num, 'week');
      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.imply('weekday', date.day());
      return result;
    }

    if (match[3].match(/jour/)) {
      date = date.add(-num, 'd');
    }

    if (match[3].match(/mois/)) {
      date = date.add(-num, 'month');
    }

    if (match[3].match(/années?|ans?/)) {
      date = date.add(-num, 'year');
    }

    result.start.assign('day', date.date());
    result.start.assign('month', date.month() + 1);
    result.start.assign('year', date.year());
    return result;
  };
};

/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var ParsedComponents = __webpack_require__(0).ParsedComponents;

var FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:[àa])\\s*)?" + "(\\d{1,2}(?:h)?|midi|minuit)" + "(?:" + "(?:\\.|\\:|\\:|h)(\\d{1,2})(?:m)?" + "(?:" + "(?:\\:|\\:|m)(\\d{0,2})(?:s)?" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?" + "(?=\\W|$)", 'i');
var SECOND_REG_PATTERN = new RegExp("^\\s*" + "(\\-|\\–|\\~|\\〜|[àa]|\\?)\\s*" + "(\\d{1,2}(?:h)?)" + "(?:" + "(?:\\.|\\:|\\:|h)(\\d{1,2})(?:m)?" + "(?:" + "(?:\\.|\\:|\\:|m)(\\d{1,2})(?:s)?" + ")?" + ")?" + "(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?" + "(?=\\W|$)", 'i');
var HOUR_GROUP = 2;
var MINUTE_GROUP = 3;
var SECOND_GROUP = 4;
var AM_PM_HOUR_GROUP = 5;

exports.Parser = function FRTimeExpressionParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return FIRST_REG_PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    // This pattern can be overlaped Ex. [12] AM, 1[2] AM
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var refMoment = dayjs(ref);
    var result = new ParsedResult();
    result.ref = ref;
    result.index = match.index + match[1].length;
    result.text = match[0].substring(match[1].length);
    result.tags['FRTimeExpressionParser'] = true;
    result.start.imply('day', refMoment.date());
    result.start.imply('month', refMoment.month() + 1);
    result.start.imply('year', refMoment.year());
    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.start.assign('second', second);
    } // ----- Hours


    if (match[HOUR_GROUP].toLowerCase() == "midi") {
      meridiem = 1;
      hour = 12;
    } else if (match[HOUR_GROUP].toLowerCase() == "minuit") {
      meridiem = 0;
      hour = 0;
    } else {
      hour = parseInt(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;
        if (hour == 12) hour = 0;
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.start.assign('hour', hour);
    result.start.assign('minute', minute);

    if (meridiem >= 0) {
      result.start.assign('meridiem', meridiem);
    } // ==============================================================
    //                  Extracting the 'to' chunk
    // ==============================================================


    match = SECOND_REG_PATTERN.exec(text.substring(result.index + result.text.length));

    if (!match) {
      // Not accept number only result
      if (result.text.match(/^\d+$/)) {
        return null;
      }

      return result;
    } // Pattern "YY.YY -XXXX" is more like timezone offset


    if (match[0].match(/^\s*(\+|\-)\s*\d{3,4}$/)) {
      return result;
    }

    if (result.end == null) {
      result.end = new ParsedComponents(null, result.start.date());
    }

    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.end.assign('second', second);
    }

    hour = parseInt(match[2]); // ----- Minute

    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
      if (minute >= 60) return result;
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;

        if (hour == 12) {
          hour = 0;

          if (!result.end.isCertain('day')) {
            result.end.imply('day', result.end.get('day') + 1);
          }
        }
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }

      if (!result.start.isCertain('meridiem')) {
        if (meridiem == 0) {
          result.start.imply('meridiem', 0);

          if (result.start.get('hour') == 12) {
            result.start.assign('hour', 0);
          }
        } else {
          result.start.imply('meridiem', 1);

          if (result.start.get('hour') != 12) {
            result.start.assign('hour', result.start.get('hour') + 12);
          }
        }
      }
    }

    result.text = result.text + match[0];
    result.end.assign('hour', hour);
    result.end.assign('minute', minute);

    if (meridiem >= 0) {
      result.end.assign('meridiem', meridiem);
    } else {
      var startAtPM = result.start.isCertain('meridiem') && result.start.get('meridiem') == 1;

      if (startAtPM && result.start.get('hour') > hour) {
        // 10pm - 1 (am)
        result.end.imply('meridiem', 0);
      } else if (hour > 12) {
        result.end.imply('meridiem', 1);
      }
    }

    if (result.end.date().getTime() < result.start.date().getTime()) {
      result.end.imply('day', result.end.get('day') + 1);
    }

    return result;
  };
};

/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var updateParsedComponent = __webpack_require__(6).updateParsedComponent;

var DAYS_OFFSET = {
  'dimanche': 0,
  'dim': 0,
  'lundi': 1,
  'lun': 1,
  'mardi': 2,
  'mar': 2,
  'mercredi': 3,
  'mer': 3,
  'jeudi': 4,
  'jeu': 4,
  'vendredi': 5,
  'ven': 5,
  'samedi': 6,
  'sam': 6
};
var PATTERN = new RegExp('(\\s|^)' + '(?:(?:\\,|\\(|\\()\\s*)?' + '(?:(ce)\\s*)?' + '(' + Object.keys(DAYS_OFFSET).join('|') + ')' + '(?:\\s*(?:\\,|\\)|\\)))?' + '(?:\\s*(dernier|prochain)\\s*)?' + '(?=\\W|$)', 'i');
var PREFIX_GROUP = 2;
var WEEKDAY_GROUP = 3;
var POSTFIX_GROUP = 4;

exports.Parser = function FRWeekdayParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
    var offset = DAYS_OFFSET[dayOfWeek];
    if (offset === undefined) return null;
    var modifier = null;
    var prefix = match[PREFIX_GROUP];
    var postfix = match[POSTFIX_GROUP];

    if (prefix || postfix) {
      var norm = prefix || postfix;
      norm = norm.toLowerCase();

      if (norm == 'dernier') {
        modifier = 'last';
      } else if (norm == 'prochain') {
        modifier = 'next';
      } else if (norm == 'ce') {
        modifier = 'this';
      }
    }

    updateParsedComponent(result, ref, offset, modifier);
    result.tags['FRWeekdayParser'] = true;
    return result;
  };
};

/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {

var quarterOfYear = __webpack_require__(55);

var dayjs = __webpack_require__(2);

dayjs.extend(quarterOfYear);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(10);

var PATTERN = new RegExp('(\\W|^)' + '(?:les?|la|l\'|du|des?)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|\\d+)?\\s*' + '(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?)?\\s*' + '(secondes?|min(?:ute)?s?|heures?|jours?|semaines?|mois|trimestres?|années?)\\s*' + '(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?)?' + '(?=\\W|$)', 'i');
var MULTIPLIER_GROUP = 2;
var MODIFIER_1_GROUP = 3;
var RELATIVE_WORD_GROUP = 4;
var MODIFIER_2_GROUP = 5;

exports.Parser = function FRRelativeDateFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length); // Multiplier

    var multiplier = match[MULTIPLIER_GROUP] === undefined ? '1' : match[MULTIPLIER_GROUP];

    if (util.INTEGER_WORDS[multiplier] !== undefined) {
      multiplier = util.INTEGER_WORDS[multiplier];
    } else {
      multiplier = parseInt(multiplier);
    } // Modifier


    var modifier = match[MODIFIER_1_GROUP] === undefined ? match[MODIFIER_2_GROUP] === undefined ? '' : match[MODIFIER_2_GROUP].toLowerCase() : match[MODIFIER_1_GROUP].toLowerCase();

    if (!modifier) {
      // At least one modifier is mandatory to match this parser
      return;
    }

    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    result.tags['FRRelativeDateFormatParser'] = true;
    var modifierFactor;

    switch (true) {
      case /prochaine?s?/.test(modifier):
      case /suivants?/.test(modifier):
        modifierFactor = 1;
        break;

      case /derni[eè]re?s?/.test(modifier):
      case /pass[ée]e?s?/.test(modifier):
      case /pr[ée]c[ée]dents?/.test(modifier):
        modifierFactor = -1;
        break;
    }

    var total = multiplier * modifierFactor;
    var dateFrom = dayjs(ref);
    var dateTo = dayjs(ref);
    var relative = match[RELATIVE_WORD_GROUP];
    var startOf;

    switch (true) {
      case /secondes?/.test(relative):
        dateFrom = dateFrom.add(total, 's');
        dateTo = dateTo.add(modifierFactor, 's');
        startOf = 'second';
        break;

      case /min(?:ute)?s?/.test(relative):
        dateFrom = dateFrom.add(total, 'm');
        dateTo = dateTo.add(modifierFactor, 'm');
        startOf = 'minute';
        break;

      case /heures?/.test(relative):
        dateFrom = dateFrom.add(total, 'h');
        dateTo = dateTo.add(modifierFactor, 'h');
        startOf = 'hour';
        break;

      case /jours?/.test(relative):
        dateFrom = dateFrom.add(total, 'd');
        dateTo = dateTo.add(modifierFactor, 'd');
        startOf = 'day';
        break;

      case /semaines?/.test(relative):
        dateFrom = dateFrom.add(total, 'w');
        dateTo = dateTo.add(modifierFactor, 'w');
        startOf = 'week';
        break;

      case /mois?/.test(relative):
        dateFrom = dateFrom.add(total, 'M');
        dateTo = dateTo.add(modifierFactor, 'M');
        startOf = 'month';
        break;

      case /trimestres?/.test(relative):
        dateFrom = dateFrom.add(total, 'Q');
        dateTo = dateTo.add(modifierFactor, 'Q');
        startOf = 'quarter';
        break;

      case /années?/.test(relative):
        dateFrom = dateFrom.add(total, 'y');
        dateTo = dateTo.add(modifierFactor, 'y');
        startOf = 'year';
        break;
    } // if we go forward, switch the start and end dates


    if (modifierFactor > 0) {
      var dateTmp = dateFrom;
      dateFrom = dateTo;
      dateTo = dateTmp;
    } // Get start and end of dates


    dateFrom = dateFrom.startOf(startOf);
    dateTo = dateTo.endOf(startOf);

    if (startOf == 'week') {
      // Weekday in FR start on Sat?
      dateFrom = dateFrom.add(1, 'd');
      dateTo = dateTo.add(1, 'd');
    } // Assign results


    result.start.assign('year', dateFrom.year());
    result.start.assign('month', dateFrom.month() + 1);
    result.start.assign('day', dateFrom.date());
    result.start.assign('minute', dateFrom.minute());
    result.start.assign('second', dateFrom.second());
    result.start.assign('hour', dateFrom.hour());
    result.start.assign('millisecond', dateFrom.millisecond());
    result.end = result.start.clone();
    result.end.assign('year', dateTo.year());
    result.end.assign('month', dateTo.month() + 1);
    result.end.assign('day', dateTo.date());
    result.end.assign('minute', dateTo.minute());
    result.end.assign('second', dateTo.second());
    result.end.assign('hour', dateTo.hour());
    result.end.assign('millisecond', dateTo.millisecond());
    return result;
  };
};

/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {

!function(t,n){ true?module.exports=n():undefined}(this,function(){"use strict";var t="month",n="quarter";return function(r,i){var e=i.prototype;e.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var u=e.add;e.add=function(r,i){return r=Number(r),this.$utils().p(i)===n?this.add(3*r,t):u.bind(this)(r,i)};var s=e.startOf;e.startOf=function(r,i){var e=this.$utils(),u=!!e.u(i)||i;if(e.p(r)===n){var a=this.quarter()-1;return u?this.month(3*a).startOf(t).startOf("day"):this.month(3*a+2).endOf(t).endOf("day")}return s.bind(this)(r,i)}}});


/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(7);

var PATTERN = new RegExp('(\\d{2,4}|[' + Object.keys(util.NUMBER).join('') + ']{2,4})?' + '(?:\\s*)' + '(?:年)?' + '(?:[\\s|,|,]*)' + '(\\d{1,2}|[' + Object.keys(util.NUMBER).join('') + ']{1,2})' + '(?:\\s*)' + '(?:月)' + '(?:\\s*)' + '(\\d{1,2}|[' + Object.keys(util.NUMBER).join('') + ']{1,2})?' + '(?:\\s*)' + '(?:日|號)?');
var YEAR_GROUP = 1;
var MONTH_GROUP = 2;
var DAY_GROUP = 3;

exports.Parser = function ZHHantDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var startMoment = dayjs(ref);
    var result = new ParsedResult({
      text: match[0],
      index: match.index,
      ref: ref
    }); //Month

    var month = parseInt(match[MONTH_GROUP]);
    if (isNaN(month)) month = util.zhStringToNumber(match[MONTH_GROUP]);
    result.start.assign('month', month); //Day

    if (match[DAY_GROUP]) {
      var day = parseInt(match[DAY_GROUP]);
      if (isNaN(day)) day = util.zhStringToNumber(match[DAY_GROUP]);
      result.start.assign('day', day);
    } else {
      result.start.imply('day', startMoment.date());
    } //Year


    if (match[YEAR_GROUP]) {
      var year = parseInt(match[YEAR_GROUP]);
      if (isNaN(year)) year = util.zhStringToYear(match[YEAR_GROUP]);
      result.start.assign('year', year);
    } else {
      result.start.imply('year', startMoment.year());
    }

    result.tags.ZHHantDateParser = true;
    return result;
  };
};

/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var updateParsedComponent = __webpack_require__(6).updateParsedComponent;

var util = __webpack_require__(7);

var PATTERN = new RegExp('(上|今|下|這|呢)?' + '(?:個)?' + '(?:星期|禮拜)' + '(' + Object.keys(util.WEEKDAY_OFFSET).join('|') + ')');
var PREFIX_GROUP = 1;
var WEEKDAY_GROUP = 2;

exports.Parser = function ZHHantWeekdayParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index;
    text = match[0];
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var dayOfWeek = match[WEEKDAY_GROUP];
    var offset = util.WEEKDAY_OFFSET[dayOfWeek];
    if (offset === undefined) return null;
    var modifier = null;
    var prefix = match[PREFIX_GROUP];

    if (prefix == '上') {
      modifier = 'last';
    } else if (prefix == '下') {
      modifier = 'next';
    } else if (prefix == '今' || prefix == '這' || prefix == '呢') {
      modifier = 'this';
    }

    updateParsedComponent(result, ref, offset, modifier);
    result.tags['ZHHantWeekdayParser'] = true;
    return result;
  };
};

/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var ParsedComponents = __webpack_require__(0).ParsedComponents;

var util = __webpack_require__(7);

var patternString1 = '(?:由|從|自)?' + '(?:' + '(今|明|前|大前|後|大後|聽|昨|尋|琴)(早|朝|晚)|' + '(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|' + '(今|明|前|大前|後|大後|聽|昨|尋|琴)(?:日|天)' + '(?:[\\s,,]*)' + '(?:(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?' + ')?' + '(?:[\\s,,]*)' + '(?:(\\d+|[' + Object.keys(util.NUMBER).join('') + ']+)(?:\\s*)(?:點|時|:|:)' + '(?:\\s*)' + '(\\d+|半|正|整|[' + Object.keys(util.NUMBER).join('') + ']+)?(?:\\s*)(?:分|:|:)?' + '(?:\\s*)' + '(\\d+|[' + Object.keys(util.NUMBER).join('') + ']+)?(?:\\s*)(?:秒)?)' + '(?:\\s*(A\.M\.|P\.M\.|AM?|PM?))?';
var patternString2 = '(?:^\\s*(?:到|至|\\-|\\–|\\~|\\〜)\\s*)' + '(?:' + '(今|明|前|大前|後|大後|聽|昨|尋|琴)(早|朝|晚)|' + '(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|' + '(今|明|前|大前|後|大後|聽|昨|尋|琴)(?:日|天)' + '(?:[\\s,,]*)' + '(?:(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?' + ')?' + '(?:[\\s,,]*)' + '(?:(\\d+|[' + Object.keys(util.NUMBER).join('') + ']+)(?:\\s*)(?:點|時|:|:)' + '(?:\\s*)' + '(\\d+|半|正|整|[' + Object.keys(util.NUMBER).join('') + ']+)?(?:\\s*)(?:分|:|:)?' + '(?:\\s*)' + '(\\d+|[' + Object.keys(util.NUMBER).join('') + ']+)?(?:\\s*)(?:秒)?)' + '(?:\\s*(A\.M\.|P\.M\.|AM?|PM?))?';
var FIRST_REG_PATTERN = new RegExp(patternString1, 'i');
var SECOND_REG_PATTERN = new RegExp(patternString2, 'i');
var DAY_GROUP_1 = 1;
var ZH_AM_PM_HOUR_GROUP_1 = 2;
var ZH_AM_PM_HOUR_GROUP_2 = 3;
var DAY_GROUP_3 = 4;
var ZH_AM_PM_HOUR_GROUP_3 = 5;
var HOUR_GROUP = 6;
var MINUTE_GROUP = 7;
var SECOND_GROUP = 8;
var AM_PM_HOUR_GROUP = 9;

exports.Parser = function ZHHantTimeExpressionParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return FIRST_REG_PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    // This pattern can be overlaped Ex. [12] AM, 1[2] AM
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var refMoment = dayjs(ref);
    var result = new ParsedResult();
    result.ref = ref;
    result.index = match.index;
    result.text = match[0];
    result.tags.ZHTimeExpressionParser = true;
    var startMoment = refMoment.clone(); // ----- Day

    if (match[DAY_GROUP_1]) {
      var day1 = match[DAY_GROUP_1];

      if (day1 == '明' || day1 == '聽') {
        // Check not "Tomorrow" on late night
        if (refMoment.hour() > 1) {
          startMoment.add(1, 'day');
        }
      } else if (day1 == '昨' || day1 == '尋' || day1 == '琴') {
        startMoment.add(-1, 'day');
      } else if (day1 == "前") {
        startMoment.add(-2, 'day');
      } else if (day1 == "大前") {
        startMoment.add(-3, 'day');
      } else if (day1 == "後") {
        startMoment.add(2, 'day');
      } else if (day1 == "大後") {
        startMoment.add(3, 'day');
      }

      result.start.assign('day', startMoment.date());
      result.start.assign('month', startMoment.month() + 1);
      result.start.assign('year', startMoment.year());
    } else if (match[DAY_GROUP_3]) {
      var day3 = match[DAY_GROUP_3];

      if (day3 == '明' || day3 == '聽') {
        startMoment.add(1, 'day');
      } else if (day3 == '昨' || day3 == '尋' || day3 == '琴') {
        startMoment.add(-1, 'day');
      } else if (day3 == "前") {
        startMoment.add(-2, 'day');
      } else if (day3 == "大前") {
        startMoment.add(-3, 'day');
      } else if (day3 == "後") {
        startMoment.add(2, 'day');
      } else if (day3 == "大後") {
        startMoment.add(3, 'day');
      }

      result.start.assign('day', startMoment.date());
      result.start.assign('month', startMoment.month() + 1);
      result.start.assign('year', startMoment.year());
    } else {
      result.start.imply('day', startMoment.date());
      result.start.imply('month', startMoment.month() + 1);
      result.start.imply('year', startMoment.year());
    }

    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP]) {
      var second = parseInt(match[SECOND_GROUP]);

      if (isNaN(second)) {
        second = util.zhStringToNumber(match[SECOND_GROUP]);
      }

      if (second >= 60) return null;
      result.start.assign('second', second);
    }

    hour = parseInt(match[HOUR_GROUP]);

    if (isNaN(hour)) {
      hour = util.zhStringToNumber(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP]) {
      if (match[MINUTE_GROUP] == '半') {
        minute = 30;
      } else if (match[MINUTE_GROUP] == '正' || match[MINUTE_GROUP] == '整') {
        minute = 0;
      } else {
        minute = parseInt(match[MINUTE_GROUP]);

        if (isNaN(minute)) {
          minute = util.zhStringToNumber(match[MINUTE_GROUP]);
        }
      }
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP]) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;
        if (hour == 12) hour = 0;
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    } else if (match[ZH_AM_PM_HOUR_GROUP_1]) {
      var zhAMPMString1 = match[ZH_AM_PM_HOUR_GROUP_1];
      var zhAMPM1 = zhAMPMString1[0];

      if (zhAMPM1 == '朝' || zhAMPM1 == '早') {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else if (zhAMPM1 == '晚') {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    } else if (match[ZH_AM_PM_HOUR_GROUP_2]) {
      var zhAMPMString2 = match[ZH_AM_PM_HOUR_GROUP_2];
      var zhAMPM2 = zhAMPMString2[0];

      if (zhAMPM2 == '上' || zhAMPM2 == '朝' || zhAMPM2 == '早' || zhAMPM2 == '凌') {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else if (zhAMPM2 == '下' || zhAMPM2 == '晏' || zhAMPM2 == '晚') {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    } else if (match[ZH_AM_PM_HOUR_GROUP_3]) {
      var zhAMPMString3 = match[ZH_AM_PM_HOUR_GROUP_3];
      var zhAMPM3 = zhAMPMString3[0];

      if (zhAMPM3 == '上' || zhAMPM3 == '朝' || zhAMPM3 == '早' || zhAMPM3 == '凌') {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else if (zhAMPM3 == '下' || zhAMPM3 == '晏' || zhAMPM3 == '晚') {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.start.assign('hour', hour);
    result.start.assign('minute', minute);

    if (meridiem >= 0) {
      result.start.assign('meridiem', meridiem);
    } else {
      if (hour < 12) {
        result.start.imply('meridiem', 0);
      } else {
        result.start.imply('meridiem', 1);
      }
    } // ==============================================================
    //                  Extracting the 'to' chunk
    // ==============================================================


    match = SECOND_REG_PATTERN.exec(text.substring(result.index + result.text.length));

    if (!match) {
      // Not accept number only result
      if (result.text.match(/^\d+$/)) {
        return null;
      }

      return result;
    }

    var endMoment = startMoment.clone();
    result.end = new ParsedComponents(null, null); // ----- Day

    if (match[DAY_GROUP_1]) {
      var day1 = match[DAY_GROUP_1];

      if (day1 == '明' || day1 == '聽') {
        // Check not "Tomorrow" on late night
        if (refMoment.hour() > 1) {
          endMoment.add(1, 'day');
        }
      } else if (day1 == '昨' || day1 == '尋' || day1 == '琴') {
        endMoment.add(-1, 'day');
      } else if (day1 == "前") {
        endMoment.add(-2, 'day');
      } else if (day1 == "大前") {
        endMoment.add(-3, 'day');
      } else if (day1 == "後") {
        endMoment.add(2, 'day');
      } else if (day1 == "大後") {
        endMoment.add(3, 'day');
      }

      result.end.assign('day', endMoment.date());
      result.end.assign('month', endMoment.month() + 1);
      result.end.assign('year', endMoment.year());
    } else if (match[DAY_GROUP_3]) {
      var day3 = match[DAY_GROUP_3];

      if (day3 == '明' || day3 == '聽') {
        endMoment.add(1, 'day');
      } else if (day3 == '昨' || day3 == '尋' || day3 == '琴') {
        endMoment.add(-1, 'day');
      } else if (day3 == "前") {
        endMoment.add(-2, 'day');
      } else if (day3 == "大前") {
        endMoment.add(-3, 'day');
      } else if (day3 == "後") {
        endMoment.add(2, 'day');
      } else if (day3 == "大後") {
        endMoment.add(3, 'day');
      }

      result.end.assign('day', endMoment.date());
      result.end.assign('month', endMoment.month() + 1);
      result.end.assign('year', endMoment.year());
    } else {
      result.end.imply('day', endMoment.date());
      result.end.imply('month', endMoment.month() + 1);
      result.end.imply('year', endMoment.year());
    }

    hour = 0;
    minute = 0;
    meridiem = -1; // ----- Second

    if (match[SECOND_GROUP]) {
      var second = parseInt(match[SECOND_GROUP]);

      if (isNaN(second)) {
        second = util.zhStringToNumber(match[SECOND_GROUP]);
      }

      if (second >= 60) return null;
      result.end.assign('second', second);
    }

    hour = parseInt(match[HOUR_GROUP]);

    if (isNaN(hour)) {
      hour = util.zhStringToNumber(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP]) {
      if (match[MINUTE_GROUP] == '半') {
        minute = 30;
      } else if (match[MINUTE_GROUP] == '正' || match[MINUTE_GROUP] == '整') {
        minute = 0;
      } else {
        minute = parseInt(match[MINUTE_GROUP]);

        if (isNaN(minute)) {
          minute = util.zhStringToNumber(match[MINUTE_GROUP]);
        }
      }
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP]) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();

      if (ampm == "a") {
        meridiem = 0;
        if (hour == 12) hour = 0;
      }

      if (ampm == "p") {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }

      if (!result.start.isCertain('meridiem')) {
        if (meridiem == 0) {
          result.start.imply('meridiem', 0);

          if (result.start.get('hour') == 12) {
            result.start.assign('hour', 0);
          }
        } else {
          result.start.imply('meridiem', 1);

          if (result.start.get('hour') != 12) {
            result.start.assign('hour', result.start.get('hour') + 12);
          }
        }
      }
    } else if (match[ZH_AM_PM_HOUR_GROUP_1]) {
      var zhAMPMString1 = match[ZH_AM_PM_HOUR_GROUP_1];
      var zhAMPM1 = zhAMPMString1[0];

      if (zhAMPM1 == '朝' || zhAMPM1 == '早') {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else if (zhAMPM1 == '晚') {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    } else if (match[ZH_AM_PM_HOUR_GROUP_2]) {
      var zhAMPMString2 = match[ZH_AM_PM_HOUR_GROUP_2];
      var zhAMPM2 = zhAMPMString2[0];

      if (zhAMPM2 == '上' || zhAMPM2 == '朝' || zhAMPM2 == '早' || zhAMPM2 == '凌') {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else if (zhAMPM2 == '下' || zhAMPM2 == '晏' || zhAMPM2 == '晚') {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    } else if (match[ZH_AM_PM_HOUR_GROUP_3]) {
      var zhAMPMString3 = match[ZH_AM_PM_HOUR_GROUP_3];
      var zhAMPM3 = zhAMPMString3[0];

      if (zhAMPM3 == '上' || zhAMPM3 == '朝' || zhAMPM3 == '早' || zhAMPM3 == '凌') {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else if (zhAMPM3 == '下' || zhAMPM3 == '晏' || zhAMPM3 == '晚') {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.text = result.text + match[0];
    result.end.assign('hour', hour);
    result.end.assign('minute', minute);

    if (meridiem >= 0) {
      result.end.assign('meridiem', meridiem);
    } else {
      var startAtPM = result.start.isCertain('meridiem') && result.start.get('meridiem') == 1;

      if (startAtPM && result.start.get('hour') > hour) {
        // 10pm - 1 (am)
        result.end.imply('meridiem', 0);
      } else if (hour > 12) {
        result.end.imply('meridiem', 1);
      }
    }

    if (result.end.date().getTime() < result.start.date().getTime()) {
      result.end.imply('day', result.end.get('day') + 1);
    }

    return result;
  };
};

/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(而家|立(?:刻|即)|即刻)|' + '(今|明|前|大前|後|大後|聽|昨|尋|琴)(早|朝|晚)|' + '(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|' + '(今|明|前|大前|後|大後|聽|昨|尋|琴)(?:日|天)' + '(?:[\\s|,|,]*)' + '(?:(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?', 'i');
var NOW_GROUP = 1;
var DAY_GROUP_1 = 2;
var TIME_GROUP_1 = 3;
var TIME_GROUP_2 = 4;
var DAY_GROUP_3 = 5;
var TIME_GROUP_3 = 6;

exports.Parser = function ZHHantCasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    text = match[0];
    var index = match.index;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var startMoment = refMoment;

    if (match[NOW_GROUP]) {
      result.start.imply('hour', refMoment.hour());
      result.start.imply('minute', refMoment.minute());
      result.start.imply('second', refMoment.second());
      result.start.imply('millisecond', refMoment.millisecond());
    } else if (match[DAY_GROUP_1]) {
      var day1 = match[DAY_GROUP_1];
      var time1 = match[TIME_GROUP_1];

      if (day1 == '明' || day1 == '聽') {
        // Check not "Tomorrow" on late night
        if (refMoment.hour() > 1) {
          startMoment = startMoment.add(1, 'day');
        }
      } else if (day1 == '昨' || day1 == '尋' || day1 == '琴') {
        startMoment = startMoment.add(-1, 'day');
      } else if (day1 == "前") {
        startMoment = startMoment.add(-2, 'day');
      } else if (day1 == "大前") {
        startMoment = startMoment.add(-3, 'day');
      } else if (day1 == "後") {
        startMoment = startMoment.add(2, 'day');
      } else if (day1 == "大後") {
        startMoment = startMoment.add(3, 'day');
      }

      if (time1 == '早' || time1 == '朝') {
        result.start.imply('hour', 6);
      } else if (time1 == '晚') {
        result.start.imply('hour', 22);
        result.start.imply('meridiem', 1);
      }
    } else if (match[TIME_GROUP_2]) {
      var timeString2 = match[TIME_GROUP_2];
      var time2 = timeString2[0];

      if (time2 == '早' || time2 == '朝' || time2 == '上') {
        result.start.imply('hour', 6);
      } else if (time2 == '下' || time2 == '晏') {
        result.start.imply('hour', 15);
        result.start.imply('meridiem', 1);
      } else if (time2 == '中') {
        result.start.imply('hour', 12);
        result.start.imply('meridiem', 1);
      } else if (time2 == '夜' || time2 == '晚') {
        result.start.imply('hour', 22);
        result.start.imply('meridiem', 1);
      } else if (time2 == '凌') {
        result.start.imply('hour', 0);
      }
    } else if (match[DAY_GROUP_3]) {
      var day3 = match[DAY_GROUP_3];

      if (day3 == '明' || day3 == '聽') {
        // Check not "Tomorrow" on late night
        if (refMoment.hour() > 1) {
          startMoment = startMoment.add(1, 'day');
        }
      } else if (day3 == '昨' || day3 == '尋' || day3 == '琴') {
        startMoment = startMoment.add(-1, 'day');
      } else if (day3 == "前") {
        startMoment = startMoment.add(-2, 'day');
      } else if (day3 == "大前") {
        startMoment = startMoment.add(-3, 'day');
      } else if (day3 == "後") {
        startMoment = startMoment.add(2, 'day');
      } else if (day3 == "大後") {
        startMoment = startMoment.add(3, 'day');
      }

      var timeString3 = match[TIME_GROUP_3];

      if (timeString3) {
        var time3 = timeString3[0];

        if (time3 == '早' || time3 == '朝' || time3 == '上') {
          result.start.imply('hour', 6);
        } else if (time3 == '下' || time3 == '晏') {
          result.start.imply('hour', 15);
          result.start.imply('meridiem', 1);
        } else if (time3 == '中') {
          result.start.imply('hour', 12);
          result.start.imply('meridiem', 1);
        } else if (time3 == '夜' || time3 == '晚') {
          result.start.imply('hour', 22);
          result.start.imply('meridiem', 1);
        } else if (time3 == '凌') {
          result.start.imply('hour', 0);
        }
      }
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags.ZHHantCasualDateParser = true;
    return result;
  };
};

/***/ }),
/* 60 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(7);

var PATTERN = new RegExp('(\\d+|[' + Object.keys(util.NUMBER).join('') + ']+|半|幾)(?:\\s*)' + '(?:個)?' + '(秒(?:鐘)?|分鐘|小時|鐘|日|天|星期|禮拜|月|年)' + '(?:(?:之|過)?後|(?:之)?內)', 'i');
var NUMBER_GROUP = 1;
var UNIT_GROUP = 2;

exports.Parser = function ZHHantCasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index;
    text = match[0];
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var number = parseInt(match[NUMBER_GROUP]);

    if (isNaN(number)) {
      number = util.zhStringToNumber(match[NUMBER_GROUP]);
    }

    if (isNaN(number)) {
      var string = match[NUMBER_GROUP];

      if (string === '幾') {
        number = 3;
      } else if (string === '半') {
        number = 0.5;
      } else {
        //just in case
        return null;
      }
    }

    var date = dayjs(ref);
    var unit = match[UNIT_GROUP];
    var unitAbbr = unit[0];

    if (unitAbbr.match(/[日天星禮月年]/)) {
      if (unitAbbr == '日' || unitAbbr == '天') {
        date = date.add(number, 'd');
      } else if (unitAbbr == '星' || unitAbbr == '禮') {
        date = date.add(number * 7, 'd');
      } else if (unitAbbr == '月') {
        date = date.add(number, 'month');
      } else if (unitAbbr == '年') {
        date = date.add(number, 'year');
      }

      result.start.assign('year', date.year());
      result.start.assign('month', date.month() + 1);
      result.start.assign('day', date.date());
      return result;
    }

    if (unitAbbr == '秒') {
      date = date.add(number, 'second');
    } else if (unitAbbr == '分') {
      date = date.add(number, 'minute');
    } else if (unitAbbr == '小' || unitAbbr == '鐘') {
      date = date.add(number, 'hour');
    }

    result.start.imply('year', date.year());
    result.start.imply('month', date.month() + 1);
    result.start.imply('day', date.date());
    result.start.assign('hour', date.hour());
    result.start.assign('minute', date.minute());
    result.start.assign('second', date.second());
    result.tags.ZHHantDeadlineFormatParser = true;
    return result;
  };
};

/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {

/*


*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(8);

var PATTERN = new RegExp('(\\W|^)' + '(in|nach)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|einigen|eine[rm]\\s*halben|eine[rm])\\s*' + '(sekunden?|min(?:ute)?n?|stunden?|tag(?:en)?|wochen?|monat(?:en)?|jahr(?:en)?)\\s*' + '(?=\\W|$)', 'i');
var STRICT_PATTERN = new RegExp('(\\W|^)' + '(in|nach)\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|eine(?:r|m)?)\\s*' + '(sekunden?|minuten?|stunden?|tag(?:en)?)\\s*' + '(?=\\W|$)', 'i');

exports.Parser = function DEDeadlineFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return this.isStrictMode() ? STRICT_PATTERN : PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = match[3].toLowerCase();

    if (util.INTEGER_WORDS[num] !== undefined) {
      num = util.INTEGER_WORDS[num];
    } else if (num === 'einer' || num === 'einem') {
      num = 1;
    } else if (num === 'einigen') {
      num = 3;
    } else if (/halben/.test(num)) {
      num = 0.5;
    } else {
      num = parseInt(num);
    }

    var date = dayjs(ref);

    if (/tag|woche|monat|jahr/i.test(match[4])) {
      if (/tag/i.test(match[4])) {
        date = date.add(num, 'd');
      } else if (/woche/i.test(match[4])) {
        date = date.add(num * 7, 'd');
      } else if (/monat/i.test(match[4])) {
        date = date.add(num, 'month');
      } else if (/jahr/i.test(match[4])) {
        date = date.add(num, 'year');
      }

      result.start.assign('year', date.year());
      result.start.assign('month', date.month() + 1);
      result.start.assign('day', date.date());
      return result;
    }

    if (/stunde/i.test(match[4])) {
      date = date.add(num, 'hour');
    } else if (/min/i.test(match[4])) {
      date = date.add(num, 'minute');
    } else if (/sekunde/i.test(match[4])) {
      date = date.add(num, 'second');
    }

    result.start.imply('year', date.year());
    result.start.imply('month', date.month() + 1);
    result.start.imply('day', date.date());
    result.start.assign('hour', date.hour());
    result.start.assign('minute', date.minute());
    result.start.assign('second', date.second());
    result.tags['DEDeadlineFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 62 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(8);

var PATTERN = new RegExp('(\\W|^)' + '(?:am\\s*?)?' + '(?:(Sonntag|Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|So|Mo|Di|Mi|Do|Fr|Sa)\\s*,?\\s*)?' + '(?:den\\s*)?' + '([0-9]{1,2})\\.' + '(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\–|\\s)\\s*([0-9]{1,2})\\.)?\\s*' + '(Jan(?:uar|\\.)?|Feb(?:ruar|\\.)?|Mär(?:z|\\.)?|Maerz|Mrz\\.?|Apr(?:il|\\.)?|Mai|Jun(?:i|\\.)?|Jul(?:i|\\.)?|Aug(?:ust|\\.)?|Sep(?:t|t\\.|tember|\\.)?|Okt(?:ober|\\.)?|Nov(?:ember|\\.)?|Dez(?:ember|\\.)?)' + '(?:' + ',?\\s*([0-9]{1,4}(?![^\\s]\\d))' + '(\\s*[vn]\\.?\\s*C(?:hr)?\\.?)?' + ')?' + '(?=\\W|$)', 'i');
var WEEKDAY_GROUP = 2;
var DATE_GROUP = 3;
var DATE_TO_GROUP = 4;
var MONTH_NAME_GROUP = 5;
var YEAR_GROUP = 6;
var YEAR_BE_GROUP = 7;

exports.Parser = function DEMonthNameLittleEndianParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = match[DATE_GROUP];
    day = parseInt(day);
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];
      year = parseInt(year);

      if (match[YEAR_BE_GROUP]) {
        if (/v/i.test(match[YEAR_BE_GROUP])) {
          // v.Chr.
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Weekday component


    if (match[WEEKDAY_GROUP]) {
      var weekday = match[WEEKDAY_GROUP];
      weekday = util.WEEKDAY_OFFSET[weekday.toLowerCase()];
      result.start.assign('weekday', weekday);
    } // Text can be 'range' value. Such as '12 - 13 January 2012'


    if (match[DATE_TO_GROUP]) {
      result.end = result.start.clone();
      result.end.assign('day', parseInt(match[DATE_TO_GROUP]));
    }

    result.tags['DEMonthNameLittleEndianParser'] = true;
    return result;
  };
};

/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {

/*
    
    The parser for parsing month name and year.
    
    EX. 
        - Januar
        - Januar 2012
*/
var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(8);

var PATTERN = new RegExp('(^|\\D\\s+|[^\\w\\s])' + '(Jan\\.?|Januar|Feb\\.?|Februar|Mär\\.?|M(?:ä|ae)rz|Mrz\\.?|Apr\\.?|April|Mai\\.?|Jun\\.?|Juni|Jul\\.?|Juli|Aug\\.?|August|Sep\\.?|Sept\\.?|September|Okt\\.?|Oktober|Nov\\.?|November|Dez\\.?|Dezember)' + '\\s*' + '(?:' + ',?\\s*(?:([0-9]{4})(\\s*[vn]\\.?\\s*C(?:hr)?\\.?)?|([0-9]{1,4})\\s*([vn]\\.?\\s*C(?:hr)?\\.?))' + ')?' + '(?=[^\\s\\w]|$)', 'i');
var MONTH_NAME_GROUP = 2;
var YEAR_GROUP = 3;
var YEAR_BE_GROUP = 4;
var YEAR_GROUP2 = 5;
var YEAR_BE_GROUP2 = 6;

exports.Parser = function ENMonthNameParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = 1;
    var year = null;

    if (match[YEAR_GROUP] || match[YEAR_GROUP2]) {
      year = match[YEAR_GROUP] || match[YEAR_GROUP2];
      year = parseInt(year);

      if (match[YEAR_BE_GROUP] || match[YEAR_BE_GROUP2]) {
        if (/v/i.test(match[YEAR_BE_GROUP] || match[YEAR_BE_GROUP2])) {
          // v.Chr.
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.imply('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.imply('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    }

    if (this.isStrictMode() && result.text.match(/^\w+$/)) {
      return false;
    }

    result.tags['DEMonthNameParser'] = true;
    return result;
  };
};

/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Date format with slash "/" (also "-" and ".") between numbers
    - Tuesday 11/3/2015
    - 11/3/2015
    - 11/3
*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)' + '(?:' + '(?:am\\s*?)?' + '((?:sonntag|so|montag|mo|dienstag|di|mittwoch|mi|donnerstag|do|freitag|fr|samstag|sa))' + '\\s*\\,?\\s*' + '(?:den\\s*)?' + ')?' + '([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})' + '(?:' + '[\\/\\.\\-]' + '([0-9]{4}\s*\,?\s*|[0-9]{2}\s*\,?\s*)' + ')?' + '(\\W|$)', 'i');
var DAYS_OFFSET = {
  'sonntag': 0,
  'so': 0,
  'montag': 1,
  'mo': 1,
  'dienstag': 2,
  'di': 2,
  'mittwoch': 3,
  'mi': 3,
  'donnerstag': 4,
  'do': 4,
  'freitag': 5,
  'fr': 5,
  'samstag': 6,
  'sa': 6
};
var OPENNING_GROUP = 1;
var ENDING_GROUP = 6;
var WEEKDAY_GROUP = 2;
var DAY_GROUP = 3;
var MONTH_GROUP = 4;
var YEAR_GROUP = 5;

exports.Parser = function DESlashDateFormatParser(argument) {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match[OPENNING_GROUP] == '/' || match[ENDING_GROUP] == '/') {
      // Long skip, if there is some overlapping like:
      // XX[/YY/ZZ]
      // [XX/YY/]ZZ
      match.index += match[0].length;
      return;
    }

    var index = match.index + match[OPENNING_GROUP].length;
    var text = match[0].substr(match[OPENNING_GROUP].length, match[0].length - match[ENDING_GROUP].length);
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    if (text.match(/^\d\.\d$/)) return;
    if (text.match(/^\d\.\d{1,2}\.\d{1,2}$/)) return; // MM/dd -> OK
    // MM.dd -> NG

    if (!match[YEAR_GROUP] && match[0].indexOf('/') < 0) return;
    var year = match[YEAR_GROUP] || dayjs(ref).year() + '';
    var month = match[MONTH_GROUP];
    var day = match[DAY_GROUP];
    month = parseInt(month);
    day = parseInt(day);
    year = parseInt(year);
    if (month < 1 || month > 12) return null;
    if (day < 1 || day > 31) return null;

    if (year < 100) {
      if (year > 50) {
        year = year + 1900;
      } else {
        year = year + 2000;
      }
    }

    result.start.assign('day', day);
    result.start.assign('month', month);
    result.start.assign('year', year); //Day of week

    if (match[WEEKDAY_GROUP]) {
      result.start.assign('weekday', DAYS_OFFSET[match[WEEKDAY_GROUP].toLowerCase()]);
    }

    result.tags['DESlashDateFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(8);

var PATTERN = new RegExp('' + '(\\W|^)vor\\s*' + '(' + util.INTEGER_WORDS_PATTERN + '|[0-9]+|einigen|eine[rm]\\s*halben|eine[rm])\\s*' + '(sekunden?|min(?:ute)?n?|stunden?|wochen?|tag(?:en)?|monat(?:en)?|jahr(?:en)?)\\s*' + '(?=(?:\\W|$))', 'i');
var STRICT_PATTERN = new RegExp('' + '(\\W|^)vor\\s*' + '([0-9]+|eine(?:r|m))\\s*' + '(sekunden?|minuten?|stunden?|tag(?:en)?)' + '(?=(?:\\W|$))', 'i');

exports.Parser = function DETimeAgoFormatParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return this.isStrictMode() ? STRICT_PATTERN : PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var text = match[0];
    text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var num = match[2].toLowerCase();

    if (util.INTEGER_WORDS[num] !== undefined) {
      num = util.INTEGER_WORDS[num];
    } else if (num === 'einer' || num === 'einem') {
      num = 1;
    } else if (num === 'einigen') {
      num = 3;
    } else if (/halben/.test(num)) {
      num = 0.5;
    } else {
      num = parseInt(num);
    }

    var date = dayjs(ref);

    if (/stunde|min|sekunde/i.test(match[3])) {
      if (/stunde/i.test(match[3])) {
        date = date.add(-num, 'hour');
      } else if (/min/i.test(match[3])) {
        date = date.add(-num, 'minute');
      } else if (/sekunde/i.test(match[3])) {
        date = date.add(-num, 'second');
      }

      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.assign('hour', date.hour());
      result.start.assign('minute', date.minute());
      result.start.assign('second', date.second());
      result.tags['DETimeAgoFormatParser'] = true;
      return result;
    }

    if (/woche/i.test(match[3])) {
      date = date.add(-num, 'week');
      result.start.imply('day', date.date());
      result.start.imply('month', date.month() + 1);
      result.start.imply('year', date.year());
      result.start.imply('weekday', date.day());
      return result;
    }

    if (/tag/i.test(match[3])) {
      date = date.add(-num, 'd');
    }

    if (/monat/i.test(match[3])) {
      date = date.add(-num, 'month');
    }

    if (/jahr/i.test(match[3])) {
      date = date.add(-num, 'year');
    }

    result.start.assign('day', date.date());
    result.start.assign('month', date.month() + 1);
    result.start.assign('year', date.year());
    return result;
  };
};

/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {

/*


*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var ParsedComponents = __webpack_require__(0).ParsedComponents;

var FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:um|von)\\s*)?" + "(\\d{1,4}|mittags?|mitternachts?)" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\:|\\:)(\\d{2})" + ")?" + ")?" + "(?:\\s*uhr)?" + "(?:\\s*(morgens|vormittags|mittags|nachmittags|abends|nachts))?" + "(?=\\W|$)", 'i');
var SECOND_REG_PATTERN = new RegExp("^\\s*" + "(\\-|\\–|\\~|\\〜|bis|\\?)\\s*" + "(\\d{1,4})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + ")?" + ")?" + "(?:\\s*(morgens|vormittags|mittags|nachmittags|abends|nachts))?" + "(?=\\W|$)", 'i');
var HOUR_GROUP = 2;
var MINUTE_GROUP = 3;
var SECOND_GROUP = 4;
var AM_PM_HOUR_GROUP = 5;

exports.Parser = function DETimeExpressionParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return FIRST_REG_PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    // This pattern can be overlaped Ex. [12] AM, 1[2] AM
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var refMoment = dayjs(ref);
    var result = new ParsedResult();
    result.ref = ref;
    result.index = match.index + match[1].length;
    result.text = match[0].substring(match[1].length);
    result.tags['DETimeExpressionParser'] = true;
    result.start.imply('day', refMoment.date());
    result.start.imply('month', refMoment.month() + 1);
    result.start.imply('year', refMoment.year());
    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.start.assign('second', second);
    } // ----- Hours


    if (/mittags?/i.test(match[HOUR_GROUP])) {
      meridiem = 1;
      hour = 12;
    } else if (/mitternachts?/i.test(match[HOUR_GROUP])) {
      meridiem = 0;
      hour = 0;
    } else {
      hour = parseInt(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP].toLowerCase();

      if (ampm === 'morgens' || ampm === 'vormittags') {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.start.assign('hour', hour);
    result.start.assign('minute', minute);

    if (meridiem >= 0) {
      result.start.assign('meridiem', meridiem);
    } else {
      if (hour < 12) {
        result.start.imply('meridiem', 0);
      } else {
        result.start.imply('meridiem', 1);
      }
    } // ==============================================================
    //                  Extracting the 'to' chunk
    // ==============================================================


    match = SECOND_REG_PATTERN.exec(text.substring(result.index + result.text.length));

    if (!match) {
      // Not accept number only result
      if (result.text.match(/^\d+$/)) {
        return null;
      }

      return result;
    } // Pattern "YY.YY -XXXX" is more like timezone offset


    if (match[0].match(/^\s*(\+|\-)\s*\d{3,4}$/)) {
      return result;
    }

    if (result.end == null) {
      result.end = new ParsedComponents(null, result.start.date());
    }

    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.end.assign('second', second);
    }

    hour = parseInt(match[2]); // ----- Minute

    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
      if (minute >= 60) return result;
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP].toLowerCase();

      if (ampm === 'morgens' || ampm === 'vormittags') {
        meridiem = 0;

        if (hour == 12) {
          hour = 0;

          if (!result.end.isCertain('day')) {
            result.end.imply('day', result.end.get('day') + 1);
          }
        }
      } else {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }

      if (!result.start.isCertain('meridiem')) {
        if (meridiem == 0) {
          result.start.imply('meridiem', 0);

          if (result.start.get('hour') == 12) {
            result.start.assign('hour', 0);
          }
        } else {
          result.start.imply('meridiem', 1);

          if (result.start.get('hour') != 12) {
            result.start.assign('hour', result.start.get('hour') + 12);
          }
        }
      }
    }

    result.text = result.text + match[0];
    result.end.assign('hour', hour);
    result.end.assign('minute', minute);

    if (meridiem >= 0) {
      result.end.assign('meridiem', meridiem);
    } else {
      var startAtPM = result.start.isCertain('meridiem') && result.start.get('meridiem') == 1;

      if (startAtPM && result.start.get('hour') > hour) {
        // 10pm - 1 (am)
        result.end.imply('meridiem', 0);
      } else if (hour > 12) {
        result.end.imply('meridiem', 1);
      }
    }

    if (result.end.date().getTime() < result.start.date().getTime()) {
      result.end.imply('day', result.end.get('day') + 1);
    }

    return result;
  };
};

/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {

/*


*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var DAYS_OFFSET = {
  'sonntag': 0,
  'so': 0,
  'montag': 1,
  'mo': 1,
  'dienstag': 2,
  'di': 2,
  'mittwoch': 3,
  'mi': 3,
  'donnerstag': 4,
  'do': 4,
  'freitag': 5,
  'fr': 5,
  'samstag': 6,
  'sa': 6
};
var PATTERN = new RegExp('(\\W|^)' + '(?:(?:\\,|\\(|\\()\\s*)?' + '(?:a[mn]\\s*?)?' + '(?:(diese[mn]|letzte[mn]|n(?:ä|ae)chste[mn])\\s*)?' + '(' + Object.keys(DAYS_OFFSET).join('|') + ')' + '(?:\\s*(?:\\,|\\)|\\)))?' + '(?:\\s*(diese|letzte|n(?:ä|ae)chste)\\s*woche)?' + '(?=\\W|$)', 'i');
var PREFIX_GROUP = 2;
var WEEKDAY_GROUP = 3;
var POSTFIX_GROUP = 4;

exports.Parser = function DEWeekdayParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
    var offset = DAYS_OFFSET[dayOfWeek];
    if (offset === undefined) return null;
    var startMoment = dayjs(ref);
    var prefix = match[PREFIX_GROUP];
    var postfix = match[POSTFIX_GROUP];
    var refOffset = startMoment.day();
    var norm = prefix || postfix;
    norm = norm || '';
    norm = norm.toLowerCase();

    if (/letzte/.test(norm)) {
      startMoment = startMoment.day(offset - 7);
    } else if (/n(?:ä|ae)chste/.test(norm)) {
      startMoment = startMoment.day(offset + 7);
    } else if (/diese/.test(norm)) {
      if (opt.forwardDate && refOffset > offset) {
        startMoment = startMoment.day(offset + 7);
      } else {
        startMoment = startMoment.day(offset);
      }
    } else {
      if (opt.forwardDate && refOffset > offset) {
        startMoment = startMoment.day(offset + 7);
      } else if (!opt.forwardDate && Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {
        startMoment = startMoment.day(offset - 7);
      } else if (!opt.forwardDate && Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {
        startMoment = startMoment.day(offset + 7);
      } else {
        startMoment = startMoment.day(offset);
      }
    }

    result.start.assign('weekday', offset);
    result.start.imply('day', startMoment.date());
    result.start.imply('month', startMoment.month() + 1);
    result.start.imply('year', startMoment.year());
    return result;
  };
};

/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)(' + 'jetzt|' + '(?:heute|diesen)\\s*(morgen|vormittag|mittag|nachmittag|abend)|' + '(?:heute|diese)\\s*nacht|' + 'heute|' + '(?:(?:ü|ue)ber)?morgen(?:\\s*(morgen|vormittag|mittag|nachmittag|abend|nacht))?|' + '(?:vor)?gestern(?:\\s*(morgen|vormittag|mittag|nachmittag|abend|nacht))?|' + 'letzte\\s*nacht' + ')(?=\\W|$)', 'i');

exports.Parser = function DECasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var lowerText = text.toLowerCase();
    var startMoment = refMoment;

    if (/(?:heute|diese)\s*nacht/.test(lowerText)) {
      // Normally means this coming midnight
      result.start.imply('hour', 22);
      result.start.imply('meridiem', 1);
    } else if (/^(?:ü|ue)bermorgen/.test(lowerText)) {
      startMoment = startMoment.add(refMoment.hour() > 1 ? 2 : 1, 'day');
    } else if (/^morgen/.test(lowerText)) {
      // Check not "Tomorrow" on late night
      if (refMoment.hour() > 1) {
        startMoment = startMoment.add(1, 'day');
      }
    } else if (/^gestern/.test(lowerText)) {
      startMoment = startMoment.add(-1, 'day');
    } else if (/^vorgestern/.test(lowerText)) {
      startMoment = startMoment.add(-2, 'day');
    } else if (/letzte\s*nacht/.test(lowerText)) {
      result.start.imply('hour', 0);

      if (refMoment.hour() > 6) {
        startMoment = startMoment.add(-1, 'day');
      }
    } else if (lowerText === 'jetzt') {
      result.start.imply('hour', refMoment.hour());
      result.start.imply('minute', refMoment.minute());
      result.start.imply('second', refMoment.second());
      result.start.imply('millisecond', refMoment.millisecond());
    }

    var secondMatch = match[3] || match[4] || match[5];

    if (secondMatch) {
      switch (secondMatch.toLowerCase()) {
        case 'morgen':
          result.start.imply('hour', 6);
          break;

        case 'vormittag':
          result.start.imply('hour', 9);
          break;

        case 'mittag':
          result.start.imply('hour', 12);
          break;

        case 'nachmittag':
          result.start.imply('hour', 15);
          result.start.imply('meridiem', 1);
          break;

        case 'abend':
          result.start.imply('hour', 18);
          result.start.imply('meridiem', 1);
          break;

        case 'nacht':
          result.start.imply('hour', 0);
          break;
      }
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags['DECasualDateParser'] = true;
    return result;
  };
};

/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {

/*

    The parser for parsing month name and year.

    EX.
        - januari
        - januari 2012
        - januari, 2012
*/
var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(11);

var PATTERN = new RegExp('(^|\\D\\s+|[^\\w\\s])' + '(' + util.MONTH_PATTERN + ')' + '\\s*' + '(?:' + '[,-]?\\s*([0-9]{4})(\\s*BE|n\.Chr\.|v\.Chr\.)?' + ')?' + '(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)', 'i');
var MONTH_NAME_GROUP = 2;
var YEAR_GROUP = 3;
var YEAR_BE_GROUP = 4;

exports.Parser = function ENMonthNameParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var day = 1;
    var monthName = match[MONTH_NAME_GROUP];
    var month = util.MONTH_OFFSET[monthName.toLowerCase()];
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];
      year = parseInt(year);

      if (match[YEAR_BE_GROUP]) {
        if (match[YEAR_BE_GROUP].match(/BE/)) {
          // Buddhist Era
          year = year - 543;
        } else if (match[YEAR_BE_GROUP].match(/v\.Chr\./)) {
          // Before Christ
          year = -year;
        }
      } else if (year < 100) {
        year = year + 2000;
      }
    }

    if (year) {
      result.start.imply('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.imply('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    }

    if (result.text.match(/^\w{3}$/)) {
      return false;
    }

    result.tags['NLMonthNameParser'] = true;
    return result;
  };
};

/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {

var parser = __webpack_require__(1);

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(11);

var PATTERN = new RegExp('(\\W|^)' + '(?:op\\s*?)?' + '(?:' + '(' + util.WEEKDAY_PATTERN + ')' + '\\s*,?\\s*)?' + '([0-9]{1,2})\.?' + '(?:\\s*(?:tot|\\-|\\–|tot en met|t\\/m)\\s*([0-9]{1,2})\.?)?\\s*' + '(' + util.MONTH_PATTERN + ')' + '(?:' + '(?:-|\/|,?\\s*)' + '((?:' + '[1-9][0-9]{0,3}\\s*(?:BE|n\.Chr\.|v\.Chr\.)|' + '[1-2][0-9]{3}|' + '[5-9][0-9]' + ')(?![^\\s]\\d))' + ')?' + '(?=\\W|$)', 'i');
var WEEKDAY_GROUP = 2;
var DATE_GROUP = 3;
var DATE_TO_GROUP = 4;
var MONTH_NAME_GROUP = 5;
var YEAR_GROUP = 6;

exports.Parser = function ENMonthNameLittleEndianParser() {
  parser.Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var result = new ParsedResult({
      text: match[0].substr(match[1].length, match[0].length - match[1].length),
      index: match.index + match[1].length,
      ref: ref
    });
    var month = match[MONTH_NAME_GROUP];
    month = util.MONTH_OFFSET[month.toLowerCase()];
    var day = match[DATE_GROUP];
    day = parseInt(day);
    var year = null;

    if (match[YEAR_GROUP]) {
      year = match[YEAR_GROUP];

      if (/BE/i.test(year)) {
        // Buddhist Era
        year = year.replace(/BE/i, '');
        year = parseInt(year) - 543;
      } else if (/v\.Chr\./i.test(year)) {
        // Before Christ
        year = year.replace(/v\.Chr\./i, '');
        year = -parseInt(year);
      } else if (/n\.Chr\./i.test(year)) {
        year = year.replace(/n\.Chr\./i, '');
        year = parseInt(year);
      } else {
        year = parseInt(year);

        if (year < 100) {
          if (year > 50) {
            year = year + 1900;
          } else {
            year = year + 2000;
          }
        }
      }
    }

    if (year) {
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.assign('year', year);
    } else {
      year = parser.findYearClosestToRef(ref, day, month);
      result.start.assign('day', day);
      result.start.assign('month', month);
      result.start.imply('year', year);
    } // Weekday component


    if (match[WEEKDAY_GROUP]) {
      var weekday = match[WEEKDAY_GROUP];
      weekday = util.WEEKDAY_OFFSET[weekday.toLowerCase()];
      result.start.assign('weekday', weekday);
    } // Text can be 'range' value. Such as '12 - 13 januari 2012'


    if (match[DATE_TO_GROUP]) {
      var endDate = parseInt(match[DATE_TO_GROUP]);
      result.end = result.start.clone();
      result.end.assign('day', endDate);
    }

    result.tags['NLMonthNameLittleEndianParser'] = true;
    return result;
  };
};

/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Date format with slash "/" (also "-" and ".") between numbers
    - dinsdag 11/3/2015
    - 11/3/2015
    - 11/3
    - dinsdag 11.mrt.15
*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var util = __webpack_require__(11);

var PATTERN = new RegExp('(\\W|^)' + '(?:' + '(?:op\\s*?)?' + '(' + util.WEEKDAY_PATTERN + ')' + '\\s*\\,?\\s*' + '(?:de\\s*)?' + ')?' + '([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-1]{0,1}[0-9]{1}|' + util.MONTH_PATTERN + ')' + '(?:' + '[\\/\\.\\-]' + '([0-9]{4}\s*\,?\s*|[0-9]{2}\s*\,?\s*)' + ')?' + '(\\W|$)', 'i');
var OPENNING_GROUP = 1;
var ENDING_GROUP = 6;
var WEEKDAY_GROUP = 2;
var DAY_GROUP = 3;
var MONTH_GROUP = 4;
var YEAR_GROUP = 5;

exports.Parser = function DESlashDateFormatParser(argument) {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    if (match[OPENNING_GROUP] == '/' || match[ENDING_GROUP] == '/') {
      // Long skip, if there is some overlapping like:
      // XX[/YY/ZZ]
      // [XX/YY/]ZZ
      match.index += match[0].length;
      return;
    }

    var index = match.index + match[OPENNING_GROUP].length;
    var text = match[0].substr(match[OPENNING_GROUP].length, match[0].length - match[ENDING_GROUP].length);
    var result = new ParsedResult({
      text: text,
      index: index,
      ref: ref
    });
    if (text.match(/^\d\.\d$/)) return;
    if (text.match(/^\d\.\d{1,2}\.\d{1,2}$/)) return; // MM/dd -> OK
    // MM.dd -> NG

    if (!match[YEAR_GROUP] && match[0].indexOf('/') < 0) return;
    var year = match[YEAR_GROUP] || dayjs(ref).year() + '';
    var month = match[MONTH_GROUP];
    var day = match[DAY_GROUP];
    month = parseInt(month);

    if (!month) {
      month = util.MONTH_OFFSET[match[MONTH_GROUP].trim().toLowerCase()];
    }

    day = parseInt(day);
    year = parseInt(year);
    if (month < 1 || month > 12) return null;
    if (day < 1 || day > 31) return null;

    if (year < 100) {
      if (year > 50) {
        year = year + 1900;
      } else {
        year = year + 2000;
      }
    }

    result.start.assign('day', day);
    result.start.assign('month', month);
    result.start.assign('year', year); //Day of week

    if (match[WEEKDAY_GROUP]) {
      result.start.assign('weekday', util.WEEKDAY_OFFSET[match[WEEKDAY_GROUP].toLowerCase()]);
    }

    result.tags['NLSlashDateFormatParser'] = true;
    return result;
  };
};

/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var DAYS_OFFSET = {
  'zondag': 0,
  'zo': 0,
  'maandag': 1,
  'ma': 1,
  'dinsdag': 2,
  'di': 2,
  'woensdag': 3,
  'wo': 3,
  'donderdag': 4,
  'do': 4,
  'vrijdag': 5,
  'vr': 5,
  'zaterdag': 6,
  'za': 6
};
var PATTERN = new RegExp('(\\W|^)' + '(?:(?:\\,|\\(|\\()\\s*)?' + '(?:on\\s*?)?' + '(?:(deze|afgelopen|vorige|volgende|komende)\\s*(?:week)?\\s*)?' + '(' + Object.keys(DAYS_OFFSET).join('|') + ')' + '(?:\\s*(?:\\,|\\)|\\)))?' + '(?:\\s*(deze|afgelopen|vorige|volgende|komende)\\s*week)?' + '(?=\\W|$)', 'i');
var PREFIX_GROUP = 2;
var WEEKDAY_GROUP = 3;
var POSTFIX_GROUP = 4;

exports.updateParsedComponent = function updateParsedComponent(result, ref, offset, modifier) {
  var startMoment = dayjs(ref);
  var startMomentFixed = false;
  var refOffset = startMoment.day();

  if (modifier == 'afgelopen' || modifier == 'vorige') {
    startMoment = startMoment.day(offset - 7);
    startMomentFixed = true;
  } else if (modifier == 'volgende') {
    startMoment = startMoment.day(offset + 7);
    startMomentFixed = true;
  } else if (modifier == 'deze' || modifier == 'komende') {
    startMoment = startMoment.day(offset);
  } else {
    if (Math.abs(offset - 7 - refOffset) < Math.abs(offset - refOffset)) {
      startMoment = startMoment.day(offset - 7);
    } else if (Math.abs(offset + 7 - refOffset) < Math.abs(offset - refOffset)) {
      startMoment = startMoment.day(offset + 7);
    } else {
      startMoment = startMoment.day(offset);
    }
  }

  result.start.assign('weekday', offset);

  if (startMomentFixed) {
    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
  } else {
    result.start.imply('day', startMoment.date());
    result.start.imply('month', startMoment.month() + 1);
    result.start.imply('year', startMoment.year());
  }

  return result;
};

exports.Parser = function NLWeekdayParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var index = match.index + match[1].length;
    var text = match[0].substr(match[1].length, match[0].length - match[1].length);
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var dayOfWeek = match[WEEKDAY_GROUP].toLowerCase();
    var offset = DAYS_OFFSET[dayOfWeek];

    if (offset === undefined) {
      return null;
    }

    var prefix = match[PREFIX_GROUP];
    var postfix = match[POSTFIX_GROUP];
    var norm = prefix || postfix;
    norm = norm || '';
    norm = norm.toLowerCase();
    exports.updateParsedComponent(result, ref, offset, norm);
    result.tags['NLWeekdayParser'] = true;
    return result;
  };
};

/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {

/*


*/
var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var ParsedComponents = __webpack_require__(0).ParsedComponents;

var FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:om|van)\\s*)?" + "(\\d{1,4}|tussen de middag|middernachts?)" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\:|\\:)(\\d{2})" + ")?" + ")?" + "(?:\\s*uur)?" + "(?:\\s*(\'s morgens|\'s ochtends|in de ochtend|\'s middags|in de middag|\'s avonds|in de avond|\'s nachts))?" + "(?=\\W|$)", 'i');
var SECOND_REG_PATTERN = new RegExp("^\\s*" + "(\\-|\\–|\\~|\\〜|tot|\\?)\\s*" + "(\\d{1,4})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + "(?:" + "(?:\\.|\\:|\\:)(\\d{1,2})" + ")?" + ")?" + "(?:\\s*(\'s morgens|\'s ochtends|in de ochtend|\'s middags|in de middag|\'s avonds|in de avond|\'s nachts))?" + "(?=\\W|$)", 'i');
var HOUR_GROUP = 2;
var MINUTE_GROUP = 3;
var SECOND_GROUP = 4;
var AM_PM_HOUR_GROUP = 5;

exports.Parser = function NLTimeExpressionParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return FIRST_REG_PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    // This pattern can be overlaped Ex. [12] AM, 1[2] AM
    if (match.index > 0 && text[match.index - 1].match(/\w/)) return null;
    var refMoment = dayjs(ref);
    var result = new ParsedResult();
    result.ref = ref;
    result.index = match.index + match[1].length;
    result.text = match[0].substring(match[1].length);
    result.tags['NLTimeExpressionParser'] = true;
    result.start.imply('day', refMoment.date());
    result.start.imply('month', refMoment.month() + 1);
    result.start.imply('year', refMoment.year());
    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.start.assign('second', second);
    } // ----- Hours


    if (/tussen de middag/i.test(match[HOUR_GROUP])) {
      meridiem = 1;
      hour = 12;
    } else if (/middernachts?/i.test(match[HOUR_GROUP])) {
      meridiem = 0;
      hour = 0;
    } else {
      hour = parseInt(match[HOUR_GROUP]);
    } // ----- Minutes


    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP].toLowerCase();

      if (ampm === "'s ochtends" || ampm === 'in de ochtend' || ampm === "'s morgens") {
        meridiem = 0;
        if (hour == 12) hour = 0;
      } else {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }
    }

    result.start.assign('hour', hour);
    result.start.assign('minute', minute);

    if (meridiem >= 0) {
      result.start.assign('meridiem', meridiem);
    } else {
      if (hour < 12) {
        result.start.imply('meridiem', 0);
      } else {
        result.start.imply('meridiem', 1);
      }
    } // ==============================================================
    //                  Extracting the 'to' chunk
    // ==============================================================


    match = SECOND_REG_PATTERN.exec(text.substring(result.index + result.text.length));

    if (!match) {
      // Not accept number only result
      if (result.text.match(/^\d+$/)) {
        return null;
      }

      return result;
    } // Pattern "YY.YY -XXXX" is more like timezone offset


    if (match[0].match(/^\s*(\+|\-)\s*\d{3,4}$/)) {
      return result;
    }

    if (result.end == null) {
      result.end = new ParsedComponents(null, result.start.date());
    }

    var hour = 0;
    var minute = 0;
    var meridiem = -1; // ----- Second

    if (match[SECOND_GROUP] != null) {
      var second = parseInt(match[SECOND_GROUP]);
      if (second >= 60) return null;
      result.end.assign('second', second);
    }

    hour = parseInt(match[2]); // ----- Minute

    if (match[MINUTE_GROUP] != null) {
      minute = parseInt(match[MINUTE_GROUP]);
      if (minute >= 60) return result;
    } else if (hour > 100) {
      minute = hour % 100;
      hour = parseInt(hour / 100);
    }

    if (minute >= 60) {
      return null;
    }

    if (hour > 24) {
      return null;
    }

    if (hour >= 12) {
      meridiem = 1;
    } // ----- AM & PM


    if (match[AM_PM_HOUR_GROUP] != null) {
      if (hour > 12) return null;
      var ampm = match[AM_PM_HOUR_GROUP].toLowerCase();

      if (ampm === '\'s ochtends' || ampm === 'in de ochtend' || ampm === '\'s morgens') {
        meridiem = 0;

        if (hour == 12) {
          hour = 0;

          if (!result.end.isCertain('day')) {
            result.end.imply('day', result.end.get('day') + 1);
          }
        }
      } else {
        meridiem = 1;
        if (hour != 12) hour += 12;
      }

      if (!result.start.isCertain('meridiem')) {
        if (meridiem == 0) {
          result.start.imply('meridiem', 0);

          if (result.start.get('hour') == 12) {
            result.start.assign('hour', 0);
          }
        } else {
          result.start.imply('meridiem', 1);

          if (result.start.get('hour') != 12) {
            result.start.assign('hour', result.start.get('hour') + 12);
          }
        }
      }
    }

    result.text = result.text + match[0];
    result.end.assign('hour', hour);
    result.end.assign('minute', minute);

    if (meridiem >= 0) {
      result.end.assign('meridiem', meridiem);
    } else {
      var startAtPM = result.start.isCertain('meridiem') && result.start.get('meridiem') == 1;

      if (startAtPM && result.start.get('hour') > hour) {
        // 10pm - 1 (am)
        result.end.imply('meridiem', 0);
      } else if (hour > 12) {
        result.end.imply('meridiem', 1);
      }
    }

    if (result.end.date().getTime() < result.start.date().getTime()) {
      result.end.imply('day', result.end.get('day') + 1);
    }

    return result;
  };
};

/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {

var dayjs = __webpack_require__(2);

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = new RegExp('(\\W|^)(' + 'nu|' + 'vroeg in de ochtend|' + '(?:van|deze)\\s*(morgen|ochtend|middag|avond)|' + '\'s morgens|\'s ochtends|tussen de middag|\'s middags|\'s avonds|' + '(?:deze|van)\\s*nacht|' + 'vandaag|' + '(?:over)?morgen(?:\\s*(ochtend|middag|avond|nacht))?|' + '(?:eer)?gister(?:\\s*(ochtend|middag|avond|nacht))?|' + 'afgelopen\\s*nacht' + ')(?=\\W|$)', 'i');

exports.Parser = function DECasualDateParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    var refMoment = dayjs(ref);
    var lowerText = text.toLowerCase();
    var startMoment = refMoment;

    if (/(?:van|deze)\s*nacht/.test(lowerText)) {
      // Normally means this coming midnight
      result.start.imply('hour', 22);
      result.start.imply('meridiem', 1);
    } else if (/^overmorgen/.test(lowerText)) {
      startMoment = startMoment.add(refMoment.hour() > 1 ? 2 : 1, 'day');
    } else if (/^morgen/.test(lowerText)) {
      // Check not "Tomorrow" on late night
      if (refMoment.hour() > 1) {
        startMoment = startMoment.add(1, 'day');
      }
    } else if (/^gisteren/.test(lowerText)) {
      startMoment = startMoment.add(-1, 'day');
    } else if (/^eergisteren/.test(lowerText)) {
      startMoment = startMoment.add(-2, 'day');
    } else if (/afgelopen\s*nacht/.test(lowerText)) {
      result.start.imply('hour', 0);

      if (refMoment.hour() > 6) {
        startMoment = startMoment.add(-1, 'day');
      }
    } else if (lowerText === 'nu') {
      result.start.imply('hour', refMoment.hour());
      result.start.imply('minute', refMoment.minute());
      result.start.imply('second', refMoment.second());
      result.start.imply('millisecond', refMoment.millisecond());
    }

    var secondMatch = match[3] || match[4] || match[5];

    if (secondMatch) {
      switch (secondMatch.toLowerCase()) {
        case 'vroeg in de ochtend':
          result.start.imply('hour', 6);
          break;

        case 'ochtend':
        case 'morgen':
        case '\'s ochtends':
        case '\'s morgends':
          result.start.imply('hour', 9);
          break;

        case 'tussen de middag':
          result.start.imply('hour', 12);
          break;

        case 'middag':
        case 'in de middag':
        case '\'s middags':
          result.start.imply('hour', 15);
          result.start.imply('meridiem', 1);
          break;

        case 'avond':
        case "'s avonds":
          result.start.imply('hour', 18);
          result.start.imply('meridiem', 1);
          break;

        case 'nacht':
        case "'s nachts":
          result.start.imply('hour', 0);
          break;
      }
    }

    result.start.assign('day', startMoment.date());
    result.start.assign('month', startMoment.month() + 1);
    result.start.assign('year', startMoment.year());
    result.tags['NLCasualDateParser'] = true;
    return result;
  };
};

/***/ }),
/* 75 */
/***/ (function(module, exports, __webpack_require__) {

var Parser = __webpack_require__(1).Parser;

var ParsedResult = __webpack_require__(0).ParsedResult;

var PATTERN = /(\W|^)((deze)?\s*('s morgens|'s ochtends|in de ochtend|'s middags|in de middag|'s avonds|in de avond|'s nachts|ochtend|tussen de middag|middag|avond|nacht))/i;
var TIME_MATCH = 4;

exports.Parser = function ENCasualTimeParser() {
  Parser.apply(this, arguments);

  this.pattern = function () {
    return PATTERN;
  };

  this.extract = function (text, ref, match, opt) {
    var text = match[0].substr(match[1].length);
    var index = match.index + match[1].length;
    var result = new ParsedResult({
      index: index,
      text: text,
      ref: ref
    });
    if (!match[TIME_MATCH]) TIME_MATCH = 3;

    switch (match[TIME_MATCH].toLowerCase()) {
      case 'middag':
      case 'in de middag':
      case '\'s middags':
        result.start.imply('meridiem', 1);
        result.start.imply('hour', 15);
        break;

      case 'avond':
      case 'in de avond':
      case '\'s avonds':
        result.start.imply('meridiem', 1);
        result.start.imply('hour', 20);
        break;

      case 'middernacht':
      case 'nacht':
      case '\'s nachts':
        result.start.imply('meridiem', 0);
        result.start.imply('hour', 0);
        break;

      case 'ochtend':
      case '\s morgens':
      case '\s ochtends':
      case 'in de ochtend':
        result.start.imply('meridiem', 0);
        result.start.imply('hour', 9);
        break;

      case 'tussen de middag':
        result.start.imply('meridiem', 0);
        result.start.imply('hour', 12);
        break;
    }

    result.tags['NLCasualTimeParser'] = true;
    return result;
  };
};

/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {

/*
  
*/
var Refiner = __webpack_require__(3).Refiner;

exports.Refiner = function OverlapRemovalRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var filteredResults = [];
    var prevResult = results[0];

    for (var i = 1; i < results.length; i++) {
      var result = results[i]; // If overlap, compare the length and discard the shorter one

      if (result.index < prevResult.index + prevResult.text.length) {
        if (result.text.length > prevResult.text.length) {
          prevResult = result;
        }
      } else {
        filteredResults.push(prevResult);
        prevResult = result;
      }
    } // The last one


    if (prevResult != null) {
      filteredResults.push(prevResult);
    }

    return filteredResults;
  };
};

/***/ }),
/* 77 */
/***/ (function(module, exports, __webpack_require__) {

/*
  
*/
var Refiner = __webpack_require__(3).Refiner;

var TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(GMT|UTC)?(\\+|\\-)(\\d{1,2}):?(\\d{2})", 'i');
var TIMEZONE_OFFSET_SIGN_GROUP = 2;
var TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 3;
var TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP = 4;

exports.Refiner = function ExtractTimezoneOffsetRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    results.forEach(function (result) {
      if (result.start.isCertain('timezoneOffset')) {
        return;
      }

      var match = TIMEZONE_OFFSET_PATTERN.exec(text.substring(result.index + result.text.length));

      if (!match) {
        return;
      }

      var hourOffset = parseInt(match[TIMEZONE_OFFSET_HOUR_OFFSET_GROUP]);
      var minuteOffset = parseInt(match[TIMEZONE_OFFSET_MINUTE_OFFSET_GROUP]);
      var timezoneOffset = hourOffset * 60 + minuteOffset;

      if (match[TIMEZONE_OFFSET_SIGN_GROUP] === '-') {
        timezoneOffset = -timezoneOffset;
      }

      if (result.end != null) {
        result.end.assign('timezoneOffset', timezoneOffset);
      }

      result.start.assign('timezoneOffset', timezoneOffset);
      result.text += match[0];
      result.tags['ExtractTimezoneOffsetRefiner'] = true;
    });
    return results;
  };
};

/***/ }),
/* 78 */
/***/ (function(module, exports, __webpack_require__) {

/*

*/
var Refiner = __webpack_require__(3).Refiner; // Map ABBR -> Offset in minute


var TIMEZONE_NAME_PATTERN = new RegExp("^\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)", 'i');
var DEFAULT_TIMEZONE_ABBR_MAP = {
  "ACDT": 630,
  "ACST": 570,
  "ADT": -180,
  "AEDT": 660,
  "AEST": 600,
  "AFT": 270,
  "AKDT": -480,
  "AKST": -540,
  "ALMT": 360,
  "AMST": -180,
  "AMT": -240,
  "ANAST": 720,
  "ANAT": 720,
  "AQTT": 300,
  "ART": -180,
  "AST": -240,
  "AWDT": 540,
  "AWST": 480,
  "AZOST": 0,
  "AZOT": -60,
  "AZST": 300,
  "AZT": 240,
  "BNT": 480,
  "BOT": -240,
  "BRST": -120,
  "BRT": -180,
  "BST": 60,
  "BTT": 360,
  "CAST": 480,
  "CAT": 120,
  "CCT": 390,
  "CDT": -300,
  "CEST": 120,
  "CET": 60,
  "CHADT": 825,
  "CHAST": 765,
  "CKT": -600,
  "CLST": -180,
  "CLT": -240,
  "COT": -300,
  "CST": -360,
  "CVT": -60,
  "CXT": 420,
  "ChST": 600,
  "DAVT": 420,
  "EASST": -300,
  "EAST": -360,
  "EAT": 180,
  "ECT": -300,
  "EDT": -240,
  "EEST": 180,
  "EET": 120,
  "EGST": 0,
  "EGT": -60,
  "EST": -300,
  "ET": -300,
  "FJST": 780,
  "FJT": 720,
  "FKST": -180,
  "FKT": -240,
  "FNT": -120,
  "GALT": -360,
  "GAMT": -540,
  "GET": 240,
  "GFT": -180,
  "GILT": 720,
  "GMT": 0,
  "GST": 240,
  "GYT": -240,
  "HAA": -180,
  "HAC": -300,
  "HADT": -540,
  "HAE": -240,
  "HAP": -420,
  "HAR": -360,
  "HAST": -600,
  "HAT": -90,
  "HAY": -480,
  "HKT": 480,
  "HLV": -210,
  "HNA": -240,
  "HNC": -360,
  "HNE": -300,
  "HNP": -480,
  "HNR": -420,
  "HNT": -150,
  "HNY": -540,
  "HOVT": 420,
  "ICT": 420,
  "IDT": 180,
  "IOT": 360,
  "IRDT": 270,
  "IRKST": 540,
  "IRKT": 540,
  "IRST": 210,
  "IST": 330,
  "JST": 540,
  "KGT": 360,
  "KRAST": 480,
  "KRAT": 480,
  "KST": 540,
  "KUYT": 240,
  "LHDT": 660,
  "LHST": 630,
  "LINT": 840,
  "MAGST": 720,
  "MAGT": 720,
  "MART": -510,
  "MAWT": 300,
  "MDT": -360,
  "MESZ": 120,
  "MEZ": 60,
  "MHT": 720,
  "MMT": 390,
  "MSD": 240,
  "MSK": 240,
  "MST": -420,
  "MUT": 240,
  "MVT": 300,
  "MYT": 480,
  "NCT": 660,
  "NDT": -90,
  "NFT": 690,
  "NOVST": 420,
  "NOVT": 360,
  "NPT": 345,
  "NST": -150,
  "NUT": -660,
  "NZDT": 780,
  "NZST": 720,
  "OMSST": 420,
  "OMST": 420,
  "PDT": -420,
  "PET": -300,
  "PETST": 720,
  "PETT": 720,
  "PGT": 600,
  "PHOT": 780,
  "PHT": 480,
  "PKT": 300,
  "PMDT": -120,
  "PMST": -180,
  "PONT": 660,
  "PST": -480,
  "PT": -480,
  "PWT": 540,
  "PYST": -180,
  "PYT": -240,
  "RET": 240,
  "SAMT": 240,
  "SAST": 120,
  "SBT": 660,
  "SCT": 240,
  "SGT": 480,
  "SRT": -180,
  "SST": -660,
  "TAHT": -600,
  "TFT": 300,
  "TJT": 300,
  "TKT": 780,
  "TLT": 540,
  "TMT": 300,
  "TVT": 720,
  "ULAT": 480,
  "UTC": 0,
  "UYST": -120,
  "UYT": -180,
  "UZT": 300,
  "VET": -210,
  "VLAST": 660,
  "VLAT": 660,
  "VUT": 660,
  "WAST": 120,
  "WAT": 60,
  "WEST": 60,
  "WESZ": 60,
  "WET": 0,
  "WEZ": 0,
  "WFT": 720,
  "WGST": -120,
  "WGT": -180,
  "WIB": 420,
  "WIT": 540,
  "WITA": 480,
  "WST": 780,
  "WT": 0,
  "YAKST": 600,
  "YAKT": 600,
  "YAPT": 600,
  "YEKST": 360,
  "YEKT": 360
};

exports.Refiner = function ExtractTimezoneAbbrRefiner(config) {
  Refiner.call(this, arguments);

  this.refine = function (text, results, opt) {
    var timezones = new Object(DEFAULT_TIMEZONE_ABBR_MAP);

    if (opt.timezones) {
      for (var name in opt.timezones) {
        timezones[name] = opt.timezones[name];
      }
    }

    results.forEach(function (result) {
      if (!result.tags['ENTimeExpressionParser'] && !result.tags['ENCasualTimeParser'] && !result.tags['ZHTimeExpressionParser'] && !result.tags['FRTimeExpressionParser'] && !result.tags['DETimeExpressionParser']) {
        return;
      }

      var match = TIMEZONE_NAME_PATTERN.exec(text.substring(result.index + result.text.length));

      if (match) {
        var timezoneAbbr = match[1].toUpperCase();

        if (timezones[timezoneAbbr] === undefined) {
          return;
        }

        var timezoneOffset = timezones[timezoneAbbr];

        if (!result.start.isCertain('timezoneOffset')) {
          result.start.assign('timezoneOffset', timezoneOffset);
        }

        if (result.end != null && !result.end.isCertain('timezoneOffset')) {
          result.end.assign('timezoneOffset', timezoneOffset);
        }

        result.text += match[0];
        result.tags['ExtractTimezoneAbbrRefiner'] = true;
      }
    });
    return results;
  };
};

/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {

/*
    Enforce 'forwardDate' option to on the results. When there are missing component,
    e.g. "March 12-13 (without year)" or "Thursday", the refiner will try to adjust the result
    into the future instead of the past.
*/
var dayjs = __webpack_require__(2);

var Refiner = __webpack_require__(3).Refiner;

exports.Refiner = function ForwardDateRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    if (!opt['forwardDate']) {
      return results;
    }

    results.forEach(function (result) {
      var refMoment = dayjs(result.ref);

      if (result.start.isOnlyDayMonthComponent() && refMoment.isAfter(result.start.dayjs())) {
        // Adjust year into the future
        for (var i = 0; i < 3 && refMoment.isAfter(result.start.dayjs()); i++) {
          result.start.imply('year', result.start.get('year') + 1);

          if (result.end && !result.end.isCertain('year')) {
            result.end.imply('year', result.end.get('year') + 1);
          }
        }

        result.tags['ForwardDateRefiner'] = true;
      }

      if (result.start.isOnlyWeekdayComponent() && refMoment.isAfter(result.start.dayjs())) {
        // Adjust date to the coming week
        if (refMoment.day() > result.start.get('weekday')) {
          refMoment = refMoment.day(result.start.get('weekday') + 7);
        } else {
          refMoment = refMoment.day(result.start.get('weekday'));
        }

        result.start.imply('day', refMoment.date());
        result.start.imply('month', refMoment.month() + 1);
        result.start.imply('year', refMoment.year());
        result.tags['ForwardDateRefiner'] = true;
      }
    });
    return results;
  };
};

/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {

/*
  
*/
var Filter = __webpack_require__(3).Filter;

exports.Refiner = function UnlikelyFormatFilter() {
  Filter.call(this);

  this.isValid = function (text, result, opt) {
    if (result.text.replace(' ', '').match(/^\d*(\.\d*)?$/)) {
      return false;
    }

    return true;
  };
};

/***/ }),
/* 81 */
/***/ (function(module, exports, __webpack_require__) {

/*

*/
var ParsedComponents = __webpack_require__(0).ParsedComponents;

var Refiner = __webpack_require__(3).Refiner;

var PATTERN = new RegExp("^\\s*(at|after|before|on|,|-|\\(|\\))?\\s*$");

function isMoreSpecific(prevResult, currResult) {
  var moreSpecific = false;

  if (prevResult.start.isCertain('year')) {
    if (!currResult.start.isCertain('year')) {
      moreSpecific = true;
    } else {
      if (prevResult.start.isCertain('month')) {
        if (!currResult.start.isCertain('month')) {
          moreSpecific = true;
        } else {
          if (prevResult.start.isCertain('day') && !currResult.start.isCertain('day')) {
            moreSpecific = true;
          }
        }
      }
    }
  }

  return moreSpecific;
}

function isAbleToMerge(text, prevResult, currResult) {
  var textBetween = text.substring(prevResult.index + prevResult.text.length, currResult.index); // Only accepts merge if one of them comes from casual relative date

  var includesRelativeResult = prevResult.tags['ENRelativeDateFormatParser'] || currResult.tags['ENRelativeDateFormatParser']; // We assume they refer to the same date if all date fields are implied

  var referToSameDate = !prevResult.start.isCertain('day') && !prevResult.start.isCertain('month') && !prevResult.start.isCertain('year'); // If both years are certain, that determines if they refer to the same date
  // but with one more specific than the other

  if (prevResult.start.isCertain('year') && currResult.start.isCertain('year')) referToSameDate = prevResult.start.get('year') === currResult.start.get('year'); // We now test with the next level (month) if they refer to the same date

  if (prevResult.start.isCertain('month') && currResult.start.isCertain('month')) referToSameDate = prevResult.start.get('month') === currResult.start.get('month') && referToSameDate;
  return includesRelativeResult && textBetween.match(PATTERN) && referToSameDate;
}

function mergeResult(text, specificResult, nonSpecificResult) {
  var specificDate = specificResult.start;
  var nonSpecificDate = nonSpecificResult.start;
  var startIndex = Math.min(specificResult.index, nonSpecificResult.index);
  var endIndex = Math.max(specificResult.index + specificResult.text.length, nonSpecificResult.index + nonSpecificResult.text.length);
  specificResult.index = startIndex;
  specificResult.text = text.substring(startIndex, endIndex);

  for (var tag in nonSpecificResult.tags) {
    specificResult.tags[tag] = true;
  }

  specificResult.tags['ENPrioritizeSpecificDateRefiner'] = true;
  return specificResult;
}

exports.Refiner = function ENPrioritizeSpecificDateRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var mergedResult = [];
    var currResult = null;
    var prevResult = null;

    for (var i = 1; i < results.length; i++) {
      currResult = results[i];
      prevResult = results[i - 1];

      if (isMoreSpecific(prevResult, currResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, prevResult, currResult);
        currResult = null;
        i += 1;
      } else if (isMoreSpecific(currResult, prevResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, currResult, prevResult);
        currResult = null;
        i += 1;
      }

      mergedResult.push(prevResult);
    }

    if (currResult != null) {
      mergedResult.push(currResult);
    }

    return mergedResult;
  };
};

/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {

/*
  
*/
var ENMergeDateRangeRefiner = __webpack_require__(9).Refiner;

exports.Refiner = function JPMergeDateRangeRefiner() {
  ENMergeDateRangeRefiner.call(this);

  this.pattern = function () {
    return /^\s*(から|ー)\s*$/i;
  };
};

/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {

/*
  
*/
var Refiner = __webpack_require__(3).Refiner;

exports.Refiner = function FRMergeDateRangeRefiner() {
  Refiner.call(this);

  this.pattern = function () {
    return /^\s*(à|a|\-)\s*$/i;
  };

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var mergedResult = [];
    var currResult = null;
    var prevResult = null;

    for (var i = 1; i < results.length; i++) {
      currResult = results[i];
      prevResult = results[i - 1];

      if (!prevResult.end && !currResult.end && this.isAbleToMerge(text, prevResult, currResult)) {
        prevResult = this.mergeResult(text, prevResult, currResult);
        currResult = null;
        i += 1;
      }

      mergedResult.push(prevResult);
    }

    if (currResult != null) {
      mergedResult.push(currResult);
    }

    return mergedResult;
  };

  this.isAbleToMerge = function (text, result1, result2) {
    var begin = result1.index + result1.text.length;
    var end = result2.index;
    var textBetween = text.substring(begin, end);
    return textBetween.match(this.pattern());
  };

  this.isWeekdayResult = function (result) {
    return result.start.isCertain('weekday') && !result.start.isCertain('day');
  };

  this.mergeResult = function (text, fromResult, toResult) {
    if (!this.isWeekdayResult(fromResult) && !this.isWeekdayResult(toResult)) {
      for (var key in toResult.start.knownValues) {
        if (!fromResult.start.isCertain(key)) {
          fromResult.start.assign(key, toResult.start.get(key));
        }
      }

      for (var key in fromResult.start.knownValues) {
        if (!toResult.start.isCertain(key)) {
          toResult.start.assign(key, fromResult.start.get(key));
        }
      }
    }

    if (fromResult.start.date().getTime() > toResult.start.date()) {
      var tmp = toResult;
      toResult = fromResult;
      fromResult = tmp;
    }

    fromResult.end = toResult.start;

    for (var tag in toResult.tags) {
      fromResult.tags[tag] = true;
    }

    var startIndex = Math.min(fromResult.index, toResult.index);
    var endIndex = Math.max(fromResult.index + fromResult.text.length, toResult.index + toResult.text.length);
    fromResult.index = startIndex;
    fromResult.text = text.substring(startIndex, endIndex);
    fromResult.tags[this.constructor.name] = true;
    return fromResult;
  };
};

/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {

/*
    
*/
var ParsedComponents = __webpack_require__(0).ParsedComponents;

var Refiner = __webpack_require__(3).Refiner;

var mergeDateTimeComponent = __webpack_require__(5).mergeDateTimeComponent;

var PATTERN = new RegExp("^\\s*(T|à|a|vers|de|,|-)?\\s*$");

function isDateOnly(result) {
  return !result.start.isCertain('hour') || result.tags['FRCasualDateParser'];
}

function isTimeOnly(result) {
  return !result.start.isCertain('month') && !result.start.isCertain('weekday');
}

function isAbleToMerge(text, prevResult, curResult) {
  var textBetween = text.substring(prevResult.index + prevResult.text.length, curResult.index);
  return textBetween.match(PATTERN);
}

function mergeResult(text, dateResult, timeResult) {
  var beginDate = dateResult.start;
  var beginTime = timeResult.start;
  var beginDateTime = mergeDateTimeComponent(beginDate, beginTime);

  if (dateResult.end != null || timeResult.end != null) {
    var endDate = dateResult.end == null ? dateResult.start : dateResult.end;
    var endTime = timeResult.end == null ? timeResult.start : timeResult.end;
    var endDateTime = mergeDateTimeComponent(endDate, endTime);

    if (dateResult.end == null && endDateTime.date().getTime() < beginDateTime.date().getTime()) {
      // Ex. 9pm - 1am
      if (endDateTime.isCertain('day')) {
        endDateTime.assign('day', endDateTime.get('day') + 1);
      } else {
        endDateTime.imply('day', endDateTime.get('day') + 1);
      }
    }

    dateResult.end = endDateTime;
  }

  dateResult.start = beginDateTime;
  var startIndex = Math.min(dateResult.index, timeResult.index);
  var endIndex = Math.max(dateResult.index + dateResult.text.length, timeResult.index + timeResult.text.length);
  dateResult.index = startIndex;
  dateResult.text = text.substring(startIndex, endIndex);

  for (var tag in timeResult.tags) {
    dateResult.tags[tag] = true;
  }

  dateResult.tags['FRMergeDateAndTimeRefiner'] = true;
  return dateResult;
}

exports.Refiner = function FRMergeDateTimeRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var mergedResult = [];
    var currResult = null;
    var prevResult = null;

    for (var i = 1; i < results.length; i++) {
      currResult = results[i];
      prevResult = results[i - 1];

      if (isDateOnly(prevResult) && isTimeOnly(currResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, prevResult, currResult);
        currResult = null;
        i += 1;
      } else if (isDateOnly(currResult) && isTimeOnly(prevResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, currResult, prevResult);
        currResult = null;
        i += 1;
      }

      mergedResult.push(prevResult);
    }

    if (currResult != null) {
      mergedResult.push(currResult);
    }

    return mergedResult;
  };
};

/***/ }),
/* 85 */
/***/ (function(module, exports, __webpack_require__) {

/*
  
*/
var ENMergeDateRangeRefiner = __webpack_require__(9).Refiner;

exports.Refiner = function DEMergeDateRangeRefiner() {
  ENMergeDateRangeRefiner.call(this);

  this.pattern = function () {
    return /^\s*(bis(?:\s*(?:am|zum))?|\-)\s*$/i;
  };
};

/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {

/*
    
*/
var ParsedComponents = __webpack_require__(0).ParsedComponents;

var Refiner = __webpack_require__(3).Refiner;

var mergeDateTimeComponent = __webpack_require__(5).mergeDateTimeComponent;

var isDateOnly = __webpack_require__(5).isDateOnly;

var isTimeOnly = __webpack_require__(5).isTimeOnly;

var PATTERN = new RegExp("^\\s*(T|um|am|,|-)?\\s*$");

function isAbleToMerge(text, prevResult, curResult) {
  var textBetween = text.substring(prevResult.index + prevResult.text.length, curResult.index);
  return textBetween.match(PATTERN);
}

function mergeResult(text, dateResult, timeResult) {
  var beginDate = dateResult.start;
  var beginTime = timeResult.start;
  var beginDateTime = mergeDateTimeComponent(beginDate, beginTime);

  if (dateResult.end != null || timeResult.end != null) {
    var endDate = dateResult.end == null ? dateResult.start : dateResult.end;
    var endTime = timeResult.end == null ? timeResult.start : timeResult.end;
    var endDateTime = mergeDateTimeComponent(endDate, endTime);

    if (dateResult.end == null && endDateTime.date().getTime() < beginDateTime.date().getTime()) {
      // Ex. 9pm - 1am
      if (endDateTime.isCertain('day')) {
        endDateTime.assign('day', endDateTime.get('day') + 1);
      } else {
        endDateTime.imply('day', endDateTime.get('day') + 1);
      }
    }

    dateResult.end = endDateTime;
  }

  dateResult.start = beginDateTime;
  var startIndex = Math.min(dateResult.index, timeResult.index);
  var endIndex = Math.max(dateResult.index + dateResult.text.length, timeResult.index + timeResult.text.length);
  dateResult.index = startIndex;
  dateResult.text = text.substring(startIndex, endIndex);

  for (var tag in timeResult.tags) {
    dateResult.tags[tag] = true;
  }

  dateResult.tags['DEMergeDateAndTimeRefiner'] = true;
  return dateResult;
}

exports.Refiner = function DEMergeDateTimeRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var mergedResult = [];
    var currResult = null;
    var prevResult = null;

    for (var i = 1; i < results.length; i++) {
      currResult = results[i];
      prevResult = results[i - 1];

      if (isDateOnly(prevResult) && isTimeOnly(currResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, prevResult, currResult);
        currResult = null;
        i += 1;
      } else if (isDateOnly(currResult) && isTimeOnly(prevResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, currResult, prevResult);
        currResult = null;
        i += 1;
      }

      mergedResult.push(prevResult);
    }

    if (currResult != null) {
      mergedResult.push(currResult);
    }

    return mergedResult;
  };
};

/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {

/*

*/
var ENMergeDateRangeRefiner = __webpack_require__(9).Refiner;

exports.Refiner = function NLMergeDateRangeRefiner() {
  ENMergeDateRangeRefiner.call(this);

  this.pattern = function () {
    return /^\s*(tot|t\/m|tot en met|\\-)\s*$/i;
  };
};

/***/ }),
/* 88 */
/***/ (function(module, exports, __webpack_require__) {

/*

*/
var ParsedComponents = __webpack_require__(0).ParsedComponents;

var Refiner = __webpack_require__(3).Refiner;

var mergeDateTimeComponent = __webpack_require__(5).mergeDateTimeComponent;

var isDateOnly = __webpack_require__(5).isDateOnly;

var isTimeOnly = __webpack_require__(5).isTimeOnly;

var PATTERN = new RegExp("^\\s*(T|op|om|voor|na|van|,|-)\\s*$");

function isAbleToMerge(text, prevResult, curResult) {
  var textBetween = text.substring(prevResult.index + prevResult.text.length, curResult.index);
  return textBetween.match(PATTERN);
}

function mergeResult(text, dateResult, timeResult) {
  var beginDate = dateResult.start;
  var beginTime = timeResult.start;
  var beginDateTime = mergeDateTimeComponent(beginDate, beginTime);

  if (dateResult.end != null || timeResult.end != null) {
    var endDate = dateResult.end == null ? dateResult.start : dateResult.end;
    var endTime = timeResult.end == null ? timeResult.start : timeResult.end;
    var endDateTime = mergeDateTimeComponent(endDate, endTime);

    if (dateResult.end == null && endDateTime.date().getTime() < beginDateTime.date().getTime()) {
      // Ex. 9pm - 1am
      if (endDateTime.isCertain('day')) {
        endDateTime.assign('day', endDateTime.get('day') + 1);
      } else {
        endDateTime.imply('day', endDateTime.get('day') + 1);
      }
    }

    dateResult.end = endDateTime;
  }

  dateResult.start = beginDateTime;
  var startIndex = Math.min(dateResult.index, timeResult.index);
  var endIndex = Math.max(dateResult.index + dateResult.text.length, timeResult.index + timeResult.text.length);
  dateResult.index = startIndex;
  dateResult.text = text.substring(startIndex, endIndex);

  for (var tag in timeResult.tags) {
    dateResult.tags[tag] = true;
  }

  dateResult.tags['NLMergeDateAndTimeRefiner'] = true;
  return dateResult;
}

exports.Refiner = function NLMergeDateTimeRefiner() {
  Refiner.call(this);

  this.refine = function (text, results, opt) {
    if (results.length < 2) return results;
    var mergedResult = [];
    var currResult = null;
    var prevResult = null;

    for (var i = 1; i < results.length; i++) {
      currResult = results[i];
      prevResult = results[i - 1];

      if (isDateOnly(currResult) && isTimeOnly(prevResult) && isAbleToMerge(text, prevResult, currResult)) {
        prevResult = mergeResult(text, currResult, prevResult);
        currResult = null;
        i += 1;
        mergedResult.push(prevResult);
      } else {
        mergedResult.push(prevResult);
      }
    }

    if (currResult != null) {
      mergedResult.push(currResult);
    }

    return mergedResult;
  };
};

/***/ })
/******/ ]);
});
//# sourceMappingURL=chrono.js.map

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0679 ]--