content: -- Copyright (c) 2016-present, Facebook, Inc.
  -- All rights reserved.
  --
  -- This source code is licensed under the BSD-style license found in the
  -- LICENSE file in the root directory of this source tree.
  
  
  {-# LANGUAGE OverloadedStrings #-}
  
  module Duckling.Time.EN.Corpus
    ( corpus
    , defaultCorpus
    , negativeCorpus
    , latentCorpus
    , diffCorpus
    ) where
  
  import Data.String
  import Prelude
  
  import Duckling.Core
  import Duckling.Testing.Types hiding (examples)
  import Duckling.Time.Corpus
  import Duckling.Time.Types hiding (Month, refTime)
  import Duckling.TimeGrain.Types hiding (add)
  
  corpus :: Corpus
  corpus = (testContext, testOptions, allExamples)
  
  defaultCorpus :: Corpus
  defaultCorpus = (testContext, testOptions, allExamples ++ custom)
    where
      custom = concat
        [ examples (datetime (2013, 2, 15, 0, 0, 0) Day)
                   [ "2/15"
                   , "on 2/15"
                   , "2 / 15"
                   , "2-15"
                   , "2 - 15"
                   ]
        , examples (datetime (1974, 10, 31, 0, 0, 0) Day)
                   [ "10/31/1974"
                   , "10/31/74"
                   , "10-31-74"
                   , "10.31.1974"
                   , "31/Oct/1974"
                   , "31-Oct-74"
                   , "31st Oct 1974"
                   ]
        , examples (datetime (2013, 4, 25, 16, 0, 0) Minute)
                   [ "4/25 at 4:00pm"
                   , "4/25 at 16h00"
                   , "4/25 at 16h"
                   ]
        , examples (datetimeHoliday (2013, 11, 28, 0, 0, 0) Day "Thanksgiving Day")
                   [ "thanksgiving day"
                   , "thanksgiving"
                   , "thanksgiving 2013"
                   , "this thanksgiving"
                   , "next thanksgiving day"
                   , "thanksgiving in 9 months"
                   , "thanksgiving 9 months from now"
                   ]
        , examples (datetimeHoliday (2014, 11, 27, 0, 0, 0) Day "Thanksgiving Day")
                   [ "thanksgiving of next year"
                   , "thanksgiving in a year"
                   , "thanksgiving 2014"
                   ]
        , examples (datetimeHoliday (2012, 11, 22, 0, 0, 0) Day "Thanksgiving Day")
                   [ "last thanksgiving"
                   , "thanksgiving day 2012"
                   , "thanksgiving 3 months ago"
                   , "thanksgiving 1 year ago"
                   ]
        , examples (datetimeHoliday (2016, 11, 24, 0, 0, 0) Day "Thanksgiving Day")
                   [ "thanksgiving 2016"
                   , "thanksgiving in 3 years"
                   ]
        , examples (datetimeHoliday (2017, 11, 23, 0, 0, 0) Day "Thanksgiving Day")
                   [ "thanksgiving 2017"
                   ]
        ]
  
  negativeCorpus :: NegativeCorpus
  negativeCorpus = (testContext, testOptions, examples)
    where
      examples =
        [ "laughing out loud"
        , "1 adult"
        , "we are separated"
        , "25"
        , "this is the one"
        , "this one"
        , "this past one"
        , "at single"
        , "at a couple of"
        , "at pairs"
        , "at a few"
        , "at dozens"
        , "single o'clock"
        , "dozens o'clock"
        , "Rat 6"
        , "rat 6"
        , "3 30"
        , "three twenty"
        , "at 650.650.6500"
        , "at 650-650-6500"
        , "two sixty a m"
        , "Pay ABC 2000"
        , "4a"
        , "4a."
        , "A4 A5"
        , "palm"
        , "Martin Luther King' day"
        , "two three"
        ]
  
  latentCorpus :: Corpus
  latentCorpus = (testContext, testOptions {withLatent = True}, xs)
    where
      xs = concat
        [ examples (datetime (2013, 2, 24, 0, 0, 0) Day)
                   [ "the 24"
                   , "On 24th"
                   ]
        , examples (datetime (2013, 2, 12, 7, 0, 0) Hour)
                   [ "7"
                   , "7a"
                   ]
        , examples (datetime (2013, 2, 12, 19, 0, 0) Hour)
                   [ "7p"
                   ]
        , examples (datetime (2013, 2, 12, 10, 30, 0) Minute)
                   [ "ten thirty"
                   , "ten-thirty"
                   ]
        , examples (datetime (1974, 1, 1, 0, 0, 0) Year)
                   [ "1974"
                   ]
        , examples (datetime (2013, 5, 1, 0, 0, 0) Month)
                   [ "May"
                   ]
        , examples (datetimeInterval
            ((2013, 2, 12, 0, 0, 0), (2013, 2, 12, 12, 0, 0)) Hour)
                   [ "morning"
                   ]
        , examples (datetimeInterval
            ((2013, 2, 12, 12, 0, 0), (2013, 2, 12, 19, 0, 0)) Hour)
                   [ "afternoon"
                   ]
        , examples (datetimeInterval
            ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)
                   [ "evening"
                   ]
        , examples (datetimeInterval
            ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)
                   [ "night"
                   ]
        , examples (datetimeInterval ((2013, 2, 12, 0, 0, 0), (2013, 2, 17, 0, 0, 0)) Day)
                   [ "the week"
                   ]
        , examples (datetime (2013, 2, 12, 12, 3, 0) Minute)
               [  "twelve zero three"
               ,  "twelve o three"
               ,  "twelve ou three"
               ,  "twelve oh three"
               ,  "twelve-zero-three"
               ,  "twelve-oh-three"
               ]
        , examples (datetimeInterval ((1960, 1, 1, 0, 0, 0), (1962, 1, 1, 0, 0, 0)) Year)
               [ "1960 - 1961"
               ]
        , examples (datetime (2013, 2, 12, 20, 15, 0) Minute)
               [  "tonight 815"
               ]
        ]
  
  diffContext :: Context
  diffContext = Context
    { locale = makeLocale EN Nothing
    , referenceTime = refTime (2013, 2, 15, 4, 30, 0) (-2)
    }
  
  diffCorpus :: Corpus
  diffCorpus = (diffContext, testOptions, diffExamples)
    where
      diffExamples =
        examples (datetime (2013, 3, 8, 0, 0, 0) Day)
                 [ "3 fridays from now"
                 , "three fridays from now"
                 ]
  
  allExamples :: [Example]
  allExamples = concat
    [ examples (datetime (2013, 2, 12, 4, 30, 0) Second)
               [ "now"
               , "right now"
               , "just now"
               , "at the moment"
               , "ATM"
               ]
    , examples (datetime (2013, 2, 12, 0, 0, 0) Day)
               [ "today"
               , "at this time"
               ]
    , examples (datetime (2013, 2, 1, 0, 0, 0) Month)
               [ "2/2013"
               ]
    , examples (datetime (2014, 1, 1, 0, 0, 0) Year)
               [ "in 2014"
               ]
    , examples (datetime (2013, 2, 11, 0, 0, 0) Day)
               [ "yesterday"
               ]
    , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
               [ "tomorrow"
               , "tomorrows"
               ]
    , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
               [ "monday"
               , "mon."
               , "this monday"
               , "Monday, Feb 18"
               , "Mon, February 18"
               ]
    , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
               [ "tuesday"
               , "Tuesday the 19th"
               , "Tuesday 19th"
               ]
    , examples (datetime (2013, 8, 15, 0, 0, 0) Day)
               [ "Thu 15th"
               ]
    , examples (datetime (2013, 2, 14, 0, 0, 0) Day)
               [ "thursday"
               , "thu"
               , "thu."
               ]
    , examples (datetime (2013, 2, 15, 0, 0, 0) Day)
               [ "friday"
               , "fri"
               , "fri."
               ]
    , examples (datetime (2013, 2, 16, 0, 0, 0) Day)
               [ "saturday"
               , "sat"
               , "sat."
               ]
    , examples (datetime (2013, 2, 17, 0, 0, 0) Day)
               [ "sunday"
               , "sun"
               , "sun."
               ]
    , examples (datetime (2013, 3, 1, 0, 0, 0) Day)
               [ "the 1st of march"
               , "first of march"
               , "the first of march"
               , "march first"
               ]
    , examples (datetime (2013, 3, 2, 0, 0, 0) Day)
               [ "the 2nd of march"
               , "second of march"
               , "the second of march"
               ]
    , examples (datetime (2013, 3, 3, 0, 0, 0) Day)
               [ "march 3"
               , "the third of march"
               ]
    , examples (datetime (2013, 3, 15, 0, 0, 0) Day)
               [ "the ides of march"
               ]
    , examples (datetime (2015, 3, 3, 0, 0, 0) Day)
               [ "march 3 2015"
               , "march 3rd 2015"
               , "march third 2015"
               , "3/3/2015"
               , "3/3/15"
               , "2015-3-3"
               , "2015-03-03"
               ]
    , examples (datetime (2013, 2, 15, 0, 0, 0) Day)
               [ "on the 15th"
               , "the 15th of february"
               , "15 of february"
               , "february the 15th"
               , "february 15"
               , "15th february"
               , "February 15"
               ]
    , examples (datetime (2013, 8, 8, 0, 0, 0) Day)
               [ "Aug 8"
               ]
    , examples (datetime (2014, 3, 1, 0, 0, 0) Month)
               [ "March in 1 year"
               , "March in a year"
               ]
    , examples (datetime (2014, 7, 18, 0, 0, 0) Day)
               [ "Fri, Jul 18"
               , "Jul 18, Fri"
               ]
    , examples (datetime (2014, 10, 1, 0, 0, 0) Month)
               [ "October 2014"
               , "2014-10"
               , "2014/10"
               ]
    , examples (datetime (2015, 4, 14, 0, 0, 0) Day)
               [ "14april 2015"
               , "April 14, 2015"
               , "14th April 15"
               ]
    , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
               [ "next tuesday"
               , "around next tuesday"
               ]
    , examples (datetime (2013, 2, 22, 0, 0, 0) Day)
               [ "friday after next"
               ]
    , examples (datetime (2013, 3, 1, 0, 0, 0) Month)
               [ "next March"
               ]
    , examples (datetime (2014, 3, 1, 0, 0, 0) Month)
               [ "March after next"
               ]
    , examples (datetime (2013, 2, 10, 0, 0, 0) Day)
               [ "Sunday, Feb 10"
               ]
    , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
               [ "Wed, Feb13"
               ]
    , examples (datetime (2013, 2, 11, 0, 0, 0) Week)
               [ "this week"
               , "current week"
               ]
    , examples (datetime (2013, 2, 4, 0, 0, 0) Week)
               [ "last week"
               , "past week"
               , "previous week"
               ]
    , examples (datetime (2013, 2, 18, 0, 0, 0) Week)
               [ "next week"
               , "the following week"
               , "around next week"
               , "upcoming week"
               , "coming week"
               ]
    , examples (datetime (2013, 1, 1, 0, 0, 0) Month)
               [ "last month"
               ]
    , examples (datetime (2013, 3, 1, 0, 0, 0) Month)
               [ "next month"
               ]
    , examples (datetime (2013, 3, 20, 0, 0, 0) Day)
               [ "20 of next month"
               , "20th of the next month"
               , "20th day of next month"
               ]
    , examples (datetime (2013, 2, 20, 0, 0, 0) Day)
               [ "20th of the current month"
               , "20 of this month"
               ]
    , examples (datetime (2013, 1, 20, 0, 0, 0) Day)
               [ "20th of the previous month"
               ]
    , examples (datetime (2013, 1, 1, 0, 0, 0) Quarter)
               [ "this quarter"
               , "this qtr"
               ]
    , examples (datetime (2013, 4, 1, 0, 0, 0) Quarter)
               [ "next quarter"
               , "next qtr"
               ]
    , examples (datetime (2013, 7, 1, 0, 0, 0) Quarter)
               [ "third quarter"
               , "3rd quarter"
               , "third qtr"
               , "3rd qtr"
               , "the 3rd qtr"
               ]
    , examples (datetime (2018, 10, 1, 0, 0, 0) Quarter)
               [ "4th quarter 2018"
               , "4th qtr 2018"
               , "the 4th qtr of 2018"
               , "18q4"
               , "2018Q4"
               ]
    , examples (datetime (2012, 1, 1, 0, 0, 0) Year)
               [ "last year"
               , "last yr"
               ]
    , examples (datetime (2013, 1, 1, 0, 0, 0) Year)
               [ "this year"
               , "current year"
               , "this yr"
               ]
    , examples (datetime (2014, 1, 1, 0, 0, 0) Year)
               [ "next year"
               , "next yr"
               ]
    , examples (datetime (2014, 1, 1, 0, 0, 0) Year)
               [ "in 2014 A.D.",
                 "in 2014 AD"
               ]
    , examples (datetime (-2014, 1, 1, 0, 0, 0) Year)
               [ "in 2014 B.C.",
                 "in 2014 BC"
               ]
    , examples (datetime (14, 1, 1, 0, 0, 0) Year)
               [ "in 14 a.d."
               ]
    , examples (datetime (2013, 2, 10, 0, 0, 0) Day)
               [ "last sunday"
               , "sunday from last week"
               , "last week's sunday"
               ]
    , examples (datetime (2013, 2, 5, 0, 0, 0) Day)
               [ "last tuesday"
               ]
    , examples (datetime (2013, 2, 20, 0, 0, 0) Day)
               [ "next wednesday"
               ]
    , examples (datetime (2013, 2, 20, 0, 0, 0) Day)
               [ "wednesday of next week"
               , "wednesday next week"
               , "wednesday after next"
               ]
    , examples (datetime (2013, 2, 22, 0, 0, 0) Day)
               [ "friday after next"
               ]
    , examples (datetime (2013, 2, 11, 0, 0, 0) Day)
               [ "monday of this week"
               ]
    , examples (datetime (2013, 2, 12, 0, 0, 0) Day)
               [ "tuesday of this week"
               ]
    , examples (datetime (2013, 2, 13, 0, 0, 0) Day)
               [ "wednesday of this week"
               ]
    , examples (datetime (2013, 2, 14, 0, 0, 0) Day)
               [ "the day after tomorrow"
               ]
    , examples (datetime (2013, 2, 14, 17, 0, 0) Hour)
               [ "day after tomorrow 5pm"
               ]
    , examples (datetime (2013, 2, 10, 0, 0, 0) Day)
               [ "the day before yesterday"
               ]
    , examples (datetime (2013, 2, 10, 8, 0, 0) Hour)
               [ "day before yesterday 8am"
               ]
    , examples (datetime (2013, 3, 25, 0, 0, 0) Day)
               [ "last Monday of March"
               ]
    , examples (datetime (2014, 3, 30, 0, 0, 0) Day)
               [ "last Sunday of March 2014"
               ]
    , examples (datetime (2013, 10, 3, 0, 0, 0) Day)
               [ "third day of october"
               ]
    , examples (datetime (2014, 10, 6, 0, 0, 0) Week)
               [ "first week of october 2014"
               ]
    , examples (datetime (2018, 12, 10, 0, 0, 0) Week)
               [ "third last week of 2018"
               , "the third last week of 2018"
               , "the 3rd last week of 2018"
               ]
    , examples (datetime (2018, 10, 15, 0, 0, 0) Week)
               [ "2nd last week of October 2018"
               , "the second last week of October 2018"
               ]
    , examples (datetime (2013, 5, 27, 0, 0, 0) Day)
               [ "fifth last day of May"
               , "the 5th last day of May"
               ]
    , examples (datetime (2013, 10, 7, 0, 0, 0) Week)
               [ "the week of october 6th"
               ]
    , examples (datetime (2013, 10, 7, 0, 0, 0) Week)
               [ "the week of october 7th"
               ]
    , examples (datetime (2015, 10, 31, 0, 0, 0) Day)
               [ "last day of october 2015"
               , "last day in october 2015"
               ]
    , examples (datetime (2014, 9, 22, 0, 0, 0) Week)
               [ "last week of september 2014"
               ]
    , examples (datetime (2013, 10, 1, 0, 0, 0) Day)
               [ "first tuesday of october"
               , "first tuesday in october"
               ]
    , examples (datetime (2014, 9, 16, 0, 0, 0) Day)
               [ "third tuesday of september 2014"
               ]
    , examples (datetime (2014, 10, 1, 0, 0, 0) Day)
               [ "first wednesday of october 2014"
               ]
    , examples (datetime (2014, 10, 8, 0, 0, 0) Day)
               [ "second wednesday of october 2014"
               ]
    , examples (datetime (2015, 1, 13, 0, 0, 0) Day)
               [ "third tuesday after christmas 2014"
               ]
    , examples (datetime (2013, 2, 13, 3, 0, 0) Hour)
               [ "at 3am"
               , "3 in the AM"
               , "at 3 AM"
               , "3 oclock am"
               , "at three am"
               , "this morning at 3"
               , "3 in the morning"
               , "at 3 in the morning"
               , "early morning @ 3"
               ]
    , examples (datetime (2013, 2, 12, 10, 0, 0) Hour)
               [ "this morning @ 10"
               , "this morning at 10am"
               ]
    , examples (datetime (2013, 2, 13, 3, 18, 0) Minute)
               [ "3:18am"
               , "3:18a"
               , "3h18"
               ]
    , examples (datetime (2016, 2, 1, 7, 0, 0) Hour)
               [ "at 7 in 3 years"
               ]
    , examples (datetime (2013, 2, 12, 15, 0, 0) Hour)
               [ "at 3pm"
               , "@ 3pm"
               , "3PM"
               , "3pm"
               , "3 oclock pm"
               , "3 o'clock in the afternoon"
               , "3ish pm"
               , "3pm approximately"
               , "at about 3pm"
               , "at 3p"
               , "at 3p."
               ]
    , examples (datetime (2013, 2, 12, 15, 0, 0) Minute)
               [ "15h00"
               , "at 15h00"
               , "15h"
               , "at 15h"
               ]
    , examples (datetime (2013, 2, 12, 15, 15, 0) Minute)
               [ "at 15 past 3pm"
               , "a quarter past 3pm"
               , "for a quarter past 3pm"
               , "3:15 in the afternoon"
               , "15:15"
               , "15h15"
               , "3:15pm"
               , "3:15PM"
               , "3:15p"
               , "at 3 15"
               , "15 minutes past 3pm"
               , "15 minutes past 15h"
               ]
    , examples (datetime (2013, 2, 12, 15, 20, 0) Minute)
               [ "at 20 past 3pm"
               , "3:20 in the afternoon"
               , "3:20 in afternoon"
               , "twenty after 3pm"
               , "3:20p"
               , "15h20"
               , "at three twenty"
               , "20 minutes past 3pm"
               , "this afternoon at 3:20"
               , "tonight @ 3:20"
               ]
    , examples (datetime (2013, 2, 12, 15, 30, 0) Minute)
               [ "at half past three pm"
               , "half past 3 pm"
               , "15:30"
               , "15h30"
               , "3:30pm"
               , "3:30PM"
               , "330 p.m."
               , "3:30 p m"
               , "3:30"
               , "half three"
               , "30 minutes past 3 pm"
               ]
     , examples (datetime (2013, 2, 12, 12, 15, 0) Minute)
                [ "at 15 past noon"
                , "a quarter past noon"
                , "for a quarter past noon"
                , "12:15 in the afternoon"
                , "12:15"
                , "12h15"
                , "12:15pm"
                , "12:15PM"
                , "12:15p"
                , "at 12 15"
                , "15 minutes past noon"
    ]
    , examples (datetime (2013, 2, 12, 9, 59, 0) Minute)
               [ "nine fifty nine a m"
               ]
    , examples (datetime (2013, 2, 12, 15, 23, 24) Second)
               [ "15:23:24"
               ]
    , examples (datetime (2013, 2, 12, 9, 1, 10) Second)
               [ "9:01:10 AM"
               ]
    , examples (datetime (2013, 2, 12, 11, 45, 0) Minute)
               [ "a quarter to noon"
               , "11:45am"
               , "11h45"
               , "15 to noon"
               ]
    , examples (datetime (2013, 2, 12, 13, 15, 0) Minute)
               [ "a quarter past 1pm"
               , "for a quarter past 1pm"
               , "1:15pm"
               , "13h15"
               , "15 minutes from 1pm"
               ]
    , examples (datetime (2013, 2, 12, 14, 15, 0) Minute)
               [ "a quarter past 2pm"
               , "for a quarter past 2pm"
               ]
    , examples (datetime (2013, 2, 12, 20, 15, 0) Minute)
               [ "a quarter past 8pm"
               , "for a quarter past 8pm"
               ]
    , examples (datetime (2013, 2, 12, 20, 0, 0) Hour)
               [ "8 tonight"
               , "tonight at 8 o'clock"
               , "eight tonight"
               , "8 this evening"
               , "at 8 in the evening"
               , "in the evening at eight"
               ]
    , examples (datetime (2013, 9, 20, 19, 30, 0) Minute)
               [ "at 7:30 PM on Fri, Sep 20"
               , "at 19h30 on Fri, Sep 20"
               ]
    , examples (datetime (2013, 2, 16, 9, 0, 0) Hour)
               [ "at 9am on Saturday"
               , "Saturday morning at 9"
               ]
    , examples (datetime (2013, 2, 16, 9, 0, 0) Hour)
               [ "on Saturday for 9am"
               ]
    , examples (datetime (2014, 7, 18, 19, 0, 0) Minute)
               [ "Fri, Jul 18, 2014 07:00 PM"
               , "Fri, Jul 18, 2014 19h00"
               , "Fri, Jul 18, 2014 19h"
               ]
    , examples (datetime (2013, 2, 12, 4, 30, 1) Second)
               [ "in a sec"
               , "one second from now"
               , "in 1\""
               ]
    , examples (datetime (2013, 2, 12, 4, 31, 0) Second)
               [ "in a minute"
               , "in one minute"
               , "in 1'"
               ]
    , examples (datetime (2013, 2, 12, 4, 32, 0) Second)
               [ "in 2 minutes"
               , "in 2 more minutes"
               , "2 minutes from now"
               , "in a couple of minutes"
               , "in a pair of minutes"
               ]
    , examples (datetime (2013, 2, 12, 4, 33, 0) Second)
               [ "in three minutes"
               , "in a few minutes"
               ]
    , examples (datetime (2013, 2, 12, 5, 30, 0) Second)
               [ "in 60 minutes"
               ]
    , examples (datetime (2013, 2, 12, 4, 45, 0) Second)
               [ "in a quarter of an hour"
               , "in 1/4h"
               , "in 1/4 h"
               , "in 1/4 hour"
               ]
    , examples (datetime (2013, 2, 12, 5, 0, 0) Second)
               [ "in half an hour"
               , "in 1/2h"
               , "in 1/2 h"
               , "in 1/2 hour"
               ]
    , examples (datetime (2013, 2, 12, 5, 15, 0) Second)
               [ "in three-quarters of an hour"
               , "in 3/4h"
               , "in 3/4 h"
               , "in 3/4 hour"
               ]
    , examples (datetime (2013, 2, 12, 7, 0, 0) Second)
               [ "in 2.5 hours"
               , "in 2 and an half hours"
               ]
    , examples (datetime (2013, 2, 12, 5, 30, 0) Minute)
               [ "in one hour"
               , "in 1h"
               ]
    , examples (datetime (2013, 2, 12, 6, 30, 0) Minute)
               [ "in a couple hours"
               , "in a couple of hours"
               ]
    , examples (datetime (2013, 2, 12, 7, 30, 0) Minute)
               [ "in a few hours"
               , "in few hours"
               ]
    , examples (datetime (2013, 2, 13, 4, 30, 0) Minute)
               [ "in 24 hours"
               ]
    , examples (datetime (2013, 2, 13, 4, 0, 0) Hour)
               [ "in a day"
               , "a day from now"
               ]
    , examples (datetime (2013, 2, 13, 4, 30, 0) Second)
               [ "a day from right now"
               ]
    , examples (datetime (2016, 2, 12, 0, 0, 0) Day)
               [ "3 years from today"
               ]
    , examples (datetime (2013, 3, 1, 0, 0, 0) Day)
               [ "3 fridays from now"
               , "three fridays from now"
               ]
    , examples (datetime (2013, 2, 24, 0, 0, 0) Day)
               [ "2 sundays from now"
               , "two sundays from now"
               ]
    , examples (datetime (2013, 3, 12, 0, 0, 0) Day)
               [ "4 tuesdays from now"
               , "four tuesdays from now"
               ]
    , examples (datetime (2013, 2, 19, 4, 0, 0) Hour)
               [ "in 7 days"
               ]
    , examples (datetime (2013, 2, 19, 17, 0, 0) Hour)
               [ "in 7 days at 5pm"
               ]
    , examples (datetime (2017, 2, 1, 17, 0, 0) Hour)
               [ "in 4 years at 5pm"
               ]
    , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
               [ "in 1 week"
               , "in a week"
               ]
    , examples (datetime (2013, 2, 12, 5, 0, 0) Second)
               [ "in about half an hour"
               ]
    , examples (datetime (2013, 2, 5, 4, 0, 0) Hour)
               [ "7 days ago"
               ]
    , examples (datetime (2013, 1, 29, 4, 0, 0) Hour)
               [ "14 days Ago"
               , "a fortnight ago"
               ]
    , examples (datetime (2013, 2, 5, 0, 0, 0) Day)
               [ "a week ago"
               , "one week ago"
               , "1 week ago"
               ]
    , examples (datetime (2013, 1, 31, 0, 0, 0) Day)
               [ "2 thursdays back"
               , "2 thursdays ago"
               ]
    , examples (datetime (2013, 1, 22, 0, 0, 0) Day)
               [ "three weeks ago"
               ]
    , examples (datetime (2012, 11, 12, 0, 0, 0) Day)
               [ "three months ago"
               ]
    , examples (datetime (2013, 02, 04, 0, 0, 0) Day)
               [ "the first Monday of this month"
               , "the first Monday of the month"
               , "the first Monday in this month"
               , "first Monday in the month"
               ]
    , examples (datetime (2011, 2, 1, 0, 0, 0) Month)
               [ "two years ago"
               ]
    , examples (datetime (2013, 2, 19, 4, 0, 0) Hour)
               [ "7 days hence"
               ]
    , examples (datetime (2013, 2, 26, 4, 0, 0) Hour)
               [ "14 days hence"
               , "a fortnight hence"
               ]
    , examples (datetime (2013, 2, 19, 0, 0, 0) Day)
               [ "a week hence"
               , "one week hence"
               , "1 week hence"
               ]
    , examples (datetime (2013, 3, 5, 0, 0, 0) Day)
               [ "three weeks hence"
               ]
    , examples (datetime (2013, 5, 12, 0, 0, 0) Day)
               [ "three months hence"
               ]
    , examples (datetime (2015, 2, 1, 0, 0, 0) Month)
               [ "two years hence"
               ]
    , examples (datetime (2013, 12, 25, 0, 0, 0) Day)
               [ "one year After christmas"
               , "a year from Christmas"
               ]
    , examples (datetimeInterval ((2013, 12, 18, 0, 0, 0), (2013, 12, 29, 0, 0, 0)) Day)
               [ "for 10 days from 18th Dec"
               , "from 18th Dec for 10 days"
               , "18th Dec for 10 days"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 16, 0, 0), (2013, 2, 12, 16, 31, 0)) Minute)
               [ "for 30' starting from 4pm"
               , "from 4pm for thirty minutes"
               , "4pm for 30 mins"
               , "16h for 30 mins"
               ]
    , examples (datetimeInterval ((2013, 6, 21, 0, 0, 0), (2013, 9, 24, 0, 0, 0)) Day)
               [ "this Summer"
               , "current summer"
               ]
    , examples (datetimeInterval ((2012, 12, 21, 0, 0, 0), (2013, 3, 21, 0, 0, 0)) Day)
               [ "this winter"
               ]
    , examples (datetimeInterval ((2012, 12, 21, 0, 0, 0), (2013, 3, 19, 0, 0, 0)) Day)
               [ "this season"
               , "current seasons"
               ]
    , examples (datetimeInterval ((2012, 9, 23, 0, 0, 0), (2012, 12, 20, 0, 0, 0)) Day)
               [ "last season"
               , "past seasons"
               , "previous seasons"
               ]
    , examples (datetimeInterval ((2013, 3, 20, 0, 0, 0), (2013, 6, 20, 0, 0, 0)) Day)
               [ "next season"
               ]
    , examples (datetimeInterval ((2013, 2, 11, 18, 0, 0), (2013, 2, 12, 0, 0, 0)) Hour)
               [ "last night"
               , "yesterday evening"
               ]
    , examples (datetimeInterval ((2013, 2, 11, 21, 0, 0), (2013, 2, 12, 0, 0, 0)) Hour)
               [ "late last night"
               ]
    , examples (datetimeHoliday (2013, 12, 25, 0, 0, 0) Day "Christmas")
               [ "xmas"
               , "christmas"
               , "christmas day"
               ]
    , examples (datetimeHoliday (2013, 12, 25, 18, 0, 0) Hour "Christmas")
               [ "xmas at 6 pm"
               ]
    , examples (datetimeIntervalHoliday ((2013, 12, 25, 0, 0, 0), (2013, 12, 25, 12, 0, 0)) Hour "Christmas")
               [ "morning of xmas"
               , "morning of christmas 2013"
               , "morning of this christmas day"
               ]
    , examples (datetimeHoliday (2013, 12, 31, 0, 0, 0) Day "New Year's Eve")
               [ "new year's eve"
               , "new years eve"
               ]
    , examples (datetimeHoliday (2014, 1, 1, 0, 0, 0) Day "New Year's Day")
               [ "new year's day"
               , "new years day"
               ]
    , examples (datetimeHoliday (2013, 2, 14, 0, 0, 0) Day "Valentine's Day")
               [ "valentine's day"
               , "valentine day"
               ]
    , examples (datetime (2013, 7, 4, 0, 0, 0) Day)
               [ "4th of July"
               , "4 of july"
               ]
    , examples (datetimeHoliday (2013, 10, 31, 0, 0, 0) Day "Halloween")
               [ "halloween"
               , "next halloween"
               , "Halloween 2013"
               ]
    , examples (datetimeHoliday (2013, 11, 29, 0, 0, 0) Day "Black Friday")
               [ "black friday"
               , "black friday of this year"
               , "black friday 2013"
               ]
    , examples (datetimeHoliday (2017, 11, 24, 0, 0, 0) Day "Black Friday")
               [ "black friday 2017"
               ]
    , examples (datetimeHoliday (2013, 10, 16, 0, 0, 0) Day "Boss's Day")
               [ "boss's day"
               , "boss's"
               , "boss day"
               , "next boss's day"
               ]
    , examples (datetimeHoliday (2016, 10, 17, 0, 0, 0) Day "Boss's Day")
               [ "boss's day 2016"
               ]
    , examples (datetimeHoliday (2021, 10, 15, 0, 0, 0) Day "Boss's Day")
               [ "boss's day 2021"
               ]
    , examples (datetimeHoliday (2014, 1, 20, 0, 0, 0) Day "Martin Luther King's Day")
               [ "MLK day"
               , "next Martin Luther King day"
               , "next Martin Luther King's day"
               , "next Martin Luther Kings day"
               , "this MLK day"
               ]
    , examples (datetimeHoliday (2013, 1, 21, 0, 0, 0) Day "Martin Luther King's Day")
               [ "last MLK Jr. day"
               , "MLK day 2013"
               ]
    , examples (datetimeHoliday (2012, 1, 16, 0, 0, 0) Day "Martin Luther King's Day")
               [ "MLK day of last year"
               , "MLK day 2012"
               , "Civil Rights Day of last year"
               ]
    , examples (datetimeHoliday (2013, 11, 1, 0, 0, 0) Day "World Vegan Day")
               [ "world vegan day"
               ]
    , examples (datetimeHoliday (2013, 3, 31, 0, 0, 0) Day "Easter Sunday")
               [ "easter"
               , "easter 2013"
               ]
   , examples (datetimeHoliday (2012, 4, 08, 0, 0, 0) Day "Easter Sunday")
               [ "last easter"
               ]
    , examples (datetimeHoliday (2013, 4, 1, 0, 0, 0) Day "Easter Monday")
               [ "easter mon"
               ]
    , examples (datetimeHoliday (2010, 4, 4, 0, 0, 0) Day "Easter Sunday")
               [ "easter 2010"
               , "Easter Sunday two thousand ten"
               ]
    , examples (datetime (2013, 4, 3, 0, 0, 0) Day)
               [ "three days after Easter"
               ]
    , examples (datetimeHoliday (2013, 3, 28, 0, 0, 0) Day "Maundy Thursday")
               [ "Maundy Thursday"
               , "Covenant thu"
               , "Thu of Mysteries"
               ]
    , examples (datetimeHoliday (2013, 5, 19, 0, 0, 0) Day "Pentecost")
               [ "Pentecost"
               , "white sunday 2013"
               ]
    , examples (datetimeHoliday (2013, 5, 20, 0, 0, 0) Day "Whit Monday")
               [ "whit monday"
               , "Monday of the Holy Spirit"
               ]
    , examples (datetimeHoliday (2013, 3, 24, 0, 0, 0) Day "Palm Sunday")
               [ "palm sunday"
               , "branch sunday 2013"
               ]
    , examples (datetimeHoliday (2013, 5, 26, 0, 0, 0) Day "Trinity Sunday")
               [ "trinity sunday"
               ]
    , examples (datetimeHoliday (2013, 2, 12, 0, 0, 0) Day "Shrove Tuesday")
               [ "pancake day 2013"
               , "mardi gras"
               ]
    , examples (datetimeHoliday (2013, 3, 17, 0, 0, 0) Day "St Patrick's Day")
               [ "st patrick's day 2013"
               , "st paddy's day"
               , "saint paddy's day"
               , "saint patricks day"
               ]
    , examples (datetimeIntervalHoliday ((2018, 2, 14, 0, 0, 0), (2018, 4, 1, 0, 0, 0)) Day "Lent")
               [ "lent 2018"
               ]
    , examples (datetimeHoliday (2018, 4, 8, 0, 0, 0) Day "Orthodox Easter Sunday")
               [ "orthodox easter 2018"
               ]
    , examples (datetimeHoliday (2020, 4, 17, 0, 0, 0) Day "Orthodox Good Friday")
               [ "orthodox good friday 2020"
               , "orthodox great friday 2020"
               ]
    , examples (datetimeHoliday (2018, 2, 19, 0, 0, 0) Day "Clean Monday")
               [ "clean monday 2018"
               , "orthodox shrove monday two thousand eighteen"
               ]
    , examples (datetimeHoliday (2018, 3, 31, 0, 0, 0) Day "Lazarus Saturday")
               [ "lazarus saturday 2018"
               ]
    , examples (datetimeIntervalHoliday ((2018, 2, 19, 0, 0, 0), (2018, 3, 31, 0, 0, 0)) Day "Great Lent")
               [ "great fast 2018"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 18, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)
               [ "this evening"
               , "today evening"
               , "tonight"
               ]
    , examples (datetimeInterval ((2013, 2, 8, 18, 0, 0), (2013, 2, 11, 0, 0, 0)) Hour)
               [ "this past weekend"
               ]
    , examples (datetimeInterval ((2013, 2, 13, 18, 0, 0), (2013, 2, 14, 0, 0, 0)) Hour)
               [ "tomorrow evening"
               ]
    , examples (datetimeInterval ((2013, 2, 13, 12, 0, 0), (2013, 2, 13, 14, 0, 0)) Hour)
               [ "tomorrow lunch"
               , "tomorrow at lunch"
               ]
    , examples (datetimeInterval ((2013, 2, 11, 18, 0, 0), (2013, 2, 12, 0, 0, 0)) Hour)
               [ "yesterday evening"
               ]
    , examples (datetimeInterval ((2013, 2, 15, 18, 0, 0), (2013, 2, 18, 0, 0, 0)) Hour)
               [ "this week-end"
               ]
    , examples (datetimeInterval ((2013, 2, 18, 0, 0, 0), (2013, 2, 18, 12, 0, 0)) Hour)
               [ "monday mOrnIng"
               ]
    , examples (datetimeInterval ((2013, 2, 18, 0, 0, 0), (2013, 2, 18, 9, 0, 0)) Hour)
               [ "monday early in the morning"
               , "monday early morning"
               , "monday in the early hours of the morning"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 21, 0, 0), (2013, 2, 13, 0, 0, 0)) Hour)
               [ "late tonight"
               , "late tonite"
               ]
    , examples (datetimeInterval ((2013, 2, 15, 0, 0, 0), (2013, 2, 15, 12, 0, 0)) Hour)
               [ "february the 15th in the morning"
               , "15 of february in the morning"
               , "morning of the 15th of february"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 29, 58), (2013, 2, 12, 4, 30, 0)) Second)
               [ "last 2 seconds"
               , "last two seconds"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 30, 1), (2013, 2, 12, 4, 30, 4)) Second)
               [ "next 3 seconds"
               , "next three seconds"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 28, 0), (2013, 2, 12, 4, 30, 0)) Minute)
               [ "last 2 minutes"
               , "last two minutes"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 31, 0), (2013, 2, 12, 4, 34, 0)) Minute)
               [ "next 3 minutes"
               , "next three minutes"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 3, 0, 0), (2013, 2, 12, 4, 0, 0)) Hour)
               [ "last 1 hour"
               , "last one hour"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 5, 0, 0), (2013, 2, 12, 8, 0, 0)) Hour)
               [ "next 3 hours"
               , "next three hours"
               ]
    , examples (datetimeInterval ((2013, 2, 10, 0, 0, 0), (2013, 2, 12, 0, 0, 0)) Day)
               [ "last 2 days"
               , "last two days"
               , "past 2 days"
               ]
    , examples (datetimeInterval ((2013, 2, 13, 0, 0, 0), (2013, 2, 16, 0, 0, 0)) Day)
               [ "next 3 days"
               , "next three days"
               ]
    , examples (datetimeInterval ((2013, 2, 13, 0, 0, 0), (2013, 2, 16, 0, 0, 0)) Day)
               [ "next few days"
               ]
    , examples (datetimeInterval ((2013, 1, 28, 0, 0, 0), (2013, 2, 11, 0, 0, 0)) Week)
               [ "last 2 weeks"
               , "last two weeks"
               , "past 2 weeks"
               ]
    , examples (datetimeInterval ((2013, 2, 18, 0, 0, 0), (2013, 3, 11, 0, 0, 0)) Week)
               [ "next 3 weeks"
               , "next three weeks"
               ]
    , examples (datetimeInterval ((2012, 12, 1, 0, 0, 0), (2013, 2, 1, 0, 0, 0)) Month)
               [ "last 2 months"
               , "last two months"
               ]
    , examples (datetimeInterval ((2013, 3, 1, 0, 0, 0), (2013, 6, 1, 0, 0, 0)) Month)
               [ "next 3 months"
               , "next three months"
               ]
    , examples (datetimeInterval ((2011, 1, 1, 0, 0, 0), (2013, 1, 1, 0, 0, 0)) Year)
               [ "last 2 years"
               , "last two years"
               ]
    , examples (datetimeInterval ((2014, 1, 1, 0, 0, 0), (2017, 1, 1, 0, 0, 0)) Year)
               [ "next 3 years"
               , "next three years"
               ]
    , examples (datetimeInterval ((2013, 7, 13, 0, 0, 0), (2013, 7, 16, 0, 0, 0)) Day)
               [ "July 13-15"
               , "July 13 to 15"
               , "July 13 thru 15"
               , "July 13 through 15"
               , "July 13 - July 15"
               ]
    , examples (datetimeInterval ((2013, 7, 13, 0, 0, 0), (2013, 7, 16, 0, 0, 0)) Day)
               [ "from July 13-15"
               , "from 13 to 15 July"
               , "from 13th to 15th July"
               , "from the 13 to 15 July"
               , "from the 13th to 15th July"
               , "from the 13th to the 15th July"
               , "from the 13 to the 15 July"
               ]
    , examples (datetimeInterval ((2013, 7, 13, 0, 0, 0), (2013, 7, 16, 0, 0, 0)) Day)
               [ "from 13 to 15 of July"
               , "from 13th to 15 of July"
               , "from 13 to 15th of July"
               , "from 13th to 15th of July"
               , "from 13 to the 15 of July"
               , "from 13th to the 15 of July"
               , "from 13 to the 15th of July"
               , "from 13th to the 15th of July"
               , "from the 13 to the 15 of July"
               , "from the 13th to the 15 of July"
               , "from the 13 to the 15th of July"
               , "from the 13th to the 15th of July"
               ]
    , examples (datetimeInterval ((2013, 8, 8, 0, 0, 0), (2013, 8, 13, 0, 0, 0)) Day)
               [ "Aug 8 - Aug 12"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 9, 30, 0), (2013, 2, 12, 11, 1, 0)) Minute)
               [ "9:30 - 11:00"
               , "9h30 - 11h00"
               , "9h30 - 11h"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 13, 30, 0), (2013, 2, 12, 15, 1, 0)) Minute)
               [ "9:30 - 11:00 CST"
               , "9h30 - 11h00 CST"
               , "9h30 - 11h CST"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 13, 0, 0), (2013, 2, 12, 16, 1, 0)) Minute)
               [ "15:00 GMT - 18:00 GMT"
               , "15h00 GMT - 18h00 GMT"
               , "15h GMT - 18h GMT"
               ]
    , examples (datetimeInterval
        ((2015, 3, 28, 17, 00, 0), (2015, 3, 29, 21, 0, 1)) Second)
               [ "2015-03-28 17:00:00/2015-03-29 21:00:00"
               ]
    , examples (datetimeInterval ((2013, 2, 14, 9, 30, 0), (2013, 2, 14, 11, 1, 0)) Minute)
               [ "from 9:30 - 11:00 on Thursday"
               , "between 9:30 and 11:00 on thursday"
               , "between 9h30 and 11h00 on thursday"
               , "9:30 - 11:00 on Thursday"
               , "9h30 - 11h00 on Thursday"
               , "later than 9:30 but before 11:00 on Thursday"
               , "Thursday from 9:30 to 11:00"
               , "from 9:30 untill 11:00 on thursday"
               , "Thursday from 9:30 untill 11:00"
               , "9:30 till 11:00 on Thursday"
               ]
    , examples (datetimeInterval ((2013, 2, 13, 1, 0, 0), (2013, 2, 13, 2, 31, 0)) Minute)
               [ "tomorrow in between 1-2:30 ish"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 15, 0, 0), (2013, 2, 12, 17, 0, 0)) Hour)
               [ "3-4pm"
               , "from 3 to 4 in the PM"
               , "around 3-4pm"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 15, 30, 0), (2013, 2, 12, 18, 1, 0)) Minute)
               [ "3:30 to 6 PM"
               , "3:30-6 p.m."
               , "3:30-6:00pm"
               , "15h30-18h"
               , "from 3:30 to six p.m."
               , "from 3:30 to 6:00pm"
               , "later than 3:30pm but before 6pm"
               , "between 3:30pm and 6 pm"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 15, 0, 0), (2013, 2, 12, 18, 0, 1)) Second)
               [ "3pm - 6:00:00pm"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 8, 0, 0), (2013, 2, 12, 14, 0, 0)) Hour)
               [ "8am - 1pm"
               ]
    , examples (datetimeInterval ((2013, 2, 14, 9, 0, 0), (2013, 2, 14, 12, 0, 0)) Hour)
               [ "Thursday from 9a to 11a"
               , "this Thu 9-11am"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 11, 30, 0), (2013, 2, 12, 13, 31, 0)) Minute)
               [ "11:30-1:30"
               ]
    , examples (datetime (2013, 9, 21, 13, 30, 0) Minute)
               [ "1:30 PM on Sat, Sep 21"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2013, 2, 26, 0, 0, 0)) Second)
               [ "Within 2 weeks"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2013, 2, 12, 14, 0, 0)) Second)
               [ "by 2:00pm"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2013, 2, 13, 0, 0, 0)) Second)
               [ "by EOD"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2013, 3, 1, 0, 0, 0)) Second)
               [ "by EOM"
               , "by the EOM"
               , "by end of the month"
               , "by the end of month"
               ]
    , examples (datetimeInterval ((2013, 2, 21, 0, 0, 0), (2013, 3, 1, 0, 0, 0)) Day)
               [ "EOM"
               , "the EOM"
               , "at the EOM"
               , "the end of the month"
               , "end of the month"
               , "at the end of month"
               ]
    , examples (datetimeInterval ((2013, 2, 1, 0, 0, 0), (2013, 2, 11, 0, 0, 0)) Day)
               [ "BOM"
               , "the BOM"
               , "at the BOM"
               , "beginning of the month"
               , "the beginning of the month"
               , "at the beginning of month"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2013, 4, 1, 0, 0, 0)) Second)
               [ "by the end of next month"
               ]
    , examples (datetime (2013, 2, 12, 13, 0, 0) Minute)
               [ "4pm CET"
               ]
    , examples (datetime (2013, 2, 14, 6, 0, 0) Minute)
               [ "Thursday 8:00 GMT"
               , "Thursday 8:00 gmt"
               , "Thursday 8h00 GMT"
               , "Thursday 8h00 gmt"
               , "Thursday 8h GMT"
               , "Thursday 8h gmt"
               , "Thu at 8 GMT"
               , "Thu at 8 gmt"
               , "Thursday 9 am BST"
               , "Thursday 9 am (BST)"
               ]
    , examples (datetime (2013, 2, 14, 14, 0, 0) Minute)
               [ "Thursday 8:00 PST"
               , "Thursday 8:00 pst"
               , "Thursday 8h00 PST"
               , "Thursday 8h00 pst"
               , "Thursday 8h PST"
               , "Thursday 8h pst"
               , "Thu at 8 am PST"
               , "Thu at 8 am pst"
               , "Thursday at 9:30pm ist"
               ]
    , examples (datetime (2013, 2, 12, 14, 0, 0) Hour)
               [ "today at 2pm"
               , "at 2pm"
               , "this afternoon at 2"
               , "this evening at 2"
               , "tonight at 2"
               ]
    , examples (datetime (2013, 2, 13, 15, 0, 0) Hour)
               [ "3pm tomorrow"
               ]
    , examples (datetime (2013, 2, 12, 5, 30, 0) Minute)
               [ "today in one hour"
               ]
    , examples (datetimeOpenInterval After (2013, 2, 12, 4, 30, 0) Second)
               [ "ASAP"
               , "as soon as possible"
               ]
    , examples (datetimeOpenInterval Before (2013, 2, 12, 14, 0, 0) Minute)
               [ "until 2:00pm"
               , "through 2:00pm"
               ]
    , examples (datetimeOpenInterval After (2013, 2, 12, 14, 0, 0) Hour)
               [ "after 2 pm"
               , "from 2 pm"
               , "since 2pm"
               ]
    , examples (datetimeOpenInterval After (2014, 1, 1, 0, 0, 0) Year)
               [ "anytime after 2014"
               , "since 2014"
               ]
    , examples (datetimeOpenInterval Before (2014, 1, 1, 0, 0, 0) Year)
               [ "sometimes before 2014"
               , "through 2014"
               ]
    , examples (datetimeOpenInterval After (2013, 2, 17, 4, 0, 0) Hour)
               [ "after 5 days"
               ]
    , examples (datetimeOpenInterval Before (2013, 2, 12, 11, 0, 0) Hour)
               [ "before 11 am"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 12, 0, 0), (2013, 2, 12, 19, 0, 0)) Hour)
               [ "in the afternoon"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 8, 0, 0), (2013, 2, 12, 19, 0, 0)) Hour)
               [ "8am until 6"
               ]
    , examples (datetime (2013, 2, 12, 13, 30, 0) Minute)
               [ "at 1:30pm"
               , "1:30pm"
               , "at 13h30"
               , "13h30"
               ]
    , examples (datetime (2013, 2, 12, 4, 45, 0) Second)
               [ "in 15 minutes"
               , "in 15'"
               , "in 15"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 13, 0, 0), (2013, 2, 12, 17, 0, 0)) Hour)
               [ "after lunch"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 15, 0, 0), (2013, 2, 12, 21, 0, 0)) Hour)
               [ "after school"
               ]
    , examples (datetime (2013, 2, 12, 10, 30, 0) Minute)
               [ "10:30"
               , "approximately 1030"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 0, 0, 0), (2013, 2, 12, 12, 0, 0)) Hour)
               [ "this morning"
               ]
    , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
               [ "next monday"
               ]
    , examples (datetime (2013, 2, 12, 12, 0, 0) Hour)
               [ "at 12pm"
               , "at noon"
               , "midday"
               , "the midday"
               , "mid day"
               ]
    , examples (datetime (2013, 2, 13, 0, 0, 0) Hour)
               [ "at 12am"
               , "at midnight"
               , "this morning at 12"
               , "this evening at 12"
               , "this afternoon at 12"
               ]
    , examples (datetime (2013, 2, 13, 9, 0, 0) Hour)
               [ "9 tomorrow morning"
               , "9 tomorrow"
               ]
    , examples (datetime (2013, 2, 13, 21, 0, 0) Hour)
               [ "9 tomorrow evening"
               ]
    , examples (datetime (2013, 3, 1, 0, 0, 0) Month)
               [ "March"
               , "in March"
               , "during March"
               ]
    , examples (datetime (2013, 2, 13, 17, 0, 0) Hour)
               [ "tomorrow afternoon at 5"
               , "at 5 tomorrow afternoon"
               , "at 5pm tomorrow"
               , "tomorrow at 5pm"
               , "tomorrow evening at 5"
               ]
    , examples (datetimeInterval ((2013, 2, 13, 12, 0, 0), (2013, 2, 13, 19, 0, 0)) Hour)
               [ "tomorrow afternoon"
               , "tomorrow afternoonish"
               ]
    , examples (datetimeInterval ((2013, 2, 13, 13, 0, 0), (2013, 2, 13, 15, 0, 0)) Hour)
               [ "1pm-2pm tomorrow"
               ]
    , examples (datetime (2013, 3, 1, 0, 0, 0) Day)
               [ "on the first"
               , "the 1st"
               ]
    , examples (datetime (2013, 2, 12, 10, 30, 0) Minute)
               [ "at 1030"
               , "around 1030"
               , "ten thirty am"
               ]
    , examples (datetime (2013, 2, 12, 19, 30, 0) Minute)
               [ "at 730 in the evening"
               , "seven thirty p.m."
               ]
    , examples (datetime (2013, 2, 13, 1, 50, 0) Minute)
               [ "tomorrow at 150ish"
               ]
    , examples (datetime (2013, 2, 12, 23, 0, 0) Hour)
               [ "tonight at 11"
               , "this evening at 11"
               , "this afternoon at 11"
               , "tonight at 11pm"
               ]
    , examples (datetime (2013, 2, 12, 4, 23, 0) Minute)
      -- yes, the result is in the past, we may need to revisit
               [ "at 4:23"
               , "4:23am"
               , "four twenty-three a m"
               ]
    , examples (datetime (2013, 10, 7, 0, 0, 0) Day)
               [ "the closest Monday to Oct 5th"
               ]
    , examples (datetime (2013, 9, 30, 0, 0, 0) Day)
               [ "the second closest Mon to October fifth"
               ]
    , examples (datetimeInterval ((2013, 3, 1, 0, 0, 0), (2013, 3, 11, 0, 0, 0)) Day)
               [ "early March"
               ]
    , examples (datetimeInterval ((2013, 3, 11, 0, 0, 0), (2013, 3, 21, 0, 0, 0)) Day)
               [ "mid March"
               ]
    , examples (datetimeInterval ((2013, 3, 21, 0, 0, 0), (2013, 4, 1, 0, 0, 0)) Day)
               [ "late March"
               ]
    , examples (datetimeInterval ((2013, 10, 25, 18, 0, 0), (2013, 10, 28, 0, 0, 0)) Hour)
               [ "last weekend of October"
               , "last week-end in October"
               , "last week end of October"
               ]
    , examples (datetimeInterval ((2013, 2, 11, 0, 0, 0), (2013, 2, 17, 0, 0, 0)) Day)
               [ "all week"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 0, 0, 0), (2013, 2, 17, 0, 0, 0)) Day)
               [ "rest of the week"
               ]
    , examples (datetimeInterval ((2013, 7, 26, 18, 0, 0), (2013, 7, 29, 0, 0, 0)) Hour)
               [ "last wkend of July"
               ]
    , examples (datetimeInterval ((2017, 10, 27, 18, 0, 0), (2017, 10, 30, 0, 0, 0)) Hour)
               [ "last weekend of October 2017"
               ]
    , examples (datetimeInterval ((2013, 8, 27, 0, 0, 0), (2013, 8, 30, 0, 0, 0)) Day)
               [ "August 27th - 29th"
               , "from August 27th - 29th"
               ]
    , examples (datetimeInterval ((2013, 10, 23, 0, 0, 0), (2013, 10, 27, 0, 0, 0)) Day)
               [ "23rd to 26th Oct"
               ]
    , examples (datetimeInterval ((2013, 9, 1, 0, 0, 0), (2013, 9, 9, 0, 0, 0)) Day)
               [ "1-8 september"
               ]
    , examples (datetimeInterval ((2013, 9, 12, 0, 0, 0), (2013, 9, 17, 0, 0, 0)) Day)
               [ "12 to 16 september"
               ]
    , examples (datetimeInterval ((2013, 8, 19, 0, 0, 0), (2013, 8, 22, 0, 0, 0)) Day)
               [ "19th To 21st aug"
               ]
    , examples (datetimeInterval ((2013, 4, 21, 0, 0, 0), (2013, 5, 1, 0, 0, 0)) Day)
               [ "end of April"
               , "at the end of April"
               ]
    , examples (datetimeInterval ((2014, 1, 1, 0, 0, 0), (2014, 1, 11, 0, 0, 0)) Day)
               [ "beginning of January"
               , "at the beginning of January"
               ]
    , examples (datetimeInterval ((2012, 9, 1, 0, 0, 0), (2013, 1, 1, 0, 0, 0)) Month)
               [ "end of 2012"
               , "at the end of 2012"
               ]
    , examples (datetimeInterval ((2017, 1, 1, 0, 0, 0), (2017, 4, 1, 0, 0, 0)) Month)
               [ "beginning of 2017"
               , "at the beginning of 2017"
               ]
    , examples (datetimeInterval ((2013, 1, 1, 0, 0, 0), (2013, 4, 1, 0, 0, 0)) Month)
               [ "beginning of year"
               , "the beginning of the year"
               , "the BOY"
               , "BOY"
               ]
    , examples (datetimeInterval ((2013, 2, 12, 4, 30, 0), (2014, 1, 1, 0, 0, 0)) Second)
               [ "by EOY"
               , "by the EOY"
               , "by end of the year"
               , "by the end of year"
               ]
    , examples (datetimeInterval ((2013, 9, 1, 0, 0, 0), (2014, 1, 1, 0, 0, 0)) Month)
               [ "EOY"
               , "the EOY"
               , "at the EOY"
               , "the end of the year"
               , "end of the year"
               , "at the end of year"
               ]
    , examples (datetimeInterval ((2013, 2, 11, 0, 0, 0), (2013, 2, 14, 0, 0, 0)) Day)
               [ "beginning of this week"
               , "beginning of current week"
               , "at the beginning of this week"
               , "at the beginning of current week"
               ]
    , examples (datetimeInterval ((2013, 2, 18, 0, 0, 0), (2013, 2, 21, 0, 0, 0)) Day)
               [ "beginning of coming week"
               , "at the beginning of coming week"
               ]
    , examples (datetimeInterval ((2013, 2, 4, 0, 0, 0), (2013, 2, 7, 0, 0, 0)) Day)
               [ "beginning of last week"
               , "beginning of past week"
               , "beginning of previous week"
               , "at the beginning of last week"
               , "at the beginning of past week"
               , "at the beginning of previous week"
               ]
    , examples (datetimeInterval ((2013, 2, 18, 0, 0, 0), (2013, 2, 21, 0, 0, 0)) Day)
               [ "beginning of next week"
               , "beginning of the following week"
               , "beginning of around next week"
               , "at the beginning of next week"
               , "at the beginning of the following week"
               , "at the beginning of around next week"
               ]
    , examples (datetimeInterval ((2013, 2, 15, 0, 0, 0), (2013, 2, 18, 0, 0, 0)) Day)
               [ "end of this week"
               , "end of current week"
               , "at the end of this week"
               , "at the end of current week"
               ]
     , examples (datetimeInterval ((2013, 2, 22, 0, 0, 0), (2013, 2, 25, 0, 0, 0)) Day)
               [ "end of coming week"
               , "at the end of coming week"
               ]
    , examples (datetimeInterval ((2013, 2, 8, 0, 0, 0), (2013, 2, 11, 0, 0, 0)) Day)
               [ "end of last week"
               , "end of past week"
               , "end of previous week"
               , "at the end of last week"
               , "at the end of past week"
               , "at the end of previous week"
               ]
    , examples (datetimeInterval ((2013, 2, 22, 0, 0, 0), (2013, 2, 25, 0, 0, 0)) Day)
               [ "end of next week"
               , "end of the following week"
               , "end of around next week"
               , "at the end of next week"
               , "at the end of the following week"
               , "at the end of around next week"
               ]
    , examples (datetimeHoliday (2014, 1, 31, 0, 0, 0) Day "Chinese New Year")
               [ "chinese new year"
               , "chinese lunar new year's day"
               ]
    , examples (datetimeHoliday (2013, 2, 10, 0, 0, 0) Day "Chinese New Year")
               [ "last chinese new year"
               , "last chinese lunar new year's day"
               , "last chinese new years"
               ]
    , examples (datetimeHoliday (2018, 2, 16, 0, 0, 0) Day "Chinese New Year")
               [ "chinese new year's day 2018"
               ]
    , examples (datetimeHoliday (2018, 9, 18, 0, 0, 0) Day "Yom Kippur")
               [ "yom kippur 2018"
               ]
    , examples (datetimeHoliday (2018, 9, 30, 0, 0, 0) Day "Shemini Atzeret")
               [ "shemini atzeret 2018"
               ]
    , examples (datetimeHoliday (2018, 10, 1, 0, 0, 0) Day "Simchat Torah")
               [ "simchat torah 2018"
               ]
    , examples (datetimeHoliday (2018, 7, 21, 0, 0, 0) Day "Tisha B'Av")
               [ "tisha b'av 2018"
               ]
    , examples (datetimeHoliday (2018, 4, 18, 0, 0, 0) Day "Yom Ha'atzmaut")
               [ "yom haatzmaut 2018"
               ]
    , examples (datetimeHoliday (2017, 5, 13, 0, 0, 0) Day "Lag BaOmer")
               [ "lag b'omer 2017"
               ]
    , examples (datetimeHoliday (2018, 4, 11, 0, 0, 0) Day "Yom HaShoah")
               [ "Yom Hashoah 2018"
               , "Holocaust Day 2018"
               ]
    , examples (datetimeIntervalHoliday ((2018, 9, 9, 0, 0, 0), (2018, 9, 12, 0, 0, 0)) Day "Rosh Hashanah")
               [ "rosh hashanah 2018"
               , "rosh hashana 2018"
               , "rosh hashanna 2018"
               ]
    , examples (datetimeIntervalHoliday ((2018, 12, 2, 0, 0, 0), (2018, 12, 10, 0, 0, 0)) Day "Hanukkah")
               [ "Chanukah 2018"
               , "hanukah 2018"
               , "hannukkah 2018"
               ]
    , examples (datetimeIntervalHoliday ((2018, 3, 30, 0, 0, 0), (2018, 4, 8, 0, 0, 0)) Day "Passover")
               [ "passover 2018"
               ]
    , examples (datetimeIntervalHoliday ((2018, 9, 23, 0, 0, 0), (2018, 10, 2, 0, 0, 0)) Day "Sukkot")
               [ "feast of the ingathering 2018"
               , "succos 2018"
               ]
    , examples (datetimeIntervalHoliday ((2018, 5, 19, 0, 0, 0), (2018, 5, 22, 0, 0, 0)) Day "Shavuot")
               [ "shavuot 2018"
               ]
    , examples (datetimeHoliday (2017, 11, 30, 0, 0, 0) Day "Mawlid")
               [ "mawlid al-nabawi 2017"
               ]
    , examples (datetimeHoliday (1950, 7, 16, 0, 0, 0) Day "Eid al-Fitr")
               [ "Eid al-Fitr 1950"
               ]
    , examples (datetimeHoliday (1975, 10, 6, 0, 0, 0) Day "Eid al-Fitr")
               [ "Eid al-Fitr 1975"
               ]
    , examples (datetimeHoliday (1988, 5, 16, 0, 0, 0) Day "Eid al-Fitr")
               [ "Eid al-Fitr 1988"
               ]
    , examples (datetimeHoliday (2018, 6, 15, 0, 0, 0) Day "Eid al-Fitr")
               [ "Eid al-Fitr 2018"
               ]
    , examples (datetimeHoliday (2034, 12, 12, 0, 0, 0) Day "Eid al-Fitr")
               [ "Eid al-Fitr 2034"
               ]
    , examples (datetimeHoliday (2046, 8, 4, 0, 0, 0) Day "Eid al-Fitr")
               [ "Eid al-Fitr 2046"
               ]
    , examples (datetimeHoliday (2050, 6, 21, 0, 0, 0) Day "Eid al-Fitr")
               [ "Eid al-Fitr 2050"
               ]
    , examples (datetimeHoliday (2018, 8, 21, 0, 0, 0) Day "Eid al-Adha")
               [ "Eid al-Adha 2018"
               , "id ul-adha 2018"
               , "sacrifice feast 2018"
               , "Bakr Id 2018"
               ]
    , examples (datetimeHoliday (1980, 10, 19, 0, 0, 0) Day "Eid al-Adha")
               [ "Eid al-Adha 1980"
               , "id ul-adha 1980"
               , "sacrifice feast 1980"
               , "Bakr Id 1980"
               ]
    , examples (datetimeHoliday (1966, 4, 1, 0, 0, 0) Day "Eid al-Adha")
               [ "Eid al-Adha 1966"
               , "id ul-adha 1966"
               , "sacrifice feast 1966"
               , "Bakr Id 1966"
               ]
    , examples (datetimeHoliday (1974, 1, 3, 0, 0, 0) Day "Eid al-Adha")
               [ "Eid al-Adha 1974"
               , "id ul-adha 1974"
               , "sacrifice feast 1974"
               , "Bakr Id 1974"
               ]
    , examples (datetimeHoliday (2017, 6, 22, 0, 0, 0) Day "Laylat al-Qadr")
               [ "laylat al kadr 2017"
               , "night of measures 2017"
               ]
    , examples (datetimeHoliday (2018, 6, 11, 0, 0, 0) Day "Laylat al-Qadr")
               [ "laylat al-qadr 2018"
               , "night of power 2018"
               ]
    , examples (datetimeHoliday (2018, 9, 11, 0, 0, 0) Day "Islamic New Year")
               [ "Islamic New Year 2018"
               , "Amun Jadid 2018"
               ]
    , examples (datetimeHoliday (2017, 9, 30, 0, 0, 0) Day "Ashura")
               [ "day of Ashura 2017"
               ]
    , examples (datetimeHoliday (2018, 1, 30, 0, 0, 0) Day "Tu BiShvat")
               [ "tu bishvat 2018"
               ]
    , examples (datetimeHoliday (2017, 6, 23, 0, 0, 0) Day "Jumu'atul-Wida")
               [ "Jamat Ul-Vida 2017"
               , "Jumu'atul-Wida 2017"
               ]
    , examples (datetimeHoliday (2018, 6, 8, 0, 0, 0) Day "Jumu'atul-Wida")
               [ "Jamat Ul-Vida 2018"
               , "Jumu'atul-Wida 2018"
               ]
    , examples (datetimeHoliday (2018, 4, 13, 0, 0, 0) Day "Isra and Mi'raj")
               [ "isra and mi'raj 2018"
               , "the prophet's ascension 2018"
               ]
    , examples (datetimeHoliday (2019, 4, 3, 0, 0, 0) Day "Isra and Mi'raj")
               [ "the night journey 2019"
               , "ascension to heaven 2019"
               ]
    , examples (datetimeIntervalHoliday ((1950, 6, 17, 0, 0, 0), (1950, 7, 16, 0, 0, 0)) Day "Ramadan")
               [ "Ramadan 1950"
               ]
    , examples (datetimeIntervalHoliday ((1977, 8, 15, 0, 0, 0), (1977, 9, 14, 0, 0, 0)) Day "Ramadan")
               [ "Ramadan 1977"
               ]
    , examples (datetimeIntervalHoliday ((2018, 5, 16, 0, 0, 0), (2018, 6, 15, 0, 0, 0)) Day "Ramadan")
               [ "Ramadan 2018"
               ]
   , examples (datetimeIntervalHoliday ((2034, 11, 12, 0, 0, 0), (2034, 12, 12, 0, 0, 0)) Day "Ramadan")
               [ "Ramadan 2034"
               ]
   , examples (datetimeIntervalHoliday ((2046, 7, 5, 0, 0, 0), (2046, 8, 4, 0, 0, 0)) Day "Ramadan")
               [ "Ramadan 2046"
               ]
   , examples (datetimeIntervalHoliday ((2050, 5, 22, 0, 0, 0), (2050, 6, 21, 0, 0, 0)) Day "Ramadan")
               [ "Ramadan 2050"
               ]
    , examples (datetimeHoliday (2017, 10, 17, 0, 0, 0) Day "Dhanteras")
               [ "dhanatrayodashi in 2017"
               ]
    , examples (datetimeHoliday (2019, 10, 25, 0, 0, 0) Day "Dhanteras")
               [ "dhanteras 2019"
               ]
    , examples (datetimeHoliday (2019, 10, 26, 0, 0, 0) Day "Naraka Chaturdashi")
               [ "kali chaudas 2019"
               , "choti diwali two thousand nineteen"
               ]
    , examples (datetimeHoliday (2019, 10, 27, 0, 0, 0) Day "Diwali")
               [ "diwali 2019"
               , "Deepavali in 2019"
               , "Lakshmi Puja six years hence"
               ]
    , examples (datetimeHoliday (2019, 10, 29, 0, 0, 0) Day "Bhai Dooj")
               [ "bhai dooj 2019"
               ]
    , examples (datetimeHoliday (2019, 11, 2, 0, 0, 0) Day "Chhath")
               [ "chhath 2019"
               , "dala puja 2019"
               , "Surya Shashthi in 2019"
               ]
    , examples (datetimeHoliday (2021, 10, 12, 0, 0, 0) Day "Maha Saptami")
               [ "Maha Saptami 2021"
               ]
    , examples (datetimeHoliday (2018, 10, 18, 0, 0, 0) Day "Vijayadashami")
               [ "Dussehra 2018"
               , "vijayadashami in five years"
               ]
    , examples (datetimeIntervalHoliday ((2018, 10, 9, 0, 0, 0), (2018, 10, 19, 0, 0, 0)) Day "Navaratri")
               [ "navaratri 2018"
               , "durga puja in 2018"
               ]
    , examples (datetimeHoliday (2018, 10, 27, 0, 0, 0) Day "Karva Chauth")
               [ "karva chauth 2018"
               , "karva chauth in 2018"
               ]
    , examples (datetimeHoliday (2018, 7, 14, 0, 0, 0) Day "Ratha-Yatra")
               [ "ratha-yatra 2018"
               ]
    , examples (datetimeHoliday (2018, 8, 26, 0, 0, 0) Day "Raksha Bandhan")
               [ "rakhi 2018"
               ]
    , examples (datetimeHoliday (2020, 4, 6, 0, 0, 0) Day "Mahavir Jayanti")
               [ "mahavir jayanti 2020"
               , "mahaveer janma kalyanak 2020"
               ]
    , examples (datetimeHoliday (2020, 2, 21, 0, 0, 0) Day "Maha Shivaratri")
                [ "maha shivaratri 2020"
                ]
    , examples (datetimeHoliday (2018, 2, 10, 0, 0, 0) Day "Dayananda Saraswati Jayanti")
               [ "saraswati jayanti 2018"
               ]
    , examples (datetimeHoliday (2018, 1, 14, 0, 0, 0) Day "Thai Pongal")
               [ "pongal 2018"
               , "makara sankranthi 2018"
               ]
    , examples (datetimeHoliday (2018, 1, 13, 0, 0, 0) Day "Boghi")
               [ "bogi pandigai 2018"
               ]
    , examples (datetimeHoliday (2018, 1, 15, 0, 0, 0) Day "Mattu Pongal")
               [ "maattu pongal 2018"
               ]
    , examples (datetimeHoliday (2018, 1, 16, 0, 0, 0) Day "Kaanum Pongal")
               [ "kaanum pongal 2018"
               , "kanni pongal 2018"
               ]
    , examples (datetimeHoliday (2019, 1, 15, 0, 0, 0) Day "Thai Pongal")
               [ "makar sankranti 2019"
               , "maghi in 2019"
               ]
    , examples (datetimeHoliday (2018, 4, 14, 0, 0, 0) Day "Vaisakhi")
               [ "Vaisakhi 2018"
               , "baisakhi in 2018"
               , "Vasakhi 2018"
               , "vaishakhi 2018"
               ]
    , examples (datetimeHoliday (2018, 8, 24, 0, 0, 0) Day "Thiru Onam")
               [ "onam 2018"
               , "Thiru Onam 2018"
               , "Thiruvonam 2018"
               ]
    , examples (datetimeHoliday (2019, 2, 10, 0, 0, 0) Day "Vasant Panchami")
               [ "vasant panchami in 2019"
               , "basant panchami 2019"
               ]
    , examples (datetimeHoliday (2019, 3, 20, 0, 0, 0) Day "Holika Dahan")
               [ "chhoti holi 2019"
               , "holika dahan 2019"
               , "kamudu pyre 2019"
               ]
    , examples (datetimeHoliday (2019, 8, 23, 0, 0, 0) Day "Krishna Janmashtami")
              [ "krishna janmashtami 2019"
              , "gokulashtami 2019"
              ]
    , examples (datetimeHoliday (2019, 3, 21, 0, 0, 0) Day "Holi")
               [ "holi 2019"
               , "dhulandi 2019"
               , "phagwah 2019"
               ]
    , examples (datetimeHoliday (2018, 8, 17, 0, 0, 0) Day "Parsi New Year")
               [ "Parsi New Year 2018"
               , "Jamshedi Navroz 2018"
               ]
    , examples (datetimeHoliday (2022, 8, 16, 0, 0, 0) Day "Parsi New Year")
               [ "jamshedi Navroz 2022"
               , "parsi new year 2022"
               ]
    , examples (datetimeIntervalHoliday ((2013, 4, 26, 0, 0, 0), (2013, 4, 29, 0, 0, 0)) Day "Global Youth Service Day")
               [ "GYSD 2013"
               , "global youth service day"
               ]
    , examples (datetimeHoliday (2013, 5, 24, 0, 0, 0) Day "Vesak")
               [ "vesak"
               , "vaisakha"
               , "Buddha day"
               , "Buddha Purnima"
               ]
    , examples (datetimeIntervalHoliday ((2013, 3, 23, 20, 30, 0), (2013, 3, 23, 21, 31, 0)) Minute "Earth Hour")
               [ "earth hour"
               ]
    , examples (datetimeIntervalHoliday ((2016, 3, 19, 20, 30, 0), (2016, 3, 19, 21, 31, 0)) Minute "Earth Hour")
               [ "earth hour 2016"
               ]
    , examples (datetimeHoliday (2013, 2, 23, 0, 0, 0) Day "Purim")
               [ "purim"
               ]
    , examples (datetimeHoliday (2013, 2, 24, 0, 0, 0) Day "Shushan Purim")
               [ "Shushan Purim"
               ]
    , examples (datetimeHoliday (2014, 1, 7, 0, 0, 0) Day "Guru Gobind Singh Jayanti")
               [ "guru gobind singh birthday"
               , "guru gobind singh jayanti 2014"
               , "guru gobind singh jayanti"
               , "Guru Govind Singh Jayanti"
               ]
    , examples (datetimeHoliday (2018, 4, 27, 0, 0, 0) Day "King's Day")
              [ "Koningsdag 2018"
              , "koningsdag 2018"
              , "king's day 2018"
              , "King's Day 2018"
              ]
    , examples (datetimeHoliday (2014, 4, 26, 0, 0, 0) Day "King's Day")
              [ "Koningsdag 2014"
              , "koningsdag 2014"
              , "King's Day 2014"
              , "king's day 2014"
              ]
    , examples (datetimeHoliday (2018, 5, 9, 0, 0, 0) Day "Rabindra Jayanti")
              [ "rabindra jayanti 2018"
              , "Rabindranath Jayanti 2018"
              , "Rabindra Jayanti 2018"
              ]
    , examples (datetimeHoliday (2019, 5, 9, 0, 0, 0) Day "Rabindra Jayanti")
              [ "rabindra jayanti 2019"
              , "Rabindranath Jayanti 2019"
              , "Rabindra Jayanti 2019"
              ]
    , examples (datetimeHoliday (2018, 1, 31, 0, 0, 0) Day "Guru Ravidass Jayanti")
              [ "guru Ravidas jayanti 2018"
              , "Guru Ravidass birthday 2018"
              , "guru ravidass Jayanti 2018"
              ]
    , examples (datetimeHoliday (2019, 2, 19, 0, 0, 0) Day "Guru Ravidass Jayanti")
              [ "Guru Ravidass Jayanti 2019"
              , "Guru Ravidas Birthday 2019"
              , "guru ravidas jayanti 2019"
              ]
    , examples (datetimeHoliday (2019, 10, 13, 0, 0, 0) Day "Pargat Diwas")
              [ "valmiki jayanti 2019"
              , "Valmiki Jayanti 2019"
              , "pargat diwas 2019"
              ]
    , examples (datetimeHoliday (2018, 10, 24, 0, 0, 0) Day "Pargat Diwas")
              [ "maharishi valmiki jayanti 2018"
              , "pargat diwas 2018"
              , "Pargat Diwas 2018"
              ]
    , examples (datetimeHoliday (2019, 9, 2, 0, 0, 0) Day "Ganesh Chaturthi")
              [ "ganesh chaturthi 2019"
              ]
    , examples (datetimeHoliday (2020, 4, 2, 0, 0, 0) Day "Rama Navami")
              [ "rama navami 2020"
              ]
    , examples (datetimeHoliday (2018, 3, 18, 0, 0, 0) Day "Ugadi")
              [ "Ugadi 2018"
              , "ugadi 2018"
              , "yugadi 2018"
              , "Yugadi 2018"
              , "samvatsaradi 2018"
              , "chaitra sukladi 2018"
              , "chaitra sukhladi 2018"
              ]
    , examples (datetimeHoliday (2012, 12, 25, 0, 0, 0) Day "Christmas")
              [ "the closest xmas to today"
              ]
    , examples (datetimeHoliday (2013, 12, 25, 0, 0, 0) Day "Christmas")
              [ "the second closest xmas to today"
              ]
    , examples (datetimeHoliday (2011, 12, 25, 0, 0, 0) Day "Christmas")
              [ "the 3rd closest xmas to today"
              ]
    , examples (datetime (2013, 10, 25, 0, 0, 0) Day)
              [ "last friday of october"
              , "last friday in october"
              ]
    , examples (datetime (2013, 2, 25, 0, 0, 0) Week)
              [ "upcoming two weeks"
              , "upcoming two week"
              , "upcoming 2 weeks"
              , "upcoming 2 week"
              , "two upcoming weeks"
              , "two upcoming week"
              , "2 upcoming weeks"
              , "2 upcoming week"
              ]
    , examples (datetime (2013, 2, 14, 0, 0, 0) Day)
              [ "upcoming two days"
              , "upcoming two day"
              , "upcoming 2 days"
              , "upcoming 2 day"
              , "two upcoming days"
              , "two upcoming day"
              , "2 upcoming days"
              , "2 upcoming day"
              ]
    , examples (datetime (2013, 4, 1, 0, 0, 0) Month)
              [ "upcoming two months"
              , "upcoming two month"
              , "upcoming 2 months"
              , "upcoming 2 month"
              , "two upcoming months"
              , "two upcoming month"
              , "2 upcoming months"
              , "2 upcoming month"
              ]
    , examples (datetime (2013, 7, 1, 0, 0, 0) Quarter)
              [ "upcoming two quarters"
              , "upcoming two quarter"
              , "upcoming 2 quarters"
              , "upcoming 2 quarter"
              , "two upcoming quarters"
              , "two upcoming quarter"
              , "2 upcoming quarters"
              , "2 upcoming quarter"
              ]
    , examples (datetime (2015, 1, 1, 0, 0, 0) Year)
              [ "upcoming two years"
              , "upcoming two year"
              , "upcoming 2 years"
              , "upcoming 2 year"
              , "two upcoming years"
              , "two upcoming year"
              , "2 upcoming years"
              , "2 upcoming year"
              ]
    , examples (datetime (2013, 2, 13, 13, 40, 0) Minute)
               [ "20 minutes to 2pm tomorrow"
               ]
    , examples (datetime (2013, 1, 7, 0, 0, 0) Day)
               [
                 "first monday of last month"
               ]
    , examples (datetime (2013, 1, 1, 0, 0, 0) Day)
               [
                 "first tuesday of last month"
               ]
    , examples (datetime (2013, 1, 14, 0, 0, 0) Day)
               [
                 "second monday of last month"
               ]
    , examples (datetime (2013, 2, 23, 0, 0, 0) Day)
               [ "next saturday" ]
    , examples (datetime (2013, 2, 18, 0, 0, 0) Day)
               [ "next monday" ]
    ]
  