@malga-checkout-full/core
Version:
Core components for Malga Checkout Full
1,736 lines (1,709 loc) • 124 kB
JavaScript
import { c as createCommonjsModule, a as commonjsGlobal, g as getDefaultExportFromCjs } from './_commonjsHelpers-ba3f0406.js';
class ValidationError extends Error {
constructor(msg) {
super(msg);
this.name = 'ValidationError';
}
}
class InvalidFormat extends ValidationError {
constructor(msg = 'The number has an invlidad format.') {
super(msg);
this.name = 'InvalidFormat';
}
}
class InvalidChecksum extends ValidationError {
constructor(msg = "The number number's checksum or check digit is invalid.") {
super(msg);
this.name = 'InvalidChecksum';
}
}
class InvalidLength extends ValidationError {
constructor(msg = 'The number has an invalid length.') {
super(msg);
this.name = 'InvalidLength';
}
}
class InvalidComponent extends ValidationError {
constructor(msg = 'One of the parts of the number are invalid or unknown.') {
super(msg);
this.name = 'InvalidComponent';
}
}
const alphaRE = /^[A-Za-z0-9]+$/;
const digitRE = /^[0-9]+$/;
function isalpha(value) {
return alphaRE.test(value);
}
function isdigits(value) {
return digitRE.test(value);
}
const mapped = {
'-': '-',
'\u{00AD}': '-',
'\u{00AF}': '-',
'\u{02D7}': '-',
'\u{058A}': '-',
'\u{05BE}': '-',
'\u{180A}': '-',
'\u{2010}': '-',
'\u{2011}': '-',
'\u{2012}': '-',
'\u{2013}': '-',
'\u{2014}': '-',
'\u{2015}': '-',
'\u{203E}': '-',
'\u{2043}': '-',
'\u{207B}': '-',
'\u{208B}': '-',
'\u{2212}': '-',
'\u{23AF}': '-',
'\u{23BA}': '-',
'\u{23BB}': '-',
'\u{23BC}': '-',
'\u{23BD}': '-',
'\u{23E4}': '-',
'\u{FF0D}': '-',
'\u{FE63}': '-',
'\u{FFE3}': '-',
'*': '*',
'\u{066D}': '*',
'\u{070D}': '*',
'\u{2055}': '*',
'\u{A60E}': '*',
'\u{2217}': '*',
'\u{22C6}': '*',
'\u{204E}': '*',
'\u{2731}': '*',
'\u{2732}': '*',
'\u{2733}': '*',
'\u{273A}': '*',
'\u{273B}': '*',
'\u{273C}': '*',
'\u{273D}': '*',
'\u{2743}': '*',
'\u{2749}': '*',
'\u{274A}': '*',
'\u{274B}': '*',
'\u{FE61}': '*',
'\u{FF0A}': '*',
',': ',',
'\u{00B8}': ',',
'\u{060C}': ',',
'\u{066B}': ',',
'\u{066C}': ',',
'\u{201A}': ',',
'\u{2032}': ',',
'\u{2E34}': ',',
'\u{3001}': ',',
'\u{FF0C}': ',',
'\u{FE11}': ',',
'\u{FE50}': ',',
'\u{FE51}': ',',
'\u{FF64}': ',',
'.': '.',
'\u{00B7}': '.',
'\u{02D9}': '.',
'\u{0387}': '.',
'\u{06D4}': '.',
'\u{0701}': '.',
'\u{0702}': '.',
'\u{0830}': '.',
'\u{0F0B}': '.',
'\u{0F0C}': '.',
"\u{1427}": ".",
'\u{16EB}': '.',
'\u{2219}': '.',
'\u{2022}': '.',
'\u{2024}': '.',
'\u{2027}': '.',
'\u{22C5}': '.',
'\u{2E31}': '.',
'\u{2E33}': '.',
'\u{3002}': '.',
'\u{30FB}': '.',
'\u{FE52}': '.',
'\u{FF0E}': '.',
'\u{FF65}': '.',
'\u{FBB2}': '.',
'\u{FBB3}': '.',
'\u{10101}': '.',
'\u{1091F}': '.',
'\u{10A50}': '.',
'/': '/',
'\u{2044}': '/',
'\u{2215}': '/',
'\u{29F8}': '/',
'\u{FF0F}': '/',
'\u{083C}': '/',
'\u{27CB}': '/',
':': ':',
'\u{1361}': ':',
'\u{16EC}': ':',
'\u{1804}': ':',
'\u{FE13}': ':',
'\u{FE30}': ':',
'\u{FF1A}': ':',
'\u{FE55}': ':',
' ': ' ',
'\u{0009}': ' ',
'\u{000B}': ' ',
'\u{000C}': ' ',
'\u{00A0}': ' ',
'\u{1680}': ' ',
'\u{2000}': ' ',
'\u{2001}': ' ',
'\u{2002}': ' ',
'\u{2003}': ' ',
'\u{2004}': ' ',
'\u{2005}': ' ',
'\u{2006}': ' ',
'\u{2007}': ' ',
'\u{2008}': ' ',
'\u{2009}': ' ',
'\u{200A}': ' ',
'\u{2028}': ' ',
'\u{2029}': ' ',
'\u{202F}': ' ',
'\u{205F}': ' ',
'\u{3000}': ' ',
"'": "'",
'\u{0060}': "'",
'\u{00B4}': "'",
"\u{02BE}": "'",
"\u{02BF}": "'",
"\u{02B9}": "'",
"\u{02BB}": "'",
"\u{02BC}": "'",
"\u{02C8}": "'",
"\u{0300}": "'",
'\u{0301}': "'",
'\u{0312}': "'",
'\u{0313}': "'",
'\u{055A}': "'",
'\u{201B}': "'",
'\u{2018}': "'",
'\u{2019}': "'",
'0': '0',
'\u{0660}': '0',
'\u{06F0}': '0',
'\u{FF10}': '0',
'\u{1D7CE}': '0',
'\u{1D7D8}': '0',
'\u{1D7E2}': '0',
'\u{1D7EC}': '0',
'\u{1D7F6}': '0',
'1': '1',
'\u{0661}': '1',
'\u{06F1}': '1',
'\u{FF11}': '1',
'\u{1D7CF}': '1',
'\u{1D7D9}': '1',
'\u{1D7E3}': '1',
'\u{1D7ED}': '1',
'\u{1D7F7}': '1',
'2': '2',
'\u{06F2}': '2',
'\u{0662}': '2',
'\u{FF12}': '2',
'\u{1D7D0}': '2',
'\u{1D7DA}': '2',
'\u{1D7E4}': '2',
'\u{1D7EE}': '2',
'\u{1D7F8}': '2',
'3': '3',
'\u{06F3}': '3',
'\u{0663}': '3',
'\u{FF13}': '3',
'\u{1D7D1}': '3',
'\u{1D7DB}': '3',
'\u{1D7E5}': '3',
'\u{1D7EF}': '3',
'\u{1D7F9}': '3',
'4': '4',
'\u{06F4}': '4',
'\u{0664}': '4',
'\u{FF14}': '4',
'\u{1D7D2}': '4',
'\u{1D7DC}': '4',
'\u{1D7E6}': '4',
'\u{1D7F0}': '4',
'\u{1D7FA}': '4',
'5': '5',
'\u{06F5}': '5',
'\u{0665}': '5',
'\u{FF15}': '5',
'\u{1D7D3}': '5',
'\u{1D7DD}': '5',
'\u{1D7E7}': '5',
'\u{1D7F1}': '5',
'\u{1D7FB}': '5',
'6': '6',
'\u{06F6}': '6',
'\u{0666}': '6',
'\u{FF16}': '6',
'\u{1D7D4}': '6',
'\u{1D7DE}': '6',
'\u{1D7E8}': '6',
'\u{1D7F2}': '6',
'\u{1D7FC}': '6',
'7': '7',
'\u{06F7}': '7',
'\u{0667}': '7',
'\u{FF17}': '7',
'\u{1D7D5}': '7',
'\u{1D7DF}': '7',
'\u{1D7E9}': '7',
'\u{1D7F3}': '7',
'\u{1D7FD}': '7',
'8': '8',
'\u{06F8}': '8',
'\u{0668}': '8',
'\u{FF18}': '8',
'\u{1D7D6}': '8',
'\u{1D7E0}': '8',
'\u{1D7EA}': '8',
'\u{1D7F4}': '8',
'\u{1D7FE}': '8',
'9': '9',
'\u{06F9}': '9',
'\u{0669}': '9',
'\u{FF19}': '9',
'\u{1D7D7}': '9',
'\u{1D7E1}': '9',
'\u{1D7EB}': '9',
'\u{1D7F5}': '9',
'\u{1D7FF}': '9',
};
function cleanUnicode(value, deletechars = ' ', stripPrefix) {
if (typeof value !== 'string') {
return ['', new InvalidFormat()];
}
const cleaned = [...value]
.map(c => { var _a; return (_a = mapped[c]) !== null && _a !== void 0 ? _a : c; })
.filter(c => !deletechars.includes(c))
.join('')
.toLocaleUpperCase();
if (stripPrefix && cleaned.startsWith(stripPrefix)) {
return [cleaned.substr(stripPrefix.length), null];
}
return [cleaned, null];
}
function splitAt(value, ...points) {
const parts = [0, ...points].map((p, idx) => {
const nvalue = idx >= points.length ? value.length : points[idx];
const np = nvalue < 0 ? value.length + nvalue : nvalue;
const pp = p < 0 ? value.length + p : p;
return value.substr(pp, np - pp);
});
return parts.filter(v => v.length !== 0);
}
function weightedSum(value, { alphabet = '0123456789', reverse = false, weights = [1], modulus = 0, }) {
const wlen = weights.length;
const numbers = value.split('').map(v => alphabet.indexOf(v));
const weighted = (reverse ? numbers.reverse() : numbers).map((v, idx) => v * weights[idx % wlen]);
return weighted.reduce((acc, v) => {
let vv = v;
while (vv < 0) {
vv += modulus;
}
return (acc + vv) % modulus;
}, 0);
}
function luhnChecksumValidate(value, alphabet = '0123456789') {
const parity = value.length % 2;
const sum = value
.split('')
.map(v => alphabet.indexOf(v))
.reduce((acc, val, idx) => {
const v = idx % 2 === parity ? val * 2 : val;
return acc + (v > 9 ? v - 9 : v);
}, 0);
return sum % alphabet.length === 0;
}
function luhnChecksumValue(value, alphabet = '0123456789') {
const alen = alphabet.length;
return value
.split('')
.reverse()
.map(v => alphabet.indexOf(v))
.reduce((acc, v, idx) => {
if (idx % 2 === 0) {
return (acc + v) % alen;
}
return (acc + Math.floor((v * 2) / alen) + ((v * 2) % alen)) % alen;
});
}
function luhnChecksumDigit(value, alphabet = '0123456789') {
const cs = luhnChecksumValue(`${value}${alphabet[0]}`);
return alphabet[alphabet.length - cs];
}
const verhoeffD = [
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 2, 3, 4, 0, 6, 7, 8, 9, 5],
[2, 3, 4, 0, 1, 7, 8, 9, 5, 6],
[3, 4, 0, 1, 2, 8, 9, 5, 6, 7],
[4, 0, 1, 2, 3, 9, 5, 6, 7, 8],
[5, 9, 8, 7, 6, 0, 4, 3, 2, 1],
[6, 5, 9, 8, 7, 1, 0, 4, 3, 2],
[7, 6, 5, 9, 8, 2, 1, 0, 4, 3],
[8, 7, 6, 5, 9, 3, 2, 1, 0, 4],
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
];
const verhoeffP = [
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[1, 5, 7, 6, 2, 8, 3, 0, 9, 4],
[5, 8, 0, 3, 7, 9, 6, 1, 4, 2],
[8, 9, 1, 6, 0, 4, 3, 5, 2, 7],
[9, 4, 5, 3, 1, 2, 6, 8, 7, 0],
[4, 2, 8, 6, 5, 7, 3, 9, 0, 1],
[2, 7, 9, 3, 8, 0, 6, 4, 1, 5],
[7, 0, 4, 6, 9, 1, 3, 2, 5, 8],
];
function invArray(array) {
return array
.split('')
.map(v => parseInt(v, 10))
.reverse();
}
function verhoeffValidate(array) {
const invertedArray = invArray(array);
const sum = invertedArray.reduce((c, v, idx) => verhoeffD[c][verhoeffP[idx % 8][v]], 0);
return sum === 0;
}
function modulo(dividentIn, divisor) {
let divident = dividentIn;
const partLength = 10;
while (divident.length > partLength) {
const part = divident.substring(0, partLength);
divident = (parseInt(part, 10) % divisor) + divident.substring(partLength);
}
return parseInt(divident, 10) % divisor;
}
function mod97base10Validate(value) {
const alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let fail = false;
const bigValue = value
.split('')
.map(c => {
const idx = alphabet.indexOf(c);
if (idx === -1) {
fail = true;
return '';
}
return String(idx);
})
.join('');
if (fail) {
return false;
}
return modulo(bigValue, 97) === 1;
}
function mod11mod10Validate(value) {
const sum = value
.split('')
.map(v => parseInt(v, 10))
.reduce((acc, n) => ((((acc === 0 ? 10 : acc) * 2) % 11) + n) % 10, 5);
return sum === 1;
}
function isValidDate(yy, mm, dd) {
const yyN = parseInt(yy, 10);
const mmN = parseInt(mm, 10) - 1;
const ddN = parseInt(dd, 10);
if (Number.isNaN(yyN) || Number.isNaN(mmN) || Number.isNaN(ddN)) {
return false;
}
let d;
if (yyN < 20) {
d = new Date(2000 + yyN, mmN, ddN);
}
else if (yyN < 100) {
d = new Date(1900 + yyN, mmN, ddN);
}
else {
d = new Date(yyN, mmN, ddN);
}
if (Number.isNaN(d.getFullYear())) {
return false;
}
if (d.getDate() !== ddN || d.getMonth() !== mmN) {
return false;
}
return true;
}
function isValidDateCompactYYMMDD(yymmdd) {
const [year, mon, day] = splitAt(yymmdd, 2, 4);
return isValidDate(year, mon, day);
}
function isValidDateCompactDDMMYY(ddmmyy) {
const [day, mon, year] = splitAt(ddmmyy, 2, 4);
return isValidDate(year, mon, day);
}
function isValidDateCompactYYYYMMDD(yyyymmdd) {
const [year, mon, day] = splitAt(yyyymmdd, 4, 6);
return isValidDate(year, mon, day);
}
function clean$6(input) {
return cleanUnicode(input, ' -');
}
const impl$d = {
name: 'Bosnia Unique Master Citizen Number',
localName: 'Jedinstveni matični broj građana',
abbreviation: 'JMBG',
compact(input) {
const [value, err] = clean$6(input);
if (err) {
throw err;
}
return value;
},
format(input) {
const [value] = clean$6(input);
return value;
},
validate(input) {
const [value, error] = clean$6(input);
if (error) {
return { isValid: false, error };
}
if (value.length !== 13) {
return { isValid: false, error: new InvalidLength() };
}
if (!isdigits(value)) {
return { isValid: false, error: new InvalidFormat() };
}
const [front, check] = splitAt(value, 12);
const sum = 11 -
weightedSum(front, {
modulus: 11,
weights: [7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2],
});
if (String(sum % 10) !== check) {
return { isValid: false, error: new InvalidChecksum() };
}
return {
isValid: true,
compact: value,
isIndividual: true,
isCompany: false,
};
},
};
const { name: name$d, localName: localName$d, abbreviation: abbreviation$d, validate: validate$d, format: format$d, compact: compact$d, } = impl$d;
const jmbg$4 = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$d,
localName: localName$d,
abbreviation: abbreviation$d,
validate: validate$d,
format: format$d,
compact: compact$d
});
function clean$5(input) {
const [v, err] = cleanUnicode(input, ' -');
if (err) {
return ['', err];
}
if (v.startsWith('CL')) {
return [v.substr(2), null];
}
return [v, null];
}
const impl$c = {
name: 'Chilean National Tax Number',
localName: 'Rol Único Tributario ',
abbreviation: 'RUT',
compact(input) {
const [value, err] = clean$5(input);
if (err) {
throw err;
}
return value;
},
format(input) {
const [value] = clean$5(input);
const [a, b, c, d] = splitAt(value, 2, 5, 8);
return `${a}.${b}.${c}-${d}`;
},
validate(input) {
const [value, error] = clean$5(input);
if (error) {
return { isValid: false, error };
}
if (value.length !== 8 && value.length !== 9) {
return { isValid: false, error: new InvalidLength() };
}
const [front, check] = splitAt(value, value.length - 1);
if (!isdigits(front)) {
return { isValid: false, error: new InvalidComponent() };
}
const sum = weightedSum(front, {
reverse: true,
weights: [9, 8, 7, 6, 5, 4, 9, 8, 7],
modulus: 11,
});
const digit = '0123456789K'[sum];
if (check !== digit) {
return { isValid: false, error: new InvalidChecksum() };
}
return {
isValid: true,
compact: value,
isIndividual: true,
isCompany: true,
};
},
};
const { name: name$c, localName: localName$c, abbreviation: abbreviation$c, validate: validate$c, format: format$c, compact: compact$c, } = impl$c;
const rut = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$c,
localName: localName$c,
abbreviation: abbreviation$c,
validate: validate$c,
format: format$c,
compact: compact$c
});
const impl$b = Object.assign(Object.assign({}, rut), { name: 'Chilean National Identification Number', localName: 'Rol Único Nacional ', abbreviation: 'RUN' });
const { name: name$b, localName: localName$b, abbreviation: abbreviation$b, validate: validate$b, format: format$b, compact: compact$b, } = impl$b;
const run = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$b,
localName: localName$b,
abbreviation: abbreviation$b,
validate: validate$b,
format: format$b,
compact: compact$b
});
function clean$4(input) {
return cleanUnicode(input, ' /');
}
const impl$a = {
name: 'Czech Birth Number',
localName: 'Rodné číslo',
abbreviation: 'RČ',
compact(input) {
const [value, err] = clean$4(input);
if (err) {
throw err;
}
return value;
},
format(input) {
const [value] = clean$4(input);
return splitAt(value, 6).join('/');
},
validate(input) {
const [value, error] = clean$4(input);
if (error) {
return { isValid: false, error };
}
if (value.length !== 10 && value.length !== 9) {
return { isValid: false, error: new InvalidLength() };
}
if (!isdigits(value)) {
return { isValid: false, error: new InvalidFormat() };
}
const [yy, mm, dd] = splitAt(value, 2, 4, 6);
const mon = (parseInt(mm, 10) % 50) % 20;
let year = parseInt(yy, 10) + 1900;
if (value.length === 9) {
if (year > 1980) {
year -= 100;
}
if (year > 1953) {
return { isValid: false, error: new InvalidComponent() };
}
}
else if (year < 1954) {
year += 100;
}
if (!isValidDateCompactYYYYMMDD(`${year}${String(mon).padStart(2, '0')}${dd}`)) {
return { isValid: false, error: new InvalidComponent() };
}
if (value.length === 10) {
const [front, check] = splitAt(value, -1);
const sum = (parseInt(front, 10) % 11) % (year < 1985 ? 10 : 11);
if (String(sum) !== check) {
return { isValid: false, error: new InvalidChecksum() };
}
}
return {
isValid: true,
compact: value,
isIndividual: true,
isCompany: false,
};
},
};
const { name: name$a, localName: localName$a, abbreviation: abbreviation$a, validate: validate$a, format: format$a, compact: compact$a, } = impl$a;
const rc$1 = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$a,
localName: localName$a,
abbreviation: abbreviation$a,
validate: validate$a,
format: format$a,
compact: compact$a
});
function clean$3(input) {
return cleanUnicode(input, ' -./,');
}
function buildMatch(fmt) {
const pattern = fmt.replace(/([FBUP])\1*/g, m => {
return `(\\d{${m.length}})`;
});
const matcher = new RegExp(`^${pattern}$`);
return (value) => {
var _a, _b, _c, _d;
const m = matcher.exec(value);
if (!m) {
return { match: false };
}
return {
match: true,
f: (_a = m[1]) !== null && _a !== void 0 ? _a : '',
b: (_b = m[2]) !== null && _b !== void 0 ? _b : '',
u: (_c = m[3]) !== null && _c !== void 0 ? _c : '',
p: (_d = m[4]) !== null && _d !== void 0 ? _d : '',
};
};
}
function buildMatcher(rfmt, cfmt) {
return {
region: buildMatch(rfmt),
country: buildMatch(cfmt),
};
}
const REGION_FORMATS = {
'DE-BW': buildMatcher('FFBBBUUUUP', '28FF0BBBUUUUP'),
'DE-BY': buildMatcher('FFFBBBUUUUP', '9FFF0BBBUUUUP'),
'DE-BE': buildMatcher('FFBBBUUUUP', '11FF0BBBUUUUP'),
'DE-BB': buildMatcher('0FFBBBUUUUP', '30FF0BBBUUUUP'),
'DE-HB': buildMatcher('FFBBBUUUUP', '24FF0BBBUUUUP'),
'DE-HH': buildMatcher('FFBBBUUUUP', '22FF0BBBUUUUP'),
'DE-HE': buildMatcher('0FFBBBUUUUP', '26FF0BBBUUUUP'),
'DE-MV': buildMatcher('0FFBBBUUUUP', '40FF0BBBUUUUP'),
'DE-NI': buildMatcher('FFBBBUUUUP', '23FF0BBBUUUUP'),
'DE-NW': buildMatcher('FFFBBBBUUUP', '5FFF0BBBBUUUP'),
'DE-RP': buildMatcher('FFBBBUUUUP', '27FF0BBBUUUUP'),
'DE-SL': buildMatcher('0FFBBBUUUUP', '10FF0BBBUUUUP'),
'DE-SN': buildMatcher('2FFBBBUUUUP', '32FF0BBBUUUUP'),
'DE-ST': buildMatcher('1FFBBBUUUUP', '31FF0BBBUUUUP'),
'DE-SH': buildMatcher('FFBBBUUUUP', '21FF0BBBUUUUP'),
'DE-TH': buildMatcher('1FFBBBUUUUP', '41FF0BBBUUUUP'),
};
function findMatch(value) {
let result = null;
Object.values(REGION_FORMATS).some(({ region, country }) => {
const rResult = region(value);
if (rResult.match) {
result = rResult;
return true;
}
const cResult = country(value);
if (cResult.match) {
result = cResult;
return true;
}
return false;
});
return result;
}
const impl$9 = {
name: 'German Tax Number',
localName: 'Steuernummer',
abbreviation: ' St.-Nr.',
compact(input) {
const [value, err] = clean$3(input);
if (err) {
throw err;
}
return value;
},
format(input) {
const [value] = clean$3(input);
const match = findMatch(input);
if (!match || !match.match) {
return value;
}
return `${match.f}/${match.b}/${match.u} ${match.p}`;
},
validate(input) {
const [value, error] = clean$3(input);
if (error) {
return { isValid: false, error };
}
if (![10, 11, 13].includes(value.length)) {
return { isValid: false, error: new InvalidLength() };
}
if (!isdigits(value)) {
return { isValid: false, error: new InvalidFormat() };
}
const counter = {};
value
.substring(0, 10)
.split('')
.forEach(v => {
var _a;
counter[v] = ((_a = counter[v]) !== null && _a !== void 0 ? _a : 0) + 1;
});
const more = Object.values(counter);
if (!more.some(v => v === 2 || v === 3)) {
return { isValid: false, error: new InvalidComponent() };
}
return {
isValid: true,
compact: value,
isIndividual: false,
isCompany: true,
};
},
};
const { name: name$9, localName: localName$9, abbreviation: abbreviation$9, validate: validate$9, format: format$9, compact: compact$9, } = impl$9;
const stnr = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$9,
localName: localName$9,
abbreviation: abbreviation$9,
validate: validate$9,
format: format$9,
compact: compact$9
});
const impl$8 = Object.assign(Object.assign({}, jmbg$4), { name: 'Montenegrin Unique Master Citizen Number', localName: ' Јединствени матични број грађана', abbreviation: 'ЈМБГ' });
const { name: name$8, localName: localName$8, abbreviation: abbreviation$8, validate: validate$8, format: format$8, compact: compact$8, } = impl$8;
const jmbg$3 = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$8,
localName: localName$8,
abbreviation: abbreviation$8,
validate: validate$8,
format: format$8,
compact: compact$8
});
const impl$7 = Object.assign(Object.assign({}, jmbg$4), { name: 'Macedonian Unique Master Citizen Number', localName: 'Единствен матичен број на граѓанинот', abbreviation: 'ЕМБГ' });
const { name: name$7, localName: localName$7, abbreviation: abbreviation$7, validate: validate$7, format: format$7, compact: compact$7, } = impl$7;
const jmbg$2 = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$7,
localName: localName$7,
abbreviation: abbreviation$7,
validate: validate$7,
format: format$7,
compact: compact$7
});
const banksMap = {
2: { tag: 'BANAMEX', name: 'Banco Nacional de México, S.A.' },
6: { tag: 'BANCOMEXT', name: 'Banco Nacional de Comercio Exterior' },
9: { tag: 'BANOBRAS', name: 'Banco Nacional de Obras y Servicios Públicos' },
12: { tag: 'BBVA BANCOMER', name: 'BBVA Bancomer, S.A.' },
14: { tag: 'SANTANDER', name: 'Banco Santander, S.A.' },
19: {
tag: 'BANJERCITO',
name: 'Banco Nacional del Ejército, Fuerza Aérea y Armada',
},
21: { tag: 'HSBC', name: 'HSBC México, S.A.' },
22: { tag: 'GE MONEY', name: 'GE Money Bank, S.A.' },
30: { tag: 'BAJÍO', name: 'Banco del Bajío, S.A.' },
32: { tag: 'IXE', name: 'IXE Banco, S.A.' },
36: { tag: 'INBURSA', name: 'Banco Inbursa, S.A.' },
37: { tag: 'INTERACCIONES', name: 'Banco Interacciones, S.A.' },
42: { tag: 'MIFEL', name: 'Banca Mifel, S.A.' },
44: { tag: 'SCOTIABANK', name: 'Scotiabank Inverlat, S.A.' },
58: { tag: 'BANREGIO', name: 'Banco Regional de Monterrey, S.A.' },
59: { tag: 'INVEX', name: 'Banco Invex, S.A.' },
60: { tag: 'BANSI', name: 'Bansi, S.A.' },
62: { tag: 'AFIRME', name: 'Banca Afirme, S.A.' },
72: { tag: 'BANORTE', name: 'Banco Mercantil del Norte, S.A.' },
102: { tag: 'ABNAMRO', name: 'ABN AMRO Bank México, S.A.' },
103: {
tag: 'AMERICAN EXPRESS',
name: 'American Express Bank (México), S.A.',
},
106: { tag: 'BAMSA', name: 'Bank of America México, S.A.' },
108: { tag: 'TOKYO', name: 'Bank of Tokyo-Mitsubishi UFJ (México), S.A.' },
110: { tag: 'JP MORGAN', name: 'Banco J.P. Morgan, S.A.' },
112: { tag: 'BMONEX', name: 'Banco Monex, S.A.' },
113: { tag: 'VE POR MAS', name: 'Banco Ve por Mas, S.A.' },
116: { tag: 'ING', name: 'ING Bank (México), S.A.' },
124: { tag: 'DEUTSCHE', name: 'Deutsche Bank México, S.A.' },
126: { tag: 'CREDIT SUISSE', name: 'Banco Credit Suisse (México), S.A.' },
127: { tag: 'AZTECA', name: 'Banco Azteca, S.A.' },
128: { tag: 'AUTOFIN', name: 'Banco Autofin México, S.A.' },
129: { tag: 'BARCLAYS', name: 'Barclays Bank México, S.A.' },
130: { tag: 'COMPARTAMOS', name: 'Banco Compartamos, S.A.' },
131: { tag: 'FAMSA', name: 'Banco Ahorro Famsa, S.A.' },
132: { tag: 'BMULTIVA', name: 'Banco Multiva, S.A.' },
133: { tag: 'PRUDENTIAL', name: 'Prudencial Bank, S.A.' },
134: { tag: 'WAL-MART', name: 'Banco Wal Mart de México Adelante, S.A.' },
135: { tag: 'NAFIN', name: 'Nacional Financiera, S.N.C.' },
136: { tag: 'REGIONAL', name: 'Banco Regional, S.A.' },
137: { tag: 'BANCOPPEL', name: 'BanCoppel, S.A.' },
138: { tag: 'ABC CAPITAL', name: 'ABC Capital, S.A. I.B.M.' },
139: { tag: 'UBS BANK', name: 'UBS Banco, S.A.' },
140: { tag: 'FÁCIL', name: 'Banco Fácil, S.A.' },
141: {
tag: 'VOLKSWAGEN',
name: 'Volkswagen Bank S.A. Institución de Banca Múltiple',
},
143: { tag: 'CIBANCO', name: 'Consultoría Internacional Banco, S.A.' },
145: { tag: 'BBASE', name: 'Banco BASE, S.A. de I.B.M.' },
147: {
tag: 'BANKAOOL',
name: 'Bankaool, S.A., Institución de Banca Múltiple',
},
148: {
tag: 'PAGATODO',
name: 'Banco PagaTodo S.A., Institución de Banca Múltiple',
},
150: {
tag: 'BIM',
name: 'Banco Inmobiliario Mexicano, S.A., Institución de Banca Múltiple',
},
152: {
tag: 'BANCREA',
name: 'Banco Bancrea, S.A., Institución de Banca Múltiple',
},
156: { tag: 'SABADELL', name: 'Banco Sabadell, S.A. I.B.M.' },
166: {
tag: 'BANSEFI',
name: 'Banco del Ahorro Nacional y Servicios Financieros, S.N.C.',
},
168: {
tag: 'HIPOTECARIA FEDERAL',
name: 'Sociedad Hipotecaria Federal, S.N.C.',
},
600: { tag: 'MONEXCB', name: 'Monex Casa de Bolsa, S.A. de C.V.' },
601: { tag: 'GBM', name: 'GBM Grupo Bursátil Mexicano, S.A. de C.V.' },
602: { tag: 'MASARI CC.', name: 'Masari Casa de Cambio, S.A. de C.V.' },
604: { tag: 'C.B. INBURSA', name: 'Inversora Bursátil, S.A. de C.V.' },
605: { tag: 'VALUÉ', name: 'Valué, S.A. de C.V., Casa de Bolsa' },
606: {
tag: 'CB BASE',
name: 'Base Internacional Casa de Bolsa, S.A. de C.V.',
},
607: { tag: 'TIBER', name: 'Casa de Cambio Tiber, S.A. de C.V.' },
608: { tag: 'VECTOR', name: 'Vector Casa de Bolsa, S.A. de C.V.' },
610: { tag: 'B&B', name: 'B y B Casa de Cambio, S.A. de C.V.' },
611: { tag: 'INTERCAM', name: 'Intercam Casa de Cambio, S.A. de C.V.' },
613: {
tag: 'MULTIVA',
name: 'Multivalores Casa de Bolsa, S.A. de C.V. Multiva Gpo. Fin.',
},
614: {
tag: 'ACCIVAL',
name: 'Acciones y Valores Banamex, S.A. de C.V., Casa de Bolsa',
},
615: {
tag: 'MERRILL LYNCH',
name: 'Merrill Lynch México, S.A. de C.V., Casa de Bolsa',
},
616: { tag: 'FINAMEX', name: 'Casa de Bolsa Finamex, S.A. de C.V.' },
617: { tag: 'VALMEX', name: 'Valores Mexicanos Casa de Bolsa, S.A. de C.V.' },
618: { tag: 'ÚNICA', name: 'Única Casa de Cambio, S.A. de C.V.' },
619: { tag: 'ASEGURADORA MAPFRE', name: 'MAPFRE Tepeyac S.A.' },
620: { tag: 'AFORE PROFUTURO', name: 'Profuturo G.N.P., S.A. de C.V.' },
621: { tag: 'CB ACTINBER', name: 'Actinver Casa de Bolsa, S.A. de C.V.' },
622: { tag: 'ACTINVE SI', name: 'Actinver S.A. de C.V.' },
623: { tag: 'SKANDIA', name: 'Skandia Vida S.A. de C.V.' },
624: {
tag: 'CONSULTORÍA',
name: 'Consultoría Internacional Casa de Cambio, S.A. de C.V.',
},
626: { tag: 'CBDEUTSCHE', name: 'Deutsche Securities, S.A. de C.V.' },
627: { tag: 'ZURICH', name: 'Zurich Compañía de Seguros, S.A.' },
628: { tag: 'ZURICHVI', name: 'Zurich Vida, Compañía de Seguros, S.A.' },
629: {
tag: 'HIPOTECARIA SU CASITA',
name: 'Hipotecaria su Casita, S.A. de C.V.',
},
630: { tag: 'C.B. INTERCAM', name: 'Intercam Casa de Bolsa, S.A. de C.V.' },
631: {
tag: 'C.B. VANGUARDIA',
name: 'Vanguardia Casa de Bolsa, S.A. de C.V.',
},
632: { tag: 'BULLTICK C.B.', name: 'Bulltick Casa de Bolsa, S.A. de C.V.' },
633: { tag: 'STERLING', name: 'Sterling Casa de Cambio, S.A. de C.V.' },
634: {
tag: 'FINCOMUN',
name: 'Fincomún, Servicios Financieros Comunitarios, S.A. de C.V.',
},
636: { tag: 'HDI SEGUROS', name: 'HDI Seguros, S.A. de C.V.' },
637: { tag: 'ORDER', name: 'OrderExpress Casa de Cambio , S.A. de C.V. AAC' },
638: {
tag: 'AKALA',
name: 'Akala, S.A. de C.V., Sociedad Financiera Popular',
},
640: {
tag: 'JP MORGAN C.B.',
name: 'J.P. Morgan Casa de Bolsa, S.A. de C.V.',
},
642: { tag: 'REFORMA', name: 'Operadora de Recursos Reforma, S.A. de C.V.' },
646: {
tag: 'STP',
name: 'Sistema de Transferencias y Pagos STP, S.A. de C.V., SOFOM E.N.R.',
},
647: { tag: 'TELECOMM', name: 'Telecomunicaciones de México' },
648: { tag: 'EVERCORE', name: 'Evercore Casa de Bolsa, S.A. de C.V.' },
649: { tag: 'SKANDIA', name: 'Skandia Operadora S.A. de C.V.' },
651: { tag: 'SEGMTY', name: 'Seguros Monterrey New York Life, S.A de C.V.' },
652: {
tag: 'ASEA',
name: 'Solución Asea, S.A. de C.V., Sociedad Financiera Popular',
},
653: { tag: 'KUSPIT', name: 'Kuspit Casa de Bolsa, S.A. de C.V.' },
655: { tag: 'SOFIEXPRESS', name: 'J.P. SOFIEXPRESS, S.A. de C.V., S.F.P.' },
656: { tag: 'UNAGRA', name: 'UNAGRA, S.A. de C.V., S.F.P.' },
659: {
tag: 'OPCIONES EMPRESARIALES DEL NOROESTE',
name: 'Opciones Empresariales Del Noreste, S.A. DE C.V.',
},
670: {
tag: 'LIBERTAD',
name: 'Libertad Servicios Financieros, S.A. De C.V.',
},
846: { tag: 'STP', name: 'Sistema de Transferencias y Pagos STP' },
901: { tag: 'CLS', name: 'CLS Bank International' },
902: { tag: 'INDEVAL', name: 'SD. INDEVAL, S.A. de C.V.' },
999: { tag: 'N/A', name: 'N/A' },
};
const citiesPairs = [
[10, 'Aguascalientes'],
[12, 'Calvillo'],
[14, 'Jesús María'],
[20, 'Mexicali'],
[22, 'Ensenada'],
[27, 'Tecate'],
[27, 'Tijuana'],
[28, 'La Mesa'],
[28, 'Rosarito'],
[28, 'Tijuana [alternate]'],
[40, 'La Paz'],
[41, 'Cabo San Lucas'],
[42, 'Ciudad Constitución'],
[43, 'Guerrero Negro'],
[45, 'San José del Cabo'],
[46, 'Santa Rosalía'],
[50, 'Campeche'],
[51, 'Calkiní'],
[52, 'Ciudad del Carmen'],
[53, 'Champotón'],
[60, 'Gómez Palacio'],
[60, 'Torreón'],
[62, 'Ciudad Acuña'],
[68, 'Monclova'],
[71, 'Nava'],
[72, 'Nueva Rosita'],
[74, 'Parras de la Fuente'],
[75, 'Piedras Negras'],
[76, 'Ramos Arizpe'],
[77, 'Sabinas'],
[78, 'Saltillo'],
[80, 'San Pedro de las Colonias'],
[90, 'Colima'],
[95, 'Manzanillo'],
[97, 'Tecomán'],
[100, 'Terán'],
[100, 'Tuxtla Gutiérrez'],
[103, 'Arriaga'],
[107, 'Cintalapa'],
[109, 'Comitán'],
[109, 'Villa Las Rosas'],
[111, 'Chiapa de Corso'],
[113, 'F. Comalapa'],
[114, 'Huixtla'],
[123, 'Ocosingo'],
[124, 'Ocozocuautla'],
[125, 'Palenque'],
[126, 'Pichucalco'],
[127, 'Pijijiapan'],
[128, 'Reforma'],
[130, 'San Cristóbal de las Casas'],
[131, 'Simojovel'],
[133, 'Tapachula'],
[135, 'Tonala'],
[137, 'Venustiano Carranza'],
[138, 'Villa Flores'],
[140, 'Yajalón'],
[150, 'Chihuahua'],
[150, 'Ciudad Delicias'],
[152, 'Ciudad Anáhuac'],
[155, 'Ciudad Camargo'],
[158, 'Ciudad Cuauhtémoc'],
[161, 'Ciudad Guerrero'],
[162, 'Parral'],
[163, 'Ciudad Jiménez'],
[164, 'Ciudad Juárez'],
[165, 'Ciudad Madera'],
[167, 'El Molino de Namiquipa'],
[168, 'Nuevo Casas Grandes'],
[180, 'Atizapan'],
[180, 'Chalco'],
[180, 'Ciudad de México'],
[180, 'Coacalco'],
[180, 'Cuautitlán Izcalli'],
[180, 'Cuautitlán'],
[180, 'Ecatepec'],
[180, 'Huehuetoca'],
[180, 'Huixquilucan'],
[180, 'Ixtapaluca'],
[180, 'Los Reyes La Paz'],
[180, 'Naucalpan'],
[180, 'Nezahualcóyotl'],
[180, 'Tecamac'],
[180, 'Teotihuacán'],
[180, 'Texcoco'],
[180, 'Tlalnepantla'],
[190, 'Durango'],
[198, 'N/A'],
[201, 'Tepehuanes'],
[202, 'Vicente Guerrero'],
[210, 'Guanajuato'],
[211, 'Abasolo'],
[212, 'Acámbaro'],
[213, 'Apaseo el Alto'],
[214, 'Apaseo el Grande'],
[215, 'Celaya'],
[216, 'Comonfort'],
[217, 'Coroneo'],
[218, 'Cortazar'],
[219, 'Cuerámaro'],
[220, 'Dolores Hidalgo'],
[222, 'Irapuato'],
[223, 'Jaral del Progreso'],
[224, 'Jerécuaro'],
[225, 'León'],
[226, 'Cd. Manuel Doblado'],
[227, 'Moroleón'],
[229, 'Pénjamo'],
[232, 'Romita'],
[233, 'Salamanca'],
[234, 'Salvatierra'],
[236, 'San Felipe'],
[237, 'Purísima de Bustos'],
[237, 'San Francisco del Rincoón'],
[238, 'San José Iturbide'],
[239, 'San Luis de la Paz'],
[240, 'San Miguel Allende'],
[244, 'Silao'],
[247, 'Uriangato'],
[248, 'Valle de Santiago'],
[249, 'Yuriria'],
[260, 'Chilpancingo'],
[261, 'Acapulco'],
[263, 'Arcelia'],
[264, 'Atoyac de Álvarez'],
[266, 'Ciudad Altamirano'],
[267, 'Coyuca de Benítez'],
[270, 'Chilapa'],
[271, 'Huitzuco'],
[272, 'Iguala'],
[272, 'La Sabana'],
[274, 'Cuajinicuilapa'],
[274, 'Ometepec'],
[275, 'San Marcos'],
[276, 'Taxco'],
[278, 'Teloloapan'],
[281, 'Tlapa'],
[282, 'Ixtapa Zihuatanejo'],
[282, 'Zihuatanejo'],
[290, 'Pachuca'],
[291, 'Actopan'],
[292, 'Apam'],
[293, 'Atotonilco el Grande'],
[294, 'Ciudad Sahagún'],
[294, 'Teocaltiche'],
[295, 'Cuautepec'],
[296, 'Huejutla'],
[297, 'Huichapan'],
[298, 'Ixmiquilpan'],
[303, 'Progreso de Obregón'],
[305, 'Tepeapulco'],
[308, 'Tizayuca'],
[311, 'Tula de Allende'],
[312, 'Tulancingo'],
[313, 'Zacualtipán'],
[314, 'Zimapán'],
[320, 'El Salto'],
[320, 'Guadalajara'],
[320, 'San Pedro Tlaquepaque'],
[320, 'Tlajomulco'],
[320, 'Tonala [alternate]'],
[320, 'Zapopan'],
[326, 'Ameca'],
[327, 'Arandas'],
[330, 'Atotonilco el Alto'],
[331, 'Atequiza'],
[333, 'Autlán'],
[334, 'Azteca'],
[340, 'Casimiro Castillo'],
[341, 'Cihuatlán'],
[342, 'Ciudad Guzmán'],
[346, 'Chapala'],
[348, 'El Grullo'],
[355, 'Ixtlahuacán del Río'],
[356, 'Jalostotitlán'],
[357, 'Jamay'],
[361, 'La Barca'],
[362, 'Lagos de Moreno'],
[370, 'Ocotlán'],
[373, 'Pihuamo'],
[375, 'Las Juntas'],
[375, 'Nuevo Vallarta'],
[375, 'Pitillal'],
[375, 'Puerto Vallarta'],
[381, 'San Juan de los Lagos'],
[382, 'N/A'],
[384, 'San Miguel el Alto'],
[385, 'San Patricio Melaque'],
[386, 'Sayula'],
[387, 'Tala'],
[389, 'Tamazula de Gordiano'],
[391, 'Tecalitlán'],
[396, 'Tepatitlán'],
[397, 'Tequila'],
[403, 'Tototlán'],
[404, 'Túxpam'],
[411, 'Villa Hidalgo'],
[413, 'Zacoalco de Torres'],
[414, 'Zapotiltic'],
[416, 'Zapotlanejo'],
[420, 'Toluca'],
[421, 'Acambay'],
[422, 'Almoloya de Juárez'],
[424, 'Amecameca'],
[425, 'Apaxco'],
[426, 'Atlacomulco'],
[428, 'Coatepec de Harinas'],
[430, 'Chicoloapan'],
[431, 'Chiconcuac'],
[432, 'El Oro'],
[433, 'Ixtapan de la Sal'],
[434, 'Ixtlahuaca'],
[435, 'Jilotepec'],
[438, 'Lerma'],
[441, 'Metepec'],
[443, 'Otumba'],
[445, 'San Mateo Atenco'],
[446, 'Tejupilco'],
[448, 'Temascaltepec'],
[449, 'Temoaya'],
[450, 'Tenancingo'],
[451, 'Tenago del Valle'],
[453, 'Santiago Tiangistenco'],
[455, 'Tultepec'],
[456, 'Tultitlán'],
[457, 'Valle de Bravo'],
[460, 'Villa Nicolás Romero'],
[463, 'Zumpango'],
[470, 'Morelia'],
[472, 'Aguililla'],
[476, 'Apatzingán'],
[480, 'Ciudad Hidalgo'],
[483, 'Cotija'],
[484, 'Cuitzeo'],
[492, 'Huetamo'],
[493, 'Jacona'],
[494, 'Jiquilpan'],
[496, 'La Piedad'],
[497, 'Lázaro Cárdenas'],
[498, 'Los Reyes'],
[499, 'Maravatío'],
[501, 'Nueva Italia'],
[506, 'Pátzcuaro'],
[508, 'Purépero'],
[509, 'Puruandiro'],
[512, 'Sahuayo'],
[515, 'Tacámbaro'],
[517, 'Tangancícuaro'],
[519, 'Tepalcatepec'],
[523, 'Tlazazalca'],
[528, 'Uruapan'],
[533, 'Yurécuaro'],
[534, 'Zacapu'],
[535, 'Zamora'],
[536, 'Zinapécuaro'],
[537, 'Zitácuaro'],
[540, 'Cuernavaca'],
[542, 'Cuautla'],
[542, 'Oaxtepec, Morelos'],
[543, 'Jiutepec'],
[544, 'Jojutla'],
[545, 'Puente de Ixtla'],
[546, 'Temixco'],
[548, 'Tetecala'],
[549, 'Yautepec'],
[552, 'Zacatepec'],
[560, 'Tepic'],
[561, 'Acaponeta'],
[562, 'Ahuacatlán'],
[564, 'Compostela'],
[566, 'Ixtlán del Río'],
[571, 'San Blas'],
[573, 'Santiago Ixcuintla'],
[575, 'Túxpam [alternate]'],
[580, 'Apodaca'],
[580, 'Cadereyta'],
[580, 'Cd. Guadalupe'],
[580, 'General Escobedo'],
[580, 'Monterrey'],
[580, 'San Nicolás de los Garza'],
[580, 'San Pedro Garza García'],
[580, 'Santa Catarina'],
[583, 'Allende'],
[592, 'General Zuazua'],
[595, 'Linares'],
[597, 'Montemorelos'],
[599, 'Sabinas Hidalgo'],
[600, 'Salinas Victoria'],
[601, 'El Cercado'],
[601, 'Villa de Santiago'],
[610, 'Oaxaca'],
[613, 'Tlaxiaco'],
[614, 'Huajuapan de León'],
[616, 'Ixtepec'],
[617, 'Juchitán'],
[619, 'Loma Bonita'],
[620, 'Matías Romero'],
[621, 'Miahuatlán'],
[622, 'Ocotlán [alternate]'],
[624, 'Puerto Escondido'],
[626, 'Salina Cruz'],
[627, 'Lagunas'],
[628, 'Tuxtepec'],
[630, 'Pochutla'],
[631, 'San Pedro Tapanatepec'],
[632, 'Santa Lucía del Camino'],
[634, 'Bahías de Huatulco'],
[635, 'Santiago Juxtlahuaca'],
[636, 'Pinotepa Nacional'],
[637, 'Tehuantepec'],
[638, 'Tlacolula'],
[640, 'Zimatlán'],
[650, 'Cholula'],
[650, 'La Resurrección'],
[650, 'Puebla'],
[650, 'San Baltazar Campeche'],
[651, 'N/A'],
[652, 'Acatzingo'],
[654, 'Atlixco'],
[656, 'Cuetzalan'],
[659, 'Huauchinango'],
[660, 'Huejotzingo'],
[662, 'Izúcar de Matamoros'],
[667, 'San Martín Texmelucan'],
[668, 'San Felipe Hueyotlipan'],
[669, 'Tecamachalco'],
[670, 'Tehuacán'],
[671, 'San Lorenzo'],
[672, 'Teziutlán'],
[674, 'Xicotepec de Juárez'],
[676, 'Zacatlán'],
[680, 'Pedro Escobedo'],
[680, 'Querétaro'],
[680, 'Villa Corregidora'],
[681, 'Amealco'],
[685, 'San Juan del Río'],
[686, 'Tequisquiapan'],
[690, 'Chetumal'],
[691, 'Cancún'],
[691, 'Col. Puerto Juárez'],
[692, 'Cozumel'],
[693, 'N/A'],
[694, 'Playa del Carmen'],
[700, 'San Luis Potosí'],
[703, 'Cerritos'],
[705, 'Ciudad Valles'],
[709, 'Matehuala'],
[711, 'Río Verde'],
[716, 'Tamuín'],
[730, 'Culiacán'],
[735, 'Concordia'],
[736, 'Cosala'],
[737, 'Choix'],
[738, 'El Fuerte'],
[739, 'Escuinapa'],
[740, 'Guamúchil'],
[741, 'Guasave'],
[743, 'Los Mochis'],
[743, 'Topolobampo'],
[744, 'Mazatlán'],
[745, 'Mocorito'],
[746, 'Navolato'],
[760, 'Hermosillo'],
[761, 'Agua Prieta'],
[765, 'Caborca'],
[766, 'Cananea'],
[767, 'Ciudad Obregón'],
[767, 'Esperanza'],
[769, 'Empalme'],
[770, 'Guaymas'],
[770, 'San Carlos'],
[771, 'Huatabampo'],
[773, 'Magdalena'],
[776, 'Nacozari de García'],
[777, 'Navojoa'],
[778, 'Nogales'],
[779, 'Puerto Peñasco'],
[780, 'San Luis Río Colorado'],
[790, 'Tamulte'],
[790, 'Villa Hermosa'],
[792, 'Cárdenas'],
[793, 'Ciudad Pemex'],
[794, 'Comalcalco'],
[796, 'Emiliano Zapata'],
[797, 'Frontera'],
[798, 'Huimanguillo'],
[800, 'Jalpa de Méndez'],
[802, 'Macuspana'],
[803, 'Nacajuca'],
[804, 'Paraíso'],
[805, 'Tacotalpa'],
[806, 'Teapa'],
[807, 'Tenosique'],
[810, 'Ciudad Victoria'],
[811, 'Altamira'],
[813, 'Ciudad Madero'],
[813, 'Tampico'],
[814, 'Ciudad Mante'],
[818, 'Matamoros'],
[821, 'Colombia'],
[821, 'Nuevo Laredo'],
[822, 'Reynosa'],
[823, 'Río Bravo'],
[825, 'Soto La Marina'],
[826, 'Valle Hermoso'],
[830, 'Tlaxcala'],
[832, 'Apizaco'],
[834, 'Santa Ana Chiautempan'],
[840, 'Jalapa'],
[841, 'Acayucan'],
[843, 'Agua Dulce'],
[845, 'Álamo'],
[846, 'Altotonga'],
[848, 'Banderilla'],
[849, 'Boca del Río'],
[852, 'Ciudad Mendoza'],
[853, 'Coatepec'],
[854, 'Coatzacoalcos'],
[855, 'Córdoba'],
[856, 'Cosamaloapan'],
[860, 'Cuitláhuac'],
[863, 'Fortín de las Flores'],
[864, 'Gutiérrez Zamora'],
[865, 'Huatusco'],
[867, 'Isla'],
[868, 'Ixtaczoquitlán'],
[869, 'Jáltipan'],
[871, 'Juan Rodríguez Clara'],
[872, 'Villa José Cardel'],
[873, 'Las Choapas'],
[875, 'Naranjos'],
[876, 'Martínez de la Torre'],
[877, 'Minatitlán'],
[878, 'Misantla'],
[879, 'Nanchital'],
[882, 'Orizaba'],
[885, 'Papantla'],
[886, 'Perote'],
[888, 'Poza Rica'],
[889, 'Río Blanco'],
[890, 'San Andrés Tuxtla'],
[891, 'San Rafael'],
[894, 'Platón Sánchez'],
[894, 'Tantoyuca'],
[895, 'Tempoal'],
[898, 'Tierra Blanca'],
[901, 'Tlapacoyan'],
[903, 'Túxpam de Rodríguez Cano'],
[905, 'Cd. Industrial Framboyan'],
[905, 'Veracruz'],
[910, 'Mérida'],
[913, 'Motul'],
[914, 'Oxkutzcab'],
[915, 'Progreso'],
[917, 'Ticul'],
[918, 'Tizimín'],
[920, 'Valladolid'],
[930, 'Zacatecas'],
[933, 'Fresnillo'],
[934, 'Guadalupe'],
[935, 'Jalpa'],
[936, 'Jerez de G. Salinas'],
[938, 'Juchipila'],
[939, 'Loreto'],
[946, 'Nochistlán'],
[958, 'Valparaíso'],
[960, 'Calera de V. Rosales'],
];
const cities = citiesPairs.reduce((acc, [k, v]) => (Object.assign(Object.assign({}, acc), { [k]: v })), {});
function clean$2(input) {
return cleanUnicode(input, ' ');
}
const nameBlacklist = new Set([
'BACA',
'BAKA',
'BUEI',
'BUEY',
'CACA',
'CACO',
'CAGA',
'CAGO',
'CAKA',
'CAKO',
'COGE',
'COGI',
'COJA',
'COJE',
'COJI',
'COJO',
'COLA',
'CULO',
'FALO',
'FETO',
'GETA',
'GUEI',
'GUEY',
'JETA',
'JOTO',
'KACA',
'KACO',
'KAGA',
'KAGO',
'KAKA',
'KAKO',
'KOGE',
'KOGI',
'KOJA',
'KOJE',
'KOJI',
'KOJO',
'KOLA',
'KULO',
'LILO',
'LOCA',
'LOCO',
'LOKA',
'LOKO',
'MAME',
'MAMO',
'MEAR',
'MEAS',
'MEON',
'MIAR',
'MION',
'MOCO',
'MOKO',
'MULA',
'MULO',
'NACA',
'NACO',
'PEDA',
'PEDO',
'PENE',
'PIPI',
'PITO',
'POPO',
'PUTA',
'PUTO',
'QULO',
'RATA',
'ROBA',
'ROBE',
'ROBO',
'RUIN',
'SENO',
'TETA',
'VACA',
'VAGA',
'VAGO',
'VAKA',
'VUEI',
'VUEY',
'WUEI',
'WUEY',
]);
const validStates = new Set([
'AS',
'BC',
'BS',
'CC',
'CH',
'CL',
'CM',
'CS',
'DF',
'DG',
'GR',
'GT',
'HG',
'JC',
'MC',
'MN',
'MS',
'NE',
'NL',
'NT',
'OC',
'PL',
'QR',
'QT',
'SL',
'SP',
'SR',
'TC',
'TL',
'TS',
'VZ',
'YN',
'ZS',
]);
const checkAlphabet = '0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ';
const checkAlphabetDict = checkAlphabet
.split('')
.reduce((acc, c, idx) => (Object.assign(Object.assign({}, acc), { [c]: idx })), {});
const impl$6 = {
name: 'Mexican Personal Identification',
localName: 'Clave Única de Registro de Población',
abbreviation: 'CURP',
compact(input) {
const [value, err] = clean$2(input);
if (err) {
throw err;
}
return value.toLocaleUpperCase();
},
format(input) {
const [value] = clean$2(input);
return value;
},
validate(input) {
const [value, error] = clean$2(input);
if (error) {
return { isValid: false, error };
}
if (value.length !== 18) {
return { isValid: false, error: new InvalidLength() };
}
if (!/^[A-Z]{4}[0-9]{6}[A-Z]{6}[0-9A-Z][0-9]$/.test(value)) {
return { isValid: false, error: new InvalidFormat() };
}
if (!isValidDateCompactYYMMDD(value.substr(4, 6))) {
return { isValid: false, error: new InvalidComponent() };
}
if (nameBlacklist.has(value.substr(0, 4))) {
return { isValid: false, error: new InvalidComponent() };
}
if (!['H', 'M'].includes(value[10])) {
return { isValid: false, error: new InvalidComponent() };
}
if (!validStates.has(value.substr(11, 2))) {
return { isValid: false, error: new InvalidComponent() };
}
const check = value
.substr(0, 17)
.split('')
.reduce((acc, c, idx) => { var _a; return acc + ((_a = checkAlphabetDict[c]) !== null && _a !== void 0 ? _a : 0) * (18 - idx); }, 0);
const checkStr = String((10 - (check % 10)) % 10);
if (checkStr !== value.substr(17, 1)) {
return { isValid: false, error: new InvalidChecksum() };
}
return {
isValid: true,
compact: value,
isIndividual: true,
isCompany: false,
};
},
};
function getBirthDateImpl(value) {
const parts = splitAt(value, 4, 6, 8);
const yyN = parseInt(parts[1], 10);
const mmN = parseInt(parts[2], 10) - 1;
const ddN = parseInt(parts[3], 10);
if (!Number.isNaN(parseInt(value[16], 10))) {
return new Date(yyN + 1900, mmN, ddN);
}
return new Date(yyN + 2000, mmN, ddN);
}
function getGender(input) {
const value = impl$6.compact(input);
return value[10] === 'H' ? 'M' : 'F';
}
function getBirthDate(input) {
const value = impl$6.compact(input);
return getBirthDateImpl(value);
}
const { name: name$6, localName: localName$6, abbreviation: abbreviation$6, validate: validate$6, format: format$6, compact: compact$6, } = impl$6;
const curp = /*#__PURE__*/Object.freeze({
__proto__: null,
getGender: getGender,
getBirthDate: getBirthDate,
name: name$6,
localName: localName$6,
abbreviation: abbreviation$6,
validate: validate$6,
format: format$6,
compact: compact$6
});
function clean$1(input) {
return cleanUnicode(input, ' -.', 'PT');
}
const impl$5 = {
name: 'Portuguese Tax Identification Number',
localName: 'Número de Identificação Fiscal',
abbreviation: 'NIF',
compact(input) {
const [value, err] = clean$1(input);
if (err) {
throw err;
}
return value;
},
format(input) {
const [value] = clean$1(input);
return splitAt(value, 3, 6).join(' ');
},
validate(input) {
const [value, error] = clean$1(input);
if (error) {
return { isValid: false, error };
}
if (value.length !== 9) {
return { isValid: false, error: new InvalidLength() };
}
if (!isdigits(value) || value[0] === '0') {
return { isValid: false, error: new InvalidFormat() };
}
const [front, check] = splitAt(value, -1);
const sum = weightedSum(front, {
weights: [9, 8, 7, 6, 5, 4, 3, 2, 1],
modulus: 11,
});
if (String((11 - sum) % 10) !== check) {
return { isValid: false, error: new InvalidChecksum() };
}
return {
isValid: true,
compact: value,
isIndividual: '1234'.includes(value[0]),
isCompany: !'1234'.includes(value[0]),
};
},
};
const { name: name$5, localName: localName$5, abbreviation: abbreviation$5, validate: validate$5, format: format$5, compact: compact$5, } = impl$5;
const nif = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$5,
localName: localName$5,
abbreviation: abbreviation$5,
validate: validate$5,
format: format$5,
compact: compact$5
});
const impl$4 = Object.assign(Object.assign({}, nif), { name: 'Portuguese Legal Person Identification Number', localName: 'Número de Identificação de Pessoa Colectiva', abbreviation: 'NIPC' });
const { name: name$4, localName: localName$4, abbreviation: abbreviation$4, validate: validate$4, format: format$4, compact: compact$4, } = impl$4;
const nipc = /*#__PURE__*/Object.freeze({
__proto__: null,
name: name$4,
localName: localName$4,
abbreviation: