{"version":3,"file":"brazilian-utils.umd.cjs","names":[],"sources":["../src/capitalize/constants.ts","../src/capitalize/capitalize.ts","../src/_internals/format/format.ts","../src/_internals/sanitize-to-digits/sanitize-to-digits.ts","../src/format-boleto/format-boleto.ts","../src/format-cep/format-cep.ts","../src/format-cnh/format-cnh.ts","../src/_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric.ts","../src/format-cnpj/format-cnpj.ts","../src/format-cpf/format-cpf.ts","../src/format-currency/format-currency.ts","../src/format-legal-nature/format-legal-nature.ts","../src/parse-license-plate/parse-license-plate.ts","../src/get-format-license-plate/constants.ts","../src/get-format-license-plate/get-format-license-plate.ts","../src/format-license-plate/format-license-plate.ts","../src/format-passport/format-passport.ts","../src/format-phone/format-phone.ts","../src/format-pis/format-pis.ts","../src/format-processo-juridico/format-processo-juridico.ts","../src/format-voter-id/format-voter-id.ts","../src/_internals/generate-random-number/generate-random-number.ts","../src/_internals/mod10/mod10.ts","../src/_internals/mod11/mod11.ts","../src/generate-boleto/generate-boleto.ts","../src/generate-cep/generate-cep.ts","../src/generate-cnh/generate-cnh.ts","../src/_internals/generate-checksum/generate-checksum.ts","../src/generate-cnpj/generate-cnpj.ts","../src/generate-cpf/constants.ts","../src/generate-cpf/generate-cpf.ts","../src/is-valid-legal-nature/constants.ts","../src/generate-legal-nature/generate-legal-nature.ts","../src/generate-license-plate/generate-license-plate.ts","../src/generate-passport/generate-passport.ts","../src/_internals/constants/area-codes.ts","../src/generate-phone/generate-phone.ts","../src/generate-pis/generate-pis.ts","../src/generate-processo-juridico/generate-processo-juridico.ts","../src/is-valid-voter-id/constants.ts","../src/generate-voter-id/generate-voter-id.ts","../src/is-valid-cep/is-valid-cep.ts","../src/get-address-info-by-cep/get-address-info-by-cep.ts","../src/is-valid-boleto/constants.ts","../src/is-valid-boleto/is-valid-boleto.ts","../src/get-boleto-info/get-boleto-info.ts","../src/_internals/constants/cities.ts","../src/get-cities/get-cities.ts","../src/_internals/constants/states.ts","../src/get-cep-info-by-address/get-cep-info-by-address.ts","../src/get-holidays/get-holidays.ts","../src/get-legal-natures/get-legal-natures.ts","../src/get-municipality/get-municipality.ts","../src/get-states/get-states.ts","../src/is-holiday/is-holiday.ts","../src/is-valid-bank-account/is-valid-bank-account.ts","../src/is-valid-cnh/is-valid-cnh.ts","../src/is-valid-cnpj/constants.ts","../src/is-valid-cnpj/is-valid-cnpj.ts","../src/is-valid-cpf/constants.ts","../src/is-valid-cpf/is-valid-cpf.ts","../src/is-valid-email/is-valid-email.ts","../src/is-valid-ie/is-valid-ie.ts","../src/is-valid-landline-phone/constants.ts","../src/is-valid-landline-phone/is-valid-landline-phone.ts","../src/is-valid-legal-nature/is-valid-legal-nature.ts","../src/is-valid-license-plate/is-valid-license-plate.ts","../src/is-valid-mobile-phone/constants.ts","../src/is-valid-mobile-phone/is-valid-mobile-phone.ts","../src/is-valid-passport/constants.ts","../src/is-valid-passport/is-valid-passport.ts","../src/is-valid-phone/is-valid-phone.ts","../src/is-valid-pis/constants.ts","../src/is-valid-pis/is-valid-pis.ts","../src/is-valid-processo-juridico/is-valid-processo-juridico.ts","../src/is-valid-renavam/is-valid-renavam.ts","../src/is-valid-voter-id/is-valid-voter-id.ts","../src/parse-boleto/parse-boleto.ts","../src/parse-cep/parse-cep.ts","../src/parse-cnh/parse-cnh.ts","../src/parse-cnpj/parse-cnpj.ts","../src/parse-cpf/parse-cpf.ts","../src/parse-currency/parse-currency.ts","../src/parse-legal-nature/parse-legal-nature.ts","../src/parse-passport/parse-passport.ts","../src/parse-phone/parse-phone.ts","../src/parse-pis/parse-pis.ts","../src/parse-processo-juridico/parse-processo-juridico.ts","../src/parse-voter-id/parse-voter-id.ts"],"sourcesContent":["export const ACRONYMS = [\"cia\", \"cnpj\", \"cpf\", \"ltda\", \"me\", \"rg\"];\n\nexport const PREPOSITIONS = [\n\t\"a\",\n\t\"com\",\n\t\"da\",\n\t\"das\",\n\t\"de\",\n\t\"do\",\n\t\"dos\",\n\t\"e\",\n\t\"em\",\n\t\"na\",\n\t\"nas\",\n\t\"no\",\n\t\"nos\",\n\t\"o\",\n\t\"por\",\n\t\"sem\",\n];\n","import { ACRONYMS, PREPOSITIONS } from \"./constants\";\n\nexport type CapitalizeOptions = {\n\tlowerCaseWords?: string[];\n\tupperCaseWords?: string[];\n};\n\n/**\n * Capitalizes a given string according to specific rules for lower-case and upper-case words.\n *\n * - Words listed in `lowerCaseWords` (default: `PREPOSITIONS`) will be converted to lower case, except for the first word.\n * - Words listed in `upperCaseWords` (default: `ACRONYMS`) will be converted to upper case.\n * - All other words will be capitalized (first letter upper case, rest lower case).\n *\n * @param value - The input string to be capitalized.\n * @param options - Optional configuration for capitalization.\n * @param options.lowerCaseWords - Array of words to keep in lower case (default: `PREPOSITIONS`).\n * @param options.upperCaseWords - Array of words to keep in upper case (default: `ACRONYMS`).\n * @returns The capitalized string according to the specified rules.\n */\nexport const capitalize = (\n\tvalue: string,\n\t{ lowerCaseWords = PREPOSITIONS, upperCaseWords = ACRONYMS }: CapitalizeOptions = {},\n): string => {\n\tconst lowerCaseSet = new Set(lowerCaseWords);\n\n\tconst upperCaseSet = new Set(upperCaseWords);\n\n\tconst words = value.split(\" \");\n\n\tconst result: string[] = [];\n\n\tfor (let i = 0, len = words.length; i < len; i++) {\n\t\tconst word = words[i];\n\n\t\tif (!word) continue;\n\n\t\tconst lowerCaseWord = word.toLocaleLowerCase();\n\n\t\tif (i > 0 && lowerCaseSet.has(lowerCaseWord)) {\n\t\t\tresult.push(lowerCaseWord);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst upperCaseWord = word.toLocaleUpperCase();\n\n\t\tif (upperCaseSet.has(upperCaseWord)) {\n\t\t\tresult.push(upperCaseWord);\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult.push(upperCaseWord.charAt(0) + lowerCaseWord.slice(1));\n\t}\n\n\treturn result.join(\" \");\n};\n","export type FormatParams = { value: string; pattern: string; pad?: boolean };\n\n/**\n * Formats a given value according to a specified pattern.\n *\n * @param {Object} params - The parameters for formatting.\n * @param {boolean} params.pad - Whether to pad the value with leading zeros.\n * @param {string} params.value - The value to be formatted.\n * @param {string} params.pattern - The pattern to format the value against.\n * @returns {string} The formatted value.\n *\n * @example\n * ```typescript\n * format({ value: \"123456\", pattern: \"000-000\" }); // \"123-456\"\n * format({ value: \"123\", pattern: \"0000-000\", pad: true }); // \"0123-000\"\n * ```\n */\nexport const format = ({ pad, value, pattern }: FormatParams): string => {\n\tlet formatted = \"\";\n\tlet digitIndex = 0;\n\n\tif (pad) {\n\t\tconst separatorsLength = pattern.replace(/0/g, \"\").length;\n\t\tvalue = value.padStart(pattern.length - separatorsLength, \"0\");\n\t}\n\n\tfor (const char of pattern) {\n\t\tif (char === \"0\") {\n\t\t\tif (digitIndex >= value.length) break;\n\t\t\tformatted += value[digitIndex++];\n\t\t} else if (digitIndex < value.length) {\n\t\t\tformatted += char;\n\t\t}\n\t}\n\n\treturn formatted;\n};\n","/**\n * Sanitizes the input value by removing all non-digit characters.\n *\n * @param {string|number} value - The input value to be sanitized. It can be a string or a number.\n * @returns {string} A string containing only the digit characters from the input value.\n *\n * @example\n * ```typescript\n * sanitizeToDigits(\"abc123\") // \"123\"\n * sanitizeToDigits(\"1a2b3c\") // \"123\"\n * sanitizeToDigits(12345)    // \"12345\"\n * sanitizeToDigits(\"001-234\") // \"001234\"\n * ```\n */\nexport const sanitizeToDigits = (value: string | number): string =>\n\tvalue.toString().replace(/\\D/g, \"\");\n","import { type FormatParams, format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatBoletoOptions = Pick<FormatParams, \"pad\">;\n\n/**\n * Formats a given value as a Brazilian boleto.\n *\n * @param {string|number} value - The value to be formatted, either as a string or a number.\n * @param {Object} options - Optional formatting options.\n * @param {boolean} options.pad - Whether to pad the value with leading zeros.\n * @returns {string} The formatted boleto string in the pattern \"00000000000000000000000000000000000000000000000\".\n */\nexport const formatBoleto = (value: string | number, options?: FormatBoletoOptions): string =>\n\tformat({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"00000.00000 00000.000000 00000.000000 0 00000000000000\",\n\t});\n","import { type FormatParams, format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatCepOptions = Pick<FormatParams, \"pad\">;\n\n/**\n * Formats a given value as a Brazilian postal code (CEP).\n *\n * @param {string|number} value - The value to be formatted, either as a string or a number.\n * @param {Object} options - Optional formatting options.\n * @param {boolean} options.pad - Whether to pad the value with leading zeros.\n * @returns {string} The formatted CEP string in the pattern \"00000-000\".\n */\nexport const formatCep = (value: string | number, options?: FormatCepOptions): string =>\n\tformat({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"00000-000\",\n\t});\n","import { type FormatParams, format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatCnhOptions = Pick<FormatParams, \"pad\">;\n\nexport const formatCnh = (value: string | number, options?: FormatCnhOptions): string =>\n\tformat({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"000000000-00\",\n\t});\n","/**\n * Sanitizes the input value by removing all non-alphanumeric characters and uppercasing the result.\n *\n * @param {string|number} value - The input value to be sanitized. It can be a string or a number.\n * @returns {string} A string containing only uppercase alphanumeric characters from the input value.\n *\n * @example\n * ```typescript\n * sanitizeToAlphanumeric(\"abc123\") // \"ABC123\"\n * sanitizeToAlphanumeric(\"Ab-12.3\") // \"AB123\"\n * sanitizeToAlphanumeric(12345) // \"12345\"\n * ```\n */\nexport const sanitizeToAlphanumeric = (value: string | number): string =>\n\tvalue\n\t\t.toString()\n\t\t.replace(/[^A-Za-z0-9]/g, \"\")\n\t\t.toUpperCase();\n","import { type FormatParams, format } from \"../_internals/format/format\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatCnpjOptions = Pick<FormatParams, \"pad\"> & { version?: 1 | 2 };\n\nconst sanitize = (value: string | number, version?: FormatCnpjOptions[\"version\"]) => {\n\tif (version === 2) {\n\t\treturn sanitizeToAlphanumeric(value);\n\t}\n\n\treturn sanitizeToDigits(value);\n};\n\n/**\n * Formats a given CNPJ (Cadastro Nacional da Pessoa Jurídica) value according to the specified options.\n *\n * @param {string|number} value - The CNPJ value to be formatted. It can be a string or a number.\n * @param {Object} options - Optional configuration for formatting the CNPJ.\n * @param {boolean} options.pad - If true, the value will be padded with leading zeros if necessary.\n * @param {1|2} options.version - The version of the CNPJ to be sanitized.\n * @returns {string} The formatted CNPJ string in the pattern \"00.000.000/0000-00\".\n *\n * @example\n * ```typescript\n * formatCnpj(\"12345678000195\"); // \"12.345.678/0001-95\"\n * formatCnpj(12345678000195); // \"12.345.678/0001-95\"\n * formatCnpj(\"12345678000195\", { pad: true }); // \"12.345.678/0001-95\"\n * formatCnpj(\"12345678\", { pad: true }); // \"00.000.012/3456-78\"\n * formatCnpj(\"q0SLFMBD7VX439\", { version: 2 }); // \"Q0.SLF.MBD/7VX4-39\"\n * ```\n */\nexport const formatCnpj = (value: string | number, options?: FormatCnpjOptions): string =>\n\tformat({\n\t\tpad: options?.pad,\n\t\tvalue: sanitize(value, options?.version),\n\t\tpattern: \"00.000.000/0000-00\",\n\t});\n","import { type FormatParams, format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatCpfOptions = Pick<FormatParams, \"pad\">;\n/**\n * Formats a given CPF (Cadastro de Pessoas Físicas) value according to the Brazilian standard.\n *\n * @param {string|number} value - The CPF value to be formatted. It can be a string or a number.\n * @param {Object} options - Optional formatting options.\n * @param {boolean} options.pad - If true, the value will be padded with leading zeros if necessary.\n * @returns {string} The formatted CPF string in the pattern \"000.000.000-00\".\n *\n * @example\n * ```typescript\n * formatCpf(\"12345678909\"); // \"123.456.789-09\"\n * formatCpf(12345678909); // \"123.456.789-09\"\n * formatCpf(\"123456789\", { pad: true }); // \"001.234.567-89\"\n * ```\n */\nexport const formatCpf = (value: string | number, options?: FormatCpfOptions): string =>\n\tformat({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"000.000.000-00\",\n\t});\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatCurrencyOptions = {\n\tsymbol?: boolean;\n\tprecision?: number;\n};\n\n/**\n * Formats a given value as a currency string in Brazilian Real (BRL).\n *\n * @param {string|number} value - The value to be formatted. Can be a string or a number.\n * @param {Object} options - Optional formatting options.\n * @param {boolean} options.symbol - If true, includes the currency symbol in the formatted string.\n * @param {number} options.precision - The number of decimal places to include in the formatted string. Defaults to 2.\n * @returns {string} The formatted currency string.\n *\n * @example\n * ```typescript\n * formatCurrency(1234.56); // \"1.234,56\"\n * formatCurrency(1234.56, { symbol: true }); // \"R$ 1.234,56\"\n * formatCurrency(\"1234.56\", { precision: 3 }); // \"1.234,560\"\n * ```\n */\nexport const formatCurrency = (value: string | number, options?: FormatCurrencyOptions): string => {\n\tconst enhancedValue =\n\t\ttypeof value === \"string\" ? Number.parseFloat(sanitizeToDigits(value) || \"0\") : value;\n\n\treturn new Intl.NumberFormat(\"pt-BR\", {\n\t\tstyle: options?.symbol ? \"currency\" : \"decimal\",\n\t\tcurrency: \"BRL\",\n\t\tcurrencyDisplay: options?.symbol ? \"symbol\" : undefined,\n\t\tmaximumFractionDigits: options?.precision ?? 2,\n\t\tminimumFractionDigits: options?.precision ?? 2,\n\t})\n\t\t.format(enhancedValue)\n\t\t.replace(\" \", \" \");\n};\n","import { format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport const formatLegalNature = (value: string | number): string =>\n\tformat({\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"000-0\",\n\t});\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { LENGTH } from \"./constants\";\n\nexport const parseLicensePlate = (value: string): string => {\n\tif (!value || typeof value !== \"string\") return \"\";\n\treturn sanitizeToAlphanumeric(value).slice(0, LENGTH);\n};\n","export const OLD_FORMAT_REGEX = /^[A-Z]{3}[0-9]{4}$/;\nexport const MERCOSUL_CAR_REGEX = /^[A-Z]{3}[0-9][A-Z][0-9]{2}$/;\nexport const MERCOSUL_MOTORCYCLE_REGEX = /^[A-Z]{3}[0-9]{2}[A-Z][0-9]$/;\n","import { parseLicensePlate } from \"../parse-license-plate/parse-license-plate\";\nimport { MERCOSUL_CAR_REGEX, MERCOSUL_MOTORCYCLE_REGEX, OLD_FORMAT_REGEX } from \"./constants\";\n\nexport type LicensePlateFormat = \"LLLNNNN\" | \"LLLNLNN\" | \"LLLNNLN\";\n\nexport const getFormatLicensePlate = (value: string): LicensePlateFormat | null => {\n\tconst parsed = parseLicensePlate(value);\n\n\tif (OLD_FORMAT_REGEX.test(parsed)) return \"LLLNNNN\";\n\tif (MERCOSUL_CAR_REGEX.test(parsed)) return \"LLLNLNN\";\n\tif (MERCOSUL_MOTORCYCLE_REGEX.test(parsed)) return \"LLLNNLN\";\n\n\treturn null;\n};\n","import { getFormatLicensePlate } from \"../get-format-license-plate/get-format-license-plate\";\nimport { parseLicensePlate } from \"../parse-license-plate/parse-license-plate\";\nimport { OLD_FORMAT_SEPARATOR_INDEX } from \"./constants\";\n\nexport const formatLicensePlate = (value: string): string => {\n\tconst parsed = parseLicensePlate(value);\n\n\tif (!parsed) return \"\";\n\n\tconst format = getFormatLicensePlate(parsed);\n\n\tif (format === \"LLLNNNN\") {\n\t\treturn `${parsed.slice(0, OLD_FORMAT_SEPARATOR_INDEX)}-${parsed.slice(OLD_FORMAT_SEPARATOR_INDEX)}`;\n\t}\n\n\tif (format) return parsed;\n\n\tif (!/^[A-Z]{1,3}$/.test(parsed.slice(0, Math.min(parsed.length, OLD_FORMAT_SEPARATOR_INDEX)))) {\n\t\treturn \"\";\n\t}\n\n\tif (parsed.length <= OLD_FORMAT_SEPARATOR_INDEX) return parsed;\n\n\tconst tail = parsed.slice(OLD_FORMAT_SEPARATOR_INDEX);\n\n\tif (/^\\d{1,4}$/.test(tail)) {\n\t\treturn `${parsed.slice(0, OLD_FORMAT_SEPARATOR_INDEX)}-${tail}`;\n\t}\n\n\tif (/^\\d[A-Z]\\d{0,2}$/.test(tail) || /^\\d{2}[A-Z]\\d?$/.test(tail)) {\n\t\treturn parsed;\n\t}\n\n\treturn \"\";\n};\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Formats a Brazilian passport number for display.\n * Converts to uppercase and removes all non-alphanumeric characters.\n *\n * @param passport - A Brazilian passport number (any case, possibly with symbols).\n * @returns The formatted passport number (uppercase, no symbols), or an empty string if invalid.\n *\n * @example\n * formatPassport(\"ab123456\") // \"AB123456\"\n * formatPassport(\"AB-123.456\") // \"AB123456\"\n * formatPassport(\"\") // \"\"\n */\nexport const formatPassport = (passport: string): string => {\n\tif (!passport || typeof passport !== \"string\") return \"\";\n\treturn sanitizeToAlphanumeric(passport).slice(0, LENGTH);\n};\n","import { format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\ntype Mask = \"sn\" | \"nanp\";\n\nexport type FormatPhoneOptions = {\n\tmask?: \"auto\" | Mask;\n};\n\nconst LENGTH: Record<Mask, number> = {\n\tsn: 9,\n\tnanp: 11,\n};\n\nconst MASK: Record<Mask, string> = {\n\tsn: \"00000-0000\",\n\tnanp: \"(00) 00000-0000\",\n};\n\n/**\n * Formats a phone number according to Brazilian phone number patterns.\n *\n * @param {string|number} value - The phone number to format, either as a string or a number.\n * @param {Object} options - Optional formatting options.\n * @param {string} options.mask - The mask to apply for formatting the phone number.\n * @returns {string} The formatted phone number as a string.\n */\nexport const formatPhone = (value: string | number, options?: FormatPhoneOptions): string => {\n\tlet mask = options?.mask ?? \"sn\";\n\n\tconst enhancedValue = sanitizeToDigits(value);\n\n\tif (mask === \"auto\") {\n\t\tmask = enhancedValue.length > LENGTH.sn ? \"nanp\" : \"sn\";\n\t}\n\n\treturn format({ value: enhancedValue, pattern: MASK[mask] });\n};\n","import { type FormatParams, format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatPisOptions = Pick<FormatParams, \"pad\">;\n\n/**\n * Formats a PIS (Programa de Integração Social) number according to the specified pattern.\n *\n * @param {string|number} value - The PIS number to be formatted. It can be a string or a number.\n * @param {Object} options - Optional formatting options.\n * @param {boolean} options.pad - If true, pads the value with leading zeros if necessary.\n * @returns {string} The formatted PIS number as a string.\n *\n * @example\n * ```typescript\n * formatPis(\"12345678901\"); // \"123.45678.90-1\"\n * formatPis(12345678901); // \"123.45678.90-1\"\n * formatPis(\"123456789\", { pad: true }); // \"001.23456.78-9\"\n * ```\n */\nexport const formatPis = (value: string | number, options?: FormatPisOptions): string =>\n\tformat({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"000.00000.00-0\",\n\t});\n","import { type FormatParams, format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type FormatProcessoJuridicoOptions = Pick<FormatParams, \"pad\">;\n\n/**\n * Formats a legal process number (processo jurídico) according to a specific pattern.\n *\n * @param {string|number} value - The legal process number to be formatted. It can be a string or a number.\n * @param {Object} options - Optional formatting options.\n * @param {boolean} options.pad - If true, the value will be padded with leading zeros if necessary.\n * @returns {string} The formatted legal process number as a string.\n */\nexport const formatProcessoJuridico = (\n\tvalue: string | number,\n\toptions?: FormatProcessoJuridicoOptions,\n): string =>\n\tformat({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"0000000-00.0000.000.0000\",\n\t});\n","import { format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport const formatVoterId = (value: string | number): string =>\n\tformat({ value: sanitizeToDigits(value), pattern: \"0000 0000 00 00\" });\n","/**\n * Generates a random numeric string of specified length.\n *\n * @param {number} length - The length of the random number string to generate.\n * @returns {string} A string containing random digits (0-9) of the specified length.\n *\n * @example\n * ```typescript\n * generateRandomNumber(3); // \"123\"\n * generateRandomNumber(5); // \"67890\"\n * generateRandomNumber(11); // \"12345678901\"\n * ```\n */\nexport const generateRandomNumber = (length: number): string => {\n\tlet result = \"\";\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += Math.floor(Math.random() * 10).toString();\n\t}\n\treturn result;\n};\n","/**\n * Calculates the modulus 10 check digit for a given string.\n *\n * @param {string} str - The string to calculate the check digit for.\n * @returns {number} The calculated check digit (0-9).\n *\n * @example\n * ```typescript\n * mod10(\"001900000\"); // 9\n * ```\n */\nexport const mod10 = (str: string): number => {\n\tlet sum = 0;\n\tconst len = str.length;\n\tfor (let i = len - 1; i >= 0; i--) {\n\t\tconst digit = str.charCodeAt(i) - 48;\n\t\tconst result = digit * ((len - 1 - i) & 1 ? 1 : 2);\n\t\tsum += result > 9 ? result - 9 : result;\n\t}\n\tconst mod = sum % 10;\n\treturn mod > 0 ? 10 - mod : 0;\n};\n","/**\n * Calculates the modulus 11 check digit for a given string.\n *\n * @param {string} str - The string to calculate the check digit for.\n * @returns {number} The calculated check digit (1-11).\n *\n * @example\n * ```typescript\n * mod11(\"0019000009011497186016852452211467586000010265\"); // 6\n * ```\n */\nexport const mod11 = (str: string): number => {\n\tlet weight = 2;\n\tlet sum = 0;\n\tfor (let i = str.length - 1; i >= 0; i--) {\n\t\tconst digit = str.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight = weight < 9 ? weight + 1 : 2;\n\t}\n\tconst mod = sum % 11;\n\treturn mod === 0 || mod === 1 ? 1 : 11 - mod;\n};\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { mod10 } from \"../_internals/mod10/mod10\";\nimport { mod11 } from \"../_internals/mod11/mod11\";\n\n/**\n * Generates a valid random Brazilian bank slip (boleto) number.\n *\n * @returns {string} A valid 47-digit boleto string without formatting.\n *\n * @example\n * ```typescript\n * generateBoleto(); // \"00190000090114971860168524522114675860000102656\"\n * ```\n */\nexport const generateBoleto = (): string => {\n\tconst line = Array.from<string>({ length: 47 });\n\n\tconst p1Base = generateRandomNumber(9);\n\tfor (let i = 0; i < 9; i++) line[i] = p1Base[i];\n\tline[9] = mod10(p1Base).toString();\n\n\tconst p2Base = generateRandomNumber(10);\n\tfor (let i = 0; i < 10; i++) line[10 + i] = p2Base[i];\n\tline[20] = mod10(p2Base).toString();\n\n\tconst p3Base = generateRandomNumber(10);\n\tfor (let i = 0; i < 10; i++) line[21 + i] = p3Base[i];\n\tline[31] = mod10(p3Base).toString();\n\n\tconst lastDigits = generateRandomNumber(15);\n\tfor (let i = 0; i < 15; i++) line[32 + i] = lastDigits[i];\n\n\tconst boletoWithoutCheck =\n\t\tline.slice(0, 4).join(\"\") + // [0-3]\n\t\tline.slice(33, 47).join(\"\") + // [33-46] (skip [32])\n\t\tline.slice(4, 9).join(\"\") + // [4-8]\n\t\tline.slice(10, 20).join(\"\") + // [10-19]\n\t\tline.slice(21, 31).join(\"\"); // [21-30]\n\n\tconst mainCheck = mod11(boletoWithoutCheck);\n\n\t// Update only position 32 in digitable line (corresponds to boleto[4])\n\tline[32] = mainCheck.toString();\n\n\treturn line.join(\"\");\n};\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\n\nexport const generateCep = (): string => generateRandomNumber(8);\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\n\nconst calculateFirstVerifier = (base: string): { firstVerifier: number; decrement: number } => {\n\tlet sum = 0;\n\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum += (base.charCodeAt(i) - 48) * (9 - i);\n\t}\n\n\tconst remainder = sum % 11;\n\n\tif (remainder >= 10) {\n\t\treturn { firstVerifier: 0, decrement: 2 };\n\t}\n\n\treturn { firstVerifier: remainder, decrement: 0 };\n};\n\nconst calculateSecondVerifier = ({\n\tbase,\n\tdecrement,\n}: {\n\tbase: string;\n\tdecrement: number;\n}): number => {\n\tlet sum = 0;\n\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum += (base.charCodeAt(i) - 48) * (i + 1);\n\t}\n\n\tlet secondVerifier = (sum % 11) - decrement;\n\n\tif (secondVerifier < 0) secondVerifier += 11;\n\tif (secondVerifier >= 10) secondVerifier = 0;\n\n\treturn secondVerifier;\n};\n\nexport const generateCnh = (): string => {\n\tlet base = generateRandomNumber(9);\n\n\twhile (/^(\\d)\\1+$/.test(base)) {\n\t\tbase = generateRandomNumber(9);\n\t}\n\n\tconst { firstVerifier, decrement } = calculateFirstVerifier(base);\n\tconst secondVerifier = calculateSecondVerifier({ base, decrement });\n\n\treturn `${base}${firstVerifier}${secondVerifier}`;\n};\n","import { sanitizeToDigits } from \"../sanitize-to-digits/sanitize-to-digits\";\n\nexport interface GenerateChecksumParams {\n\tbase: string | number;\n\tweight: number | number[];\n}\n\nexport function generateChecksum({ base, weight }: GenerateChecksumParams): number {\n\tconst digits = sanitizeToDigits(base);\n\n\tlet sum = 0;\n\n\tconst len = digits.length;\n\n\tif (typeof weight === \"number\") {\n\t\tlet w = weight;\n\t\tfor (let i = 0; i < len; i++, w--) {\n\t\t\tconst digit = digits.charCodeAt(i) - 48; // '0'.charCodeAt(0) === 48\n\t\t\tsum += digit * w;\n\t\t}\n\t} else {\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst digit = digits.charCodeAt(i) - 48;\n\t\t\tsum += digit * weight[i];\n\t\t}\n\t}\n\n\treturn sum;\n}\n","import { generateChecksum } from \"../_internals/generate-checksum/generate-checksum\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\n\nconst BASE_LENGTH = 12;\n\nconst FIRST_CHECK_DIGIT_WEIGHTS = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\nconst SECOND_CHECK_DIGIT_WEIGHTS = [6, ...FIRST_CHECK_DIGIT_WEIGHTS];\n\nconst VALID_CNPJ_CHARS = \"0123456789ABCDFGHIJKLMNPQRSVWXYZ\";\n\nconst generateRandomCnpjChar = (): string =>\n\tVALID_CNPJ_CHARS[Math.floor(Math.random() * VALID_CNPJ_CHARS.length)];\n\nconst generateAlphanumericCnpjBase = (): string => {\n\tlet base = \"\";\n\tfor (let i = 0; i < BASE_LENGTH; i++) {\n\t\tbase += generateRandomCnpjChar();\n\t}\n\treturn base;\n};\n\nconst charToCnpjValue = (char: string): number => char.charCodeAt(0) - 48;\n\nconst generateAlphanumericChecksum = (cnpj: string, weights: number[]): number => {\n\tlet sum = 0;\n\tfor (let i = 0; i < cnpj.length; i++) {\n\t\tsum += charToCnpjValue(cnpj[i]) * weights[i];\n\t}\n\treturn sum;\n};\n\nconst calculateCheckDigit = (base: string, weights: number[]): string => {\n\tconst mod = generateChecksum({ base, weight: weights }) % 11;\n\treturn (mod < 2 ? 0 : 11 - mod).toString();\n};\n\nconst calculateAlphanumericCheckDigit = (base: string, weights: number[]): string => {\n\tconst mod = generateAlphanumericChecksum(base, weights) % 11;\n\treturn (mod < 2 ? 0 : 11 - mod).toString();\n};\n\nconst generateNumericCnpj = (): string => {\n\tconst base = generateRandomNumber(BASE_LENGTH);\n\tconst firstCheckDigit = calculateCheckDigit(base, FIRST_CHECK_DIGIT_WEIGHTS);\n\tconst secondCheckDigit = calculateCheckDigit(base + firstCheckDigit, SECOND_CHECK_DIGIT_WEIGHTS);\n\treturn base + firstCheckDigit + secondCheckDigit;\n};\n\nconst generateAlphanumericCnpj = (): string => {\n\tconst base = generateAlphanumericCnpjBase();\n\tconst firstCheckDigit = calculateAlphanumericCheckDigit(base, FIRST_CHECK_DIGIT_WEIGHTS);\n\tconst secondCheckDigit = calculateAlphanumericCheckDigit(\n\t\tbase + firstCheckDigit,\n\t\tSECOND_CHECK_DIGIT_WEIGHTS,\n\t);\n\treturn base + firstCheckDigit + secondCheckDigit;\n};\n\n/**\n * Generates a valid random CNPJ (Cadastro Nacional da Pessoa Jurídica).\n *\n * @param {1 | 2} version - The version of the CNPJ to be generated.\n * @returns {string} A valid 14-digit CNPJ string without formatting.\n *\n * @example\n * ```typescript\n * generateCnpj(); // \"12345678000195\"\n * generateCnpj(2); // \"Q0SLFMBD7VX439\"\n * ```\n */\nexport const generateCnpj = (version?: 1 | 2): string => {\n\tconst versionToUse = version ?? 1;\n\tif (versionToUse === 1) return generateNumericCnpj();\n\treturn generateAlphanumericCnpj();\n};\n","import type { StateCode } from \"../_internals/constants/states\";\n\nexport const LENGTH = 11;\nexport const BASE_LENGTH = 8;\n\nexport const STATE_CODES: Record<StateCode, string> = {\n\tAC: \"2\",\n\tAL: \"4\",\n\tAP: \"2\",\n\tAM: \"2\",\n\tBA: \"5\",\n\tCE: \"3\",\n\tDF: \"1\",\n\tES: \"7\",\n\tGO: \"1\",\n\tMA: \"3\",\n\tMT: \"5\",\n\tMS: \"5\",\n\tMG: \"6\",\n\tPR: \"9\",\n\tPB: \"4\",\n\tPA: \"2\",\n\tPE: \"4\",\n\tPI: \"3\",\n\tRN: \"4\",\n\tRS: \"0\",\n\tRJ: \"7\",\n\tRO: \"2\",\n\tRR: \"2\",\n\tSC: \"9\",\n\tSE: \"5\",\n\tSP: \"8\",\n\tTO: \"1\",\n} as const;\n","import type { StateCode } from \"../_internals/constants/states\";\nimport { generateChecksum } from \"../_internals/generate-checksum/generate-checksum\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { BASE_LENGTH, STATE_CODES } from \"./constants\";\n\nconst VALID_STATE_CODES = new Set(Object.keys(STATE_CODES));\n\nconst getStateCode = (state?: StateCode): string => {\n\tif (state && VALID_STATE_CODES.has(state)) return STATE_CODES[state];\n\treturn generateRandomNumber(1);\n};\n\nconst calculateCheckDigit = (base: string, weight: number): string => {\n\tconst mod = generateChecksum({ base, weight }) % 11;\n\treturn (mod < 2 ? 0 : 11 - mod).toString();\n};\n\n/**\n * Generates a valid random CPF (Cadastro de Pessoas Físicas).\n *\n * @param {StateCode} state - Optional. The Brazilian state code to generate a CPF for.\n * @returns {string} A valid 11-digit CPF string without formatting.\n *\n * @example\n * ```typescript\n * generateCpf(); // \"12345678909\"\n * generateCpf(\"SP\"); // \"12345678909\" (with SP state code in 9th digit)\n * ```\n */\nexport const generateCpf = (state?: StateCode): string => {\n\tconst base = generateRandomNumber(BASE_LENGTH) + getStateCode(state);\n\tconst firstCheckDigit = calculateCheckDigit(base, 10);\n\tconst secondCheckDigit = calculateCheckDigit(base + firstCheckDigit, 11);\n\treturn base + firstCheckDigit + secondCheckDigit;\n};\n","export const LEGAL_NATURE: Record<string, string> = {\n\t\"1015\": \"Orgao Publico do Poder Executivo Federal\",\n\t\"1023\": \"Orgao Publico do Poder Executivo Estadual ou do Distrito Federal\",\n\t\"1031\": \"Orgao Publico do Poder Executivo Municipal\",\n\t\"1040\": \"Orgao Publico do Poder Legislativo Federal\",\n\t\"1058\": \"Orgao Publico do Poder Legislativo Estadual ou do Distrito Federal\",\n\t\"1066\": \"Orgao Publico do Poder Legislativo Municipal\",\n\t\"1074\": \"Orgao Publico do Poder Judiciario Federal\",\n\t\"1082\": \"Orgao Publico do Poder Judiciario Estadual\",\n\t\"1104\": \"Autarquia Federal\",\n\t\"1112\": \"Autarquia Estadual ou do Distrito Federal\",\n\t\"1120\": \"Autarquia Municipal\",\n\t\"1139\": \"Fundacao Federal\",\n\t\"1147\": \"Fundacao Estadual ou do Distrito Federal\",\n\t\"1155\": \"Fundacao Municipal\",\n\t\"1163\": \"Orgao Publico Autonomo da Uniao\",\n\t\"1171\": \"Orgao Publico Autonomo Estadual ou do Distrito Federal\",\n\t\"1180\": \"Orgao Publico Autonomo Municipal\",\n\t\"2011\": \"Empresa Publica\",\n\t\"2038\": \"Sociedade de Economia Mista\",\n\t\"2046\": \"Sociedade Anonima Aberta\",\n\t\"2054\": \"Sociedade Anonima Fechada\",\n\t\"2062\": \"Sociedade Empresaria Limitada\",\n\t\"2076\": \"Sociedade Empresaria em Nome Coletivo\",\n\t\"2089\": \"Sociedade Empresaria em Comandita Simples\",\n\t\"2097\": \"Sociedade Empresaria em Comandita por Acoes\",\n\t\"2100\": \"Sociedade Mercantil de Capital e Industria (extinta pelo NCC/2002)\",\n\t\"2127\": \"Sociedade Empresaria em Conta de Participacao\",\n\t\"2135\": \"Empresario (Individual)\",\n\t\"2143\": \"Cooperativa\",\n\t\"2151\": \"Consorcio de Sociedades\",\n\t\"2160\": \"Grupo de Sociedades\",\n\t\"2178\": \"Estabelecimento, no Brasil, de Sociedade Estrangeira\",\n\t\"2194\": \"Estabelecimento, no Brasil, de Empresa Binacional Argentino-Brasileira\",\n\t\"2208\": \"Entidade Binacional Itaipu\",\n\t\"2216\": \"Empresa Domiciliada no Exterior\",\n\t\"2224\": \"Clube/Fundo de Investimento\",\n\t\"2232\": \"Sociedade Simples Pura\",\n\t\"2240\": \"Sociedade Simples Limitada\",\n\t\"2259\": \"Sociedade em Nome Coletivo\",\n\t\"2267\": \"Sociedade em Comandita Simples\",\n\t\"2275\": \"Sociedade Simples em Conta de Participacao\",\n\t\"2305\": \"Empresa Individual de Responsabilidade Limitada\",\n\t\"3034\": \"Servico Notarial e Registral (Cartorio)\",\n\t\"3042\": \"Organizacao Social\",\n\t\"3050\": \"Organizacao da Sociedade Civil de Interesse Publico (Oscip)\",\n\t\"3069\": \"Outras Formas de Fundacoes Mantidas com Recursos Privados\",\n\t\"3077\": \"Servico Social Autonomo\",\n\t\"3085\": \"Condominio Edilicios\",\n\t\"3093\": \"Unidade Executora (Programa Dinheiro Direto na Escola)\",\n\t\"3107\": \"Comissao de Conciliacao Previa\",\n\t\"3115\": \"Entidade de Mediacao e Arbitragem\",\n\t\"3123\": \"Partido Politico\",\n\t\"3131\": \"Entidade Sindical\",\n\t\"3204\": \"Estabelecimento, no Brasil, de Fundacao ou Associacao Estrangeiras\",\n\t\"3212\": \"Fundacao ou Associacao Domiciliada no Exterior\",\n\t\"3999\": \"Outras Formas de Associacao\",\n\t\"4014\": \"Empresa Individual Imobiliaria\",\n\t\"4022\": \"Segurado Especial\",\n\t\"4081\": \"Contribuinte individual\",\n\t\"5002\": \"Organizacao Internacional e Outras Instituicoes Extraterritoriais\",\n};\n","import { LEGAL_NATURE } from \"../is-valid-legal-nature/constants\";\n\nconst LEGAL_NATURE_CODES = Object.keys(LEGAL_NATURE);\n\nexport const generateLegalNature = (): string =>\n\tLEGAL_NATURE_CODES[Math.floor(Math.random() * LEGAL_NATURE_CODES.length)];\n","const LETTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nexport type GenerateLicensePlateFormat = \"LLLNNNN\" | \"LLLNLNN\" | \"LLLNNLN\";\n\nconst randomLetter = (): string => LETTERS[Math.floor(Math.random() * LETTERS.length)];\n\nconst randomDigit = (): string => Math.floor(Math.random() * 10).toString();\n\nexport const generateLicensePlate = (format: GenerateLicensePlateFormat = \"LLLNLNN\"): string => {\n\treturn format\n\t\t.split(\"\")\n\t\t.map((char) => (char === \"L\" ? randomLetter() : randomDigit()))\n\t\t.join(\"\");\n};\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { ALPHABET_LENGTH, CHAR_CODE_A, DIGITS_LENGTH, LETTERS_LENGTH } from \"./constants\";\n\n/**\n * Generates a random valid Brazilian passport number.\n *\n * @returns A random valid passport number string (e.g. \"RY393097\").\n *\n * @example\n * generatePassport() // \"RY393097\"\n * generatePassport() // \"ZS840088\"\n */\nexport const generatePassport = (): string => {\n\tconst letters = Array.from({ length: LETTERS_LENGTH }, () =>\n\t\tString.fromCharCode(CHAR_CODE_A + Math.floor(Math.random() * ALPHABET_LENGTH)),\n\t).join(\"\");\n\n\tconst digits = generateRandomNumber(DIGITS_LENGTH);\n\n\treturn `${letters}${digits}`;\n};\n","/**\n * Valid Brazilian DDD (area codes) by state.\n */\nexport const VALID_AREA_CODES = [\n\t11,\n\t12,\n\t13,\n\t14,\n\t15,\n\t16,\n\t17,\n\t18,\n\t19, // SP\n\t21,\n\t22,\n\t24, // RJ\n\t27,\n\t28, // ES\n\t31,\n\t32,\n\t33,\n\t34,\n\t35,\n\t37,\n\t38, // MG\n\t41,\n\t42,\n\t43,\n\t44,\n\t45,\n\t46, // PR\n\t47,\n\t48,\n\t49, // SC\n\t51,\n\t53,\n\t54,\n\t55, // RS\n\t61, // DF\n\t62,\n\t64, // GO\n\t63, // TO\n\t65,\n\t66, // MT\n\t67, // MS\n\t68, // AC\n\t69, // RO\n\t71,\n\t73,\n\t74,\n\t75,\n\t77, // BA\n\t79, // SE\n\t81,\n\t87, // PE\n\t82, // AL\n\t83, // PB\n\t84, // RN\n\t85,\n\t88, // CE\n\t86,\n\t89, // PI\n\t91,\n\t93,\n\t94, // PA\n\t92,\n\t97, // AM\n\t95, // RR\n\t96, // AP\n\t98,\n\t99, // MA\n] as const;\n","import { VALID_AREA_CODES } from \"../_internals/constants/area-codes\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\n\nexport type GeneratePhoneType = \"mobile\" | \"landline\";\n\nconst randomAreaCode = (): string =>\n\tVALID_AREA_CODES[Math.floor(Math.random() * VALID_AREA_CODES.length)].toString();\n\nexport const generatePhone = (type?: GeneratePhoneType): string => {\n\tconst areaCode = randomAreaCode();\n\n\tif (type === \"landline\") {\n\t\treturn `${areaCode}${2 + Math.floor(Math.random() * 4)}${generateRandomNumber(7)}`;\n\t}\n\n\tif (type === \"mobile\") {\n\t\treturn `${areaCode}9${generateRandomNumber(8)}`;\n\t}\n\n\treturn Math.random() >= 0.5 ? generatePhone(\"mobile\") : generatePhone(\"landline\");\n};\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\n\nconst WEIGHTS = [3, 2, 9, 8, 7, 6, 5, 4, 3, 2] as const;\n\nconst calculateCheckDigit = (base: string): string => {\n\tconst sum = base.split(\"\").reduce((acc, digit, index) => acc + Number(digit) * WEIGHTS[index], 0);\n\tconst digit = 11 - (sum % 11);\n\treturn digit >= 10 ? \"0\" : digit.toString();\n};\n\nexport const generatePis = (): string => {\n\tconst base = generateRandomNumber(10);\n\treturn `${base}${calculateCheckDigit(base)}`;\n};\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\n\nexport type GenerateProcessoJuridicoOptions = {\n\tyear?: number;\n\tcourt?: number;\n};\n\nconst calculateCheckDigits = (base: string): string => {\n\tconst checksum = 98n - ((BigInt(base) * 100n) % 97n);\n\treturn checksum.toString().padStart(2, \"0\");\n};\n\nexport const generateProcessoJuridico = (\n\toptions: GenerateProcessoJuridicoOptions = {},\n): string | null => {\n\tconst { year = new Date().getFullYear(), court = Math.floor(Math.random() * 9) + 1 } = options;\n\tconst currentYear = new Date().getFullYear();\n\n\tif (\n\t\t!Number.isInteger(year) ||\n\t\tyear < currentYear ||\n\t\t!Number.isInteger(court) ||\n\t\tcourt < 1 ||\n\t\tcourt > 9\n\t) {\n\t\treturn null;\n\t}\n\n\tconst sequencial = generateRandomNumber(7);\n\tconst tribunal = generateRandomNumber(2);\n\tconst foro = generateRandomNumber(4);\n\tconst base = `${sequencial}${year}${court}${tribunal}${foro}`;\n\tconst checkDigits = calculateCheckDigits(base);\n\n\treturn `${sequencial}${checkDigits}${year}${court}${tribunal}${foro}`;\n};\n","import type { StateCode } from \"../_internals/constants/states\";\n\nexport const UF_TO_VOTER_ID_CODE: Record<StateCode | \"ZZ\", string> = {\n\tSP: \"01\",\n\tMG: \"02\",\n\tRJ: \"03\",\n\tRS: \"04\",\n\tBA: \"05\",\n\tPR: \"06\",\n\tCE: \"07\",\n\tPE: \"08\",\n\tSC: \"09\",\n\tGO: \"10\",\n\tMA: \"11\",\n\tPB: \"12\",\n\tPA: \"13\",\n\tES: \"14\",\n\tPI: \"15\",\n\tRN: \"16\",\n\tAL: \"17\",\n\tMT: \"18\",\n\tMS: \"19\",\n\tDF: \"20\",\n\tSE: \"21\",\n\tAM: \"22\",\n\tRO: \"23\",\n\tAC: \"24\",\n\tAP: \"25\",\n\tRR: \"26\",\n\tTO: \"27\",\n\tZZ: \"28\",\n};\n","import type { StateCode } from \"../_internals/constants/states\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { UF_TO_VOTER_ID_CODE } from \"../is-valid-voter-id/constants\";\n\nconst calculateFirstDigit = ({\n\tsequentialNumber,\n\tfederativeUnion,\n}: {\n\tsequentialNumber: string;\n\tfederativeUnion: string;\n}): number => {\n\tlet sum = 0;\n\n\tfor (let i = 0; i < 8; i++) {\n\t\tsum += (sequentialNumber.charCodeAt(i) - 48) * (i + 2);\n\t}\n\n\tconst remainder = sum % 11;\n\n\tif (remainder === 0 && (federativeUnion === \"01\" || federativeUnion === \"02\")) {\n\t\treturn 1;\n\t}\n\n\treturn remainder === 10 ? 0 : remainder;\n};\n\nconst calculateSecondDigit = ({\n\tfederativeUnion,\n\tfirstDigit,\n}: {\n\tfederativeUnion: string;\n\tfirstDigit: number;\n}): number => {\n\tconst sum =\n\t\t(federativeUnion.charCodeAt(0) - 48) * 7 +\n\t\t(federativeUnion.charCodeAt(1) - 48) * 8 +\n\t\tfirstDigit * 9;\n\n\tconst remainder = sum % 11;\n\n\tif ((federativeUnion === \"01\" || federativeUnion === \"02\") && remainder === 0) {\n\t\treturn 1;\n\t}\n\n\treturn remainder === 10 ? 0 : remainder;\n};\n\nexport const generateVoterId = (state: StateCode | \"ZZ\" = \"ZZ\"): string => {\n\tconst federativeUnion = UF_TO_VOTER_ID_CODE[state];\n\tconst sequentialNumber = generateRandomNumber(8);\n\tconst digit1 = calculateFirstDigit({ sequentialNumber, federativeUnion });\n\tconst digit2 = calculateSecondDigit({ federativeUnion, firstDigit: digit1 });\n\n\treturn `${sequentialNumber}${federativeUnion}${digit1}${digit2}`;\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Validates if a CEP (Brazilian postal code) is valid.\n *\n * @param {string} cep - The CEP value to be validated.\n * @returns {boolean} True if the CEP is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCep(\"01310100\"); // true\n * isValidCep(\"01310-100\"); // true\n * isValidCep(\"12345\"); // false (invalid length)\n * ```\n */\nexport const isValidCep = (cep: string): boolean => {\n\tif (!cep || typeof cep !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(cep);\n\n\treturn digits.length === LENGTH;\n};\n","/**\n * based on https://github.com/BrasilAPI/cep-promise\n */\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidCep } from \"../is-valid-cep/is-valid-cep\";\n\nexport class GetAddressInfoByCepError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepError\";\n\t}\n}\n\nexport class GetAddressInfoByCepValidationError extends GetAddressInfoByCepError {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepValidationError\";\n\t}\n}\n\nexport class GetAddressInfoByCepNotFoundError extends GetAddressInfoByCepError {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepNotFoundError\";\n\t}\n}\n\nexport class GetAddressInfoByCepServiceError extends GetAddressInfoByCepError {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepServiceError\";\n\t}\n}\n\nexport type AddressInfo = {\n\tcep: string;\n\tstate: string;\n\tcity: string;\n\tneighborhood: string;\n\tstreet: string;\n};\n\nexport type CepProvider = \"viacep\" | \"widenet\" | \"brasilapi\";\n\nexport type GetAddressInfoByCepOptions = {\n\tproviders?: CepProvider[];\n};\n\ntype ViaCepResponse = {\n\tcep?: string;\n\tlogradouro?: string;\n\tcomplemento?: string;\n\tbairro?: string;\n\tlocalidade?: string;\n\tuf?: string;\n\terro?: boolean;\n};\n\ntype WidenetResponse = {\n\tcode?: string;\n\tstatus?: number;\n\tok?: boolean;\n\tstate?: string;\n\tcity?: string;\n\tdistrict?: string;\n\taddress?: string;\n\tmessage?: string;\n};\n\ntype BrasilApiResponse = {\n\tcep?: string;\n\tstate?: string;\n\tcity?: string;\n\tneighborhood?: string;\n\tstreet?: string;\n\terrors?: Array<{ message: string }>;\n};\n\nconst fetchViaCep = async (cep: string): Promise<AddressInfo> => {\n\tconst response = await fetch(`https://viacep.com.br/ws/${cep}/json/`);\n\n\tif (!response.ok) {\n\t\tthrow new Error(`ViaCEP request failed with status ${response.status}`);\n\t}\n\n\tconst data = (await response.json()) as ViaCepResponse;\n\n\tif (data.erro || !data.cep) {\n\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado\");\n\t}\n\n\treturn {\n\t\tcep: data.cep.replace(/\\D/g, \"\"),\n\t\tstate: data.uf || \"\",\n\t\tcity: data.localidade || \"\",\n\t\tneighborhood: data.bairro || \"\",\n\t\tstreet: data.logradouro || \"\",\n\t};\n};\n\nconst fetchWidenet = async (cep: string): Promise<AddressInfo> => {\n\tconst response = await fetch(`https://apps.widenet.com.br/busca-cep/api/cep/${cep}.json`);\n\n\tif (!response.ok) {\n\t\tthrow new Error(`Widenet request failed with status ${response.status}`);\n\t}\n\n\tconst data = (await response.json()) as WidenetResponse;\n\n\tif (data.status !== 200 || !data.ok || !data.code) {\n\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado\");\n\t}\n\n\treturn {\n\t\tcep: data.code.replace(/\\D/g, \"\"),\n\t\tstate: data.state || \"\",\n\t\tcity: data.city || \"\",\n\t\tneighborhood: data.district || \"\",\n\t\tstreet: data.address || \"\",\n\t};\n};\n\nconst fetchBrasilApi = async (cep: string): Promise<AddressInfo> => {\n\tconst response = await fetch(`https://brasilapi.com.br/api/cep/v1/${cep}`);\n\n\tif (!response.ok) {\n\t\tthrow new Error(`BrasilAPI request failed with status ${response.status}`);\n\t}\n\n\tconst data = (await response.json()) as BrasilApiResponse;\n\n\tif (data.errors || !data.cep) {\n\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado\");\n\t}\n\n\treturn {\n\t\tcep: data.cep.replace(/\\D/g, \"\"),\n\t\tstate: data.state || \"\",\n\t\tcity: data.city || \"\",\n\t\tneighborhood: data.neighborhood || \"\",\n\t\tstreet: data.street || \"\",\n\t};\n};\n\nconst providerMap: Record<CepProvider, (cep: string) => Promise<AddressInfo>> = {\n\tviacep: fetchViaCep,\n\twidenet: fetchWidenet,\n\tbrasilapi: fetchBrasilApi,\n};\n\n/**\n * Fetches address information for a given CEP using multiple providers simultaneously.\n * Returns the result from the first provider that responds successfully.\n *\n * @param {string|number} cep - The CEP (Brazilian postal code) to search for. Can be a string or number.\n * @param {GetAddressInfoByCepOptions} options - Optional configuration for the function.\n * @param {CepProvider[]} options.providers - List of providers to use. Defaults to all providers if not specified.\n * @returns {Promise<AddressInfo>} A promise that resolves to the address information.\n * @throws {GetAddressInfoByCepValidationError} If the CEP format is invalid.\n * @throws {GetAddressInfoByCepNotFoundError} If the CEP is not found in any of the services.\n * @throws {GetAddressInfoByCepServiceError} If all services are unavailable.\n *\n * @example\n * ```typescript\n * // Using all providers (default)\n * const address = await getAddressInfoByCep(\"01310100\");\n *\n * // Using specific providers\n * const address = await getAddressInfoByCep(\"01310-100\", {\n *   providers: [\"viacep\", \"brasilapi\"]\n * });\n *\n * // Using number input\n * const address = await getAddressInfoByCep(1310100);\n * ```\n */\nexport const getAddressInfoByCep = async (\n\tcep: string | number,\n\toptions?: GetAddressInfoByCepOptions,\n): Promise<AddressInfo> => {\n\tlet cepString = sanitizeToDigits(cep);\n\n\tif (typeof cep === \"number\" && cepString.length < 8) {\n\t\tcepString = cepString.padStart(8, \"0\");\n\t}\n\n\tif (!isValidCep(cepString)) {\n\t\tthrow new GetAddressInfoByCepValidationError(\"CEP inválido\");\n\t}\n\n\tlet providersToUse: CepProvider[];\n\tif (options?.providers !== undefined) {\n\t\tif (options.providers.length === 0) {\n\t\t\tthrow new GetAddressInfoByCepValidationError(\"Nenhum provedor válido especificado\");\n\t\t}\n\t\tprovidersToUse = options.providers.filter((p) => p in providerMap);\n\t\tif (providersToUse.length === 0) {\n\t\t\tthrow new GetAddressInfoByCepValidationError(\"Nenhum provedor válido especificado\");\n\t\t}\n\t} else {\n\t\tprovidersToUse = [\"viacep\", \"widenet\", \"brasilapi\"] as CepProvider[];\n\t}\n\n\tconst providerPromises = providersToUse.map((provider) =>\n\t\tproviderMap[provider](cepString).catch((error) => {\n\t\t\treturn Promise.reject({ provider, error });\n\t\t}),\n\t);\n\n\ttry {\n\t\treturn await Promise.any(providerPromises);\n\t} catch {\n\t\tconst results = await Promise.allSettled(providerPromises);\n\n\t\tconst rejections = results.filter((result) => result.status === \"rejected\");\n\n\t\tconst notFoundErrors = rejections.filter((rejection) => {\n\t\t\tconst error = rejection.reason?.error || rejection.reason;\n\t\t\treturn error instanceof GetAddressInfoByCepNotFoundError;\n\t\t});\n\n\t\tconst networkErrors = rejections.filter((rejection) => {\n\t\t\tconst error = rejection.reason?.error || rejection.reason;\n\t\t\treturn !(error instanceof GetAddressInfoByCepNotFoundError);\n\t\t});\n\n\t\tif (notFoundErrors.length === rejections.length) {\n\t\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado em nenhum serviço\");\n\t\t}\n\n\t\tif (networkErrors.length === rejections.length) {\n\t\t\tthrow new GetAddressInfoByCepServiceError(\n\t\t\t\t\"Todos os serviços estão fora de serviço ou indisponíveis\",\n\t\t\t);\n\t\t}\n\n\t\tif (notFoundErrors.length > 0) {\n\t\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado em nenhum serviço\");\n\t\t}\n\n\t\tthrow new GetAddressInfoByCepServiceError(\"Erro ao consultar os serviços de CEP\");\n\t}\n};\n","export const LENGTH = 47;\nexport const CHECK_DIGIT_POSITION = 4;\n\nexport const PARTIALS = [\n\t{ start: 0, end: 9, checkIdx: 9 },\n\t{ start: 10, end: 20, checkIdx: 20 },\n\t{ start: 21, end: 31, checkIdx: 31 },\n];\n\nexport const CONVERT_POSITIONS = [\n\t[0, 4],\n\t[32, 47],\n\t[4, 9],\n\t[10, 20],\n\t[21, 31],\n] as const;\n","import { mod10 } from \"../_internals/mod10/mod10\";\nimport { mod11 } from \"../_internals/mod11/mod11\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { CHECK_DIGIT_POSITION, CONVERT_POSITIONS, LENGTH, PARTIALS } from \"./constants\";\n\nconst isValidPartials = (digits: string): boolean => {\n\tfor (const { start, end, checkIdx } of PARTIALS) {\n\t\tconst partial = digits.substring(start, end);\n\t\tconst expected = mod10(partial);\n\t\tif (digits.charCodeAt(checkIdx) - 48 !== expected) return false;\n\t}\n\treturn true;\n};\n\nconst parseToBoleto = (digits: string): string => {\n\tlet result = \"\";\n\tfor (const [start, end] of CONVERT_POSITIONS) {\n\t\tresult += digits.substring(start, end);\n\t}\n\treturn result;\n};\n\nconst isValidCheckDigit = (boleto: string): boolean => {\n\tconst withoutCheckDigit =\n\t\tboleto.substring(0, CHECK_DIGIT_POSITION) + boleto.substring(CHECK_DIGIT_POSITION + 1);\n\tconst expected = mod11(withoutCheckDigit);\n\treturn boleto.charCodeAt(CHECK_DIGIT_POSITION) - 48 === expected;\n};\n\n/**\n * Validates if a Brazilian bank slip (boleto) number is valid.\n *\n * @param {string} value - The bank slip number to validate.\n * @returns {boolean} True if the bank slip number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidBoleto(\"00190000090114971860168524522114675860000102656\"); // true\n * isValidBoleto(\"0019000009 01149.718601 68524.522114 6 75860000102656\"); // true\n * ```\n */\nexport const isValidBoleto = (value: string): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length !== LENGTH) return false;\n\n\tif (!isValidPartials(digits)) return false;\n\n\tconst boleto = parseToBoleto(digits);\n\n\treturn isValidCheckDigit(boleto);\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidBoleto } from \"../is-valid-boleto/is-valid-boleto\";\n\nconst BANCO_CENTRAL_BASE_DATE = new Date(1997, 9, 7);\n\nexport type BoletoInfo = {\n\tamount: number;\n\texpirationDate: Date | null;\n\tbankCode: string;\n};\n\n/**\n * Extracts information from a Brazilian bank slip (boleto).\n *\n * @param {string} value - The boleto digitable line (can be with or without mask).\n * @returns {BoletoInfo | undefined} An object containing amount (in cents), expirationDate, and bankCode, or undefined if the boleto is invalid.\n *\n * @example\n * ```typescript\n * getBoletoInfo('00190000090114971860168524522114675860000102656');\n * // { amount: 102656, expirationDate: new Date(2018, 6, 15), bankCode: '001' }\n * ```\n */\nexport const getBoletoInfo = (value: string): BoletoInfo | undefined => {\n\tif (!value || !isValidBoleto(value)) return;\n\n\tconst sanitized = sanitizeToDigits(value);\n\n\tconst bankCode = sanitized.slice(0, 3);\n\n\tconst daysSinceBaseDayStr = sanitized.slice(33, 37);\n\tconst daysSinceBaseDay = Number(daysSinceBaseDayStr);\n\n\tlet expirationDate: Date | null = null;\n\tif (daysSinceBaseDay && daysSinceBaseDay > 0) {\n\t\tconst resultDate = new Date(BANCO_CENTRAL_BASE_DATE);\n\t\tresultDate.setDate(resultDate.getDate() + daysSinceBaseDay);\n\t\texpirationDate = resultDate;\n\t}\n\n\tconst amount = Number(sanitized.slice(37, 47)) || 0;\n\n\treturn { amount, expirationDate, bankCode };\n};\n","/**\n * A collection of Brazilian cities categorized by their respective states.\n *\n * @constant\n * @type {Object}\n * @property {string[]} GO - Cities in the state of Goiás.\n * @property {string[]} MG - Cities in the state of Minas Gerais.\n * @property {string[]} PA - Cities in the state of Pará.\n * @property {string[]} CE - Cities in the state of Ceará.\n * @property {string[]} BA - Cities in the state of Bahia.\n * @property {string[]} PR - Cities in the state of Paraná.\n * @property {string[]} SC - Cities in the state of Santa Catarina.\n * @property {string[]} PE - Cities in the state of Pernambuco.\n * @property {string[]} TO - Cities in the state of Tocantins.\n * @property {string[]} RN - Cities in the state of Rio Grande do Norte.\n * @property {string[]} PI - Cities in the state of Piauí.\n * @property {string[]} RS - Cities in the state of Rio Grande do Sul.\n * @property {string[]} MT - Cities in the state of Mato Grosso.\n * @property {string[]} AC - Cities in the state of Acre.\n * @property {string[]} SP - Cities in the state of São Paulo.\n * @property {string[]} ES - Cities in the state of Espírito Santo.\n * @property {string[]} MA - Cities in the state of Maranhão.\n */\nexport const DATA = {\n\tAC: [\n\t\t\"Acrelândia\",\n\t\t\"Assis Brasil\",\n\t\t\"Brasiléia\",\n\t\t\"Bujari\",\n\t\t\"Capixaba\",\n\t\t\"Cruzeiro do Sul\",\n\t\t\"Epitaciolândia\",\n\t\t\"Feijó\",\n\t\t\"Jordão\",\n\t\t\"Mâncio Lima\",\n\t\t\"Manoel Urbano\",\n\t\t\"Marechal Thaumaturgo\",\n\t\t\"Plácido de Castro\",\n\t\t\"Porto Acre\",\n\t\t\"Porto Walter\",\n\t\t\"Rio Branco\",\n\t\t\"Rodrigues Alves\",\n\t\t\"Santa Rosa do Purus\",\n\t\t\"Sena Madureira\",\n\t\t\"Senador Guiomard\",\n\t\t\"Tarauacá\",\n\t\t\"Xapuri\",\n\t],\n\tAL: [\n\t\t\"Água Branca\",\n\t\t\"Anadia\",\n\t\t\"Arapiraca\",\n\t\t\"Atalaia\",\n\t\t\"Barra de Santo Antônio\",\n\t\t\"Barra de São Miguel\",\n\t\t\"Batalha\",\n\t\t\"Belém\",\n\t\t\"Belo Monte\",\n\t\t\"Boca da Mata\",\n\t\t\"Branquinha\",\n\t\t\"Cacimbinhas\",\n\t\t\"Cajueiro\",\n\t\t\"Campestre\",\n\t\t\"Campo Alegre\",\n\t\t\"Campo Grande\",\n\t\t\"Canapi\",\n\t\t\"Capela\",\n\t\t\"Carneiros\",\n\t\t\"Chã Preta\",\n\t\t\"Coité do Nóia\",\n\t\t\"Colônia Leopoldina\",\n\t\t\"Coqueiro Seco\",\n\t\t\"Coruripe\",\n\t\t\"Craíbas\",\n\t\t\"Delmiro Gouveia\",\n\t\t\"Dois Riachos\",\n\t\t\"Estrela de Alagoas\",\n\t\t\"Feira Grande\",\n\t\t\"Feliz Deserto\",\n\t\t\"Flexeiras\",\n\t\t\"Girau do Ponciano\",\n\t\t\"Ibateguara\",\n\t\t\"Igaci\",\n\t\t\"Igreja Nova\",\n\t\t\"Inhapi\",\n\t\t\"Jacaré dos Homens\",\n\t\t\"Jacuípe\",\n\t\t\"Japaratinga\",\n\t\t\"Jaramataia\",\n\t\t\"Jequiá da Praia\",\n\t\t\"Joaquim Gomes\",\n\t\t\"Jundiá\",\n\t\t\"Junqueiro\",\n\t\t\"Lagoa da Canoa\",\n\t\t\"Limoeiro de Anadia\",\n\t\t\"Maceió\",\n\t\t\"Major Isidoro\",\n\t\t\"Mar Vermelho\",\n\t\t\"Maragogi\",\n\t\t\"Maravilha\",\n\t\t\"Marechal Deodoro\",\n\t\t\"Maribondo\",\n\t\t\"Mata Grande\",\n\t\t\"Matriz de Camaragibe\",\n\t\t\"Messias\",\n\t\t\"Minador do Negrão\",\n\t\t\"Monteirópolis\",\n\t\t\"Murici\",\n\t\t\"Novo Lino\",\n\t\t\"Olho d'Água das Flores\",\n\t\t\"Olho d'Água do Casado\",\n\t\t\"Olho d'Água Grande\",\n\t\t\"Olivença\",\n\t\t\"Ouro Branco\",\n\t\t\"Palestina\",\n\t\t\"Palmeira dos Índios\",\n\t\t\"Pão de Açúcar\",\n\t\t\"Pariconha\",\n\t\t\"Paripueira\",\n\t\t\"Passo de Camaragibe\",\n\t\t\"Paulo Jacinto\",\n\t\t\"Penedo\",\n\t\t\"Piaçabuçu\",\n\t\t\"Pilar\",\n\t\t\"Pindoba\",\n\t\t\"Piranhas\",\n\t\t\"Poço das Trincheiras\",\n\t\t\"Porto Calvo\",\n\t\t\"Porto de Pedras\",\n\t\t\"Porto Real do Colégio\",\n\t\t\"Quebrangulo\",\n\t\t\"Rio Largo\",\n\t\t\"Roteiro\",\n\t\t\"Santa Luzia do Norte\",\n\t\t\"Santana do Ipanema\",\n\t\t\"Santana do Mundaú\",\n\t\t\"São Brás\",\n\t\t\"São José da Laje\",\n\t\t\"São José da Tapera\",\n\t\t\"São Luís do Quitunde\",\n\t\t\"São Miguel dos Campos\",\n\t\t\"São Miguel dos Milagres\",\n\t\t\"São Sebastião\",\n\t\t\"Satuba\",\n\t\t\"Senador Rui Palmeira\",\n\t\t\"Tanque d'Arca\",\n\t\t\"Taquarana\",\n\t\t\"Teotônio Vilela\",\n\t\t\"Traipu\",\n\t\t\"União dos Palmares\",\n\t\t\"Viçosa\",\n\t],\n\tAM: [\n\t\t\"Alvarães\",\n\t\t\"Amaturá\",\n\t\t\"Anamã\",\n\t\t\"Anori\",\n\t\t\"Apuí\",\n\t\t\"Atalaia do Norte\",\n\t\t\"Autazes\",\n\t\t\"Barcelos\",\n\t\t\"Barreirinha\",\n\t\t\"Benjamin Constant\",\n\t\t\"Beruri\",\n\t\t\"Boa Vista do Ramos\",\n\t\t\"Boca do Acre\",\n\t\t\"Borba\",\n\t\t\"Caapiranga\",\n\t\t\"Canutama\",\n\t\t\"Carauari\",\n\t\t\"Careiro\",\n\t\t\"Careiro da Várzea\",\n\t\t\"Coari\",\n\t\t\"Codajás\",\n\t\t\"Eirunepé\",\n\t\t\"Envira\",\n\t\t\"Fonte Boa\",\n\t\t\"Guajará\",\n\t\t\"Humaitá\",\n\t\t\"Ipixuna\",\n\t\t\"Iranduba\",\n\t\t\"Itacoatiara\",\n\t\t\"Itamarati\",\n\t\t\"Itapiranga\",\n\t\t\"Japurá\",\n\t\t\"Juruá\",\n\t\t\"Jutaí\",\n\t\t\"Lábrea\",\n\t\t\"Manacapuru\",\n\t\t\"Manaquiri\",\n\t\t\"Manaus\",\n\t\t\"Manicoré\",\n\t\t\"Maraã\",\n\t\t\"Maués\",\n\t\t\"Nhamundá\",\n\t\t\"Nova Olinda do Norte\",\n\t\t\"Novo Airão\",\n\t\t\"Novo Aripuanã\",\n\t\t\"Parintins\",\n\t\t\"Pauini\",\n\t\t\"Presidente Figueiredo\",\n\t\t\"Rio Preto da Eva\",\n\t\t\"Santa Isabel do Rio Negro\",\n\t\t\"Santo Antônio do Içá\",\n\t\t\"São Gabriel da Cachoeira\",\n\t\t\"São Paulo de Olivença\",\n\t\t\"São Sebastião do Uatumã\",\n\t\t\"Silves\",\n\t\t\"Tabatinga\",\n\t\t\"Tapauá\",\n\t\t\"Tefé\",\n\t\t\"Tonantins\",\n\t\t\"Uarini\",\n\t\t\"Urucará\",\n\t\t\"Urucurituba\",\n\t],\n\tAP: [\n\t\t\"Amapá\",\n\t\t\"Calçoene\",\n\t\t\"Cutias\",\n\t\t\"Ferreira Gomes\",\n\t\t\"Itaubal\",\n\t\t\"Laranjal do Jari\",\n\t\t\"Macapá\",\n\t\t\"Mazagão\",\n\t\t\"Oiapoque\",\n\t\t\"Pedra Branca do Amapari\",\n\t\t\"Porto Grande\",\n\t\t\"Pracuúba\",\n\t\t\"Santana\",\n\t\t\"Serra do Navio\",\n\t\t\"Tartarugalzinho\",\n\t\t\"Vitória do Jari\",\n\t],\n\tBA: [\n\t\t\"Abaíra\",\n\t\t\"Abaré\",\n\t\t\"Acajutiba\",\n\t\t\"Adustina\",\n\t\t\"Água Fria\",\n\t\t\"Aiquara\",\n\t\t\"Alagoinhas\",\n\t\t\"Alcobaça\",\n\t\t\"Almadina\",\n\t\t\"Amargosa\",\n\t\t\"Amélia Rodrigues\",\n\t\t\"América Dourada\",\n\t\t\"Anagé\",\n\t\t\"Andaraí\",\n\t\t\"Andorinha\",\n\t\t\"Angical\",\n\t\t\"Anguera\",\n\t\t\"Antas\",\n\t\t\"Antônio Cardoso\",\n\t\t\"Antônio Gonçalves\",\n\t\t\"Aporá\",\n\t\t\"Apuarema\",\n\t\t\"Araçás\",\n\t\t\"Aracatu\",\n\t\t\"Araci\",\n\t\t\"Aramari\",\n\t\t\"Arataca\",\n\t\t\"Aratuípe\",\n\t\t\"Aurelino Leal\",\n\t\t\"Baianópolis\",\n\t\t\"Baixa Grande\",\n\t\t\"Banzaê\",\n\t\t\"Barra\",\n\t\t\"Barra da Estiva\",\n\t\t\"Barra do Choça\",\n\t\t\"Barra do Mendes\",\n\t\t\"Barra do Rocha\",\n\t\t\"Barreiras\",\n\t\t\"Barro Alto\",\n\t\t\"Barro Preto\",\n\t\t\"Barrocas\",\n\t\t\"Belmonte\",\n\t\t\"Belo Campo\",\n\t\t\"Biritinga\",\n\t\t\"Boa Nova\",\n\t\t\"Boa Vista do Tupim\",\n\t\t\"Bom Jesus da Lapa\",\n\t\t\"Bom Jesus da Serra\",\n\t\t\"Boninal\",\n\t\t\"Bonito\",\n\t\t\"Boquira\",\n\t\t\"Botuporã\",\n\t\t\"Brejões\",\n\t\t\"Brejolândia\",\n\t\t\"Brotas de Macaúbas\",\n\t\t\"Brumado\",\n\t\t\"Buerarema\",\n\t\t\"Buritirama\",\n\t\t\"Caatiba\",\n\t\t\"Cabaceiras do Paraguaçu\",\n\t\t\"Cachoeira\",\n\t\t\"Caculé\",\n\t\t\"Caém\",\n\t\t\"Caetanos\",\n\t\t\"Caetité\",\n\t\t\"Cafarnaum\",\n\t\t\"Cairu\",\n\t\t\"Caldeirão Grande\",\n\t\t\"Camacan\",\n\t\t\"Camaçari\",\n\t\t\"Camamu\",\n\t\t\"Campo Alegre de Lourdes\",\n\t\t\"Campo Formoso\",\n\t\t\"Canápolis\",\n\t\t\"Canarana\",\n\t\t\"Canavieiras\",\n\t\t\"Candeal\",\n\t\t\"Candeias\",\n\t\t\"Candiba\",\n\t\t\"Cândido Sales\",\n\t\t\"Cansanção\",\n\t\t\"Canudos\",\n\t\t\"Capela do Alto Alegre\",\n\t\t\"Capim Grosso\",\n\t\t\"Caraíbas\",\n\t\t\"Caravelas\",\n\t\t\"Cardeal da Silva\",\n\t\t\"Carinhanha\",\n\t\t\"Casa Nova\",\n\t\t\"Castro Alves\",\n\t\t\"Catolândia\",\n\t\t\"Catu\",\n\t\t\"Caturama\",\n\t\t\"Central\",\n\t\t\"Chorrochó\",\n\t\t\"Cícero Dantas\",\n\t\t\"Cipó\",\n\t\t\"Coaraci\",\n\t\t\"Cocos\",\n\t\t\"Conceição da Feira\",\n\t\t\"Conceição do Almeida\",\n\t\t\"Conceição do Coité\",\n\t\t\"Conceição do Jacuípe\",\n\t\t\"Conde\",\n\t\t\"Condeúba\",\n\t\t\"Contendas do Sincorá\",\n\t\t\"Coração de Maria\",\n\t\t\"Cordeiros\",\n\t\t\"Coribe\",\n\t\t\"Coronel João Sá\",\n\t\t\"Correntina\",\n\t\t\"Cotegipe\",\n\t\t\"Cravolândia\",\n\t\t\"Crisópolis\",\n\t\t\"Cristópolis\",\n\t\t\"Cruz das Almas\",\n\t\t\"Curaçá\",\n\t\t\"Dário Meira\",\n\t\t\"Dias d'Ávila\",\n\t\t\"Dom Basílio\",\n\t\t\"Dom Macedo Costa\",\n\t\t\"Elísio Medrado\",\n\t\t\"Encruzilhada\",\n\t\t\"Entre Rios\",\n\t\t\"Érico Cardoso\",\n\t\t\"Esplanada\",\n\t\t\"Euclides da Cunha\",\n\t\t\"Eunápolis\",\n\t\t\"Fátima\",\n\t\t\"Feira da Mata\",\n\t\t\"Feira de Santana\",\n\t\t\"Filadélfia\",\n\t\t\"Firmino Alves\",\n\t\t\"Floresta Azul\",\n\t\t\"Formosa do Rio Preto\",\n\t\t\"Gandu\",\n\t\t\"Gavião\",\n\t\t\"Gentio do Ouro\",\n\t\t\"Glória\",\n\t\t\"Gongogi\",\n\t\t\"Governador Mangabeira\",\n\t\t\"Guajeru\",\n\t\t\"Guanambi\",\n\t\t\"Guaratinga\",\n\t\t\"Heliópolis\",\n\t\t\"Iaçu\",\n\t\t\"Ibiassucê\",\n\t\t\"Ibicaraí\",\n\t\t\"Ibicoara\",\n\t\t\"Ibicuí\",\n\t\t\"Ibipeba\",\n\t\t\"Ibipitanga\",\n\t\t\"Ibiquera\",\n\t\t\"Ibirapitanga\",\n\t\t\"Ibirapuã\",\n\t\t\"Ibirataia\",\n\t\t\"Ibitiara\",\n\t\t\"Ibititá\",\n\t\t\"Ibotirama\",\n\t\t\"Ichu\",\n\t\t\"Igaporã\",\n\t\t\"Igrapiúna\",\n\t\t\"Iguaí\",\n\t\t\"Ilhéus\",\n\t\t\"Inhambupe\",\n\t\t\"Ipecaetá\",\n\t\t\"Ipiaú\",\n\t\t\"Ipirá\",\n\t\t\"Ipupiara\",\n\t\t\"Irajuba\",\n\t\t\"Iramaia\",\n\t\t\"Iraquara\",\n\t\t\"Irará\",\n\t\t\"Irecê\",\n\t\t\"Itabela\",\n\t\t\"Itaberaba\",\n\t\t\"Itabuna\",\n\t\t\"Itacaré\",\n\t\t\"Itaeté\",\n\t\t\"Itagi\",\n\t\t\"Itagibá\",\n\t\t\"Itagimirim\",\n\t\t\"Itaguaçu da Bahia\",\n\t\t\"Itaju do Colônia\",\n\t\t\"Itajuípe\",\n\t\t\"Itamaraju\",\n\t\t\"Itamari\",\n\t\t\"Itambé\",\n\t\t\"Itanagra\",\n\t\t\"Itanhém\",\n\t\t\"Itaparica\",\n\t\t\"Itapé\",\n\t\t\"Itapebi\",\n\t\t\"Itapetinga\",\n\t\t\"Itapicuru\",\n\t\t\"Itapitanga\",\n\t\t\"Itaquara\",\n\t\t\"Itarantim\",\n\t\t\"Itatim\",\n\t\t\"Itiruçu\",\n\t\t\"Itiúba\",\n\t\t\"Itororó\",\n\t\t\"Ituaçu\",\n\t\t\"Ituberá\",\n\t\t\"Iuiu\",\n\t\t\"Jaborandi\",\n\t\t\"Jacaraci\",\n\t\t\"Jacobina\",\n\t\t\"Jaguaquara\",\n\t\t\"Jaguarari\",\n\t\t\"Jaguaripe\",\n\t\t\"Jandaíra\",\n\t\t\"Jequié\",\n\t\t\"Jeremoabo\",\n\t\t\"Jiquiriçá\",\n\t\t\"Jitaúna\",\n\t\t\"João Dourado\",\n\t\t\"Juazeiro\",\n\t\t\"Jucuruçu\",\n\t\t\"Jussara\",\n\t\t\"Jussari\",\n\t\t\"Jussiape\",\n\t\t\"Lafaiete Coutinho\",\n\t\t\"Lagoa Real\",\n\t\t\"Laje\",\n\t\t\"Lajedão\",\n\t\t\"Lajedinho\",\n\t\t\"Lajedo do Tabocal\",\n\t\t\"Lamarão\",\n\t\t\"Lapão\",\n\t\t\"Lauro de Freitas\",\n\t\t\"Lençóis\",\n\t\t\"Licínio de Almeida\",\n\t\t\"Livramento de Nossa Senhora\",\n\t\t\"Luís Eduardo Magalhães\",\n\t\t\"Macajuba\",\n\t\t\"Macarani\",\n\t\t\"Macaúbas\",\n\t\t\"Macururé\",\n\t\t\"Madre de Deus\",\n\t\t\"Maetinga\",\n\t\t\"Maiquinique\",\n\t\t\"Mairi\",\n\t\t\"Malhada\",\n\t\t\"Malhada de Pedras\",\n\t\t\"Manoel Vitorino\",\n\t\t\"Mansidão\",\n\t\t\"Maracás\",\n\t\t\"Maragogipe\",\n\t\t\"Maraú\",\n\t\t\"Marcionílio Souza\",\n\t\t\"Mascote\",\n\t\t\"Mata de São João\",\n\t\t\"Matina\",\n\t\t\"Medeiros Neto\",\n\t\t\"Miguel Calmon\",\n\t\t\"Milagres\",\n\t\t\"Mirangaba\",\n\t\t\"Mirante\",\n\t\t\"Monte Santo\",\n\t\t\"Morpará\",\n\t\t\"Morro do Chapéu\",\n\t\t\"Mortugaba\",\n\t\t\"Mucugê\",\n\t\t\"Mucuri\",\n\t\t\"Mulungu do Morro\",\n\t\t\"Mundo Novo\",\n\t\t\"Muniz Ferreira\",\n\t\t\"Muquém do São Francisco\",\n\t\t\"Muritiba\",\n\t\t\"Mutuípe\",\n\t\t\"Nazaré\",\n\t\t\"Nilo Peçanha\",\n\t\t\"Nordestina\",\n\t\t\"Nova Canaã\",\n\t\t\"Nova Fátima\",\n\t\t\"Nova Ibiá\",\n\t\t\"Nova Itarana\",\n\t\t\"Nova Redenção\",\n\t\t\"Nova Soure\",\n\t\t\"Nova Viçosa\",\n\t\t\"Novo Horizonte\",\n\t\t\"Novo Triunfo\",\n\t\t\"Olindina\",\n\t\t\"Oliveira dos Brejinhos\",\n\t\t\"Ouriçangas\",\n\t\t\"Ourolândia\",\n\t\t\"Palmas de Monte Alto\",\n\t\t\"Palmeiras\",\n\t\t\"Paramirim\",\n\t\t\"Paratinga\",\n\t\t\"Paripiranga\",\n\t\t\"Pau Brasil\",\n\t\t\"Paulo Afonso\",\n\t\t\"Pé de Serra\",\n\t\t\"Pedrão\",\n\t\t\"Pedro Alexandre\",\n\t\t\"Piatã\",\n\t\t\"Pilão Arcado\",\n\t\t\"Pindaí\",\n\t\t\"Pindobaçu\",\n\t\t\"Pintadas\",\n\t\t\"Piraí do Norte\",\n\t\t\"Piripá\",\n\t\t\"Piritiba\",\n\t\t\"Planaltino\",\n\t\t\"Planalto\",\n\t\t\"Poções\",\n\t\t\"Pojuca\",\n\t\t\"Ponto Novo\",\n\t\t\"Porto Seguro\",\n\t\t\"Potiraguá\",\n\t\t\"Prado\",\n\t\t\"Presidente Dutra\",\n\t\t\"Presidente Jânio Quadros\",\n\t\t\"Presidente Tancredo Neves\",\n\t\t\"Queimadas\",\n\t\t\"Quijingue\",\n\t\t\"Quixabeira\",\n\t\t\"Rafael Jambeiro\",\n\t\t\"Remanso\",\n\t\t\"Retirolândia\",\n\t\t\"Riachão das Neves\",\n\t\t\"Riachão do Jacuípe\",\n\t\t\"Riacho de Santana\",\n\t\t\"Ribeira do Amparo\",\n\t\t\"Ribeira do Pombal\",\n\t\t\"Ribeirão do Largo\",\n\t\t\"Rio de Contas\",\n\t\t\"Rio do Antônio\",\n\t\t\"Rio do Pires\",\n\t\t\"Rio Real\",\n\t\t\"Rodelas\",\n\t\t\"Ruy Barbosa\",\n\t\t\"Salinas da Margarida\",\n\t\t\"Salvador\",\n\t\t\"Santa Bárbara\",\n\t\t\"Santa Brígida\",\n\t\t\"Santa Cruz Cabrália\",\n\t\t\"Santa Cruz da Vitória\",\n\t\t\"Santa Inês\",\n\t\t\"Santa Luzia\",\n\t\t\"Santa Maria da Vitória\",\n\t\t\"Santa Rita de Cássia\",\n\t\t\"Santa Terezinha\",\n\t\t\"Santaluz\",\n\t\t\"Santana\",\n\t\t\"Santanópolis\",\n\t\t\"Santo Amaro\",\n\t\t\"Santo Antônio de Jesus\",\n\t\t\"Santo Estêvão\",\n\t\t\"São Desidério\",\n\t\t\"São Domingos\",\n\t\t\"São Felipe\",\n\t\t\"São Félix\",\n\t\t\"São Félix do Coribe\",\n\t\t\"São Francisco do Conde\",\n\t\t\"São Gabriel\",\n\t\t\"São Gonçalo dos Campos\",\n\t\t\"São José da Vitória\",\n\t\t\"São José do Jacuípe\",\n\t\t\"São Miguel das Matas\",\n\t\t\"São Sebastião do Passé\",\n\t\t\"Sapeaçu\",\n\t\t\"Sátiro Dias\",\n\t\t\"Saubara\",\n\t\t\"Saúde\",\n\t\t\"Seabra\",\n\t\t\"Sebastião Laranjeiras\",\n\t\t\"Senhor do Bonfim\",\n\t\t\"Sento Sé\",\n\t\t\"Serra do Ramalho\",\n\t\t\"Serra Dourada\",\n\t\t\"Serra Preta\",\n\t\t\"Serrinha\",\n\t\t\"Serrolândia\",\n\t\t\"Simões Filho\",\n\t\t\"Sítio do Mato\",\n\t\t\"Sítio do Quinto\",\n\t\t\"Sobradinho\",\n\t\t\"Souto Soares\",\n\t\t\"Tabocas do Brejo Velho\",\n\t\t\"Tanhaçu\",\n\t\t\"Tanque Novo\",\n\t\t\"Tanquinho\",\n\t\t\"Taperoá\",\n\t\t\"Tapiramutá\",\n\t\t\"Teixeira de Freitas\",\n\t\t\"Teodoro Sampaio\",\n\t\t\"Teofilândia\",\n\t\t\"Teolândia\",\n\t\t\"Terra Nova\",\n\t\t\"Tremedal\",\n\t\t\"Tucano\",\n\t\t\"Uauá\",\n\t\t\"Ubaíra\",\n\t\t\"Ubaitaba\",\n\t\t\"Ubatã\",\n\t\t\"Uibaí\",\n\t\t\"Umburanas\",\n\t\t\"Una\",\n\t\t\"Urandi\",\n\t\t\"Uruçuca\",\n\t\t\"Utinga\",\n\t\t\"Valença\",\n\t\t\"Valente\",\n\t\t\"Várzea da Roça\",\n\t\t\"Várzea do Poço\",\n\t\t\"Várzea Nova\",\n\t\t\"Varzedo\",\n\t\t\"Vera Cruz\",\n\t\t\"Vereda\",\n\t\t\"Vitória da Conquista\",\n\t\t\"Wagner\",\n\t\t\"Wanderley\",\n\t\t\"Wenceslau Guimarães\",\n\t\t\"Xique-Xique\",\n\t],\n\tCE: [\n\t\t\"Abaiara\",\n\t\t\"Acarape\",\n\t\t\"Acaraú\",\n\t\t\"Acopiara\",\n\t\t\"Aiuaba\",\n\t\t\"Alcântaras\",\n\t\t\"Altaneira\",\n\t\t\"Alto Santo\",\n\t\t\"Amontada\",\n\t\t\"Antonina do Norte\",\n\t\t\"Apuiarés\",\n\t\t\"Aquiraz\",\n\t\t\"Aracati\",\n\t\t\"Aracoiaba\",\n\t\t\"Ararendá\",\n\t\t\"Araripe\",\n\t\t\"Aratuba\",\n\t\t\"Arneiroz\",\n\t\t\"Assaré\",\n\t\t\"Aurora\",\n\t\t\"Baixio\",\n\t\t\"Banabuiú\",\n\t\t\"Barbalha\",\n\t\t\"Barreira\",\n\t\t\"Barro\",\n\t\t\"Barroquinha\",\n\t\t\"Baturité\",\n\t\t\"Beberibe\",\n\t\t\"Bela Cruz\",\n\t\t\"Boa Viagem\",\n\t\t\"Brejo Santo\",\n\t\t\"Camocim\",\n\t\t\"Campos Sales\",\n\t\t\"Canindé\",\n\t\t\"Capistrano\",\n\t\t\"Caridade\",\n\t\t\"Cariré\",\n\t\t\"Caririaçu\",\n\t\t\"Cariús\",\n\t\t\"Carnaubal\",\n\t\t\"Cascavel\",\n\t\t\"Catarina\",\n\t\t\"Catunda\",\n\t\t\"Caucaia\",\n\t\t\"Cedro\",\n\t\t\"Chaval\",\n\t\t\"Choró\",\n\t\t\"Chorozinho\",\n\t\t\"Coreaú\",\n\t\t\"Crateús\",\n\t\t\"Crato\",\n\t\t\"Croatá\",\n\t\t\"Cruz\",\n\t\t\"Deputado Irapuan Pinheiro\",\n\t\t\"Ereré\",\n\t\t\"Eusébio\",\n\t\t\"Farias Brito\",\n\t\t\"Forquilha\",\n\t\t\"Fortaleza\",\n\t\t\"Fortim\",\n\t\t\"Frecheirinha\",\n\t\t\"General Sampaio\",\n\t\t\"Graça\",\n\t\t\"Granja\",\n\t\t\"Granjeiro\",\n\t\t\"Groaíras\",\n\t\t\"Guaiúba\",\n\t\t\"Guaraciaba do Norte\",\n\t\t\"Guaramiranga\",\n\t\t\"Hidrolândia\",\n\t\t\"Horizonte\",\n\t\t\"Ibaretama\",\n\t\t\"Ibiapina\",\n\t\t\"Ibicuitinga\",\n\t\t\"Icapuí\",\n\t\t\"Icó\",\n\t\t\"Iguatu\",\n\t\t\"Independência\",\n\t\t\"Ipaporanga\",\n\t\t\"Ipaumirim\",\n\t\t\"Ipu\",\n\t\t\"Ipueiras\",\n\t\t\"Iracema\",\n\t\t\"Irauçuba\",\n\t\t\"Itaiçaba\",\n\t\t\"Itaitinga\",\n\t\t\"Itapajé\",\n\t\t\"Itapipoca\",\n\t\t\"Itapiúna\",\n\t\t\"Itarema\",\n\t\t\"Itatira\",\n\t\t\"Jaguaretama\",\n\t\t\"Jaguaribara\",\n\t\t\"Jaguaribe\",\n\t\t\"Jaguaruana\",\n\t\t\"Jardim\",\n\t\t\"Jati\",\n\t\t\"Jijoca de Jericoacoara\",\n\t\t\"Juazeiro do Norte\",\n\t\t\"Jucás\",\n\t\t\"Lavras da Mangabeira\",\n\t\t\"Limoeiro do Norte\",\n\t\t\"Madalena\",\n\t\t\"Maracanaú\",\n\t\t\"Maranguape\",\n\t\t\"Marco\",\n\t\t\"Martinópole\",\n\t\t\"Massapê\",\n\t\t\"Mauriti\",\n\t\t\"Meruoca\",\n\t\t\"Milagres\",\n\t\t\"Milhã\",\n\t\t\"Miraíma\",\n\t\t\"Missão Velha\",\n\t\t\"Mombaça\",\n\t\t\"Monsenhor Tabosa\",\n\t\t\"Morada Nova\",\n\t\t\"Moraújo\",\n\t\t\"Morrinhos\",\n\t\t\"Mucambo\",\n\t\t\"Mulungu\",\n\t\t\"Nova Olinda\",\n\t\t\"Nova Russas\",\n\t\t\"Novo Oriente\",\n\t\t\"Ocara\",\n\t\t\"Orós\",\n\t\t\"Pacajus\",\n\t\t\"Pacatuba\",\n\t\t\"Pacoti\",\n\t\t\"Pacujá\",\n\t\t\"Palhano\",\n\t\t\"Palmácia\",\n\t\t\"Paracuru\",\n\t\t\"Paraipaba\",\n\t\t\"Parambu\",\n\t\t\"Paramoti\",\n\t\t\"Pedra Branca\",\n\t\t\"Penaforte\",\n\t\t\"Pentecoste\",\n\t\t\"Pereiro\",\n\t\t\"Pindoretama\",\n\t\t\"Piquet Carneiro\",\n\t\t\"Pires Ferreira\",\n\t\t\"Poranga\",\n\t\t\"Porteiras\",\n\t\t\"Potengi\",\n\t\t\"Potiretama\",\n\t\t\"Quiterianópolis\",\n\t\t\"Quixadá\",\n\t\t\"Quixelô\",\n\t\t\"Quixeramobim\",\n\t\t\"Quixeré\",\n\t\t\"Redenção\",\n\t\t\"Reriutaba\",\n\t\t\"Russas\",\n\t\t\"Saboeiro\",\n\t\t\"Salitre\",\n\t\t\"Santa Quitéria\",\n\t\t\"Santana do Acaraú\",\n\t\t\"Santana do Cariri\",\n\t\t\"São Benedito\",\n\t\t\"São Gonçalo do Amarante\",\n\t\t\"São João do Jaguaribe\",\n\t\t\"São Luís do Curu\",\n\t\t\"Senador Pompeu\",\n\t\t\"Senador Sá\",\n\t\t\"Sobral\",\n\t\t\"Solonópole\",\n\t\t\"Tabuleiro do Norte\",\n\t\t\"Tamboril\",\n\t\t\"Tarrafas\",\n\t\t\"Tauá\",\n\t\t\"Tejuçuoca\",\n\t\t\"Tianguá\",\n\t\t\"Trairi\",\n\t\t\"Tururu\",\n\t\t\"Ubajara\",\n\t\t\"Umari\",\n\t\t\"Umirim\",\n\t\t\"Uruburetama\",\n\t\t\"Uruoca\",\n\t\t\"Varjota\",\n\t\t\"Várzea Alegre\",\n\t\t\"Viçosa do Ceará\",\n\t],\n\tDF: [\"Brasília\"],\n\tES: [\n\t\t\"Afonso Cláudio\",\n\t\t\"Água Doce do Norte\",\n\t\t\"Águia Branca\",\n\t\t\"Alegre\",\n\t\t\"Alfredo Chaves\",\n\t\t\"Alto Rio Novo\",\n\t\t\"Anchieta\",\n\t\t\"Apiacá\",\n\t\t\"Aracruz\",\n\t\t\"Atílio Vivácqua\",\n\t\t\"Baixo Guandu\",\n\t\t\"Barra de São Francisco\",\n\t\t\"Boa Esperança\",\n\t\t\"Bom Jesus do Norte\",\n\t\t\"Brejetuba\",\n\t\t\"Cachoeiro de Itapemirim\",\n\t\t\"Cariacica\",\n\t\t\"Castelo\",\n\t\t\"Colatina\",\n\t\t\"Conceição da Barra\",\n\t\t\"Conceição do Castelo\",\n\t\t\"Divino de São Lourenço\",\n\t\t\"Domingos Martins\",\n\t\t\"Dores do Rio Preto\",\n\t\t\"Ecoporanga\",\n\t\t\"Fundão\",\n\t\t\"Governador Lindenberg\",\n\t\t\"Guaçuí\",\n\t\t\"Guarapari\",\n\t\t\"Ibatiba\",\n\t\t\"Ibiraçu\",\n\t\t\"Ibitirama\",\n\t\t\"Iconha\",\n\t\t\"Irupi\",\n\t\t\"Itaguaçu\",\n\t\t\"Itapemirim\",\n\t\t\"Itarana\",\n\t\t\"Iúna\",\n\t\t\"Jaguaré\",\n\t\t\"Jerônimo Monteiro\",\n\t\t\"João Neiva\",\n\t\t\"Laranja da Terra\",\n\t\t\"Linhares\",\n\t\t\"Mantenópolis\",\n\t\t\"Marataízes\",\n\t\t\"Marechal Floriano\",\n\t\t\"Marilândia\",\n\t\t\"Mimoso do Sul\",\n\t\t\"Montanha\",\n\t\t\"Mucurici\",\n\t\t\"Muniz Freire\",\n\t\t\"Muqui\",\n\t\t\"Nova Venécia\",\n\t\t\"Pancas\",\n\t\t\"Pedro Canário\",\n\t\t\"Pinheiros\",\n\t\t\"Piúma\",\n\t\t\"Ponto Belo\",\n\t\t\"Presidente Kennedy\",\n\t\t\"Rio Bananal\",\n\t\t\"Rio Novo do Sul\",\n\t\t\"Santa Leopoldina\",\n\t\t\"Santa Maria de Jetibá\",\n\t\t\"Santa Teresa\",\n\t\t\"São Domingos do Norte\",\n\t\t\"São Gabriel da Palha\",\n\t\t\"São José do Calçado\",\n\t\t\"São Mateus\",\n\t\t\"São Roque do Canaã\",\n\t\t\"Serra\",\n\t\t\"Sooretama\",\n\t\t\"Vargem Alta\",\n\t\t\"Venda Nova do Imigrante\",\n\t\t\"Viana\",\n\t\t\"Vila Pavão\",\n\t\t\"Vila Valério\",\n\t\t\"Vila Velha\",\n\t\t\"Vitória\",\n\t],\n\tGO: [\n\t\t\"Abadia de Goiás\",\n\t\t\"Abadiânia\",\n\t\t\"Acreúna\",\n\t\t\"Adelândia\",\n\t\t\"Água Fria de Goiás\",\n\t\t\"Água Limpa\",\n\t\t\"Águas Lindas de Goiás\",\n\t\t\"Alexânia\",\n\t\t\"Aloândia\",\n\t\t\"Alto Horizonte\",\n\t\t\"Alto Paraíso de Goiás\",\n\t\t\"Alvorada do Norte\",\n\t\t\"Amaralina\",\n\t\t\"Americano do Brasil\",\n\t\t\"Amorinópolis\",\n\t\t\"Anápolis\",\n\t\t\"Anhanguera\",\n\t\t\"Anicuns\",\n\t\t\"Aparecida de Goiânia\",\n\t\t\"Aparecida do Rio Doce\",\n\t\t\"Aporé\",\n\t\t\"Araçu\",\n\t\t\"Aragarças\",\n\t\t\"Aragoiânia\",\n\t\t\"Araguapaz\",\n\t\t\"Arenópolis\",\n\t\t\"Aruanã\",\n\t\t\"Aurilândia\",\n\t\t\"Avelinópolis\",\n\t\t\"Baliza\",\n\t\t\"Barro Alto\",\n\t\t\"Bela Vista de Goiás\",\n\t\t\"Bom Jardim de Goiás\",\n\t\t\"Bom Jesus de Goiás\",\n\t\t\"Bonfinópolis\",\n\t\t\"Bonópolis\",\n\t\t\"Brazabrantes\",\n\t\t\"Britânia\",\n\t\t\"Buriti Alegre\",\n\t\t\"Buriti de Goiás\",\n\t\t\"Buritinópolis\",\n\t\t\"Cabeceiras\",\n\t\t\"Cachoeira Alta\",\n\t\t\"Cachoeira de Goiás\",\n\t\t\"Cachoeira Dourada\",\n\t\t\"Caçu\",\n\t\t\"Caiapônia\",\n\t\t\"Caldas Novas\",\n\t\t\"Caldazinha\",\n\t\t\"Campestre de Goiás\",\n\t\t\"Campinaçu\",\n\t\t\"Campinorte\",\n\t\t\"Campo Alegre de Goiás\",\n\t\t\"Campo Limpo de Goiás\",\n\t\t\"Campos Belos\",\n\t\t\"Campos Verdes\",\n\t\t\"Carmo do Rio Verde\",\n\t\t\"Castelândia\",\n\t\t\"Catalão\",\n\t\t\"Caturaí\",\n\t\t\"Cavalcante\",\n\t\t\"Ceres\",\n\t\t\"Cezarina\",\n\t\t\"Chapadão do Céu\",\n\t\t\"Cidade Ocidental\",\n\t\t\"Cocalzinho de Goiás\",\n\t\t\"Colinas do Sul\",\n\t\t\"Córrego do Ouro\",\n\t\t\"Corumbá de Goiás\",\n\t\t\"Corumbaíba\",\n\t\t\"Cristalina\",\n\t\t\"Cristianópolis\",\n\t\t\"Crixás\",\n\t\t\"Cromínia\",\n\t\t\"Cumari\",\n\t\t\"Damianópolis\",\n\t\t\"Damolândia\",\n\t\t\"Davinópolis\",\n\t\t\"Diorama\",\n\t\t\"Divinópolis de Goiás\",\n\t\t\"Doverlândia\",\n\t\t\"Edealina\",\n\t\t\"Edéia\",\n\t\t\"Estrela do Norte\",\n\t\t\"Faina\",\n\t\t\"Fazenda Nova\",\n\t\t\"Firminópolis\",\n\t\t\"Flores de Goiás\",\n\t\t\"Formosa\",\n\t\t\"Formoso\",\n\t\t\"Gameleira de Goiás\",\n\t\t\"Goianápolis\",\n\t\t\"Goiandira\",\n\t\t\"Goianésia\",\n\t\t\"Goiânia\",\n\t\t\"Goianira\",\n\t\t\"Goiás\",\n\t\t\"Goiatuba\",\n\t\t\"Gouvelândia\",\n\t\t\"Guapó\",\n\t\t\"Guaraíta\",\n\t\t\"Guarani de Goiás\",\n\t\t\"Guarinos\",\n\t\t\"Heitoraí\",\n\t\t\"Hidrolândia\",\n\t\t\"Hidrolina\",\n\t\t\"Iaciara\",\n\t\t\"Inaciolândia\",\n\t\t\"Indiara\",\n\t\t\"Inhumas\",\n\t\t\"Ipameri\",\n\t\t\"Ipiranga de Goiás\",\n\t\t\"Iporá\",\n\t\t\"Israelândia\",\n\t\t\"Itaberaí\",\n\t\t\"Itaguari\",\n\t\t\"Itaguaru\",\n\t\t\"Itajá\",\n\t\t\"Itapaci\",\n\t\t\"Itapirapuã\",\n\t\t\"Itapuranga\",\n\t\t\"Itarumã\",\n\t\t\"Itauçu\",\n\t\t\"Itumbiara\",\n\t\t\"Ivolândia\",\n\t\t\"Jandaia\",\n\t\t\"Jaraguá\",\n\t\t\"Jataí\",\n\t\t\"Jaupaci\",\n\t\t\"Jesúpolis\",\n\t\t\"Joviânia\",\n\t\t\"Jussara\",\n\t\t\"Lagoa Santa\",\n\t\t\"Leopoldo de Bulhões\",\n\t\t\"Luziânia\",\n\t\t\"Mairipotaba\",\n\t\t\"Mambaí\",\n\t\t\"Mara Rosa\",\n\t\t\"Marzagão\",\n\t\t\"Matrinchã\",\n\t\t\"Maurilândia\",\n\t\t\"Mimoso de Goiás\",\n\t\t\"Minaçu\",\n\t\t\"Mineiros\",\n\t\t\"Moiporá\",\n\t\t\"Monte Alegre de Goiás\",\n\t\t\"Montes Claros de Goiás\",\n\t\t\"Montividiu\",\n\t\t\"Montividiu do Norte\",\n\t\t\"Morrinhos\",\n\t\t\"Morro Agudo de Goiás\",\n\t\t\"Mossâmedes\",\n\t\t\"Mozarlândia\",\n\t\t\"Mundo Novo\",\n\t\t\"Mutunópolis\",\n\t\t\"Nazário\",\n\t\t\"Nerópolis\",\n\t\t\"Niquelândia\",\n\t\t\"Nova América\",\n\t\t\"Nova Aurora\",\n\t\t\"Nova Crixás\",\n\t\t\"Nova Glória\",\n\t\t\"Nova Iguaçu de Goiás\",\n\t\t\"Nova Roma\",\n\t\t\"Nova Veneza\",\n\t\t\"Novo Brasil\",\n\t\t\"Novo Gama\",\n\t\t\"Novo Planalto\",\n\t\t\"Orizona\",\n\t\t\"Ouro Verde de Goiás\",\n\t\t\"Ouvidor\",\n\t\t\"Padre Bernardo\",\n\t\t\"Palestina de Goiás\",\n\t\t\"Palmeiras de Goiás\",\n\t\t\"Palmelo\",\n\t\t\"Palminópolis\",\n\t\t\"Panamá\",\n\t\t\"Paranaiguara\",\n\t\t\"Paraúna\",\n\t\t\"Perolândia\",\n\t\t\"Petrolina de Goiás\",\n\t\t\"Pilar de Goiás\",\n\t\t\"Piracanjuba\",\n\t\t\"Piranhas\",\n\t\t\"Pirenópolis\",\n\t\t\"Pires do Rio\",\n\t\t\"Planaltina\",\n\t\t\"Pontalina\",\n\t\t\"Porangatu\",\n\t\t\"Porteirão\",\n\t\t\"Portelândia\",\n\t\t\"Posse\",\n\t\t\"Professor Jamil\",\n\t\t\"Quirinópolis\",\n\t\t\"Rialma\",\n\t\t\"Rianápolis\",\n\t\t\"Rio Quente\",\n\t\t\"Rio Verde\",\n\t\t\"Rubiataba\",\n\t\t\"Sanclerlândia\",\n\t\t\"Santa Bárbara de Goiás\",\n\t\t\"Santa Cruz de Goiás\",\n\t\t\"Santa Fé de Goiás\",\n\t\t\"Santa Helena de Goiás\",\n\t\t\"Santa Isabel\",\n\t\t\"Santa Rita do Araguaia\",\n\t\t\"Santa Rita do Novo Destino\",\n\t\t\"Santa Rosa de Goiás\",\n\t\t\"Santa Tereza de Goiás\",\n\t\t\"Santa Terezinha de Goiás\",\n\t\t\"Santo Antônio da Barra\",\n\t\t\"Santo Antônio de Goiás\",\n\t\t\"Santo Antônio do Descoberto\",\n\t\t\"São Domingos\",\n\t\t\"São Francisco de Goiás\",\n\t\t\"São João d'Aliança\",\n\t\t\"São João da Paraúna\",\n\t\t\"São Luís de Montes Belos\",\n\t\t\"São Luiz do Norte\",\n\t\t\"São Miguel do Araguaia\",\n\t\t\"São Miguel do Passa Quatro\",\n\t\t\"São Patrício\",\n\t\t\"São Simão\",\n\t\t\"Senador Canedo\",\n\t\t\"Serranópolis\",\n\t\t\"Silvânia\",\n\t\t\"Simolândia\",\n\t\t\"Sítio d'Abadia\",\n\t\t\"Taquaral de Goiás\",\n\t\t\"Teresina de Goiás\",\n\t\t\"Terezópolis de Goiás\",\n\t\t\"Três Ranchos\",\n\t\t\"Trindade\",\n\t\t\"Trombas\",\n\t\t\"Turvânia\",\n\t\t\"Turvelândia\",\n\t\t\"Uirapuru\",\n\t\t\"Uruaçu\",\n\t\t\"Uruana\",\n\t\t\"Urutaí\",\n\t\t\"Valparaíso de Goiás\",\n\t\t\"Varjão\",\n\t\t\"Vianópolis\",\n\t\t\"Vicentinópolis\",\n\t\t\"Vila Boa\",\n\t\t\"Vila Propício\",\n\t],\n\tMA: [\n\t\t\"Açailândia\",\n\t\t\"Afonso Cunha\",\n\t\t\"Água Doce do Maranhão\",\n\t\t\"Alcântara\",\n\t\t\"Aldeias Altas\",\n\t\t\"Altamira do Maranhão\",\n\t\t\"Alto Alegre do Maranhão\",\n\t\t\"Alto Alegre do Pindaré\",\n\t\t\"Alto Parnaíba\",\n\t\t\"Amapá do Maranhão\",\n\t\t\"Amarante do Maranhão\",\n\t\t\"Anajatuba\",\n\t\t\"Anapurus\",\n\t\t\"Apicum-Açu\",\n\t\t\"Araguanã\",\n\t\t\"Araioses\",\n\t\t\"Arame\",\n\t\t\"Arari\",\n\t\t\"Axixá\",\n\t\t\"Bacabal\",\n\t\t\"Bacabeira\",\n\t\t\"Bacuri\",\n\t\t\"Bacurituba\",\n\t\t\"Balsas\",\n\t\t\"Barão de Grajaú\",\n\t\t\"Barra do Corda\",\n\t\t\"Barreirinhas\",\n\t\t\"Bela Vista do Maranhão\",\n\t\t\"Belágua\",\n\t\t\"Benedito Leite\",\n\t\t\"Bequimão\",\n\t\t\"Bernardo do Mearim\",\n\t\t\"Boa Vista do Gurupi\",\n\t\t\"Bom Jardim\",\n\t\t\"Bom Jesus das Selvas\",\n\t\t\"Bom Lugar\",\n\t\t\"Brejo\",\n\t\t\"Brejo de Areia\",\n\t\t\"Buriti\",\n\t\t\"Buriti Bravo\",\n\t\t\"Buriticupu\",\n\t\t\"Buritirana\",\n\t\t\"Cachoeira Grande\",\n\t\t\"Cajapió\",\n\t\t\"Cajari\",\n\t\t\"Campestre do Maranhão\",\n\t\t\"Cândido Mendes\",\n\t\t\"Cantanhede\",\n\t\t\"Capinzal do Norte\",\n\t\t\"Carolina\",\n\t\t\"Carutapera\",\n\t\t\"Caxias\",\n\t\t\"Cedral\",\n\t\t\"Central do Maranhão\",\n\t\t\"Centro do Guilherme\",\n\t\t\"Centro Novo do Maranhão\",\n\t\t\"Chapadinha\",\n\t\t\"Cidelândia\",\n\t\t\"Codó\",\n\t\t\"Coelho Neto\",\n\t\t\"Colinas\",\n\t\t\"Conceição do Lago-Açu\",\n\t\t\"Coroatá\",\n\t\t\"Cururupu\",\n\t\t\"Davinópolis\",\n\t\t\"Dom Pedro\",\n\t\t\"Duque Bacelar\",\n\t\t\"Esperantinópolis\",\n\t\t\"Estreito\",\n\t\t\"Feira Nova do Maranhão\",\n\t\t\"Fernando Falcão\",\n\t\t\"Formosa da Serra Negra\",\n\t\t\"Fortaleza dos Nogueiras\",\n\t\t\"Fortuna\",\n\t\t\"Godofredo Viana\",\n\t\t\"Gonçalves Dias\",\n\t\t\"Governador Archer\",\n\t\t\"Governador Edison Lobão\",\n\t\t\"Governador Eugênio Barros\",\n\t\t\"Governador Luiz Rocha\",\n\t\t\"Governador Newton Bello\",\n\t\t\"Governador Nunes Freire\",\n\t\t\"Graça Aranha\",\n\t\t\"Grajaú\",\n\t\t\"Guimarães\",\n\t\t\"Humberto de Campos\",\n\t\t\"Icatu\",\n\t\t\"Igarapé do Meio\",\n\t\t\"Igarapé Grande\",\n\t\t\"Imperatriz\",\n\t\t\"Itaipava do Grajaú\",\n\t\t\"Itapecuru Mirim\",\n\t\t\"Itinga do Maranhão\",\n\t\t\"Jatobá\",\n\t\t\"Jenipapo dos Vieiras\",\n\t\t\"João Lisboa\",\n\t\t\"Joselândia\",\n\t\t\"Junco do Maranhão\",\n\t\t\"Lago da Pedra\",\n\t\t\"Lago do Junco\",\n\t\t\"Lago dos Rodrigues\",\n\t\t\"Lago Verde\",\n\t\t\"Lagoa do Mato\",\n\t\t\"Lagoa Grande do Maranhão\",\n\t\t\"Lajeado Novo\",\n\t\t\"Lima Campos\",\n\t\t\"Loreto\",\n\t\t\"Luís Domingues\",\n\t\t\"Magalhães de Almeida\",\n\t\t\"Maracaçumé\",\n\t\t\"Marajá do Sena\",\n\t\t\"Maranhãozinho\",\n\t\t\"Mata Roma\",\n\t\t\"Matinha\",\n\t\t\"Matões\",\n\t\t\"Matões do Norte\",\n\t\t\"Milagres do Maranhão\",\n\t\t\"Mirador\",\n\t\t\"Miranda do Norte\",\n\t\t\"Mirinzal\",\n\t\t\"Monção\",\n\t\t\"Montes Altos\",\n\t\t\"Morros\",\n\t\t\"Nina Rodrigues\",\n\t\t\"Nova Colinas\",\n\t\t\"Nova Iorque\",\n\t\t\"Nova Olinda do Maranhão\",\n\t\t\"Olho d'Água das Cunhãs\",\n\t\t\"Olinda Nova do Maranhão\",\n\t\t\"Paço do Lumiar\",\n\t\t\"Palmeirândia\",\n\t\t\"Paraibano\",\n\t\t\"Parnarama\",\n\t\t\"Passagem Franca\",\n\t\t\"Pastos Bons\",\n\t\t\"Paulino Neves\",\n\t\t\"Paulo Ramos\",\n\t\t\"Pedreiras\",\n\t\t\"Pedro do Rosário\",\n\t\t\"Penalva\",\n\t\t\"Peri Mirim\",\n\t\t\"Peritoró\",\n\t\t\"Pindaré-Mirim\",\n\t\t\"Pinheiro\",\n\t\t\"Pio XII\",\n\t\t\"Pirapemas\",\n\t\t\"Poção de Pedras\",\n\t\t\"Porto Franco\",\n\t\t\"Porto Rico do Maranhão\",\n\t\t\"Presidente Dutra\",\n\t\t\"Presidente Juscelino\",\n\t\t\"Presidente Médici\",\n\t\t\"Presidente Sarney\",\n\t\t\"Presidente Vargas\",\n\t\t\"Primeira Cruz\",\n\t\t\"Raposa\",\n\t\t\"Riachão\",\n\t\t\"Ribamar Fiquene\",\n\t\t\"Rosário\",\n\t\t\"Sambaíba\",\n\t\t\"Santa Filomena do Maranhão\",\n\t\t\"Santa Helena\",\n\t\t\"Santa Inês\",\n\t\t\"Santa Luzia\",\n\t\t\"Santa Luzia do Paruá\",\n\t\t\"Santa Quitéria do Maranhão\",\n\t\t\"Santa Rita\",\n\t\t\"Santana do Maranhão\",\n\t\t\"Santo Amaro do Maranhão\",\n\t\t\"Santo Antônio dos Lopes\",\n\t\t\"São Benedito do Rio Preto\",\n\t\t\"São Bento\",\n\t\t\"São Bernardo\",\n\t\t\"São Domingos do Azeitão\",\n\t\t\"São Domingos do Maranhão\",\n\t\t\"São Félix de Balsas\",\n\t\t\"São Francisco do Brejão\",\n\t\t\"São Francisco do Maranhão\",\n\t\t\"São João Batista\",\n\t\t\"São João do Carú\",\n\t\t\"São João do Paraíso\",\n\t\t\"São João do Soter\",\n\t\t\"São João dos Patos\",\n\t\t\"São José de Ribamar\",\n\t\t\"São José dos Basílios\",\n\t\t\"São Luís\",\n\t\t\"São Luís Gonzaga do Maranhão\",\n\t\t\"São Mateus do Maranhão\",\n\t\t\"São Pedro da Água Branca\",\n\t\t\"São Pedro dos Crentes\",\n\t\t\"São Raimundo das Mangabeiras\",\n\t\t\"São Raimundo do Doca Bezerra\",\n\t\t\"São Roberto\",\n\t\t\"São Vicente Ferrer\",\n\t\t\"Satubinha\",\n\t\t\"Senador Alexandre Costa\",\n\t\t\"Senador La Rocque\",\n\t\t\"Serrano do Maranhão\",\n\t\t\"Sítio Novo\",\n\t\t\"Sucupira do Norte\",\n\t\t\"Sucupira do Riachão\",\n\t\t\"Tasso Fragoso\",\n\t\t\"Timbiras\",\n\t\t\"Timon\",\n\t\t\"Trizidela do Vale\",\n\t\t\"Tufilândia\",\n\t\t\"Tuntum\",\n\t\t\"Turiaçu\",\n\t\t\"Turilândia\",\n\t\t\"Tutóia\",\n\t\t\"Urbano Santos\",\n\t\t\"Vargem Grande\",\n\t\t\"Viana\",\n\t\t\"Vila Nova dos Martírios\",\n\t\t\"Vitória do Mearim\",\n\t\t\"Vitorino Freire\",\n\t\t\"Zé Doca\",\n\t],\n\tMG: [\n\t\t\"Abadia dos Dourados\",\n\t\t\"Abaeté\",\n\t\t\"Abre Campo\",\n\t\t\"Acaiaca\",\n\t\t\"Açucena\",\n\t\t\"Água Boa\",\n\t\t\"Água Comprida\",\n\t\t\"Aguanil\",\n\t\t\"Águas Formosas\",\n\t\t\"Águas Vermelhas\",\n\t\t\"Aimorés\",\n\t\t\"Aiuruoca\",\n\t\t\"Alagoa\",\n\t\t\"Albertina\",\n\t\t\"Além Paraíba\",\n\t\t\"Alfenas\",\n\t\t\"Alfredo Vasconcelos\",\n\t\t\"Almenara\",\n\t\t\"Alpercata\",\n\t\t\"Alpinópolis\",\n\t\t\"Alterosa\",\n\t\t\"Alto Caparaó\",\n\t\t\"Alto Jequitibá\",\n\t\t\"Alto Rio Doce\",\n\t\t\"Alvarenga\",\n\t\t\"Alvinópolis\",\n\t\t\"Alvorada de Minas\",\n\t\t\"Amparo do Serra\",\n\t\t\"Andradas\",\n\t\t\"Andrelândia\",\n\t\t\"Angelândia\",\n\t\t\"Antônio Carlos\",\n\t\t\"Antônio Dias\",\n\t\t\"Antônio Prado de Minas\",\n\t\t\"Araçaí\",\n\t\t\"Aracitaba\",\n\t\t\"Araçuaí\",\n\t\t\"Araguari\",\n\t\t\"Arantina\",\n\t\t\"Araponga\",\n\t\t\"Araporã\",\n\t\t\"Arapuá\",\n\t\t\"Araújos\",\n\t\t\"Araxá\",\n\t\t\"Arceburgo\",\n\t\t\"Arcos\",\n\t\t\"Areado\",\n\t\t\"Argirita\",\n\t\t\"Aricanduva\",\n\t\t\"Arinos\",\n\t\t\"Astolfo Dutra\",\n\t\t\"Ataléia\",\n\t\t\"Augusto de Lima\",\n\t\t\"Baependi\",\n\t\t\"Baldim\",\n\t\t\"Bambuí\",\n\t\t\"Bandeira\",\n\t\t\"Bandeira do Sul\",\n\t\t\"Barão de Cocais\",\n\t\t\"Barão do Monte Alto\",\n\t\t\"Barbacena\",\n\t\t\"Barra Longa\",\n\t\t\"Barroso\",\n\t\t\"Bela Vista de Minas\",\n\t\t\"Belmiro Braga\",\n\t\t\"Belo Horizonte\",\n\t\t\"Belo Oriente\",\n\t\t\"Belo Vale\",\n\t\t\"Berilo\",\n\t\t\"Berizal\",\n\t\t\"Bertópolis\",\n\t\t\"Betim\",\n\t\t\"Bias Fortes\",\n\t\t\"Bicas\",\n\t\t\"Biquinhas\",\n\t\t\"Boa Esperança\",\n\t\t\"Bocaina de Minas\",\n\t\t\"Bocaiúva\",\n\t\t\"Bom Despacho\",\n\t\t\"Bom Jardim de Minas\",\n\t\t\"Bom Jesus da Penha\",\n\t\t\"Bom Jesus do Amparo\",\n\t\t\"Bom Jesus do Galho\",\n\t\t\"Bom Repouso\",\n\t\t\"Bom Sucesso\",\n\t\t\"Bonfim\",\n\t\t\"Bonfinópolis de Minas\",\n\t\t\"Bonito de Minas\",\n\t\t\"Borda da Mata\",\n\t\t\"Botelhos\",\n\t\t\"Botumirim\",\n\t\t\"Brás Pires\",\n\t\t\"Brasilândia de Minas\",\n\t\t\"Brasília de Minas\",\n\t\t\"Braúnas\",\n\t\t\"Brazópolis\",\n\t\t\"Brumadinho\",\n\t\t\"Bueno Brandão\",\n\t\t\"Buenópolis\",\n\t\t\"Bugre\",\n\t\t\"Buritis\",\n\t\t\"Buritizeiro\",\n\t\t\"Cabeceira Grande\",\n\t\t\"Cabo Verde\",\n\t\t\"Cachoeira da Prata\",\n\t\t\"Cachoeira de Minas\",\n\t\t\"Cachoeira de Pajeú\",\n\t\t\"Cachoeira Dourada\",\n\t\t\"Caetanópolis\",\n\t\t\"Caeté\",\n\t\t\"Caiana\",\n\t\t\"Cajuri\",\n\t\t\"Caldas\",\n\t\t\"Camacho\",\n\t\t\"Camanducaia\",\n\t\t\"Cambuí\",\n\t\t\"Cambuquira\",\n\t\t\"Campanário\",\n\t\t\"Campanha\",\n\t\t\"Campestre\",\n\t\t\"Campina Verde\",\n\t\t\"Campo Azul\",\n\t\t\"Campo Belo\",\n\t\t\"Campo do Meio\",\n\t\t\"Campo Florido\",\n\t\t\"Campos Altos\",\n\t\t\"Campos Gerais\",\n\t\t\"Cana Verde\",\n\t\t\"Canaã\",\n\t\t\"Canápolis\",\n\t\t\"Candeias\",\n\t\t\"Cantagalo\",\n\t\t\"Caparaó\",\n\t\t\"Capela Nova\",\n\t\t\"Capelinha\",\n\t\t\"Capetinga\",\n\t\t\"Capim Branco\",\n\t\t\"Capinópolis\",\n\t\t\"Capitão Andrade\",\n\t\t\"Capitão Enéas\",\n\t\t\"Capitólio\",\n\t\t\"Caputira\",\n\t\t\"Caraí\",\n\t\t\"Caranaíba\",\n\t\t\"Carandaí\",\n\t\t\"Carangola\",\n\t\t\"Caratinga\",\n\t\t\"Carbonita\",\n\t\t\"Careaçu\",\n\t\t\"Carlos Chagas\",\n\t\t\"Carmésia\",\n\t\t\"Carmo da Cachoeira\",\n\t\t\"Carmo da Mata\",\n\t\t\"Carmo de Minas\",\n\t\t\"Carmo do Cajuru\",\n\t\t\"Carmo do Paranaíba\",\n\t\t\"Carmo do Rio Claro\",\n\t\t\"Carmópolis de Minas\",\n\t\t\"Carneirinho\",\n\t\t\"Carrancas\",\n\t\t\"Carvalhópolis\",\n\t\t\"Carvalhos\",\n\t\t\"Casa Grande\",\n\t\t\"Cascalho Rico\",\n\t\t\"Cássia\",\n\t\t\"Cataguases\",\n\t\t\"Catas Altas\",\n\t\t\"Catas Altas da Noruega\",\n\t\t\"Catuji\",\n\t\t\"Catuti\",\n\t\t\"Caxambu\",\n\t\t\"Cedro do Abaeté\",\n\t\t\"Central de Minas\",\n\t\t\"Centralina\",\n\t\t\"Chácara\",\n\t\t\"Chalé\",\n\t\t\"Chapada do Norte\",\n\t\t\"Chapada Gaúcha\",\n\t\t\"Chiador\",\n\t\t\"Cipotânea\",\n\t\t\"Claraval\",\n\t\t\"Claro dos Poções\",\n\t\t\"Cláudio\",\n\t\t\"Coimbra\",\n\t\t\"Coluna\",\n\t\t\"Comendador Gomes\",\n\t\t\"Comercinho\",\n\t\t\"Conceição da Aparecida\",\n\t\t\"Conceição da Barra de Minas\",\n\t\t\"Conceição das Alagoas\",\n\t\t\"Conceição das Pedras\",\n\t\t\"Conceição de Ipanema\",\n\t\t\"Conceição do Mato Dentro\",\n\t\t\"Conceição do Pará\",\n\t\t\"Conceição do Rio Verde\",\n\t\t\"Conceição dos Ouros\",\n\t\t\"Cônego Marinho\",\n\t\t\"Confins\",\n\t\t\"Congonhal\",\n\t\t\"Congonhas\",\n\t\t\"Congonhas do Norte\",\n\t\t\"Conquista\",\n\t\t\"Conselheiro Lafaiete\",\n\t\t\"Conselheiro Pena\",\n\t\t\"Consolação\",\n\t\t\"Contagem\",\n\t\t\"Coqueiral\",\n\t\t\"Coração de Jesus\",\n\t\t\"Cordisburgo\",\n\t\t\"Cordislândia\",\n\t\t\"Corinto\",\n\t\t\"Coroaci\",\n\t\t\"Coromandel\",\n\t\t\"Coronel Fabriciano\",\n\t\t\"Coronel Murta\",\n\t\t\"Coronel Pacheco\",\n\t\t\"Coronel Xavier Chaves\",\n\t\t\"Córrego Danta\",\n\t\t\"Córrego do Bom Jesus\",\n\t\t\"Córrego Fundo\",\n\t\t\"Córrego Novo\",\n\t\t\"Couto de Magalhães de Minas\",\n\t\t\"Crisólita\",\n\t\t\"Cristais\",\n\t\t\"Cristália\",\n\t\t\"Cristiano Otoni\",\n\t\t\"Cristina\",\n\t\t\"Crucilândia\",\n\t\t\"Cruzeiro da Fortaleza\",\n\t\t\"Cruzília\",\n\t\t\"Cuparaque\",\n\t\t\"Curral de Dentro\",\n\t\t\"Curvelo\",\n\t\t\"Datas\",\n\t\t\"Delfim Moreira\",\n\t\t\"Delfinópolis\",\n\t\t\"Delta\",\n\t\t\"Descoberto\",\n\t\t\"Desterro de Entre Rios\",\n\t\t\"Desterro do Melo\",\n\t\t\"Diamantina\",\n\t\t\"Diogo de Vasconcelos\",\n\t\t\"Dionísio\",\n\t\t\"Divinésia\",\n\t\t\"Divino\",\n\t\t\"Divino das Laranjeiras\",\n\t\t\"Divinolândia de Minas\",\n\t\t\"Divinópolis\",\n\t\t\"Divisa Alegre\",\n\t\t\"Divisa Nova\",\n\t\t\"Divisópolis\",\n\t\t\"Dom Bosco\",\n\t\t\"Dom Cavati\",\n\t\t\"Dom Joaquim\",\n\t\t\"Dom Silvério\",\n\t\t\"Dom Viçoso\",\n\t\t\"Dona Euzébia\",\n\t\t\"Dores de Campos\",\n\t\t\"Dores de Guanhães\",\n\t\t\"Dores do Indaiá\",\n\t\t\"Dores do Turvo\",\n\t\t\"Doresópolis\",\n\t\t\"Douradoquara\",\n\t\t\"Durandé\",\n\t\t\"Elói Mendes\",\n\t\t\"Engenheiro Caldas\",\n\t\t\"Engenheiro Navarro\",\n\t\t\"Entre Folhas\",\n\t\t\"Entre Rios de Minas\",\n\t\t\"Ervália\",\n\t\t\"Esmeraldas\",\n\t\t\"Espera Feliz\",\n\t\t\"Espinosa\",\n\t\t\"Espírito Santo do Dourado\",\n\t\t\"Estiva\",\n\t\t\"Estrela Dalva\",\n\t\t\"Estrela do Indaiá\",\n\t\t\"Estrela do Sul\",\n\t\t\"Eugenópolis\",\n\t\t\"Ewbank da Câmara\",\n\t\t\"Extrema\",\n\t\t\"Fama\",\n\t\t\"Faria Lemos\",\n\t\t\"Felício dos Santos\",\n\t\t\"Felisburgo\",\n\t\t\"Felixlândia\",\n\t\t\"Fernandes Tourinho\",\n\t\t\"Ferros\",\n\t\t\"Fervedouro\",\n\t\t\"Florestal\",\n\t\t\"Formiga\",\n\t\t\"Formoso\",\n\t\t\"Fortaleza de Minas\",\n\t\t\"Fortuna de Minas\",\n\t\t\"Francisco Badaró\",\n\t\t\"Francisco Dumont\",\n\t\t\"Francisco Sá\",\n\t\t\"Franciscópolis\",\n\t\t\"Frei Gaspar\",\n\t\t\"Frei Inocêncio\",\n\t\t\"Frei Lagonegro\",\n\t\t\"Fronteira\",\n\t\t\"Fronteira dos Vales\",\n\t\t\"Fruta de Leite\",\n\t\t\"Frutal\",\n\t\t\"Funilândia\",\n\t\t\"Galiléia\",\n\t\t\"Gameleiras\",\n\t\t\"Glaucilândia\",\n\t\t\"Goiabeira\",\n\t\t\"Goianá\",\n\t\t\"Gonçalves\",\n\t\t\"Gonzaga\",\n\t\t\"Gouveia\",\n\t\t\"Governador Valadares\",\n\t\t\"Grão Mogol\",\n\t\t\"Grupiara\",\n\t\t\"Guanhães\",\n\t\t\"Guapé\",\n\t\t\"Guaraciaba\",\n\t\t\"Guaraciama\",\n\t\t\"Guaranésia\",\n\t\t\"Guarani\",\n\t\t\"Guarará\",\n\t\t\"Guarda-Mor\",\n\t\t\"Guaxupé\",\n\t\t\"Guidoval\",\n\t\t\"Guimarânia\",\n\t\t\"Guiricema\",\n\t\t\"Gurinhatã\",\n\t\t\"Heliodora\",\n\t\t\"Iapu\",\n\t\t\"Ibertioga\",\n\t\t\"Ibiá\",\n\t\t\"Ibiaí\",\n\t\t\"Ibiracatu\",\n\t\t\"Ibiraci\",\n\t\t\"Ibirité\",\n\t\t\"Ibitiúra de Minas\",\n\t\t\"Ibituruna\",\n\t\t\"Icaraí de Minas\",\n\t\t\"Igarapé\",\n\t\t\"Igaratinga\",\n\t\t\"Iguatama\",\n\t\t\"Ijaci\",\n\t\t\"Ilicínea\",\n\t\t\"Imbé de Minas\",\n\t\t\"Inconfidentes\",\n\t\t\"Indaiabira\",\n\t\t\"Indianópolis\",\n\t\t\"Ingaí\",\n\t\t\"Inhapim\",\n\t\t\"Inhaúma\",\n\t\t\"Inimutaba\",\n\t\t\"Ipaba\",\n\t\t\"Ipanema\",\n\t\t\"Ipatinga\",\n\t\t\"Ipiaçu\",\n\t\t\"Ipuiúna\",\n\t\t\"Iraí de Minas\",\n\t\t\"Itabira\",\n\t\t\"Itabirinha\",\n\t\t\"Itabirito\",\n\t\t\"Itacambira\",\n\t\t\"Itacarambi\",\n\t\t\"Itaguara\",\n\t\t\"Itaipé\",\n\t\t\"Itajubá\",\n\t\t\"Itamarandiba\",\n\t\t\"Itamarati de Minas\",\n\t\t\"Itambacuri\",\n\t\t\"Itambé do Mato Dentro\",\n\t\t\"Itamogi\",\n\t\t\"Itamonte\",\n\t\t\"Itanhandu\",\n\t\t\"Itanhomi\",\n\t\t\"Itaobim\",\n\t\t\"Itapagipe\",\n\t\t\"Itapecerica\",\n\t\t\"Itapeva\",\n\t\t\"Itatiaiuçu\",\n\t\t\"Itaú de Minas\",\n\t\t\"Itaúna\",\n\t\t\"Itaverava\",\n\t\t\"Itinga\",\n\t\t\"Itueta\",\n\t\t\"Ituiutaba\",\n\t\t\"Itumirim\",\n\t\t\"Iturama\",\n\t\t\"Itutinga\",\n\t\t\"Jaboticatubas\",\n\t\t\"Jacinto\",\n\t\t\"Jacuí\",\n\t\t\"Jacutinga\",\n\t\t\"Jaguaraçu\",\n\t\t\"Jaíba\",\n\t\t\"Jampruca\",\n\t\t\"Janaúba\",\n\t\t\"Januária\",\n\t\t\"Japaraíba\",\n\t\t\"Japonvar\",\n\t\t\"Jeceaba\",\n\t\t\"Jenipapo de Minas\",\n\t\t\"Jequeri\",\n\t\t\"Jequitaí\",\n\t\t\"Jequitibá\",\n\t\t\"Jequitinhonha\",\n\t\t\"Jesuânia\",\n\t\t\"Joaíma\",\n\t\t\"Joanésia\",\n\t\t\"João Monlevade\",\n\t\t\"João Pinheiro\",\n\t\t\"Joaquim Felício\",\n\t\t\"Jordânia\",\n\t\t\"José Gonçalves de Minas\",\n\t\t\"José Raydan\",\n\t\t\"Josenópolis\",\n\t\t\"Juatuba\",\n\t\t\"Juiz de Fora\",\n\t\t\"Juramento\",\n\t\t\"Juruaia\",\n\t\t\"Juvenília\",\n\t\t\"Ladainha\",\n\t\t\"Lagamar\",\n\t\t\"Lagoa da Prata\",\n\t\t\"Lagoa dos Patos\",\n\t\t\"Lagoa Dourada\",\n\t\t\"Lagoa Formosa\",\n\t\t\"Lagoa Grande\",\n\t\t\"Lagoa Santa\",\n\t\t\"Lajinha\",\n\t\t\"Lambari\",\n\t\t\"Lamim\",\n\t\t\"Laranjal\",\n\t\t\"Lassance\",\n\t\t\"Lavras\",\n\t\t\"Leandro Ferreira\",\n\t\t\"Leme do Prado\",\n\t\t\"Leopoldina\",\n\t\t\"Liberdade\",\n\t\t\"Lima Duarte\",\n\t\t\"Limeira do Oeste\",\n\t\t\"Lontra\",\n\t\t\"Luisburgo\",\n\t\t\"Luislândia\",\n\t\t\"Luminárias\",\n\t\t\"Luz\",\n\t\t\"Machacalis\",\n\t\t\"Machado\",\n\t\t\"Madre de Deus de Minas\",\n\t\t\"Malacacheta\",\n\t\t\"Mamonas\",\n\t\t\"Manga\",\n\t\t\"Manhuaçu\",\n\t\t\"Manhumirim\",\n\t\t\"Mantena\",\n\t\t\"Mar de Espanha\",\n\t\t\"Maravilhas\",\n\t\t\"Maria da Fé\",\n\t\t\"Mariana\",\n\t\t\"Marilac\",\n\t\t\"Mário Campos\",\n\t\t\"Maripá de Minas\",\n\t\t\"Marliéria\",\n\t\t\"Marmelópolis\",\n\t\t\"Martinho Campos\",\n\t\t\"Martins Soares\",\n\t\t\"Mata Verde\",\n\t\t\"Materlândia\",\n\t\t\"Mateus Leme\",\n\t\t\"Mathias Lobato\",\n\t\t\"Matias Barbosa\",\n\t\t\"Matias Cardoso\",\n\t\t\"Matipó\",\n\t\t\"Mato Verde\",\n\t\t\"Matozinhos\",\n\t\t\"Matutina\",\n\t\t\"Medeiros\",\n\t\t\"Medina\",\n\t\t\"Mendes Pimentel\",\n\t\t\"Mercês\",\n\t\t\"Mesquita\",\n\t\t\"Minas Novas\",\n\t\t\"Minduri\",\n\t\t\"Mirabela\",\n\t\t\"Miradouro\",\n\t\t\"Miraí\",\n\t\t\"Miravânia\",\n\t\t\"Moeda\",\n\t\t\"Moema\",\n\t\t\"Monjolos\",\n\t\t\"Monsenhor Paulo\",\n\t\t\"Montalvânia\",\n\t\t\"Monte Alegre de Minas\",\n\t\t\"Monte Azul\",\n\t\t\"Monte Belo\",\n\t\t\"Monte Carmelo\",\n\t\t\"Monte Formoso\",\n\t\t\"Monte Santo de Minas\",\n\t\t\"Monte Sião\",\n\t\t\"Montes Claros\",\n\t\t\"Montezuma\",\n\t\t\"Morada Nova de Minas\",\n\t\t\"Morro da Garça\",\n\t\t\"Morro do Pilar\",\n\t\t\"Munhoz\",\n\t\t\"Muriaé\",\n\t\t\"Mutum\",\n\t\t\"Muzambinho\",\n\t\t\"Nacip Raydan\",\n\t\t\"Nanuque\",\n\t\t\"Naque\",\n\t\t\"Natalândia\",\n\t\t\"Natércia\",\n\t\t\"Nazareno\",\n\t\t\"Nepomuceno\",\n\t\t\"Ninheira\",\n\t\t\"Nova Belém\",\n\t\t\"Nova Era\",\n\t\t\"Nova Lima\",\n\t\t\"Nova Módica\",\n\t\t\"Nova Ponte\",\n\t\t\"Nova Porteirinha\",\n\t\t\"Nova Resende\",\n\t\t\"Nova Serrana\",\n\t\t\"Nova União\",\n\t\t\"Novo Cruzeiro\",\n\t\t\"Novo Oriente de Minas\",\n\t\t\"Novorizonte\",\n\t\t\"Olaria\",\n\t\t\"Olhos-d'Água\",\n\t\t\"Olímpio Noronha\",\n\t\t\"Oliveira\",\n\t\t\"Oliveira Fortes\",\n\t\t\"Onça de Pitangui\",\n\t\t\"Oratórios\",\n\t\t\"Orizânia\",\n\t\t\"Ouro Branco\",\n\t\t\"Ouro Fino\",\n\t\t\"Ouro Preto\",\n\t\t\"Ouro Verde de Minas\",\n\t\t\"Padre Carvalho\",\n\t\t\"Padre Paraíso\",\n\t\t\"Pai Pedro\",\n\t\t\"Paineiras\",\n\t\t\"Pains\",\n\t\t\"Paiva\",\n\t\t\"Palma\",\n\t\t\"Palmópolis\",\n\t\t\"Papagaios\",\n\t\t\"Pará de Minas\",\n\t\t\"Paracatu\",\n\t\t\"Paraguaçu\",\n\t\t\"Paraisópolis\",\n\t\t\"Paraopeba\",\n\t\t\"Passa Quatro\",\n\t\t\"Passa Tempo\",\n\t\t\"Passa Vinte\",\n\t\t\"Passabém\",\n\t\t\"Passos\",\n\t\t\"Patis\",\n\t\t\"Patos de Minas\",\n\t\t\"Patrocínio\",\n\t\t\"Patrocínio do Muriaé\",\n\t\t\"Paula Cândido\",\n\t\t\"Paulistas\",\n\t\t\"Pavão\",\n\t\t\"Peçanha\",\n\t\t\"Pedra Azul\",\n\t\t\"Pedra Bonita\",\n\t\t\"Pedra do Anta\",\n\t\t\"Pedra do Indaiá\",\n\t\t\"Pedra Dourada\",\n\t\t\"Pedralva\",\n\t\t\"Pedras de Maria da Cruz\",\n\t\t\"Pedrinópolis\",\n\t\t\"Pedro Leopoldo\",\n\t\t\"Pedro Teixeira\",\n\t\t\"Pequeri\",\n\t\t\"Pequi\",\n\t\t\"Perdigão\",\n\t\t\"Perdizes\",\n\t\t\"Perdões\",\n\t\t\"Periquito\",\n\t\t\"Pescador\",\n\t\t\"Piau\",\n\t\t\"Piedade de Caratinga\",\n\t\t\"Piedade de Ponte Nova\",\n\t\t\"Piedade do Rio Grande\",\n\t\t\"Piedade dos Gerais\",\n\t\t\"Pimenta\",\n\t\t\"Pingo-d'Água\",\n\t\t\"Pintópolis\",\n\t\t\"Piracema\",\n\t\t\"Pirajuba\",\n\t\t\"Piranga\",\n\t\t\"Piranguçu\",\n\t\t\"Piranguinho\",\n\t\t\"Pirapetinga\",\n\t\t\"Pirapora\",\n\t\t\"Piraúba\",\n\t\t\"Pitangui\",\n\t\t\"Piumhi\",\n\t\t\"Planura\",\n\t\t\"Poço Fundo\",\n\t\t\"Poços de Caldas\",\n\t\t\"Pocrane\",\n\t\t\"Pompéu\",\n\t\t\"Ponte Nova\",\n\t\t\"Ponto Chique\",\n\t\t\"Ponto dos Volantes\",\n\t\t\"Porteirinha\",\n\t\t\"Porto Firme\",\n\t\t\"Poté\",\n\t\t\"Pouso Alegre\",\n\t\t\"Pouso Alto\",\n\t\t\"Prados\",\n\t\t\"Prata\",\n\t\t\"Pratápolis\",\n\t\t\"Pratinha\",\n\t\t\"Presidente Bernardes\",\n\t\t\"Presidente Juscelino\",\n\t\t\"Presidente Kubitschek\",\n\t\t\"Presidente Olegário\",\n\t\t\"Prudente de Morais\",\n\t\t\"Quartel Geral\",\n\t\t\"Queluzito\",\n\t\t\"Raposos\",\n\t\t\"Raul Soares\",\n\t\t\"Recreio\",\n\t\t\"Reduto\",\n\t\t\"Resende Costa\",\n\t\t\"Resplendor\",\n\t\t\"Ressaquinha\",\n\t\t\"Riachinho\",\n\t\t\"Riacho dos Machados\",\n\t\t\"Ribeirão das Neves\",\n\t\t\"Ribeirão Vermelho\",\n\t\t\"Rio Acima\",\n\t\t\"Rio Casca\",\n\t\t\"Rio do Prado\",\n\t\t\"Rio Doce\",\n\t\t\"Rio Espera\",\n\t\t\"Rio Manso\",\n\t\t\"Rio Novo\",\n\t\t\"Rio Paranaíba\",\n\t\t\"Rio Pardo de Minas\",\n\t\t\"Rio Piracicaba\",\n\t\t\"Rio Pomba\",\n\t\t\"Rio Preto\",\n\t\t\"Rio Vermelho\",\n\t\t\"Ritápolis\",\n\t\t\"Rochedo de Minas\",\n\t\t\"Rodeiro\",\n\t\t\"Romaria\",\n\t\t\"Rosário da Limeira\",\n\t\t\"Rubelita\",\n\t\t\"Rubim\",\n\t\t\"Sabará\",\n\t\t\"Sabinópolis\",\n\t\t\"Sacramento\",\n\t\t\"Salinas\",\n\t\t\"Salto da Divisa\",\n\t\t\"Santa Bárbara\",\n\t\t\"Santa Bárbara do Leste\",\n\t\t\"Santa Bárbara do Monte Verde\",\n\t\t\"Santa Bárbara do Tugúrio\",\n\t\t\"Santa Cruz de Minas\",\n\t\t\"Santa Cruz de Salinas\",\n\t\t\"Santa Cruz do Escalvado\",\n\t\t\"Santa Efigênia de Minas\",\n\t\t\"Santa Fé de Minas\",\n\t\t\"Santa Helena de Minas\",\n\t\t\"Santa Juliana\",\n\t\t\"Santa Luzia\",\n\t\t\"Santa Margarida\",\n\t\t\"Santa Maria de Itabira\",\n\t\t\"Santa Maria do Salto\",\n\t\t\"Santa Maria do Suaçuí\",\n\t\t\"Santa Rita de Caldas\",\n\t\t\"Santa Rita de Ibitipoca\",\n\t\t\"Santa Rita de Jacutinga\",\n\t\t\"Santa Rita de Minas\",\n\t\t\"Santa Rita do Itueto\",\n\t\t\"Santa Rita do Sapucaí\",\n\t\t\"Santa Rosa da Serra\",\n\t\t\"Santa Vitória\",\n\t\t\"Santana da Vargem\",\n\t\t\"Santana de Cataguases\",\n\t\t\"Santana de Pirapama\",\n\t\t\"Santana do Deserto\",\n\t\t\"Santana do Garambéu\",\n\t\t\"Santana do Jacaré\",\n\t\t\"Santana do Manhuaçu\",\n\t\t\"Santana do Paraíso\",\n\t\t\"Santana do Riacho\",\n\t\t\"Santana dos Montes\",\n\t\t\"Santo Antônio do Amparo\",\n\t\t\"Santo Antônio do Aventureiro\",\n\t\t\"Santo Antônio do Grama\",\n\t\t\"Santo Antônio do Itambé\",\n\t\t\"Santo Antônio do Jacinto\",\n\t\t\"Santo Antônio do Monte\",\n\t\t\"Santo Antônio do Retiro\",\n\t\t\"Santo Antônio do Rio Abaixo\",\n\t\t\"Santo Hipólito\",\n\t\t\"Santos Dumont\",\n\t\t\"São Bento Abade\",\n\t\t\"São Brás do Suaçuí\",\n\t\t\"São Domingos das Dores\",\n\t\t\"São Domingos do Prata\",\n\t\t\"São Félix de Minas\",\n\t\t\"São Francisco\",\n\t\t\"São Francisco de Paula\",\n\t\t\"São Francisco de Sales\",\n\t\t\"São Francisco do Glória\",\n\t\t\"São Geraldo\",\n\t\t\"São Geraldo da Piedade\",\n\t\t\"São Geraldo do Baixio\",\n\t\t\"São Gonçalo do Abaeté\",\n\t\t\"São Gonçalo do Pará\",\n\t\t\"São Gonçalo do Rio Abaixo\",\n\t\t\"São Gonçalo do Rio Preto\",\n\t\t\"São Gonçalo do Sapucaí\",\n\t\t\"São Gotardo\",\n\t\t\"São João Batista do Glória\",\n\t\t\"São João da Lagoa\",\n\t\t\"São João da Mata\",\n\t\t\"São João da Ponte\",\n\t\t\"São João das Missões\",\n\t\t\"São João del Rei\",\n\t\t\"São João do Manhuaçu\",\n\t\t\"São João do Manteninha\",\n\t\t\"São João do Oriente\",\n\t\t\"São João do Pacuí\",\n\t\t\"São João do Paraíso\",\n\t\t\"São João Evangelista\",\n\t\t\"São João Nepomuceno\",\n\t\t\"São Joaquim de Bicas\",\n\t\t\"São José da Barra\",\n\t\t\"São José da Lapa\",\n\t\t\"São José da Safira\",\n\t\t\"São José da Varginha\",\n\t\t\"São José do Alegre\",\n\t\t\"São José do Divino\",\n\t\t\"São José do Goiabal\",\n\t\t\"São José do Jacuri\",\n\t\t\"São José do Mantimento\",\n\t\t\"São Lourenço\",\n\t\t\"São Miguel do Anta\",\n\t\t\"São Pedro da União\",\n\t\t\"São Pedro do Suaçuí\",\n\t\t\"São Pedro dos Ferros\",\n\t\t\"São Romão\",\n\t\t\"São Roque de Minas\",\n\t\t\"São Sebastião da Bela Vista\",\n\t\t\"São Sebastião da Vargem Alegre\",\n\t\t\"São Sebastião do Anta\",\n\t\t\"São Sebastião do Maranhão\",\n\t\t\"São Sebastião do Oeste\",\n\t\t\"São Sebastião do Paraíso\",\n\t\t\"São Sebastião do Rio Preto\",\n\t\t\"São Sebastião do Rio Verde\",\n\t\t\"São Tiago\",\n\t\t\"São Tomás de Aquino\",\n\t\t\"São Tomé das Letras\",\n\t\t\"São Vicente de Minas\",\n\t\t\"Sapucaí-Mirim\",\n\t\t\"Sardoá\",\n\t\t\"Sarzedo\",\n\t\t\"Sem-Peixe\",\n\t\t\"Senador Amaral\",\n\t\t\"Senador Cortes\",\n\t\t\"Senador Firmino\",\n\t\t\"Senador José Bento\",\n\t\t\"Senador Modestino Gonçalves\",\n\t\t\"Senhora de Oliveira\",\n\t\t\"Senhora do Porto\",\n\t\t\"Senhora dos Remédios\",\n\t\t\"Sericita\",\n\t\t\"Seritinga\",\n\t\t\"Serra Azul de Minas\",\n\t\t\"Serra da Saudade\",\n\t\t\"Serra do Salitre\",\n\t\t\"Serra dos Aimorés\",\n\t\t\"Serrania\",\n\t\t\"Serranópolis de Minas\",\n\t\t\"Serranos\",\n\t\t\"Serro\",\n\t\t\"Sete Lagoas\",\n\t\t\"Setubinha\",\n\t\t\"Silveirânia\",\n\t\t\"Silvianópolis\",\n\t\t\"Simão Pereira\",\n\t\t\"Simonésia\",\n\t\t\"Sobrália\",\n\t\t\"Soledade de Minas\",\n\t\t\"Tabuleiro\",\n\t\t\"Taiobeiras\",\n\t\t\"Taparuba\",\n\t\t\"Tapira\",\n\t\t\"Tapiraí\",\n\t\t\"Taquaraçu de Minas\",\n\t\t\"Tarumirim\",\n\t\t\"Teixeiras\",\n\t\t\"Teófilo Otoni\",\n\t\t\"Timóteo\",\n\t\t\"Tiradentes\",\n\t\t\"Tiros\",\n\t\t\"Tocantins\",\n\t\t\"Tocos do Moji\",\n\t\t\"Toledo\",\n\t\t\"Tombos\",\n\t\t\"Três Corações\",\n\t\t\"Três Marias\",\n\t\t\"Três Pontas\",\n\t\t\"Tumiritinga\",\n\t\t\"Tupaciguara\",\n\t\t\"Turmalina\",\n\t\t\"Turvolândia\",\n\t\t\"Ubá\",\n\t\t\"Ubaí\",\n\t\t\"Ubaporanga\",\n\t\t\"Uberaba\",\n\t\t\"Uberlândia\",\n\t\t\"Umburatiba\",\n\t\t\"Unaí\",\n\t\t\"União de Minas\",\n\t\t\"Uruana de Minas\",\n\t\t\"Urucânia\",\n\t\t\"Urucuia\",\n\t\t\"Vargem Alegre\",\n\t\t\"Vargem Bonita\",\n\t\t\"Vargem Grande do Rio Pardo\",\n\t\t\"Varginha\",\n\t\t\"Varjão de Minas\",\n\t\t\"Várzea da Palma\",\n\t\t\"Varzelândia\",\n\t\t\"Vazante\",\n\t\t\"Verdelândia\",\n\t\t\"Veredinha\",\n\t\t\"Veríssimo\",\n\t\t\"Vermelho Novo\",\n\t\t\"Vespasiano\",\n\t\t\"Viçosa\",\n\t\t\"Vieiras\",\n\t\t\"Virgem da Lapa\",\n\t\t\"Virgínia\",\n\t\t\"Virginópolis\",\n\t\t\"Virgolândia\",\n\t\t\"Visconde do Rio Branco\",\n\t\t\"Volta Grande\",\n\t\t\"Wenceslau Braz\",\n\t],\n\tMS: [\n\t\t\"Água Clara\",\n\t\t\"Alcinópolis\",\n\t\t\"Amambai\",\n\t\t\"Anastácio\",\n\t\t\"Anaurilândia\",\n\t\t\"Angélica\",\n\t\t\"Antônio João\",\n\t\t\"Aparecida do Taboado\",\n\t\t\"Aquidauana\",\n\t\t\"Aral Moreira\",\n\t\t\"Bandeirantes\",\n\t\t\"Bataguassu\",\n\t\t\"Batayporã\",\n\t\t\"Bela Vista\",\n\t\t\"Bodoquena\",\n\t\t\"Bonito\",\n\t\t\"Brasilândia\",\n\t\t\"Caarapó\",\n\t\t\"Camapuã\",\n\t\t\"Campo Grande\",\n\t\t\"Caracol\",\n\t\t\"Cassilândia\",\n\t\t\"Chapadão do Sul\",\n\t\t\"Corguinho\",\n\t\t\"Coronel Sapucaia\",\n\t\t\"Corumbá\",\n\t\t\"Costa Rica\",\n\t\t\"Coxim\",\n\t\t\"Deodápolis\",\n\t\t\"Dois Irmãos do Buriti\",\n\t\t\"Douradina\",\n\t\t\"Dourados\",\n\t\t\"Eldorado\",\n\t\t\"Fátima do Sul\",\n\t\t\"Figueirão\",\n\t\t\"Glória de Dourados\",\n\t\t\"Guia Lopes da Laguna\",\n\t\t\"Iguatemi\",\n\t\t\"Inocência\",\n\t\t\"Itaporã\",\n\t\t\"Itaquiraí\",\n\t\t\"Ivinhema\",\n\t\t\"Japorã\",\n\t\t\"Jaraguari\",\n\t\t\"Jardim\",\n\t\t\"Jateí\",\n\t\t\"Juti\",\n\t\t\"Ladário\",\n\t\t\"Laguna Carapã\",\n\t\t\"Maracaju\",\n\t\t\"Miranda\",\n\t\t\"Mundo Novo\",\n\t\t\"Naviraí\",\n\t\t\"Nioaque\",\n\t\t\"Nova Alvorada do Sul\",\n\t\t\"Nova Andradina\",\n\t\t\"Novo Horizonte do Sul\",\n\t\t\"Paraíso das Águas\",\n\t\t\"Paranaíba\",\n\t\t\"Paranhos\",\n\t\t\"Pedro Gomes\",\n\t\t\"Ponta Porã\",\n\t\t\"Porto Murtinho\",\n\t\t\"Ribas do Rio Pardo\",\n\t\t\"Rio Brilhante\",\n\t\t\"Rio Negro\",\n\t\t\"Rio Verde de Mato Grosso\",\n\t\t\"Rochedo\",\n\t\t\"Santa Rita do Pardo\",\n\t\t\"São Gabriel do Oeste\",\n\t\t\"Selvíria\",\n\t\t\"Sete Quedas\",\n\t\t\"Sidrolândia\",\n\t\t\"Sonora\",\n\t\t\"Tacuru\",\n\t\t\"Taquarussu\",\n\t\t\"Terenos\",\n\t\t\"Três Lagoas\",\n\t\t\"Vicentina\",\n\t],\n\tMT: [\n\t\t\"Acorizal\",\n\t\t\"Água Boa\",\n\t\t\"Alta Floresta\",\n\t\t\"Alto Araguaia\",\n\t\t\"Alto Boa Vista\",\n\t\t\"Alto Garças\",\n\t\t\"Alto Paraguai\",\n\t\t\"Alto Taquari\",\n\t\t\"Apiacás\",\n\t\t\"Araguaiana\",\n\t\t\"Araguainha\",\n\t\t\"Araputanga\",\n\t\t\"Arenápolis\",\n\t\t\"Aripuanã\",\n\t\t\"Barão de Melgaço\",\n\t\t\"Barra do Bugres\",\n\t\t\"Barra do Garças\",\n\t\t\"Bom Jesus do Araguaia\",\n\t\t\"Brasnorte\",\n\t\t\"Cáceres\",\n\t\t\"Campinápolis\",\n\t\t\"Campo Novo do Parecis\",\n\t\t\"Campo Verde\",\n\t\t\"Campos de Júlio\",\n\t\t\"Canabrava do Norte\",\n\t\t\"Canarana\",\n\t\t\"Carlinda\",\n\t\t\"Castanheira\",\n\t\t\"Chapada dos Guimarães\",\n\t\t\"Cláudia\",\n\t\t\"Cocalinho\",\n\t\t\"Colíder\",\n\t\t\"Colniza\",\n\t\t\"Comodoro\",\n\t\t\"Confresa\",\n\t\t\"Conquista D'Oeste\",\n\t\t\"Cotriguaçu\",\n\t\t\"Cuiabá\",\n\t\t\"Curvelândia\",\n\t\t\"Denise\",\n\t\t\"Diamantino\",\n\t\t\"Dom Aquino\",\n\t\t\"Feliz Natal\",\n\t\t\"Figueirópolis D'Oeste\",\n\t\t\"Gaúcha do Norte\",\n\t\t\"General Carneiro\",\n\t\t\"Glória D'Oeste\",\n\t\t\"Guarantã do Norte\",\n\t\t\"Guiratinga\",\n\t\t\"Indiavaí\",\n\t\t\"Ipiranga do Norte\",\n\t\t\"Itanhangá\",\n\t\t\"Itaúba\",\n\t\t\"Itiquira\",\n\t\t\"Jaciara\",\n\t\t\"Jangada\",\n\t\t\"Jauru\",\n\t\t\"Juara\",\n\t\t\"Juína\",\n\t\t\"Juruena\",\n\t\t\"Juscimeira\",\n\t\t\"Lambari D'Oeste\",\n\t\t\"Lucas do Rio Verde\",\n\t\t\"Luciara\",\n\t\t\"Marcelândia\",\n\t\t\"Matupá\",\n\t\t\"Mirassol d'Oeste\",\n\t\t\"Nobres\",\n\t\t\"Nortelândia\",\n\t\t\"Nossa Senhora do Livramento\",\n\t\t\"Nova Bandeirantes\",\n\t\t\"Nova Brasilândia\",\n\t\t\"Nova Canaã do Norte\",\n\t\t\"Nova Guarita\",\n\t\t\"Nova Lacerda\",\n\t\t\"Nova Marilândia\",\n\t\t\"Nova Maringá\",\n\t\t\"Nova Monte Verde\",\n\t\t\"Nova Mutum\",\n\t\t\"Nova Nazaré\",\n\t\t\"Nova Olímpia\",\n\t\t\"Nova Santa Helena\",\n\t\t\"Nova Ubiratã\",\n\t\t\"Nova Xavantina\",\n\t\t\"Novo Horizonte do Norte\",\n\t\t\"Novo Mundo\",\n\t\t\"Novo Santo Antônio\",\n\t\t\"Novo São Joaquim\",\n\t\t\"Paranaíta\",\n\t\t\"Paranatinga\",\n\t\t\"Pedra Preta\",\n\t\t\"Peixoto de Azevedo\",\n\t\t\"Planalto da Serra\",\n\t\t\"Poconé\",\n\t\t\"Pontal do Araguaia\",\n\t\t\"Ponte Branca\",\n\t\t\"Pontes e Lacerda\",\n\t\t\"Porto Alegre do Norte\",\n\t\t\"Porto dos Gaúchos\",\n\t\t\"Porto Esperidião\",\n\t\t\"Porto Estrela\",\n\t\t\"Poxoréu\",\n\t\t\"Primavera do Leste\",\n\t\t\"Querência\",\n\t\t\"Reserva do Cabaçal\",\n\t\t\"Ribeirão Cascalheira\",\n\t\t\"Ribeirãozinho\",\n\t\t\"Rio Branco\",\n\t\t\"Rondolândia\",\n\t\t\"Rondonópolis\",\n\t\t\"Rosário Oeste\",\n\t\t\"Salto do Céu\",\n\t\t\"Santa Carmem\",\n\t\t\"Santa Cruz do Xingu\",\n\t\t\"Santa Rita do Trivelato\",\n\t\t\"Santa Terezinha\",\n\t\t\"Santo Afonso\",\n\t\t\"Santo Antônio de Leverger\",\n\t\t\"Santo Antônio do Leste\",\n\t\t\"São Félix do Araguaia\",\n\t\t\"São José do Povo\",\n\t\t\"São José do Rio Claro\",\n\t\t\"São José do Xingu\",\n\t\t\"São José dos Quatro Marcos\",\n\t\t\"São Pedro da Cipa\",\n\t\t\"Sapezal\",\n\t\t\"Serra Nova Dourada\",\n\t\t\"Sinop\",\n\t\t\"Sorriso\",\n\t\t\"Tabaporã\",\n\t\t\"Tangará da Serra\",\n\t\t\"Tapurah\",\n\t\t\"Terra Nova do Norte\",\n\t\t\"Tesouro\",\n\t\t\"Torixoréu\",\n\t\t\"União do Sul\",\n\t\t\"Vale de São Domingos\",\n\t\t\"Várzea Grande\",\n\t\t\"Vera\",\n\t\t\"Vila Bela da Santíssima Trindade\",\n\t\t\"Vila Rica\",\n\t],\n\tPA: [\n\t\t\"Abaetetuba\",\n\t\t\"Abel Figueiredo\",\n\t\t\"Acará\",\n\t\t\"Afuá\",\n\t\t\"Água Azul do Norte\",\n\t\t\"Alenquer\",\n\t\t\"Almeirim\",\n\t\t\"Altamira\",\n\t\t\"Anajás\",\n\t\t\"Ananindeua\",\n\t\t\"Anapu\",\n\t\t\"Augusto Corrêa\",\n\t\t\"Aurora do Pará\",\n\t\t\"Aveiro\",\n\t\t\"Bagre\",\n\t\t\"Baião\",\n\t\t\"Bannach\",\n\t\t\"Barcarena\",\n\t\t\"Belém\",\n\t\t\"Belterra\",\n\t\t\"Benevides\",\n\t\t\"Bom Jesus do Tocantins\",\n\t\t\"Bonito\",\n\t\t\"Bragança\",\n\t\t\"Brasil Novo\",\n\t\t\"Brejo Grande do Araguaia\",\n\t\t\"Breu Branco\",\n\t\t\"Breves\",\n\t\t\"Bujaru\",\n\t\t\"Cachoeira do Arari\",\n\t\t\"Cachoeira do Piriá\",\n\t\t\"Cametá\",\n\t\t\"Canaã dos Carajás\",\n\t\t\"Capanema\",\n\t\t\"Capitão Poço\",\n\t\t\"Castanhal\",\n\t\t\"Chaves\",\n\t\t\"Colares\",\n\t\t\"Conceição do Araguaia\",\n\t\t\"Concórdia do Pará\",\n\t\t\"Cumaru do Norte\",\n\t\t\"Curionópolis\",\n\t\t\"Curralinho\",\n\t\t\"Curuá\",\n\t\t\"Curuçá\",\n\t\t\"Dom Eliseu\",\n\t\t\"Eldorado do Carajás\",\n\t\t\"Faro\",\n\t\t\"Floresta do Araguaia\",\n\t\t\"Garrafão do Norte\",\n\t\t\"Goianésia do Pará\",\n\t\t\"Gurupá\",\n\t\t\"Igarapé-Açu\",\n\t\t\"Igarapé-Miri\",\n\t\t\"Inhangapi\",\n\t\t\"Ipixuna do Pará\",\n\t\t\"Irituia\",\n\t\t\"Itaituba\",\n\t\t\"Itupiranga\",\n\t\t\"Jacareacanga\",\n\t\t\"Jacundá\",\n\t\t\"Juruti\",\n\t\t\"Limoeiro do Ajuru\",\n\t\t\"Mãe do Rio\",\n\t\t\"Magalhães Barata\",\n\t\t\"Marabá\",\n\t\t\"Maracanã\",\n\t\t\"Marapanim\",\n\t\t\"Marituba\",\n\t\t\"Medicilândia\",\n\t\t\"Melgaço\",\n\t\t\"Mocajuba\",\n\t\t\"Moju\",\n\t\t\"Mojuí dos Campos\",\n\t\t\"Monte Alegre\",\n\t\t\"Muaná\",\n\t\t\"Nova Esperança do Piriá\",\n\t\t\"Nova Ipixuna\",\n\t\t\"Nova Timboteua\",\n\t\t\"Novo Progresso\",\n\t\t\"Novo Repartimento\",\n\t\t\"Óbidos\",\n\t\t\"Oeiras do Pará\",\n\t\t\"Oriximiná\",\n\t\t\"Ourém\",\n\t\t\"Ourilândia do Norte\",\n\t\t\"Pacajá\",\n\t\t\"Palestina do Pará\",\n\t\t\"Paragominas\",\n\t\t\"Parauapebas\",\n\t\t\"Pau D'Arco\",\n\t\t\"Peixe-Boi\",\n\t\t\"Piçarra\",\n\t\t\"Placas\",\n\t\t\"Ponta de Pedras\",\n\t\t\"Portel\",\n\t\t\"Porto de Moz\",\n\t\t\"Prainha\",\n\t\t\"Primavera\",\n\t\t\"Quatipuru\",\n\t\t\"Redenção\",\n\t\t\"Rio Maria\",\n\t\t\"Rondon do Pará\",\n\t\t\"Rurópolis\",\n\t\t\"Salinópolis\",\n\t\t\"Salvaterra\",\n\t\t\"Santa Bárbara do Pará\",\n\t\t\"Santa Cruz do Arari\",\n\t\t\"Santa Izabel do Pará\",\n\t\t\"Santa Luzia do Pará\",\n\t\t\"Santa Maria das Barreiras\",\n\t\t\"Santa Maria do Pará\",\n\t\t\"Santana do Araguaia\",\n\t\t\"Santarém\",\n\t\t\"Santarém Novo\",\n\t\t\"Santo Antônio do Tauá\",\n\t\t\"São Caetano de Odivelas\",\n\t\t\"São Domingos do Araguaia\",\n\t\t\"São Domingos do Capim\",\n\t\t\"São Félix do Xingu\",\n\t\t\"São Francisco do Pará\",\n\t\t\"São Geraldo do Araguaia\",\n\t\t\"São João da Ponta\",\n\t\t\"São João de Pirabas\",\n\t\t\"São João do Araguaia\",\n\t\t\"São Miguel do Guamá\",\n\t\t\"São Sebastião da Boa Vista\",\n\t\t\"Sapucaia\",\n\t\t\"Senador José Porfírio\",\n\t\t\"Soure\",\n\t\t\"Tailândia\",\n\t\t\"Terra Alta\",\n\t\t\"Terra Santa\",\n\t\t\"Tomé-Açu\",\n\t\t\"Tracuateua\",\n\t\t\"Trairão\",\n\t\t\"Tucumã\",\n\t\t\"Tucuruí\",\n\t\t\"Ulianópolis\",\n\t\t\"Uruará\",\n\t\t\"Vigia\",\n\t\t\"Viseu\",\n\t\t\"Vitória do Xingu\",\n\t\t\"Xinguara\",\n\t],\n\tPB: [\n\t\t\"Água Branca\",\n\t\t\"Aguiar\",\n\t\t\"Alagoa Grande\",\n\t\t\"Alagoa Nova\",\n\t\t\"Alagoinha\",\n\t\t\"Alcantil\",\n\t\t\"Algodão de Jandaíra\",\n\t\t\"Alhandra\",\n\t\t\"Amparo\",\n\t\t\"Aparecida\",\n\t\t\"Araçagi\",\n\t\t\"Arara\",\n\t\t\"Araruna\",\n\t\t\"Areia\",\n\t\t\"Areia de Baraúnas\",\n\t\t\"Areial\",\n\t\t\"Aroeiras\",\n\t\t\"Assunção\",\n\t\t\"Baía da Traição\",\n\t\t\"Bananeiras\",\n\t\t\"Baraúna\",\n\t\t\"Barra de Santa Rosa\",\n\t\t\"Barra de Santana\",\n\t\t\"Barra de São Miguel\",\n\t\t\"Bayeux\",\n\t\t\"Belém\",\n\t\t\"Belém do Brejo do Cruz\",\n\t\t\"Bernardino Batista\",\n\t\t\"Boa Ventura\",\n\t\t\"Boa Vista\",\n\t\t\"Bom Jesus\",\n\t\t\"Bom Sucesso\",\n\t\t\"Bonito de Santa Fé\",\n\t\t\"Boqueirão\",\n\t\t\"Borborema\",\n\t\t\"Brejo do Cruz\",\n\t\t\"Brejo dos Santos\",\n\t\t\"Caaporã\",\n\t\t\"Cabaceiras\",\n\t\t\"Cabedelo\",\n\t\t\"Cachoeira dos Índios\",\n\t\t\"Cacimba de Areia\",\n\t\t\"Cacimba de Dentro\",\n\t\t\"Cacimbas\",\n\t\t\"Caiçara\",\n\t\t\"Cajazeiras\",\n\t\t\"Cajazeirinhas\",\n\t\t\"Caldas Brandão\",\n\t\t\"Camalaú\",\n\t\t\"Campina Grande\",\n\t\t\"Capim\",\n\t\t\"Caraúbas\",\n\t\t\"Carrapateira\",\n\t\t\"Casserengue\",\n\t\t\"Catingueira\",\n\t\t\"Catolé do Rocha\",\n\t\t\"Caturité\",\n\t\t\"Conceição\",\n\t\t\"Condado\",\n\t\t\"Conde\",\n\t\t\"Congo\",\n\t\t\"Coremas\",\n\t\t\"Coxixola\",\n\t\t\"Cruz do Espírito Santo\",\n\t\t\"Cubati\",\n\t\t\"Cuité\",\n\t\t\"Cuité de Mamanguape\",\n\t\t\"Cuitegi\",\n\t\t\"Curral de Cima\",\n\t\t\"Curral Velho\",\n\t\t\"Damião\",\n\t\t\"Desterro\",\n\t\t\"Diamante\",\n\t\t\"Dona Inês\",\n\t\t\"Duas Estradas\",\n\t\t\"Emas\",\n\t\t\"Esperança\",\n\t\t\"Fagundes\",\n\t\t\"Frei Martinho\",\n\t\t\"Gado Bravo\",\n\t\t\"Guarabira\",\n\t\t\"Gurinhém\",\n\t\t\"Gurjão\",\n\t\t\"Ibiara\",\n\t\t\"Igaracy\",\n\t\t\"Imaculada\",\n\t\t\"Ingá\",\n\t\t\"Itabaiana\",\n\t\t\"Itaporanga\",\n\t\t\"Itapororoca\",\n\t\t\"Itatuba\",\n\t\t\"Jacaraú\",\n\t\t\"Jericó\",\n\t\t\"João Pessoa\",\n\t\t\"Joca Claudino\",\n\t\t\"Juarez Távora\",\n\t\t\"Juazeirinho\",\n\t\t\"Junco do Seridó\",\n\t\t\"Juripiranga\",\n\t\t\"Juru\",\n\t\t\"Lagoa\",\n\t\t\"Lagoa de Dentro\",\n\t\t\"Lagoa Seca\",\n\t\t\"Lastro\",\n\t\t\"Livramento\",\n\t\t\"Logradouro\",\n\t\t\"Lucena\",\n\t\t\"Mãe d'Água\",\n\t\t\"Malta\",\n\t\t\"Mamanguape\",\n\t\t\"Manaíra\",\n\t\t\"Marcação\",\n\t\t\"Mari\",\n\t\t\"Marizópolis\",\n\t\t\"Massaranduba\",\n\t\t\"Mataraca\",\n\t\t\"Matinhas\",\n\t\t\"Mato Grosso\",\n\t\t\"Maturéia\",\n\t\t\"Mogeiro\",\n\t\t\"Montadas\",\n\t\t\"Monte Horebe\",\n\t\t\"Monteiro\",\n\t\t\"Mulungu\",\n\t\t\"Natuba\",\n\t\t\"Nazarezinho\",\n\t\t\"Nova Floresta\",\n\t\t\"Nova Olinda\",\n\t\t\"Nova Palmeira\",\n\t\t\"Olho d'Água\",\n\t\t\"Olivedos\",\n\t\t\"Ouro Velho\",\n\t\t\"Parari\",\n\t\t\"Passagem\",\n\t\t\"Patos\",\n\t\t\"Paulista\",\n\t\t\"Pedra Branca\",\n\t\t\"Pedra Lavrada\",\n\t\t\"Pedras de Fogo\",\n\t\t\"Pedro Régis\",\n\t\t\"Piancó\",\n\t\t\"Picuí\",\n\t\t\"Pilar\",\n\t\t\"Pilões\",\n\t\t\"Pilõezinhos\",\n\t\t\"Pirpirituba\",\n\t\t\"Pitimbu\",\n\t\t\"Pocinhos\",\n\t\t\"Poço Dantas\",\n\t\t\"Poço de José de Moura\",\n\t\t\"Pombal\",\n\t\t\"Prata\",\n\t\t\"Princesa Isabel\",\n\t\t\"Puxinanã\",\n\t\t\"Queimadas\",\n\t\t\"Quixaba\",\n\t\t\"Remígio\",\n\t\t\"Riachão\",\n\t\t\"Riachão do Bacamarte\",\n\t\t\"Riachão do Poço\",\n\t\t\"Riacho de Santo Antônio\",\n\t\t\"Riacho dos Cavalos\",\n\t\t\"Rio Tinto\",\n\t\t\"Salgadinho\",\n\t\t\"Salgado de São Félix\",\n\t\t\"Santa Cecília\",\n\t\t\"Santa Cruz\",\n\t\t\"Santa Helena\",\n\t\t\"Santa Inês\",\n\t\t\"Santa Luzia\",\n\t\t\"Santa Rita\",\n\t\t\"Santa Teresinha\",\n\t\t\"Santana de Mangueira\",\n\t\t\"Santana dos Garrotes\",\n\t\t\"Santo André\",\n\t\t\"São Bentinho\",\n\t\t\"São Bento\",\n\t\t\"São Domingos\",\n\t\t\"São Domingos do Cariri\",\n\t\t\"São Francisco\",\n\t\t\"São João do Cariri\",\n\t\t\"São João do Rio do Peixe\",\n\t\t\"São João do Tigre\",\n\t\t\"São José da Lagoa Tapada\",\n\t\t\"São José de Caiana\",\n\t\t\"São José de Espinharas\",\n\t\t\"São José de Piranhas\",\n\t\t\"São José de Princesa\",\n\t\t\"São José do Bonfim\",\n\t\t\"São José do Brejo do Cruz\",\n\t\t\"São José do Sabugi\",\n\t\t\"São José dos Cordeiros\",\n\t\t\"São José dos Ramos\",\n\t\t\"São Mamede\",\n\t\t\"São Miguel de Taipu\",\n\t\t\"São Sebastião de Lagoa de Roça\",\n\t\t\"São Sebastião do Umbuzeiro\",\n\t\t\"São Vicente do Seridó\",\n\t\t\"Sapé\",\n\t\t\"Serra Branca\",\n\t\t\"Serra da Raiz\",\n\t\t\"Serra Grande\",\n\t\t\"Serra Redonda\",\n\t\t\"Serraria\",\n\t\t\"Sertãozinho\",\n\t\t\"Sobrado\",\n\t\t\"Solânea\",\n\t\t\"Soledade\",\n\t\t\"Sossêgo\",\n\t\t\"Sousa\",\n\t\t\"Sumé\",\n\t\t\"Tacima\",\n\t\t\"Taperoá\",\n\t\t\"Tavares\",\n\t\t\"Teixeira\",\n\t\t\"Tenório\",\n\t\t\"Triunfo\",\n\t\t\"Uiraúna\",\n\t\t\"Umbuzeiro\",\n\t\t\"Várzea\",\n\t\t\"Vieirópolis\",\n\t\t\"Vista Serrana\",\n\t\t\"Zabelê\",\n\t],\n\tPE: [\n\t\t\"Abreu e Lima\",\n\t\t\"Afogados da Ingazeira\",\n\t\t\"Afrânio\",\n\t\t\"Agrestina\",\n\t\t\"Água Preta\",\n\t\t\"Águas Belas\",\n\t\t\"Alagoinha\",\n\t\t\"Aliança\",\n\t\t\"Altinho\",\n\t\t\"Amaraji\",\n\t\t\"Angelim\",\n\t\t\"Araçoiaba\",\n\t\t\"Araripina\",\n\t\t\"Arcoverde\",\n\t\t\"Barra de Guabiraba\",\n\t\t\"Barreiros\",\n\t\t\"Belém de Maria\",\n\t\t\"Belém do São Francisco\",\n\t\t\"Belo Jardim\",\n\t\t\"Betânia\",\n\t\t\"Bezerros\",\n\t\t\"Bodocó\",\n\t\t\"Bom Conselho\",\n\t\t\"Bom Jardim\",\n\t\t\"Bonito\",\n\t\t\"Brejão\",\n\t\t\"Brejinho\",\n\t\t\"Brejo da Madre de Deus\",\n\t\t\"Buenos Aires\",\n\t\t\"Buíque\",\n\t\t\"Cabo de Santo Agostinho\",\n\t\t\"Cabrobó\",\n\t\t\"Cachoeirinha\",\n\t\t\"Caetés\",\n\t\t\"Calçado\",\n\t\t\"Calumbi\",\n\t\t\"Camaragibe\",\n\t\t\"Camocim de São Félix\",\n\t\t\"Camutanga\",\n\t\t\"Canhotinho\",\n\t\t\"Capoeiras\",\n\t\t\"Carnaíba\",\n\t\t\"Carnaubeira da Penha\",\n\t\t\"Carpina\",\n\t\t\"Caruaru\",\n\t\t\"Casinhas\",\n\t\t\"Catende\",\n\t\t\"Cedro\",\n\t\t\"Chã de Alegria\",\n\t\t\"Chã Grande\",\n\t\t\"Condado\",\n\t\t\"Correntes\",\n\t\t\"Cortês\",\n\t\t\"Cumaru\",\n\t\t\"Cupira\",\n\t\t\"Custódia\",\n\t\t\"Dormentes\",\n\t\t\"Escada\",\n\t\t\"Exu\",\n\t\t\"Feira Nova\",\n\t\t\"Fernando de Noronha\",\n\t\t\"Ferreiros\",\n\t\t\"Flores\",\n\t\t\"Floresta\",\n\t\t\"Frei Miguelinho\",\n\t\t\"Gameleira\",\n\t\t\"Garanhuns\",\n\t\t\"Glória do Goitá\",\n\t\t\"Goiana\",\n\t\t\"Granito\",\n\t\t\"Gravatá\",\n\t\t\"Iati\",\n\t\t\"Ibimirim\",\n\t\t\"Ibirajuba\",\n\t\t\"Igarassu\",\n\t\t\"Iguaracy\",\n\t\t\"Ilha de Itamaracá\",\n\t\t\"Inajá\",\n\t\t\"Ingazeira\",\n\t\t\"Ipojuca\",\n\t\t\"Ipubi\",\n\t\t\"Itacuruba\",\n\t\t\"Itaíba\",\n\t\t\"Itambé\",\n\t\t\"Itapetim\",\n\t\t\"Itapissuma\",\n\t\t\"Itaquitinga\",\n\t\t\"Jaboatão dos Guararapes\",\n\t\t\"Jaqueira\",\n\t\t\"Jataúba\",\n\t\t\"Jatobá\",\n\t\t\"João Alfredo\",\n\t\t\"Joaquim Nabuco\",\n\t\t\"Jucati\",\n\t\t\"Jupi\",\n\t\t\"Jurema\",\n\t\t\"Lagoa de Itaenga\",\n\t\t\"Lagoa do Carro\",\n\t\t\"Lagoa do Ouro\",\n\t\t\"Lagoa dos Gatos\",\n\t\t\"Lagoa Grande\",\n\t\t\"Lajedo\",\n\t\t\"Limoeiro\",\n\t\t\"Macaparana\",\n\t\t\"Machados\",\n\t\t\"Manari\",\n\t\t\"Maraial\",\n\t\t\"Mirandiba\",\n\t\t\"Moreilândia\",\n\t\t\"Moreno\",\n\t\t\"Nazaré da Mata\",\n\t\t\"Olinda\",\n\t\t\"Orobó\",\n\t\t\"Orocó\",\n\t\t\"Ouricuri\",\n\t\t\"Palmares\",\n\t\t\"Palmeirina\",\n\t\t\"Panelas\",\n\t\t\"Paranatama\",\n\t\t\"Parnamirim\",\n\t\t\"Passira\",\n\t\t\"Paudalho\",\n\t\t\"Paulista\",\n\t\t\"Pedra\",\n\t\t\"Pesqueira\",\n\t\t\"Petrolândia\",\n\t\t\"Petrolina\",\n\t\t\"Poção\",\n\t\t\"Pombos\",\n\t\t\"Primavera\",\n\t\t\"Quipapá\",\n\t\t\"Quixaba\",\n\t\t\"Recife\",\n\t\t\"Riacho das Almas\",\n\t\t\"Ribeirão\",\n\t\t\"Rio Formoso\",\n\t\t\"Sairé\",\n\t\t\"Salgadinho\",\n\t\t\"Salgueiro\",\n\t\t\"Saloá\",\n\t\t\"Sanharó\",\n\t\t\"Santa Cruz\",\n\t\t\"Santa Cruz da Baixa Verde\",\n\t\t\"Santa Cruz do Capibaribe\",\n\t\t\"Santa Filomena\",\n\t\t\"Santa Maria da Boa Vista\",\n\t\t\"Santa Maria do Cambucá\",\n\t\t\"Santa Terezinha\",\n\t\t\"São Benedito do Sul\",\n\t\t\"São Bento do Una\",\n\t\t\"São Caitano\",\n\t\t\"São João\",\n\t\t\"São Joaquim do Monte\",\n\t\t\"São José da Coroa Grande\",\n\t\t\"São José do Belmonte\",\n\t\t\"São José do Egito\",\n\t\t\"São Lourenço da Mata\",\n\t\t\"São Vicente Férrer\",\n\t\t\"Serra Talhada\",\n\t\t\"Serrita\",\n\t\t\"Sertânia\",\n\t\t\"Sirinhaém\",\n\t\t\"Solidão\",\n\t\t\"Surubim\",\n\t\t\"Tabira\",\n\t\t\"Tacaimbó\",\n\t\t\"Tacaratu\",\n\t\t\"Tamandaré\",\n\t\t\"Taquaritinga do Norte\",\n\t\t\"Terezinha\",\n\t\t\"Terra Nova\",\n\t\t\"Timbaúba\",\n\t\t\"Toritama\",\n\t\t\"Tracunhaém\",\n\t\t\"Trindade\",\n\t\t\"Triunfo\",\n\t\t\"Tupanatinga\",\n\t\t\"Tuparetama\",\n\t\t\"Venturosa\",\n\t\t\"Verdejante\",\n\t\t\"Vertente do Lério\",\n\t\t\"Vertentes\",\n\t\t\"Vicência\",\n\t\t\"Vitória de Santo Antão\",\n\t\t\"Xexéu\",\n\t],\n\tPI: [\n\t\t\"Acauã\",\n\t\t\"Agricolândia\",\n\t\t\"Água Branca\",\n\t\t\"Alagoinha do Piauí\",\n\t\t\"Alegrete do Piauí\",\n\t\t\"Alto Longá\",\n\t\t\"Altos\",\n\t\t\"Alvorada do Gurguéia\",\n\t\t\"Amarante\",\n\t\t\"Angical do Piauí\",\n\t\t\"Anísio de Abreu\",\n\t\t\"Antônio Almeida\",\n\t\t\"Aroazes\",\n\t\t\"Aroeiras do Itaim\",\n\t\t\"Arraial\",\n\t\t\"Assunção do Piauí\",\n\t\t\"Avelino Lopes\",\n\t\t\"Baixa Grande do Ribeiro\",\n\t\t\"Barra D'Alcântara\",\n\t\t\"Barras\",\n\t\t\"Barreiras do Piauí\",\n\t\t\"Barro Duro\",\n\t\t\"Batalha\",\n\t\t\"Bela Vista do Piauí\",\n\t\t\"Belém do Piauí\",\n\t\t\"Beneditinos\",\n\t\t\"Bertolínia\",\n\t\t\"Betânia do Piauí\",\n\t\t\"Boa Hora\",\n\t\t\"Bocaina\",\n\t\t\"Bom Jesus\",\n\t\t\"Bom Princípio do Piauí\",\n\t\t\"Bonfim do Piauí\",\n\t\t\"Boqueirão do Piauí\",\n\t\t\"Brasileira\",\n\t\t\"Brejo do Piauí\",\n\t\t\"Buriti dos Lopes\",\n\t\t\"Buriti dos Montes\",\n\t\t\"Cabeceiras do Piauí\",\n\t\t\"Cajazeiras do Piauí\",\n\t\t\"Cajueiro da Praia\",\n\t\t\"Caldeirão Grande do Piauí\",\n\t\t\"Campinas do Piauí\",\n\t\t\"Campo Alegre do Fidalgo\",\n\t\t\"Campo Grande do Piauí\",\n\t\t\"Campo Largo do Piauí\",\n\t\t\"Campo Maior\",\n\t\t\"Canavieira\",\n\t\t\"Canto do Buriti\",\n\t\t\"Capitão de Campos\",\n\t\t\"Capitão Gervásio Oliveira\",\n\t\t\"Caracol\",\n\t\t\"Caraúbas do Piauí\",\n\t\t\"Caridade do Piauí\",\n\t\t\"Castelo do Piauí\",\n\t\t\"Caxingó\",\n\t\t\"Cocal\",\n\t\t\"Cocal de Telha\",\n\t\t\"Cocal dos Alves\",\n\t\t\"Coivaras\",\n\t\t\"Colônia do Gurguéia\",\n\t\t\"Colônia do Piauí\",\n\t\t\"Conceição do Canindé\",\n\t\t\"Coronel José Dias\",\n\t\t\"Corrente\",\n\t\t\"Cristalândia do Piauí\",\n\t\t\"Cristino Castro\",\n\t\t\"Curimatá\",\n\t\t\"Currais\",\n\t\t\"Curral Novo do Piauí\",\n\t\t\"Curralinhos\",\n\t\t\"Demerval Lobão\",\n\t\t\"Dirceu Arcoverde\",\n\t\t\"Dom Expedito Lopes\",\n\t\t\"Dom Inocêncio\",\n\t\t\"Domingos Mourão\",\n\t\t\"Elesbão Veloso\",\n\t\t\"Eliseu Martins\",\n\t\t\"Esperantina\",\n\t\t\"Fartura do Piauí\",\n\t\t\"Flores do Piauí\",\n\t\t\"Floresta do Piauí\",\n\t\t\"Floriano\",\n\t\t\"Francinópolis\",\n\t\t\"Francisco Ayres\",\n\t\t\"Francisco Macedo\",\n\t\t\"Francisco Santos\",\n\t\t\"Fronteiras\",\n\t\t\"Geminiano\",\n\t\t\"Gilbués\",\n\t\t\"Guadalupe\",\n\t\t\"Guaribas\",\n\t\t\"Hugo Napoleão\",\n\t\t\"Ilha Grande\",\n\t\t\"Inhuma\",\n\t\t\"Ipiranga do Piauí\",\n\t\t\"Isaías Coelho\",\n\t\t\"Itainópolis\",\n\t\t\"Itaueira\",\n\t\t\"Jacobina do Piauí\",\n\t\t\"Jaicós\",\n\t\t\"Jardim do Mulato\",\n\t\t\"Jatobá do Piauí\",\n\t\t\"Jerumenha\",\n\t\t\"João Costa\",\n\t\t\"Joaquim Pires\",\n\t\t\"Joca Marques\",\n\t\t\"José de Freitas\",\n\t\t\"Juazeiro do Piauí\",\n\t\t\"Júlio Borges\",\n\t\t\"Jurema\",\n\t\t\"Lagoa Alegre\",\n\t\t\"Lagoa de São Francisco\",\n\t\t\"Lagoa do Barro do Piauí\",\n\t\t\"Lagoa do Piauí\",\n\t\t\"Lagoa do Sítio\",\n\t\t\"Lagoinha do Piauí\",\n\t\t\"Landri Sales\",\n\t\t\"Luís Correia\",\n\t\t\"Luzilândia\",\n\t\t\"Madeiro\",\n\t\t\"Manoel Emídio\",\n\t\t\"Marcolândia\",\n\t\t\"Marcos Parente\",\n\t\t\"Massapê do Piauí\",\n\t\t\"Matias Olímpio\",\n\t\t\"Miguel Alves\",\n\t\t\"Miguel Leão\",\n\t\t\"Milton Brandão\",\n\t\t\"Monsenhor Gil\",\n\t\t\"Monsenhor Hipólito\",\n\t\t\"Monte Alegre do Piauí\",\n\t\t\"Morro Cabeça no Tempo\",\n\t\t\"Morro do Chapéu do Piauí\",\n\t\t\"Murici dos Portelas\",\n\t\t\"Nazaré do Piauí\",\n\t\t\"Nazária\",\n\t\t\"Nossa Senhora de Nazaré\",\n\t\t\"Nossa Senhora dos Remédios\",\n\t\t\"Nova Santa Rita\",\n\t\t\"Novo Oriente do Piauí\",\n\t\t\"Novo Santo Antônio\",\n\t\t\"Oeiras\",\n\t\t\"Olho D'Água do Piauí\",\n\t\t\"Padre Marcos\",\n\t\t\"Paes Landim\",\n\t\t\"Pajeú do Piauí\",\n\t\t\"Palmeira do Piauí\",\n\t\t\"Palmeirais\",\n\t\t\"Paquetá\",\n\t\t\"Parnaguá\",\n\t\t\"Parnaíba\",\n\t\t\"Passagem Franca do Piauí\",\n\t\t\"Patos do Piauí\",\n\t\t\"Pau D'Arco do Piauí\",\n\t\t\"Paulistana\",\n\t\t\"Pavussu\",\n\t\t\"Pedro II\",\n\t\t\"Pedro Laurentino\",\n\t\t\"Picos\",\n\t\t\"Pimenteiras\",\n\t\t\"Pio IX\",\n\t\t\"Piracuruca\",\n\t\t\"Piripiri\",\n\t\t\"Porto\",\n\t\t\"Porto Alegre do Piauí\",\n\t\t\"Prata do Piauí\",\n\t\t\"Queimada Nova\",\n\t\t\"Redenção do Gurguéia\",\n\t\t\"Regeneração\",\n\t\t\"Riacho Frio\",\n\t\t\"Ribeira do Piauí\",\n\t\t\"Ribeiro Gonçalves\",\n\t\t\"Rio Grande do Piauí\",\n\t\t\"Santa Cruz do Piauí\",\n\t\t\"Santa Cruz dos Milagres\",\n\t\t\"Santa Filomena\",\n\t\t\"Santa Luz\",\n\t\t\"Santa Rosa do Piauí\",\n\t\t\"Santana do Piauí\",\n\t\t\"Santo Antônio de Lisboa\",\n\t\t\"Santo Antônio dos Milagres\",\n\t\t\"Santo Inácio do Piauí\",\n\t\t\"São Braz do Piauí\",\n\t\t\"São Félix do Piauí\",\n\t\t\"São Francisco de Assis do Piauí\",\n\t\t\"São Francisco do Piauí\",\n\t\t\"São Gonçalo do Gurguéia\",\n\t\t\"São Gonçalo do Piauí\",\n\t\t\"São João da Canabrava\",\n\t\t\"São João da Fronteira\",\n\t\t\"São João da Serra\",\n\t\t\"São João da Varjota\",\n\t\t\"São João do Arraial\",\n\t\t\"São João do Piauí\",\n\t\t\"São José do Divino\",\n\t\t\"São José do Peixe\",\n\t\t\"São José do Piauí\",\n\t\t\"São Julião\",\n\t\t\"São Lourenço do Piauí\",\n\t\t\"São Luis do Piauí\",\n\t\t\"São Miguel da Baixa Grande\",\n\t\t\"São Miguel do Fidalgo\",\n\t\t\"São Miguel do Tapuio\",\n\t\t\"São Pedro do Piauí\",\n\t\t\"São Raimundo Nonato\",\n\t\t\"Sebastião Barros\",\n\t\t\"Sebastião Leal\",\n\t\t\"Sigefredo Pacheco\",\n\t\t\"Simões\",\n\t\t\"Simplício Mendes\",\n\t\t\"Socorro do Piauí\",\n\t\t\"Sussuapara\",\n\t\t\"Tamboril do Piauí\",\n\t\t\"Tanque do Piauí\",\n\t\t\"Teresina\",\n\t\t\"União\",\n\t\t\"Uruçuí\",\n\t\t\"Valença do Piauí\",\n\t\t\"Várzea Branca\",\n\t\t\"Várzea Grande\",\n\t\t\"Vera Mendes\",\n\t\t\"Vila Nova do Piauí\",\n\t\t\"Wall Ferraz\",\n\t],\n\tPR: [\n\t\t\"Abatiá\",\n\t\t\"Adrianópolis\",\n\t\t\"Agudos do Sul\",\n\t\t\"Almirante Tamandaré\",\n\t\t\"Altamira do Paraná\",\n\t\t\"Alto Paraíso\",\n\t\t\"Alto Paraná\",\n\t\t\"Alto Piquiri\",\n\t\t\"Altônia\",\n\t\t\"Alvorada do Sul\",\n\t\t\"Amaporã\",\n\t\t\"Ampére\",\n\t\t\"Anahy\",\n\t\t\"Andirá\",\n\t\t\"Ângulo\",\n\t\t\"Antonina\",\n\t\t\"Antônio Olinto\",\n\t\t\"Apucarana\",\n\t\t\"Arapongas\",\n\t\t\"Arapoti\",\n\t\t\"Arapuã\",\n\t\t\"Araruna\",\n\t\t\"Araucária\",\n\t\t\"Ariranha do Ivaí\",\n\t\t\"Assaí\",\n\t\t\"Assis Chateaubriand\",\n\t\t\"Astorga\",\n\t\t\"Atalaia\",\n\t\t\"Balsa Nova\",\n\t\t\"Bandeirantes\",\n\t\t\"Barbosa Ferraz\",\n\t\t\"Barra do Jacaré\",\n\t\t\"Barracão\",\n\t\t\"Bela Vista da Caroba\",\n\t\t\"Bela Vista do Paraíso\",\n\t\t\"Bituruna\",\n\t\t\"Boa Esperança\",\n\t\t\"Boa Esperança do Iguaçu\",\n\t\t\"Boa Ventura de São Roque\",\n\t\t\"Boa Vista da Aparecida\",\n\t\t\"Bocaiúva do Sul\",\n\t\t\"Bom Jesus do Sul\",\n\t\t\"Bom Sucesso\",\n\t\t\"Bom Sucesso do Sul\",\n\t\t\"Borrazópolis\",\n\t\t\"Braganey\",\n\t\t\"Brasilândia do Sul\",\n\t\t\"Cafeara\",\n\t\t\"Cafelândia\",\n\t\t\"Cafezal do Sul\",\n\t\t\"Califórnia\",\n\t\t\"Cambará\",\n\t\t\"Cambé\",\n\t\t\"Cambira\",\n\t\t\"Campina da Lagoa\",\n\t\t\"Campina do Simão\",\n\t\t\"Campina Grande do Sul\",\n\t\t\"Campo Bonito\",\n\t\t\"Campo do Tenente\",\n\t\t\"Campo Largo\",\n\t\t\"Campo Magro\",\n\t\t\"Campo Mourão\",\n\t\t\"Cândido de Abreu\",\n\t\t\"Candói\",\n\t\t\"Cantagalo\",\n\t\t\"Capanema\",\n\t\t\"Capitão Leônidas Marques\",\n\t\t\"Carambeí\",\n\t\t\"Carlópolis\",\n\t\t\"Cascavel\",\n\t\t\"Castro\",\n\t\t\"Catanduvas\",\n\t\t\"Centenário do Sul\",\n\t\t\"Cerro Azul\",\n\t\t\"Céu Azul\",\n\t\t\"Chopinzinho\",\n\t\t\"Cianorte\",\n\t\t\"Cidade Gaúcha\",\n\t\t\"Clevelândia\",\n\t\t\"Colombo\",\n\t\t\"Colorado\",\n\t\t\"Congonhinhas\",\n\t\t\"Conselheiro Mairinck\",\n\t\t\"Contenda\",\n\t\t\"Corbélia\",\n\t\t\"Cornélio Procópio\",\n\t\t\"Coronel Domingos Soares\",\n\t\t\"Coronel Vivida\",\n\t\t\"Corumbataí do Sul\",\n\t\t\"Cruz Machado\",\n\t\t\"Cruzeiro do Iguaçu\",\n\t\t\"Cruzeiro do Oeste\",\n\t\t\"Cruzeiro do Sul\",\n\t\t\"Cruzmaltina\",\n\t\t\"Curitiba\",\n\t\t\"Curiúva\",\n\t\t\"Diamante D'Oeste\",\n\t\t\"Diamante do Norte\",\n\t\t\"Diamante do Sul\",\n\t\t\"Dois Vizinhos\",\n\t\t\"Douradina\",\n\t\t\"Doutor Camargo\",\n\t\t\"Doutor Ulysses\",\n\t\t\"Enéas Marques\",\n\t\t\"Engenheiro Beltrão\",\n\t\t\"Entre Rios do Oeste\",\n\t\t\"Esperança Nova\",\n\t\t\"Espigão Alto do Iguaçu\",\n\t\t\"Farol\",\n\t\t\"Faxinal\",\n\t\t\"Fazenda Rio Grande\",\n\t\t\"Fênix\",\n\t\t\"Fernandes Pinheiro\",\n\t\t\"Figueira\",\n\t\t\"Flor da Serra do Sul\",\n\t\t\"Floraí\",\n\t\t\"Floresta\",\n\t\t\"Florestópolis\",\n\t\t\"Flórida\",\n\t\t\"Formosa do Oeste\",\n\t\t\"Foz do Iguaçu\",\n\t\t\"Foz do Jordão\",\n\t\t\"Francisco Alves\",\n\t\t\"Francisco Beltrão\",\n\t\t\"General Carneiro\",\n\t\t\"Godoy Moreira\",\n\t\t\"Goioerê\",\n\t\t\"Goioxim\",\n\t\t\"Grandes Rios\",\n\t\t\"Guaíra\",\n\t\t\"Guairaçá\",\n\t\t\"Guamiranga\",\n\t\t\"Guapirama\",\n\t\t\"Guaporema\",\n\t\t\"Guaraci\",\n\t\t\"Guaraniaçu\",\n\t\t\"Guarapuava\",\n\t\t\"Guaraqueçaba\",\n\t\t\"Guaratuba\",\n\t\t\"Honório Serpa\",\n\t\t\"Ibaiti\",\n\t\t\"Ibema\",\n\t\t\"Ibiporã\",\n\t\t\"Icaraíma\",\n\t\t\"Iguaraçu\",\n\t\t\"Iguatu\",\n\t\t\"Imbaú\",\n\t\t\"Imbituva\",\n\t\t\"Inácio Martins\",\n\t\t\"Inajá\",\n\t\t\"Indianópolis\",\n\t\t\"Ipiranga\",\n\t\t\"Iporã\",\n\t\t\"Iracema do Oeste\",\n\t\t\"Irati\",\n\t\t\"Iretama\",\n\t\t\"Itaguajé\",\n\t\t\"Itaipulândia\",\n\t\t\"Itambaracá\",\n\t\t\"Itambé\",\n\t\t\"Itapejara d'Oeste\",\n\t\t\"Itaperuçu\",\n\t\t\"Itaúna do Sul\",\n\t\t\"Ivaí\",\n\t\t\"Ivaiporã\",\n\t\t\"Ivaté\",\n\t\t\"Ivatuba\",\n\t\t\"Jaboti\",\n\t\t\"Jacarezinho\",\n\t\t\"Jaguapitã\",\n\t\t\"Jaguariaíva\",\n\t\t\"Jandaia do Sul\",\n\t\t\"Janiópolis\",\n\t\t\"Japira\",\n\t\t\"Japurá\",\n\t\t\"Jardim Alegre\",\n\t\t\"Jardim Olinda\",\n\t\t\"Jataizinho\",\n\t\t\"Jesuítas\",\n\t\t\"Joaquim Távora\",\n\t\t\"Jundiaí do Sul\",\n\t\t\"Juranda\",\n\t\t\"Jussara\",\n\t\t\"Kaloré\",\n\t\t\"Lapa\",\n\t\t\"Laranjal\",\n\t\t\"Laranjeiras do Sul\",\n\t\t\"Leópolis\",\n\t\t\"Lidianópolis\",\n\t\t\"Lindoeste\",\n\t\t\"Loanda\",\n\t\t\"Lobato\",\n\t\t\"Londrina\",\n\t\t\"Luiziana\",\n\t\t\"Lunardelli\",\n\t\t\"Lupionópolis\",\n\t\t\"Mallet\",\n\t\t\"Mamborê\",\n\t\t\"Mandaguaçu\",\n\t\t\"Mandaguari\",\n\t\t\"Mandirituba\",\n\t\t\"Manfrinópolis\",\n\t\t\"Mangueirinha\",\n\t\t\"Manoel Ribas\",\n\t\t\"Marechal Cândido Rondon\",\n\t\t\"Maria Helena\",\n\t\t\"Marialva\",\n\t\t\"Marilândia do Sul\",\n\t\t\"Marilena\",\n\t\t\"Mariluz\",\n\t\t\"Maringá\",\n\t\t\"Mariópolis\",\n\t\t\"Maripá\",\n\t\t\"Marmeleiro\",\n\t\t\"Marquinho\",\n\t\t\"Marumbi\",\n\t\t\"Matelândia\",\n\t\t\"Matinhos\",\n\t\t\"Mato Rico\",\n\t\t\"Mauá da Serra\",\n\t\t\"Medianeira\",\n\t\t\"Mercedes\",\n\t\t\"Mirador\",\n\t\t\"Miraselva\",\n\t\t\"Missal\",\n\t\t\"Moreira Sales\",\n\t\t\"Morretes\",\n\t\t\"Munhoz de Melo\",\n\t\t\"Nossa Senhora das Graças\",\n\t\t\"Nova Aliança do Ivaí\",\n\t\t\"Nova América da Colina\",\n\t\t\"Nova Aurora\",\n\t\t\"Nova Cantu\",\n\t\t\"Nova Esperança\",\n\t\t\"Nova Esperança do Sudoeste\",\n\t\t\"Nova Fátima\",\n\t\t\"Nova Laranjeiras\",\n\t\t\"Nova Londrina\",\n\t\t\"Nova Olímpia\",\n\t\t\"Nova Prata do Iguaçu\",\n\t\t\"Nova Santa Bárbara\",\n\t\t\"Nova Santa Rosa\",\n\t\t\"Nova Tebas\",\n\t\t\"Novo Itacolomi\",\n\t\t\"Ortigueira\",\n\t\t\"Ourizona\",\n\t\t\"Ouro Verde do Oeste\",\n\t\t\"Paiçandu\",\n\t\t\"Palmas\",\n\t\t\"Palmeira\",\n\t\t\"Palmital\",\n\t\t\"Palotina\",\n\t\t\"Paraíso do Norte\",\n\t\t\"Paranacity\",\n\t\t\"Paranaguá\",\n\t\t\"Paranapoema\",\n\t\t\"Paranavaí\",\n\t\t\"Pato Bragado\",\n\t\t\"Pato Branco\",\n\t\t\"Paula Freitas\",\n\t\t\"Paulo Frontin\",\n\t\t\"Peabiru\",\n\t\t\"Perobal\",\n\t\t\"Pérola\",\n\t\t\"Pérola d'Oeste\",\n\t\t\"Piên\",\n\t\t\"Pinhais\",\n\t\t\"Pinhal de São Bento\",\n\t\t\"Pinhalão\",\n\t\t\"Pinhão\",\n\t\t\"Piraí do Sul\",\n\t\t\"Piraquara\",\n\t\t\"Pitanga\",\n\t\t\"Pitangueiras\",\n\t\t\"Planaltina do Paraná\",\n\t\t\"Planalto\",\n\t\t\"Ponta Grossa\",\n\t\t\"Pontal do Paraná\",\n\t\t\"Porecatu\",\n\t\t\"Porto Amazonas\",\n\t\t\"Porto Barreiro\",\n\t\t\"Porto Rico\",\n\t\t\"Porto Vitória\",\n\t\t\"Prado Ferreira\",\n\t\t\"Pranchita\",\n\t\t\"Presidente Castelo Branco\",\n\t\t\"Primeiro de Maio\",\n\t\t\"Prudentópolis\",\n\t\t\"Quarto Centenário\",\n\t\t\"Quatiguá\",\n\t\t\"Quatro Barras\",\n\t\t\"Quatro Pontes\",\n\t\t\"Quedas do Iguaçu\",\n\t\t\"Querência do Norte\",\n\t\t\"Quinta do Sol\",\n\t\t\"Quitandinha\",\n\t\t\"Ramilândia\",\n\t\t\"Rancho Alegre\",\n\t\t\"Rancho Alegre D'Oeste\",\n\t\t\"Realeza\",\n\t\t\"Rebouças\",\n\t\t\"Renascença\",\n\t\t\"Reserva\",\n\t\t\"Reserva do Iguaçu\",\n\t\t\"Ribeirão Claro\",\n\t\t\"Ribeirão do Pinhal\",\n\t\t\"Rio Azul\",\n\t\t\"Rio Bom\",\n\t\t\"Rio Bonito do Iguaçu\",\n\t\t\"Rio Branco do Ivaí\",\n\t\t\"Rio Branco do Sul\",\n\t\t\"Rio Negro\",\n\t\t\"Rolândia\",\n\t\t\"Roncador\",\n\t\t\"Rondon\",\n\t\t\"Rosário do Ivaí\",\n\t\t\"Sabáudia\",\n\t\t\"Salgado Filho\",\n\t\t\"Salto do Itararé\",\n\t\t\"Salto do Lontra\",\n\t\t\"Santa Amélia\",\n\t\t\"Santa Cecília do Pavão\",\n\t\t\"Santa Cruz de Monte Castelo\",\n\t\t\"Santa Fé\",\n\t\t\"Santa Helena\",\n\t\t\"Santa Inês\",\n\t\t\"Santa Isabel do Ivaí\",\n\t\t\"Santa Izabel do Oeste\",\n\t\t\"Santa Lúcia\",\n\t\t\"Santa Maria do Oeste\",\n\t\t\"Santa Mariana\",\n\t\t\"Santa Mônica\",\n\t\t\"Santa Tereza do Oeste\",\n\t\t\"Santa Terezinha de Itaipu\",\n\t\t\"Santana do Itararé\",\n\t\t\"Santo Antônio da Platina\",\n\t\t\"Santo Antônio do Caiuá\",\n\t\t\"Santo Antônio do Paraíso\",\n\t\t\"Santo Antônio do Sudoeste\",\n\t\t\"Santo Inácio\",\n\t\t\"São Carlos do Ivaí\",\n\t\t\"São Jerônimo da Serra\",\n\t\t\"São João\",\n\t\t\"São João do Caiuá\",\n\t\t\"São João do Ivaí\",\n\t\t\"São João do Triunfo\",\n\t\t\"São Jorge d'Oeste\",\n\t\t\"São Jorge do Ivaí\",\n\t\t\"São Jorge do Patrocínio\",\n\t\t\"São José da Boa Vista\",\n\t\t\"São José das Palmeiras\",\n\t\t\"São José dos Pinhais\",\n\t\t\"São Manoel do Paraná\",\n\t\t\"São Mateus do Sul\",\n\t\t\"São Miguel do Iguaçu\",\n\t\t\"São Pedro do Iguaçu\",\n\t\t\"São Pedro do Ivaí\",\n\t\t\"São Pedro do Paraná\",\n\t\t\"São Sebastião da Amoreira\",\n\t\t\"São Tomé\",\n\t\t\"Sapopema\",\n\t\t\"Sarandi\",\n\t\t\"Saudade do Iguaçu\",\n\t\t\"Sengés\",\n\t\t\"Serranópolis do Iguaçu\",\n\t\t\"Sertaneja\",\n\t\t\"Sertanópolis\",\n\t\t\"Siqueira Campos\",\n\t\t\"Sulina\",\n\t\t\"Tamarana\",\n\t\t\"Tamboara\",\n\t\t\"Tapejara\",\n\t\t\"Tapira\",\n\t\t\"Teixeira Soares\",\n\t\t\"Telêmaco Borba\",\n\t\t\"Terra Boa\",\n\t\t\"Terra Rica\",\n\t\t\"Terra Roxa\",\n\t\t\"Tibagi\",\n\t\t\"Tijucas do Sul\",\n\t\t\"Toledo\",\n\t\t\"Tomazina\",\n\t\t\"Três Barras do Paraná\",\n\t\t\"Tunas do Paraná\",\n\t\t\"Tuneiras do Oeste\",\n\t\t\"Tupãssi\",\n\t\t\"Turvo\",\n\t\t\"Ubiratã\",\n\t\t\"Umuarama\",\n\t\t\"União da Vitória\",\n\t\t\"Uniflor\",\n\t\t\"Uraí\",\n\t\t\"Ventania\",\n\t\t\"Vera Cruz do Oeste\",\n\t\t\"Verê\",\n\t\t\"Virmond\",\n\t\t\"Vitorino\",\n\t\t\"Wenceslau Braz\",\n\t\t\"Xambrê\",\n\t],\n\tRJ: [\n\t\t\"Angra dos Reis\",\n\t\t\"Aperibé\",\n\t\t\"Araruama\",\n\t\t\"Areal\",\n\t\t\"Armação dos Búzios\",\n\t\t\"Arraial do Cabo\",\n\t\t\"Barra do Piraí\",\n\t\t\"Barra Mansa\",\n\t\t\"Belford Roxo\",\n\t\t\"Bom Jardim\",\n\t\t\"Bom Jesus do Itabapoana\",\n\t\t\"Cabo Frio\",\n\t\t\"Cachoeiras de Macacu\",\n\t\t\"Cambuci\",\n\t\t\"Campos dos Goytacazes\",\n\t\t\"Cantagalo\",\n\t\t\"Carapebus\",\n\t\t\"Cardoso Moreira\",\n\t\t\"Carmo\",\n\t\t\"Casimiro de Abreu\",\n\t\t\"Comendador Levy Gasparian\",\n\t\t\"Conceição de Macabu\",\n\t\t\"Cordeiro\",\n\t\t\"Duas Barras\",\n\t\t\"Duque de Caxias\",\n\t\t\"Engenheiro Paulo de Frontin\",\n\t\t\"Guapimirim\",\n\t\t\"Iguaba Grande\",\n\t\t\"Itaboraí\",\n\t\t\"Itaguaí\",\n\t\t\"Italva\",\n\t\t\"Itaocara\",\n\t\t\"Itaperuna\",\n\t\t\"Itatiaia\",\n\t\t\"Japeri\",\n\t\t\"Laje do Muriaé\",\n\t\t\"Macaé\",\n\t\t\"Macuco\",\n\t\t\"Magé\",\n\t\t\"Mangaratiba\",\n\t\t\"Maricá\",\n\t\t\"Mendes\",\n\t\t\"Mesquita\",\n\t\t\"Miguel Pereira\",\n\t\t\"Miracema\",\n\t\t\"Natividade\",\n\t\t\"Nilópolis\",\n\t\t\"Niterói\",\n\t\t\"Nova Friburgo\",\n\t\t\"Nova Iguaçu\",\n\t\t\"Paracambi\",\n\t\t\"Paraíba do Sul\",\n\t\t\"Paraty\",\n\t\t\"Paty do Alferes\",\n\t\t\"Petrópolis\",\n\t\t\"Pinheiral\",\n\t\t\"Piraí\",\n\t\t\"Porciúncula\",\n\t\t\"Porto Real\",\n\t\t\"Quatis\",\n\t\t\"Queimados\",\n\t\t\"Quissamã\",\n\t\t\"Resende\",\n\t\t\"Rio Bonito\",\n\t\t\"Rio Claro\",\n\t\t\"Rio das Flores\",\n\t\t\"Rio das Ostras\",\n\t\t\"Rio de Janeiro\",\n\t\t\"Santa Maria Madalena\",\n\t\t\"Santo Antônio de Pádua\",\n\t\t\"São Fidélis\",\n\t\t\"São Francisco de Itabapoana\",\n\t\t\"São Gonçalo\",\n\t\t\"São João da Barra\",\n\t\t\"São João de Meriti\",\n\t\t\"São José de Ubá\",\n\t\t\"São José do Vale do Rio Preto\",\n\t\t\"São Pedro da Aldeia\",\n\t\t\"São Sebastião do Alto\",\n\t\t\"Sapucaia\",\n\t\t\"Saquarema\",\n\t\t\"Seropédica\",\n\t\t\"Silva Jardim\",\n\t\t\"Sumidouro\",\n\t\t\"Tanguá\",\n\t\t\"Teresópolis\",\n\t\t\"Trajano de Moraes\",\n\t\t\"Três Rios\",\n\t\t\"Valença\",\n\t\t\"Varre-Sai\",\n\t\t\"Vassouras\",\n\t\t\"Volta Redonda\",\n\t],\n\tRN: [\n\t\t\"Acari\",\n\t\t\"Afonso Bezerra\",\n\t\t\"Água Nova\",\n\t\t\"Alexandria\",\n\t\t\"Almino Afonso\",\n\t\t\"Alto do Rodrigues\",\n\t\t\"Angicos\",\n\t\t\"Antônio Martins\",\n\t\t\"Apodi\",\n\t\t\"Areia Branca\",\n\t\t\"Arez\",\n\t\t\"Assú\",\n\t\t\"Baía Formosa\",\n\t\t\"Baraúna\",\n\t\t\"Barcelona\",\n\t\t\"Bento Fernandes\",\n\t\t\"Bodó\",\n\t\t\"Bom Jesus\",\n\t\t\"Brejinho\",\n\t\t\"Caiçara do Norte\",\n\t\t\"Caiçara do Rio do Vento\",\n\t\t\"Caicó\",\n\t\t\"Campo Grande\",\n\t\t\"Campo Redondo\",\n\t\t\"Canguaretama\",\n\t\t\"Caraúbas\",\n\t\t\"Carnaúba dos Dantas\",\n\t\t\"Carnaubais\",\n\t\t\"Ceará-Mirim\",\n\t\t\"Cerro Corá\",\n\t\t\"Coronel Ezequiel\",\n\t\t\"Coronel João Pessoa\",\n\t\t\"Cruzeta\",\n\t\t\"Currais Novos\",\n\t\t\"Doutor Severiano\",\n\t\t\"Encanto\",\n\t\t\"Equador\",\n\t\t\"Espírito Santo\",\n\t\t\"Extremoz\",\n\t\t\"Felipe Guerra\",\n\t\t\"Fernando Pedroza\",\n\t\t\"Florânia\",\n\t\t\"Francisco Dantas\",\n\t\t\"Frutuoso Gomes\",\n\t\t\"Galinhos\",\n\t\t\"Goianinha\",\n\t\t\"Governador Dix-Sept Rosado\",\n\t\t\"Grossos\",\n\t\t\"Guamaré\",\n\t\t\"Ielmo Marinho\",\n\t\t\"Ipanguaçu\",\n\t\t\"Ipueira\",\n\t\t\"Itajá\",\n\t\t\"Itaú\",\n\t\t\"Jaçanã\",\n\t\t\"Jandaíra\",\n\t\t\"Janduís\",\n\t\t\"Januário Cicco\",\n\t\t\"Japi\",\n\t\t\"Jardim de Angicos\",\n\t\t\"Jardim de Piranhas\",\n\t\t\"Jardim do Seridó\",\n\t\t\"João Câmara\",\n\t\t\"João Dias\",\n\t\t\"José da Penha\",\n\t\t\"Jucurutu\",\n\t\t\"Jundiá\",\n\t\t\"Lagoa d'Anta\",\n\t\t\"Lagoa de Pedras\",\n\t\t\"Lagoa de Velhos\",\n\t\t\"Lagoa Nova\",\n\t\t\"Lagoa Salgada\",\n\t\t\"Lajes\",\n\t\t\"Lajes Pintadas\",\n\t\t\"Lucrécia\",\n\t\t\"Luís Gomes\",\n\t\t\"Macaíba\",\n\t\t\"Macau\",\n\t\t\"Major Sales\",\n\t\t\"Marcelino Vieira\",\n\t\t\"Martins\",\n\t\t\"Maxaranguape\",\n\t\t\"Messias Targino\",\n\t\t\"Montanhas\",\n\t\t\"Monte Alegre\",\n\t\t\"Monte das Gameleiras\",\n\t\t\"Mossoró\",\n\t\t\"Natal\",\n\t\t\"Nísia Floresta\",\n\t\t\"Nova Cruz\",\n\t\t\"Olho d'Água do Borges\",\n\t\t\"Ouro Branco\",\n\t\t\"Paraná\",\n\t\t\"Paraú\",\n\t\t\"Parazinho\",\n\t\t\"Parelhas\",\n\t\t\"Parnamirim\",\n\t\t\"Passa e Fica\",\n\t\t\"Passagem\",\n\t\t\"Patu\",\n\t\t\"Pau dos Ferros\",\n\t\t\"Pedra Grande\",\n\t\t\"Pedra Preta\",\n\t\t\"Pedro Avelino\",\n\t\t\"Pedro Velho\",\n\t\t\"Pendências\",\n\t\t\"Pilões\",\n\t\t\"Poço Branco\",\n\t\t\"Portalegre\",\n\t\t\"Porto do Mangue\",\n\t\t\"Pureza\",\n\t\t\"Rafael Fernandes\",\n\t\t\"Rafael Godeiro\",\n\t\t\"Riacho da Cruz\",\n\t\t\"Riacho de Santana\",\n\t\t\"Riachuelo\",\n\t\t\"Rio do Fogo\",\n\t\t\"Rodolfo Fernandes\",\n\t\t\"Ruy Barbosa\",\n\t\t\"Santa Cruz\",\n\t\t\"Santa Maria\",\n\t\t\"Santana do Matos\",\n\t\t\"Santana do Seridó\",\n\t\t\"Santo Antônio\",\n\t\t\"São Bento do Norte\",\n\t\t\"São Bento do Trairí\",\n\t\t\"São Fernando\",\n\t\t\"São Francisco do Oeste\",\n\t\t\"São Gonçalo do Amarante\",\n\t\t\"São João do Sabugi\",\n\t\t\"São José de Mipibu\",\n\t\t\"São José do Campestre\",\n\t\t\"São José do Seridó\",\n\t\t\"São Miguel\",\n\t\t\"São Miguel do Gostoso\",\n\t\t\"São Paulo do Potengi\",\n\t\t\"São Pedro\",\n\t\t\"São Rafael\",\n\t\t\"São Tomé\",\n\t\t\"São Vicente\",\n\t\t\"Senador Elói de Souza\",\n\t\t\"Senador Georgino Avelino\",\n\t\t\"Serra Caiada\",\n\t\t\"Serra de São Bento\",\n\t\t\"Serra do Mel\",\n\t\t\"Serra Negra do Norte\",\n\t\t\"Serrinha\",\n\t\t\"Serrinha dos Pintos\",\n\t\t\"Severiano Melo\",\n\t\t\"Sítio Novo\",\n\t\t\"Taboleiro Grande\",\n\t\t\"Taipu\",\n\t\t\"Tangará\",\n\t\t\"Tenente Ananias\",\n\t\t\"Tenente Laurentino Cruz\",\n\t\t\"Tibau\",\n\t\t\"Tibau do Sul\",\n\t\t\"Timbaúba dos Batistas\",\n\t\t\"Touros\",\n\t\t\"Triunfo Potiguar\",\n\t\t\"Umarizal\",\n\t\t\"Upanema\",\n\t\t\"Várzea\",\n\t\t\"Venha-Ver\",\n\t\t\"Vera Cruz\",\n\t\t\"Viçosa\",\n\t\t\"Vila Flor\",\n\t],\n\tRO: [\n\t\t\"Alta Floresta D'Oeste\",\n\t\t\"Alto Alegre dos Parecis\",\n\t\t\"Alto Paraíso\",\n\t\t\"Alvorada D'Oeste\",\n\t\t\"Ariquemes\",\n\t\t\"Buritis\",\n\t\t\"Cabixi\",\n\t\t\"Cacaulândia\",\n\t\t\"Cacoal\",\n\t\t\"Campo Novo de Rondônia\",\n\t\t\"Candeias do Jamari\",\n\t\t\"Castanheiras\",\n\t\t\"Cerejeiras\",\n\t\t\"Chupinguaia\",\n\t\t\"Colorado do Oeste\",\n\t\t\"Corumbiara\",\n\t\t\"Costa Marques\",\n\t\t\"Cujubim\",\n\t\t\"Espigão D'Oeste\",\n\t\t\"Governador Jorge Teixeira\",\n\t\t\"Guajará-Mirim\",\n\t\t\"Itapuã do Oeste\",\n\t\t\"Jaru\",\n\t\t\"Ji-Paraná\",\n\t\t\"Machadinho D'Oeste\",\n\t\t\"Ministro Andreazza\",\n\t\t\"Mirante da Serra\",\n\t\t\"Monte Negro\",\n\t\t\"Nova Brasilândia D'Oeste\",\n\t\t\"Nova Mamoré\",\n\t\t\"Nova União\",\n\t\t\"Novo Horizonte do Oeste\",\n\t\t\"Ouro Preto do Oeste\",\n\t\t\"Parecis\",\n\t\t\"Pimenta Bueno\",\n\t\t\"Pimenteiras do Oeste\",\n\t\t\"Porto Velho\",\n\t\t\"Presidente Médici\",\n\t\t\"Primavera de Rondônia\",\n\t\t\"Rio Crespo\",\n\t\t\"Rolim de Moura\",\n\t\t\"Santa Luzia D'Oeste\",\n\t\t\"São Felipe D'Oeste\",\n\t\t\"São Francisco do Guaporé\",\n\t\t\"São Miguel do Guaporé\",\n\t\t\"Seringueiras\",\n\t\t\"Teixeirópolis\",\n\t\t\"Theobroma\",\n\t\t\"Urupá\",\n\t\t\"Vale do Anari\",\n\t\t\"Vale do Paraíso\",\n\t\t\"Vilhena\",\n\t],\n\tRR: [\n\t\t\"Alto Alegre\",\n\t\t\"Amajari\",\n\t\t\"Boa Vista\",\n\t\t\"Bonfim\",\n\t\t\"Cantá\",\n\t\t\"Caracaraí\",\n\t\t\"Caroebe\",\n\t\t\"Iracema\",\n\t\t\"Mucajaí\",\n\t\t\"Normandia\",\n\t\t\"Pacaraima\",\n\t\t\"Rorainópolis\",\n\t\t\"São João da Baliza\",\n\t\t\"São Luiz do Anauá\",\n\t\t\"Uiramutã\",\n\t],\n\tRS: [\n\t\t\"Aceguá\",\n\t\t\"Água Santa\",\n\t\t\"Agudo\",\n\t\t\"Ajuricaba\",\n\t\t\"Alecrim\",\n\t\t\"Alegrete\",\n\t\t\"Alegria\",\n\t\t\"Almirante Tamandaré do Sul\",\n\t\t\"Alpestre\",\n\t\t\"Alto Alegre\",\n\t\t\"Alto Feliz\",\n\t\t\"Alvorada\",\n\t\t\"Amaral Ferrador\",\n\t\t\"Ametista do Sul\",\n\t\t\"André da Rocha\",\n\t\t\"Anta Gorda\",\n\t\t\"Antônio Prado\",\n\t\t\"Arambaré\",\n\t\t\"Araricá\",\n\t\t\"Aratiba\",\n\t\t\"Arroio do Meio\",\n\t\t\"Arroio do Padre\",\n\t\t\"Arroio do Sal\",\n\t\t\"Arroio do Tigre\",\n\t\t\"Arroio dos Ratos\",\n\t\t\"Arroio Grande\",\n\t\t\"Arvorezinha\",\n\t\t\"Augusto Pestana\",\n\t\t\"Áurea\",\n\t\t\"Bagé\",\n\t\t\"Balneário Pinhal\",\n\t\t\"Barão\",\n\t\t\"Barão de Cotegipe\",\n\t\t\"Barão do Triunfo\",\n\t\t\"Barra do Guarita\",\n\t\t\"Barra do Quaraí\",\n\t\t\"Barra do Ribeiro\",\n\t\t\"Barra do Rio Azul\",\n\t\t\"Barra Funda\",\n\t\t\"Barracão\",\n\t\t\"Barros Cassal\",\n\t\t\"Benjamin Constant do Sul\",\n\t\t\"Bento Gonçalves\",\n\t\t\"Boa Vista das Missões\",\n\t\t\"Boa Vista do Buricá\",\n\t\t\"Boa Vista do Cadeado\",\n\t\t\"Boa Vista do Incra\",\n\t\t\"Boa Vista do Sul\",\n\t\t\"Bom Jesus\",\n\t\t\"Bom Princípio\",\n\t\t\"Bom Progresso\",\n\t\t\"Bom Retiro do Sul\",\n\t\t\"Boqueirão do Leão\",\n\t\t\"Bossoroca\",\n\t\t\"Bozano\",\n\t\t\"Braga\",\n\t\t\"Brochier\",\n\t\t\"Butiá\",\n\t\t\"Caçapava do Sul\",\n\t\t\"Cacequi\",\n\t\t\"Cachoeira do Sul\",\n\t\t\"Cachoeirinha\",\n\t\t\"Cacique Doble\",\n\t\t\"Caibaté\",\n\t\t\"Caiçara\",\n\t\t\"Camaquã\",\n\t\t\"Camargo\",\n\t\t\"Cambará do Sul\",\n\t\t\"Campestre da Serra\",\n\t\t\"Campina das Missões\",\n\t\t\"Campinas do Sul\",\n\t\t\"Campo Bom\",\n\t\t\"Campo Novo\",\n\t\t\"Campos Borges\",\n\t\t\"Candelária\",\n\t\t\"Cândido Godói\",\n\t\t\"Candiota\",\n\t\t\"Canela\",\n\t\t\"Canguçu\",\n\t\t\"Canoas\",\n\t\t\"Canudos do Vale\",\n\t\t\"Capão Bonito do Sul\",\n\t\t\"Capão da Canoa\",\n\t\t\"Capão do Cipó\",\n\t\t\"Capão do Leão\",\n\t\t\"Capela de Santana\",\n\t\t\"Capitão\",\n\t\t\"Capivari do Sul\",\n\t\t\"Caraá\",\n\t\t\"Carazinho\",\n\t\t\"Carlos Barbosa\",\n\t\t\"Carlos Gomes\",\n\t\t\"Casca\",\n\t\t\"Caseiros\",\n\t\t\"Catuípe\",\n\t\t\"Caxias do Sul\",\n\t\t\"Centenário\",\n\t\t\"Cerrito\",\n\t\t\"Cerro Branco\",\n\t\t\"Cerro Grande\",\n\t\t\"Cerro Grande do Sul\",\n\t\t\"Cerro Largo\",\n\t\t\"Chapada\",\n\t\t\"Charqueadas\",\n\t\t\"Charrua\",\n\t\t\"Chiapetta\",\n\t\t\"Chuí\",\n\t\t\"Chuvisca\",\n\t\t\"Cidreira\",\n\t\t\"Ciríaco\",\n\t\t\"Colinas\",\n\t\t\"Colorado\",\n\t\t\"Condor\",\n\t\t\"Constantina\",\n\t\t\"Coqueiro Baixo\",\n\t\t\"Coqueiros do Sul\",\n\t\t\"Coronel Barros\",\n\t\t\"Coronel Bicaco\",\n\t\t\"Coronel Pilar\",\n\t\t\"Cotiporã\",\n\t\t\"Coxilha\",\n\t\t\"Crissiumal\",\n\t\t\"Cristal\",\n\t\t\"Cristal do Sul\",\n\t\t\"Cruz Alta\",\n\t\t\"Cruzaltense\",\n\t\t\"Cruzeiro do Sul\",\n\t\t\"David Canabarro\",\n\t\t\"Derrubadas\",\n\t\t\"Dezesseis de Novembro\",\n\t\t\"Dilermando de Aguiar\",\n\t\t\"Dois Irmãos\",\n\t\t\"Dois Irmãos das Missões\",\n\t\t\"Dois Lajeados\",\n\t\t\"Dom Feliciano\",\n\t\t\"Dom Pedrito\",\n\t\t\"Dom Pedro de Alcântara\",\n\t\t\"Dona Francisca\",\n\t\t\"Doutor Maurício Cardoso\",\n\t\t\"Doutor Ricardo\",\n\t\t\"Eldorado do Sul\",\n\t\t\"Encantado\",\n\t\t\"Encruzilhada do Sul\",\n\t\t\"Engenho Velho\",\n\t\t\"Entre Rios do Sul\",\n\t\t\"Entre-Ijuís\",\n\t\t\"Erebango\",\n\t\t\"Erechim\",\n\t\t\"Ernestina\",\n\t\t\"Erval Grande\",\n\t\t\"Erval Seco\",\n\t\t\"Esmeralda\",\n\t\t\"Esperança do Sul\",\n\t\t\"Espumoso\",\n\t\t\"Estação\",\n\t\t\"Estância Velha\",\n\t\t\"Esteio\",\n\t\t\"Estrela\",\n\t\t\"Estrela Velha\",\n\t\t\"Eugênio de Castro\",\n\t\t\"Fagundes Varela\",\n\t\t\"Farroupilha\",\n\t\t\"Faxinal do Soturno\",\n\t\t\"Faxinalzinho\",\n\t\t\"Fazenda Vilanova\",\n\t\t\"Feliz\",\n\t\t\"Flores da Cunha\",\n\t\t\"Floriano Peixoto\",\n\t\t\"Fontoura Xavier\",\n\t\t\"Formigueiro\",\n\t\t\"Forquetinha\",\n\t\t\"Fortaleza dos Valos\",\n\t\t\"Frederico Westphalen\",\n\t\t\"Garibaldi\",\n\t\t\"Garruchos\",\n\t\t\"Gaurama\",\n\t\t\"General Câmara\",\n\t\t\"Gentil\",\n\t\t\"Getúlio Vargas\",\n\t\t\"Giruá\",\n\t\t\"Glorinha\",\n\t\t\"Gramado\",\n\t\t\"Gramado dos Loureiros\",\n\t\t\"Gramado Xavier\",\n\t\t\"Gravataí\",\n\t\t\"Guabiju\",\n\t\t\"Guaíba\",\n\t\t\"Guaporé\",\n\t\t\"Guarani das Missões\",\n\t\t\"Harmonia\",\n\t\t\"Herval\",\n\t\t\"Herveiras\",\n\t\t\"Horizontina\",\n\t\t\"Hulha Negra\",\n\t\t\"Humaitá\",\n\t\t\"Ibarama\",\n\t\t\"Ibiaçá\",\n\t\t\"Ibiraiaras\",\n\t\t\"Ibirapuitã\",\n\t\t\"Ibirubá\",\n\t\t\"Igrejinha\",\n\t\t\"Ijuí\",\n\t\t\"Ilópolis\",\n\t\t\"Imbé\",\n\t\t\"Imigrante\",\n\t\t\"Independência\",\n\t\t\"Inhacorá\",\n\t\t\"Ipê\",\n\t\t\"Ipiranga do Sul\",\n\t\t\"Iraí\",\n\t\t\"Itaara\",\n\t\t\"Itacurubi\",\n\t\t\"Itapuca\",\n\t\t\"Itaqui\",\n\t\t\"Itati\",\n\t\t\"Itatiba do Sul\",\n\t\t\"Ivorá\",\n\t\t\"Ivoti\",\n\t\t\"Jaboticaba\",\n\t\t\"Jacuizinho\",\n\t\t\"Jacutinga\",\n\t\t\"Jaguarão\",\n\t\t\"Jaguari\",\n\t\t\"Jaquirana\",\n\t\t\"Jari\",\n\t\t\"Jóia\",\n\t\t\"Júlio de Castilhos\",\n\t\t\"Lagoa Bonita do Sul\",\n\t\t\"Lagoa dos Três Cantos\",\n\t\t\"Lagoa Vermelha\",\n\t\t\"Lagoão\",\n\t\t\"Lajeado\",\n\t\t\"Lajeado do Bugre\",\n\t\t\"Lavras do Sul\",\n\t\t\"Liberato Salzano\",\n\t\t\"Lindolfo Collor\",\n\t\t\"Linha Nova\",\n\t\t\"Maçambará\",\n\t\t\"Machadinho\",\n\t\t\"Mampituba\",\n\t\t\"Manoel Viana\",\n\t\t\"Maquiné\",\n\t\t\"Maratá\",\n\t\t\"Marau\",\n\t\t\"Marcelino Ramos\",\n\t\t\"Mariana Pimentel\",\n\t\t\"Mariano Moro\",\n\t\t\"Marques de Souza\",\n\t\t\"Mata\",\n\t\t\"Mato Castelhano\",\n\t\t\"Mato Leitão\",\n\t\t\"Mato Queimado\",\n\t\t\"Maximiliano de Almeida\",\n\t\t\"Minas do Leão\",\n\t\t\"Miraguaí\",\n\t\t\"Montauri\",\n\t\t\"Monte Alegre dos Campos\",\n\t\t\"Monte Belo do Sul\",\n\t\t\"Montenegro\",\n\t\t\"Mormaço\",\n\t\t\"Morrinhos do Sul\",\n\t\t\"Morro Redondo\",\n\t\t\"Morro Reuter\",\n\t\t\"Mostardas\",\n\t\t\"Muçum\",\n\t\t\"Muitos Capões\",\n\t\t\"Muliterno\",\n\t\t\"Não-Me-Toque\",\n\t\t\"Nicolau Vergueiro\",\n\t\t\"Nonoai\",\n\t\t\"Nova Alvorada\",\n\t\t\"Nova Araçá\",\n\t\t\"Nova Bassano\",\n\t\t\"Nova Boa Vista\",\n\t\t\"Nova Bréscia\",\n\t\t\"Nova Candelária\",\n\t\t\"Nova Esperança do Sul\",\n\t\t\"Nova Hartz\",\n\t\t\"Nova Pádua\",\n\t\t\"Nova Palma\",\n\t\t\"Nova Petrópolis\",\n\t\t\"Nova Prata\",\n\t\t\"Nova Ramada\",\n\t\t\"Nova Roma do Sul\",\n\t\t\"Nova Santa Rita\",\n\t\t\"Novo Barreiro\",\n\t\t\"Novo Cabrais\",\n\t\t\"Novo Hamburgo\",\n\t\t\"Novo Machado\",\n\t\t\"Novo Tiradentes\",\n\t\t\"Novo Xingu\",\n\t\t\"Osório\",\n\t\t\"Paim Filho\",\n\t\t\"Palmares do Sul\",\n\t\t\"Palmeira das Missões\",\n\t\t\"Palmitinho\",\n\t\t\"Panambi\",\n\t\t\"Pantano Grande\",\n\t\t\"Paraí\",\n\t\t\"Paraíso do Sul\",\n\t\t\"Pareci Novo\",\n\t\t\"Parobé\",\n\t\t\"Passa Sete\",\n\t\t\"Passo do Sobrado\",\n\t\t\"Passo Fundo\",\n\t\t\"Paulo Bento\",\n\t\t\"Paverama\",\n\t\t\"Pedras Altas\",\n\t\t\"Pedro Osório\",\n\t\t\"Pejuçara\",\n\t\t\"Pelotas\",\n\t\t\"Picada Café\",\n\t\t\"Pinhal\",\n\t\t\"Pinhal da Serra\",\n\t\t\"Pinhal Grande\",\n\t\t\"Pinheirinho do Vale\",\n\t\t\"Pinheiro Machado\",\n\t\t\"Pinto Bandeira\",\n\t\t\"Pirapó\",\n\t\t\"Piratini\",\n\t\t\"Planalto\",\n\t\t\"Poço das Antas\",\n\t\t\"Pontão\",\n\t\t\"Ponte Preta\",\n\t\t\"Portão\",\n\t\t\"Porto Alegre\",\n\t\t\"Porto Lucena\",\n\t\t\"Porto Mauá\",\n\t\t\"Porto Vera Cruz\",\n\t\t\"Porto Xavier\",\n\t\t\"Pouso Novo\",\n\t\t\"Presidente Lucena\",\n\t\t\"Progresso\",\n\t\t\"Protásio Alves\",\n\t\t\"Putinga\",\n\t\t\"Quaraí\",\n\t\t\"Quatro Irmãos\",\n\t\t\"Quevedos\",\n\t\t\"Quinze de Novembro\",\n\t\t\"Redentora\",\n\t\t\"Relvado\",\n\t\t\"Restinga Sêca\",\n\t\t\"Rio dos Índios\",\n\t\t\"Rio Grande\",\n\t\t\"Rio Pardo\",\n\t\t\"Riozinho\",\n\t\t\"Roca Sales\",\n\t\t\"Rodeio Bonito\",\n\t\t\"Rolador\",\n\t\t\"Rolante\",\n\t\t\"Ronda Alta\",\n\t\t\"Rondinha\",\n\t\t\"Roque Gonzales\",\n\t\t\"Rosário do Sul\",\n\t\t\"Sagrada Família\",\n\t\t\"Saldanha Marinho\",\n\t\t\"Salto do Jacuí\",\n\t\t\"Salvador das Missões\",\n\t\t\"Salvador do Sul\",\n\t\t\"Sananduva\",\n\t\t\"Sant'Ana do Livramento\",\n\t\t\"Santa Bárbara do Sul\",\n\t\t\"Santa Cecília do Sul\",\n\t\t\"Santa Clara do Sul\",\n\t\t\"Santa Cruz do Sul\",\n\t\t\"Santa Margarida do Sul\",\n\t\t\"Santa Maria\",\n\t\t\"Santa Maria do Herval\",\n\t\t\"Santa Rosa\",\n\t\t\"Santa Tereza\",\n\t\t\"Santa Vitória do Palmar\",\n\t\t\"Santana da Boa Vista\",\n\t\t\"Santiago\",\n\t\t\"Santo Ângelo\",\n\t\t\"Santo Antônio da Patrulha\",\n\t\t\"Santo Antônio das Missões\",\n\t\t\"Santo Antônio do Palma\",\n\t\t\"Santo Antônio do Planalto\",\n\t\t\"Santo Augusto\",\n\t\t\"Santo Cristo\",\n\t\t\"Santo Expedito do Sul\",\n\t\t\"São Borja\",\n\t\t\"São Domingos do Sul\",\n\t\t\"São Francisco de Assis\",\n\t\t\"São Francisco de Paula\",\n\t\t\"São Gabriel\",\n\t\t\"São Jerônimo\",\n\t\t\"São João da Urtiga\",\n\t\t\"São João do Polêsine\",\n\t\t\"São Jorge\",\n\t\t\"São José das Missões\",\n\t\t\"São José do Herval\",\n\t\t\"São José do Hortêncio\",\n\t\t\"São José do Inhacorá\",\n\t\t\"São José do Norte\",\n\t\t\"São José do Ouro\",\n\t\t\"São José do Sul\",\n\t\t\"São José dos Ausentes\",\n\t\t\"São Leopoldo\",\n\t\t\"São Lourenço do Sul\",\n\t\t\"São Luiz Gonzaga\",\n\t\t\"São Marcos\",\n\t\t\"São Martinho\",\n\t\t\"São Martinho da Serra\",\n\t\t\"São Miguel das Missões\",\n\t\t\"São Nicolau\",\n\t\t\"São Paulo das Missões\",\n\t\t\"São Pedro da Serra\",\n\t\t\"São Pedro das Missões\",\n\t\t\"São Pedro do Butiá\",\n\t\t\"São Pedro do Sul\",\n\t\t\"São Sebastião do Caí\",\n\t\t\"São Sepé\",\n\t\t\"São Valentim\",\n\t\t\"São Valentim do Sul\",\n\t\t\"São Valério do Sul\",\n\t\t\"São Vendelino\",\n\t\t\"São Vicente do Sul\",\n\t\t\"Sapiranga\",\n\t\t\"Sapucaia do Sul\",\n\t\t\"Sarandi\",\n\t\t\"Seberi\",\n\t\t\"Sede Nova\",\n\t\t\"Segredo\",\n\t\t\"Selbach\",\n\t\t\"Senador Salgado Filho\",\n\t\t\"Sentinela do Sul\",\n\t\t\"Serafina Corrêa\",\n\t\t\"Sério\",\n\t\t\"Sertão\",\n\t\t\"Sertão Santana\",\n\t\t\"Sete de Setembro\",\n\t\t\"Severiano de Almeida\",\n\t\t\"Silveira Martins\",\n\t\t\"Sinimbu\",\n\t\t\"Sobradinho\",\n\t\t\"Soledade\",\n\t\t\"Tabaí\",\n\t\t\"Tapejara\",\n\t\t\"Tapera\",\n\t\t\"Tapes\",\n\t\t\"Taquara\",\n\t\t\"Taquari\",\n\t\t\"Taquaruçu do Sul\",\n\t\t\"Tavares\",\n\t\t\"Tenente Portela\",\n\t\t\"Terra de Areia\",\n\t\t\"Teutônia\",\n\t\t\"Tio Hugo\",\n\t\t\"Tiradentes do Sul\",\n\t\t\"Toropi\",\n\t\t\"Torres\",\n\t\t\"Tramandaí\",\n\t\t\"Travesseiro\",\n\t\t\"Três Arroios\",\n\t\t\"Três Cachoeiras\",\n\t\t\"Três Coroas\",\n\t\t\"Três de Maio\",\n\t\t\"Três Forquilhas\",\n\t\t\"Três Palmeiras\",\n\t\t\"Três Passos\",\n\t\t\"Trindade do Sul\",\n\t\t\"Triunfo\",\n\t\t\"Tucunduva\",\n\t\t\"Tunas\",\n\t\t\"Tupanci do Sul\",\n\t\t\"Tupanciretã\",\n\t\t\"Tupandi\",\n\t\t\"Tuparendi\",\n\t\t\"Turuçu\",\n\t\t\"Ubiretama\",\n\t\t\"União da Serra\",\n\t\t\"Unistalda\",\n\t\t\"Uruguaiana\",\n\t\t\"Vacaria\",\n\t\t\"Vale do Sol\",\n\t\t\"Vale Real\",\n\t\t\"Vale Verde\",\n\t\t\"Vanini\",\n\t\t\"Venâncio Aires\",\n\t\t\"Vera Cruz\",\n\t\t\"Veranópolis\",\n\t\t\"Vespasiano Corrêa\",\n\t\t\"Viadutos\",\n\t\t\"Viamão\",\n\t\t\"Vicente Dutra\",\n\t\t\"Victor Graeff\",\n\t\t\"Vila Flores\",\n\t\t\"Vila Lângaro\",\n\t\t\"Vila Maria\",\n\t\t\"Vila Nova do Sul\",\n\t\t\"Vista Alegre\",\n\t\t\"Vista Alegre do Prata\",\n\t\t\"Vista Gaúcha\",\n\t\t\"Vitória das Missões\",\n\t\t\"Westfália\",\n\t\t\"Xangri-lá\",\n\t],\n\tSC: [\n\t\t\"Abdon Batista\",\n\t\t\"Abelardo Luz\",\n\t\t\"Agrolândia\",\n\t\t\"Agronômica\",\n\t\t\"Água Doce\",\n\t\t\"Águas de Chapecó\",\n\t\t\"Águas Frias\",\n\t\t\"Águas Mornas\",\n\t\t\"Alfredo Wagner\",\n\t\t\"Alto Bela Vista\",\n\t\t\"Anchieta\",\n\t\t\"Angelina\",\n\t\t\"Anita Garibaldi\",\n\t\t\"Anitápolis\",\n\t\t\"Antônio Carlos\",\n\t\t\"Apiúna\",\n\t\t\"Arabutã\",\n\t\t\"Araquari\",\n\t\t\"Araranguá\",\n\t\t\"Armazém\",\n\t\t\"Arroio Trinta\",\n\t\t\"Arvoredo\",\n\t\t\"Ascurra\",\n\t\t\"Atalanta\",\n\t\t\"Aurora\",\n\t\t\"Balneário Arroio do Silva\",\n\t\t\"Balneário Barra do Sul\",\n\t\t\"Balneário Camboriú\",\n\t\t\"Balneário Gaivota\",\n\t\t\"Balneário Piçarras\",\n\t\t\"Balneário Rincão\",\n\t\t\"Bandeirante\",\n\t\t\"Barra Bonita\",\n\t\t\"Barra Velha\",\n\t\t\"Bela Vista do Toldo\",\n\t\t\"Belmonte\",\n\t\t\"Benedito Novo\",\n\t\t\"Biguaçu\",\n\t\t\"Blumenau\",\n\t\t\"Bocaina do Sul\",\n\t\t\"Bom Jardim da Serra\",\n\t\t\"Bom Jesus\",\n\t\t\"Bom Jesus do Oeste\",\n\t\t\"Bom Retiro\",\n\t\t\"Bombinhas\",\n\t\t\"Botuverá\",\n\t\t\"Braço do Norte\",\n\t\t\"Braço do Trombudo\",\n\t\t\"Brunópolis\",\n\t\t\"Brusque\",\n\t\t\"Caçador\",\n\t\t\"Caibi\",\n\t\t\"Calmon\",\n\t\t\"Camboriú\",\n\t\t\"Campo Alegre\",\n\t\t\"Campo Belo do Sul\",\n\t\t\"Campo Erê\",\n\t\t\"Campos Novos\",\n\t\t\"Canelinha\",\n\t\t\"Canoinhas\",\n\t\t\"Capão Alto\",\n\t\t\"Capinzal\",\n\t\t\"Capivari de Baixo\",\n\t\t\"Catanduvas\",\n\t\t\"Caxambu do Sul\",\n\t\t\"Celso Ramos\",\n\t\t\"Cerro Negro\",\n\t\t\"Chapadão do Lageado\",\n\t\t\"Chapecó\",\n\t\t\"Cocal do Sul\",\n\t\t\"Concórdia\",\n\t\t\"Cordilheira Alta\",\n\t\t\"Coronel Freitas\",\n\t\t\"Coronel Martins\",\n\t\t\"Correia Pinto\",\n\t\t\"Corupá\",\n\t\t\"Criciúma\",\n\t\t\"Cunha Porã\",\n\t\t\"Cunhataí\",\n\t\t\"Curitibanos\",\n\t\t\"Descanso\",\n\t\t\"Dionísio Cerqueira\",\n\t\t\"Dona Emma\",\n\t\t\"Doutor Pedrinho\",\n\t\t\"Entre Rios\",\n\t\t\"Ermo\",\n\t\t\"Erval Velho\",\n\t\t\"Faxinal dos Guedes\",\n\t\t\"Flor do Sertão\",\n\t\t\"Florianópolis\",\n\t\t\"Formosa do Sul\",\n\t\t\"Forquilhinha\",\n\t\t\"Fraiburgo\",\n\t\t\"Frei Rogério\",\n\t\t\"Galvão\",\n\t\t\"Garopaba\",\n\t\t\"Garuva\",\n\t\t\"Gaspar\",\n\t\t\"Governador Celso Ramos\",\n\t\t\"Grão-Pará\",\n\t\t\"Gravatal\",\n\t\t\"Guabiruba\",\n\t\t\"Guaraciaba\",\n\t\t\"Guaramirim\",\n\t\t\"Guarujá do Sul\",\n\t\t\"Guatambú\",\n\t\t\"Herval d'Oeste\",\n\t\t\"Ibiam\",\n\t\t\"Ibicaré\",\n\t\t\"Ibirama\",\n\t\t\"Içara\",\n\t\t\"Ilhota\",\n\t\t\"Imaruí\",\n\t\t\"Imbituba\",\n\t\t\"Imbuia\",\n\t\t\"Indaial\",\n\t\t\"Iomerê\",\n\t\t\"Ipira\",\n\t\t\"Iporã do Oeste\",\n\t\t\"Ipuaçu\",\n\t\t\"Ipumirim\",\n\t\t\"Iraceminha\",\n\t\t\"Irani\",\n\t\t\"Irati\",\n\t\t\"Irineópolis\",\n\t\t\"Itá\",\n\t\t\"Itaiópolis\",\n\t\t\"Itajaí\",\n\t\t\"Itapema\",\n\t\t\"Itapiranga\",\n\t\t\"Itapoá\",\n\t\t\"Ituporanga\",\n\t\t\"Jaborá\",\n\t\t\"Jacinto Machado\",\n\t\t\"Jaguaruna\",\n\t\t\"Jaraguá do Sul\",\n\t\t\"Jardinópolis\",\n\t\t\"Joaçaba\",\n\t\t\"Joinville\",\n\t\t\"José Boiteux\",\n\t\t\"Jupiá\",\n\t\t\"Lacerdópolis\",\n\t\t\"Lages\",\n\t\t\"Laguna\",\n\t\t\"Lajeado Grande\",\n\t\t\"Laurentino\",\n\t\t\"Lauro Müller\",\n\t\t\"Lebon Régis\",\n\t\t\"Leoberto Leal\",\n\t\t\"Lindóia do Sul\",\n\t\t\"Lontras\",\n\t\t\"Luiz Alves\",\n\t\t\"Luzerna\",\n\t\t\"Macieira\",\n\t\t\"Mafra\",\n\t\t\"Major Gercino\",\n\t\t\"Major Vieira\",\n\t\t\"Maracajá\",\n\t\t\"Maravilha\",\n\t\t\"Marema\",\n\t\t\"Massaranduba\",\n\t\t\"Matos Costa\",\n\t\t\"Meleiro\",\n\t\t\"Mirim Doce\",\n\t\t\"Modelo\",\n\t\t\"Mondaí\",\n\t\t\"Monte Carlo\",\n\t\t\"Monte Castelo\",\n\t\t\"Morro da Fumaça\",\n\t\t\"Morro Grande\",\n\t\t\"Navegantes\",\n\t\t\"Nova Erechim\",\n\t\t\"Nova Itaberaba\",\n\t\t\"Nova Trento\",\n\t\t\"Nova Veneza\",\n\t\t\"Novo Horizonte\",\n\t\t\"Orleans\",\n\t\t\"Otacílio Costa\",\n\t\t\"Ouro\",\n\t\t\"Ouro Verde\",\n\t\t\"Paial\",\n\t\t\"Painel\",\n\t\t\"Palhoça\",\n\t\t\"Palma Sola\",\n\t\t\"Palmeira\",\n\t\t\"Palmitos\",\n\t\t\"Papanduva\",\n\t\t\"Paraíso\",\n\t\t\"Passo de Torres\",\n\t\t\"Passos Maia\",\n\t\t\"Paulo Lopes\",\n\t\t\"Pedras Grandes\",\n\t\t\"Penha\",\n\t\t\"Peritiba\",\n\t\t\"Pescaria Brava\",\n\t\t\"Petrolândia\",\n\t\t\"Pinhalzinho\",\n\t\t\"Pinheiro Preto\",\n\t\t\"Piratuba\",\n\t\t\"Planalto Alegre\",\n\t\t\"Pomerode\",\n\t\t\"Ponte Alta\",\n\t\t\"Ponte Alta do Norte\",\n\t\t\"Ponte Serrada\",\n\t\t\"Porto Belo\",\n\t\t\"Porto União\",\n\t\t\"Pouso Redondo\",\n\t\t\"Praia Grande\",\n\t\t\"Presidente Castello Branco\",\n\t\t\"Presidente Getúlio\",\n\t\t\"Presidente Nereu\",\n\t\t\"Princesa\",\n\t\t\"Quilombo\",\n\t\t\"Rancho Queimado\",\n\t\t\"Rio das Antas\",\n\t\t\"Rio do Campo\",\n\t\t\"Rio do Oeste\",\n\t\t\"Rio do Sul\",\n\t\t\"Rio dos Cedros\",\n\t\t\"Rio Fortuna\",\n\t\t\"Rio Negrinho\",\n\t\t\"Rio Rufino\",\n\t\t\"Riqueza\",\n\t\t\"Rodeio\",\n\t\t\"Romelândia\",\n\t\t\"Salete\",\n\t\t\"Saltinho\",\n\t\t\"Salto Veloso\",\n\t\t\"Sangão\",\n\t\t\"Santa Cecília\",\n\t\t\"Santa Helena\",\n\t\t\"Santa Rosa de Lima\",\n\t\t\"Santa Rosa do Sul\",\n\t\t\"Santa Terezinha\",\n\t\t\"Santa Terezinha do Progresso\",\n\t\t\"Santiago do Sul\",\n\t\t\"Santo Amaro da Imperatriz\",\n\t\t\"São Bento do Sul\",\n\t\t\"São Bernardino\",\n\t\t\"São Bonifácio\",\n\t\t\"São Carlos\",\n\t\t\"São Cristóvão do Sul\",\n\t\t\"São Domingos\",\n\t\t\"São Francisco do Sul\",\n\t\t\"São João Batista\",\n\t\t\"São João do Itaperiú\",\n\t\t\"São João do Oeste\",\n\t\t\"São João do Sul\",\n\t\t\"São Joaquim\",\n\t\t\"São José\",\n\t\t\"São José do Cedro\",\n\t\t\"São José do Cerrito\",\n\t\t\"São Lourenço do Oeste\",\n\t\t\"São Ludgero\",\n\t\t\"São Martinho\",\n\t\t\"São Miguel da Boa Vista\",\n\t\t\"São Miguel do Oeste\",\n\t\t\"São Pedro de Alcântara\",\n\t\t\"Saudades\",\n\t\t\"Schroeder\",\n\t\t\"Seara\",\n\t\t\"Serra Alta\",\n\t\t\"Siderópolis\",\n\t\t\"Sombrio\",\n\t\t\"Sul Brasil\",\n\t\t\"Taió\",\n\t\t\"Tangará\",\n\t\t\"Tigrinhos\",\n\t\t\"Tijucas\",\n\t\t\"Timbé do Sul\",\n\t\t\"Timbó\",\n\t\t\"Timbó Grande\",\n\t\t\"Três Barras\",\n\t\t\"Treviso\",\n\t\t\"Treze de Maio\",\n\t\t\"Treze Tílias\",\n\t\t\"Trombudo Central\",\n\t\t\"Tubarão\",\n\t\t\"Tunápolis\",\n\t\t\"Turvo\",\n\t\t\"União do Oeste\",\n\t\t\"Urubici\",\n\t\t\"Urupema\",\n\t\t\"Urussanga\",\n\t\t\"Vargeão\",\n\t\t\"Vargem\",\n\t\t\"Vargem Bonita\",\n\t\t\"Vidal Ramos\",\n\t\t\"Videira\",\n\t\t\"Vitor Meireles\",\n\t\t\"Witmarsum\",\n\t\t\"Xanxerê\",\n\t\t\"Xavantina\",\n\t\t\"Xaxim\",\n\t\t\"Zortéa\",\n\t],\n\tSE: [\n\t\t\"Amparo do São Francisco\",\n\t\t\"Aquidabã\",\n\t\t\"Aracaju\",\n\t\t\"Arauá\",\n\t\t\"Areia Branca\",\n\t\t\"Barra dos Coqueiros\",\n\t\t\"Boquim\",\n\t\t\"Brejo Grande\",\n\t\t\"Campo do Brito\",\n\t\t\"Canhoba\",\n\t\t\"Canindé de São Francisco\",\n\t\t\"Capela\",\n\t\t\"Carira\",\n\t\t\"Carmópolis\",\n\t\t\"Cedro de São João\",\n\t\t\"Cristinápolis\",\n\t\t\"Cumbe\",\n\t\t\"Divina Pastora\",\n\t\t\"Estância\",\n\t\t\"Feira Nova\",\n\t\t\"Frei Paulo\",\n\t\t\"Gararu\",\n\t\t\"General Maynard\",\n\t\t\"Graccho Cardoso\",\n\t\t\"Ilha das Flores\",\n\t\t\"Indiaroba\",\n\t\t\"Itabaiana\",\n\t\t\"Itabaianinha\",\n\t\t\"Itabi\",\n\t\t\"Itaporanga d'Ajuda\",\n\t\t\"Japaratuba\",\n\t\t\"Japoatã\",\n\t\t\"Lagarto\",\n\t\t\"Laranjeiras\",\n\t\t\"Macambira\",\n\t\t\"Malhada dos Bois\",\n\t\t\"Malhador\",\n\t\t\"Maruim\",\n\t\t\"Moita Bonita\",\n\t\t\"Monte Alegre de Sergipe\",\n\t\t\"Muribeca\",\n\t\t\"Neópolis\",\n\t\t\"Nossa Senhora Aparecida\",\n\t\t\"Nossa Senhora da Glória\",\n\t\t\"Nossa Senhora das Dores\",\n\t\t\"Nossa Senhora de Lourdes\",\n\t\t\"Nossa Senhora do Socorro\",\n\t\t\"Pacatuba\",\n\t\t\"Pedra Mole\",\n\t\t\"Pedrinhas\",\n\t\t\"Pinhão\",\n\t\t\"Pirambu\",\n\t\t\"Poço Redondo\",\n\t\t\"Poço Verde\",\n\t\t\"Porto da Folha\",\n\t\t\"Propriá\",\n\t\t\"Riachão do Dantas\",\n\t\t\"Riachuelo\",\n\t\t\"Ribeirópolis\",\n\t\t\"Rosário do Catete\",\n\t\t\"Salgado\",\n\t\t\"Santa Luzia do Itanhy\",\n\t\t\"Santa Rosa de Lima\",\n\t\t\"Santana do São Francisco\",\n\t\t\"Santo Amaro das Brotas\",\n\t\t\"São Cristóvão\",\n\t\t\"São Domingos\",\n\t\t\"São Francisco\",\n\t\t\"São Miguel do Aleixo\",\n\t\t\"Simão Dias\",\n\t\t\"Siriri\",\n\t\t\"Telha\",\n\t\t\"Tobias Barreto\",\n\t\t\"Tomar do Geru\",\n\t\t\"Umbaúba\",\n\t],\n\tSP: [\n\t\t\"Adamantina\",\n\t\t\"Adolfo\",\n\t\t\"Aguaí\",\n\t\t\"Águas da Prata\",\n\t\t\"Águas de Lindóia\",\n\t\t\"Águas de Santa Bárbara\",\n\t\t\"Águas de São Pedro\",\n\t\t\"Agudos\",\n\t\t\"Alambari\",\n\t\t\"Alfredo Marcondes\",\n\t\t\"Altair\",\n\t\t\"Altinópolis\",\n\t\t\"Alto Alegre\",\n\t\t\"Alumínio\",\n\t\t\"Álvares Florence\",\n\t\t\"Álvares Machado\",\n\t\t\"Álvaro de Carvalho\",\n\t\t\"Alvinlândia\",\n\t\t\"Americana\",\n\t\t\"Américo Brasiliense\",\n\t\t\"Américo de Campos\",\n\t\t\"Amparo\",\n\t\t\"Analândia\",\n\t\t\"Andradina\",\n\t\t\"Angatuba\",\n\t\t\"Anhembi\",\n\t\t\"Anhumas\",\n\t\t\"Aparecida\",\n\t\t\"Aparecida d'Oeste\",\n\t\t\"Apiaí\",\n\t\t\"Araçariguama\",\n\t\t\"Araçatuba\",\n\t\t\"Araçoiaba da Serra\",\n\t\t\"Aramina\",\n\t\t\"Arandu\",\n\t\t\"Arapeí\",\n\t\t\"Araraquara\",\n\t\t\"Araras\",\n\t\t\"Arco-Íris\",\n\t\t\"Arealva\",\n\t\t\"Areias\",\n\t\t\"Areiópolis\",\n\t\t\"Ariranha\",\n\t\t\"Artur Nogueira\",\n\t\t\"Arujá\",\n\t\t\"Aspásia\",\n\t\t\"Assis\",\n\t\t\"Atibaia\",\n\t\t\"Auriflama\",\n\t\t\"Avaí\",\n\t\t\"Avanhandava\",\n\t\t\"Avaré\",\n\t\t\"Bady Bassitt\",\n\t\t\"Balbinos\",\n\t\t\"Bálsamo\",\n\t\t\"Bananal\",\n\t\t\"Barão de Antonina\",\n\t\t\"Barbosa\",\n\t\t\"Bariri\",\n\t\t\"Barra Bonita\",\n\t\t\"Barra do Chapéu\",\n\t\t\"Barra do Turvo\",\n\t\t\"Barretos\",\n\t\t\"Barrinha\",\n\t\t\"Barueri\",\n\t\t\"Bastos\",\n\t\t\"Batatais\",\n\t\t\"Bauru\",\n\t\t\"Bebedouro\",\n\t\t\"Bento de Abreu\",\n\t\t\"Bernardino de Campos\",\n\t\t\"Bertioga\",\n\t\t\"Bilac\",\n\t\t\"Birigui\",\n\t\t\"Biritiba Mirim\",\n\t\t\"Boa Esperança do Sul\",\n\t\t\"Bocaina\",\n\t\t\"Bofete\",\n\t\t\"Boituva\",\n\t\t\"Bom Jesus dos Perdões\",\n\t\t\"Bom Sucesso de Itararé\",\n\t\t\"Borá\",\n\t\t\"Boracéia\",\n\t\t\"Borborema\",\n\t\t\"Borebi\",\n\t\t\"Botucatu\",\n\t\t\"Bragança Paulista\",\n\t\t\"Braúna\",\n\t\t\"Brejo Alegre\",\n\t\t\"Brodowski\",\n\t\t\"Brotas\",\n\t\t\"Buri\",\n\t\t\"Buritama\",\n\t\t\"Buritizal\",\n\t\t\"Cabrália Paulista\",\n\t\t\"Cabreúva\",\n\t\t\"Caçapava\",\n\t\t\"Cachoeira Paulista\",\n\t\t\"Caconde\",\n\t\t\"Cafelândia\",\n\t\t\"Caiabu\",\n\t\t\"Caieiras\",\n\t\t\"Caiuá\",\n\t\t\"Cajamar\",\n\t\t\"Cajati\",\n\t\t\"Cajobi\",\n\t\t\"Cajuru\",\n\t\t\"Campina do Monte Alegre\",\n\t\t\"Campinas\",\n\t\t\"Campo Limpo Paulista\",\n\t\t\"Campos do Jordão\",\n\t\t\"Campos Novos Paulista\",\n\t\t\"Cananéia\",\n\t\t\"Canas\",\n\t\t\"Cândido Mota\",\n\t\t\"Cândido Rodrigues\",\n\t\t\"Canitar\",\n\t\t\"Capão Bonito\",\n\t\t\"Capela do Alto\",\n\t\t\"Capivari\",\n\t\t\"Caraguatatuba\",\n\t\t\"Carapicuíba\",\n\t\t\"Cardoso\",\n\t\t\"Casa Branca\",\n\t\t\"Cássia dos Coqueiros\",\n\t\t\"Castilho\",\n\t\t\"Catanduva\",\n\t\t\"Catiguá\",\n\t\t\"Cedral\",\n\t\t\"Cerqueira César\",\n\t\t\"Cerquilho\",\n\t\t\"Cesário Lange\",\n\t\t\"Charqueada\",\n\t\t\"Chavantes\",\n\t\t\"Clementina\",\n\t\t\"Colina\",\n\t\t\"Colômbia\",\n\t\t\"Conchal\",\n\t\t\"Conchas\",\n\t\t\"Cordeirópolis\",\n\t\t\"Coroados\",\n\t\t\"Coronel Macedo\",\n\t\t\"Corumbataí\",\n\t\t\"Cosmópolis\",\n\t\t\"Cosmorama\",\n\t\t\"Cotia\",\n\t\t\"Cravinhos\",\n\t\t\"Cristais Paulista\",\n\t\t\"Cruzália\",\n\t\t\"Cruzeiro\",\n\t\t\"Cubatão\",\n\t\t\"Cunha\",\n\t\t\"Descalvado\",\n\t\t\"Diadema\",\n\t\t\"Dirce Reis\",\n\t\t\"Divinolândia\",\n\t\t\"Dobrada\",\n\t\t\"Dois Córregos\",\n\t\t\"Dolcinópolis\",\n\t\t\"Dourado\",\n\t\t\"Dracena\",\n\t\t\"Duartina\",\n\t\t\"Dumont\",\n\t\t\"Echaporã\",\n\t\t\"Eldorado\",\n\t\t\"Elias Fausto\",\n\t\t\"Elisiário\",\n\t\t\"Embaúba\",\n\t\t\"Embu das Artes\",\n\t\t\"Embu-Guaçu\",\n\t\t\"Emilianópolis\",\n\t\t\"Engenheiro Coelho\",\n\t\t\"Espírito Santo do Pinhal\",\n\t\t\"Espírito Santo do Turvo\",\n\t\t\"Estiva Gerbi\",\n\t\t\"Estrela d'Oeste\",\n\t\t\"Estrela do Norte\",\n\t\t\"Euclides da Cunha Paulista\",\n\t\t\"Fartura\",\n\t\t\"Fernando Prestes\",\n\t\t\"Fernandópolis\",\n\t\t\"Fernão\",\n\t\t\"Ferraz de Vasconcelos\",\n\t\t\"Flora Rica\",\n\t\t\"Floreal\",\n\t\t\"Flórida Paulista\",\n\t\t\"Florínea\",\n\t\t\"Franca\",\n\t\t\"Francisco Morato\",\n\t\t\"Franco da Rocha\",\n\t\t\"Gabriel Monteiro\",\n\t\t\"Gália\",\n\t\t\"Garça\",\n\t\t\"Gastão Vidigal\",\n\t\t\"Gavião Peixoto\",\n\t\t\"General Salgado\",\n\t\t\"Getulina\",\n\t\t\"Glicério\",\n\t\t\"Guaiçara\",\n\t\t\"Guaimbê\",\n\t\t\"Guaíra\",\n\t\t\"Guapiaçu\",\n\t\t\"Guapiara\",\n\t\t\"Guará\",\n\t\t\"Guaraçaí\",\n\t\t\"Guaraci\",\n\t\t\"Guarani d'Oeste\",\n\t\t\"Guarantã\",\n\t\t\"Guararapes\",\n\t\t\"Guararema\",\n\t\t\"Guaratinguetá\",\n\t\t\"Guareí\",\n\t\t\"Guariba\",\n\t\t\"Guarujá\",\n\t\t\"Guarulhos\",\n\t\t\"Guatapará\",\n\t\t\"Guzolândia\",\n\t\t\"Herculândia\",\n\t\t\"Holambra\",\n\t\t\"Hortolândia\",\n\t\t\"Iacanga\",\n\t\t\"Iacri\",\n\t\t\"Iaras\",\n\t\t\"Ibaté\",\n\t\t\"Ibirá\",\n\t\t\"Ibirarema\",\n\t\t\"Ibitinga\",\n\t\t\"Ibiúna\",\n\t\t\"Icém\",\n\t\t\"Iepê\",\n\t\t\"Igaraçu do Tietê\",\n\t\t\"Igarapava\",\n\t\t\"Igaratá\",\n\t\t\"Iguape\",\n\t\t\"Ilha Comprida\",\n\t\t\"Ilha Solteira\",\n\t\t\"Ilhabela\",\n\t\t\"Indaiatuba\",\n\t\t\"Indiana\",\n\t\t\"Indiaporã\",\n\t\t\"Inúbia Paulista\",\n\t\t\"Ipaussu\",\n\t\t\"Iperó\",\n\t\t\"Ipeúna\",\n\t\t\"Ipiguá\",\n\t\t\"Iporanga\",\n\t\t\"Ipuã\",\n\t\t\"Iracemápolis\",\n\t\t\"Irapuã\",\n\t\t\"Irapuru\",\n\t\t\"Itaberá\",\n\t\t\"Itaí\",\n\t\t\"Itajobi\",\n\t\t\"Itaju\",\n\t\t\"Itanhaém\",\n\t\t\"Itaoca\",\n\t\t\"Itapecerica da Serra\",\n\t\t\"Itapetininga\",\n\t\t\"Itapeva\",\n\t\t\"Itapevi\",\n\t\t\"Itapira\",\n\t\t\"Itapirapuã Paulista\",\n\t\t\"Itápolis\",\n\t\t\"Itaporanga\",\n\t\t\"Itapuí\",\n\t\t\"Itapura\",\n\t\t\"Itaquaquecetuba\",\n\t\t\"Itararé\",\n\t\t\"Itariri\",\n\t\t\"Itatiba\",\n\t\t\"Itatinga\",\n\t\t\"Itirapina\",\n\t\t\"Itirapuã\",\n\t\t\"Itobi\",\n\t\t\"Itu\",\n\t\t\"Itupeva\",\n\t\t\"Ituverava\",\n\t\t\"Jaborandi\",\n\t\t\"Jaboticabal\",\n\t\t\"Jacareí\",\n\t\t\"Jaci\",\n\t\t\"Jacupiranga\",\n\t\t\"Jaguariúna\",\n\t\t\"Jales\",\n\t\t\"Jambeiro\",\n\t\t\"Jandira\",\n\t\t\"Jardinópolis\",\n\t\t\"Jarinu\",\n\t\t\"Jaú\",\n\t\t\"Jeriquara\",\n\t\t\"Joanópolis\",\n\t\t\"João Ramalho\",\n\t\t\"José Bonifácio\",\n\t\t\"Júlio Mesquita\",\n\t\t\"Jumirim\",\n\t\t\"Jundiaí\",\n\t\t\"Junqueirópolis\",\n\t\t\"Juquiá\",\n\t\t\"Juquitiba\",\n\t\t\"Lagoinha\",\n\t\t\"Laranjal Paulista\",\n\t\t\"Lavínia\",\n\t\t\"Lavrinhas\",\n\t\t\"Leme\",\n\t\t\"Lençóis Paulista\",\n\t\t\"Limeira\",\n\t\t\"Lindóia\",\n\t\t\"Lins\",\n\t\t\"Lorena\",\n\t\t\"Lourdes\",\n\t\t\"Louveira\",\n\t\t\"Lucélia\",\n\t\t\"Lucianópolis\",\n\t\t\"Luís Antônio\",\n\t\t\"Luiziânia\",\n\t\t\"Lupércio\",\n\t\t\"Lutécia\",\n\t\t\"Macatuba\",\n\t\t\"Macaubal\",\n\t\t\"Macedônia\",\n\t\t\"Magda\",\n\t\t\"Mairinque\",\n\t\t\"Mairiporã\",\n\t\t\"Manduri\",\n\t\t\"Marabá Paulista\",\n\t\t\"Maracaí\",\n\t\t\"Marapoama\",\n\t\t\"Mariápolis\",\n\t\t\"Marília\",\n\t\t\"Marinópolis\",\n\t\t\"Martinópolis\",\n\t\t\"Matão\",\n\t\t\"Mauá\",\n\t\t\"Mendonça\",\n\t\t\"Meridiano\",\n\t\t\"Mesópolis\",\n\t\t\"Miguelópolis\",\n\t\t\"Mineiros do Tietê\",\n\t\t\"Mira Estrela\",\n\t\t\"Miracatu\",\n\t\t\"Mirandópolis\",\n\t\t\"Mirante do Paranapanema\",\n\t\t\"Mirassol\",\n\t\t\"Mirassolândia\",\n\t\t\"Mococa\",\n\t\t\"Mogi das Cruzes\",\n\t\t\"Mogi Guaçu\",\n\t\t\"Mogi Mirim\",\n\t\t\"Mombuca\",\n\t\t\"Monções\",\n\t\t\"Mongaguá\",\n\t\t\"Monte Alegre do Sul\",\n\t\t\"Monte Alto\",\n\t\t\"Monte Aprazível\",\n\t\t\"Monte Azul Paulista\",\n\t\t\"Monte Castelo\",\n\t\t\"Monte Mor\",\n\t\t\"Monteiro Lobato\",\n\t\t\"Morro Agudo\",\n\t\t\"Morungaba\",\n\t\t\"Motuca\",\n\t\t\"Murutinga do Sul\",\n\t\t\"Nantes\",\n\t\t\"Narandiba\",\n\t\t\"Natividade da Serra\",\n\t\t\"Nazaré Paulista\",\n\t\t\"Neves Paulista\",\n\t\t\"Nhandeara\",\n\t\t\"Nipoã\",\n\t\t\"Nova Aliança\",\n\t\t\"Nova Campina\",\n\t\t\"Nova Canaã Paulista\",\n\t\t\"Nova Castilho\",\n\t\t\"Nova Europa\",\n\t\t\"Nova Granada\",\n\t\t\"Nova Guataporanga\",\n\t\t\"Nova Independência\",\n\t\t\"Nova Luzitânia\",\n\t\t\"Nova Odessa\",\n\t\t\"Novais\",\n\t\t\"Novo Horizonte\",\n\t\t\"Nuporanga\",\n\t\t\"Ocauçu\",\n\t\t\"Óleo\",\n\t\t\"Olímpia\",\n\t\t\"Onda Verde\",\n\t\t\"Oriente\",\n\t\t\"Orindiúva\",\n\t\t\"Orlândia\",\n\t\t\"Osasco\",\n\t\t\"Oscar Bressane\",\n\t\t\"Osvaldo Cruz\",\n\t\t\"Ourinhos\",\n\t\t\"Ouro Verde\",\n\t\t\"Ouroeste\",\n\t\t\"Pacaembu\",\n\t\t\"Palestina\",\n\t\t\"Palmares Paulista\",\n\t\t\"Palmeira d'Oeste\",\n\t\t\"Palmital\",\n\t\t\"Panorama\",\n\t\t\"Paraguaçu Paulista\",\n\t\t\"Paraibuna\",\n\t\t\"Paraíso\",\n\t\t\"Paranapanema\",\n\t\t\"Paranapuã\",\n\t\t\"Parapuã\",\n\t\t\"Pardinho\",\n\t\t\"Pariquera-Açu\",\n\t\t\"Parisi\",\n\t\t\"Patrocínio Paulista\",\n\t\t\"Paulicéia\",\n\t\t\"Paulínia\",\n\t\t\"Paulistânia\",\n\t\t\"Paulo de Faria\",\n\t\t\"Pederneiras\",\n\t\t\"Pedra Bela\",\n\t\t\"Pedranópolis\",\n\t\t\"Pedregulho\",\n\t\t\"Pedreira\",\n\t\t\"Pedrinhas Paulista\",\n\t\t\"Pedro de Toledo\",\n\t\t\"Penápolis\",\n\t\t\"Pereira Barreto\",\n\t\t\"Pereiras\",\n\t\t\"Peruíbe\",\n\t\t\"Piacatu\",\n\t\t\"Piedade\",\n\t\t\"Pilar do Sul\",\n\t\t\"Pindamonhangaba\",\n\t\t\"Pindorama\",\n\t\t\"Pinhalzinho\",\n\t\t\"Piquerobi\",\n\t\t\"Piquete\",\n\t\t\"Piracaia\",\n\t\t\"Piracicaba\",\n\t\t\"Piraju\",\n\t\t\"Pirajuí\",\n\t\t\"Pirangi\",\n\t\t\"Pirapora do Bom Jesus\",\n\t\t\"Pirapozinho\",\n\t\t\"Pirassununga\",\n\t\t\"Piratininga\",\n\t\t\"Pitangueiras\",\n\t\t\"Planalto\",\n\t\t\"Platina\",\n\t\t\"Poá\",\n\t\t\"Poloni\",\n\t\t\"Pompéia\",\n\t\t\"Pongaí\",\n\t\t\"Pontal\",\n\t\t\"Pontalinda\",\n\t\t\"Pontes Gestal\",\n\t\t\"Populina\",\n\t\t\"Porangaba\",\n\t\t\"Porto Feliz\",\n\t\t\"Porto Ferreira\",\n\t\t\"Potim\",\n\t\t\"Potirendaba\",\n\t\t\"Pracinha\",\n\t\t\"Pradópolis\",\n\t\t\"Praia Grande\",\n\t\t\"Pratânia\",\n\t\t\"Presidente Alves\",\n\t\t\"Presidente Bernardes\",\n\t\t\"Presidente Epitácio\",\n\t\t\"Presidente Prudente\",\n\t\t\"Presidente Venceslau\",\n\t\t\"Promissão\",\n\t\t\"Quadra\",\n\t\t\"Quatá\",\n\t\t\"Queiroz\",\n\t\t\"Queluz\",\n\t\t\"Quintana\",\n\t\t\"Rafard\",\n\t\t\"Rancharia\",\n\t\t\"Redenção da Serra\",\n\t\t\"Regente Feijó\",\n\t\t\"Reginópolis\",\n\t\t\"Registro\",\n\t\t\"Restinga\",\n\t\t\"Ribeira\",\n\t\t\"Ribeirão Bonito\",\n\t\t\"Ribeirão Branco\",\n\t\t\"Ribeirão Corrente\",\n\t\t\"Ribeirão do Sul\",\n\t\t\"Ribeirão dos Índios\",\n\t\t\"Ribeirão Grande\",\n\t\t\"Ribeirão Pires\",\n\t\t\"Ribeirão Preto\",\n\t\t\"Rifaina\",\n\t\t\"Rincão\",\n\t\t\"Rinópolis\",\n\t\t\"Rio Claro\",\n\t\t\"Rio das Pedras\",\n\t\t\"Rio Grande da Serra\",\n\t\t\"Riolândia\",\n\t\t\"Riversul\",\n\t\t\"Rosana\",\n\t\t\"Roseira\",\n\t\t\"Rubiácea\",\n\t\t\"Rubinéia\",\n\t\t\"Sabino\",\n\t\t\"Sagres\",\n\t\t\"Sales\",\n\t\t\"Sales Oliveira\",\n\t\t\"Salesópolis\",\n\t\t\"Salmourão\",\n\t\t\"Saltinho\",\n\t\t\"Salto\",\n\t\t\"Salto de Pirapora\",\n\t\t\"Salto Grande\",\n\t\t\"Sandovalina\",\n\t\t\"Santa Adélia\",\n\t\t\"Santa Albertina\",\n\t\t\"Santa Bárbara d'Oeste\",\n\t\t\"Santa Branca\",\n\t\t\"Santa Clara d'Oeste\",\n\t\t\"Santa Cruz da Conceição\",\n\t\t\"Santa Cruz da Esperança\",\n\t\t\"Santa Cruz das Palmeiras\",\n\t\t\"Santa Cruz do Rio Pardo\",\n\t\t\"Santa Ernestina\",\n\t\t\"Santa Fé do Sul\",\n\t\t\"Santa Gertrudes\",\n\t\t\"Santa Isabel\",\n\t\t\"Santa Lúcia\",\n\t\t\"Santa Maria da Serra\",\n\t\t\"Santa Mercedes\",\n\t\t\"Santa Rita d'Oeste\",\n\t\t\"Santa Rita do Passa Quatro\",\n\t\t\"Santa Rosa de Viterbo\",\n\t\t\"Santa Salete\",\n\t\t\"Santana da Ponte Pensa\",\n\t\t\"Santana de Parnaíba\",\n\t\t\"Santo Anastácio\",\n\t\t\"Santo André\",\n\t\t\"Santo Antônio da Alegria\",\n\t\t\"Santo Antônio de Posse\",\n\t\t\"Santo Antônio do Aracanguá\",\n\t\t\"Santo Antônio do Jardim\",\n\t\t\"Santo Antônio do Pinhal\",\n\t\t\"Santo Expedito\",\n\t\t\"Santópolis do Aguapeí\",\n\t\t\"Santos\",\n\t\t\"São Bento do Sapucaí\",\n\t\t\"São Bernardo do Campo\",\n\t\t\"São Caetano do Sul\",\n\t\t\"São Carlos\",\n\t\t\"São Francisco\",\n\t\t\"São João da Boa Vista\",\n\t\t\"São João das Duas Pontes\",\n\t\t\"São João de Iracema\",\n\t\t\"São João do Pau d'Alho\",\n\t\t\"São Joaquim da Barra\",\n\t\t\"São José da Bela Vista\",\n\t\t\"São José do Barreiro\",\n\t\t\"São José do Rio Pardo\",\n\t\t\"São José do Rio Preto\",\n\t\t\"São José dos Campos\",\n\t\t\"São Lourenço da Serra\",\n\t\t\"São Luiz do Paraitinga\",\n\t\t\"São Manuel\",\n\t\t\"São Miguel Arcanjo\",\n\t\t\"São Paulo\",\n\t\t\"São Pedro\",\n\t\t\"São Pedro do Turvo\",\n\t\t\"São Roque\",\n\t\t\"São Sebastião\",\n\t\t\"São Sebastião da Grama\",\n\t\t\"São Simão\",\n\t\t\"São Vicente\",\n\t\t\"Sarapuí\",\n\t\t\"Sarutaiá\",\n\t\t\"Sebastianópolis do Sul\",\n\t\t\"Serra Azul\",\n\t\t\"Serra Negra\",\n\t\t\"Serrana\",\n\t\t\"Sertãozinho\",\n\t\t\"Sete Barras\",\n\t\t\"Severínia\",\n\t\t\"Silveiras\",\n\t\t\"Socorro\",\n\t\t\"Sorocaba\",\n\t\t\"Sud Mennucci\",\n\t\t\"Sumaré\",\n\t\t\"Suzanápolis\",\n\t\t\"Suzano\",\n\t\t\"Tabapuã\",\n\t\t\"Tabatinga\",\n\t\t\"Taboão da Serra\",\n\t\t\"Taciba\",\n\t\t\"Taguaí\",\n\t\t\"Taiaçu\",\n\t\t\"Taiúva\",\n\t\t\"Tambaú\",\n\t\t\"Tanabi\",\n\t\t\"Tapiraí\",\n\t\t\"Tapiratiba\",\n\t\t\"Taquaral\",\n\t\t\"Taquaritinga\",\n\t\t\"Taquarituba\",\n\t\t\"Taquarivaí\",\n\t\t\"Tarabai\",\n\t\t\"Tarumã\",\n\t\t\"Tatuí\",\n\t\t\"Taubaté\",\n\t\t\"Tejupá\",\n\t\t\"Teodoro Sampaio\",\n\t\t\"Terra Roxa\",\n\t\t\"Tietê\",\n\t\t\"Timburi\",\n\t\t\"Torre de Pedra\",\n\t\t\"Torrinha\",\n\t\t\"Trabiju\",\n\t\t\"Tremembé\",\n\t\t\"Três Fronteiras\",\n\t\t\"Tuiuti\",\n\t\t\"Tupã\",\n\t\t\"Tupi Paulista\",\n\t\t\"Turiúba\",\n\t\t\"Turmalina\",\n\t\t\"Ubarana\",\n\t\t\"Ubatuba\",\n\t\t\"Ubirajara\",\n\t\t\"Uchoa\",\n\t\t\"União Paulista\",\n\t\t\"Urânia\",\n\t\t\"Uru\",\n\t\t\"Urupês\",\n\t\t\"Valentim Gentil\",\n\t\t\"Valinhos\",\n\t\t\"Valparaíso\",\n\t\t\"Vargem\",\n\t\t\"Vargem Grande do Sul\",\n\t\t\"Vargem Grande Paulista\",\n\t\t\"Várzea Paulista\",\n\t\t\"Vera Cruz\",\n\t\t\"Vinhedo\",\n\t\t\"Viradouro\",\n\t\t\"Vista Alegre do Alto\",\n\t\t\"Vitória Brasil\",\n\t\t\"Votorantim\",\n\t\t\"Votuporanga\",\n\t\t\"Zacarias\",\n\t],\n\tTO: [\n\t\t\"Abreulândia\",\n\t\t\"Aguiarnópolis\",\n\t\t\"Aliança do Tocantins\",\n\t\t\"Almas\",\n\t\t\"Alvorada\",\n\t\t\"Ananás\",\n\t\t\"Angico\",\n\t\t\"Aparecida do Rio Negro\",\n\t\t\"Aragominas\",\n\t\t\"Araguacema\",\n\t\t\"Araguaçu\",\n\t\t\"Araguaína\",\n\t\t\"Araguanã\",\n\t\t\"Araguatins\",\n\t\t\"Arapoema\",\n\t\t\"Arraias\",\n\t\t\"Augustinópolis\",\n\t\t\"Aurora do Tocantins\",\n\t\t\"Axixá do Tocantins\",\n\t\t\"Babaçulândia\",\n\t\t\"Bandeirantes do Tocantins\",\n\t\t\"Barra do Ouro\",\n\t\t\"Barrolândia\",\n\t\t\"Bernardo Sayão\",\n\t\t\"Bom Jesus do Tocantins\",\n\t\t\"Brasilândia do Tocantins\",\n\t\t\"Brejinho de Nazaré\",\n\t\t\"Buriti do Tocantins\",\n\t\t\"Cachoeirinha\",\n\t\t\"Campos Lindos\",\n\t\t\"Cariri do Tocantins\",\n\t\t\"Carmolândia\",\n\t\t\"Carrasco Bonito\",\n\t\t\"Caseara\",\n\t\t\"Centenário\",\n\t\t\"Chapada da Natividade\",\n\t\t\"Chapada de Areia\",\n\t\t\"Colinas do Tocantins\",\n\t\t\"Colméia\",\n\t\t\"Combinado\",\n\t\t\"Conceição do Tocantins\",\n\t\t\"Couto Magalhães\",\n\t\t\"Cristalândia\",\n\t\t\"Crixás do Tocantins\",\n\t\t\"Darcinópolis\",\n\t\t\"Dianópolis\",\n\t\t\"Divinópolis do Tocantins\",\n\t\t\"Dois Irmãos do Tocantins\",\n\t\t\"Dueré\",\n\t\t\"Esperantina\",\n\t\t\"Fátima\",\n\t\t\"Figueirópolis\",\n\t\t\"Filadélfia\",\n\t\t\"Formoso do Araguaia\",\n\t\t\"Goianorte\",\n\t\t\"Goiatins\",\n\t\t\"Guaraí\",\n\t\t\"Gurupi\",\n\t\t\"Ipueiras\",\n\t\t\"Itacajá\",\n\t\t\"Itaguatins\",\n\t\t\"Itapiratins\",\n\t\t\"Itaporã do Tocantins\",\n\t\t\"Jaú do Tocantins\",\n\t\t\"Juarina\",\n\t\t\"Lagoa da Confusão\",\n\t\t\"Lagoa do Tocantins\",\n\t\t\"Lajeado\",\n\t\t\"Lavandeira\",\n\t\t\"Lizarda\",\n\t\t\"Luzinópolis\",\n\t\t\"Marianópolis do Tocantins\",\n\t\t\"Mateiros\",\n\t\t\"Maurilândia do Tocantins\",\n\t\t\"Miracema do Tocantins\",\n\t\t\"Miranorte\",\n\t\t\"Monte do Carmo\",\n\t\t\"Monte Santo do Tocantins\",\n\t\t\"Muricilândia\",\n\t\t\"Natividade\",\n\t\t\"Nazaré\",\n\t\t\"Nova Olinda\",\n\t\t\"Nova Rosalândia\",\n\t\t\"Novo Acordo\",\n\t\t\"Novo Alegre\",\n\t\t\"Novo Jardim\",\n\t\t\"Oliveira de Fátima\",\n\t\t\"Palmas\",\n\t\t\"Palmeirante\",\n\t\t\"Palmeiras do Tocantins\",\n\t\t\"Palmeirópolis\",\n\t\t\"Paraíso do Tocantins\",\n\t\t\"Paranã\",\n\t\t\"Pau D'Arco\",\n\t\t\"Pedro Afonso\",\n\t\t\"Peixe\",\n\t\t\"Pequizeiro\",\n\t\t\"Pindorama do Tocantins\",\n\t\t\"Piraquê\",\n\t\t\"Pium\",\n\t\t\"Ponte Alta do Bom Jesus\",\n\t\t\"Ponte Alta do Tocantins\",\n\t\t\"Porto Alegre do Tocantins\",\n\t\t\"Porto Nacional\",\n\t\t\"Praia Norte\",\n\t\t\"Presidente Kennedy\",\n\t\t\"Pugmil\",\n\t\t\"Recursolândia\",\n\t\t\"Riachinho\",\n\t\t\"Rio da Conceição\",\n\t\t\"Rio dos Bois\",\n\t\t\"Rio Sono\",\n\t\t\"Sampaio\",\n\t\t\"Sandolândia\",\n\t\t\"Santa Fé do Araguaia\",\n\t\t\"Santa Maria do Tocantins\",\n\t\t\"Santa Rita do Tocantins\",\n\t\t\"Santa Rosa do Tocantins\",\n\t\t\"Santa Tereza do Tocantins\",\n\t\t\"Santa Terezinha do Tocantins\",\n\t\t\"São Bento do Tocantins\",\n\t\t\"São Félix do Tocantins\",\n\t\t\"São Miguel do Tocantins\",\n\t\t\"São Salvador do Tocantins\",\n\t\t\"São Sebastião do Tocantins\",\n\t\t\"São Valério\",\n\t\t\"Silvanópolis\",\n\t\t\"Sítio Novo do Tocantins\",\n\t\t\"Sucupira\",\n\t\t\"Tabocão\",\n\t\t\"Taguatinga\",\n\t\t\"Taipas do Tocantins\",\n\t\t\"Talismã\",\n\t\t\"Tocantínia\",\n\t\t\"Tocantinópolis\",\n\t\t\"Tupirama\",\n\t\t\"Tupiratins\",\n\t\t\"Wanderlândia\",\n\t\t\"Xambioá\",\n\t],\n} as const;\n","import { DATA as CITIES_DATA } from \"../_internals/constants/cities\";\nimport type { StateCode } from \"../_internals/constants/states\";\n\n/**\n * Returns a list of city names for a given Brazilian state, or all cities if no state is specified.\n *\n * If a state code is provided, the function returns its cities sorted alphabetically.\n * If no state is provided, it returns all cities from all states, sorted alphabetically.\n *\n * @param state - The code of the Brazilian state to filter cities by. Optional.\n * @returns An array of city names, sorted alphabetically. Returns an empty array if the state is not found.\n */\nexport const getCities = (state?: StateCode): string[] => {\n\tif (!state) {\n\t\treturn Object.values(CITIES_DATA)\n\t\t\t.flat()\n\t\t\t.sort((a, b) => a.localeCompare(b));\n\t}\n\n\tif (!(state in CITIES_DATA)) return [];\n\n\treturn [...CITIES_DATA[state]];\n};\n","/**\n * @type {Array<{code: string, name: string, regionCode: string, regionName: string}>}\n */\nexport const DATA = [\n\t{ code: \"AC\", name: \"Acre\", regionCode: \"N\", regionName: \"Norte\" },\n\t{ code: \"AL\", name: \"Alagoas\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"AP\", name: \"Amapá\", regionCode: \"N\", regionName: \"Norte\" },\n\t{ code: \"AM\", name: \"Amazonas\", regionCode: \"N\", regionName: \"Norte\" },\n\t{ code: \"BA\", name: \"Bahia\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"CE\", name: \"Ceará\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"DF\", name: \"Distrito Federal\", regionCode: \"CO\", regionName: \"Centro-Oeste\" },\n\t{ code: \"ES\", name: \"Espírito Santo\", regionCode: \"SE\", regionName: \"Sudeste\" },\n\t{ code: \"GO\", name: \"Goiás\", regionCode: \"CO\", regionName: \"Centro-Oeste\" },\n\t{ code: \"MA\", name: \"Maranhão\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"MT\", name: \"Mato Grosso\", regionCode: \"CO\", regionName: \"Centro-Oeste\" },\n\t{ code: \"MS\", name: \"Mato Grosso do Sul\", regionCode: \"CO\", regionName: \"Centro-Oeste\" },\n\t{ code: \"MG\", name: \"Minas Gerais\", regionCode: \"SE\", regionName: \"Sudeste\" },\n\t{ code: \"PR\", name: \"Paraná\", regionCode: \"S\", regionName: \"Sul\" },\n\t{ code: \"PB\", name: \"Paraíba\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"PA\", name: \"Pará\", regionCode: \"N\", regionName: \"Norte\" },\n\t{ code: \"PE\", name: \"Pernambuco\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"PI\", name: \"Piauí\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"RN\", name: \"Rio Grande do Norte\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"RS\", name: \"Rio Grande do Sul\", regionCode: \"S\", regionName: \"Sul\" },\n\t{ code: \"RJ\", name: \"Rio de Janeiro\", regionCode: \"SE\", regionName: \"Sudeste\" },\n\t{ code: \"RO\", name: \"Rondônia\", regionCode: \"N\", regionName: \"Norte\" },\n\t{ code: \"RR\", name: \"Roraima\", regionCode: \"N\", regionName: \"Norte\" },\n\t{ code: \"SC\", name: \"Santa Catarina\", regionCode: \"S\", regionName: \"Sul\" },\n\t{ code: \"SE\", name: \"Sergipe\", regionCode: \"NE\", regionName: \"Nordeste\" },\n\t{ code: \"SP\", name: \"São Paulo\", regionCode: \"SE\", regionName: \"Sudeste\" },\n\t{ code: \"TO\", name: \"Tocantins\", regionCode: \"N\", regionName: \"Norte\" },\n] as const;\n\nexport type State = (typeof DATA)[number];\n\nexport type StateName = (typeof DATA)[number][\"name\"];\n\nexport type StateCode = (typeof DATA)[number][\"code\"];\n","import { DATA as STATES, type StateCode } from \"../_internals/constants/states\";\n\nexport class GetCepInfoByAddressError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetCepInfoByAddressError\";\n\t}\n}\n\nexport class GetCepInfoByAddressValidationError extends GetCepInfoByAddressError {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetCepInfoByAddressValidationError\";\n\t}\n}\n\nexport class GetCepInfoByAddressNotFoundError extends GetCepInfoByAddressError {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetCepInfoByAddressNotFoundError\";\n\t}\n}\n\nexport type CepAddressInfo = {\n\tcep: string;\n\tlogradouro: string;\n\tcomplemento: string;\n\tbairro: string;\n\tlocalidade: string;\n\tuf: string;\n\tibge?: string;\n\tgia?: string;\n\tddd?: string;\n\tsiafi?: string;\n};\n\nexport type GetCepInfoByAddressOptions = {\n\tfederalUnit: string;\n\tcity: string;\n\tstreet: string;\n};\n\nconst VALID_STATE_CODES = new Set<StateCode>(STATES.map((state) => state.code));\n\nconst isStateCode = (value: string): value is StateCode =>\n\tVALID_STATE_CODES.has(value as StateCode);\n\nconst normalizeAddressPart = (value: string): string =>\n\tvalue\n\t\t.normalize(\"NFD\")\n\t\t.replace(/[\\u0300-\\u036f]/g, \"\")\n\t\t.trim();\n\nexport const getCepInfoByAddress = async ({\n\tfederalUnit,\n\tcity,\n\tstreet,\n}: GetCepInfoByAddressOptions): Promise<CepAddressInfo[]> => {\n\tconst normalizedUf = federalUnit.trim().toUpperCase();\n\n\tif (!isStateCode(normalizedUf)) {\n\t\tthrow new GetCepInfoByAddressValidationError(`Invalid UF: ${federalUnit}`);\n\t}\n\n\tif (!city || !street) {\n\t\tthrow new GetCepInfoByAddressValidationError(\"City and street are required\");\n\t}\n\n\tconst response = await fetch(\n\t\t`https://viacep.com.br/ws/${normalizedUf}/${encodeURIComponent(normalizeAddressPart(city))}/${encodeURIComponent(normalizeAddressPart(street))}/json/`,\n\t);\n\n\tif (!response.ok) {\n\t\tthrow new GetCepInfoByAddressError(`ViaCEP request failed with status ${response.status}`);\n\t}\n\n\tconst data = (await response.json()) as CepAddressInfo[];\n\n\tif (!Array.isArray(data) || data.length === 0) {\n\t\tthrow new GetCepInfoByAddressNotFoundError(`${normalizedUf} - ${city} - ${street}`);\n\t}\n\n\treturn data;\n};\n","import type { StateCode } from \"../_internals/constants/states\";\n\nexport type Holiday = {\n\tname: string;\n\tdate: Date;\n};\n\nexport type GetHolidaysOptions = {\n\tyear: number;\n\tstateCode?: StateCode;\n};\n\n/**\n * Fixed holidays that occur on the same date every year.\n * Month is 1-based (1 = January, 12 = December).\n */\nconst FIXED_HOLIDAYS = {\n\t\"Ano novo\": { day: 1, month: 1 },\n\tTiradentes: { day: 21, month: 4 },\n\t\"Dia do trabalhador\": { day: 1, month: 5 },\n\t\"Independência do Brasil\": { day: 7, month: 9 },\n\t\"Nossa Senhora Aparecida\": { day: 12, month: 10 },\n\tFinados: { day: 2, month: 11 },\n\t\"Proclamação da República\": { day: 15, month: 11 },\n\t\"Dia da Consciência Negra\": { day: 20, month: 11 },\n\tNatal: { day: 25, month: 12 },\n} as const;\n\n/**\n * State-specific holidays by state code.\n * Month is 1-based (1 = January, 12 = December).\n */\nconst STATE_HOLIDAYS: Partial<\n\tRecord<StateCode, Array<{ name: string; day: number; month: number }>>\n> = {\n\tAC: [\n\t\t{ name: \"Dia do Evangélico\", day: 23, month: 1 },\n\t\t{ name: \"Dia Internacional da Mulher\", day: 8, month: 3 },\n\t\t{ name: \"Aniversário do Acre\", day: 15, month: 6 },\n\t\t{ name: \"Dia da Amazônia\", day: 5, month: 9 },\n\t\t{ name: \"Assinatura do Tratado de Petrópolis\", day: 17, month: 11 },\n\t],\n\tAL: [\n\t\t{ name: \"São João\", day: 24, month: 6 },\n\t\t{ name: \"São Pedro\", day: 29, month: 6 },\n\t\t{ name: \"Emancipação Política de Alagoas\", day: 16, month: 9 },\n\t],\n\tAP: [\n\t\t{ name: \"Dia de São José\", day: 19, month: 3 },\n\t\t{ name: \"Criação do Território Federal do Amapá\", day: 13, month: 9 },\n\t],\n\tAM: [\n\t\t{ name: \"Elevação do Amazonas à categoria de Província\", day: 5, month: 9 },\n\t\t{ name: \"Nossa Senhora da Conceição\", day: 8, month: 12 },\n\t],\n\tBA: [{ name: \"Independência da Bahia\", day: 2, month: 7 }],\n\tCE: [\n\t\t{ name: \"Dia de São José\", day: 19, month: 3 },\n\t\t{ name: \"Abolição da Escravidão no Ceará\", day: 25, month: 3 },\n\t],\n\tDF: [\n\t\t{ name: \"Fundação de Brasília\", day: 21, month: 4 },\n\t\t{ name: \"Dia do Evangélico\", day: 30, month: 11 },\n\t],\n\tES: [{ name: \"Dia do Estado do Espírito Santo\", day: 23, month: 5 }],\n\tGO: [\n\t\t{ name: \"Dia do Estado de Goiás\", day: 5, month: 7 },\n\t\t{ name: \"Nossa Senhora Sant'Ana\", day: 26, month: 7 },\n\t],\n\tMA: [{ name: \"Adesão do Maranhão à Independência\", day: 28, month: 7 }],\n\tMT: [\n\t\t{ name: \"Criação do Estado de Mato Grosso\", day: 9, month: 5 },\n\t\t{ name: \"Consciência Negra\", day: 20, month: 11 },\n\t],\n\tMS: [{ name: \"Criação do Estado de Mato Grosso do Sul\", day: 11, month: 10 }],\n\tMG: [{ name: \"Aniversário de Minas Gerais\", day: 21, month: 7 }],\n\tPA: [{ name: \"Adesão do Pará à Independência\", day: 15, month: 8 }],\n\tPB: [\n\t\t{\n\t\t\tname: \"Fundação do Estado e Dia de Nossa Senhora das Neves\",\n\t\t\tday: 5,\n\t\t\tmonth: 8,\n\t\t},\n\t],\n\tPR: [{ name: \"Emancipação Política do Paraná\", day: 19, month: 12 }],\n\tPE: [{ name: \"Revolução Pernambucana\", day: 6, month: 3 }],\n\tPI: [{ name: \"Dia do Piauí\", day: 19, month: 10 }],\n\tRJ: [\n\t\t{ name: \"São Sebastião\", day: 20, month: 1 },\n\t\t{ name: \"São Jorge\", day: 23, month: 4 },\n\t\t{ name: \"Consciência Negra\", day: 20, month: 11 },\n\t],\n\tRN: [\n\t\t{ name: \"Mártires de Cunhaú e Uruaçu\", day: 3, month: 10 },\n\t\t{ name: \"Dia do Rio Grande do Norte\", day: 7, month: 9 },\n\t],\n\tRS: [{ name: \"Revolução Farroupilha\", day: 20, month: 9 }],\n\tRO: [\n\t\t{ name: \"Criação do Estado de Rondônia\", day: 4, month: 1 },\n\t\t{ name: \"Dia do Evangélico\", day: 18, month: 6 },\n\t],\n\tRR: [{ name: \"Criação do Estado de Roraima\", day: 5, month: 10 }],\n\tSC: [\n\t\t{ name: \"Criação da Capitania de Santa Catarina\", day: 11, month: 8 },\n\t\t{ name: \"Dia de Santa Catarina de Alexandria\", day: 25, month: 11 },\n\t],\n\tSP: [{ name: \"Revolução Constitucionalista\", day: 9, month: 7 }],\n\tSE: [{ name: \"Emancipação Política de Sergipe\", day: 8, month: 7 }],\n\tTO: [\n\t\t{\n\t\t\tname: \"Padroeira do Estado (Nossa Senhora da Natividade)\",\n\t\t\tday: 8,\n\t\t\tmonth: 9,\n\t\t},\n\t\t{ name: \"Criação do Estado do Tocantins\", day: 5, month: 10 },\n\t],\n} as const;\n\n/**\n * Calculates the date of Easter Sunday for a given year using the Computus algorithm.\n *\n * @param {number} year - The year for which to calculate Easter\n * @returns {Date} The date of Easter Sunday\n */\nfunction calculateEaster(year: number): Date {\n\tconst a = year % 19;\n\tconst b = Math.floor(year / 100);\n\tconst c = year % 100;\n\tconst d = Math.floor(b / 4);\n\tconst e = b % 4;\n\tconst f = Math.floor((b + 8) / 25);\n\tconst g = Math.floor((b - f + 1) / 3);\n\tconst h = (19 * a + b - d - g + 15) % 30;\n\tconst i = Math.floor(c / 4);\n\tconst k = c % 4;\n\tconst l = (32 + 2 * e + 2 * i - h - k) % 7;\n\tconst m = Math.floor((a + 11 * h + 22 * l) / 451);\n\n\tconst month = Math.floor((h + l - 7 * m + 114) / 31) - 1; // 0-based month\n\tconst day = ((h + l - 7 * m + 114) % 31) + 1;\n\n\treturn new Date(year, month, day);\n}\n\n/**\n * Calculates a holiday date based on Easter Sunday with a given offset in days.\n *\n * @param {number} year - The year for which to calculate the holiday\n * @param {number} offset - The number of days to add or subtract from Easter (negative for before, positive for after)\n * @returns {Date} The date of the holiday\n */\nfunction calculateHolidayFromEaster(year: number, offset: number): Date {\n\tconst easterDate = calculateEaster(year);\n\tconst holidayDate = new Date(easterDate);\n\tholidayDate.setDate(easterDate.getDate() + offset);\n\treturn holidayDate;\n}\n\n/**\n * Retrieves all Brazilian holidays for a given year.\n *\n * The function returns both fixed holidays (that occur on the same date every year)\n * and movable holidays (that are calculated based on Easter Sunday).\n * If a state code is provided, state-specific holidays are also included.\n *\n * Holidays are returned sorted by date (chronological order).\n *\n * @param {number} year - The year for which to retrieve holidays (must be between 1900 and 2099)\n * @returns {Holiday[]} An array of holidays sorted by date\n *\n * @example\n * ```typescript\n * // Get all national holidays\n * const holidays = getHolidays(2024);\n *\n * // Get holidays for a specific state\n * const spHolidays = getHolidays({ year: 2024, stateCode: 'SP' });\n * ```\n */\nexport function getHolidays(year: number): Holiday[];\nexport function getHolidays(options: GetHolidaysOptions): Holiday[];\nexport function getHolidays(yearOrOptions: number | GetHolidaysOptions): Holiday[] {\n\tlet year: number;\n\tlet stateCode: StateCode | undefined;\n\n\t// Handle overload: either a number (year) or an options object\n\tif (typeof yearOrOptions === \"number\") {\n\t\tyear = yearOrOptions;\n\t\tstateCode = undefined;\n\t} else {\n\t\tyear = yearOrOptions.year;\n\t\tstateCode = yearOrOptions.stateCode;\n\t}\n\n\t// Validate year\n\tif (typeof year !== \"number\" || !Number.isInteger(year) || year < 1900 || year > 2099) {\n\t\treturn [];\n\t}\n\n\tconst holidays: Holiday[] = [];\n\n\t// Add fixed national holidays\n\tfor (const [name, { day, month }] of Object.entries(FIXED_HOLIDAYS)) {\n\t\tholidays.push({\n\t\t\tname,\n\t\t\tdate: new Date(year, month - 1, day),\n\t\t});\n\t}\n\n\t// Calculate and add movable holidays based on Easter\n\tconst easterDate = calculateEaster(year);\n\n\t// Carnaval (Shrove Tuesday) - 47 days before Easter\n\tholidays.push({\n\t\tname: \"Carnaval (terça-feira)\",\n\t\tdate: calculateHolidayFromEaster(year, -47),\n\t});\n\n\t// Sexta-feira Santa (Good Friday) - 2 days before Easter\n\tholidays.push({\n\t\tname: \"Sexta-feira Santa\",\n\t\tdate: calculateHolidayFromEaster(year, -2),\n\t});\n\n\t// Páscoa (Easter Sunday)\n\tholidays.push({\n\t\tname: \"Páscoa\",\n\t\tdate: easterDate,\n\t});\n\n\t// Corpus Christi - 60 days after Easter Sunday\n\tholidays.push({\n\t\tname: \"Corpus Christi\",\n\t\tdate: calculateHolidayFromEaster(year, 70),\n\t});\n\n\t// Add state-specific holidays if stateCode is provided\n\tif (stateCode) {\n\t\tconst stateHolidays = STATE_HOLIDAYS[stateCode];\n\t\tif (stateHolidays) {\n\t\t\tfor (const { name, day, month } of stateHolidays) {\n\t\t\t\tholidays.push({\n\t\t\t\t\tname,\n\t\t\t\t\tdate: new Date(year, month - 1, day),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Sort holidays by date (chronological order)\n\tholidays.sort((a, b) => a.date.getTime() - b.date.getTime());\n\n\treturn holidays;\n}\n","import { LEGAL_NATURE } from \"../is-valid-legal-nature/constants\";\n\nexport const getLegalNatures = (): Record<string, string> => ({ ...LEGAL_NATURE });\n","type MunicipalityByCodeResponse = {\n\tnome?: string;\n\tmicrorregiao?: {\n\t\tmesorregiao?: {\n\t\t\tUF?: {\n\t\t\t\tsigla?: string;\n\t\t\t};\n\t\t};\n\t};\n};\n\ntype MunicipalityByNameResponse = {\n\tid?: number;\n\tnome?: string;\n};\n\nexport type GetMunicipalityByCodeOptions = {\n\tcode: string;\n};\n\nexport type GetMunicipalityByNameOptions = {\n\tmunicipalityName: string;\n\tuf: string;\n};\n\nexport type GetMunicipalityOptions = GetMunicipalityByCodeOptions | GetMunicipalityByNameOptions;\n\nconst normalizeText = (value: string): string =>\n\tvalue\n\t\t.normalize(\"NFD\")\n\t\t.replace(/[\\u0300-\\u036f]/g, \"\")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim()\n\t\t.toUpperCase();\n\nconst getMunicipalityByCode = async (code: string): Promise<[string, string] | null> => {\n\tconst response = await fetch(\n\t\t`https://servicodados.ibge.gov.br/api/v1/localidades/municipios/${code}`,\n\t);\n\n\tif (!response.ok) return null;\n\n\tconst data = (await response.json()) as MunicipalityByCodeResponse;\n\tconst name = data.nome;\n\tconst uf = data.microrregiao?.mesorregiao?.UF?.sigla;\n\n\tif (!name || !uf) return null;\n\n\treturn [name, uf];\n};\n\nconst getMunicipalityCodeByName = async ({\n\tmunicipalityName,\n\tuf,\n}: GetMunicipalityByNameOptions): Promise<string | null> => {\n\tif (!municipalityName || typeof municipalityName !== \"string\") return null;\n\n\tconst normalizedUf = uf.trim().toUpperCase();\n\n\tif (!/^[A-Z]{2}$/.test(normalizedUf)) return null;\n\n\tconst response = await fetch(\n\t\t`https://servicodados.ibge.gov.br/api/v1/localidades/estados/${normalizedUf}/municipios`,\n\t);\n\n\tif (!response.ok) return null;\n\n\tconst data = (await response.json()) as MunicipalityByNameResponse[];\n\tconst normalizedName = normalizeText(municipalityName);\n\tconst municipality = data.find((item) => normalizeText(item.nome ?? \"\") === normalizedName);\n\n\treturn municipality?.id?.toString() ?? null;\n};\n\nexport const getMunicipality = async (\n\toptions: GetMunicipalityOptions,\n): Promise<[string, string] | null | string> => {\n\tif (\"code\" in options) {\n\t\treturn getMunicipalityByCode(options.code);\n\t}\n\n\treturn getMunicipalityCodeByName(options);\n};\n","import { DATA, type State } from \"../_internals/constants/states\";\n\n/**\n * Retrieves a list of all Brazilian states with their codes and names.\n *\n * Returns an array of state objects containing the two-letter state code\n * and the full state name. The list is automatically sorted alphabetically\n * by state name.\n *\n * @returns {State[]} An array of all Brazilian states sorted by name\n */\nexport const getStates = (): State[] => [...DATA];\n","import type { StateCode } from \"../_internals/constants/states\";\nimport { getHolidays } from \"../get-holidays/get-holidays\";\n\nexport type IsHolidayOptions = {\n\ttargetDate: Date;\n\tstateCode?: StateCode;\n};\n\nexport const isHoliday = ({ targetDate, stateCode }: IsHolidayOptions): boolean | null => {\n\tif (!(targetDate instanceof Date) || Number.isNaN(targetDate.getTime())) {\n\t\treturn null;\n\t}\n\n\tif (stateCode !== undefined && typeof stateCode !== \"string\") {\n\t\treturn null;\n\t}\n\n\treturn getHolidays({ year: targetDate.getFullYear(), stateCode }).some((holiday) => {\n\t\treturn (\n\t\t\tholiday.date.getFullYear() === targetDate.getFullYear() &&\n\t\t\tholiday.date.getMonth() === targetDate.getMonth() &&\n\t\t\tholiday.date.getDate() === targetDate.getDate()\n\t\t);\n\t});\n};\n","import { mod10 } from \"../_internals/mod10/mod10\";\nimport { mod11 } from \"../_internals/mod11/mod11\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type IsValidBankAccountOptions = {\n\tbankCode: string;\n\tagency: string;\n\taccount: string;\n\tdigit: string;\n};\n\nexport type IsValidBankAccountParams = IsValidBankAccountOptions;\n\nconst validateBancoDoBrasil = (params: IsValidBankAccountOptions): boolean => {\n\tconst { agency, account, digit } = params;\n\n\tif (agency.length < 4 || agency.length > 5) return false;\n\tif (account.length < 8 || account.length > 10) return false;\n\tif (digit.length !== 1) return false;\n\n\tconst accountWithoutLeadingZeros = account.replace(/^0+/, \"\") || \"0\";\n\tconst fullNumber = agency.padStart(5, \"0\") + accountWithoutLeadingZeros.padStart(8, \"0\");\n\n\tlet sum = 0;\n\tlet weight = 2;\n\tfor (let i = fullNumber.length - 1; i >= 0; i--) {\n\t\tconst digitValue = fullNumber.charCodeAt(i) - 48;\n\t\tsum += digitValue * weight;\n\t\tweight = weight === 9 ? 2 : weight + 1;\n\t}\n\n\tconst remainder = sum % 11;\n\tconst calculatedDigit = remainder === 0 || remainder === 1 ? 0 : 11 - remainder;\n\n\tconst digitChar = String(calculatedDigit);\n\treturn digitChar === digit;\n};\n\nconst validateItau = (params: IsValidBankAccountOptions): boolean => {\n\tconst { agency, account, digit } = params;\n\n\tif (agency.length !== 4) return false;\n\tif (account.length !== 5) return false;\n\tif (digit.length !== 1) return false;\n\n\tconst fullNumber = agency + account;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < fullNumber.length; i++) {\n\t\tconst digitValue = fullNumber.charCodeAt(i) - 48;\n\t\tconst weight = i % 2 === 0 ? 2 : 1;\n\t\tlet result = digitValue * weight;\n\t\tif (result > 9) {\n\t\t\tresult = Math.floor(result / 10) + (result % 10);\n\t\t}\n\t\tsum += result;\n\t}\n\n\tconst remainder = sum % 10;\n\tconst calculatedDigit = remainder === 0 ? 0 : 10 - remainder;\n\n\treturn String(calculatedDigit) === digit;\n};\n\nconst validateBradesco = (params: IsValidBankAccountOptions): boolean => {\n\tconst { agency, account, digit } = params;\n\n\tif (agency.length !== 4) return false;\n\tif (account.length !== 7) return false;\n\tif (digit.length !== 1) return false;\n\n\tlet sum = 0;\n\tlet weight = 2;\n\n\tfor (let i = account.length - 1; i >= 0; i--) {\n\t\tconst digitValue = account.charCodeAt(i) - 48;\n\t\tsum += digitValue * weight;\n\t\tweight = weight === 7 ? 2 : weight + 1;\n\t}\n\n\tconst remainder = sum % 11;\n\tconst calculatedDigit = remainder === 0 || remainder === 1 ? 0 : 11 - remainder;\n\n\treturn String(calculatedDigit) === digit;\n};\n\nconst validateSantander = (params: IsValidBankAccountOptions): boolean => {\n\tconst { agency, account, digit } = params;\n\n\tif (agency.length !== 4) return false;\n\tif (account.length !== 8) return false;\n\tif (digit.length !== 1) return false;\n\n\tconst calculatedDigit = mod11(account);\n\tconst digitValue = calculatedDigit > 9 ? 0 : calculatedDigit;\n\n\treturn String(digitValue) === digit;\n};\n\nconst validateCaixa = (params: IsValidBankAccountOptions): boolean => {\n\tconst { agency, account, digit } = params;\n\n\tif (agency.length !== 4) return false;\n\tif (account.length !== 11) return false;\n\tif (digit.length !== 1) return false;\n\n\tconst accountWithoutDigit = account.substring(0, 10);\n\tconst calculatedDigit = mod11(accountWithoutDigit);\n\tconst digitValue = calculatedDigit > 9 ? 0 : calculatedDigit;\n\n\treturn String(digitValue) === digit;\n};\n\nconst validateGeneric = (params: IsValidBankAccountOptions): boolean => {\n\tconst { account, digit } = params;\n\n\tif (digit.length < 1 || digit.length > 2) return false;\n\n\tconst mod11Result = mod11(account);\n\tif (mod11Result <= 9 && String(mod11Result) === digit) {\n\t\treturn true;\n\t}\n\n\tconst mod10Result = mod10(account);\n\tif (String(mod10Result) === digit) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst VALIDATORS: Record<string, (params: IsValidBankAccountOptions) => boolean> = {\n\t\"001\": validateBancoDoBrasil,\n\t\"341\": validateItau,\n\t\"237\": validateBradesco,\n\t\"033\": validateSantander,\n\t\"104\": validateCaixa,\n};\n\n/**\n * Validates if a Brazilian bank account is valid.\n * Supports specific validation algorithms for major banks:\n * - Banco do Brasil (001)\n * - Itaú (341)\n * - Bradesco (237)\n * - Santander (033)\n * - Caixa Econômica Federal (104)\n *\n * For other banks, uses generic mod10/mod11 validation.\n *\n * @param {IsValidBankAccountOptions} params - The bank account parameters.\n * @param {string} params.bankCode - The bank code (3 digits).\n * @param {string} params.agency - The agency number (1-5 digits).\n * @param {string} params.account - The account number (1-13 digits).\n * @param {string} params.digit - The verification digit (1-2 digits).\n * @returns {boolean} True if the bank account is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidBankAccount({\n *   bankCode: \"001\",\n *   agency: \"1234\",\n *   account: \"12345678\",\n *   digit: \"5\"\n * }); // true (if valid Banco do Brasil account)\n *\n * isValidBankAccount({\n *   bankCode: \"341\",\n *   agency: \"1234\",\n *   account: \"12345\",\n *   digit: \"6\"\n * }); // true (if valid Itaú account)\n * ```\n */\nexport const isValidBankAccount = (params: IsValidBankAccountOptions): boolean => {\n\tconst { bankCode, agency, account, digit } = params;\n\n\tif (\n\t\t!bankCode ||\n\t\t!agency ||\n\t\t!account ||\n\t\t!digit ||\n\t\ttypeof bankCode !== \"string\" ||\n\t\ttypeof agency !== \"string\" ||\n\t\ttypeof account !== \"string\" ||\n\t\ttypeof digit !== \"string\"\n\t) {\n\t\treturn false;\n\t}\n\n\tconst bankCodeDigits = sanitizeToDigits(bankCode);\n\tconst agencyDigits = sanitizeToDigits(agency);\n\tconst accountDigits = sanitizeToDigits(account);\n\tconst digitDigits = sanitizeToDigits(digit);\n\n\tif (bankCodeDigits.length !== 3) return false;\n\tif (agencyDigits.length === 0 || agencyDigits.length > 5) return false;\n\tif (accountDigits.length === 0 || accountDigits.length > 13) return false;\n\tif (digitDigits.length === 0 || digitDigits.length > 2) return false;\n\n\tconst validator = bankCodeDigits in VALIDATORS ? VALIDATORS[bankCodeDigits] : validateGeneric;\n\n\treturn validator({\n\t\tbankCode: bankCodeDigits,\n\t\tagency: agencyDigits,\n\t\taccount: accountDigits,\n\t\tdigit: digitDigits,\n\t});\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst repeatedDigits = (value: string): boolean => value === value[0].repeat(value.length);\n\nexport const isValidCnh = (value: string): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length !== 11 || repeatedDigits(digits)) return false;\n\n\tlet sum1 = 0;\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum1 += (digits.charCodeAt(i) - 48) * (9 - i);\n\t}\n\n\tlet digit1 = sum1 % 11;\n\tlet decrement = 0;\n\n\tif (digit1 >= 10) {\n\t\tdigit1 = 0;\n\t\tdecrement = 2;\n\t}\n\n\tif (digit1 !== digits.charCodeAt(9) - 48) return false;\n\n\tlet sum2 = 0;\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum2 += (digits.charCodeAt(i) - 48) * (i + 1);\n\t}\n\n\tlet digit2 = (sum2 % 11) - decrement;\n\n\tif (digit2 < 0) digit2 += 11;\n\tif (digit2 >= 10) digit2 = 0;\n\n\treturn digit2 === digits.charCodeAt(10) - 48;\n};\n","export const RESERVED_NUMBERS = [\n\t\"00000000000000\",\n\t\"11111111111111\",\n\t\"22222222222222\",\n\t\"33333333333333\",\n\t\"44444444444444\",\n\t\"55555555555555\",\n\t\"66666666666666\",\n\t\"77777777777777\",\n\t\"88888888888888\",\n\t\"99999999999999\",\n];\n\nexport const LENGTH = 14;\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH, RESERVED_NUMBERS } from \"./constants\";\n\nconst RESERVED_SET = new Set(RESERVED_NUMBERS);\n\nconst WEIGHTS_1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\nconst WEIGHTS_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\nconst FORMAT_REGEX = /^[0-9A-Z]{2}\\.?[0-9A-Z]{3}\\.?[0-9A-Z]{3}\\/?[0-9A-Z]{4}-?[0-9]{2}$/;\n\nconst NUMERIC_FORMAT_REGEX = /^\\d{2}\\.?\\d{3}\\.?\\d{3}\\/?\\d{4}-?\\d{2}$/;\n\nconst cleanCnpj = (cnpj: string): string => {\n\tlet result = \"\";\n\tfor (let i = 0; i < cnpj.length; i++) {\n\t\tconst char = cnpj[i];\n\t\tif (\n\t\t\t(char >= \"0\" && char <= \"9\") ||\n\t\t\t(char >= \"A\" && char <= \"Z\") ||\n\t\t\t(char >= \"a\" && char <= \"z\")\n\t\t) {\n\t\t\tresult += char >= \"a\" && char <= \"z\" ? String.fromCharCode(char.charCodeAt(0) - 32) : char;\n\t\t}\n\t}\n\treturn result;\n};\n\nconst isValidChecksum = (cnpj: string): boolean => {\n\t// First digit (index 12)\n\tlet sum = 0;\n\tfor (let i = 0; i < 12; i++) {\n\t\tsum += (cnpj.charCodeAt(i) - 48) * WEIGHTS_1[i];\n\t}\n\tlet mod = sum % 11;\n\tconst expected1 = mod < 2 ? 48 : 48 + 11 - mod;\n\tif (cnpj.charCodeAt(12) !== expected1) return false;\n\n\t// Second digit (index 13)\n\tsum = 0;\n\tfor (let i = 0; i < 13; i++) {\n\t\tsum += (cnpj.charCodeAt(i) - 48) * WEIGHTS_2[i];\n\t}\n\tmod = sum % 11;\n\tconst expected2 = mod < 2 ? 48 : 48 + 11 - mod;\n\treturn cnpj.charCodeAt(13) === expected2;\n};\n\n/**\n * Validates if a CNPJ (Cadastro Nacional da Pessoa Jurídica) is valid.\n * Supports both numeric (version 1) and alphanumeric (version 2) CNPJ formats.\n *\n * @param {string} cnpj - The CNPJ value to be validated.\n * @param {{version?: 1|2}} [options] - Optional options:\n *    version = 1 -> validate numeric-only format (default)\n *    version = 2 -> validate both numeric and alphanumeric formats\n * @returns {boolean} True if the CNPJ is valid, false otherwise.\n *\n * @example\n * ```typescript\n * // Version 1 (numeric - default)\n * isValidCnpj(\"12.345.678/0001-95\"); // true\n * isValidCnpj(\"12345678000195\"); // true\n * isValidCnpj(\"00000000000000\"); // false (reserved number)\n * isValidCnpj(\"12345678000190\"); // false (invalid checksum)\n *\n * // Version 2 (alphanumeric)\n * isValidCnpj(\"Q0.SLF.MBD/7VX4-39\", { version: 2 }); // true (alphanumeric)\n * isValidCnpj(\"Q0SLFMBD7VX439\", { version: 2 }); // true (alphanumeric)\n * ```\n */\nexport const isValidCnpj = (cnpj: string, options?: { version?: 1 | 2 }): boolean => {\n\tif (!cnpj || typeof cnpj !== \"string\") return false;\n\n\tconst cleaned = cleanCnpj(cnpj);\n\n\tif (cleaned.length !== LENGTH) return false;\n\n\tconst version = options?.version ?? 1;\n\n\tlet isNumeric = true;\n\tlet hasLetter = false;\n\n\tif (version !== 1) {\n\t\tfor (let i = 0; i < LENGTH; i++) {\n\t\t\tconst code = cleaned.charCodeAt(i);\n\t\t\tif (code < 48 || code > 57) {\n\t\t\t\tisNumeric = false;\n\t\t\t\tif (code >= 65 && code <= 90) hasLetter = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isNumeric) {\n\t\tconst numeric = sanitizeToDigits(cnpj);\n\n\t\treturn (\n\t\t\tNUMERIC_FORMAT_REGEX.test(cnpj) && !RESERVED_SET.has(numeric) && isValidChecksum(numeric)\n\t\t);\n\t}\n\n\treturn hasLetter && FORMAT_REGEX.test(cnpj) && isValidChecksum(cleaned);\n};\n","export const LENGTH = 11;\n\nexport const RESERVED_NUMBERS = [\n\t\"00000000000\",\n\t\"11111111111\",\n\t\"22222222222\",\n\t\"33333333333\",\n\t\"44444444444\",\n\t\"55555555555\",\n\t\"66666666666\",\n\t\"77777777777\",\n\t\"88888888888\",\n\t\"99999999999\",\n];\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH, RESERVED_NUMBERS } from \"./constants\";\n\nconst RESERVED_SET = new Set(RESERVED_NUMBERS);\n\nconst FORMAT_REGEX = /^\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}$/;\n\nconst isValidChecksum = (cpf: string): boolean => {\n\t// First digit (index 9) - weights from 10 to 2\n\tlet sum = 0;\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum += (cpf.charCodeAt(i) - 48) * (10 - i);\n\t}\n\tlet mod = sum % 11;\n\tconst expected1 = mod < 2 ? 48 : 48 + 11 - mod;\n\tif (cpf.charCodeAt(9) !== expected1) return false;\n\n\t// Second digit (index 10) - weights from 11 to 2\n\tsum = 0;\n\tfor (let i = 0; i < 10; i++) {\n\t\tsum += (cpf.charCodeAt(i) - 48) * (11 - i);\n\t}\n\tmod = sum % 11;\n\tconst expected2 = mod < 2 ? 48 : 48 + 11 - mod;\n\treturn cpf.charCodeAt(10) === expected2;\n};\n\n/**\n * Validates if a CPF (Cadastro de Pessoas Físicas) is valid.\n *\n * @param {string} cpf - The CPF value to be validated.\n * @returns {boolean} True if the CPF is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCpf(\"123.456.789-09\"); // true\n * isValidCpf(\"12345678909\"); // true\n * isValidCpf(\"00000000000\"); // false (reserved number)\n * isValidCpf(\"12345678900\"); // false (invalid checksum)\n * ```\n */\nexport const isValidCpf = (cpf: string): boolean => {\n\tif (!cpf || typeof cpf !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(cpf);\n\n\tif (digits.length !== LENGTH) return false;\n\n\tif (!FORMAT_REGEX.test(cpf)) return false;\n\n\tif (RESERVED_SET.has(digits)) return false;\n\n\treturn isValidChecksum(digits);\n};\n","/**\n * Validates if an email address is valid.\n *\n * @param {string} email - The email address to be validated.\n * @returns {boolean} True if the email is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidEmail(\"user@example.com\"); // true\n * isValidEmail(\"invalid.email\"); // false\n * isValidEmail(\"test@domain.co.uk\"); // true\n * ```\n */\n\nconst EMAIL_REGEX =\n\t/^(?!\\.)(?!.*\\.\\.)([a-z0-9_'+\\-.]*)[a-z0-9_+-]@([a-z0-9][a-z0-9-]*\\.)+[a-z]{2,}$/i;\n\nexport const isValidEmail = (value: string): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\treturn EMAIL_REGEX.test(value);\n};\n","import type { StateCode } from \"../_internals/constants/states\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\ntype IeValidator = (ie: string) => boolean;\n\nconst checkLength = (ie: string, length: number | number[]): boolean => {\n\tif (typeof length === \"number\") return ie.length === length;\n\treturn length.includes(ie.length);\n};\n\nconst startsWith = (ie: string, prefix: string): boolean =>\n\tie.substring(0, prefix.length) === prefix;\n\ntype CalcDigitDecreasingParams = {\n\tbody: string;\n\tstartWeight: number;\n\tminWeight: number;\n\tmod?: number;\n};\n\nconst calcDigitDecreasing = ({\n\tbody,\n\tstartWeight,\n\tminWeight,\n\tmod = 11,\n}: CalcDigitDecreasingParams): number => {\n\tlet weight = startWeight;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = body.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight < minWeight) {\n\t\t\tweight = minWeight === 1 ? 9 : 11;\n\t\t}\n\t}\n\n\tconst rest = sum % mod;\n\tconst dig = mod - rest;\n\treturn dig >= 10 ? 0 : dig;\n};\n\nconst validateAC: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 13)) return false;\n\tif (!startsWith(ie, \"01\")) return false;\n\n\tconst body = ie.substring(0, 11);\n\tlet weight = body.length - 7;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 9;\n\t\t}\n\t}\n\n\tconst mod = 11;\n\tconst rest = sum % mod;\n\tlet firstDig = mod - rest;\n\tif (firstDig >= 10) {\n\t\tfirstDig = 0;\n\t}\n\n\tconst bodyWithFirst = body + firstDig;\n\tweight = bodyWithFirst.length - 7;\n\tsum = 0;\n\n\tfor (let i = 0; i < bodyWithFirst.length; i++) {\n\t\tconst digit = i < body.length ? ie.charCodeAt(i) - 48 : firstDig;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 9;\n\t\t}\n\t}\n\n\tconst rest2 = sum % mod;\n\tlet secondDig = mod - rest2;\n\tif (secondDig >= 10) {\n\t\tsecondDig = 0;\n\t}\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(11), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(12), 10) === secondDig\n\t);\n};\n\nconst validateAL: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!startsWith(ie, \"24\")) return false;\n\n\tlet weight = 9;\n\tconst position = 8;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < position; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tconst product = sum * 10;\n\tlet digit = product - Math.floor(product / 11) * 11;\n\tif (digit >= 10) {\n\t\tdigit = 0;\n\t}\n\n\treturn digit === Number.parseInt(ie.charAt(position), 10);\n};\n\nconst validateAP: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!startsWith(ie, \"03\")) return false;\n\n\tconst length = ie.length;\n\tconst position = length - 1;\n\tlet weight = length;\n\tconst body = ie.substring(0, position);\n\tconst bodyInt = Number.parseInt(body, 10);\n\tlet p = 0;\n\tlet d = 0;\n\n\tif (bodyInt >= 3_000_001 && bodyInt <= 3_017_000) {\n\t\tp = 5;\n\t\td = 0;\n\t} else if (bodyInt >= 3_017_001 && bodyInt <= 3_019_022) {\n\t\tp = 9;\n\t\td = 1;\n\t}\n\n\tlet sum = p;\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tlet dig = 11 - (sum % 11);\n\tif (dig === 10) {\n\t\tdig = 0;\n\t}\n\n\tif (dig === 11) {\n\t\tdig = d;\n\t}\n\n\treturn dig === Number.parseInt(ie.charAt(position), 10);\n};\n\nconst validateAM: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validateBA: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, [8, 9])) return false;\n\n\tconst pos = ie.length === 9 ? 1 : 0;\n\tconst charAt = Number.parseInt(ie.substring(pos, pos + 1), 10);\n\tconst arr = [0, 1, 2, 3, 4, 5, 8];\n\tconst mod = arr.includes(charAt) ? 10 : 11;\n\n\tconst body = ie.substring(0, ie.length - 2);\n\tlet weight = body.length + 1;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tlet rest = sum % mod;\n\tlet secondDig = mod - rest;\n\tif (secondDig >= 10) {\n\t\tsecondDig = 0;\n\t}\n\n\tconst bodyWithSecond = body + secondDig;\n\tweight = bodyWithSecond.length + 1;\n\tsum = 0;\n\n\tfor (let i = 0; i < bodyWithSecond.length; i++) {\n\t\tconst digit = i < body.length ? ie.charCodeAt(i) - 48 : secondDig;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\trest = sum % mod;\n\tlet firstDig = mod - rest;\n\tif (firstDig >= 10) {\n\t\tfirstDig = 0;\n\t}\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(ie.length - 2), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(ie.length - 1), 10) === secondDig\n\t);\n};\n\nconst validateCE: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validateDF: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 13)) return false;\n\tif (!startsWith(ie, \"07\")) return false;\n\n\tconst length = ie.length;\n\tconst body = ie.substring(0, length - 2);\n\n\tconst firstDig = calcDFDigit(body);\n\tconst secondDig = calcDFDigit(body + firstDig);\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(length - 2), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(length - 1), 10) === secondDig\n\t);\n};\n\nconst calcDFDigit = (body: string): number => {\n\tlet weight = body.length - 7;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = Number.parseInt(body.charAt(i), 10);\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 9;\n\t\t}\n\t}\n\n\tconst mod = 11;\n\tconst rest = sum % mod;\n\tlet dig = mod - rest;\n\tif (dig >= 10) {\n\t\tdig = 0;\n\t}\n\n\treturn dig;\n};\n\nconst validateES: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validateGO: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst beginWith = [\"10\", \"11\", \"12\", \"20\"];\n\tconst begin = ie.substring(0, 2);\n\tif (!beginWith.includes(begin)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst bodyInt = Number.parseInt(body, 10);\n\tlet weight = 9;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\n\tif (dig >= 10) {\n\t\tif (dig === 11 && bodyInt >= 10_103_105 && bodyInt <= 10_119_997) {\n\t\t\tdig = 1;\n\t\t} else {\n\t\t\tdig = 0;\n\t\t}\n\t}\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validateMA: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!startsWith(ie, \"12\")) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validateMG: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 13)) return false;\n\n\tconst body = ie.substring(0, 11);\n\tconst bodyWithZero = `${body.substring(0, 3)}0${body.substring(3)}`;\n\n\tlet concat = \"\";\n\tfor (let i = 0; i < bodyWithZero.length; i++) {\n\t\tconst digit = bodyWithZero.charCodeAt(i) - 48;\n\t\tconst weight = (i + 3) % 2 === 0 ? 2 : 1;\n\t\tconcat += String(digit * weight);\n\t}\n\n\tlet sum = 0;\n\tfor (let i = 0; i < concat.length; i++) {\n\t\tsum += concat.charCodeAt(i) - 48;\n\t}\n\n\tconst sumStr = String(sum);\n\tconst lastChar = sumStr.charAt(sumStr.length - 1);\n\tconst lastCharInt = Number.parseInt(lastChar, 10);\n\tconst firstDig = lastCharInt === 0 ? 0 : 10 - lastCharInt;\n\n\tlet weight = 3;\n\tlet sum2 = 0;\n\tconst bodyWithFirst = body + firstDig;\n\tfor (let i = 0; i < bodyWithFirst.length; i++) {\n\t\tconst digit = bodyWithFirst.charCodeAt(i) - 48;\n\t\tsum2 += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 11;\n\t\t}\n\t}\n\n\tconst rest = sum2 % 11;\n\tlet secondDig = 11 - rest;\n\tif (secondDig >= 10) {\n\t\tsecondDig = 0;\n\t}\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(11), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(12), 10) === secondDig\n\t);\n};\n\nconst validateMT: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 11)) return false;\n\n\tconst body = ie.substring(0, 10);\n\tlet weight = 3;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 9;\n\t\t}\n\t}\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\tif (dig >= 10) {\n\t\tdig = 0;\n\t}\n\n\treturn Number.parseInt(ie.charAt(10), 10) === dig;\n};\n\nconst validateMS: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!startsWith(ie, \"28\")) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validatePA: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!startsWith(ie, \"15\")) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validatePB: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validatePE: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 7);\n\tlet weight = body.length + 1;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tconst mod = 11;\n\tconst rest = sum % mod;\n\tlet firstDig = mod - rest;\n\tif (firstDig >= 10) {\n\t\tfirstDig = 0;\n\t}\n\n\tconst bodyWithFirst = body + firstDig;\n\tweight = bodyWithFirst.length + 1;\n\tsum = 0;\n\n\tfor (let i = 0; i < bodyWithFirst.length; i++) {\n\t\tconst digit = i < body.length ? ie.charCodeAt(i) - 48 : firstDig;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tconst rest2 = sum % mod;\n\tlet secondDig = mod - rest2;\n\tif (secondDig >= 10) {\n\t\tsecondDig = 0;\n\t}\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(7), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(8), 10) === secondDig\n\t);\n};\n\nconst validatePI: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validatePR: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 10)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tlet weight = body.length - 5;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 7;\n\t\t}\n\t}\n\n\tconst rest = sum % 11;\n\tlet firstDig = 11 - rest;\n\tif (firstDig >= 10) {\n\t\tfirstDig = 0;\n\t}\n\n\tconst bodyWithFirst = body + firstDig;\n\tweight = bodyWithFirst.length - 5;\n\tsum = 0;\n\n\tfor (let i = 0; i < bodyWithFirst.length; i++) {\n\t\tconst digit = Number.parseInt(bodyWithFirst.charAt(i), 10);\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 7;\n\t\t}\n\t}\n\n\tconst rest2 = sum % 11;\n\tlet secondDig = 11 - rest2;\n\tif (secondDig >= 10) {\n\t\tsecondDig = 0;\n\t}\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(8), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(9), 10) === secondDig\n\t);\n};\n\nconst validateRJ: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 8)) return false;\n\n\tconst body = ie.substring(0, 7);\n\tlet weight = 2;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = Number.parseInt(ie.charAt(i), 10);\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 7;\n\t\t}\n\t}\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\tif (dig >= 10) {\n\t\tdig = 0;\n\t}\n\n\treturn Number.parseInt(ie.charAt(7), 10) === dig;\n};\n\nconst validateRN: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, [9, 10])) return false;\n\tif (!startsWith(ie, \"20\")) return false;\n\n\tconst length = ie.length;\n\tconst position = length - 1;\n\tlet weight = length;\n\tconst body = ie.substring(0, position);\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\tif (dig >= 10) {\n\t\tdig = 0;\n\t}\n\n\treturn Number.parseInt(ie.charAt(position), 10) === dig;\n};\n\nconst validateRO: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 14)) return false;\n\n\tconst length = ie.length;\n\tconst position = length - 1;\n\tlet weight = 6;\n\tconst body = ie.substring(0, position);\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = Number.parseInt(ie.charAt(i), 10);\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 9;\n\t\t}\n\t}\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\n\tif (dig >= 10) {\n\t\tdig -= 10;\n\t}\n\n\treturn dig === Number.parseInt(ie.charAt(position), 10);\n};\n\nconst validateRR: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!startsWith(ie, \"24\")) return false;\n\n\tconst body = ie.substring(0, 8);\n\tlet weight = 1;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight++;\n\t}\n\n\tconst rest = sum % 9;\n\treturn Number.parseInt(ie.charAt(8), 10) === rest;\n};\n\nconst validateRS: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 10)) return false;\n\n\tconst body = ie.substring(0, 9);\n\tlet weight = 2;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 9;\n\t\t}\n\t}\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\tif (dig >= 10) {\n\t\tdig = 0;\n\t}\n\n\treturn Number.parseInt(ie.charAt(9), 10) === dig;\n};\n\nconst validateSC: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validateSE: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst dig = calcDigitDecreasing({\n\t\tbody,\n\t\tstartWeight: body.length + 1,\n\t\tminWeight: 1,\n\t});\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst validateSP: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 12)) return false;\n\n\tconst body = ie.substring(0, 8);\n\tconst weightFirst = [1, 3, 4, 5, 6, 7, 8, 10];\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weightFirst[i];\n\t}\n\n\tconst dig = sum % 11;\n\tconst digitStr = String(dig);\n\tconst firstDig = Number.parseInt(digitStr.charAt(digitStr.length - 1), 10);\n\n\tconst bodyForSecond = ie.substring(0, 11);\n\tlet weight = 3;\n\tlet sum2 = 0;\n\n\tfor (let i = 0; i < bodyForSecond.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum2 += digit * weight;\n\t\tweight--;\n\t\tif (weight === 1) {\n\t\t\tweight = 10;\n\t\t}\n\t}\n\n\tconst dig2 = sum2 % 11;\n\tconst digitStr2 = String(dig2);\n\tconst secondDig = Number.parseInt(digitStr2.charAt(digitStr2.length - 1), 10);\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(8), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(11), 10) === secondDig\n\t);\n};\n\nconst validateTO: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, [9, 11])) return false;\n\n\tif (ie.length === 11) {\n\t\tconst begin = ie.substring(2, 4);\n\t\tconst beginWith = [\"01\", \"02\", \"03\", \"99\"];\n\t\tif (beginWith.includes(begin)) {\n\t\t\tconst body = ie.substring(0, 2) + ie.substring(4, 10);\n\t\t\tlet weight = 9;\n\t\t\tlet sum = 0;\n\n\t\t\tfor (let i = 0; i < body.length; i++) {\n\t\t\t\tconst digit = Number.parseInt(body.charAt(i), 10);\n\t\t\t\tsum += digit * weight;\n\t\t\t\tweight--;\n\t\t\t}\n\n\t\t\tconst rest = sum % 11;\n\t\t\tlet dig = 11 - rest;\n\t\t\tif (rest < 2) {\n\t\t\t\tdig = 0;\n\t\t\t}\n\n\t\t\treturn Number.parseInt(ie.charAt(10), 10) === dig;\n\t\t}\n\t}\n\n\tconst body = ie.substring(0, 8);\n\tlet weight = 9;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t}\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\tif (rest < 2) {\n\t\tdig = 0;\n\t}\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst IE_VALIDATORS: Record<StateCode, IeValidator> = {\n\tAC: validateAC,\n\tAL: validateAL,\n\tAP: validateAP,\n\tAM: validateAM,\n\tBA: validateBA,\n\tCE: validateCE,\n\tDF: validateDF,\n\tES: validateES,\n\tGO: validateGO,\n\tMA: validateMA,\n\tMG: validateMG,\n\tMT: validateMT,\n\tMS: validateMS,\n\tPA: validatePA,\n\tPB: validatePB,\n\tPE: validatePE,\n\tPI: validatePI,\n\tPR: validatePR,\n\tRJ: validateRJ,\n\tRN: validateRN,\n\tRO: validateRO,\n\tRR: validateRR,\n\tRS: validateRS,\n\tSC: validateSC,\n\tSE: validateSE,\n\tSP: validateSP,\n\tTO: validateTO,\n};\n\n/**\n * Validates a Brazilian state registration number (Inscrição Estadual).\n *\n * @param {StateCode} stateCode - The state abbreviation (e.g., 'SP', 'RJ', 'MG')\n * @param {string} ie - The state registration number to validate\n * @returns {boolean} True if the state registration number is valid, false otherwise\n *\n * @example\n * ```typescript\n * isValidIe('SP', '110042490114'); // true\n * isValidIe('RJ', '12345'); // false\n * ```\n */\nexport const isValidIe = (stateCode: StateCode, ie: string): boolean => {\n\tif (!stateCode || !ie || typeof ie !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(ie);\n\tif (!digits) return false;\n\n\tconst validator = IE_VALIDATORS[stateCode];\n\tif (!validator) return false;\n\n\treturn validator(digits);\n};\n","export const PHONE_MIN_LENGTH = 10;\nexport const LANDLINE_VALID_FIRST_NUMBERS = [2, 3, 4, 5];\n","import { VALID_AREA_CODES } from \"../_internals/constants/area-codes\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LANDLINE_VALID_FIRST_NUMBERS, PHONE_MIN_LENGTH } from \"./constants\";\n\nconst AREA_CODE_SET = new Set(VALID_AREA_CODES);\n\nconst isValidDDD = (value: string): boolean => {\n\tconst ddd = (value.charCodeAt(0) - 48) * 10 + (value.charCodeAt(1) - 48);\n\treturn AREA_CODE_SET.has(ddd as (typeof VALID_AREA_CODES)[number]);\n};\n\nconst isValidLandlineFirstNumber = (value: string): boolean => {\n\tconst firstDigit = value.charCodeAt(2) - 48;\n\treturn LANDLINE_VALID_FIRST_NUMBERS.includes(firstDigit);\n};\n\n/**\n * Validates if a phone number is a valid Brazilian landline phone.\n *\n * @param {string} value - The phone number to validate.\n * @returns {boolean} True if the phone number is a valid landline phone, false otherwise.\n *\n * @example\n * ```typescript\n * isValidLandlinePhone(\"(11) 3000-0000\"); // true\n * isValidLandlinePhone(\"1130000000\"); // true\n * isValidLandlinePhone(\"11987654321\"); // false (mobile)\n * ```\n */\nexport const isValidLandlinePhone = (value: string): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length !== PHONE_MIN_LENGTH) return false;\n\n\tif (!isValidDDD(digits)) return false;\n\n\treturn isValidLandlineFirstNumber(digits);\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LEGAL_NATURE } from \"./constants\";\n\nexport const isValidLegalNature = (code: string): boolean => {\n\tif (!code || typeof code !== \"string\") return false;\n\n\tconst normalized = sanitizeToDigits(code);\n\n\treturn normalized.length === 4 && normalized in LEGAL_NATURE;\n};\n","const mercosulRegex = /^[a-z]{3}[0-9]{1}[a-z]{1}[0-9]{2}$|^[a-z]{3}[0-9]{2}[a-z]{1}[0-9]{1}$/i;\n\nconst brazilianLicensePlateRegex = /^[a-z]{3}-?[0-9]{4}$/i;\n\n/**\n * Validates if a Brazilian license plate (placa de carro ou moto) is valid.\n * Supports the old Brazilian format (ABC-1234) and the Mercosul format for cars (ABC1D23) and motorcycles (ABC12D3).\n *\n * @param {string} value - The license plate value to be validated.\n * @returns {boolean} True if the license plate is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidLicensePlate(\"abc1234\"); // true (Brazilian format)\n * isValidLicensePlate(\"ABC-1234\"); // true (Brazilian format with hyphen)\n * isValidLicensePlate(\"abc1d23\"); // true (Mercosul format - Car)\n * isValidLicensePlate(\"ABC12D3\"); // true (Mercosul format - Motorcycle)\n * isValidLicensePlate(\"invalid\"); // false\n * ```\n */\nexport const isValidLicensePlate = (value: string): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\treturn mercosulRegex.test(value) || brazilianLicensePlateRegex.test(value);\n};\n","export const PHONE_MAX_LENGTH = 11;\nexport const MOBILE_VALID_FIRST_NUMBERS_V1 = [6, 7, 8, 9];\nexport const MOBILE_VALID_FIRST_NUMBERS_V2 = [9];\n","import { VALID_AREA_CODES } from \"../_internals/constants/area-codes\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport {\n\tMOBILE_VALID_FIRST_NUMBERS_V1,\n\tMOBILE_VALID_FIRST_NUMBERS_V2,\n\tPHONE_MAX_LENGTH,\n} from \"./constants\";\n\nexport type PhoneVersion = 1 | 2;\n\nexport type IsValidMobilePhoneOptions = {\n\tversion?: PhoneVersion;\n};\n\nconst AREA_CODE_SET = new Set(VALID_AREA_CODES);\n\nconst isValidDDD = (value: string): boolean => {\n\tconst ddd = (value.charCodeAt(0) - 48) * 10 + (value.charCodeAt(1) - 48);\n\treturn AREA_CODE_SET.has(ddd as (typeof VALID_AREA_CODES)[number]);\n};\n\nconst isValidMobileFirstNumber = (value: string, version?: PhoneVersion): boolean => {\n\tconst firstDigit = value.charCodeAt(2) - 48;\n\n\tif (!version || version === 1) {\n\t\treturn MOBILE_VALID_FIRST_NUMBERS_V1.includes(firstDigit);\n\t}\n\n\treturn MOBILE_VALID_FIRST_NUMBERS_V2.includes(firstDigit);\n};\n\n/**\n * Validates if a phone number is a valid Brazilian mobile phone.\n *\n * @param {string} value - The phone number to validate.\n * @param {PhoneOptions} options - Optional validation options.\n * @returns {boolean} True if the phone number is a valid mobile phone, false otherwise.\n *\n * @example\n * ```typescript\n * isValidMobilePhone(\"(11) 98765-4321\"); // true (accepts both v1 and v2)\n * isValidMobilePhone(\"11987654321\", { version: 2 }); // true\n * isValidMobilePhone(\"11712345678\", { version: 1 }); // true\n * ```\n */\nexport const isValidMobilePhone = (value: string, options?: IsValidMobilePhoneOptions): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length !== PHONE_MAX_LENGTH) return false;\n\n\tif (!isValidDDD(digits)) return false;\n\n\treturn isValidMobileFirstNumber(digits, options?.version);\n};\n","export const PASSPORT_REGEX = /^[A-Z]{2}[0-9]{6}$/;\n","import { PASSPORT_REGEX } from \"./constants\";\n\n/**\n * Checks if a Brazilian passport number is valid.\n * To be considered valid, the input must be a string containing exactly two\n * alphabetical characters followed by exactly six numerical digits.\n * This function does not verify if the input is a real passport number,\n * as there are no checksums for the Brazilian passport.\n *\n * @param passport - The string containing the passport number to be checked.\n * @returns True if the passport number is valid (2 letters followed by 6 digits).\n *\n * @example\n * isValidPassport(\"Ab123456\") // false - must be uppercase\n * isValidPassport(\"AB123456\") // true\n * isValidPassport(\"12345678\") // false\n * isValidPassport(\"DC-221345\") // false\n */\nexport const isValidPassport = (passport: string | number): boolean => {\n\tif (passport === null || passport === undefined) return false;\n\treturn PASSPORT_REGEX.test(String(passport));\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidLandlinePhone } from \"../is-valid-landline-phone/is-valid-landline-phone\";\nimport { isValidMobilePhone } from \"../is-valid-mobile-phone/is-valid-mobile-phone\";\nimport { PHONE_MAX_LENGTH, PHONE_MIN_LENGTH } from \"./constants\";\n\nexport type PhoneVersion = 1 | 2;\n\nexport type IsValidPhoneOptions = {\n\tversion?: PhoneVersion;\n};\n\n/**\n * Validates a Brazilian phone number.\n *\n * @param {string} value - The phone number to validate.\n * @param {IsValidPhoneOptions} options - Optional validation options.\n * @returns {boolean} True if the phone number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidPhone(\"(11) 98765-4321\"); // true\n * isValidPhone(\"11987654321\", { version: 2 }); // true\n * isValidPhone(\"1130000000\"); // true (landline)\n * ```\n */\nexport const isValidPhone = (value: string, options?: IsValidPhoneOptions): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length === PHONE_MIN_LENGTH) {\n\t\treturn isValidLandlinePhone(value);\n\t}\n\n\tif (digits.length === PHONE_MAX_LENGTH) {\n\t\treturn isValidMobilePhone(value, options);\n\t}\n\n\treturn false;\n};\n","export const LENGTH = 11;\n\nexport const RESERVED_NUMBERS = [\n\t\"00000000000\",\n\t\"11111111111\",\n\t\"22222222222\",\n\t\"33333333333\",\n\t\"44444444444\",\n\t\"55555555555\",\n\t\"66666666666\",\n\t\"77777777777\",\n\t\"88888888888\",\n\t\"99999999999\",\n];\n","import { generateChecksum } from \"../_internals/generate-checksum/generate-checksum\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH, RESERVED_NUMBERS } from \"./constants\";\n\nconst RESERVED_SET = new Set(RESERVED_NUMBERS);\n\nconst WEIGHTS = [3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * Validates a Brazilian PIS (Programa de Integração Social) number.\n *\n * @param {string} pis - The PIS number to validate.\n * @returns {boolean} True if the PIS number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidPis(\"120.56874.10-7\"); // true\n * isValidPis(\"12056874107\"); // true\n * isValidPis(\"00000000000\"); // false (reserved number)\n * ```\n */\nexport const isValidPis = (pis: string): boolean => {\n\tif (!pis || typeof pis !== \"string\") return false;\n\n\t// Check if contains invalid characters (letters that are not separators)\n\t// Valid separators: space, parentheses, dots, commas, asterisks, hyphens\n\tconst hasInvalidChars = /[^0-9 ().,*-]/.test(pis);\n\n\tif (hasInvalidChars) return false;\n\n\tconst digits = sanitizeToDigits(pis);\n\n\tif (digits.length !== LENGTH) return false;\n\n\tif (RESERVED_SET.has(digits)) return false;\n\n\tconst base = digits.substring(0, LENGTH - 1);\n\tconst checkDigit = digits.charCodeAt(LENGTH - 1) - 48;\n\n\tconst weightedChecksum = generateChecksum({ base, weight: WEIGHTS });\n\tconst calculatedDigit = 11 - (weightedChecksum % 11);\n\n\tconst finalDigit = calculatedDigit >= 10 ? 0 : calculatedDigit;\n\n\treturn checkDigit === finalDigit;\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport {\n\tCHECK_DIGIT_LENGTH,\n\tCHECK_DIGIT_START_POSITION,\n\tLENGTH,\n\tMOD_97_10_QUOTIENT,\n\tMOD_97_10_SUM,\n} from \"./constants\";\n\nconst verifyCheckDigit = (value: string): boolean => {\n\tconst verificationDigits = Number.parseInt(\n\t\tvalue.substring(CHECK_DIGIT_START_POSITION, CHECK_DIGIT_START_POSITION + CHECK_DIGIT_LENGTH),\n\t\t10,\n\t);\n\n\tconst withoutCheck =\n\t\tvalue.substring(0, CHECK_DIGIT_START_POSITION) +\n\t\tvalue.substring(CHECK_DIGIT_START_POSITION + CHECK_DIGIT_LENGTH);\n\n\tlet digits1to11 = 0;\n\tfor (let i = 0; i < 11; i++) {\n\t\tdigits1to11 += (withoutCheck.charCodeAt(i) - 48) * 10 ** (10 - i);\n\t}\n\tconst firstRemainder = digits1to11 % MOD_97_10_QUOTIENT;\n\n\tlet digits12to18 = 0;\n\tfor (let i = 11; i < 18; i++) {\n\t\tdigits12to18 += (withoutCheck.charCodeAt(i) - 48) * 10 ** (6 - (i - 11));\n\t}\n\n\tconst secondRemainder =\n\t\t(firstRemainder * 1_000_000_000 + digits12to18 * 100) % MOD_97_10_QUOTIENT;\n\n\tconst verifier = MOD_97_10_SUM - secondRemainder;\n\n\treturn verifier === verificationDigits;\n};\n\n/**\n * Validates a Brazilian Processo Jurídico (court case) number.\n *\n * @param {string} value - The Processo Jurídico number to validate.\n * @returns {boolean} True if the Processo Jurídico number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidProcessoJuridico(\"00020802520125150049\"); // true\n * isValidProcessoJuridico(\"0002080-25.2012.515.0049\"); // true\n * ```\n */\nexport const isValidProcessoJuridico = (value: string): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length !== LENGTH) return false;\n\n\treturn verifyCheckDigit(digits);\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst RENAVAM_LENGTH = 11;\n\n/**\n * Pads a string with zeros on the left to reach the desired length.\n *\n * @param {string} input - The input string to pad.\n * @param {number} padLength - The desired length after padding.\n * @returns {string} The padded string.\n */\nconst padLeft = (input: string, padLength: number): string => {\n\tconst currentLength = input.length;\n\tif (currentLength >= padLength) return input;\n\treturn \"0\".repeat(padLength - currentLength) + input;\n};\n\n/**\n * Validates if a RENAVAM (Registro Nacional de Veículos Automotores) is valid.\n *\n * RENAVAM can be in two formats:\n * - Old format: 9 digits (will be padded to 11 with zeros)\n * - New format: 11 digits\n *\n * The validation uses a checksum algorithm based on modulo 11.\n *\n * @param {string} renavam - The RENAVAM value to be validated.\n * @returns {boolean} True if the RENAVAM is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidRenavam(\"639884962\"); // true (9 digits, old format)\n * isValidRenavam(\"00639884962\"); // true (11 digits, new format)\n * isValidRenavam(\"12345678901\"); // false (invalid checksum)\n * ```\n */\nexport const isValidRenavam = (renavam: string | number): boolean => {\n\tif (!renavam) return false;\n\n\tconst digits = sanitizeToDigits(renavam);\n\n\tif (digits.length !== 9 && digits.length !== 11) return false;\n\n\tconst paddedDigits = padLeft(digits, RENAVAM_LENGTH);\n\n\tif (!/^\\d{11}$/.test(paddedDigits)) return false;\n\n\tconst renavamWithoutDigit = paddedDigits.substring(0, 10);\n\n\tconst reversedRenavam = renavamWithoutDigit.split(\"\").reverse().join(\"\");\n\n\tlet sum = 0;\n\tlet multiplier = 2;\n\tfor (let i = 0; i < 10; i++) {\n\t\tconst digit = Number.parseInt(reversedRenavam[i] ?? \"0\", 10);\n\t\tsum += digit * multiplier;\n\n\t\tif (multiplier >= 9) {\n\t\t\tmultiplier = 2;\n\t\t} else {\n\t\t\tmultiplier++;\n\t\t}\n\t}\n\n\tconst mod11 = sum % 11;\n\n\tlet expectedDigit = 11 - mod11;\n\n\tif (expectedDigit >= 10) {\n\t\texpectedDigit = 0;\n\t}\n\n\tconst actualDigit = Number.parseInt(paddedDigits[10] ?? \"0\", 10);\n\n\treturn expectedDigit === actualDigit;\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst isValidLength = (value: string): boolean => {\n\tif (value.length === 12) return true;\n\n\tconst federativeUnion = value.slice(-4, -2);\n\treturn value.length === 13 && (federativeUnion === \"01\" || federativeUnion === \"02\");\n};\n\nconst calculateFirstDigit = ({\n\tsequentialNumber,\n\tfederativeUnion,\n}: {\n\tsequentialNumber: string;\n\tfederativeUnion: string;\n}): number => {\n\tlet sum = 0;\n\n\tfor (let i = 0; i < 8; i++) {\n\t\tsum += (sequentialNumber.charCodeAt(i) - 48) * (i + 2);\n\t}\n\n\tconst remainder = sum % 11;\n\n\tif (remainder === 0 && (federativeUnion === \"01\" || federativeUnion === \"02\")) {\n\t\treturn 1;\n\t}\n\n\treturn remainder === 10 ? 0 : remainder;\n};\n\nconst calculateSecondDigit = ({\n\tfederativeUnion,\n\tfirstDigit,\n}: {\n\tfederativeUnion: string;\n\tfirstDigit: number;\n}): number => {\n\tconst sum =\n\t\t(federativeUnion.charCodeAt(0) - 48) * 7 +\n\t\t(federativeUnion.charCodeAt(1) - 48) * 8 +\n\t\tfirstDigit * 9;\n\n\tconst remainder = sum % 11;\n\n\tif ((federativeUnion === \"01\" || federativeUnion === \"02\") && remainder === 0) {\n\t\treturn 1;\n\t}\n\n\treturn remainder === 10 ? 0 : remainder;\n};\n\nexport const isValidVoterId = (value: string): boolean => {\n\tif (!value || typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (!isValidLength(digits)) return false;\n\n\tconst sequentialNumber = digits.slice(0, 8);\n\tconst federativeUnion = digits.slice(-4, -2);\n\tconst verifier = digits.slice(-2);\n\n\tconst ufCode = Number(federativeUnion);\n\n\tif (!Number.isInteger(ufCode) || ufCode < 1 || ufCode > 28) return false;\n\n\tconst digit1 = calculateFirstDigit({ sequentialNumber, federativeUnion });\n\tconst digit2 = calculateSecondDigit({ federativeUnion, firstDigit: digit1 });\n\n\treturn verifier === `${digit1}${digit2}`;\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"../format-boleto/constants\";\n\n/**\n * Removes boleto formatting characters and returns only digits.\n *\n * @param {string|number} value - The boleto value to be parsed.\n * @returns {string} The boleto value without formatting.\n */\nexport const parseBoleto = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"../format-cep/constants\";\n\n/**\n * Removes CEP formatting characters and returns only digits.\n *\n * @param {string|number} value - The CEP value to be parsed.\n * @returns {string} The CEP value without formatting.\n */\nexport const parseCep = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\nexport const parseCnh = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"../format-cnpj/constants\";\nimport type { FormatCnpjOptions } from \"../format-cnpj/format-cnpj\";\n\nconst sanitize = (value: string | number, version?: FormatCnpjOptions[\"version\"]): string => {\n\tif (version === 2) {\n\t\treturn sanitizeToAlphanumeric(value);\n\t}\n\n\treturn sanitizeToDigits(value);\n};\n\n/**\n * Removes CNPJ formatting characters and returns a normalized value.\n *\n * @param {string|number} value - The CNPJ value to be parsed.\n * @param {Object} options - Optional parsing options.\n * @param {1|2} options.version - The CNPJ version to normalize.\n * @returns {string} The CNPJ value without formatting.\n */\nexport const parseCnpj = (\n\tvalue: string | number,\n\toptions?: Pick<FormatCnpjOptions, \"version\">,\n): string => sanitize(value, options?.version).slice(0, LENGTH);\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"../format-cpf/constants\";\n\n/**\n * Removes CPF formatting characters and returns only digits.\n *\n * @param {string|number} value - The CPF value to be parsed.\n * @returns {string} The CPF value without formatting.\n */\nexport const parseCpf = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Parses a string representing Brazilian currency format into a number.\n * Removes all non-digit characters and converts the result to a decimal number.\n *\n * @param {string} value - The string value to be parsed (e.g., \"R$ 1.234,56\" or \"1234,56\")\n * @returns {number} The parsed number value (e.g., 1234.56)\n *\n * @example\n * ```typescript\n * parseCurrency(\"R$ 1.234,56\"); // returns 1234.56\n * parseCurrency(\"1234,56\"); // returns 1234.56\n * parseCurrency(\"R$ 0,50\"); // returns 0.50\n * parseCurrency(\"\"); // returns 0\n * ```\n */\nexport const parseCurrency = (value: string): number => {\n\tif (!value || typeof value !== \"string\") return 0;\n\n\tconst digits = sanitizeToDigits(value) || \"0\";\n\n\treturn Number.parseInt(digits, 10) / 100;\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\nexport const parseLegalNature = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes non-alphanumeric characters from a passport number, uppercases it, and caps it to 8 characters.\n *\n * @param passport - The string containing a passport number.\n * @returns The normalized passport number.\n *\n * @example\n * parsePassport(\"Ab123456\") // \"AB123456\"\n * parsePassport(\"Ab-123456\") // \"AB123456\"\n * parsePassport(\"Ab -. 123456\") // \"AB123456\"\n */\nexport const parsePassport = (passport: string): string => {\n\tif (!passport || typeof passport !== \"string\") return \"\";\n\treturn sanitizeToAlphanumeric(passport).slice(0, LENGTH);\n};\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes phone formatting characters, returns only digits, and caps the result to 11 digits.\n *\n * @param {string|number} value - The phone value to be parsed.\n * @returns {string} The phone value without formatting.\n */\nexport const parsePhone = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"../format-pis/constants\";\n\n/**\n * Removes PIS formatting characters and returns only digits.\n *\n * @param {string|number} value - The PIS value to be parsed.\n * @returns {string} The PIS value without formatting.\n */\nexport const parsePis = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"../format-processo-juridico/constants\";\n\n/**\n * Removes legal process formatting characters and returns only digits.\n *\n * @param {string|number} value - The legal process value to be parsed.\n * @returns {string} The legal process value without formatting.\n */\nexport const parseProcessoJuridico = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n","import { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\nexport const parseVoterId = (value: string | number): string =>\n\tsanitizeToDigits(value).slice(0, LENGTH);\n"],"mappings":"sRAAA,IAAa,EAAW,CAAC,MAAO,OAAQ,MAAO,OAAQ,KAAM,KAAK,CAErD,EAAe,CAC3B,IACA,MACA,KACA,MACA,KACA,KACA,MACA,IACA,KACA,KACA,MACA,KACA,MACA,IACA,MACA,MACA,CCCY,GACZ,EACA,CAAE,iBAAiB,EAAc,iBAAiB,GAAgC,EAAE,GACxE,CACZ,IAAM,EAAe,IAAI,IAAI,EAAe,CAEtC,EAAe,IAAI,IAAI,EAAe,CAEtC,EAAQ,EAAM,MAAM,IAAI,CAExB,EAAmB,EAAE,CAE3B,IAAK,IAAI,EAAI,EAAG,EAAM,EAAM,OAAQ,EAAI,EAAK,IAAK,CACjD,IAAM,EAAO,EAAM,GAEnB,GAAI,CAAC,EAAM,SAEX,IAAM,EAAgB,EAAK,mBAAmB,CAE9C,GAAI,EAAI,GAAK,EAAa,IAAI,EAAc,CAAE,CAC7C,EAAO,KAAK,EAAc,CAC1B,SAGD,IAAM,EAAgB,EAAK,mBAAmB,CAE9C,GAAI,EAAa,IAAI,EAAc,CAAE,CACpC,EAAO,KAAK,EAAc,CAC1B,SAGD,EAAO,KAAK,EAAc,OAAO,EAAE,CAAG,EAAc,MAAM,EAAE,CAAC,CAG9D,OAAO,EAAO,KAAK,IAAI,ECrCX,GAAU,CAAE,MAAK,QAAO,aAAoC,CACxE,IAAI,EAAY,GACZ,EAAa,EAEjB,GAAI,EAAK,CACR,IAAM,EAAmB,EAAQ,QAAQ,KAAM,GAAG,CAAC,OACnD,EAAQ,EAAM,SAAS,EAAQ,OAAS,EAAkB,IAAI,CAG/D,IAAK,IAAM,KAAQ,EAClB,GAAI,IAAS,IAAK,CACjB,GAAI,GAAc,EAAM,OAAQ,MAChC,GAAa,EAAM,UACT,EAAa,EAAM,SAC7B,GAAa,GAIf,OAAO,GCrBK,EAAoB,GAChC,EAAM,UAAU,CAAC,QAAQ,MAAO,GAAG,CCFvB,GAAgB,EAAwB,IACpD,EAAO,CACN,IAAK,GAAS,IACd,MAAO,EAAiB,EAAM,CAC9B,QAAS,yDACT,CAAC,CCLU,GAAa,EAAwB,IACjD,EAAO,CACN,IAAK,GAAS,IACd,MAAO,EAAiB,EAAM,CAC9B,QAAS,YACT,CAAC,CCbU,GAAa,EAAwB,IACjD,EAAO,CACN,IAAK,GAAS,IACd,MAAO,EAAiB,EAAM,CAC9B,QAAS,eACT,CAAC,CCGU,EAA0B,GACtC,EACE,UAAU,CACV,QAAQ,gBAAiB,GAAG,CAC5B,aAAa,CCXV,GAAY,EAAwB,IACrC,IAAY,EACR,EAAuB,EAAM,CAG9B,EAAiB,EAAM,CAqBlB,GAAc,EAAwB,IAClD,EAAO,CACN,IAAK,GAAS,IACd,MAAO,EAAS,EAAO,GAAS,QAAQ,CACxC,QAAS,qBACT,CAAC,CClBU,GAAa,EAAwB,IACjD,EAAO,CACN,IAAK,GAAS,IACd,MAAO,EAAiB,EAAM,CAC9B,QAAS,iBACT,CAAC,CCDU,GAAkB,EAAwB,IAA4C,CAClG,IAAM,EACL,OAAO,GAAU,SAAW,OAAO,WAAW,EAAiB,EAAM,EAAI,IAAI,CAAG,EAEjF,OAAO,IAAI,KAAK,aAAa,QAAS,CACrC,MAAO,GAAS,OAAS,WAAa,UACtC,SAAU,MACV,gBAAiB,GAAS,OAAS,SAAW,IAAA,GAC9C,sBAAuB,GAAS,WAAa,EAC7C,sBAAuB,GAAS,WAAa,EAC7C,CAAC,CACA,OAAO,EAAc,CACrB,QAAQ,OAAK,IAAI,EChCP,GAAqB,GACjC,EAAO,CACN,MAAO,EAAiB,EAAM,CAC9B,QAAS,QACT,CAAC,CCJU,EAAqB,GAC7B,CAAC,GAAS,OAAO,GAAU,SAAiB,GACzC,EAAuB,EAAM,CAAC,MAAM,EAAA,EAAU,CCLzC,GAAmB,qBACnB,GAAqB,+BACrB,GAA4B,+BCG5B,EAAyB,GAA6C,CAClF,IAAM,EAAS,EAAkB,EAAM,CAMvC,OAJI,GAAiB,KAAK,EAAO,CAAS,UACtC,GAAmB,KAAK,EAAO,CAAS,UACxC,GAA0B,KAAK,EAAO,CAAS,UAE5C,MCRK,GAAsB,GAA0B,CAC5D,IAAM,EAAS,EAAkB,EAAM,CAEvC,GAAI,CAAC,EAAQ,MAAO,GAEpB,IAAM,EAAS,EAAsB,EAAO,CAE5C,GAAI,IAAW,UACd,MAAO,GAAG,EAAO,MAAM,EAAA,EAA8B,CAAC,GAAG,EAAO,MAAA,EAAiC,GAGlG,GAAI,EAAQ,OAAO,EAEnB,GAAI,CAAC,eAAe,KAAK,EAAO,MAAM,EAAG,KAAK,IAAI,EAAO,OAAA,EAAmC,CAAC,CAAC,CAC7F,MAAO,GAGR,GAAI,EAAO,QAAA,EAAsC,OAAO,EAExD,IAAM,EAAO,EAAO,MAAA,EAAiC,CAUrD,MARI,YAAY,KAAK,EAAK,CAClB,GAAG,EAAO,MAAM,EAAA,EAA8B,CAAC,GAAG,IAGtD,mBAAmB,KAAK,EAAK,EAAI,kBAAkB,KAAK,EAAK,CACzD,EAGD,IClBK,GAAkB,GAC1B,CAAC,GAAY,OAAO,GAAa,SAAiB,GAC/C,EAAuB,EAAS,CAAC,MAAM,EAAA,EAAU,CCRnD,GAA+B,CACpC,GAAI,EACJ,KAAM,GACN,CAEK,GAA6B,CAClC,GAAI,aACJ,KAAM,kBACN,CAUY,IAAe,EAAwB,IAAyC,CAC5F,IAAI,EAAO,GAAS,MAAQ,KAEtB,EAAgB,EAAiB,EAAM,CAM7C,OAJI,IAAS,SACZ,EAAO,EAAc,OAAS,GAAO,GAAK,OAAS,MAG7C,EAAO,CAAE,MAAO,EAAe,QAAS,GAAK,GAAO,CAAC,EChBhD,IAAa,EAAwB,IACjD,EAAO,CACN,IAAK,GAAS,IACd,MAAO,EAAiB,EAAM,CAC9B,QAAS,iBACT,CAAC,CCZU,IACZ,EACA,IAEA,EAAO,CACN,IAAK,GAAS,IACd,MAAO,EAAiB,EAAM,CAC9B,QAAS,2BACT,CAAC,CClBU,GAAiB,GAC7B,EAAO,CAAE,MAAO,EAAiB,EAAM,CAAE,QAAS,kBAAmB,CAAC,CCS1D,EAAwB,GAA2B,CAC/D,IAAI,EAAS,GACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,IAC3B,GAAU,KAAK,MAAM,KAAK,QAAQ,CAAG,GAAG,CAAC,UAAU,CAEpD,OAAO,GCPK,EAAS,GAAwB,CAC7C,IAAI,EAAM,EACJ,EAAM,EAAI,OAChB,IAAK,IAAI,EAAI,EAAM,EAAG,GAAK,EAAG,IAAK,CAElC,IAAM,GADQ,EAAI,WAAW,EAAE,CAAG,KACT,EAAM,EAAI,EAAK,EAAI,EAAI,GAChD,GAAO,EAAS,EAAI,EAAS,EAAI,EAElC,IAAM,EAAM,EAAM,GAClB,OAAO,EAAM,EAAI,GAAK,EAAM,GCThB,EAAS,GAAwB,CAC7C,IAAI,EAAS,EACT,EAAM,EACV,IAAK,IAAI,EAAI,EAAI,OAAS,EAAG,GAAK,EAAG,IAAK,CACzC,IAAM,EAAQ,EAAI,WAAW,EAAE,CAAG,GAClC,GAAO,EAAQ,EACf,EAAS,EAAS,EAAI,EAAS,EAAI,EAEpC,IAAM,EAAM,EAAM,GAClB,OAAO,IAAQ,GAAK,IAAQ,EAAI,EAAI,GAAK,GCN7B,OAA+B,CAC3C,IAAM,EAAO,MAAM,KAAa,CAAE,OAAQ,GAAI,CAAC,CAEzC,EAAS,EAAqB,EAAE,CACtC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IAAK,EAAK,GAAK,EAAO,GAC7C,EAAK,GAAK,EAAM,EAAO,CAAC,UAAU,CAElC,IAAM,EAAS,EAAqB,GAAG,CACvC,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,EAAK,GAAK,GAAK,EAAO,GACnD,EAAK,IAAM,EAAM,EAAO,CAAC,UAAU,CAEnC,IAAM,EAAS,EAAqB,GAAG,CACvC,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,EAAK,GAAK,GAAK,EAAO,GACnD,EAAK,IAAM,EAAM,EAAO,CAAC,UAAU,CAEnC,IAAM,EAAa,EAAqB,GAAG,CAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,EAAK,GAAK,GAAK,EAAW,GAcvD,MAFA,GAAK,IAHa,EANjB,EAAK,MAAM,EAAG,EAAE,CAAC,KAAK,GAAG,CACzB,EAAK,MAAM,GAAI,GAAG,CAAC,KAAK,GAAG,CAC3B,EAAK,MAAM,EAAG,EAAE,CAAC,KAAK,GAAG,CACzB,EAAK,MAAM,GAAI,GAAG,CAAC,KAAK,GAAG,CAC3B,EAAK,MAAM,GAAI,GAAG,CAAC,KAAK,GAAG,CAEe,CAGtB,UAAU,CAExB,EAAK,KAAK,GAAG,EC1CR,OAA4B,EAAqB,EAAE,CCA1D,GAA0B,GAA+D,CAC9F,IAAI,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACtB,IAAQ,EAAK,WAAW,EAAE,CAAG,KAAO,EAAI,GAGzC,IAAM,EAAY,EAAM,GAMxB,OAJI,GAAa,GACT,CAAE,cAAe,EAAG,UAAW,EAAG,CAGnC,CAAE,cAAe,EAAW,UAAW,EAAG,EAG5C,IAA2B,CAChC,OACA,eAIa,CACb,IAAI,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACtB,IAAQ,EAAK,WAAW,EAAE,CAAG,KAAO,EAAI,GAGzC,IAAI,EAAkB,EAAM,GAAM,EAKlC,OAHI,EAAiB,IAAG,GAAkB,IACtC,GAAkB,KAAI,EAAiB,GAEpC,GAGK,OAA4B,CACxC,IAAI,EAAO,EAAqB,EAAE,CAElC,KAAO,YAAY,KAAK,EAAK,EAC5B,EAAO,EAAqB,EAAE,CAG/B,GAAM,CAAE,gBAAe,aAAc,GAAuB,EAAK,CAC3D,EAAiB,GAAwB,CAAE,OAAM,YAAW,CAAC,CAEnE,MAAO,GAAG,IAAO,IAAgB,KC1ClC,SAAgB,EAAiB,CAAE,OAAM,UAA0C,CAClF,IAAM,EAAS,EAAiB,EAAK,CAEjC,EAAM,EAEJ,EAAM,EAAO,OAEnB,GAAI,OAAO,GAAW,SAAU,CAC/B,IAAI,EAAI,EACR,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,IAAK,IAAK,CAClC,IAAM,EAAQ,EAAO,WAAW,EAAE,CAAG,GACrC,GAAO,EAAQ,QAGhB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,IAAK,CAC7B,IAAM,EAAQ,EAAO,WAAW,EAAE,CAAG,GACrC,GAAO,EAAQ,EAAO,GAIxB,OAAO,ECxBR,IAAM,GAAc,GAEd,EAA4B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAEhE,EAA6B,CAAC,EAAG,GAAG,EAA0B,CAE9D,GAAmB,mCAEnB,OACL,GAAiB,KAAK,MAAM,KAAK,QAAQ,CAAG,GAAwB,EAE/D,OAA6C,CAClD,IAAI,EAAO,GACX,IAAK,IAAI,EAAI,EAAG,EAAI,GAAa,IAChC,GAAQ,IAAwB,CAEjC,OAAO,GAGF,GAAmB,GAAyB,EAAK,WAAW,EAAE,CAAG,GAEjE,IAAgC,EAAc,IAA8B,CACjF,IAAI,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAChC,GAAO,GAAgB,EAAK,GAAG,CAAG,EAAQ,GAE3C,OAAO,GAGF,GAAuB,EAAc,IAA8B,CACxE,IAAM,EAAM,EAAiB,CAAE,OAAM,OAAQ,EAAS,CAAC,CAAG,GAC1D,OAAQ,EAAM,EAAI,EAAI,GAAK,GAAK,UAAU,EAGrC,GAAmC,EAAc,IAA8B,CACpF,IAAM,EAAM,GAA6B,EAAM,EAAQ,CAAG,GAC1D,OAAQ,EAAM,EAAI,EAAI,GAAK,GAAK,UAAU,EAGrC,OAAoC,CACzC,IAAM,EAAO,EAAqB,GAAY,CACxC,EAAkB,EAAoB,EAAM,EAA0B,CACtE,EAAmB,EAAoB,EAAO,EAAiB,EAA2B,CAChG,OAAO,EAAO,EAAkB,GAG3B,OAAyC,CAC9C,IAAM,EAAO,IAA8B,CACrC,EAAkB,EAAgC,EAAM,EAA0B,CAClF,EAAmB,EACxB,EAAO,EACP,EACA,CACD,OAAO,EAAO,EAAkB,GAepB,EAAgB,IACP,GAAW,KACX,EAAU,IAAqB,CAC7C,IAA0B,CCrErB,EAAyC,CACrD,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,CC5BK,GAAoB,IAAI,IAAI,OAAO,KAAK,EAAY,CAAC,CAErD,GAAgB,GACjB,GAAS,GAAkB,IAAI,EAAM,CAAS,EAAY,GACvD,EAAqB,EAAE,CAGzB,GAAuB,EAAc,IAA2B,CACrE,IAAM,EAAM,EAAiB,CAAE,OAAM,SAAQ,CAAC,CAAG,GACjD,OAAQ,EAAM,EAAI,EAAI,GAAK,GAAK,UAAU,EAe9B,EAAe,GAA8B,CACzD,IAAM,EAAO,EAAA,EAAiC,CAAG,GAAa,EAAM,CAC9D,EAAkB,EAAoB,EAAM,GAAG,CAC/C,EAAmB,EAAoB,EAAO,EAAiB,GAAG,CACxE,OAAO,EAAO,EAAkB,GCjCpB,EAAuC,CACnD,KAAQ,2CACR,KAAQ,mEACR,KAAQ,6CACR,KAAQ,6CACR,KAAQ,qEACR,KAAQ,+CACR,KAAQ,4CACR,KAAQ,6CACR,KAAQ,oBACR,KAAQ,4CACR,KAAQ,sBACR,KAAQ,mBACR,KAAQ,2CACR,KAAQ,qBACR,KAAQ,kCACR,KAAQ,yDACR,KAAQ,mCACR,KAAQ,kBACR,KAAQ,8BACR,KAAQ,2BACR,KAAQ,4BACR,KAAQ,gCACR,KAAQ,wCACR,KAAQ,4CACR,KAAQ,8CACR,KAAQ,qEACR,KAAQ,gDACR,KAAQ,0BACR,KAAQ,cACR,KAAQ,0BACR,KAAQ,sBACR,KAAQ,uDACR,KAAQ,yEACR,KAAQ,6BACR,KAAQ,kCACR,KAAQ,8BACR,KAAQ,yBACR,KAAQ,6BACR,KAAQ,6BACR,KAAQ,iCACR,KAAQ,6CACR,KAAQ,kDACR,KAAQ,0CACR,KAAQ,qBACR,KAAQ,8DACR,KAAQ,4DACR,KAAQ,0BACR,KAAQ,uBACR,KAAQ,yDACR,KAAQ,iCACR,KAAQ,oCACR,KAAQ,mBACR,KAAQ,oBACR,KAAQ,qEACR,KAAQ,iDACR,KAAQ,8BACR,KAAQ,iCACR,KAAQ,oBACR,KAAQ,0BACR,KAAQ,oEACR,CC3DK,GAAqB,OAAO,KAAK,EAAa,CAEvC,OACZ,GAAmB,KAAK,MAAM,KAAK,QAAQ,CAAG,GAAmB,OAAO,ECLnE,GAAU,6BAIV,OAA6B,GAAQ,KAAK,MAAM,KAAK,QAAQ,CAAG,GAAe,EAE/E,OAA4B,KAAK,MAAM,KAAK,QAAQ,CAAG,GAAG,CAAC,UAAU,CAE9D,IAAwB,EAAqC,YAClE,EACL,MAAM,GAAG,CACT,IAAK,GAAU,IAAS,IAAM,IAAc,CAAG,IAAa,CAAE,CAC9D,KAAK,GAAG,CCAE,OAOL,GANS,MAAM,KAAK,CAAE,OAAA,EAAwB,KACpD,OAAO,aAAA,GAA2B,KAAK,MAAM,KAAK,QAAQ,CAAA,GAAmB,CAAC,CAC9E,CAAC,KAAK,GAAG,GAEK,EAAA,EAAmC,GCdtC,EAAmB,CAC/B,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,CClEK,OACL,EAAiB,KAAK,MAAM,KAAK,QAAQ,CAAG,EAAiB,OAAO,EAAE,UAAU,CAEpE,GAAiB,GAAqC,CAClE,IAAM,EAAW,IAAgB,CAUjC,OARI,IAAS,WACL,GAAG,IAAW,EAAI,KAAK,MAAM,KAAK,QAAQ,CAAG,EAAE,GAAG,EAAqB,EAAE,GAG7E,IAAS,SACL,GAAG,EAAS,GAAG,EAAqB,EAAE,GAGhB,GAAvB,KAAK,QAAQ,EAAI,GAAoB,SAA0B,WAAW,ECjB5E,GAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAExC,GAAuB,GAAyB,CAErD,IAAM,EAAQ,GADF,EAAK,MAAM,GAAG,CAAC,QAAQ,EAAK,EAAO,IAAU,EAAM,OAAO,EAAM,CAAG,GAAQ,GAAQ,EAAE,CACvE,GAC1B,OAAO,GAAS,GAAK,IAAM,EAAM,UAAU,EAG/B,OAA4B,CACxC,IAAM,EAAO,EAAqB,GAAG,CACrC,MAAO,GAAG,IAAO,GAAoB,EAAK,ICLrC,GAAwB,IACZ,IAAQ,OAAO,EAAK,CAAG,KAAQ,KAChC,UAAU,CAAC,SAAS,EAAG,IAAI,CAG/B,IACZ,EAA2C,EAAE,GAC1B,CACnB,GAAM,CAAE,OAAO,IAAI,MAAM,CAAC,aAAa,CAAE,QAAQ,KAAK,MAAM,KAAK,QAAQ,CAAG,EAAE,CAAG,GAAM,EACjF,EAAc,IAAI,MAAM,CAAC,aAAa,CAE5C,GACC,CAAC,OAAO,UAAU,EAAK,EACvB,EAAO,GACP,CAAC,OAAO,UAAU,EAAM,EACxB,EAAQ,GACR,EAAQ,EAER,OAAO,KAGR,IAAM,EAAa,EAAqB,EAAE,CACpC,EAAW,EAAqB,EAAE,CAClC,EAAO,EAAqB,EAAE,CAIpC,MAAO,GAAG,IAFU,GADP,GAAG,IAAa,IAAO,IAAQ,IAAW,IACT,GAET,IAAO,IAAQ,IAAW,KChCnD,GAAwD,CACpE,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,GAAI,KACJ,CC3BK,IAAuB,CAC5B,mBACA,qBAIa,CACb,IAAI,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACtB,IAAQ,EAAiB,WAAW,EAAE,CAAG,KAAO,EAAI,GAGrD,IAAM,EAAY,EAAM,GAMxB,OAJI,IAAc,IAAM,IAAoB,MAAQ,IAAoB,MAChE,EAGD,IAAc,GAAK,EAAI,GAGzB,IAAwB,CAC7B,kBACA,gBAIa,CAMb,IAAM,IAJJ,EAAgB,WAAW,EAAE,CAAG,IAAM,GACtC,EAAgB,WAAW,EAAE,CAAG,IAAM,EACvC,EAAa,GAEU,GAMxB,OAJK,IAAoB,MAAQ,IAAoB,OAAS,IAAc,EACpE,EAGD,IAAc,GAAK,EAAI,GAGlB,IAAmB,EAA0B,OAAiB,CAC1E,IAAM,EAAkB,GAAoB,GACtC,EAAmB,EAAqB,EAAE,CAC1C,EAAS,GAAoB,CAAE,mBAAkB,kBAAiB,CAAC,CAGzE,MAAO,GAAG,IAAmB,IAAkB,IAFhC,GAAqB,CAAE,kBAAiB,WAAY,EAAQ,CAAC,ICnChE,EAAc,GACtB,CAAC,GAAO,OAAO,GAAQ,SAAiB,GAE7B,EAAiB,EAAI,CAEtB,SAAA,ECfF,EAAb,cAA8C,KAAM,CACnD,YAAY,EAAiB,CAC5B,MAAM,EAAQ,CACd,KAAK,KAAO,6BAID,EAAb,cAAwD,CAAyB,CAChF,YAAY,EAAiB,CAC5B,MAAM,EAAQ,CACd,KAAK,KAAO,uCAID,EAAb,cAAsD,CAAyB,CAC9E,YAAY,EAAiB,CAC5B,MAAM,EAAQ,CACd,KAAK,KAAO,qCAID,EAAb,cAAqD,CAAyB,CAC7E,YAAY,EAAiB,CAC5B,MAAM,EAAQ,CACd,KAAK,KAAO,oCAkHR,EAA0E,CAC/E,OAnEmB,KAAO,IAAsC,CAChE,IAAM,EAAW,MAAM,MAAM,4BAA4B,EAAI,QAAQ,CAErE,GAAI,CAAC,EAAS,GACb,MAAU,MAAM,qCAAqC,EAAS,SAAS,CAGxE,IAAM,EAAQ,MAAM,EAAS,MAAM,CAEnC,GAAI,EAAK,MAAQ,CAAC,EAAK,IACtB,MAAM,IAAI,EAAiC,qBAAqB,CAGjE,MAAO,CACN,IAAK,EAAK,IAAI,QAAQ,MAAO,GAAG,CAChC,MAAO,EAAK,IAAM,GAClB,KAAM,EAAK,YAAc,GACzB,aAAc,EAAK,QAAU,GAC7B,OAAQ,EAAK,YAAc,GAC3B,EAiDD,QA9CoB,KAAO,IAAsC,CACjE,IAAM,EAAW,MAAM,MAAM,iDAAiD,EAAI,OAAO,CAEzF,GAAI,CAAC,EAAS,GACb,MAAU,MAAM,sCAAsC,EAAS,SAAS,CAGzE,IAAM,EAAQ,MAAM,EAAS,MAAM,CAEnC,GAAI,EAAK,SAAW,KAAO,CAAC,EAAK,IAAM,CAAC,EAAK,KAC5C,MAAM,IAAI,EAAiC,qBAAqB,CAGjE,MAAO,CACN,IAAK,EAAK,KAAK,QAAQ,MAAO,GAAG,CACjC,MAAO,EAAK,OAAS,GACrB,KAAM,EAAK,MAAQ,GACnB,aAAc,EAAK,UAAY,GAC/B,OAAQ,EAAK,SAAW,GACxB,EA4BD,UAzBsB,KAAO,IAAsC,CACnE,IAAM,EAAW,MAAM,MAAM,uCAAuC,IAAM,CAE1E,GAAI,CAAC,EAAS,GACb,MAAU,MAAM,wCAAwC,EAAS,SAAS,CAG3E,IAAM,EAAQ,MAAM,EAAS,MAAM,CAEnC,GAAI,EAAK,QAAU,CAAC,EAAK,IACxB,MAAM,IAAI,EAAiC,qBAAqB,CAGjE,MAAO,CACN,IAAK,EAAK,IAAI,QAAQ,MAAO,GAAG,CAChC,MAAO,EAAK,OAAS,GACrB,KAAM,EAAK,MAAQ,GACnB,aAAc,EAAK,cAAgB,GACnC,OAAQ,EAAK,QAAU,GACvB,EAOD,CA4BY,GAAsB,MAClC,EACA,IAC0B,CAC1B,IAAI,EAAY,EAAiB,EAAI,CAMrC,GAJI,OAAO,GAAQ,UAAY,EAAU,OAAS,IACjD,EAAY,EAAU,SAAS,EAAG,IAAI,EAGnC,CAAC,EAAW,EAAU,CACzB,MAAM,IAAI,EAAmC,eAAe,CAG7D,IAAI,EACJ,GAAI,GAAS,YAAc,IAAA,GAK1B,IAJI,EAAQ,UAAU,SAAW,IAGjC,EAAiB,EAAQ,UAAU,OAAQ,GAAM,KAAK,EAAY,CAC9D,EAAe,SAAW,GAC7B,MAAM,IAAI,EAAmC,sCAAsC,MAGpF,EAAiB,CAAC,SAAU,UAAW,YAAY,CAGpD,IAAM,EAAmB,EAAe,IAAK,GAC5C,EAAY,GAAU,EAAU,CAAC,MAAO,GAChC,QAAQ,OAAO,CAAE,WAAU,QAAO,CAAC,CACzC,CACF,CAED,GAAI,CACH,OAAO,MAAM,QAAQ,IAAI,EAAiB,MACnC,CAGP,IAAM,GAFU,MAAM,QAAQ,WAAW,EAAiB,EAE/B,OAAQ,GAAW,EAAO,SAAW,WAAW,CAErE,EAAiB,EAAW,OAAQ,IAC3B,EAAU,QAAQ,OAAS,EAAU,kBAC3B,EACvB,CAEI,EAAgB,EAAW,OAAQ,GAEjC,GADO,EAAU,QAAQ,OAAS,EAAU,kBACzB,GACzB,CAgBF,MAdI,EAAe,SAAW,EAAW,OAClC,IAAI,EAAiC,uCAAuC,CAG/E,EAAc,SAAW,EAAW,OACjC,IAAI,EACT,2DACA,CAGE,EAAe,OAAS,EACrB,IAAI,EAAiC,uCAAuC,CAG7E,IAAI,EAAgC,uCAAuC,GC7OtE,GAAW,CACvB,CAAE,MAAO,EAAG,IAAK,EAAG,SAAU,EAAG,CACjC,CAAE,MAAO,GAAI,IAAK,GAAI,SAAU,GAAI,CACpC,CAAE,MAAO,GAAI,IAAK,GAAI,SAAU,GAAI,CACpC,CAEY,GAAoB,CAChC,CAAC,EAAG,EAAE,CACN,CAAC,GAAI,GAAG,CACR,CAAC,EAAG,EAAE,CACN,CAAC,GAAI,GAAG,CACR,CAAC,GAAI,GAAG,CACR,CCVK,GAAmB,GAA4B,CACpD,IAAK,GAAM,CAAE,QAAO,MAAK,cAAc,GAAU,CAEhD,IAAM,EAAW,EADD,EAAO,UAAU,EAAO,EAAI,CACb,CAC/B,GAAI,EAAO,WAAW,EAAS,CAAG,KAAO,EAAU,MAAO,GAE3D,MAAO,IAGF,GAAiB,GAA2B,CACjD,IAAI,EAAS,GACb,IAAK,GAAM,CAAC,EAAO,KAAQ,GAC1B,GAAU,EAAO,UAAU,EAAO,EAAI,CAEvC,OAAO,GAGF,GAAqB,GAA4B,CAGtD,IAAM,EAAW,EADhB,EAAO,UAAU,EAAA,EAAwB,CAAG,EAAO,UAAA,EAAmC,CAC9C,CACzC,OAAO,EAAO,WAAA,EAAgC,CAAG,KAAO,GAe5C,EAAiB,GAA2B,CACxD,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,CAQtC,OANI,EAAO,SAAA,IAEP,CAAC,GAAgB,EAAO,CAAS,GAI9B,GAFQ,GAAc,EAAO,CAEJ,ECjD3B,GAA0B,IAAI,KAAK,KAAM,EAAG,EAAE,CAoBvC,GAAiB,GAA0C,CACvE,GAAI,CAAC,GAAS,CAAC,EAAc,EAAM,CAAE,OAErC,IAAM,EAAY,EAAiB,EAAM,CAEnC,EAAW,EAAU,MAAM,EAAG,EAAE,CAEhC,EAAsB,EAAU,MAAM,GAAI,GAAG,CAC7C,EAAmB,OAAO,EAAoB,CAEhD,EAA8B,KAClC,GAAI,GAAoB,EAAmB,EAAG,CAC7C,IAAM,EAAa,IAAI,KAAK,GAAwB,CACpD,EAAW,QAAQ,EAAW,SAAS,CAAG,EAAiB,CAC3D,EAAiB,EAKlB,MAAO,CAAE,OAFM,OAAO,EAAU,MAAM,GAAI,GAAG,CAAC,EAAI,EAEjC,iBAAgB,WAAU,ECnB/B,EAAO,CACnB,GAAI,CACH,aACA,eACA,YACA,SACA,WACA,kBACA,iBACA,QACA,SACA,cACA,gBACA,uBACA,oBACA,aACA,eACA,aACA,kBACA,sBACA,iBACA,mBACA,WACA,SACA,CACD,GAAI,i0CAuGH,CACD,GAAI,8qBA+DH,CACD,GAAI,CACH,QACA,WACA,SACA,iBACA,UACA,mBACA,SACA,UACA,WACA,0BACA,eACA,WACA,UACA,iBACA,kBACA,kBACA,CACD,GAAI,0pJAkaH,CACD,GAAI,2zDAyLH,CACD,GAAI,CAAC,WAAW,CAChB,GAAI,s/BA+EH,CACD,GAAI,mlGAuPH,CACD,GAAI,ypGA0NH,CACD,GAAI,uzVAs1BH,CACD,GAAI,s6BAgFH,CACD,GAAI,g7DA8IH,CACD,GAAI,izDAiJH,CACD,GAAI,umFAgOH,CACD,GAAI,yhEA0LH,CACD,GAAI,s5GAiOH,CACD,GAAI,ojKAgZH,CACD,GAAI,gqCA6FH,CACD,GAAI,2lEAwKH,CACD,GAAI,2xBAqDH,CACD,GAAI,CACH,cACA,UACA,YACA,SACA,QACA,YACA,UACA,UACA,UACA,YACA,YACA,eACA,qBACA,oBACA,WACA,CACD,GAAI,+yMAkfH,CACD,GAAI,m8GAwSH,CACD,GAAI,o/BA4EH,CACD,GAAI,00OAsoBH,CACD,GAAI,sgEA4IH,CACD,CClgLY,GAAa,GACpB,EAMC,KAAS,EAER,CAAC,GAAG,EAAY,GAAO,CAFM,EAAE,CAL9B,OAAO,OAAO,EAAY,CAC/B,MAAM,CACN,MAAM,EAAG,IAAM,EAAE,cAAc,EAAE,CAAC,CCbzB,EAAO,CACnB,CAAE,KAAM,KAAM,KAAM,OAAQ,WAAY,IAAK,WAAY,QAAS,CAClE,CAAE,KAAM,KAAM,KAAM,UAAW,WAAY,KAAM,WAAY,WAAY,CACzE,CAAE,KAAM,KAAM,KAAM,QAAS,WAAY,IAAK,WAAY,QAAS,CACnE,CAAE,KAAM,KAAM,KAAM,WAAY,WAAY,IAAK,WAAY,QAAS,CACtE,CAAE,KAAM,KAAM,KAAM,QAAS,WAAY,KAAM,WAAY,WAAY,CACvE,CAAE,KAAM,KAAM,KAAM,QAAS,WAAY,KAAM,WAAY,WAAY,CACvE,CAAE,KAAM,KAAM,KAAM,mBAAoB,WAAY,KAAM,WAAY,eAAgB,CACtF,CAAE,KAAM,KAAM,KAAM,iBAAkB,WAAY,KAAM,WAAY,UAAW,CAC/E,CAAE,KAAM,KAAM,KAAM,QAAS,WAAY,KAAM,WAAY,eAAgB,CAC3E,CAAE,KAAM,KAAM,KAAM,WAAY,WAAY,KAAM,WAAY,WAAY,CAC1E,CAAE,KAAM,KAAM,KAAM,cAAe,WAAY,KAAM,WAAY,eAAgB,CACjF,CAAE,KAAM,KAAM,KAAM,qBAAsB,WAAY,KAAM,WAAY,eAAgB,CACxF,CAAE,KAAM,KAAM,KAAM,eAAgB,WAAY,KAAM,WAAY,UAAW,CAC7E,CAAE,KAAM,KAAM,KAAM,SAAU,WAAY,IAAK,WAAY,MAAO,CAClE,CAAE,KAAM,KAAM,KAAM,UAAW,WAAY,KAAM,WAAY,WAAY,CACzE,CAAE,KAAM,KAAM,KAAM,OAAQ,WAAY,IAAK,WAAY,QAAS,CAClE,CAAE,KAAM,KAAM,KAAM,aAAc,WAAY,KAAM,WAAY,WAAY,CAC5E,CAAE,KAAM,KAAM,KAAM,QAAS,WAAY,KAAM,WAAY,WAAY,CACvE,CAAE,KAAM,KAAM,KAAM,sBAAuB,WAAY,KAAM,WAAY,WAAY,CACrF,CAAE,KAAM,KAAM,KAAM,oBAAqB,WAAY,IAAK,WAAY,MAAO,CAC7E,CAAE,KAAM,KAAM,KAAM,iBAAkB,WAAY,KAAM,WAAY,UAAW,CAC/E,CAAE,KAAM,KAAM,KAAM,WAAY,WAAY,IAAK,WAAY,QAAS,CACtE,CAAE,KAAM,KAAM,KAAM,UAAW,WAAY,IAAK,WAAY,QAAS,CACrE,CAAE,KAAM,KAAM,KAAM,iBAAkB,WAAY,IAAK,WAAY,MAAO,CAC1E,CAAE,KAAM,KAAM,KAAM,UAAW,WAAY,KAAM,WAAY,WAAY,CACzE,CAAE,KAAM,KAAM,KAAM,YAAa,WAAY,KAAM,WAAY,UAAW,CAC1E,CAAE,KAAM,KAAM,KAAM,YAAa,WAAY,IAAK,WAAY,QAAS,CACvE,CC7BY,EAAb,cAA8C,KAAM,CACnD,YAAY,EAAiB,CAC5B,MAAM,EAAQ,CACd,KAAK,KAAO,6BAID,EAAb,cAAwD,CAAyB,CAChF,YAAY,EAAiB,CAC5B,MAAM,EAAQ,CACd,KAAK,KAAO,uCAID,EAAb,cAAsD,CAAyB,CAC9E,YAAY,EAAiB,CAC5B,MAAM,EAAQ,CACd,KAAK,KAAO,qCAuBR,GAAoB,IAAI,IAAe,EAAO,IAAK,GAAU,EAAM,KAAK,CAAC,CAEzE,GAAe,GACpB,GAAkB,IAAI,EAAmB,CAEpC,EAAwB,GAC7B,EACE,UAAU,MAAM,CAChB,QAAQ,mBAAoB,GAAG,CAC/B,MAAM,CAEI,GAAsB,MAAO,CACzC,cACA,OACA,YAC4D,CAC5D,IAAM,EAAe,EAAY,MAAM,CAAC,aAAa,CAErD,GAAI,CAAC,GAAY,EAAa,CAC7B,MAAM,IAAI,EAAmC,eAAe,IAAc,CAG3E,GAAI,CAAC,GAAQ,CAAC,EACb,MAAM,IAAI,EAAmC,+BAA+B,CAG7E,IAAM,EAAW,MAAM,MACtB,4BAA4B,EAAa,GAAG,mBAAmB,EAAqB,EAAK,CAAC,CAAC,GAAG,mBAAmB,EAAqB,EAAO,CAAC,CAAC,QAC/I,CAED,GAAI,CAAC,EAAS,GACb,MAAM,IAAI,EAAyB,qCAAqC,EAAS,SAAS,CAG3F,IAAM,EAAQ,MAAM,EAAS,MAAM,CAEnC,GAAI,CAAC,MAAM,QAAQ,EAAK,EAAI,EAAK,SAAW,EAC3C,MAAM,IAAI,EAAiC,GAAG,EAAa,KAAK,EAAK,KAAK,IAAS,CAGpF,OAAO,GClEF,GAAiB,CACtB,WAAY,CAAE,IAAK,EAAG,MAAO,EAAG,CAChC,WAAY,CAAE,IAAK,GAAI,MAAO,EAAG,CACjC,qBAAsB,CAAE,IAAK,EAAG,MAAO,EAAG,CAC1C,0BAA2B,CAAE,IAAK,EAAG,MAAO,EAAG,CAC/C,0BAA2B,CAAE,IAAK,GAAI,MAAO,GAAI,CACjD,QAAS,CAAE,IAAK,EAAG,MAAO,GAAI,CAC9B,2BAA4B,CAAE,IAAK,GAAI,MAAO,GAAI,CAClD,2BAA4B,CAAE,IAAK,GAAI,MAAO,GAAI,CAClD,MAAO,CAAE,IAAK,GAAI,MAAO,GAAI,CAC7B,CAMK,GAEF,CACH,GAAI,CACH,CAAE,KAAM,oBAAqB,IAAK,GAAI,MAAO,EAAG,CAChD,CAAE,KAAM,8BAA+B,IAAK,EAAG,MAAO,EAAG,CACzD,CAAE,KAAM,sBAAuB,IAAK,GAAI,MAAO,EAAG,CAClD,CAAE,KAAM,kBAAmB,IAAK,EAAG,MAAO,EAAG,CAC7C,CAAE,KAAM,sCAAuC,IAAK,GAAI,MAAO,GAAI,CACnE,CACD,GAAI,CACH,CAAE,KAAM,WAAY,IAAK,GAAI,MAAO,EAAG,CACvC,CAAE,KAAM,YAAa,IAAK,GAAI,MAAO,EAAG,CACxC,CAAE,KAAM,kCAAmC,IAAK,GAAI,MAAO,EAAG,CAC9D,CACD,GAAI,CACH,CAAE,KAAM,kBAAmB,IAAK,GAAI,MAAO,EAAG,CAC9C,CAAE,KAAM,yCAA0C,IAAK,GAAI,MAAO,EAAG,CACrE,CACD,GAAI,CACH,CAAE,KAAM,gDAAiD,IAAK,EAAG,MAAO,EAAG,CAC3E,CAAE,KAAM,6BAA8B,IAAK,EAAG,MAAO,GAAI,CACzD,CACD,GAAI,CAAC,CAAE,KAAM,yBAA0B,IAAK,EAAG,MAAO,EAAG,CAAC,CAC1D,GAAI,CACH,CAAE,KAAM,kBAAmB,IAAK,GAAI,MAAO,EAAG,CAC9C,CAAE,KAAM,kCAAmC,IAAK,GAAI,MAAO,EAAG,CAC9D,CACD,GAAI,CACH,CAAE,KAAM,uBAAwB,IAAK,GAAI,MAAO,EAAG,CACnD,CAAE,KAAM,oBAAqB,IAAK,GAAI,MAAO,GAAI,CACjD,CACD,GAAI,CAAC,CAAE,KAAM,kCAAmC,IAAK,GAAI,MAAO,EAAG,CAAC,CACpE,GAAI,CACH,CAAE,KAAM,yBAA0B,IAAK,EAAG,MAAO,EAAG,CACpD,CAAE,KAAM,yBAA0B,IAAK,GAAI,MAAO,EAAG,CACrD,CACD,GAAI,CAAC,CAAE,KAAM,qCAAsC,IAAK,GAAI,MAAO,EAAG,CAAC,CACvE,GAAI,CACH,CAAE,KAAM,mCAAoC,IAAK,EAAG,MAAO,EAAG,CAC9D,CAAE,KAAM,oBAAqB,IAAK,GAAI,MAAO,GAAI,CACjD,CACD,GAAI,CAAC,CAAE,KAAM,0CAA2C,IAAK,GAAI,MAAO,GAAI,CAAC,CAC7E,GAAI,CAAC,CAAE,KAAM,8BAA+B,IAAK,GAAI,MAAO,EAAG,CAAC,CAChE,GAAI,CAAC,CAAE,KAAM,iCAAkC,IAAK,GAAI,MAAO,EAAG,CAAC,CACnE,GAAI,CACH,CACC,KAAM,sDACN,IAAK,EACL,MAAO,EACP,CACD,CACD,GAAI,CAAC,CAAE,KAAM,iCAAkC,IAAK,GAAI,MAAO,GAAI,CAAC,CACpE,GAAI,CAAC,CAAE,KAAM,yBAA0B,IAAK,EAAG,MAAO,EAAG,CAAC,CAC1D,GAAI,CAAC,CAAE,KAAM,eAAgB,IAAK,GAAI,MAAO,GAAI,CAAC,CAClD,GAAI,CACH,CAAE,KAAM,gBAAiB,IAAK,GAAI,MAAO,EAAG,CAC5C,CAAE,KAAM,YAAa,IAAK,GAAI,MAAO,EAAG,CACxC,CAAE,KAAM,oBAAqB,IAAK,GAAI,MAAO,GAAI,CACjD,CACD,GAAI,CACH,CAAE,KAAM,8BAA+B,IAAK,EAAG,MAAO,GAAI,CAC1D,CAAE,KAAM,6BAA8B,IAAK,EAAG,MAAO,EAAG,CACxD,CACD,GAAI,CAAC,CAAE,KAAM,wBAAyB,IAAK,GAAI,MAAO,EAAG,CAAC,CAC1D,GAAI,CACH,CAAE,KAAM,gCAAiC,IAAK,EAAG,MAAO,EAAG,CAC3D,CAAE,KAAM,oBAAqB,IAAK,GAAI,MAAO,EAAG,CAChD,CACD,GAAI,CAAC,CAAE,KAAM,+BAAgC,IAAK,EAAG,MAAO,GAAI,CAAC,CACjE,GAAI,CACH,CAAE,KAAM,yCAA0C,IAAK,GAAI,MAAO,EAAG,CACrE,CAAE,KAAM,sCAAuC,IAAK,GAAI,MAAO,GAAI,CACnE,CACD,GAAI,CAAC,CAAE,KAAM,+BAAgC,IAAK,EAAG,MAAO,EAAG,CAAC,CAChE,GAAI,CAAC,CAAE,KAAM,kCAAmC,IAAK,EAAG,MAAO,EAAG,CAAC,CACnE,GAAI,CACH,CACC,KAAM,oDACN,IAAK,EACL,MAAO,EACP,CACD,CAAE,KAAM,iCAAkC,IAAK,EAAG,MAAO,GAAI,CAC7D,CACD,CAQD,SAAS,EAAgB,EAAoB,CAC5C,IAAM,EAAI,EAAO,GACX,EAAI,KAAK,MAAM,EAAO,IAAI,CAC1B,EAAI,EAAO,IACX,EAAI,KAAK,MAAM,EAAI,EAAE,CACrB,EAAI,EAAI,EACR,EAAI,KAAK,OAAO,EAAI,GAAK,GAAG,CAC5B,EAAI,KAAK,OAAO,EAAI,EAAI,GAAK,EAAE,CAC/B,GAAK,GAAK,EAAI,EAAI,EAAI,EAAI,IAAM,GAChC,EAAI,KAAK,MAAM,EAAI,EAAE,CACrB,EAAI,EAAI,EACR,GAAK,GAAK,EAAI,EAAI,EAAI,EAAI,EAAI,GAAK,EACnC,EAAI,KAAK,OAAO,EAAI,GAAK,EAAI,GAAK,GAAK,IAAI,CAE3C,EAAQ,KAAK,OAAO,EAAI,EAAI,EAAI,EAAI,KAAO,GAAG,CAAG,EACjD,IAAQ,EAAI,EAAI,EAAI,EAAI,KAAO,GAAM,EAE3C,OAAO,IAAI,KAAK,EAAM,EAAO,GAAI,CAUlC,SAAS,EAA2B,EAAc,EAAsB,CACvE,IAAM,EAAa,EAAgB,EAAK,CAClC,EAAc,IAAI,KAAK,EAAW,CAExC,OADA,EAAY,QAAQ,EAAW,SAAS,CAAG,EAAO,CAC3C,EA0BR,SAAgB,EAAY,EAAuD,CAClF,IAAI,EACA,EAYJ,GATI,OAAO,GAAkB,UAC5B,EAAO,EACP,EAAY,IAAA,KAEZ,EAAO,EAAc,KACrB,EAAY,EAAc,WAIvB,OAAO,GAAS,UAAY,CAAC,OAAO,UAAU,EAAK,EAAI,EAAO,MAAQ,EAAO,KAChF,MAAO,EAAE,CAGV,IAAM,EAAsB,EAAE,CAG9B,IAAK,GAAM,CAAC,EAAM,CAAE,MAAK,YAAY,OAAO,QAAQ,GAAe,CAClE,EAAS,KAAK,CACb,OACA,KAAM,IAAI,KAAK,EAAM,EAAQ,EAAG,EAAI,CACpC,CAAC,CAIH,IAAM,EAAa,EAAgB,EAAK,CA2BxC,GAxBA,EAAS,KAAK,CACb,KAAM,yBACN,KAAM,EAA2B,EAAM,IAAI,CAC3C,CAAC,CAGF,EAAS,KAAK,CACb,KAAM,oBACN,KAAM,EAA2B,EAAM,GAAG,CAC1C,CAAC,CAGF,EAAS,KAAK,CACb,KAAM,SACN,KAAM,EACN,CAAC,CAGF,EAAS,KAAK,CACb,KAAM,iBACN,KAAM,EAA2B,EAAM,GAAG,CAC1C,CAAC,CAGE,EAAW,CACd,IAAM,EAAgB,GAAe,GACrC,GAAI,EACH,IAAK,GAAM,CAAE,OAAM,MAAK,WAAW,EAClC,EAAS,KAAK,CACb,OACA,KAAM,IAAI,KAAK,EAAM,EAAQ,EAAG,EAAI,CACpC,CAAC,CAQL,OAFA,EAAS,MAAM,EAAG,IAAM,EAAE,KAAK,SAAS,CAAG,EAAE,KAAK,SAAS,CAAC,CAErD,EC1PR,IAAa,QAAiD,CAAE,GAAG,EAAc,ECyB3E,EAAiB,GACtB,EACE,UAAU,MAAM,CAChB,QAAQ,mBAAoB,GAAG,CAC/B,QAAQ,OAAQ,IAAI,CACpB,MAAM,CACN,aAAa,CAEV,GAAwB,KAAO,IAAmD,CACvF,IAAM,EAAW,MAAM,MACtB,kEAAkE,IAClE,CAED,GAAI,CAAC,EAAS,GAAI,OAAO,KAEzB,IAAM,EAAQ,MAAM,EAAS,MAAM,CAC7B,EAAO,EAAK,KACZ,EAAK,EAAK,cAAc,aAAa,IAAI,MAI/C,MAFI,CAAC,GAAQ,CAAC,EAAW,KAElB,CAAC,EAAM,EAAG,EAGZ,GAA4B,MAAO,CACxC,mBACA,QAC2D,CAC3D,GAAI,CAAC,GAAoB,OAAO,GAAqB,SAAU,OAAO,KAEtE,IAAM,EAAe,EAAG,MAAM,CAAC,aAAa,CAE5C,GAAI,CAAC,aAAa,KAAK,EAAa,CAAE,OAAO,KAE7C,IAAM,EAAW,MAAM,MACtB,+DAA+D,EAAa,aAC5E,CAED,GAAI,CAAC,EAAS,GAAI,OAAO,KAEzB,IAAM,EAAQ,MAAM,EAAS,MAAM,CAC7B,EAAiB,EAAc,EAAiB,CAGtD,OAFqB,EAAK,KAAM,GAAS,EAAc,EAAK,MAAQ,GAAG,GAAK,EAAe,EAEtE,IAAI,UAAU,EAAI,MAG3B,GAAkB,KAC9B,IAEI,SAAU,EACN,GAAsB,EAAQ,KAAK,CAGpC,GAA0B,EAAQ,CCtE7B,OAA2B,CAAC,GAAG,EAAK,CCHpC,IAAa,CAAE,aAAY,eACnC,EAAE,aAAsB,OAAS,OAAO,MAAM,EAAW,SAAS,CAAC,EAInE,IAAc,IAAA,IAAa,OAAO,GAAc,SAC5C,KAGD,EAAY,CAAE,KAAM,EAAW,aAAa,CAAE,YAAW,CAAC,CAAC,KAAM,GAEtE,EAAQ,KAAK,aAAa,GAAK,EAAW,aAAa,EACvD,EAAQ,KAAK,UAAU,GAAK,EAAW,UAAU,EACjD,EAAQ,KAAK,SAAS,GAAK,EAAW,SAAS,CAE/C,CCVG,GAAyB,GAA+C,CAC7E,GAAM,CAAE,SAAQ,UAAS,SAAU,EAInC,GAFI,EAAO,OAAS,GAAK,EAAO,OAAS,GACrC,EAAQ,OAAS,GAAK,EAAQ,OAAS,IACvC,EAAM,SAAW,EAAG,MAAO,GAE/B,IAAM,EAA6B,EAAQ,QAAQ,MAAO,GAAG,EAAI,IAC3D,EAAa,EAAO,SAAS,EAAG,IAAI,CAAG,EAA2B,SAAS,EAAG,IAAI,CAEpF,EAAM,EACN,EAAS,EACb,IAAK,IAAI,EAAI,EAAW,OAAS,EAAG,GAAK,EAAG,IAAK,CAChD,IAAM,EAAa,EAAW,WAAW,EAAE,CAAG,GAC9C,GAAO,EAAa,EACpB,EAAS,IAAW,EAAI,EAAI,EAAS,EAGtC,IAAM,EAAY,EAAM,GAClB,EAAkB,IAAc,GAAK,IAAc,EAAI,EAAI,GAAK,EAGtE,OADkB,OAAO,EAAgB,GACpB,GAGhB,GAAgB,GAA+C,CACpE,GAAM,CAAE,SAAQ,UAAS,SAAU,EAInC,GAFI,EAAO,SAAW,GAClB,EAAQ,SAAW,GACnB,EAAM,SAAW,EAAG,MAAO,GAE/B,IAAM,EAAa,EAAS,EACxB,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAW,OAAQ,IAAK,CAG3C,IAAI,GAFe,EAAW,WAAW,EAAE,CAAG,KAC/B,EAAI,GAAM,EAAI,EAAI,GAE7B,EAAS,IACZ,EAAS,KAAK,MAAM,EAAS,GAAG,CAAI,EAAS,IAE9C,GAAO,EAGR,IAAM,EAAY,EAAM,GAClB,EAAkB,IAAc,EAAI,EAAI,GAAK,EAEnD,OAAO,OAAO,EAAgB,GAAK,GAG9B,GAAoB,GAA+C,CACxE,GAAM,CAAE,SAAQ,UAAS,SAAU,EAInC,GAFI,EAAO,SAAW,GAClB,EAAQ,SAAW,GACnB,EAAM,SAAW,EAAG,MAAO,GAE/B,IAAI,EAAM,EACN,EAAS,EAEb,IAAK,IAAI,EAAI,EAAQ,OAAS,EAAG,GAAK,EAAG,IAAK,CAC7C,IAAM,EAAa,EAAQ,WAAW,EAAE,CAAG,GAC3C,GAAO,EAAa,EACpB,EAAS,IAAW,EAAI,EAAI,EAAS,EAGtC,IAAM,EAAY,EAAM,GAClB,EAAkB,IAAc,GAAK,IAAc,EAAI,EAAI,GAAK,EAEtE,OAAO,OAAO,EAAgB,GAAK,GAG9B,GAAqB,GAA+C,CACzE,GAAM,CAAE,SAAQ,UAAS,SAAU,EAInC,GAFI,EAAO,SAAW,GAClB,EAAQ,SAAW,GACnB,EAAM,SAAW,EAAG,MAAO,GAE/B,IAAM,EAAkB,EAAM,EAAQ,CAGtC,OAAO,OAFY,EAAkB,EAAI,EAAI,EAEpB,GAAK,GAGzB,GAAiB,GAA+C,CACrE,GAAM,CAAE,SAAQ,UAAS,SAAU,EAInC,GAFI,EAAO,SAAW,GAClB,EAAQ,SAAW,IACnB,EAAM,SAAW,EAAG,MAAO,GAG/B,IAAM,EAAkB,EADI,EAAQ,UAAU,EAAG,GAAG,CACF,CAGlD,OAAO,OAFY,EAAkB,EAAI,EAAI,EAEpB,GAAK,GAGzB,GAAmB,GAA+C,CACvE,GAAM,CAAE,UAAS,SAAU,EAE3B,GAAI,EAAM,OAAS,GAAK,EAAM,OAAS,EAAG,MAAO,GAEjD,IAAM,EAAc,EAAM,EAAQ,CAClC,GAAI,GAAe,GAAK,OAAO,EAAY,GAAK,EAC/C,MAAO,GAGR,IAAM,EAAc,EAAM,EAAQ,CAKlC,OAJI,OAAO,EAAY,GAAK,GAOvB,EAA6E,CAClF,MAAO,GACP,IAAO,GACP,IAAO,GACP,MAAO,GACP,IAAO,GACP,CAqCY,GAAsB,GAA+C,CACjF,GAAM,CAAE,WAAU,SAAQ,UAAS,SAAU,EAE7C,GACC,CAAC,GACD,CAAC,GACD,CAAC,GACD,CAAC,GACD,OAAO,GAAa,UACpB,OAAO,GAAW,UAClB,OAAO,GAAY,UACnB,OAAO,GAAU,SAEjB,MAAO,GAGR,IAAM,EAAiB,EAAiB,EAAS,CAC3C,EAAe,EAAiB,EAAO,CACvC,EAAgB,EAAiB,EAAQ,CACzC,EAAc,EAAiB,EAAM,CAS3C,OAPI,EAAe,SAAW,GAC1B,EAAa,SAAW,GAAK,EAAa,OAAS,GACnD,EAAc,SAAW,GAAK,EAAc,OAAS,IACrD,EAAY,SAAW,GAAK,EAAY,OAAS,EAAU,IAE7C,KAAkB,EAAa,EAAW,GAAkB,IAE7D,CAChB,SAAU,EACV,OAAQ,EACR,QAAS,EACT,MAAO,EACP,CAAC,EC7MG,GAAkB,GAA2B,IAAU,EAAM,GAAG,OAAO,EAAM,OAAO,CAE7E,GAAc,GAA2B,CACrD,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,CAEtC,GAAI,EAAO,SAAW,IAAM,GAAe,EAAO,CAAE,MAAO,GAE3D,IAAI,EAAO,EACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACtB,IAAS,EAAO,WAAW,EAAE,CAAG,KAAO,EAAI,GAG5C,IAAI,EAAS,EAAO,GAChB,EAAY,EAOhB,GALI,GAAU,KACb,EAAS,EACT,EAAY,GAGT,IAAW,EAAO,WAAW,EAAE,CAAG,GAAI,MAAO,GAEjD,IAAI,EAAO,EACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACtB,IAAS,EAAO,WAAW,EAAE,CAAG,KAAO,EAAI,GAG5C,IAAI,EAAU,EAAO,GAAM,EAK3B,OAHI,EAAS,IAAG,GAAU,IACtB,GAAU,KAAI,EAAS,GAEpB,IAAW,EAAO,WAAW,GAAG,CAAG,IEjCrC,GAAe,IAAI,IDHO,CAC/B,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,iBACA,CCR6C,CAExC,GAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAEhD,GAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAEnD,GAAe,oEAEf,GAAuB,yCAEvB,GAAa,GAAyB,CAC3C,IAAI,EAAS,GACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAO,EAAK,IAEhB,GAAQ,KAAO,GAAQ,KACvB,GAAQ,KAAO,GAAQ,KACvB,GAAQ,KAAO,GAAQ,OAExB,GAAU,GAAQ,KAAO,GAAQ,IAAM,OAAO,aAAa,EAAK,WAAW,EAAE,CAAG,GAAG,CAAG,GAGxF,OAAO,GAGF,EAAmB,GAA0B,CAElD,IAAI,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IACvB,IAAQ,EAAK,WAAW,EAAE,CAAG,IAAM,GAAU,GAE9C,IAAI,EAAM,EAAM,GACV,EAAY,EAAM,EAAI,GAAK,GAAU,EAC3C,GAAI,EAAK,WAAW,GAAG,GAAK,EAAW,MAAO,GAG9C,EAAM,EACN,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IACvB,IAAQ,EAAK,WAAW,EAAE,CAAG,IAAM,GAAU,GAE9C,EAAM,EAAM,GACZ,IAAM,EAAY,EAAM,EAAI,GAAK,GAAU,EAC3C,OAAO,EAAK,WAAW,GAAG,GAAK,GA0BnB,GAAe,EAAc,IAA2C,CACpF,GAAI,CAAC,GAAQ,OAAO,GAAS,SAAU,MAAO,GAE9C,IAAM,EAAU,GAAU,EAAK,CAE/B,GAAI,EAAQ,SAAA,GAAmB,MAAO,GAEtC,IAAM,EAAU,GAAS,SAAW,EAEhC,EAAY,GACZ,EAAY,GAEhB,GAAI,IAAY,EACf,IAAK,IAAI,EAAI,EAAG,EAAA,GAAY,IAAK,CAChC,IAAM,EAAO,EAAQ,WAAW,EAAE,EAC9B,EAAO,IAAM,EAAO,MACvB,EAAY,GACR,GAAQ,IAAM,GAAQ,KAAI,EAAY,KAK7C,GAAI,EAAW,CACd,IAAM,EAAU,EAAiB,EAAK,CAEtC,OACC,GAAqB,KAAK,EAAK,EAAI,CAAC,GAAa,IAAI,EAAQ,EAAI,EAAgB,EAAQ,CAI3F,OAAO,GAAa,GAAa,KAAK,EAAK,EAAI,EAAgB,EAAQ,EElGlE,GAAe,IAAI,IDDO,CAC/B,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,CCV6C,CAExC,GAAe,iCAEf,GAAmB,GAAyB,CAEjD,IAAI,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACtB,IAAQ,EAAI,WAAW,EAAE,CAAG,KAAO,GAAK,GAEzC,IAAI,EAAM,EAAM,GACV,EAAY,EAAM,EAAI,GAAK,GAAU,EAC3C,GAAI,EAAI,WAAW,EAAE,GAAK,EAAW,MAAO,GAG5C,EAAM,EACN,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IACvB,IAAQ,EAAI,WAAW,EAAE,CAAG,KAAO,GAAK,GAEzC,EAAM,EAAM,GACZ,IAAM,EAAY,EAAM,EAAI,GAAK,GAAU,EAC3C,OAAO,EAAI,WAAW,GAAG,GAAK,GAiBlB,EAAc,GAAyB,CACnD,GAAI,CAAC,GAAO,OAAO,GAAQ,SAAU,MAAO,GAE5C,IAAM,EAAS,EAAiB,EAAI,CAQpC,OANI,EAAO,SAAA,IAEP,CAAC,GAAa,KAAK,EAAI,EAEvB,GAAa,IAAI,EAAO,CAAS,GAE9B,GAAgB,EAAO,ECtCzB,GACL,mFAEY,GAAgB,GACxB,CAAC,GAAS,OAAO,GAAU,SAAiB,GAEzC,GAAY,KAAK,EAAM,CCfzB,GAAe,EAAY,IAC5B,OAAO,GAAW,SAAiB,EAAG,SAAW,EAC9C,EAAO,SAAS,EAAG,OAAO,CAG5B,GAAc,EAAY,IAC/B,EAAG,UAAU,EAAG,EAAO,OAAO,GAAK,EAS9B,GAAuB,CAC5B,OACA,cACA,YACA,MAAM,MACkC,CACxC,IAAI,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAK,WAAW,EAAE,CAAG,GACnC,GAAO,EAAQ,EACf,IACI,EAAS,IACZ,EAAS,IAAc,EAAI,EAAI,IAKjC,IAAM,EAAM,EADC,EAAM,EAEnB,OAAO,GAAO,GAAK,EAAI,GAGlB,GAA2B,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,GAAG,EACpB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAO,EAAG,UAAU,EAAG,GAAG,CAC5B,EAAS,EAAK,OAAS,EACvB,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAIX,IAEI,EAAW,GADF,EAAM,GAEf,GAAY,KACf,EAAW,GAGZ,IAAM,EAAgB,EAAO,EAC7B,EAAS,EAAc,OAAS,EAChC,EAAM,EAEN,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC9C,IAAM,EAAQ,EAAI,EAAK,OAAS,EAAG,WAAW,EAAE,CAAG,GAAK,EACxD,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAKX,IAAI,EAAY,GADF,EAAM,GAMpB,OAJI,GAAa,KAChB,EAAY,GAIZ,OAAO,SAAS,EAAG,OAAO,GAAG,CAAE,GAAG,GAAK,GACvC,OAAO,SAAS,EAAG,OAAO,GAAG,CAAE,GAAG,GAAK,GAInC,GAA2B,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,EAAE,EACnB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAI,EAAS,EAET,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,IAAK,CAClC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAGD,IAAM,EAAU,EAAM,GAClB,EAAQ,EAAU,KAAK,MAAM,EAAU,GAAG,CAAG,GAKjD,OAJI,GAAS,KACZ,EAAQ,GAGF,IAAU,OAAO,SAAS,EAAG,OAAO,EAAS,CAAE,GAAG,EAGpD,GAA2B,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,EAAE,EACnB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAS,EAAG,OACZ,EAAW,EAAS,EACtB,EAAS,EACP,EAAO,EAAG,UAAU,EAAG,EAAS,CAChC,EAAU,OAAO,SAAS,EAAM,GAAG,CACrC,EAAI,EACJ,EAAI,EAEJ,GAAW,SAAa,GAAW,QACtC,EAAI,EACJ,EAAI,GACM,GAAW,SAAa,GAAW,UAC7C,EAAI,EACJ,EAAI,GAGL,IAAI,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAGD,IAAI,EAAM,GAAM,EAAM,GAStB,OARI,IAAQ,KACX,EAAM,GAGH,IAAQ,KACX,EAAM,GAGA,IAAQ,OAAO,SAAS,EAAG,OAAO,EAAS,CAAE,GAAG,EAGlD,GAA2B,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAGxC,GAA2B,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,CAAC,EAAG,EAAE,CAAC,CAAE,MAAO,GAErC,IAAM,EAAM,IAAG,SAAW,GACpB,EAAS,OAAO,SAAS,EAAG,UAAU,EAAK,EAAM,EAAE,CAAE,GAAG,CAExD,EADM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CACjB,SAAS,EAAO,CAAG,GAAK,GAElC,EAAO,EAAG,UAAU,EAAG,EAAG,OAAS,EAAE,CACvC,EAAS,EAAK,OAAS,EACvB,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAGD,IAAI,EAAO,EAAM,EACb,EAAY,EAAM,EAClB,GAAa,KAChB,EAAY,GAGb,IAAM,EAAiB,EAAO,EAC9B,EAAS,EAAe,OAAS,EACjC,EAAM,EAEN,IAAK,IAAI,EAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC/C,IAAM,EAAQ,EAAI,EAAK,OAAS,EAAG,WAAW,EAAE,CAAG,GAAK,EACxD,GAAO,EAAQ,EACf,IAGD,EAAO,EAAM,EACb,IAAI,EAAW,EAAM,EAKrB,OAJI,GAAY,KACf,EAAW,GAIX,OAAO,SAAS,EAAG,OAAO,EAAG,OAAS,EAAE,CAAE,GAAG,GAAK,GAClD,OAAO,SAAS,EAAG,OAAO,EAAG,OAAS,EAAE,CAAE,GAAG,GAAK,GAI9C,GAA2B,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAGxC,GAA2B,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,GAAG,EACpB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAS,EAAG,OACZ,EAAO,EAAG,UAAU,EAAG,EAAS,EAAE,CAElC,EAAW,GAAY,EAAK,CAC5B,EAAY,GAAY,EAAO,EAAS,CAE9C,OACC,OAAO,SAAS,EAAG,OAAO,EAAS,EAAE,CAAE,GAAG,GAAK,GAC/C,OAAO,SAAS,EAAG,OAAO,EAAS,EAAE,CAAE,GAAG,GAAK,GAI3C,GAAe,GAAyB,CAC7C,IAAI,EAAS,EAAK,OAAS,EACvB,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,OAAO,SAAS,EAAK,OAAO,EAAE,CAAE,GAAG,CACjD,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAIX,IAEI,EAAM,GADG,EAAM,GAMnB,OAJI,GAAO,KACV,EAAM,GAGA,GA6fF,GAAgD,CACrD,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAAI,GACJ,GAlgBgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAyf7C,GAtfgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAY,CAAC,KAAM,KAAM,KAAM,KAAK,CACpC,EAAQ,EAAG,UAAU,EAAG,EAAE,CAChC,GAAI,CAAC,EAAU,SAAS,EAAM,CAAE,MAAO,GAEvC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAU,OAAO,SAAS,EAAM,GAAG,CACrC,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAID,IAAI,EAAM,GADG,EAAM,GAWnB,OARI,GAAO,KACV,AAGC,EAHD,EAAI,IAAQ,IAAM,GAAW,UAAc,GAAW,WAOhD,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA0d7C,GAvdgC,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,EAAE,EACnB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA6c7C,GA1cgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,GAAG,CAAE,MAAO,GAEjC,IAAM,EAAO,EAAG,UAAU,EAAG,GAAG,CAC1B,EAAe,GAAG,EAAK,UAAU,EAAG,EAAE,CAAC,GAAG,EAAK,UAAU,EAAE,GAE7D,EAAS,GACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAa,OAAQ,IAAK,CAC7C,IAAM,EAAQ,EAAa,WAAW,EAAE,CAAG,GACrC,GAAU,EAAI,GAAK,GAAM,EAAI,EAAI,EACvC,GAAU,OAAO,EAAQ,EAAO,CAGjC,IAAI,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,OAAQ,IAClC,GAAO,EAAO,WAAW,EAAE,CAAG,GAG/B,IAAM,EAAS,OAAO,EAAI,CACpB,EAAW,EAAO,OAAO,EAAO,OAAS,EAAE,CAC3C,EAAc,OAAO,SAAS,EAAU,GAAG,CAC3C,EAAW,IAAgB,EAAI,EAAI,GAAK,EAE1C,EAAS,EACT,EAAO,EACL,EAAgB,EAAO,EAC7B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC9C,IAAM,EAAQ,EAAc,WAAW,EAAE,CAAG,GAC5C,GAAQ,EAAQ,EAChB,IACI,IAAW,IACd,EAAS,IAKX,IAAI,EAAY,GADH,EAAO,GAMpB,OAJI,GAAa,KAChB,EAAY,GAIZ,OAAO,SAAS,EAAG,OAAO,GAAG,CAAE,GAAG,GAAK,GACvC,OAAO,SAAS,EAAG,OAAO,GAAG,CAAE,GAAG,GAAK,GAgaxC,GA5ZgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,GAAG,CAAE,MAAO,GAEjC,IAAM,EAAO,EAAG,UAAU,EAAG,GAAG,CAC5B,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAKX,IAAI,EAAM,GADG,EAAM,GAMnB,OAJI,GAAO,KACV,EAAM,GAGA,OAAO,SAAS,EAAG,OAAO,GAAG,CAAE,GAAG,GAAK,GAuY9C,GApYgC,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,EAAE,EACnB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA0X7C,GAvXgC,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,EAAE,EACnB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA6W7C,GA1WgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAiW7C,GA9VgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CAC3B,EAAS,EAAK,OAAS,EACvB,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAGD,IAEI,EAAW,GADF,EAAM,GAEf,GAAY,KACf,EAAW,GAGZ,IAAM,EAAgB,EAAO,EAC7B,EAAS,EAAc,OAAS,EAChC,EAAM,EAEN,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC9C,IAAM,EAAQ,EAAI,EAAK,OAAS,EAAG,WAAW,EAAE,CAAG,GAAK,EACxD,GAAO,EAAQ,EACf,IAID,IAAI,EAAY,GADF,EAAM,GAMpB,OAJI,GAAa,KAChB,EAAY,GAIZ,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GACtC,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAyTvC,GArTgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA4S7C,GAzSgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,GAAG,CAAE,MAAO,GAEjC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CAC3B,EAAS,EAAK,OAAS,EACvB,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAKX,IAAI,EAAW,GADF,EAAM,GAEf,GAAY,KACf,EAAW,GAGZ,IAAM,EAAgB,EAAO,EAC7B,EAAS,EAAc,OAAS,EAChC,EAAM,EAEN,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC9C,IAAM,EAAQ,OAAO,SAAS,EAAc,OAAO,EAAE,CAAE,GAAG,CAC1D,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAKX,IAAI,EAAY,GADF,EAAM,GAMpB,OAJI,GAAa,KAChB,EAAY,GAIZ,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GACtC,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA+PvC,GA3PgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CAC3B,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,CAC/C,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAKX,IAAI,EAAM,GADG,EAAM,GAMnB,OAJI,GAAO,KACV,EAAM,GAGA,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAsO7C,GAnOgC,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,CAAC,EAAG,GAAG,CAAC,EACzB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAS,EAAG,OACZ,EAAW,EAAS,EACtB,EAAS,EACP,EAAO,EAAG,UAAU,EAAG,EAAS,CAClC,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAID,IAAI,EAAM,GADG,EAAM,GAMnB,OAJI,GAAO,KACV,EAAM,GAGA,OAAO,SAAS,EAAG,OAAO,EAAS,CAAE,GAAG,GAAK,GA8MpD,GA3MgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,GAAG,CAAE,MAAO,GAGjC,IAAM,EADS,EAAG,OACQ,EACtB,EAAS,EACP,EAAO,EAAG,UAAU,EAAG,EAAS,CAClC,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,CAC/C,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAKX,IAAI,EAAM,GADG,EAAM,GAOnB,OAJI,GAAO,KACV,GAAO,IAGD,IAAQ,OAAO,SAAS,EAAG,OAAO,EAAS,CAAE,GAAG,EAmLvD,GAhLgC,GAAe,CAE/C,GADI,CAAC,EAAY,EAAI,EAAE,EACnB,CAAC,EAAW,EAAI,KAAK,CAAE,MAAO,GAElC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CAC3B,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAGD,IAAM,EAAO,EAAM,EACnB,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAkK7C,GA/JgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,GAAG,CAAE,MAAO,GAEjC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CAC3B,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IACI,IAAW,IACd,EAAS,GAKX,IAAI,EAAM,GADG,EAAM,GAMnB,OAJI,GAAO,KACV,EAAM,GAGA,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA0I7C,GAvIgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA8H7C,GA3HgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,EAAE,CAAE,MAAO,GAEhC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAM,EAAoB,CAC/B,OACA,YAAa,EAAK,OAAS,EAC3B,UAAW,EACX,CAAC,CAEF,OAAO,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GAkH7C,GA/GgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,GAAG,CAAE,MAAO,GAEjC,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CACzB,EAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG,CACzC,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EAAY,GAG5B,IAAM,EAAM,EAAM,GACZ,EAAW,OAAO,EAAI,CACtB,EAAW,OAAO,SAAS,EAAS,OAAO,EAAS,OAAS,EAAE,CAAE,GAAG,CAEpE,EAAgB,EAAG,UAAU,EAAG,GAAG,CACrC,EAAS,EACT,EAAO,EAEX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC9C,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAQ,EAAQ,EAChB,IACI,IAAW,IACd,EAAS,IAIX,IAAM,EAAO,EAAO,GACd,EAAY,OAAO,EAAK,CACxB,EAAY,OAAO,SAAS,EAAU,OAAO,EAAU,OAAS,EAAE,CAAE,GAAG,CAE7E,OACC,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GACtC,OAAO,SAAS,EAAG,OAAO,GAAG,CAAE,GAAG,GAAK,GA6ExC,GAzEgC,GAAe,CAC/C,GAAI,CAAC,EAAY,EAAI,CAAC,EAAG,GAAG,CAAC,CAAE,MAAO,GAEtC,GAAI,EAAG,SAAW,GAAI,CACrB,IAAM,EAAQ,EAAG,UAAU,EAAG,EAAE,CAEhC,GADkB,CAAC,KAAM,KAAM,KAAM,KAAK,CAC5B,SAAS,EAAM,CAAE,CAC9B,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CAAG,EAAG,UAAU,EAAG,GAAG,CACjD,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,OAAO,SAAS,EAAK,OAAO,EAAE,CAAE,GAAG,CACjD,GAAO,EAAQ,EACf,IAGD,IAAM,EAAO,EAAM,GACf,EAAM,GAAK,EAKf,OAJI,EAAO,IACV,EAAM,GAGA,OAAO,SAAS,EAAG,OAAO,GAAG,CAAE,GAAG,GAAK,GAIhD,IAAM,EAAO,EAAG,UAAU,EAAG,EAAE,CAC3B,EAAS,EACT,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACrC,IAAM,EAAQ,EAAG,WAAW,EAAE,CAAG,GACjC,GAAO,EAAQ,EACf,IAGD,IAAM,EAAO,EAAM,GACf,EAAM,GAAK,EAKf,OAJI,EAAO,IACV,EAAM,GAGA,OAAO,SAAS,EAAG,OAAO,EAAE,CAAE,GAAG,GAAK,GA+B7C,CAeY,IAAa,EAAsB,IAAwB,CACvE,GAAI,CAAC,GAAa,CAAC,GAAM,OAAO,GAAO,SAAU,MAAO,GAExD,IAAM,EAAS,EAAiB,EAAG,CACnC,GAAI,CAAC,EAAQ,MAAO,GAEpB,IAAM,EAAY,GAAc,GAGhC,OAFK,EAEE,EAAU,EAAO,CAFD,ICpzBX,GAA+B,CAAC,EAAG,EAAG,EAAG,EAAE,CCGlD,GAAgB,IAAI,IAAI,EAAiB,CAEzC,GAAc,GAA2B,CAC9C,IAAM,GAAO,EAAM,WAAW,EAAE,CAAG,IAAM,IAAM,EAAM,WAAW,EAAE,CAAG,IACrE,OAAO,GAAc,IAAI,EAAyC,EAG7D,GAA8B,GAA2B,CAC9D,IAAM,EAAa,EAAM,WAAW,EAAE,CAAG,GACzC,OAAO,GAA6B,SAAS,EAAW,EAgB5C,GAAwB,GAA2B,CAC/D,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,CAMtC,OAJI,EAAO,SAAA,IAEP,CAAC,GAAW,EAAO,CAAS,GAEzB,GAA2B,EAAO,ECnC7B,GAAsB,GAA0B,CAC5D,GAAI,CAAC,GAAQ,OAAO,GAAS,SAAU,MAAO,GAE9C,IAAM,EAAa,EAAiB,EAAK,CAEzC,OAAO,EAAW,SAAW,GAAK,KAAc,GCR3C,GAAgB,yEAEhB,GAA6B,wBAkBtB,GAAuB,GAC/B,CAAC,GAAS,OAAO,GAAU,SAAiB,GAEzC,GAAc,KAAK,EAAM,EAAI,GAA2B,KAAK,EAAM,CCtB9D,GAAgC,CAAC,EAAG,EAAG,EAAG,EAAE,CAC5C,GAAgC,CAAC,EAAE,CCY1C,GAAgB,IAAI,IAAI,EAAiB,CAEzC,GAAc,GAA2B,CAC9C,IAAM,GAAO,EAAM,WAAW,EAAE,CAAG,IAAM,IAAM,EAAM,WAAW,EAAE,CAAG,IACrE,OAAO,GAAc,IAAI,EAAyC,EAG7D,IAA4B,EAAe,IAAoC,CACpF,IAAM,EAAa,EAAM,WAAW,EAAE,CAAG,GAMzC,MAJI,CAAC,GAAW,IAAY,EACpB,GAA8B,SAAS,EAAW,CAGnD,GAA8B,SAAS,EAAW,EAiB7C,IAAsB,EAAe,IAAiD,CAClG,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,CAMtC,OAJI,EAAO,SAAA,IAEP,CAAC,GAAW,EAAO,CAAS,GAEzB,GAAyB,EAAQ,GAAS,QAAQ,ECtD7C,GAAiB,qBCkBjB,GAAmB,GAC3B,GAAa,KAAuC,GACjD,GAAe,KAAK,OAAO,EAAS,CAAC,CCKhC,IAAgB,EAAe,IAA2C,CACtF,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,CAUtC,OARI,EAAO,SAAA,GACH,GAAqB,EAAM,CAG/B,EAAO,SAAA,GACH,GAAmB,EAAO,EAAQ,CAGnC,IElCF,GAAe,IAAI,IDFO,CAC/B,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,CCT6C,CAExC,GAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAejC,GAAc,GAAyB,CAOnD,GANI,CAAC,GAAO,OAAO,GAAQ,UAIH,gBAAgB,KAAK,EAAI,CAE5B,MAAO,GAE5B,IAAM,EAAS,EAAiB,EAAI,CAIpC,GAFI,EAAO,SAAA,IAEP,GAAa,IAAI,EAAO,CAAE,MAAO,GAErC,IAAM,EAAO,EAAO,UAAU,EAAA,GAAc,CACtC,EAAa,EAAO,WAAA,GAAsB,CAAG,GAG7C,EAAkB,GADC,EAAiB,CAAE,OAAM,OAAQ,GAAS,CAAC,CACnB,GAIjD,OAAO,KAFY,GAAmB,GAAK,EAAI,ICjC1C,GAAoB,GAA2B,CACpD,IAAM,EAAqB,OAAO,SACjC,EAAM,UAAA,EAAA,EAAsF,CAC5F,GACA,CAEK,EACL,EAAM,UAAU,EAAA,EAA8B,CAC9C,EAAM,UAAA,EAA0D,CAE7D,EAAc,EAClB,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IACvB,IAAgB,EAAa,WAAW,EAAE,CAAG,IAAM,KAAO,GAAK,GAEhE,IAAM,EAAiB,EAAA,GAEnB,EAAe,EACnB,IAAK,IAAI,EAAI,GAAI,EAAI,GAAI,IACxB,IAAiB,EAAa,WAAW,EAAE,CAAG,IAAM,KAAO,GAAK,EAAI,KAQrE,MAAA,KAJE,EAAiB,IAAgB,EAAe,KAAA,KAI9B,GAeR,GAA2B,GAA2B,CAClE,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,CAItC,OAFI,EAAO,SAAA,GAEJ,GAAiB,EAAO,CAFM,ICrDhC,GAAiB,GASjB,IAAW,EAAe,IAA8B,CAC7D,IAAM,EAAgB,EAAM,OAE5B,OADI,GAAiB,EAAkB,EAChC,IAAI,OAAO,EAAY,EAAc,CAAG,GAsBnC,GAAkB,GAAsC,CACpE,GAAI,CAAC,EAAS,MAAO,GAErB,IAAM,EAAS,EAAiB,EAAQ,CAExC,GAAI,EAAO,SAAW,GAAK,EAAO,SAAW,GAAI,MAAO,GAExD,IAAM,EAAe,GAAQ,EAAQ,GAAe,CAEpD,GAAI,CAAC,WAAW,KAAK,EAAa,CAAE,MAAO,GAI3C,IAAM,EAFsB,EAAa,UAAU,EAAG,GAAG,CAEb,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAEpE,EAAM,EACN,EAAa,EACjB,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAEvB,GADc,OAAO,SAAS,EAAgB,IAAM,IAAK,GAAG,CAC7C,EAEX,GAAc,EACjB,EAAa,EAEb,IAMF,IAAI,EAAgB,GAFN,EAAM,GAUpB,OANI,GAAiB,KACpB,EAAgB,GAKV,IAFa,OAAO,SAAS,EAAa,KAAO,IAAK,GAAG,ECtE3D,GAAiB,GAA2B,CACjD,GAAI,EAAM,SAAW,GAAI,MAAO,GAEhC,IAAM,EAAkB,EAAM,MAAM,GAAI,GAAG,CAC3C,OAAO,EAAM,SAAW,KAAO,IAAoB,MAAQ,IAAoB,OAG1E,IAAuB,CAC5B,mBACA,qBAIa,CACb,IAAI,EAAM,EAEV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IACtB,IAAQ,EAAiB,WAAW,EAAE,CAAG,KAAO,EAAI,GAGrD,IAAM,EAAY,EAAM,GAMxB,OAJI,IAAc,IAAM,IAAoB,MAAQ,IAAoB,MAChE,EAGD,IAAc,GAAK,EAAI,GAGzB,IAAwB,CAC7B,kBACA,gBAIa,CAMb,IAAM,IAJJ,EAAgB,WAAW,EAAE,CAAG,IAAM,GACtC,EAAgB,WAAW,EAAE,CAAG,IAAM,EACvC,EAAa,GAEU,GAMxB,OAJK,IAAoB,MAAQ,IAAoB,OAAS,IAAc,EACpE,EAGD,IAAc,GAAK,EAAI,GAGlB,GAAkB,GAA2B,CACzD,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,CAEtC,GAAI,CAAC,GAAc,EAAO,CAAE,MAAO,GAEnC,IAAM,EAAmB,EAAO,MAAM,EAAG,EAAE,CACrC,EAAkB,EAAO,MAAM,GAAI,GAAG,CACtC,EAAW,EAAO,MAAM,GAAG,CAE3B,EAAS,OAAO,EAAgB,CAEtC,GAAI,CAAC,OAAO,UAAU,EAAO,EAAI,EAAS,GAAK,EAAS,GAAI,MAAO,GAEnE,IAAM,EAAS,GAAoB,CAAE,mBAAkB,kBAAiB,CAAC,CAGzE,OAAO,IAAa,GAAG,IAFR,GAAqB,CAAE,kBAAiB,WAAY,EAAQ,CAAC,IC3DhE,GAAe,GAC3B,EAAiB,EAAM,CAAC,MAAM,EAAA,GAAU,CCD5B,GAAY,GACxB,EAAiB,EAAM,CAAC,MAAM,EAAA,EAAU,CCP5B,GAAY,GACxB,EAAiB,EAAM,CAAC,MAAM,EAAA,GAAU,CCCnC,IAAY,EAAwB,IACrC,IAAY,EACR,EAAuB,EAAM,CAG9B,EAAiB,EAAM,6+CAY9B,EACA,IACY,GAAS,EAAO,GAAS,QAAQ,CAAC,MAAM,EAAA,GAAU,YCftC,GACxB,EAAiB,EAAM,CAAC,MAAM,EAAA,GAAU,iBCOX,GAA0B,CACvD,GAAI,CAAC,GAAS,OAAO,GAAU,SAAU,MAAO,GAEhD,IAAM,EAAS,EAAiB,EAAM,EAAI,IAE1C,OAAO,OAAO,SAAS,EAAQ,GAAG,CAAG,wBCnBL,GAChC,EAAiB,EAAM,CAAC,MAAM,EAAA,EAAU,uCCUX,GACzB,CAAC,GAAY,OAAO,GAAa,SAAiB,GAC/C,EAAuB,EAAS,CAAC,MAAM,EAAA,EAAU,cCP9B,GAC1B,EAAiB,EAAM,CAAC,MAAM,EAAA,GAAU,YCDhB,GACxB,EAAiB,EAAM,CAAC,MAAM,EAAA,GAAU,yBCDH,GACrC,EAAiB,EAAM,CAAC,MAAM,EAAA,GAAU,gBCPZ,GAC5B,EAAiB,EAAM,CAAC,MAAM,EAAA,GAAU"}