{"version":3,"sources":["jsdelivr-header.js","/npm/moment-guess@1.2.4/dist/bundle.js"],"names":[],"mappings":"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","file":"/npm/moment-guess@1.2.4/dist/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/moment-guess@1.2.4/dist/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nclass Token {\n    constructor(value, type) {\n        this._value = value;\n        this._type = type;\n        this._format = '';\n    }\n    get value() {\n        return this._value;\n    }\n    set value(value) {\n        this._value = value;\n    }\n    get type() {\n        return this._type;\n    }\n    set type(type) {\n        this._type = type;\n    }\n    get format() {\n        return this._format;\n    }\n    set format(format) {\n        this._format = format;\n    }\n}\n\nclass Parser {\n    constructor(name, pattern) {\n        this.name = name;\n        this.pattern = pattern;\n    }\n    parse(date) {\n        const match = this.pattern.exec(date);\n        if (!match || !match.groups) {\n            return;\n        }\n        let tokens = [];\n        for (const [key, val] of Object.entries(match.groups)) {\n            if (val) {\n                tokens.push(new Token(val, /delim\\d+/.test(key) ? 'delimiter' : key));\n            }\n        }\n        return {\n            tokens: tokens,\n            index: match.index,\n            parser: this.name,\n        };\n    }\n}\n\nconst abbreviatedTimezones = 'UT|'\n    + 'CAT|CET|CVT|EAT|EET|GMT|MUT|RET|SAST|SCT|WAST|WAT|WEST|WET|WST|WT|'\n    + 'ADT|AFT|ALMT|AMST|AMT|ANAST|ANAT|AQTT|AST|AZST|AZT|BNT|BST|BTT|CHOST|CHOT|'\n    + 'CST|EEST|EET|GET|GST|HKT|HOVST|HOVT|ICT|IDT|IRDT|IRKST|IRKT|IST|JST|KGT|KRAST|'\n    + 'KRAT|KST|MAGST|MAGT|MMT|MSK|MVT|NOVST|NOVT|NPT|OMSST|OMST|ORAT|PETST|PETT|PHT|'\n    + 'PKT|PYT|QYZT|SAKT|SGT|SRET|TJT|TLT|TMT|TRT|ULAST|ULAT|UZT|VLAST|VLAT|WIB|WIT|'\n    + 'YAKST|YAKT|YEKST|YEKT|'\n    + 'ART|CAST|CEST|CLST|CLT|DAVT|DDUT|GMT|MAWT|NZDT|NZST|ROTT|SYOT|VOST|'\n    + 'ADT|AST|AT|AZOST|AZOT|'\n    + 'ACDT|ACST|ACT|ACWST|AEDT|AEST|AET|AWDT|AWST|CXT|LHDT|LHST|NFDT|NFT|'\n    + 'AST|AT|CDT|CIDST|CIST|CST|EDT|EST|ET|'\n    + 'CST|CT|EST|ET|'\n    + 'BST|CEST|CET|EEST|EET|FET|GET|GMT|IST|KUYT|MSD|MSK|SAMT|TRT|WEST|WET|'\n    + 'CCT|EAT|IOT|TFT|'\n    + 'ADT|AKDT|AKST|AST|AT|CDT|CST|CT|EDT|EGST|EGT|ET|GMT|HDT|HST|MDT|MST|MT|NDT|NST|PDT|PMDT|PMST|PST|PT|WGST|WGT|'\n    + 'AoE|BST|CHADT|CHAST|CHUT|CKT|ChST|EASST|EAST|FJST|FJT|GALT|GAMT|GILT|HST|KOST|LINT|MART|'\n    + 'MHT|NCT|NRT|NUT|NZDT|NZST|PGT|PHOT|PONT|PST|PWT|SBT|SST|TAHT|TKT|TOST|TOT|TVT|VUT|WAKT|WFT|WST|YAPT|'\n    + 'ACT|AMST|AMT|ART|BOT|BRST|BRT|CLST|CLT|COT|ECT|FKST|FKT|FNT|GFT|GST|GYT|PET|PYST|PYT|SRT|UYST|UYT|VET|WARST';\nconst dayOfMonthAndMonthNameDateFormatParser = new Parser('DayOfMonthAndMonthNameDateFormatParser', new RegExp('^'\n    + '(?<dayOfWeek>(?:Sun?|Mon?|Tu(?:es)?|We(?:dnes)?|Th(?:urs)?|Fri?|Sa(?:tur)?)(?:day)?)?'\n    + '(?<delim1>,)?'\n    + '(?<delim2>\\\\s)?'\n    + '(?<dayOfMonth>(?:3[0-1]|[1-2]\\\\d|0?[1-9])(?:st|nd|rd|th)?)'\n    + '(?<delim3>\\\\s)'\n    + '(?<month>Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?'\n    + '|'\n    + 'July?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)'\n    + '(?<delim4>,)?'\n    + '(?<delim5>\\\\s)?'\n    + '(?<year>\\\\d{4}|\\\\d{2})?'\n    + '(?:'\n    + '(?<delim6>,)?'\n    + '(?<delim7>\\\\s)'\n    + '(?:(?<twentyFourHour>2[0-3]|0?\\\\d|1\\\\d)|(?<twelveHour>0?[1-9]|1[0-2]))'\n    + '(?:'\n    + '(?<delim8>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim9>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim10>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?<delim11>\\\\s)?'\n    + '(?<meridiem>am|pm|AM|PM)?'\n    + '(?:'\n    + '(?<delim12>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + ')?'\n    + '$'));\nconst iSO8601BasicDateTimeFormatParser = new Parser('ISO8601BasicDateTimeFormatParser', new RegExp('^'\n    + '(?<year>[+-]\\\\d{6}|\\\\d{4})'\n    + '(?:'\n    + '(?<month>\\\\d{2})(?:(?<dayOfMonth>\\\\d{2}))?'\n    + '|'\n    + '(?<escapeText>W)(?<isoWeekOfYear>\\\\d{2})(?:(?<isoDayOfWeek>\\\\d))?'\n    + '|'\n    + '(?<dayOfYear>\\\\d{3})'\n    + ')?'\n    + '(?:'\n    + '(?<delim1>T| )'\n    + '(?:(?<twentyFourHour>\\\\d{2})(?:(?<minute>\\\\d{2})(?:(?<second>\\\\d{2})(?:(?<delim2>[.,])(?<millisecond>\\\\d{1,9}))?)?)?)'\n    + '(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z)?'\n    + ')?'\n    + '$'));\nconst iSO8601ExtendedDateTimeFormatParser = new Parser('ISO8601ExtendedDateTimeFormatParser', new RegExp('^'\n    + '(?<year>[+-]\\\\d{6}|\\\\d{4})'\n    + '(?<delim1>\\\\-)'\n    + '(?:'\n    + '(?<month>\\\\d{2})(?:(?<delim2>\\\\-)(?<dayOfMonth>\\\\d{2}))?'\n    + '|'\n    + '(?<escapeText>W)(?<isoWeekOfYear>\\\\d{2})(?:(?<delim3>\\\\-)(?<isoDayOfWeek>\\\\d))?'\n    + '|'\n    + '(?<dayOfYear>\\\\d{3})'\n    + ')'\n    + '(?:'\n    + '(?<delim4>T| )'\n    + '(?:(?<twentyFourHour>\\\\d{2})(?:(?<delim5>:)(?<minute>\\\\d{2})(?:(?<delim6>:)(?<second>\\\\d{2})(?:(?<delim7>[.,])(?<millisecond>\\\\d{1,9}))?)?)?)'\n    + '(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z)?'\n    + ')?'\n    + '$'));\nconst monthNameAndDayOfMonthDateFormatParser = new Parser('MonthNameAndDayOfMonthDateFormatParser', new RegExp('^'\n    + '(?<dayOfWeek>(?:Sun?|Mon?|Tu(?:es)?|We(?:dnes)?|Th(?:urs)?|Fri?|Sa(?:tur)?)(?:day)?)?'\n    + '(?<delim1>,)?'\n    + '(?<delim2>\\\\s)?'\n    + '(?<month>Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?'\n    + '|'\n    + 'July?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)'\n    + '(?<delim3>\\\\s)'\n    + '(?<dayOfMonth>(?:3[0-1]|[1-2]\\\\d|0?[1-9])(?:st|nd|rd|th)?)'\n    + '(?<delim4>,)?'\n    + '(?<delim5>\\\\s)?'\n    + '(?<year>\\\\d{4}|\\\\d{2})?'\n    + '(?:'\n    + '(?:'\n    + '(?<delim6>,)?'\n    + '(?<delim7>\\\\s)'\n    + '(?:(?<twentyFourHour>2[0-3]|0?\\\\d|1\\\\d)|(?<twelveHour>0?[1-9]|1[0-2]))'\n    + '(?:'\n    + '(?<delim8>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim9>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim10>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?<delim11>\\\\s)?'\n    + '(?<meridiem>am|pm|AM|PM)?'\n    + '(?:'\n    + '(?<delim12>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + ')?'\n    + ')?'\n    + '$'));\nconst rFC2822DateTimeFormatParser = new Parser('RFC2822DateTimeFormatParser', new RegExp('^'\n    + '(?:(?<dayOfWeek>Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?<delim1>,)?(?<delim2>\\\\s))?'\n    + '(?<dayOfMonth>\\\\d{1,2})(?<delim3>\\\\s)(?<month>Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?<delim4>\\\\s)(?<year>\\\\d{2,4})'\n    + '(?<delim5>\\\\s)'\n    + '(?<twentyFourHour>\\\\d{2})(?<delim6>:)(?<minute>\\\\d{2})(?:(?<delim7>:)(?<second>\\\\d{2}))?'\n    + '(?<delim8>\\\\s)'\n    + '(?<timezone>(?:(?:UT|GMT|[ECMP][SD]T)|[Zz]|[+-]\\\\d{4}))'\n    + '$'));\nconst slashDelimitedDateTimeFormatParser = new Parser('SlashDelimitedDateFormatParser', new RegExp('^'\n    + '(?<year>\\\\d{4}|\\\\d{2})'\n    + '(?<delim1>[/.-])'\n    + '(?<month>0?[1-9]|1[0-2])'\n    + '(?:'\n    + '(?<delim2>[/.-])'\n    + '(?<dayOfMonth>0?[1-9]|[1-2]\\\\d|3[0-1])'\n    + ')?'\n    + '(?:'\n    + '(?:'\n    + '(?<delim3>,)?'\n    + '(?<delim4>\\\\s)'\n    + '(?:(?<twentyFourHour>2[0-3]|0?\\\\d|1\\\\d)|(?<twelveHour>0?[1-9]|1[0-2]))'\n    + '(?:'\n    + '(?<delim5>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim6>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim7>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?<delim8>\\\\s)?'\n    + '(?<meridiem>am|pm|AM|PM)?'\n    + '(?:'\n    + '(?<delim9>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + ')?'\n    + ')?'\n    + '$'));\nconst twelveHourTimeFormatParser = new Parser('TwelveHourTimeFormatParser', new RegExp('^'\n    + '(?<twelveHour>0?[1-9]|1[0-2])'\n    + '(?:'\n    + '(?<delim1>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim2>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim3>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?<delim4>\\\\s)?'\n    + '(?<meridiem>am|pm|AM|PM)'\n    + '(?:'\n    + '(?<delim5>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + '$'));\nconst twentyFourHourTimeFormatParser = new Parser('TwentyFourHourTimeFormatParser', new RegExp('^'\n    + '(?<twentyFourHour>2[0-3]|0?\\\\d|1\\\\d)'\n    + '(?<delim1>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + '(?:'\n    + '(?<delim2>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim3>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?:'\n    + '(?<delim4>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + '$'));\nconst uKStyleSlashDelimitedDateTimeFormatParser = new Parser('UKStyleSlashDelimitedDateFormatParser', new RegExp('^'\n    + '(?<dayOfMonth>0?[1-9]|[1-2]\\\\d|3[0-1])'\n    + '(?<delim1>[/.-])'\n    + '(?<month>0?[1-9]|1[0-2])'\n    + '(?:'\n    + '(?<delim2>[/.-])'\n    + '(?<year>\\\\d{4}|\\\\d{2})'\n    + ')?'\n    + '(?:'\n    + '(?:'\n    + '(?<delim3>,)?'\n    + '(?<delim4>\\\\s)'\n    + '(?:(?<twentyFourHour>2[0-3]|0?\\\\d|1\\\\d)|(?<twelveHour>0?[1-9]|1[0-2]))'\n    + '(?:'\n    + '(?<delim5>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim6>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim7>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?<delim8>\\\\s)?'\n    + '(?<meridiem>am|pm|AM|PM)?'\n    + '(?:'\n    + '(?<delim9>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + ')?'\n    + ')?'\n    + '$'));\nconst uSStyleSlashDelimitedDateTimeFormatParser = new Parser('USStyleSlashDelimitedDateFormatParser', new RegExp('^'\n    + '(?<month>0?[1-9]|1[0-2])'\n    + '(?<delim1>[/.-])'\n    + '(?<dayOfMonth>0?[1-9]|[1-2]\\\\d|3[0-1])'\n    + '(?:'\n    + '(?<delim2>[/.-])'\n    + '(?<year>\\\\d{4}|\\\\d{2})'\n    + ')?'\n    + '(?:'\n    + '(?:'\n    + '(?<delim3>,)?'\n    + '(?<delim4>\\\\s)'\n    + '(?:(?<twentyFourHour>2[0-3]|0?\\\\d|1\\\\d)|(?<twelveHour>0?[1-9]|1[0-2]))'\n    + '(?:'\n    + '(?<delim5>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim6>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim7>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?<delim8>\\\\s)?'\n    + '(?<meridiem>am|pm|AM|PM)?'\n    + '(?:'\n    + '(?<delim9>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + ')?'\n    + ')?'\n    + '$'));\nconst dashDelimitedWithMonthNameDateTimeFormatParser = new Parser('DashDelimitedWithMonthNameDateTimeFormatParser', new RegExp('^'\n    + '(?<dayOfMonth>0?[1-9]|[1-2]\\\\d|3[0-1])'\n    + '(?<delim1>-)'\n    + '(?<month>Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?'\n    + '|'\n    + 'July?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)'\n    + '(?<delim2>-)?'\n    + '(?<year>\\\\d{4}|\\\\d{2})?'\n    + '(?:'\n    + '(?:'\n    + '(?<delim3>,)?'\n    + '(?<delim4>\\\\s)'\n    + '(?:(?<twentyFourHour>2[0-3]|0?\\\\d|1\\\\d)|(?<twelveHour>0?[1-9]|1[0-2]))'\n    + '(?:'\n    + '(?<delim5>[:.])'\n    + '(?<minute>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim6>[:.])'\n    + '(?<second>[0-5]\\\\d)'\n    + ')?'\n    + '(?:'\n    + '(?<delim7>.)'\n    + '(?<millisecond>\\\\d{3})'\n    + ')?'\n    + '(?<delim8>\\\\s)?'\n    + '(?<meridiem>am|pm|AM|PM)?'\n    + '(?:'\n    + '(?<delim9>\\\\s)'\n    + `(?<timezone>[+-]\\\\d{2}(?::?\\\\d{2})?|Z|${abbreviatedTimezones})`\n    + ')?'\n    + ')?'\n    + ')?'\n    + '$'));\nconst parsers = [\n    iSO8601ExtendedDateTimeFormatParser,\n    iSO8601BasicDateTimeFormatParser,\n    rFC2822DateTimeFormatParser,\n    slashDelimitedDateTimeFormatParser,\n    uKStyleSlashDelimitedDateTimeFormatParser,\n    uSStyleSlashDelimitedDateTimeFormatParser,\n    monthNameAndDayOfMonthDateFormatParser,\n    dayOfMonthAndMonthNameDateFormatParser,\n    twentyFourHourTimeFormatParser,\n    twelveHourTimeFormatParser,\n    dashDelimitedWithMonthNameDateTimeFormatParser,\n];\n\nclass StandardFormatParsersRefiner {\n    constructor(name) {\n        this.name = name;\n    }\n    refine(parsedResults) {\n        const res = parsedResults.filter(r => {\n            return r.parser === 'ISO8601ExtendedDateTimeFormatParser' ||\n                r.parser === 'ISO8601BasicDateTimeFormatParser' ||\n                r.parser === 'RFC2822DateTimeFormatParser';\n        });\n        if (res.length === 0) {\n            return parsedResults;\n        }\n        return res;\n    }\n}\n\nclass TimeFormatRefiner {\n    constructor(name) {\n        this.name = name;\n    }\n    refine(parsedResults) {\n        parsedResults.forEach(r => {\n            let meridiemExists = false;\n            r.tokens.forEach(t => {\n                if (t.type === 'meridiem') {\n                    meridiemExists = true;\n                }\n            });\n            if (meridiemExists) {\n                r.tokens.forEach(t => {\n                    if (t.type === 'twentyFourHour') {\n                        t.type = 'twelveHour';\n                    }\n                });\n            }\n        });\n        return parsedResults;\n    }\n}\n\nconst timeFormatRefiner = new TimeFormatRefiner('TimeFormatRefiner');\nconst standardFormatParsersRefiner = new StandardFormatParsersRefiner('StandardFormatParsersRefiner');\nconst refiners = [\n    standardFormatParsersRefiner,\n    timeFormatRefiner,\n];\n\nclass YearFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d{2}/, 'YY');\n            this._map.set(/\\d{4}/, 'YYYY');\n            this._map.set(/[+-]\\d{6}/, 'YYYYYY');\n        }\n        else {\n            this._map.set(/\\d{2}/, '%y');\n            this._map.set(/\\d{4}/, '%Y');\n            this._map.set(/[+-]\\d{6}/, 'NA');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass MonthFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d{1,2}/, 'M');\n            this._map.set(/\\d{2}/, 'MM');\n            this._map.set(/\\d{1,2}(?:st|nd|rd|th)/, 'Mo');\n            this._map.set(/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/, 'MMM');\n            this._map.set(/^(January|February|March|April|May|June|July|August|September|October|November|December)$/, 'MMMM');\n        }\n        else {\n            this._map.set(/\\d{1,2}/, 'NA');\n            this._map.set(/\\d{2}/, '%m');\n            this._map.set(/\\d{1,2}(?:st|nd|rd|th)/, 'NA');\n            this._map.set(/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)$/, '%b');\n            this._map.set(/^(January|February|March|April|May|June|July|August|September|October|November|December)$/, '%B');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass DayOfMonthFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d{1,2}/, 'D');\n            this._map.set(/\\d{2}/, 'DD');\n            this._map.set(/\\d{1,2}(?:st|nd|rd|th)/, 'Do');\n        }\n        else {\n            this._map.set(/\\d{1,2}/, '%-e');\n            this._map.set(/\\d{2}/, '%d');\n            this._map.set(/\\d{1,2}(?:st|nd|rd|th)/, '%o');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass DelimiterFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.format = format;\n        this.type = type;\n    }\n    assign(token) { }\n}\n\nclass MinuteFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d{1,2}/, 'm');\n            this._map.set(/\\d{2}/, 'mm');\n        }\n        else {\n            this._map.set(/\\d{1,2}/, 'NA');\n            this._map.set(/\\d{2}/, '%M');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass SecondFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d{1,2}/, 's');\n            this._map.set(/\\d{2}/, 'ss');\n        }\n        else {\n            this._map.set(/\\d{1,2}/, 'NA');\n            this._map.set(/\\d{2}/, '%S');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass MillisecondFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d/, 'S');\n            this._map.set(/\\d{2}/, 'SS');\n            this._map.set(/\\d{3}/, 'SSS');\n        }\n        else {\n            this._map.set(/\\d/, 'NA');\n            this._map.set(/\\d{2}/, 'NA');\n            this._map.set(/\\d{3}/, '%L');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass TimezoneFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        const abbreviatedTimezoneRegex = new RegExp('UT|'\n            + 'CAT|CET|CVT|EAT|EET|GMT|MUT|RET|SAST|SCT|WAST|WAT|WEST|WET|WST|WT|'\n            + 'ADT|AFT|ALMT|AMST|AMT|ANAST|ANAT|AQTT|AST|AZST|AZT|BNT|BST|BTT|CHOST|CHOT|'\n            + 'CST|EEST|EET|GET|GST|HKT|HOVST|HOVT|ICT|IDT|IRDT|IRKST|IRKT|IST|JST|KGT|KRAST|'\n            + 'KRAT|KST|MAGST|MAGT|MMT|MSK|MVT|NOVST|NOVT|NPT|OMSST|OMST|ORAT|PETST|PETT|PHT|'\n            + 'PKT|PYT|QYZT|SAKT|SGT|SRET|TJT|TLT|TMT|TRT|ULAST|ULAT|UZT|VLAST|VLAT|WIB|WIT|'\n            + 'YAKST|YAKT|YEKST|YEKT|'\n            + 'ART|CAST|CEST|CLST|CLT|DAVT|DDUT|GMT|MAWT|NZDT|NZST|ROTT|SYOT|VOST|'\n            + 'ADT|AST|AT|AZOST|AZOT|'\n            + 'ACDT|ACST|ACT|ACWST|AEDT|AEST|AET|AWDT|AWST|CXT|LHDT|LHST|NFDT|NFT|'\n            + 'AST|AT|CDT|CIDST|CIST|CST|EDT|EST|ET|'\n            + 'CST|CT|EST|ET|'\n            + 'BST|CEST|CET|EEST|EET|FET|GET|GMT|IST|KUYT|MSD|MSK|SAMT|TRT|WEST|WET|'\n            + 'CCT|EAT|IOT|TFT|'\n            + 'ADT|AKDT|AKST|AST|AT|CDT|CST|CT|EDT|EGST|EGT|ET|GMT|HDT|HST|MDT|MST|MT|NDT|NST|PDT|PMDT|PMST|PST|PT|WGST|WGT|'\n            + 'AoE|BST|CHADT|CHAST|CHUT|CKT|ChST|EASST|EAST|FJST|FJT|GALT|GAMT|GILT|HST|KOST|LINT|MART|'\n            + 'MHT|NCT|NRT|NUT|NZDT|NZST|PGT|PHOT|PONT|PST|PWT|SBT|SST|TAHT|TKT|TOST|TOT|TVT|VUT|WAKT|WFT|WST|YAPT|'\n            + 'ACT|AMST|AMT|ART|BOT|BRST|BRT|CLST|CLT|COT|ECT|FKST|FKT|FNT|GFT|GST|GYT|PET|PYST|PYT|SRT|UYST|UYT|VET|WARST');\n        if (!format || format === 'default') {\n            this._map.set(/[+-]\\d{2}(?::\\d{2})?/, 'Z');\n            this._map.set(/[+-]\\d{4}/, 'ZZ');\n            this._map.set(/Z/, '[Z]');\n            this._map.set(/z/, '[z]');\n            this._map.set(abbreviatedTimezoneRegex, 'z');\n        }\n        else {\n            this._map.set(/[+-]\\d{2}(?::\\d{2})?/, '%:z');\n            this._map.set(/[+-]\\d{4}/, '%z');\n            this._map.set(/Z/, 'Z');\n            this._map.set(/z/, 'z');\n            this._map.set(abbreviatedTimezoneRegex, '%Z');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass DayOfYearFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d{1,3}/, 'DDD');\n            this._map.set(/\\d{3}/, 'DDDD');\n            this._map.set(/\\d{1,3}(?:st|nd|rd|th)/, 'DDDo');\n        }\n        else {\n            this._map.set(/\\d{1,3}/, 'NA');\n            this._map.set(/\\d{3}/, '%j');\n            this._map.set(/\\d{1,3}(?:st|nd|rd|th)/, 'NA');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass EscapeTextFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        if (this._testTokenType(token)) {\n            token.format = (!this.format || this.format === 'default') ? `[${token.value}]` : token.value;\n        }\n    }\n}\n\nclass ISODayOfWeekFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/[1-7]/, 'E');\n        }\n        else {\n            this._map.set(/[1-7]/, '%u');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass ISOWeekOfYearFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/\\d{1,2}/, 'W');\n            this._map.set(/\\d{2}/, 'WW');\n            this._map.set(/\\d{1,2}(?:st|nd|rd|th)/, 'Wo');\n        }\n        else {\n            this._map.set(/\\d{1,2}/, 'NA');\n            this._map.set(/\\d{2}/, '%U');\n            this._map.set(/\\d{1,2}(?:st|nd|rd|th)/, 'NA');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass TwentyFourHourFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/^(\\d|1\\d|2[0-3])$/, 'H');\n            this._map.set(/^([0-1]\\d|2[0-3])$/, 'HH');\n        }\n        else {\n            this._map.set(/^(\\d|1\\d|2[0-3])$/, '%-k');\n            this._map.set(/^([0-1]\\d|2[0-3])$/, '%H');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass TwelveHourFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/^([1-9]|1[0-2])$/, 'h');\n            this._map.set(/^(0\\d|1[0-2])$/, 'hh');\n        }\n        else {\n            this._map.set(/^([1-9]|1[0-2])$/, '%-l');\n            this._map.set(/^(0\\d|1[0-2])$/, '%I');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass DayOfWeekFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/[0-6]/, 'd');\n            this._map.set(/[0-6](?:st|nd|rd|th)/, 'do');\n            this._map.set(/(?:Su|Mo|Tu|We|Th|Fr|Sa)/, 'dd');\n            this._map.set(/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)/, 'ddd');\n            this._map.set(/(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/, 'dddd');\n        }\n        else {\n            this._map.set(/[0-6]/, '%w');\n            this._map.set(/[0-6](?:st|nd|rd|th)/, 'NA');\n            this._map.set(/(?:Su|Mo|Tu|We|Th|Fr|Sa)/, 'NA');\n            this._map.set(/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)/, '%a');\n            this._map.set(/(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/, '%A');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nclass MeridiemFormatTokenAssigner {\n    constructor(name, type, format) {\n        this.name = name;\n        this.type = type;\n        this.format = format;\n        this._map = new Map();\n        if (!format || format === 'default') {\n            this._map.set(/am|pm/, 'a');\n            this._map.set(/AM|PM/, 'A');\n        }\n        else {\n            this._map.set(/am|pm/, '%P');\n            this._map.set(/AM|PM/, '%p');\n        }\n    }\n    _testTokenType(token) {\n        return token.type === this.type;\n    }\n    assign(token) {\n        this._map.forEach((formatToken, pattern) => {\n            if (this._testTokenType(token) && pattern.test(token.value)) {\n                token.format = formatToken;\n            }\n        });\n    }\n}\n\nconst dayOfMonthFormatTokenAssigner = new DayOfMonthFormatTokenAssigner('DelimiterFormatTokenAssigner', 'dayOfMonth');\nconst dayOfWeekFormatTokenAssigner = new DayOfWeekFormatTokenAssigner('DayOfWeekFormatTokenAssigner', 'dayOfWeek');\nconst dayOfYearFormatTokenAssigner = new DayOfYearFormatTokenAssigner('DayOfYearFormatTokenAssigner', 'dayOfYear');\nconst delimiterFormatTokenAssigner = new DelimiterFormatTokenAssigner('DelimiterFormatTokenAssigner', 'delimiter');\nconst escapeTextFormatTokenAssigner = new EscapeTextFormatTokenAssigner('EscapeTextFormatTokenAssigner', 'escapeText');\nconst iSODayOfWeekFormatTokenAssigner = new ISODayOfWeekFormatTokenAssigner('ISODayOfWeekFormatTokenAssigner', 'isoDayOfWeek');\nconst iSOWeekOfYearFormatTokenAssigner = new ISOWeekOfYearFormatTokenAssigner('ISOWeekOfYearFormatTokenAssigner', 'isoWeekOfYear');\nconst meridiemFormatTokenAssigner = new MeridiemFormatTokenAssigner('MeridiemFormatTokenAssigner', 'meridiem');\nconst millisecondFormatTokenAssigner = new MillisecondFormatTokenAssigner('MillisecondFormatTokenAssigner', 'millisecond');\nconst minuteFormatTokenAssigner = new MinuteFormatTokenAssigner('MinuteFormatTokenAssigner', 'minute');\nconst monthFormatTokenAssigner = new MonthFormatTokenAssigner('MonthFormatTokenAssigner', 'month');\nconst secondFormatTokenAssigner = new SecondFormatTokenAssigner('SecondFormatTokenAssigner', 'second');\nconst timezoneFormatTokenAssigner = new TimezoneFormatTokenAssigner('TimezoneFormatTokenAssigner', 'timezone');\nconst twelveHourFormatTokenAssigner = new TwelveHourFormatTokenAssigner('TwelveHourFormatTokenAssigner', 'twelveHour');\nconst twentyFourHourFormatTokenAssigner = new TwentyFourHourFormatTokenAssigner('TwentyFourHourFormatTokenAssigner', 'twentyFourHour');\nconst yearFormatTokenAssigner = new YearFormatTokenAssigner('YearFormatTokenAssigner', 'year');\nconst strftimeDayOfMonthFormatTokenAssigner = new DayOfMonthFormatTokenAssigner('DelimiterFormatTokenAssigner', 'dayOfMonth', 'strftime');\nconst strftimeDayOfWeekFormatTokenAssigner = new DayOfWeekFormatTokenAssigner('DayOfWeekFormatTokenAssigner', 'dayOfWeek', 'strftime');\nconst strftimeDayOfYearFormatTokenAssigner = new DayOfYearFormatTokenAssigner('DayOfYearFormatTokenAssigner', 'dayOfYear', 'strftime');\nconst strftimeDelimiterFormatTokenAssigner = new DelimiterFormatTokenAssigner('DelimiterFormatTokenAssigner', 'delimiter', 'strftime');\nconst strftimeEscapeTextFormatTokenAssigner = new EscapeTextFormatTokenAssigner('EscapeTextFormatTokenAssigner', 'escapeText', 'strftime');\nconst strftimeISODayOfWeekFormatTokenAssigner = new ISODayOfWeekFormatTokenAssigner('ISODayOfWeekFormatTokenAssigner', 'isoDayOfWeek', 'strftime');\nconst strftimeISOWeekOfYearFormatTokenAssigner = new ISOWeekOfYearFormatTokenAssigner('ISOWeekOfYearFormatTokenAssigner', 'isoWeekOfYear', 'strftime');\nconst strftimeMeridiemFormatTokenAssigner = new MeridiemFormatTokenAssigner('MeridiemFormatTokenAssigner', 'meridiem', 'strftime');\nconst strftimeMillisecondFormatTokenAssigner = new MillisecondFormatTokenAssigner('MillisecondFormatTokenAssigner', 'millisecond', 'strftime');\nconst strftimeMinuteFormatTokenAssigner = new MinuteFormatTokenAssigner('MinuteFormatTokenAssigner', 'minute', 'strftime');\nconst strftimeMonthFormatTokenAssigner = new MonthFormatTokenAssigner('MonthFormatTokenAssigner', 'month', 'strftime');\nconst strftimeSecondFormatTokenAssigner = new SecondFormatTokenAssigner('SecondFormatTokenAssigner', 'second', 'strftime');\nconst strftimeTimezoneFormatTokenAssigner = new TimezoneFormatTokenAssigner('TimezoneFormatTokenAssigner', 'timezone', 'strftime');\nconst strftimeTwelveHourFormatTokenAssigner = new TwelveHourFormatTokenAssigner('TwelveHourFormatTokenAssigner', 'twelveHour', 'strftime');\nconst strftimeTwentyFourHourFormatTokenAssigner = new TwentyFourHourFormatTokenAssigner('TwentyFourHourFormatTokenAssigner', 'twentyFourHour', 'strftime');\nconst strftimeYearFormatTokenAssigner = new YearFormatTokenAssigner('YearFormatTokenAssigner', 'year', 'strftime');\nconst defaultAssigners = [\n    yearFormatTokenAssigner,\n    monthFormatTokenAssigner,\n    dayOfMonthFormatTokenAssigner,\n    delimiterFormatTokenAssigner,\n    minuteFormatTokenAssigner,\n    secondFormatTokenAssigner,\n    millisecondFormatTokenAssigner,\n    timezoneFormatTokenAssigner,\n    dayOfYearFormatTokenAssigner,\n    escapeTextFormatTokenAssigner,\n    iSODayOfWeekFormatTokenAssigner,\n    iSOWeekOfYearFormatTokenAssigner,\n    twentyFourHourFormatTokenAssigner,\n    twelveHourFormatTokenAssigner,\n    dayOfWeekFormatTokenAssigner,\n    meridiemFormatTokenAssigner,\n];\nconst strftimeAssigners = [\n    strftimeDayOfMonthFormatTokenAssigner,\n    strftimeDayOfWeekFormatTokenAssigner,\n    strftimeDayOfYearFormatTokenAssigner,\n    strftimeDelimiterFormatTokenAssigner,\n    strftimeEscapeTextFormatTokenAssigner,\n    strftimeISODayOfWeekFormatTokenAssigner,\n    strftimeISOWeekOfYearFormatTokenAssigner,\n    strftimeMeridiemFormatTokenAssigner,\n    strftimeMillisecondFormatTokenAssigner,\n    strftimeMinuteFormatTokenAssigner,\n    strftimeMonthFormatTokenAssigner,\n    strftimeSecondFormatTokenAssigner,\n    strftimeTimezoneFormatTokenAssigner,\n    strftimeTwelveHourFormatTokenAssigner,\n    strftimeTwentyFourHourFormatTokenAssigner,\n    strftimeYearFormatTokenAssigner,\n];\n\nclass Guesser {\n    constructor() { }\n    static parse(date) {\n        const parsedResults = [];\n        parsers.forEach(parser => {\n            const parsedResult = parser.parse(date);\n            if (parsedResult) {\n                parsedResults.push(Object.assign({}, parsedResult));\n            }\n        });\n        return parsedResults;\n    }\n    static refine(parsedResults) {\n        let refinedParsedResults = [...parsedResults];\n        refiners.forEach(refiner => {\n            refinedParsedResults = [\n                ...refiner.refine(refinedParsedResults)\n            ];\n        });\n        return refinedParsedResults;\n    }\n    static assign(tokens, format) {\n        let assigners = (!format || format === 'default') ? defaultAssigners : strftimeAssigners;\n        assigners.forEach(assigner => {\n            tokens.forEach(token => {\n                assigner.assign(token);\n            });\n        });\n    }\n    static getFormatString(tokens) {\n        let formatString = '';\n        tokens.forEach(token => {\n            if (token.format === 'NA') {\n                throw Error(`Couldn't find strftime modifier for \"${token.value}\"`);\n            }\n            formatString += token.format ? token.format : token.value;\n        });\n        return formatString;\n    }\n}\n\nfunction guessFormat(date, format) {\n    const parsedResults = Guesser.parse(date);\n    const refinedParsedResults = Guesser.refine(parsedResults);\n    if (refinedParsedResults.length === 0) {\n        throw Error(\"Couldn't parse date\");\n    }\n    refinedParsedResults.forEach(r => Guesser.assign(r.tokens, format));\n    let matchedFormats = [];\n    refinedParsedResults.forEach(r => matchedFormats.push(Guesser.getFormatString(r.tokens)));\n    return (matchedFormats.length === 1\n        ? matchedFormats[0]\n        : matchedFormats);\n}\n\nmodule.exports = guessFormat;\n\n"]}