diff --git a/.github/workflows/ibge-sync.yml b/.github/workflows/ibge-sync.yml new file mode 100644 index 0000000..8c36f56 --- /dev/null +++ b/.github/workflows/ibge-sync.yml @@ -0,0 +1,61 @@ +name: IBGE Sync Check + +on: + schedule: + # Runs daily at 06:00 UTC + - cron: "0 6 * * *" + workflow_dispatch: # Allow manual trigger + +jobs: + ibge-sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-ibge-${{ hashFiles('**/Cargo.lock') }} + + - name: Fetch latest IBGE data + run: | + curl -sf -o core/tests/data/ibge_municipios_$(date +%Y-%m-%d).json \ + "https://servicodados.ibge.gov.br/api/v1/localidades/municipios?orderBy=nome" + + - name: Run IBGE sync tests + run: cargo test -p stdbr-core --test municipio_ibge_sync + + - name: Open issue if out of sync + if: failure() + uses: actions/github-script@v7 + with: + script: | + const title = `IBGE municipality data out of sync (${new Date().toISOString().split('T')[0]})`; + const existing = await github.rest.issues.listForRepo({ + owner: context.repo.owner, + repo: context.repo.repo, + state: 'open', + labels: 'ibge-sync', + }); + if (existing.data.length === 0) { + await github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title, + body: [ + '## IBGE municipality data is out of sync', + '', + 'The daily sync check detected differences between `core/src/municipio.rs` and the live IBGE API.', + '', + `Workflow run: ${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`, + ].join('\n'), + labels: ['ibge-sync'], + }); + } diff --git a/.gitignore b/.gitignore index 9e431a4..26b1c09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .direnv /bazel-* /target +core/tests/data/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..b3c9d51 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "rust-lang.rust-analyzer" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..817f0b4 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "rust-analyzer.procMacro.ignored": { + "napi_derive": ["napi"] + }, + "rust-analyzer.check.command": "clippy", + "rust-analyzer.cargo.features": "all" +} diff --git a/Cargo.lock b/Cargo.lock index 5138df7..c0a8193 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -69,6 +69,12 @@ dependencies = [ "rustversion", ] +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + [[package]] name = "libc" version = "0.2.186" @@ -291,9 +297,54 @@ version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + [[package]] name = "stdbr-core" version = "0.0.1" +dependencies = [ + "serde_json", +] [[package]] name = "stdbr-ffi" @@ -413,3 +464,9 @@ name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/bindings/ffi-c/src/cep.rs b/bindings/ffi-c/src/cep.rs new file mode 100644 index 0000000..d2da6dd --- /dev/null +++ b/bindings/ffi-c/src/cep.rs @@ -0,0 +1,211 @@ +use core::ffi::c_char; +use core::ptr; + +use stdbr_core::cep::{self, CepError}; + +use crate::uf::StdbrState; +use crate::{cstr_to_str, to_c_string}; + +/// Postal region mapped by the first digit of a CEP. +#[repr(u8)] +#[allow(dead_code)] +pub enum StdbrPostalRegion { + GranSaoPaulo = 0, + InteriorSaoPaulo = 1, + RjEs = 2, + Mg = 3, + BaSe = 4, + PeAlPbRn = 5, + CePiMaPaAmAcApRr = 6, + DfGoToMtMsRo = 7, + PrSc = 8, + Rs = 9, +} + +impl StdbrPostalRegion { + fn from_core(r: cep::PostalRegion) -> Self { + // SAFETY: both enums are repr(u8) 0..=9 with same variant order. + unsafe { core::mem::transmute(r as u8) } + } + + fn into_core(self) -> cep::PostalRegion { + // SAFETY: both enums are repr(u8) 0..=9 with same variant order. + unsafe { core::mem::transmute(self as u8) } + } +} + +/// Error codes for CEP validation. +#[repr(u8)] +pub enum StdbrCepError { + Ok = 0, + InvalidLength = 1, + InvalidCharacter = 2, + InvalidFormat = 3, +} + +impl StdbrCepError { + fn from_core(e: &CepError) -> Self { + match e { + CepError::InvalidLength => Self::InvalidLength, + CepError::InvalidCharacter => Self::InvalidCharacter, + CepError::InvalidFormat => Self::InvalidFormat, + } + } +} + +pub struct StdbrCep(cep::Cep); + +/// Parses a CEP string (strict). Returns `NULL` on failure. +/// Writes the error code to `*err` when `err` is not `NULL`. +/// +/// # Safety +/// `raw` must be a valid null-terminated UTF-8 string. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_parse( + raw: *const c_char, + err: *mut StdbrCepError, +) -> *mut StdbrCep { + let Some(s) = (unsafe { cstr_to_str(raw) }) else { + if !err.is_null() { + unsafe { *err = StdbrCepError::InvalidLength }; + } + return ptr::null_mut(); + }; + + match s.parse::() { + Result::Ok(c) => { + if !err.is_null() { + unsafe { *err = StdbrCepError::Ok }; + } + Box::into_raw(Box::new(StdbrCep(c))) + } + Err(e) => { + if !err.is_null() { + unsafe { *err = StdbrCepError::from_core(&e) }; + } + ptr::null_mut() + } + } +} + +/// Generates a random valid CEP. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_cep_create() -> *mut StdbrCep { + Box::into_raw(Box::new(StdbrCep(cep::generate_cep()))) +} + +/// Generates a random CEP for a postal region. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_cep_create_for_region(region: StdbrPostalRegion) -> *mut StdbrCep { + Box::into_raw(Box::new(StdbrCep(cep::generate_for_region( + region.into_core(), + )))) +} + +/// Generates a random CEP within the range of a given state. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_cep_create_for_state(state: StdbrState) -> *mut StdbrCep { + Box::into_raw(Box::new(StdbrCep(cep::generate_for_state( + state.into_core(), + )))) +} + +/// Destroys a CEP handle. `NULL`-safe. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_destroy(cep: *mut StdbrCep) { + if !cep.is_null() { + unsafe { drop(Box::from_raw(cep)) }; + } +} + +/// Unformatted 8-digit string. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_as_str(cep: *const StdbrCep) -> *mut c_char { + if cep.is_null() { + return ptr::null_mut(); + } + to_c_string(unsafe { &*cep }.0.as_str().into()) +} + +/// Formatted `#####-###`. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_formatted(cep: *const StdbrCep) -> *mut c_char { + if cep.is_null() { + return ptr::null_mut(); + } + to_c_string(unsafe { &*cep }.0.formatted()) +} + +/// Masked `#####-***`. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_masked(cep: *const StdbrCep) -> *mut c_char { + if cep.is_null() { + return ptr::null_mut(); + } + to_c_string(unsafe { &*cep }.0.masked()) +} + +/// Returns the postal region. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_postal_region(cep: *const StdbrCep) -> StdbrPostalRegion { + if cep.is_null() { + return StdbrPostalRegion::GranSaoPaulo; + } + StdbrPostalRegion::from_core(unsafe { &*cep }.0.postal_region()) +} + +/// Returns the state. Writes the result to `*out` and returns `true`. +/// Returns `false` if the CEP doesn't map to a known state. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_state(cep: *const StdbrCep, out: *mut StdbrState) -> bool { + if cep.is_null() || out.is_null() { + return false; + } + match unsafe { &*cep }.0.state() { + Some(s) => { + unsafe { *out = StdbrState::from_core(s) }; + true + } + None => false, + } +} + +/// Lenient validation strips non-digits before checking. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_is_valid(raw: *const c_char) -> bool { + unsafe { cstr_to_str(raw) }.is_some_and(cep::is_valid) +} + +/// Strict validation. Returns a `StdbrCepError` code. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_is_valid_strict(raw: *const c_char) -> StdbrCepError { + let Some(s) = (unsafe { cstr_to_str(raw) }) else { + return StdbrCepError::InvalidLength; + }; + match cep::is_valid_strict(s) { + Result::Ok(()) => StdbrCepError::Ok, + Err(ref e) => StdbrCepError::from_core(e), + } +} + +/// Random valid CEP as 8-digit string. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_cep_generate() -> *mut c_char { + to_c_string(cep::generate()) +} + +/// Formats as `#####-###`, or `NULL` if invalid. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_format(raw: *const c_char) -> *mut c_char { + unsafe { cstr_to_str(raw) } + .and_then(cep::format_cep) + .map_or(ptr::null_mut(), to_c_string) +} + +/// Strips non-digit characters. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cep_remove_symbols(raw: *const c_char) -> *mut c_char { + unsafe { cstr_to_str(raw) } + .map(cep::remove_symbols) + .map_or(ptr::null_mut(), to_c_string) +} diff --git a/bindings/ffi-c/src/cnpj.rs b/bindings/ffi-c/src/cnpj.rs new file mode 100644 index 0000000..d6e9c75 --- /dev/null +++ b/bindings/ffi-c/src/cnpj.rs @@ -0,0 +1,250 @@ +use core::ffi::c_char; +use core::ptr; + +use stdbr_core::cnpj::{self, CnpjError}; + +use crate::{cstr_to_str, to_c_string}; + +/// Whether the CNPJ uses only digits or also contains letters. +#[repr(u8)] +#[allow(dead_code)] +pub enum StdbrCnpjKind { + Numeric = 0, + Alphanumeric = 1, +} + +impl StdbrCnpjKind { + fn into_core(self) -> cnpj::CnpjKind { + match self as u8 { + 0 => cnpj::CnpjKind::Numeric, + _ => cnpj::CnpjKind::Alphanumeric, + } + } + + fn from_core(k: cnpj::CnpjKind) -> Self { + match k { + cnpj::CnpjKind::Numeric => Self::Numeric, + cnpj::CnpjKind::Alphanumeric => Self::Alphanumeric, + } + } +} + +/// Whether the establishment is Matriz or Filial. +#[repr(u8)] +#[allow(dead_code)] +pub enum StdbrEstablishmentType { + Matriz = 0, + Filial = 1, +} + +impl StdbrEstablishmentType { + fn from_core(t: cnpj::EstablishmentType) -> Self { + match t { + cnpj::EstablishmentType::Matriz => Self::Matriz, + cnpj::EstablishmentType::Filial => Self::Filial, + } + } +} + +/// Error codes for CNPJ validation. `STDBR_CNPJ_ERROR_OK` (0) = success. +#[repr(u8)] +pub enum StdbrCnpjError { + Ok = 0, + InvalidLength = 1, + InvalidCharacter = 2, + InvalidFormat = 3, + AllCharsEqual = 4, + InvalidCheckDigits = 5, +} + +impl StdbrCnpjError { + fn from_core(e: &CnpjError) -> Self { + match e { + CnpjError::InvalidLength => Self::InvalidLength, + CnpjError::InvalidCharacter => Self::InvalidCharacter, + CnpjError::InvalidFormat => Self::InvalidFormat, + CnpjError::AllCharsEqual => Self::AllCharsEqual, + CnpjError::InvalidCheckDigits => Self::InvalidCheckDigits, + } + } +} + +pub struct StdbrCnpj(cnpj::Cnpj); + +/// Parses a CNPJ string (strict). Returns `NULL` on failure. +/// Writes the error code to `*err` when `err` is not `NULL`. +/// +/// # Safety +/// `raw` must be a valid null-terminated UTF-8 string. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_parse( + raw: *const c_char, + err: *mut StdbrCnpjError, +) -> *mut StdbrCnpj { + let Some(s) = (unsafe { cstr_to_str(raw) }) else { + if !err.is_null() { + unsafe { *err = StdbrCnpjError::InvalidLength }; + } + return ptr::null_mut(); + }; + + match s.parse::() { + Result::Ok(c) => { + if !err.is_null() { + unsafe { *err = StdbrCnpjError::Ok }; + } + Box::into_raw(Box::new(StdbrCnpj(c))) + } + Err(e) => { + if !err.is_null() { + unsafe { *err = StdbrCnpjError::from_core(&e) }; + } + ptr::null_mut() + } + } +} + +/// Generates a random valid CNPJ. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_cnpj_create(kind: StdbrCnpjKind) -> *mut StdbrCnpj { + Box::into_raw(Box::new(StdbrCnpj(cnpj::generate_cnpj(kind.into_core())))) +} + +/// Generates a random valid CNPJ with ordem "0001" (Matriz). +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_cnpj_create_matriz(kind: StdbrCnpjKind) -> *mut StdbrCnpj { + Box::into_raw(Box::new(StdbrCnpj(cnpj::generate_matriz(kind.into_core())))) +} + +/// Destroys a CNPJ handle. `NULL`-safe. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_destroy(cnpj: *mut StdbrCnpj) { + if !cnpj.is_null() { + unsafe { drop(Box::from_raw(cnpj)) }; + } +} + +/// Unformatted 14-character string. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_as_str(cnpj: *const StdbrCnpj) -> *mut c_char { + if cnpj.is_null() { + return ptr::null_mut(); + } + to_c_string(unsafe { &*cnpj }.0.as_str().into()) +} + +/// Formatted `XX.XXX.XXX/XXXX-DD`. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_formatted(cnpj: *const StdbrCnpj) -> *mut c_char { + if cnpj.is_null() { + return ptr::null_mut(); + } + to_c_string(unsafe { &*cnpj }.0.to_string()) +} + +/// Masked `XX.XXX.XXX/****-**`. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_masked(cnpj: *const StdbrCnpj) -> *mut c_char { + if cnpj.is_null() { + return ptr::null_mut(); + } + to_c_string(unsafe { &*cnpj }.0.masked()) +} + +/// Returns the CNPJ kind (numeric or alphanumeric). +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_kind(cnpj: *const StdbrCnpj) -> StdbrCnpjKind { + if cnpj.is_null() { + return StdbrCnpjKind::Numeric; + } + StdbrCnpjKind::from_core(unsafe { &*cnpj }.0.kind()) +} + +/// Returns the establishment type (Matriz or Filial). +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_establishment_type( + cnpj: *const StdbrCnpj, +) -> StdbrEstablishmentType { + if cnpj.is_null() { + return StdbrEstablishmentType::Matriz; + } + StdbrEstablishmentType::from_core(unsafe { &*cnpj }.0.establishment_type()) +} + +/// Writes the two check digits to `*d1` and `*d2`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_check_digits(cnpj: *const StdbrCnpj, d1: *mut u8, d2: *mut u8) { + if cnpj.is_null() || d1.is_null() || d2.is_null() { + return; + } + let (a, b) = unsafe { &*cnpj }.0.check_digits(); + unsafe { + *d1 = a; + *d2 = b; + } +} + +/// Lenient validation strips non-alphanumeric chars before checking. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_is_valid(raw: *const c_char) -> bool { + unsafe { cstr_to_str(raw) }.is_some_and(cnpj::is_valid) +} + +/// Strict validation. Returns a `StdbrCnpjError` code. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_is_valid_strict(raw: *const c_char) -> StdbrCnpjError { + let Some(s) = (unsafe { cstr_to_str(raw) }) else { + return StdbrCnpjError::InvalidLength; + }; + match cnpj::is_valid_strict(s) { + Result::Ok(()) => StdbrCnpjError::Ok, + Err(ref e) => StdbrCnpjError::from_core(e), + } +} + +/// Random valid CNPJ as 14-character string. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_cnpj_generate(kind: StdbrCnpjKind) -> *mut c_char { + to_c_string(cnpj::generate(kind.into_core())) +} + +/// Formats as `XX.XXX.XXX/XXXX-DD`, or `NULL` if invalid. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_format(raw: *const c_char) -> *mut c_char { + unsafe { cstr_to_str(raw) } + .and_then(cnpj::format_cnpj) + .map_or(ptr::null_mut(), to_c_string) +} + +/// Strips non-alphanumeric characters, uppercases. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_remove_symbols(raw: *const c_char) -> *mut c_char { + unsafe { cstr_to_str(raw) } + .map(cnpj::remove_symbols) + .map_or(ptr::null_mut(), to_c_string) +} + +/// Computes check digits for a 12-character base. Returns `false` if invalid. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_cnpj_compute_check_digits( + base: *const c_char, + d1: *mut u8, + d2: *mut u8, +) -> bool { + if d1.is_null() || d2.is_null() { + return false; + } + let Some(s) = (unsafe { cstr_to_str(base) }) else { + return false; + }; + match cnpj::compute_check_digits(s) { + Some((a, b)) => { + unsafe { + *d1 = a; + *d2 = b; + } + true + } + None => false, + } +} diff --git a/bindings/ffi-c/src/lib.rs b/bindings/ffi-c/src/lib.rs index 1369991..d799aec 100644 --- a/bindings/ffi-c/src/lib.rs +++ b/bindings/ffi-c/src/lib.rs @@ -1,4 +1,8 @@ +mod cep; +mod cnpj; mod cpf; +mod municipio; +pub(crate) mod uf; use core::ffi::{CStr, c_char}; use std::ffi::CString; diff --git a/bindings/ffi-c/src/municipio.rs b/bindings/ffi-c/src/municipio.rs new file mode 100644 index 0000000..8e7efeb --- /dev/null +++ b/bindings/ffi-c/src/municipio.rs @@ -0,0 +1,150 @@ +use core::ffi::c_char; +use core::ptr; + +use stdbr_core::municipio as core_mun; + +use crate::uf::StdbrState; +use crate::{cstr_to_str, to_c_string}; + +pub struct StdbrMunicipio(&'static core_mun::Municipio); + +/// Opaque list of municipalities. +pub struct StdbrMunicipioList { + items: Vec<&'static core_mun::Municipio>, +} + +/// Find a municipality by its IBGE code. Returns `NULL` if not found. +/// Caller frees with `stdbr_municipio_destroy`. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_municipio_from_ibge_code(code: u32) -> *mut StdbrMunicipio { + core_mun::Municipio::from_ibge_code(code).map_or(ptr::null_mut(), |m| { + Box::into_raw(Box::new(StdbrMunicipio(m))) + }) +} + +/// Get the capital of a given state. +/// Caller frees with `stdbr_municipio_destroy`. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_municipio_capital_of(state: StdbrState) -> *mut StdbrMunicipio { + Box::into_raw(Box::new(StdbrMunicipio(core_mun::Municipio::capital_of( + state.into_core(), + )))) +} + +/// Destroys a municipio handle. `NULL`-safe. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_destroy(m: *mut StdbrMunicipio) { + if !m.is_null() { + unsafe { drop(Box::from_raw(m)) }; + } +} + +/// Returns the IBGE code of a municipio. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_ibge_code(m: *const StdbrMunicipio) -> u32 { + if m.is_null() { + return 0; + } + unsafe { &*m }.0.ibge_code +} + +/// Returns the name of a municipio. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_name(m: *const StdbrMunicipio) -> *mut c_char { + if m.is_null() { + return ptr::null_mut(); + } + to_c_string(unsafe { &*m }.0.name.into()) +} + +/// Returns the state of a municipio. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_state(m: *const StdbrMunicipio) -> StdbrState { + if m.is_null() { + return StdbrState::AC; + } + StdbrState::from_core(unsafe { &*m }.0.state) +} + +/// Returns whether a municipio is a state capital. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_is_capital(m: *const StdbrMunicipio) -> bool { + if m.is_null() { + return false; + } + unsafe { &*m }.0.is_capital() +} + +/// Total number of municipalities in the database. +#[unsafe(no_mangle)] +#[allow(clippy::cast_possible_truncation)] +pub extern "C" fn stdbr_municipio_count() -> u32 { + core_mun::ALL.len() as u32 +} + +// --- List API --- + +/// Returns all municipalities in a given state as a list. +/// Caller frees with `stdbr_municipio_list_destroy`. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_municipio_by_state(state: StdbrState) -> *mut StdbrMunicipioList { + let items = core_mun::Municipio::by_state(state.into_core()) + .iter() + .collect(); + Box::into_raw(Box::new(StdbrMunicipioList { items })) +} + +/// Searches municipalities by name (case-insensitive substring match). +/// Caller frees with `stdbr_municipio_list_destroy`. +/// +/// # Safety +/// `query` must be a valid null-terminated UTF-8 string. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_search_by_name( + query: *const c_char, +) -> *mut StdbrMunicipioList { + let Some(q) = (unsafe { cstr_to_str(query) }) else { + return ptr::null_mut(); + }; + let items = core_mun::Municipio::search_by_name(q).collect(); + Box::into_raw(Box::new(StdbrMunicipioList { items })) +} + +/// Returns the number of items in a municipio list. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_list_count(list: *const StdbrMunicipioList) -> u32 { + if list.is_null() { + return 0; + } + #[allow(clippy::cast_possible_truncation)] + { + unsafe { &*list }.items.len() as u32 + } +} + +/// Returns a municipio from the list at the given index. +/// The returned pointer is valid as long as the list is alive. Do NOT free it. +/// Returns `NULL` if out of bounds. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_list_get( + list: *const StdbrMunicipioList, + index: u32, +) -> *mut StdbrMunicipio { + if list.is_null() { + return ptr::null_mut(); + } + unsafe { &*list } + .items + .get(index as usize) + .map_or(ptr::null_mut(), |m| { + Box::into_raw(Box::new(StdbrMunicipio(m))) + }) +} + +/// Destroys a municipio list. `NULL`-safe. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_municipio_list_destroy(list: *mut StdbrMunicipioList) { + if !list.is_null() { + unsafe { drop(Box::from_raw(list)) }; + } +} diff --git a/bindings/ffi-c/src/uf.rs b/bindings/ffi-c/src/uf.rs new file mode 100644 index 0000000..5a69dbc --- /dev/null +++ b/bindings/ffi-c/src/uf.rs @@ -0,0 +1,129 @@ +use core::ffi::c_char; +use core::ptr; + +use stdbr_core::uf as core_uf; + +use crate::to_c_string; + +/// Brazilian state. +#[repr(u8)] +#[allow(dead_code)] +pub enum StdbrState { + AC = 0, + AL = 1, + AM = 2, + AP = 3, + BA = 4, + CE = 5, + DF = 6, + ES = 7, + GO = 8, + MA = 9, + MG = 10, + MS = 11, + MT = 12, + PA = 13, + PB = 14, + PE = 15, + PI = 16, + PR = 17, + RJ = 18, + RN = 19, + RO = 20, + RR = 21, + RS = 22, + SC = 23, + SE = 24, + SP = 25, + TO = 26, +} + +impl StdbrState { + pub(crate) fn into_core(self) -> core_uf::State { + // SAFETY: both enums are repr(u8) 0..=26 with same variant order. + unsafe { core::mem::transmute(self as u8) } + } + + pub(crate) fn from_core(s: core_uf::State) -> Self { + // SAFETY: both enums are repr(u8) 0..=26 with same variant order. + unsafe { core::mem::transmute(s as u8) } + } +} + +/// Geographic region. +#[repr(u8)] +#[allow(dead_code)] +pub enum StdbrRegion { + Norte = 0, + Nordeste = 1, + CentroOeste = 2, + Sudeste = 3, + Sul = 4, +} + +impl StdbrRegion { + fn from_core(r: core_uf::Region) -> Self { + // SAFETY: both enums are repr(u8) 0..=4 with same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +/// Returns the two-letter abbreviation of a state. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_state_abbreviation(state: StdbrState) -> *mut c_char { + to_c_string(state.into_core().abbreviation().into()) +} + +/// Returns the full name of a state. Caller frees with `stdbr_free`. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_state_name(state: StdbrState) -> *mut c_char { + to_c_string(state.into_core().name().into()) +} + +/// Returns the geographic region of a state. +#[unsafe(no_mangle)] +pub extern "C" fn stdbr_state_region(state: StdbrState) -> StdbrRegion { + StdbrRegion::from_core(state.into_core().region()) +} + +/// Parse a state from its two-letter abbreviation (case-insensitive). +/// Returns `true` on success and writes the result to `*out`. +/// +/// # Safety +/// `abbr` must be a valid null-terminated UTF-8 string. +/// `out` must be a valid pointer. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_state_from_abbreviation( + abbr: *const c_char, + out: *mut StdbrState, +) -> bool { + if out.is_null() { + return false; + } + let Some(s) = (unsafe { crate::cstr_to_str(abbr) }) else { + return false; + }; + match core_uf::State::from_abbreviation(s) { + Some(state) => { + unsafe { *out = StdbrState::from_core(state) }; + true + } + None => false, + } +} + +/// Writes all 27 states to `buf`. `buf` must point to an array of at least 27 elements. +/// Returns the number of states written (always 27). +/// +/// # Safety +/// `buf` must point to a valid array of at least 27 `StdbrState` elements. +#[unsafe(no_mangle)] +pub unsafe extern "C" fn stdbr_all_states(buf: *mut StdbrState) -> u32 { + if buf.is_null() { + return 0; + } + for (i, &state) in core_uf::ALL.iter().enumerate() { + unsafe { ptr::write(buf.add(i), StdbrState::from_core(state)) }; + } + 27 +} diff --git a/bindings/nodejs/src/cep.rs b/bindings/nodejs/src/cep.rs new file mode 100644 index 0000000..10da3ba --- /dev/null +++ b/bindings/nodejs/src/cep.rs @@ -0,0 +1,167 @@ +use napi::bindgen_prelude::*; +use napi_derive::napi; + +use stdbr_core::cep as core_cep; + +use crate::uf::State; + +fn cep_err(e: &core_cep::CepError) -> Error { + Error::new(Status::InvalidArg, e.to_string()) +} + +#[napi] +#[derive(PartialEq, Eq)] +pub enum PostalRegion { + GranSaoPaulo, + InteriorSaoPaulo, + RjEs, + Mg, + BaSe, + PeAlPbRn, + CePiMaPaAmAcApRr, + DfGoToMtMsRo, + PrSc, + Rs, +} + +impl From for core_cep::PostalRegion { + fn from(r: PostalRegion) -> Self { + // SAFETY: core PostalRegion is repr(u8) 0..=9, same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +impl From for PostalRegion { + fn from(r: core_cep::PostalRegion) -> Self { + const REGIONS: [PostalRegion; 10] = [ + PostalRegion::GranSaoPaulo, + PostalRegion::InteriorSaoPaulo, + PostalRegion::RjEs, + PostalRegion::Mg, + PostalRegion::BaSe, + PostalRegion::PeAlPbRn, + PostalRegion::CePiMaPaAmAcApRr, + PostalRegion::DfGoToMtMsRo, + PostalRegion::PrSc, + PostalRegion::Rs, + ]; + REGIONS[r as u8 as usize] + } +} + +#[napi] +pub struct Cep { + inner: core_cep::Cep, +} + +#[napi] +impl Cep { + /// Parse a CEP string (accepts `#####-###` or `########`). + #[napi(factory)] + #[allow(clippy::needless_pass_by_value)] + pub fn parse(raw: String) -> Result { + let inner: core_cep::Cep = raw.parse().map_err(|e| cep_err(&e))?; + Ok(Cep { inner }) + } + + /// Generate a random valid CEP. + #[napi(factory)] + pub fn generate() -> Cep { + Cep { + inner: core_cep::generate_cep(), + } + } + + /// Generate a random CEP for a given postal region. + #[napi(factory)] + pub fn generate_for_region(region: PostalRegion) -> Cep { + Cep { + inner: core_cep::generate_for_region(region.into()), + } + } + + /// Generate a random CEP within the range of a given state. + #[napi(factory)] + pub fn generate_for_state(state: State) -> Cep { + Cep { + inner: core_cep::generate_for_state(state.into()), + } + } + + /// Unformatted 8-digit string. + #[napi] + pub fn as_str(&self) -> String { + self.inner.as_str().to_owned() + } + + /// Formatted as `#####-###`. + #[napi] + pub fn formatted(&self) -> String { + self.inner.formatted() + } + + /// Masked as `#####-***`. + #[napi] + pub fn masked(&self) -> String { + self.inner.masked() + } + + /// Postal region derived from the 1st digit. + #[napi(getter)] + pub fn postal_region(&self) -> PostalRegion { + self.inner.postal_region().into() + } + + /// State lookup by CEP range. + #[napi(getter)] + pub fn state(&self) -> Option { + self.inner.state().map(State::from) + } +} + +/// Lenient CEP validation (strips non-digit characters first). +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cep_is_valid(cep: String) -> bool { + core_cep::is_valid(&cep) +} + +/// Strict CEP validation (accepts only `#####-###` or `########`). +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cep_is_valid_strict(cep: String) -> Result<()> { + core_cep::is_valid_strict(&cep).map_err(|e| cep_err(&e)) +} + +/// Format a CEP string as `#####-###`. +/// Returns `null` if the input doesn't contain exactly 8 digits. +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cep_format(cep: String) -> Option { + core_cep::format_cep(&cep) +} + +/// Remove all non-digit characters from a CEP string. +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cep_remove_symbols(cep: String) -> String { + core_cep::remove_symbols(&cep) +} + +/// Generate a random valid CEP as an 8-digit string. +#[napi] +pub fn cep_generate() -> String { + core_cep::generate() +} + +/// Generate a random CEP for a given postal region. +#[napi] +pub fn cep_generate_for_region(region: PostalRegion) -> String { + core_cep::generate_for_region(region.into()).as_str().into() +} + +/// Generate a random CEP within the range of a given state. +#[napi] +pub fn cep_generate_for_state(state: State) -> String { + core_cep::generate_for_state(state.into()).as_str().into() +} diff --git a/bindings/nodejs/src/cnpj.rs b/bindings/nodejs/src/cnpj.rs new file mode 100644 index 0000000..b15de57 --- /dev/null +++ b/bindings/nodejs/src/cnpj.rs @@ -0,0 +1,171 @@ +use napi::bindgen_prelude::*; +use napi_derive::napi; + +use stdbr_core::cnpj as core_cnpj; + +fn cnpj_err(e: &core_cnpj::CnpjError) -> Error { + Error::new(Status::InvalidArg, e.to_string()) +} + +#[napi] +pub enum CnpjKind { + Numeric, + Alphanumeric, +} + +impl From for core_cnpj::CnpjKind { + fn from(k: CnpjKind) -> Self { + match k { + CnpjKind::Numeric => Self::Numeric, + CnpjKind::Alphanumeric => Self::Alphanumeric, + } + } +} + +impl From for CnpjKind { + fn from(k: core_cnpj::CnpjKind) -> Self { + match k { + core_cnpj::CnpjKind::Numeric => Self::Numeric, + core_cnpj::CnpjKind::Alphanumeric => Self::Alphanumeric, + } + } +} + +#[napi] +pub enum EstablishmentType { + Matriz, + Filial, +} + +impl From for EstablishmentType { + fn from(t: core_cnpj::EstablishmentType) -> Self { + match t { + core_cnpj::EstablishmentType::Matriz => Self::Matriz, + core_cnpj::EstablishmentType::Filial => Self::Filial, + } + } +} + +#[napi] +pub struct Cnpj { + inner: core_cnpj::Cnpj, +} + +#[napi] +impl Cnpj { + /// Parse a CNPJ string (accepts `XX.XXX.XXX/XXXX-DD` or 14 raw characters). + #[napi(factory)] + #[allow(clippy::needless_pass_by_value)] + pub fn parse(raw: String) -> Result { + let inner: core_cnpj::Cnpj = raw.parse().map_err(|e| cnpj_err(&e))?; + Ok(Cnpj { inner }) + } + + /// Generate a random valid CNPJ. + #[napi(factory)] + pub fn generate(kind: CnpjKind) -> Cnpj { + Cnpj { + inner: core_cnpj::generate_cnpj(kind.into()), + } + } + + /// Generate a random valid CNPJ with ordem "0001" (Matriz). + #[napi(factory)] + pub fn generate_matriz(kind: CnpjKind) -> Cnpj { + Cnpj { + inner: core_cnpj::generate_matriz(kind.into()), + } + } + + /// Unformatted 14-character string. + #[napi] + pub fn as_str(&self) -> String { + self.inner.as_str().to_owned() + } + + /// Formatted as `XX.XXX.XXX/XXXX-DD`. + #[napi] + pub fn formatted(&self) -> String { + self.inner.to_string() + } + + /// Masked as `XX.XXX.XXX/****-**`. + #[napi] + pub fn masked(&self) -> String { + self.inner.masked() + } + + /// Root (positions 1-8): identifies the company. + #[napi] + pub fn raiz(&self) -> String { + self.inner.raiz().to_owned() + } + + /// Order (positions 9-12): identifies the establishment. + #[napi] + pub fn ordem(&self) -> String { + self.inner.ordem().to_owned() + } + + /// Whether the CNPJ is numeric or alphanumeric. + #[napi(getter)] + pub fn kind(&self) -> CnpjKind { + self.inner.kind().into() + } + + /// Whether this is Matriz or Filial. + #[napi(getter)] + pub fn establishment_type(&self) -> EstablishmentType { + self.inner.establishment_type().into() + } + + /// The two check digits as `[d1, d2]`. + #[napi(getter)] + pub fn check_digits(&self) -> Vec { + let (d1, d2) = self.inner.check_digits(); + vec![d1, d2] + } +} + +/// Lenient CNPJ validation (strips non-alphanumeric characters first). +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cnpj_is_valid(cnpj: String) -> bool { + core_cnpj::is_valid(&cnpj) +} + +/// Strict CNPJ validation (accepts only `XX.XXX.XXX/XXXX-DD` or 14 raw characters). +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cnpj_is_valid_strict(cnpj: String) -> Result<()> { + core_cnpj::is_valid_strict(&cnpj).map_err(|e| cnpj_err(&e)) +} + +/// Format a CNPJ string as `XX.XXX.XXX/XXXX-DD`. +/// Returns `null` if the input is not a valid 14-character CNPJ. +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cnpj_format(cnpj: String) -> Option { + core_cnpj::format_cnpj(&cnpj) +} + +/// Remove all non-alphanumeric characters from a CNPJ string, uppercase. +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cnpj_remove_symbols(cnpj: String) -> String { + core_cnpj::remove_symbols(&cnpj) +} + +/// Generate a random valid CNPJ as a 14-character string. +#[napi] +pub fn cnpj_generate(kind: CnpjKind) -> String { + core_cnpj::generate(kind.into()) +} + +/// Compute check digits for a 12-character CNPJ base. +/// Returns `null` if the input is invalid. +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn cnpj_compute_check_digits(base: String) -> Option> { + core_cnpj::compute_check_digits(&base).map(|(d1, d2)| vec![d1, d2]) +} diff --git a/bindings/nodejs/src/lib.rs b/bindings/nodejs/src/lib.rs index f2d871a..f535af4 100644 --- a/bindings/nodejs/src/lib.rs +++ b/bindings/nodejs/src/lib.rs @@ -1,3 +1,7 @@ extern crate napi_derive; +mod cep; +mod cnpj; mod cpf; +mod municipio; +pub(crate) mod uf; diff --git a/bindings/nodejs/src/municipio.rs b/bindings/nodejs/src/municipio.rs new file mode 100644 index 0000000..deb706a --- /dev/null +++ b/bindings/nodejs/src/municipio.rs @@ -0,0 +1,76 @@ +use napi_derive::napi; + +use stdbr_core::municipio as core_mun; + +use crate::uf::State; + +#[napi] +pub struct Municipio { + inner: &'static core_mun::Municipio, +} + +#[napi] +impl Municipio { + /// IBGE 7-digit code. + #[napi(getter)] + pub fn ibge_code(&self) -> u32 { + self.inner.ibge_code + } + + /// Municipality name. + #[napi(getter)] + pub fn name(&self) -> String { + self.inner.name.to_owned() + } + + /// State this municipality belongs to. + #[napi(getter)] + pub fn state(&self) -> State { + self.inner.state.into() + } + + /// Whether this municipality is a state capital. + #[napi(getter)] + pub fn is_capital(&self) -> bool { + self.inner.is_capital() + } +} + +/// Find a municipality by its IBGE code. +#[napi] +pub fn municipio_from_ibge_code(code: u32) -> Option { + core_mun::Municipio::from_ibge_code(code).map(|m| Municipio { inner: m }) +} + +/// Get the capital of a given state. +#[napi] +pub fn municipio_capital_of(state: State) -> Municipio { + Municipio { + inner: core_mun::Municipio::capital_of(state.into()), + } +} + +/// Returns all municipalities in a given state. +#[napi] +pub fn municipios_by_state(state: State) -> Vec { + core_mun::Municipio::by_state(state.into()) + .iter() + .map(|m| Municipio { inner: m }) + .collect() +} + +/// Find municipalities whose name contains the given substring (case-insensitive). +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn municipio_search_by_name(query: String) -> Vec { + core_mun::Municipio::search_by_name(&query) + .map(|m| Municipio { inner: m }) + .collect() +} + +/// Total number of municipalities. +#[napi] +#[allow(clippy::cast_possible_truncation)] +pub fn municipio_count() -> u32 { + core_mun::ALL.len() as u32 +} diff --git a/bindings/nodejs/src/uf.rs b/bindings/nodejs/src/uf.rs new file mode 100644 index 0000000..35dc66b --- /dev/null +++ b/bindings/nodejs/src/uf.rs @@ -0,0 +1,137 @@ +use napi_derive::napi; + +use stdbr_core::uf as core_uf; + +#[napi] +#[derive(PartialEq, Eq)] +pub enum Region { + Norte, + Nordeste, + CentroOeste, + Sudeste, + Sul, +} + +impl From for core_uf::Region { + fn from(r: Region) -> Self { + // SAFETY: core Region is repr(u8) 0..=4, same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +impl From for Region { + fn from(r: core_uf::Region) -> Self { + const REGIONS: [Region; 5] = [ + Region::Norte, + Region::Nordeste, + Region::CentroOeste, + Region::Sudeste, + Region::Sul, + ]; + REGIONS[r as u8 as usize] + } +} + +#[napi] +#[derive(PartialEq, Eq)] +pub enum State { + AC, + AL, + AM, + AP, + BA, + CE, + DF, + ES, + GO, + MA, + MG, + MS, + MT, + PA, + PB, + PE, + PI, + PR, + RJ, + RN, + RO, + RR, + RS, + SC, + SE, + SP, + TO, +} + +impl From for core_uf::State { + fn from(s: State) -> Self { + core_uf::ALL[s as usize] + } +} + +impl From for State { + fn from(s: core_uf::State) -> Self { + const STATES: [State; 27] = [ + State::AC, + State::AL, + State::AM, + State::AP, + State::BA, + State::CE, + State::DF, + State::ES, + State::GO, + State::MA, + State::MG, + State::MS, + State::MT, + State::PA, + State::PB, + State::PE, + State::PI, + State::PR, + State::RJ, + State::RN, + State::RO, + State::RR, + State::RS, + State::SC, + State::SE, + State::SP, + State::TO, + ]; + STATES[s as u8 as usize] + } +} + +/// Get the abbreviation of a state (e.g. "SP"). +#[napi] +pub fn state_abbreviation(state: State) -> String { + core_uf::State::from(state).abbreviation().to_owned() +} + +/// Get the full name of a state (e.g. "São Paulo"). +#[napi] +pub fn state_name(state: State) -> String { + core_uf::State::from(state).name().to_owned() +} + +/// Get the geographic region of a state. +#[napi] +pub fn state_region(state: State) -> Region { + core_uf::State::from(state).region().into() +} + +/// Parse a state from its two-letter abbreviation (case-insensitive). +#[napi] +#[allow(clippy::needless_pass_by_value)] +pub fn state_from_abbreviation(abbr: String) -> Option { + core_uf::State::from_abbreviation(&abbr).map(State::from) +} + +/// Returns all 27 Brazilian states. +#[napi] +pub fn all_states() -> Vec { + core_uf::ALL.iter().copied().map(State::from).collect() +} diff --git a/bindings/python/src/cep.rs b/bindings/python/src/cep.rs new file mode 100644 index 0000000..4e90e12 --- /dev/null +++ b/bindings/python/src/cep.rs @@ -0,0 +1,167 @@ +use pyo3::prelude::*; +use stdbr_core::cep as core_cep; + +use crate::uf::State; + +fn cep_err(e: &core_cep::CepError) -> PyErr { + pyo3::exceptions::PyValueError::new_err(e.to_string()) +} + +#[pyclass(eq, eq_int)] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum PostalRegion { + GranSaoPaulo = 0, + InteriorSaoPaulo = 1, + RjEs = 2, + Mg = 3, + BaSe = 4, + PeAlPbRn = 5, + CePiMaPaAmAcApRr = 6, + DfGoToMtMsRo = 7, + PrSc = 8, + Rs = 9, +} + +impl From for core_cep::PostalRegion { + fn from(r: PostalRegion) -> Self { + // SAFETY: core PostalRegion is repr(u8) 0..=9, same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +impl From for PostalRegion { + fn from(r: core_cep::PostalRegion) -> Self { + // SAFETY: both enums have repr(u8) 0..=9, same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +#[pyclass] +pub struct Cep { + inner: core_cep::Cep, +} + +#[pymethods] +impl Cep { + /// Parse a CEP string (accepts `#####-###` or `########`). + #[staticmethod] + fn parse(raw: &str) -> PyResult { + let cep: core_cep::Cep = raw.parse().map_err(|e| cep_err(&e))?; + Ok(Self { inner: cep }) + } + + /// Generate a random valid CEP. + #[staticmethod] + fn generate() -> Self { + Self { + inner: core_cep::generate_cep(), + } + } + + /// Generate a random CEP for a given postal region. + #[staticmethod] + fn generate_for_region(region: PostalRegion) -> Self { + Self { + inner: core_cep::generate_for_region(region.into()), + } + } + + /// Generate a random CEP within the range of a given state. + #[staticmethod] + fn generate_for_state(state: State) -> Self { + Self { + inner: core_cep::generate_for_state(state.into()), + } + } + + /// Unformatted 8-digit string. + fn as_str(&self) -> &str { + self.inner.as_str() + } + + /// Formatted as `#####-###`. + fn formatted(&self) -> String { + self.inner.formatted() + } + + /// Masked as `#####-***`. + fn masked(&self) -> String { + self.inner.masked() + } + + /// Postal region derived from the 1st digit. + #[getter] + fn postal_region(&self) -> PostalRegion { + self.inner.postal_region().into() + } + + /// State lookup by CEP range. + #[getter] + fn state(&self) -> Option { + self.inner.state().map(State::from) + } + + fn __str__(&self) -> String { + self.inner.to_string() + } + + fn __repr__(&self) -> String { + format!("Cep('{}')", self.inner) + } +} + +/// Lenient CEP validation (strips non-digit characters first). +#[pyfunction] +fn cep_is_valid(cep: &str) -> bool { + core_cep::is_valid(cep) +} + +/// Strict CEP validation (accepts only `#####-###` or `########`). +#[pyfunction] +fn cep_is_valid_strict(cep: &str) -> PyResult<()> { + core_cep::is_valid_strict(cep).map_err(|e| cep_err(&e)) +} + +/// Format a CEP string as `#####-###`. +/// Returns `None` if the input doesn't contain exactly 8 digits. +#[pyfunction] +fn cep_format(cep: &str) -> Option { + core_cep::format_cep(cep) +} + +/// Remove all non-digit characters from a CEP string. +#[pyfunction] +fn cep_remove_symbols(cep: &str) -> String { + core_cep::remove_symbols(cep) +} + +/// Generate a random valid CEP as an 8-digit string. +#[pyfunction] +fn cep_generate() -> String { + core_cep::generate() +} + +/// Generate a random CEP for a given postal region. +#[pyfunction] +fn cep_generate_for_region(region: PostalRegion) -> String { + core_cep::generate_for_region(region.into()).as_str().into() +} + +/// Generate a random CEP within the range of a given state. +#[pyfunction] +fn cep_generate_for_state(state: State) -> String { + core_cep::generate_for_state(state.into()).as_str().into() +} + +pub fn register(m: &Bound<'_, PyModule>) -> PyResult<()> { + m.add_class::()?; + m.add_class::()?; + m.add_function(wrap_pyfunction!(cep_is_valid, m)?)?; + m.add_function(wrap_pyfunction!(cep_is_valid_strict, m)?)?; + m.add_function(wrap_pyfunction!(cep_format, m)?)?; + m.add_function(wrap_pyfunction!(cep_remove_symbols, m)?)?; + m.add_function(wrap_pyfunction!(cep_generate, m)?)?; + m.add_function(wrap_pyfunction!(cep_generate_for_region, m)?)?; + m.add_function(wrap_pyfunction!(cep_generate_for_state, m)?)?; + Ok(()) +} diff --git a/bindings/python/src/cnpj.rs b/bindings/python/src/cnpj.rs new file mode 100644 index 0000000..d574e9e --- /dev/null +++ b/bindings/python/src/cnpj.rs @@ -0,0 +1,180 @@ +use pyo3::prelude::*; +use stdbr_core::cnpj as core_cnpj; + +fn cnpj_err(e: &core_cnpj::CnpjError) -> PyErr { + pyo3::exceptions::PyValueError::new_err(e.to_string()) +} + +#[pyclass(eq, eq_int)] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum CnpjKind { + Numeric = 0, + Alphanumeric = 1, +} + +impl From for core_cnpj::CnpjKind { + fn from(k: CnpjKind) -> Self { + match k { + CnpjKind::Numeric => Self::Numeric, + CnpjKind::Alphanumeric => Self::Alphanumeric, + } + } +} + +impl From for CnpjKind { + fn from(k: core_cnpj::CnpjKind) -> Self { + match k { + core_cnpj::CnpjKind::Numeric => Self::Numeric, + core_cnpj::CnpjKind::Alphanumeric => Self::Alphanumeric, + } + } +} + +#[pyclass(eq, eq_int)] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum EstablishmentType { + Matriz = 0, + Filial = 1, +} + +impl From for EstablishmentType { + fn from(t: core_cnpj::EstablishmentType) -> Self { + match t { + core_cnpj::EstablishmentType::Matriz => Self::Matriz, + core_cnpj::EstablishmentType::Filial => Self::Filial, + } + } +} + +#[pyclass] +pub struct Cnpj { + inner: core_cnpj::Cnpj, +} + +#[pymethods] +impl Cnpj { + /// Parse a CNPJ string (accepts `XX.XXX.XXX/XXXX-DD` or 14 raw characters). + #[staticmethod] + fn parse(raw: &str) -> PyResult { + let cnpj: core_cnpj::Cnpj = raw.parse().map_err(|e| cnpj_err(&e))?; + Ok(Self { inner: cnpj }) + } + + /// Generate a random valid CNPJ. + #[staticmethod] + fn generate(kind: CnpjKind) -> Self { + Self { + inner: core_cnpj::generate_cnpj(kind.into()), + } + } + + /// Generate a random valid CNPJ with ordem "0001" (Matriz). + #[staticmethod] + fn generate_matriz(kind: CnpjKind) -> Self { + Self { + inner: core_cnpj::generate_matriz(kind.into()), + } + } + + /// Unformatted 14-character string. + fn as_str(&self) -> &str { + self.inner.as_str() + } + + /// Formatted as `XX.XXX.XXX/XXXX-DD`. + fn formatted(&self) -> String { + self.inner.to_string() + } + + /// Masked as `XX.XXX.XXX/****-**`. + fn masked(&self) -> String { + self.inner.masked() + } + + /// Root (positions 1-8): identifies the company. + fn raiz(&self) -> &str { + self.inner.raiz() + } + + /// Order (positions 9-12): identifies the establishment. + fn ordem(&self) -> &str { + self.inner.ordem() + } + + /// Whether the CNPJ is numeric or alphanumeric. + #[getter] + fn kind(&self) -> CnpjKind { + self.inner.kind().into() + } + + /// Whether this is Matriz or Filial. + #[getter] + fn establishment_type(&self) -> EstablishmentType { + self.inner.establishment_type().into() + } + + /// The two check digits as `(d1, d2)`. + #[getter] + fn check_digits(&self) -> (u8, u8) { + self.inner.check_digits() + } + + fn __str__(&self) -> String { + self.inner.to_string() + } + + fn __repr__(&self) -> String { + format!("Cnpj('{}')", self.inner) + } +} + +/// Lenient CNPJ validation (strips non-alphanumeric characters first). +#[pyfunction] +fn cnpj_is_valid(cnpj: &str) -> bool { + core_cnpj::is_valid(cnpj) +} + +/// Strict CNPJ validation (accepts only `XX.XXX.XXX/XXXX-DD` or 14 raw characters). +#[pyfunction] +fn cnpj_is_valid_strict(cnpj: &str) -> PyResult<()> { + core_cnpj::is_valid_strict(cnpj).map_err(|e| cnpj_err(&e)) +} + +/// Format a CNPJ string as `XX.XXX.XXX/XXXX-DD`. +/// Returns `None` if the input is not a valid 14-character CNPJ. +#[pyfunction] +fn cnpj_format(cnpj: &str) -> Option { + core_cnpj::format_cnpj(cnpj) +} + +/// Remove all non-alphanumeric characters from a CNPJ string, uppercase. +#[pyfunction] +fn cnpj_remove_symbols(cnpj: &str) -> String { + core_cnpj::remove_symbols(cnpj) +} + +/// Generate a random valid CNPJ as a 14-character string. +#[pyfunction] +fn cnpj_generate(kind: CnpjKind) -> String { + core_cnpj::generate(kind.into()) +} + +/// Compute check digits for a 12-character CNPJ base. +/// Returns `None` if the input is invalid. +#[pyfunction] +fn cnpj_compute_check_digits(base: &str) -> Option<(u8, u8)> { + core_cnpj::compute_check_digits(base) +} + +pub fn register(m: &Bound<'_, PyModule>) -> PyResult<()> { + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_function(wrap_pyfunction!(cnpj_is_valid, m)?)?; + m.add_function(wrap_pyfunction!(cnpj_is_valid_strict, m)?)?; + m.add_function(wrap_pyfunction!(cnpj_format, m)?)?; + m.add_function(wrap_pyfunction!(cnpj_remove_symbols, m)?)?; + m.add_function(wrap_pyfunction!(cnpj_generate, m)?)?; + m.add_function(wrap_pyfunction!(cnpj_compute_check_digits, m)?)?; + Ok(()) +} diff --git a/bindings/python/src/lib.rs b/bindings/python/src/lib.rs index ab61980..a9713ea 100644 --- a/bindings/python/src/lib.rs +++ b/bindings/python/src/lib.rs @@ -1,8 +1,16 @@ +mod cep; +mod cnpj; mod cpf; +mod municipio; +pub(crate) mod uf; use pyo3::prelude::*; #[pymodule] fn stdbr(m: &Bound<'_, PyModule>) -> PyResult<()> { - cpf::register(m) + uf::register(m)?; + cpf::register(m)?; + cnpj::register(m)?; + cep::register(m)?; + municipio::register(m) } diff --git a/bindings/python/src/municipio.rs b/bindings/python/src/municipio.rs new file mode 100644 index 0000000..2a4c72f --- /dev/null +++ b/bindings/python/src/municipio.rs @@ -0,0 +1,92 @@ +use pyo3::prelude::*; +use stdbr_core::municipio as core_mun; + +use crate::uf::State; + +#[pyclass] +pub struct Municipio { + inner: &'static core_mun::Municipio, +} + +#[pymethods] +impl Municipio { + /// IBGE 7-digit code. + #[getter] + fn ibge_code(&self) -> u32 { + self.inner.ibge_code + } + + /// Municipality name. + #[getter] + fn name(&self) -> &str { + self.inner.name + } + + /// State this municipality belongs to. + #[getter] + fn state(&self) -> State { + self.inner.state.into() + } + + /// Whether this municipality is a state capital. + #[getter] + fn is_capital(&self) -> bool { + self.inner.is_capital() + } + + fn __str__(&self) -> String { + self.inner.to_string() + } + + fn __repr__(&self) -> String { + format!("Municipio({}, '{}')", self.inner.ibge_code, self.inner.name) + } +} + +/// Find a municipality by its IBGE code. +#[pyfunction] +fn municipio_from_ibge_code(code: u32) -> Option { + core_mun::Municipio::from_ibge_code(code).map(|m| Municipio { inner: m }) +} + +/// Get the capital of a given state. +#[pyfunction] +fn municipio_capital_of(state: State) -> Municipio { + Municipio { + inner: core_mun::Municipio::capital_of(state.into()), + } +} + +/// Returns all municipalities in a given state. +#[pyfunction] +fn municipios_by_state(state: State) -> Vec { + core_mun::Municipio::by_state(state.into()) + .iter() + .map(|m| Municipio { inner: m }) + .collect() +} + +/// Find municipalities whose name contains the given substring (case-insensitive). +#[pyfunction] +fn municipio_search_by_name(query: &str) -> Vec { + core_mun::Municipio::search_by_name(query) + .map(|m| Municipio { inner: m }) + .collect() +} + +/// Total number of municipalities. +#[pyfunction] +#[allow(clippy::cast_possible_truncation)] +fn municipio_count() -> u32 { + core_mun::ALL.len() as u32 +} + +pub fn register(m: &Bound<'_, PyModule>) -> PyResult<()> { + m.add_class::()?; + m.add_function(wrap_pyfunction!(municipio_from_ibge_code, m)?)?; + m.add_function(wrap_pyfunction!(municipio_capital_of, m)?)?; + m.add_function(wrap_pyfunction!(municipios_by_state, m)?)?; + m.add_function(wrap_pyfunction!(municipio_search_by_name, m)?)?; + m.add_function(wrap_pyfunction!(municipio_count, m)?)?; + Ok(()) +} diff --git a/bindings/python/src/uf.rs b/bindings/python/src/uf.rs new file mode 100644 index 0000000..6f970d0 --- /dev/null +++ b/bindings/python/src/uf.rs @@ -0,0 +1,113 @@ +use pyo3::prelude::*; +use stdbr_core::uf as core_uf; + +#[pyclass(eq, eq_int)] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum Region { + Norte = 0, + Nordeste = 1, + CentroOeste = 2, + Sudeste = 3, + Sul = 4, +} + +impl From for core_uf::Region { + fn from(r: Region) -> Self { + // SAFETY: both enums are repr(u8) 0..=4 with same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +impl From for Region { + fn from(r: core_uf::Region) -> Self { + // SAFETY: both enums are repr(u8) 0..=4 with same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +#[pyclass(eq, eq_int)] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum State { + AC = 0, + AL = 1, + AM = 2, + AP = 3, + BA = 4, + CE = 5, + DF = 6, + ES = 7, + GO = 8, + MA = 9, + MG = 10, + MS = 11, + MT = 12, + PA = 13, + PB = 14, + PE = 15, + PI = 16, + PR = 17, + RJ = 18, + RN = 19, + RO = 20, + RR = 21, + RS = 22, + SC = 23, + SE = 24, + SP = 25, + TO = 26, +} + +impl From for core_uf::State { + fn from(s: State) -> Self { + // SAFETY: both enums are repr(u8) 0..=26 with same variant order. + unsafe { core::mem::transmute(s as u8) } + } +} + +impl From for State { + fn from(s: core_uf::State) -> Self { + // SAFETY: both enums are repr(u8) 0..=26 with same variant order. + unsafe { core::mem::transmute(s as u8) } + } +} + +/// Get the abbreviation of a state (e.g. "SP"). +#[pyfunction] +fn state_abbreviation(state: State) -> &'static str { + core_uf::State::from(state).abbreviation() +} + +/// Get the full name of a state (e.g. "São Paulo"). +#[pyfunction] +fn state_name(state: State) -> &'static str { + core_uf::State::from(state).name() +} + +/// Get the geographic region of a state. +#[pyfunction] +fn state_region(state: State) -> Region { + core_uf::State::from(state).region().into() +} + +/// Parse a state from its two-letter abbreviation (case-insensitive). +#[pyfunction] +fn state_from_abbreviation(abbr: &str) -> Option { + core_uf::State::from_abbreviation(abbr).map(State::from) +} + +/// Returns all 27 Brazilian states. +#[pyfunction] +fn all_states() -> Vec { + core_uf::ALL.iter().copied().map(State::from).collect() +} + +pub fn register(m: &Bound<'_, PyModule>) -> PyResult<()> { + m.add_class::()?; + m.add_class::()?; + m.add_function(wrap_pyfunction!(state_abbreviation, m)?)?; + m.add_function(wrap_pyfunction!(state_name, m)?)?; + m.add_function(wrap_pyfunction!(state_region, m)?)?; + m.add_function(wrap_pyfunction!(state_from_abbreviation, m)?)?; + m.add_function(wrap_pyfunction!(all_states, m)?)?; + Ok(()) +} diff --git a/bindings/wasm/src/cep.rs b/bindings/wasm/src/cep.rs new file mode 100644 index 0000000..fb329d4 --- /dev/null +++ b/bindings/wasm/src/cep.rs @@ -0,0 +1,149 @@ +use stdbr_core::cep as core_cep; +use wasm_bindgen::prelude::*; + +use crate::uf::State; + +fn cep_err(e: &core_cep::CepError) -> JsError { + JsError::new(&e.to_string()) +} + +#[wasm_bindgen] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum PostalRegion { + GranSaoPaulo = 0, + InteriorSaoPaulo = 1, + RjEs = 2, + Mg = 3, + BaSe = 4, + PeAlPbRn = 5, + CePiMaPaAmAcApRr = 6, + DfGoToMtMsRo = 7, + PrSc = 8, + Rs = 9, +} + +impl From for core_cep::PostalRegion { + fn from(r: PostalRegion) -> Self { + // SAFETY: core PostalRegion is repr(u8) 0..=9, same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +impl From for PostalRegion { + fn from(r: core_cep::PostalRegion) -> Self { + // SAFETY: both enums have repr(u8) 0..=9, same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +#[wasm_bindgen] +pub struct Cep { + inner: core_cep::Cep, +} + +#[wasm_bindgen] +impl Cep { + /// Parse a CEP string (accepts `#####-###` or `########`). + #[wasm_bindgen] + pub fn parse(raw: &str) -> Result { + let cep: core_cep::Cep = raw.parse().map_err(|e| cep_err(&e))?; + Ok(Self { inner: cep }) + } + + /// Generate a random valid CEP. + #[wasm_bindgen] + pub fn generate() -> Self { + Self { + inner: core_cep::generate_cep(), + } + } + + /// Generate a random CEP for a given postal region. + #[wasm_bindgen(js_name = "generateForRegion")] + pub fn generate_for_region(region: PostalRegion) -> Self { + Self { + inner: core_cep::generate_for_region(region.into()), + } + } + + /// Generate a random CEP within the range of a given state. + #[wasm_bindgen(js_name = "generateForState")] + pub fn generate_for_state(state: State) -> Self { + Self { + inner: core_cep::generate_for_state(state.into()), + } + } + + /// Unformatted 8-digit string. + #[wasm_bindgen(js_name = "asStr")] + pub fn as_str(&self) -> String { + self.inner.as_str().to_owned() + } + + /// Formatted as `#####-###`. + #[wasm_bindgen] + pub fn formatted(&self) -> String { + self.inner.formatted() + } + + /// Masked as `#####-***`. + #[wasm_bindgen] + pub fn masked(&self) -> String { + self.inner.masked() + } + + /// Postal region derived from the 1st digit. + #[wasm_bindgen(getter, js_name = "postalRegion")] + pub fn postal_region(&self) -> PostalRegion { + self.inner.postal_region().into() + } + + /// State lookup by CEP range. Returns the state abbreviation or undefined. + #[wasm_bindgen(getter)] + pub fn state(&self) -> Option { + self.inner.state().map(State::from) + } +} + +/// Lenient CEP validation (strips non-digit characters first). +#[wasm_bindgen(js_name = "cepIsValid")] +pub fn cep_is_valid(cep: &str) -> bool { + core_cep::is_valid(cep) +} + +/// Strict CEP validation (accepts only `#####-###` or `########`). +#[wasm_bindgen(js_name = "cepIsValidStrict")] +pub fn cep_is_valid_strict(cep: &str) -> Result<(), JsError> { + core_cep::is_valid_strict(cep).map_err(|e| cep_err(&e)) +} + +/// Format a CEP string as `#####-###`. +/// Returns `undefined` if the input doesn't contain exactly 8 digits. +#[wasm_bindgen(js_name = "cepFormat")] +pub fn cep_format(cep: &str) -> Option { + core_cep::format_cep(cep) +} + +/// Remove all non-digit characters from a CEP string. +#[wasm_bindgen(js_name = "cepRemoveSymbols")] +pub fn cep_remove_symbols(cep: &str) -> String { + core_cep::remove_symbols(cep) +} + +/// Generate a random valid CEP as an 8-digit string. +#[wasm_bindgen(js_name = "cepGenerate")] +pub fn cep_generate() -> String { + core_cep::generate() +} + +/// Generate a random CEP for a given postal region. +#[wasm_bindgen(js_name = "cepGenerateForRegion")] +pub fn cep_generate_for_region(region: PostalRegion) -> String { + core_cep::generate_for_region(region.into()).as_str().into() +} + +/// Generate a random CEP within the range of a given state. +#[wasm_bindgen(js_name = "cepGenerateForState")] +pub fn cep_generate_for_state(state: State) -> String { + core_cep::generate_for_state(state.into()).as_str().into() +} diff --git a/bindings/wasm/src/cnpj.rs b/bindings/wasm/src/cnpj.rs new file mode 100644 index 0000000..8f3239a --- /dev/null +++ b/bindings/wasm/src/cnpj.rs @@ -0,0 +1,165 @@ +use stdbr_core::cnpj as core_cnpj; +use wasm_bindgen::prelude::*; + +fn cnpj_err(e: &core_cnpj::CnpjError) -> JsError { + JsError::new(&e.to_string()) +} + +#[wasm_bindgen] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum CnpjKind { + Numeric = 0, + Alphanumeric = 1, +} + +impl From for core_cnpj::CnpjKind { + fn from(k: CnpjKind) -> Self { + match k { + CnpjKind::Numeric => Self::Numeric, + CnpjKind::Alphanumeric => Self::Alphanumeric, + } + } +} + +impl From for CnpjKind { + fn from(k: core_cnpj::CnpjKind) -> Self { + match k { + core_cnpj::CnpjKind::Numeric => Self::Numeric, + core_cnpj::CnpjKind::Alphanumeric => Self::Alphanumeric, + } + } +} + +#[wasm_bindgen] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum EstablishmentType { + Matriz = 0, + Filial = 1, +} + +impl From for EstablishmentType { + fn from(t: core_cnpj::EstablishmentType) -> Self { + match t { + core_cnpj::EstablishmentType::Matriz => Self::Matriz, + core_cnpj::EstablishmentType::Filial => Self::Filial, + } + } +} + +#[wasm_bindgen] +pub struct Cnpj { + inner: core_cnpj::Cnpj, +} + +#[wasm_bindgen] +impl Cnpj { + /// Parse a CNPJ string (accepts `XX.XXX.XXX/XXXX-DD` or 14 raw characters). + #[wasm_bindgen] + pub fn parse(raw: &str) -> Result { + let cnpj: core_cnpj::Cnpj = raw.parse().map_err(|e| cnpj_err(&e))?; + Ok(Self { inner: cnpj }) + } + + /// Generate a random valid CNPJ. + #[wasm_bindgen] + pub fn generate(kind: CnpjKind) -> Self { + Self { + inner: core_cnpj::generate_cnpj(kind.into()), + } + } + + /// Generate a random valid CNPJ with ordem "0001" (Matriz). + #[wasm_bindgen(js_name = "generateMatriz")] + pub fn generate_matriz(kind: CnpjKind) -> Self { + Self { + inner: core_cnpj::generate_matriz(kind.into()), + } + } + + /// Unformatted 14-character string. + #[wasm_bindgen(js_name = "asStr")] + pub fn as_str(&self) -> String { + self.inner.as_str().to_owned() + } + + /// Formatted as `XX.XXX.XXX/XXXX-DD`. + #[wasm_bindgen] + pub fn formatted(&self) -> String { + self.inner.to_string() + } + + /// Masked as `XX.XXX.XXX/****-**`. + #[wasm_bindgen] + pub fn masked(&self) -> String { + self.inner.masked() + } + + /// Root (positions 1-8): identifies the company. + #[wasm_bindgen] + pub fn raiz(&self) -> String { + self.inner.raiz().to_owned() + } + + /// Order (positions 9-12): identifies the establishment. + #[wasm_bindgen] + pub fn ordem(&self) -> String { + self.inner.ordem().to_owned() + } + + /// Whether the CNPJ is numeric or alphanumeric. + #[wasm_bindgen(getter)] + pub fn kind(&self) -> CnpjKind { + self.inner.kind().into() + } + + /// Whether this is Matriz or Filial. + #[wasm_bindgen(getter, js_name = "establishmentType")] + pub fn establishment_type(&self) -> EstablishmentType { + self.inner.establishment_type().into() + } + + /// The two check digits as `Uint8Array`. + #[wasm_bindgen(getter, js_name = "checkDigits")] + pub fn check_digits(&self) -> Vec { + let (d1, d2) = self.inner.check_digits(); + vec![d1, d2] + } +} + +/// Lenient CNPJ validation (strips non-alphanumeric characters first). +#[wasm_bindgen(js_name = "cnpjIsValid")] +pub fn cnpj_is_valid(cnpj: &str) -> bool { + core_cnpj::is_valid(cnpj) +} + +/// Strict CNPJ validation (accepts only `XX.XXX.XXX/XXXX-DD` or 14 raw characters). +#[wasm_bindgen(js_name = "cnpjIsValidStrict")] +pub fn cnpj_is_valid_strict(cnpj: &str) -> Result<(), JsError> { + core_cnpj::is_valid_strict(cnpj).map_err(|e| cnpj_err(&e)) +} + +/// Format a CNPJ string as `XX.XXX.XXX/XXXX-DD`. +/// Returns `undefined` if the input is not a valid 14-character CNPJ. +#[wasm_bindgen(js_name = "cnpjFormat")] +pub fn cnpj_format(cnpj: &str) -> Option { + core_cnpj::format_cnpj(cnpj) +} + +/// Remove all non-alphanumeric characters from a CNPJ string, uppercase. +#[wasm_bindgen(js_name = "cnpjRemoveSymbols")] +pub fn cnpj_remove_symbols(cnpj: &str) -> String { + core_cnpj::remove_symbols(cnpj) +} + +/// Generate a random valid CNPJ as a 14-character string. +#[wasm_bindgen(js_name = "cnpjGenerate")] +pub fn cnpj_generate(kind: CnpjKind) -> String { + core_cnpj::generate(kind.into()) +} + +/// Compute check digits for a 12-character CNPJ base. +/// Returns `undefined` if the input is invalid. +#[wasm_bindgen(js_name = "cnpjComputeCheckDigits")] +pub fn cnpj_compute_check_digits(base: &str) -> Option> { + core_cnpj::compute_check_digits(base).map(|(d1, d2)| vec![d1, d2]) +} diff --git a/bindings/wasm/src/lib.rs b/bindings/wasm/src/lib.rs index ad4313a..c813dda 100644 --- a/bindings/wasm/src/lib.rs +++ b/bindings/wasm/src/lib.rs @@ -1 +1,5 @@ +mod cep; +mod cnpj; mod cpf; +mod municipio; +pub(crate) mod uf; diff --git a/bindings/wasm/src/municipio.rs b/bindings/wasm/src/municipio.rs new file mode 100644 index 0000000..ecc3c33 --- /dev/null +++ b/bindings/wasm/src/municipio.rs @@ -0,0 +1,98 @@ +use stdbr_core::municipio as core_mun; +use wasm_bindgen::prelude::*; + +use crate::uf::State; + +#[wasm_bindgen] +pub struct Municipio { + inner: &'static core_mun::Municipio, +} + +#[wasm_bindgen] +impl Municipio { + /// IBGE 7-digit code. + #[wasm_bindgen(getter, js_name = "ibgeCode")] + pub fn ibge_code(&self) -> u32 { + self.inner.ibge_code + } + + /// Municipality name. + #[wasm_bindgen(getter)] + pub fn name(&self) -> String { + self.inner.name.to_owned() + } + + /// State this municipality belongs to. + #[wasm_bindgen(getter)] + pub fn state(&self) -> State { + self.inner.state.into() + } + + /// Whether this municipality is a state capital. + #[wasm_bindgen(getter, js_name = "isCapital")] + pub fn is_capital(&self) -> bool { + self.inner.is_capital() + } +} + +/// Opaque list of municipalities for collection results. +#[wasm_bindgen] +pub struct MunicipioList { + items: Vec<&'static core_mun::Municipio>, +} + +#[wasm_bindgen] +impl MunicipioList { + /// Number of municipalities in the list. + #[wasm_bindgen(getter)] + pub fn count(&self) -> u32 { + #[allow(clippy::cast_possible_truncation)] + { + self.items.len() as u32 + } + } + + /// Get a municipality by index. Returns `undefined` if out of bounds. + pub fn get(&self, index: u32) -> Option { + self.items + .get(index as usize) + .map(|m| Municipio { inner: m }) + } +} + +/// Find a municipality by its IBGE code. +#[wasm_bindgen(js_name = "municipioFromIbgeCode")] +pub fn municipio_from_ibge_code(code: u32) -> Option { + core_mun::Municipio::from_ibge_code(code).map(|m| Municipio { inner: m }) +} + +/// Get the capital of a given state. +#[wasm_bindgen(js_name = "municipioCapitalOf")] +pub fn municipio_capital_of(state: State) -> Municipio { + Municipio { + inner: core_mun::Municipio::capital_of(state.into()), + } +} + +/// Returns all municipalities in a given state. +#[wasm_bindgen(js_name = "municipiosByState")] +pub fn municipios_by_state(state: State) -> MunicipioList { + MunicipioList { + items: core_mun::Municipio::by_state(state.into()).iter().collect(), + } +} + +/// Find municipalities whose name contains the given substring (case-insensitive). +#[wasm_bindgen(js_name = "municipioSearchByName")] +pub fn municipio_search_by_name(query: &str) -> MunicipioList { + MunicipioList { + items: core_mun::Municipio::search_by_name(query).collect(), + } +} + +/// Total number of municipalities. +#[wasm_bindgen(js_name = "municipioCount")] +#[allow(clippy::cast_possible_truncation)] +pub fn municipio_count() -> u32 { + core_mun::ALL.len() as u32 +} diff --git a/bindings/wasm/src/uf.rs b/bindings/wasm/src/uf.rs new file mode 100644 index 0000000..a1db9a4 --- /dev/null +++ b/bindings/wasm/src/uf.rs @@ -0,0 +1,102 @@ +use stdbr_core::uf as core_uf; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum Region { + Norte = 0, + Nordeste = 1, + CentroOeste = 2, + Sudeste = 3, + Sul = 4, +} + +impl From for core_uf::Region { + fn from(r: Region) -> Self { + // SAFETY: both enums are repr(u8) 0..=4 with same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +impl From for Region { + fn from(r: core_uf::Region) -> Self { + // SAFETY: both enums are repr(u8) 0..=4 with same variant order. + unsafe { core::mem::transmute(r as u8) } + } +} + +#[wasm_bindgen] +#[derive(Clone, Copy, PartialEq, Eq)] +pub enum State { + AC = 0, + AL = 1, + AM = 2, + AP = 3, + BA = 4, + CE = 5, + DF = 6, + ES = 7, + GO = 8, + MA = 9, + MG = 10, + MS = 11, + MT = 12, + PA = 13, + PB = 14, + PE = 15, + PI = 16, + PR = 17, + RJ = 18, + RN = 19, + RO = 20, + RR = 21, + RS = 22, + SC = 23, + SE = 24, + SP = 25, + TO = 26, +} + +impl From for core_uf::State { + fn from(s: State) -> Self { + // SAFETY: both enums are repr(u8) 0..=26 with same variant order. + unsafe { core::mem::transmute(s as u8) } + } +} + +impl From for State { + fn from(s: core_uf::State) -> Self { + // SAFETY: both enums are repr(u8) 0..=26 with same variant order. + unsafe { core::mem::transmute(s as u8) } + } +} + +/// Get the abbreviation of a state (e.g. "SP"). +#[wasm_bindgen(js_name = "stateAbbreviation")] +pub fn state_abbreviation(state: State) -> String { + core_uf::State::from(state).abbreviation().to_owned() +} + +/// Get the full name of a state (e.g. "São Paulo"). +#[wasm_bindgen(js_name = "stateName")] +pub fn state_name(state: State) -> String { + core_uf::State::from(state).name().to_owned() +} + +/// Get the geographic region of a state. +#[wasm_bindgen(js_name = "stateRegion")] +pub fn state_region(state: State) -> Region { + core_uf::State::from(state).region().into() +} + +/// Parse a state from its two-letter abbreviation (case-insensitive). +#[wasm_bindgen(js_name = "stateFromAbbreviation")] +pub fn state_from_abbreviation(abbr: &str) -> Option { + core_uf::State::from_abbreviation(abbr).map(State::from) +} + +/// Returns all 27 Brazilian states. +#[wasm_bindgen(js_name = "allStates")] +pub fn all_states() -> Vec { + core_uf::ALL.iter().copied().map(State::from).collect() +} diff --git a/core/Cargo.toml b/core/Cargo.toml index e1571d4..178cc68 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -9,5 +9,8 @@ license.workspace = true default = ["std"] std = [] +[dev-dependencies] +serde_json = "1" + [lints] workspace = true diff --git a/core/src/cep.rs b/core/src/cep.rs new file mode 100644 index 0000000..d6947e8 --- /dev/null +++ b/core/src/cep.rs @@ -0,0 +1,563 @@ +//! CEP (Código de Endereçamento Postal) - validation, formatting and generation. +//! +//! Brazilian postal codes are 8 digits with no check digit. Validation is +//! structural (8 numeric characters, optionally formatted as `XXXXX-XXX`) +//! plus optional region/state lookup by range. + +use alloc::string::String; +use core::fmt; + +use crate::rand::{simple_seed, xorshift64}; +use crate::uf::State; +use crate::util::impl_document_traits; + +const CEP_LEN: usize = 8; +const FORMATTED_DIGIT_POS: [usize; 8] = [0, 1, 2, 3, 4, 6, 7, 8]; + +/// Postal region mapped by the first digit of a CEP. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[repr(u8)] +pub enum PostalRegion { + GranSaoPaulo = 0, + InteriorSaoPaulo = 1, + RjEs = 2, + Mg = 3, + BaSe = 4, + PeAlPbRn = 5, + CePiMaPaAmAcApRr = 6, + DfGoToMtMsRo = 7, + PrSc = 8, + Rs = 9, +} + +impl PostalRegion { + fn from_digit(d: u8) -> Self { + assert!(d <= 9, "digit must be 0..=9"); + // SAFETY: repr(u8) with discriminants 0..=9, d validated above. + unsafe { core::mem::transmute(d) } + } +} + +/// CEP range `(start, end)` inclusive for a given state. +fn cep_range(state: State) -> (u32, u32) { + match state { + State::SP => (1_000_000, 19_999_999), + State::RJ => (20_000_000, 28_999_999), + State::ES => (29_000_000, 29_999_999), + State::MG => (30_000_000, 39_999_999), + State::BA => (40_000_000, 48_999_999), + State::SE => (49_000_000, 49_999_999), + State::PE => (50_000_000, 56_999_999), + State::AL => (57_000_000, 57_999_999), + State::PB => (58_000_000, 58_999_999), + State::RN => (59_000_000, 59_999_999), + State::CE => (60_000_000, 63_999_999), + State::PI => (64_000_000, 64_999_999), + State::MA => (65_000_000, 65_999_999), + State::PA => (66_000_000, 68_899_999), + State::AM => (69_000_000, 69_299_999), + State::AC => (69_900_000, 69_999_999), + State::AP => (68_900_000, 68_999_999), + State::RR => (69_300_000, 69_399_999), + State::DF => (70_000_000, 72_799_999), + State::GO => (72_800_000, 76_799_999), + State::TO => (77_000_000, 77_999_999), + State::MT => (78_000_000, 78_899_999), + State::MS => (79_000_000, 79_999_999), + State::RO => (76_800_000, 76_999_999), + State::PR => (80_000_000, 87_999_999), + State::SC => (88_000_000, 89_999_999), + State::RS => (90_000_000, 99_999_999), + } +} + +/// Determines the state from a CEP numeric value by range lookup. +fn state_from_cep_value(value: u32) -> Option { + for &state in &crate::uf::ALL { + let (start, end) = cep_range(state); + if value >= start && value <= end { + return Some(state); + } + } + None +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum CepError { + InvalidLength, + InvalidCharacter, + InvalidFormat, +} + +impl fmt::Display for CepError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(match self { + Self::InvalidLength => "CEP must contain exactly 8 digits", + Self::InvalidCharacter => "CEP contains invalid characters", + Self::InvalidFormat => "CEP format must be #####-### or 8 digits", + }) + } +} + +/// A validated CEP stored as 8 ASCII bytes. +/// +/// ``` +/// use stdbr_core::cep::{Cep, generate_cep}; +/// +/// let cep = generate_cep(); +/// assert_eq!(cep.as_str().len(), 8); +/// assert_eq!(cep.to_string().len(), 9); // #####-### +/// +/// let parsed: Cep = cep.to_string().parse().unwrap(); +/// assert_eq!(cep, parsed); +/// ``` +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub struct Cep { + bytes: [u8; CEP_LEN], +} + +impl Cep { + /// Unformatted 8-digit `&str`. + pub fn as_str(&self) -> &str { + // SAFETY: constructors guarantee ASCII digits only. + unsafe { core::str::from_utf8_unchecked(&self.bytes) } + } + + /// The 8 numeric digits (0–9). + pub fn digits(&self) -> [u8; CEP_LEN] { + self.bytes.map(|b| b - b'0') + } + + /// Postal region derived from the 1st digit. + pub fn postal_region(&self) -> PostalRegion { + PostalRegion::from_digit(self.bytes[0] - b'0') + } + + /// State lookup by CEP range. + pub fn state(&self) -> Option { + state_from_cep_value(self.as_u32()) + } + + /// Formatted as `XXXXX-XXX`. + pub fn formatted(&self) -> String { + let s = self.as_str(); + alloc::format!("{}-{}", &s[0..5], &s[5..8]) + } + + /// Masked: `XXXXX-***`. + pub fn masked(&self) -> String { + let s = self.as_str(); + alloc::format!("{}-***", &s[0..5]) + } + + /// Numeric value of the CEP. + fn as_u32(self) -> u32 { + let d = self.digits(); + u32::from(d[0]) * 10_000_000 + + u32::from(d[1]) * 1_000_000 + + u32::from(d[2]) * 100_000 + + u32::from(d[3]) * 10_000 + + u32::from(d[4]) * 1_000 + + u32::from(d[5]) * 100 + + u32::from(d[6]) * 10 + + u32::from(d[7]) + } + + fn from_numeric(digits: [u8; CEP_LEN]) -> Self { + Self { + bytes: digits.map(|d| d + b'0'), + } + } +} + +impl fmt::Display for Cep { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let s = self.as_str(); + write!(f, "{}-{}", &s[0..5], &s[5..8]) + } +} + +impl_document_traits!(Cep, CepError); + +pub fn remove_symbols(cep: &str) -> String { + cep.chars().filter(char::is_ascii_digit).collect() +} + +pub fn is_valid(cep: &str) -> bool { + let raw = remove_symbols(cep); + raw.len() == CEP_LEN +} + +/// Strict validation - accepts `#####-###` or `########` only. +pub fn is_valid_strict(cep: &str) -> Result<(), CepError> { + parse_strict(cep).map(|_| ()) +} + +/// Formats as `#####-###`, or `None` if not 8 digits. +pub fn format_cep(cep: &str) -> Option { + let d = remove_symbols(cep); + (d.len() == CEP_LEN).then(|| alloc::format!("{}-{}", &d[0..5], &d[5..8])) +} + +/// Generates a random valid CEP as an 8-digit string. +pub fn generate() -> String { + generate_cep().as_str().into() +} + +/// Generates a random valid [`Cep`]. +pub fn generate_cep() -> Cep { + let mut seed = simple_seed(); + let mut digits = [0u8; CEP_LEN]; + for d in &mut digits { + seed = xorshift64(seed); + *d = (seed % 10) as u8; + } + Cep::from_numeric(digits) +} + +/// Generates a random [`Cep`] for a given postal region (1st digit fixed). +pub fn generate_for_region(region: PostalRegion) -> Cep { + let mut seed = simple_seed(); + let mut digits = [0u8; CEP_LEN]; + digits[0] = region as u8; + for d in &mut digits[1..] { + seed = xorshift64(seed); + *d = (seed % 10) as u8; + } + Cep::from_numeric(digits) +} + +/// Generates a random [`Cep`] within the range of a given state. +pub fn generate_for_state(state: State) -> Cep { + let (start, end) = cep_range(state); + let mut seed = simple_seed(); + seed = xorshift64(seed); + let range = end - start + 1; + #[allow(clippy::cast_possible_truncation)] + let value = start + (seed as u32 % range); + + let mut digits = [0u8; CEP_LEN]; + let mut v = value; + for i in (0..CEP_LEN).rev() { + digits[i] = (v % 10) as u8; + v /= 10; + } + Cep::from_numeric(digits) +} + +fn parse_strict(s: &str) -> Result { + let raw = s.as_bytes(); + + match raw.len() { + 8 => { + if !raw.iter().all(u8::is_ascii_digit) { + return Err(CepError::InvalidCharacter); + } + } + 9 => { + if raw[5] != b'-' { + return Err(CepError::InvalidFormat); + } + for &i in &FORMATTED_DIGIT_POS { + if !raw[i].is_ascii_digit() { + return Err(CepError::InvalidCharacter); + } + } + } + _ => return Err(CepError::InvalidLength), + } + + let mut digits = [0u8; CEP_LEN]; + for (idx, &pos) in FORMATTED_DIGIT_POS.iter().enumerate() { + if pos < raw.len() { + digits[idx] = raw[pos] - b'0'; + } + } + + // For the 8-char case, positions map 1:1 + if raw.len() == 8 { + for (i, &b) in raw.iter().enumerate() { + digits[i] = b - b'0'; + } + } + + Ok(Cep::from_numeric(digits)) +} + +#[cfg(test)] +mod tests { + use super::*; + use alloc::string::ToString; + + fn cep_sp() -> Cep { + // São Paulo: 01310-100 + Cep::from_numeric([0, 1, 3, 1, 0, 1, 0, 0]) + } + + fn cep_rj() -> Cep { + // Rio de Janeiro: 20040-020 + Cep::from_numeric([2, 0, 0, 4, 0, 0, 2, 0]) + } + + fn cep_rs() -> Cep { + // Porto Alegre: 90010-000 + Cep::from_numeric([9, 0, 0, 1, 0, 0, 0, 0]) + } + + #[test] + fn is_valid_accepts_valid_unformatted() { + assert!(is_valid(cep_sp().as_str())); + assert!(is_valid(cep_rj().as_str())); + assert!(is_valid(cep_rs().as_str())); + } + + #[test] + fn is_valid_accepts_valid_formatted() { + assert!(is_valid(&cep_sp().to_string())); + assert!(is_valid(&cep_rj().to_string())); + } + + #[test] + fn is_valid_lenient_strips_garbage() { + let cep = cep_sp(); + let s = cep.as_str(); + let garbage = alloc::format!("{}${}", &s[0..5], &s[5..8]); + assert!(is_valid(&garbage)); + + let padded = alloc::format!(" {} ", cep_sp()); + assert!(is_valid(&padded)); + } + + #[test] + fn is_valid_rejects_wrong_length() { + assert!(!is_valid("")); + assert!(!is_valid("1234567")); + assert!(!is_valid("123456789")); + } + + #[test] + fn is_valid_rejects_no_digits() { + assert!(!is_valid("abcdefgh")); + assert!(!is_valid("...---")); + } + + #[test] + fn strict_accepts_valid_unformatted() { + assert!(is_valid_strict(cep_sp().as_str()).is_ok()); + assert!(is_valid_strict(cep_rj().as_str()).is_ok()); + } + + #[test] + fn strict_accepts_valid_formatted() { + assert!(is_valid_strict(&cep_sp().to_string()).is_ok()); + assert!(is_valid_strict(&cep_rj().to_string()).is_ok()); + } + + #[test] + fn strict_rejects_garbage_between_digits() { + let cep = cep_sp(); + let s = cep.as_str(); + let garbage = alloc::format!("{}${}", &s[0..5], &s[5..8]); + assert!(is_valid_strict(&garbage).is_err()); + } + + #[test] + fn strict_rejects_whitespace() { + let padded = alloc::format!(" {} ", cep_sp().as_str()); + assert_eq!(is_valid_strict(&padded), Err(CepError::InvalidLength)); + } + + #[test] + fn strict_rejects_misplaced_separators() { + assert_eq!(is_valid_strict("0131-0100"), Err(CepError::InvalidFormat)); + } + + #[test] + fn strict_rejects_letters() { + assert_eq!(is_valid_strict("abcdefgh"), Err(CepError::InvalidCharacter)); + } + + #[test] + fn parse_roundtrip() { + let cep = cep_sp(); + let parsed: Cep = cep.to_string().parse().unwrap(); + assert_eq!(cep, parsed); + assert_eq!(parsed.as_str(), cep.as_str()); + } + + #[test] + fn parse_unformatted() { + let cep = cep_sp(); + let parsed: Cep = cep.as_str().parse().unwrap(); + assert_eq!(cep, parsed); + } + + #[test] + fn parse_equality_across_formats() { + let from_fmt: Cep = cep_sp().to_string().parse().unwrap(); + let from_raw: Cep = cep_sp().as_str().parse().unwrap(); + assert_eq!(from_fmt, from_raw); + } + + #[test] + fn cep_is_copy() { + let a = cep_sp(); + let b = a; + assert_eq!(a, b); + } + + #[test] + fn cep_as_ref_str() { + let cep = cep_sp(); + let r: &str = cep.as_ref(); + assert_eq!(r, cep.as_str()); + } + + #[test] + fn debug_format() { + let cep = cep_sp(); + let dbg = alloc::format!("{cep:?}"); + assert!(dbg.starts_with("Cep(")); + assert!(dbg.ends_with(')')); + assert!(dbg.contains('-')); + } + + #[test] + fn postal_region() { + assert_eq!(cep_sp().postal_region(), PostalRegion::GranSaoPaulo); + assert_eq!(cep_rj().postal_region(), PostalRegion::RjEs); + assert_eq!(cep_rs().postal_region(), PostalRegion::Rs); + } + + #[test] + fn state_lookup() { + assert_eq!(cep_sp().state(), Some(State::SP)); + assert_eq!(cep_rj().state(), Some(State::RJ)); + assert_eq!(cep_rs().state(), Some(State::RS)); + } + + #[test] + fn state_abbreviation() { + assert_eq!(State::SP.abbreviation(), "SP"); + assert_eq!(State::RJ.abbreviation(), "RJ"); + assert_eq!(State::RS.abbreviation(), "RS"); + assert_eq!(State::DF.abbreviation(), "DF"); + } + + #[test] + fn formatted() { + assert_eq!(cep_sp().formatted(), "01310-100"); + assert_eq!(cep_rj().formatted(), "20040-020"); + } + + #[test] + fn masked() { + assert_eq!(cep_sp().masked(), "01310-***"); + assert_eq!(cep_rj().masked(), "20040-***"); + } + + #[test] + fn remove_symbols_strips_formatting() { + let cep = cep_sp(); + let formatted = cep.to_string(); + assert_eq!(remove_symbols(&formatted), cep.as_str()); + assert_eq!(remove_symbols(cep.as_str()), cep.as_str()); + assert_eq!(remove_symbols(""), ""); + } + + #[test] + fn format_cep_produces_formatted_output() { + let cep = cep_sp(); + let formatted = cep.to_string(); + assert_eq!(format_cep(cep.as_str()), Some(formatted.clone())); + assert_eq!(format_cep(&formatted), Some(formatted)); + } + + #[test] + fn format_cep_returns_none_on_bad_length() { + assert_eq!(format_cep("1234"), None); + assert_eq!(format_cep(""), None); + } + + #[test] + fn format_cep_preserves_leading_zeros() { + let cep = cep_sp(); + let formatted = format_cep(cep.as_str()).unwrap(); + assert!(formatted.starts_with("01")); + } + + #[test] + fn generate_produces_valid_ceps() { + for _ in 0..100 { + let cep = generate(); + assert_eq!(cep.len(), 8); + assert!(is_valid(&cep), "generated invalid CEP: {cep}"); + } + } + + #[test] + fn generate_cep_roundtrips() { + for _ in 0..100 { + let cep = generate_cep(); + assert!(is_valid(cep.as_str())); + let parsed: Cep = cep.as_str().parse().unwrap(); + assert_eq!(cep, parsed); + } + } + + #[test] + fn generate_for_region_respects_first_digit() { + let regions = [ + PostalRegion::GranSaoPaulo, + PostalRegion::InteriorSaoPaulo, + PostalRegion::RjEs, + PostalRegion::Mg, + PostalRegion::BaSe, + PostalRegion::PeAlPbRn, + PostalRegion::CePiMaPaAmAcApRr, + PostalRegion::DfGoToMtMsRo, + PostalRegion::PrSc, + PostalRegion::Rs, + ]; + for region in regions { + let cep = generate_for_region(region); + assert_eq!(cep.postal_region(), region); + assert!(is_valid(cep.as_str())); + } + } + + #[test] + fn generate_for_state_within_range() { + let states = [ + State::SP, + State::RJ, + State::MG, + State::RS, + State::DF, + State::AM, + State::AC, + ]; + for state in states { + for _ in 0..10 { + let cep = generate_for_state(state); + assert_eq!( + cep.state(), + Some(state), + "CEP {} should map to {:?}", + cep, + state + ); + } + } + } + + #[test] + fn leading_zero_cep() { + let cep = cep_sp(); + assert!(cep.as_str().starts_with('0')); + assert!(is_valid(cep.as_str())); + + let parsed: Cep = cep.as_str().parse().unwrap(); + assert_eq!(parsed.digits()[0], 0); + } +} diff --git a/core/src/cnpj.rs b/core/src/cnpj.rs new file mode 100644 index 0000000..cd91e2d --- /dev/null +++ b/core/src/cnpj.rs @@ -0,0 +1,790 @@ +//! CNPJ (Cadastro Nacional da Pessoa Jurídica) - validation, formatting and generation. +//! +//! Supports both numeric (current) and alphanumeric (IN RFB 2.119/2022, July 2026) formats. +//! Uses modulo-11 weighted sums as specified by Receita Federal do Brasil. + +use alloc::string::String; +use alloc::vec::Vec; +use core::fmt; + +use crate::rand::{simple_seed, xorshift64}; +use crate::util::{self, impl_document_traits}; + +const CNPJ_LEN: usize = 14; +const WEIGHTS_D1: [u32; 12] = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; +const WEIGHTS_D2: [u32; 13] = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]; +const FORMATTED_CHAR_POS: [usize; 14] = [0, 1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 16, 17]; + +/// Whether the CNPJ uses only digits or also contains letters. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[repr(u8)] +pub enum CnpjKind { + Numeric = 0, + Alphanumeric = 1, +} + +/// Whether the establishment is the main office (Matriz) or a branch (Filial). +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[repr(u8)] +pub enum EstablishmentType { + Matriz = 0, + Filial = 1, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum CnpjError { + InvalidLength, + InvalidCharacter, + InvalidFormat, + AllCharsEqual, + InvalidCheckDigits, +} + +impl fmt::Display for CnpjError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(match self { + Self::InvalidLength => "CNPJ must contain exactly 14 characters", + Self::InvalidCharacter => "CNPJ contains invalid characters", + Self::InvalidFormat => "CNPJ format must be XX.XXX.XXX/XXXX-DD or 14 characters", + Self::AllCharsEqual => "CNPJ with all equal characters is invalid", + Self::InvalidCheckDigits => "CNPJ check digits are invalid", + }) + } +} + +/// A validated CNPJ stored as 14 ASCII bytes. +/// +/// Positions 0-11 may contain `0-9` or `A-Z` (alphanumeric CNPJ). +/// Positions 12-13 are always numeric digits (check digits). +/// +/// ``` +/// use stdbr_core::cnpj::{Cnpj, CnpjKind, generate_cnpj}; +/// +/// let cnpj = generate_cnpj(CnpjKind::Numeric); +/// assert_eq!(cnpj.as_str().len(), 14); +/// assert_eq!(cnpj.to_string().len(), 18); // XX.XXX.XXX/XXXX-DD +/// +/// let parsed: Cnpj = cnpj.to_string().parse().unwrap(); +/// assert_eq!(cnpj, parsed); +/// ``` +#[derive(Clone, Copy, PartialEq, Eq, Hash)] +pub struct Cnpj { + bytes: [u8; CNPJ_LEN], +} + +impl Cnpj { + /// Unformatted 14-character `&str`. + pub fn as_str(&self) -> &str { + // SAFETY: constructors guarantee ASCII alphanumeric only. + unsafe { core::str::from_utf8_unchecked(&self.bytes) } + } + + /// Whether the CNPJ is numeric or alphanumeric. + pub fn kind(&self) -> CnpjKind { + if self.bytes[..12].iter().all(u8::is_ascii_digit) { + CnpjKind::Numeric + } else { + CnpjKind::Alphanumeric + } + } + + /// Root (positions 1-8): identifies the company. + pub fn raiz(&self) -> &str { + unsafe { core::str::from_utf8_unchecked(&self.bytes[..8]) } + } + + /// Order (positions 9-12): identifies the establishment. + pub fn ordem(&self) -> &str { + unsafe { core::str::from_utf8_unchecked(&self.bytes[8..12]) } + } + + /// Whether this is Matriz (ordem == "0001") or Filial. + pub fn establishment_type(&self) -> EstablishmentType { + if &self.bytes[8..12] == b"0001" { + EstablishmentType::Matriz + } else { + EstablishmentType::Filial + } + } + + /// The two check digits `(d1, d2)` as numeric values. + pub fn check_digits(&self) -> (u8, u8) { + (self.bytes[12] - b'0', self.bytes[13] - b'0') + } + + /// Masked: `XX.XXX.XXX/****-**`. + pub fn masked(&self) -> String { + let s = self.as_str(); + alloc::format!("{}.{}.{}/****-**", &s[0..2], &s[2..5], &s[5..8]) + } +} + +impl fmt::Display for Cnpj { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let s = self.as_str(); + write!( + f, + "{}.{}.{}/{}-{}", + &s[0..2], + &s[2..5], + &s[5..8], + &s[8..12], + &s[12..14] + ) + } +} + +impl_document_traits!(Cnpj, CnpjError); + +/// Strips punctuation, preserves letters and digits, uppercases letters. +pub fn remove_symbols(cnpj: &str) -> String { + cnpj.chars() + .filter(char::is_ascii_alphanumeric) + .map(|c| c.to_ascii_uppercase()) + .collect() +} + +/// Lenient validation: strips punctuation, uppercases, then validates. +pub fn is_valid(cnpj: &str) -> bool { + let raw = remove_symbols(cnpj); + if raw.len() != CNPJ_LEN { + return false; + } + let bytes = raw.as_bytes(); + // Positions 0-11 must be alphanumeric uppercase, 12-13 must be digits + if !bytes[..12] + .iter() + .all(|&b| b.is_ascii_uppercase() || b.is_ascii_digit()) + { + return false; + } + if !bytes[12..14].iter().all(u8::is_ascii_digit) { + return false; + } + validate(bytes) +} + +/// Strict validation - accepts `XX.XXX.XXX/XXXX-DD` or `XXXXXXXXXXXXXXDD` only. +pub fn is_valid_strict(cnpj: &str) -> Result<(), CnpjError> { + parse_strict(cnpj).map(|_| ()) +} + +/// Formats as `XX.XXX.XXX/XXXX-DD`, or `None` if not valid 14 chars. +pub fn format_cnpj(cnpj: &str) -> Option { + let raw = remove_symbols(cnpj); + if raw.len() != CNPJ_LEN { + return None; + } + let bytes = raw.as_bytes(); + if !bytes[..12] + .iter() + .all(|&b| b.is_ascii_uppercase() || b.is_ascii_digit()) + { + return None; + } + if !bytes[12..14].iter().all(u8::is_ascii_digit) { + return None; + } + Some(alloc::format!( + "{}.{}.{}/{}-{}", + &raw[0..2], + &raw[2..5], + &raw[5..8], + &raw[8..12], + &raw[12..14] + )) +} + +/// Generates a random valid CNPJ as a 14-character string. +pub fn generate(kind: CnpjKind) -> String { + generate_cnpj(kind).as_str().into() +} + +/// Generates a random valid [`Cnpj`]. +pub fn generate_cnpj(kind: CnpjKind) -> Cnpj { + generate_with_seed(simple_seed(), kind) +} + +/// Generates a random valid [`Cnpj`] with ordem "0001" (Matriz). +pub fn generate_matriz(kind: CnpjKind) -> Cnpj { + generate_with_ordem(simple_seed(), kind, *b"0001") +} + +/// Computes check digits for a 12-character CNPJ base. +/// Returns `None` if input is invalid. +pub fn compute_check_digits(base: &str) -> Option<(u8, u8)> { + let raw = remove_symbols(base); + if raw.len() != 12 { + return None; + } + let bytes = raw.as_bytes(); + if !bytes + .iter() + .all(|&b| b.is_ascii_uppercase() || b.is_ascii_digit()) + { + return None; + } + if all_equal(bytes) { + return None; + } + + let values: Vec = bytes.iter().map(|&b| char_value(b)).collect(); + let d1 = calc_check_digit(&values, &WEIGHTS_D1); + let mut full = Vec::with_capacity(13); + full.extend_from_slice(&values); + full.push(u32::from(d1)); + let d2 = calc_check_digit(&full, &WEIGHTS_D2); + + Some((d1, d2)) +} + +// --- Private functions --- + +/// Converts ASCII byte to its numeric value for CNPJ calculation. +/// '0'-'9' => 0-9, 'A'-'Z' => 17-42 (ASCII - 48). +fn char_value(b: u8) -> u32 { + u32::from(b) - 48 +} + +fn all_equal(bytes: &[u8]) -> bool { + util::all_equal(bytes) +} + +fn validate(bytes: &[u8]) -> bool { + if all_equal(bytes) { + return false; + } + let values: Vec = bytes[..12].iter().map(|&b| char_value(b)).collect(); + let d1 = calc_check_digit(&values, &WEIGHTS_D1); + let mut full = Vec::with_capacity(13); + full.extend_from_slice(&values); + full.push(u32::from(d1)); + let d2 = calc_check_digit(&full, &WEIGHTS_D2); + bytes[12] - b'0' == d1 && bytes[13] - b'0' == d2 +} + +fn calc_check_digit(values: &[u32], weights: &[u32]) -> u8 { + let sum: u32 = values.iter().zip(weights).map(|(&v, &w)| v * w).sum(); + let rem = sum % 11; + #[allow(clippy::cast_possible_truncation)] + // rem is always 2..=10, so 11-rem fits in u8 + if rem < 2 { 0 } else { (11 - rem) as u8 } +} + +fn append_check_digits(bytes: &mut [u8; CNPJ_LEN]) { + let values: Vec = bytes[..12].iter().map(|&b| char_value(b)).collect(); + let d1 = calc_check_digit(&values, &WEIGHTS_D1); + let mut full = Vec::with_capacity(13); + full.extend_from_slice(&values); + full.push(u32::from(d1)); + let d2 = calc_check_digit(&full, &WEIGHTS_D2); + bytes[12] = b'0' + d1; + bytes[13] = b'0' + d2; +} + +fn parse_strict(s: &str) -> Result { + let raw = s.as_bytes(); + + let chars: Vec = match raw.len() { + 14 => { + // Positions 0-11: alphanumeric uppercase, 12-13: digits + if !raw[..12] + .iter() + .all(|&b| b.is_ascii_uppercase() || b.is_ascii_digit()) + { + return Err(CnpjError::InvalidCharacter); + } + if !raw[12..14].iter().all(u8::is_ascii_digit) { + return Err(CnpjError::InvalidCharacter); + } + raw.to_vec() + } + 18 => { + // XX.XXX.XXX/XXXX-DD + if raw[2] != b'.' || raw[6] != b'.' || raw[10] != b'/' || raw[15] != b'-' { + return Err(CnpjError::InvalidFormat); + } + let extracted: Vec = FORMATTED_CHAR_POS.iter().map(|&i| raw[i]).collect(); + if !extracted[..12] + .iter() + .all(|&b| b.is_ascii_uppercase() || b.is_ascii_digit()) + { + return Err(CnpjError::InvalidCharacter); + } + if !extracted[12..14].iter().all(u8::is_ascii_digit) { + return Err(CnpjError::InvalidCharacter); + } + extracted + } + _ => return Err(CnpjError::InvalidLength), + }; + + if all_equal(&chars) { + return Err(CnpjError::AllCharsEqual); + } + + let values: Vec = chars[..12].iter().map(|&b| char_value(b)).collect(); + let d1 = calc_check_digit(&values, &WEIGHTS_D1); + let mut full = Vec::with_capacity(13); + full.extend_from_slice(&values); + full.push(u32::from(d1)); + let d2 = calc_check_digit(&full, &WEIGHTS_D2); + + if chars[12] - b'0' != d1 || chars[13] - b'0' != d2 { + return Err(CnpjError::InvalidCheckDigits); + } + + let mut bytes = [0u8; CNPJ_LEN]; + bytes.copy_from_slice(&chars); + Ok(Cnpj { bytes }) +} + +const ALPHANUMERIC_CHARS: &[u8; 36] = b"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +fn generate_with_seed(mut seed: u64, kind: CnpjKind) -> Cnpj { + let mut bytes = [0u8; CNPJ_LEN]; + + loop { + for b in &mut bytes[..12] { + seed = xorshift64(seed); + *b = match kind { + CnpjKind::Numeric => b'0' + (seed % 10) as u8, + CnpjKind::Alphanumeric => ALPHANUMERIC_CHARS[(seed % 36) as usize], + }; + } + if !all_equal(&bytes[..12]) { + break; + } + } + + append_check_digits(&mut bytes); + Cnpj { bytes } +} + +fn generate_with_ordem(mut seed: u64, kind: CnpjKind, ordem: [u8; 4]) -> Cnpj { + let mut bytes = [0u8; CNPJ_LEN]; + bytes[8..12].copy_from_slice(&ordem); + + loop { + for b in &mut bytes[..8] { + seed = xorshift64(seed); + *b = match kind { + CnpjKind::Numeric => b'0' + (seed % 10) as u8, + CnpjKind::Alphanumeric => ALPHANUMERIC_CHARS[(seed % 36) as usize], + }; + } + if !all_equal(&bytes[..12]) { + break; + } + } + + append_check_digits(&mut bytes); + Cnpj { bytes } +} + +#[cfg(test)] +mod tests { + use super::*; + use alloc::string::ToString; + + // Known valid numeric CNPJ: 11.222.333/0001-81 + fn cnpj_numeric() -> Cnpj { + "11222333000181".parse().unwrap() + } + + // Known valid numeric CNPJ: 11.444.777/0001-61 + fn cnpj_numeric_b() -> Cnpj { + "11444777000161".parse().unwrap() + } + + // Build a CNPJ from a 12-char base + fn make_cnpj(base: &[u8; 12]) -> Cnpj { + let mut bytes = [0u8; CNPJ_LEN]; + bytes[..12].copy_from_slice(base); + append_check_digits(&mut bytes); + Cnpj { bytes } + } + + fn cnpj_alpha() -> Cnpj { + // Alphanumeric CNPJ: base "12ABC34500DE", compute check digits + make_cnpj(b"12ABC34500DE") + } + + #[test] + fn parse_known_numeric() { + let cnpj = cnpj_numeric(); + assert_eq!(cnpj.as_str(), "11222333000181"); + assert_eq!(cnpj.kind(), CnpjKind::Numeric); + } + + #[test] + fn parse_known_numeric_b() { + let cnpj = cnpj_numeric_b(); + assert_eq!(cnpj.as_str(), "11444777000161"); + assert_eq!(cnpj.kind(), CnpjKind::Numeric); + } + + #[test] + fn validate_known_numeric() { + assert!(is_valid("11.222.333/0001-81")); + assert!(is_valid("11222333000181")); + assert!(is_valid("11.444.777/0001-61")); + assert!(is_valid("11444777000161")); + } + + #[test] + fn parse_alphanumeric() { + let cnpj = cnpj_alpha(); + assert_eq!(cnpj.kind(), CnpjKind::Alphanumeric); + assert!(is_valid(cnpj.as_str())); + } + + #[test] + fn validate_alphanumeric_formatted() { + let cnpj = cnpj_alpha(); + let formatted = cnpj.to_string(); + assert!(is_valid_strict(&formatted).is_ok()); + } + + #[test] + fn is_valid_lenient_strips_garbage() { + let cnpj = cnpj_numeric(); + let s = cnpj.as_str(); + let garbage = alloc::format!("{}${}#{}!{}", &s[0..2], &s[2..5], &s[5..8], &s[8..14]); + assert!(is_valid(&garbage)); + } + + #[test] + fn is_valid_lenient_lowercase_to_uppercase() { + let cnpj = cnpj_alpha(); + let lower = cnpj.as_str().to_lowercase(); + assert!(is_valid(&lower)); + } + + #[test] + fn is_valid_rejects_bad_check_digits() { + let mut bytes = *b"11222333000182"; // last digit wrong + assert!(!is_valid(core::str::from_utf8(&bytes).unwrap())); + bytes = *b"11222333000191"; // first check digit wrong + assert!(!is_valid(core::str::from_utf8(&bytes).unwrap())); + } + + #[test] + fn is_valid_rejects_all_equal() { + assert!(!is_valid("11111111111111")); + assert!(!is_valid("00000000000000")); + assert!(!is_valid("AAAAAAAAAAAAAA")); + } + + #[test] + fn is_valid_rejects_wrong_length() { + assert!(!is_valid("")); + assert!(!is_valid("1234567890123")); + assert!(!is_valid("123456789012345")); + } + + #[test] + fn is_valid_rejects_invalid_chars() { + assert!(!is_valid("1122233300018!")); // special char in check digit pos + } + + #[test] + fn strict_accepts_valid_unformatted() { + assert!(is_valid_strict("11222333000181").is_ok()); + assert!(is_valid_strict("11444777000161").is_ok()); + } + + #[test] + fn strict_accepts_valid_formatted() { + assert!(is_valid_strict("11.222.333/0001-81").is_ok()); + assert!(is_valid_strict("11.444.777/0001-61").is_ok()); + } + + #[test] + fn strict_rejects_garbage() { + assert!(is_valid_strict("11$222$333$0001$81").is_err()); + } + + #[test] + fn strict_rejects_whitespace() { + // 18 chars matches formatted-length path, but separators are wrong + assert_eq!( + is_valid_strict(" 11222333000181 "), + Err(CnpjError::InvalidFormat) + ); + // Other lengths + assert_eq!( + is_valid_strict(" 11222333000181"), + Err(CnpjError::InvalidLength) + ); + } + + #[test] + fn strict_rejects_misplaced_separators() { + assert!(is_valid_strict("112.223.330/0018-1").is_err()); + } + + #[test] + fn strict_rejects_lowercase() { + let cnpj = cnpj_alpha(); + let lower = cnpj.as_str().to_lowercase(); + assert_eq!(is_valid_strict(&lower), Err(CnpjError::InvalidCharacter)); + } + + #[test] + fn strict_rejects_all_equal() { + assert_eq!( + is_valid_strict("11111111111111"), + Err(CnpjError::AllCharsEqual) + ); + assert_eq!( + is_valid_strict("00.000.000/0000-00"), + Err(CnpjError::AllCharsEqual) + ); + } + + #[test] + fn strict_rejects_invalid_check_digits() { + assert_eq!( + is_valid_strict("11222333000182"), + Err(CnpjError::InvalidCheckDigits) + ); + } + + #[test] + fn parse_roundtrip_formatted() { + let cnpj = cnpj_numeric(); + let parsed: Cnpj = cnpj.to_string().parse().unwrap(); + assert_eq!(cnpj, parsed); + } + + #[test] + fn parse_roundtrip_raw() { + let cnpj = cnpj_numeric(); + let parsed: Cnpj = cnpj.as_str().parse().unwrap(); + assert_eq!(cnpj, parsed); + } + + #[test] + fn parse_roundtrip_alphanumeric() { + let cnpj = cnpj_alpha(); + let from_raw: Cnpj = cnpj.as_str().parse().unwrap(); + let from_fmt: Cnpj = cnpj.to_string().parse().unwrap(); + assert_eq!(cnpj, from_raw); + assert_eq!(cnpj, from_fmt); + } + + #[test] + fn accessor_kind() { + assert_eq!(cnpj_numeric().kind(), CnpjKind::Numeric); + assert_eq!(cnpj_alpha().kind(), CnpjKind::Alphanumeric); + } + + #[test] + fn accessor_raiz() { + assert_eq!(cnpj_numeric().raiz(), "11222333"); + } + + #[test] + fn accessor_ordem() { + assert_eq!(cnpj_numeric().ordem(), "0001"); + } + + #[test] + fn accessor_establishment_type() { + assert_eq!( + cnpj_numeric().establishment_type(), + EstablishmentType::Matriz + ); + // Build one with ordem != "0001" + let filial = make_cnpj(b"112223330002"); + assert_eq!(filial.establishment_type(), EstablishmentType::Filial); + } + + #[test] + fn accessor_check_digits() { + let cnpj = cnpj_numeric(); + let (d1, d2) = cnpj.check_digits(); + assert_eq!(d1, 8); + assert_eq!(d2, 1); + } + + #[test] + fn accessor_masked() { + let cnpj = cnpj_numeric(); + assert_eq!(cnpj.masked(), "11.222.333/****-**"); + } + + #[test] + fn format_cnpj_produces_formatted_output() { + assert_eq!( + format_cnpj("11222333000181"), + Some("11.222.333/0001-81".to_string()) + ); + } + + #[test] + fn format_cnpj_preserves_letters() { + let cnpj = cnpj_alpha(); + let formatted = format_cnpj(cnpj.as_str()).unwrap(); + assert!(formatted.contains('/')); + assert!(formatted.contains('-')); + let reparsed: Cnpj = formatted.parse().unwrap(); + assert_eq!(cnpj, reparsed); + } + + #[test] + fn format_cnpj_returns_none_on_bad_length() { + assert_eq!(format_cnpj("1234"), None); + assert_eq!(format_cnpj(""), None); + } + + #[test] + fn remove_symbols_strips_formatting() { + assert_eq!(remove_symbols("11.222.333/0001-81"), "11222333000181"); + } + + #[test] + fn remove_symbols_preserves_letters_and_uppercases() { + assert_eq!(remove_symbols("12.abc.345/00de-XX"), "12ABC34500DEXX"); + } + + #[test] + fn generate_numeric_produces_valid() { + for _ in 0..100 { + let cnpj = generate(CnpjKind::Numeric); + assert_eq!(cnpj.len(), 14); + assert!(is_valid(&cnpj), "generated invalid CNPJ: {cnpj}"); + let parsed: Cnpj = cnpj.parse().unwrap(); + assert_eq!(parsed.kind(), CnpjKind::Numeric); + } + } + + #[test] + fn generate_alphanumeric_produces_valid() { + for _ in 0..100 { + let cnpj = generate(CnpjKind::Alphanumeric); + assert_eq!(cnpj.len(), 14); + assert!(is_valid(&cnpj), "generated invalid CNPJ: {cnpj}"); + } + } + + #[test] + fn generate_cnpj_roundtrips() { + for _ in 0..100 { + let cnpj = generate_cnpj(CnpjKind::Numeric); + assert!(is_valid(cnpj.as_str())); + let parsed: Cnpj = cnpj.as_str().parse().unwrap(); + assert_eq!(cnpj, parsed); + } + } + + #[test] + fn generate_matriz_has_correct_ordem_and_type() { + for _ in 0..20 { + let cnpj = generate_matriz(CnpjKind::Numeric); + assert_eq!(cnpj.ordem(), "0001"); + assert_eq!(cnpj.establishment_type(), EstablishmentType::Matriz); + assert!(is_valid(cnpj.as_str())); + } + for _ in 0..20 { + let cnpj = generate_matriz(CnpjKind::Alphanumeric); + assert_eq!(cnpj.ordem(), "0001"); + assert_eq!(cnpj.establishment_type(), EstablishmentType::Matriz); + assert!(is_valid(cnpj.as_str())); + } + } + + #[test] + fn compute_check_digits_known_base() { + let (d1, d2) = compute_check_digits("112223330001").unwrap(); + assert_eq!(d1, 8); + assert_eq!(d2, 1); + } + + #[test] + fn compute_check_digits_alphanumeric_base() { + let cnpj = cnpj_alpha(); + let base = &cnpj.as_str()[..12]; + let (d1, d2) = compute_check_digits(base).unwrap(); + assert_eq!(d1, cnpj.check_digits().0); + assert_eq!(d2, cnpj.check_digits().1); + } + + #[test] + fn compute_check_digits_rejects_bad_input() { + assert_eq!(compute_check_digits("12345678901"), None); // too short + assert_eq!(compute_check_digits("1234567890123"), None); // too long + assert_eq!(compute_check_digits("000000000000"), None); // all equal + } + + #[test] + fn cnpj_is_copy() { + let a = cnpj_numeric(); + let b = a; + assert_eq!(a, b); + } + + #[test] + fn cnpj_as_ref_str() { + let cnpj = cnpj_numeric(); + let r: &str = cnpj.as_ref(); + assert_eq!(r, cnpj.as_str()); + } + + #[test] + fn debug_format() { + let cnpj = cnpj_numeric(); + let dbg = alloc::format!("{cnpj:?}"); + assert!(dbg.starts_with("Cnpj(")); + assert!(dbg.ends_with(')')); + assert!(dbg.contains('.')); + assert!(dbg.contains('/')); + assert!(dbg.contains('-')); + } + + #[test] + fn display_format() { + let cnpj = cnpj_numeric(); + assert_eq!(cnpj.to_string(), "11.222.333/0001-81"); + } + + #[test] + fn from_str_trait() { + let cnpj: Cnpj = "11.222.333/0001-81".parse().unwrap(); + assert_eq!(cnpj.as_str(), "11222333000181"); + } + + #[test] + fn all_zeros_rejected() { + assert!(!is_valid("00000000000000")); + assert_eq!( + is_valid_strict("00000000000000"), + Err(CnpjError::AllCharsEqual) + ); + } + + #[test] + fn leading_zeros() { + // 00.623.904/0001-73 is a valid CNPJ with leading zeros + let result = is_valid("00623904000173"); + // It's valid only if check digits match - let's compute + if let Some((d1, d2)) = compute_check_digits("006239040001") { + let cnpj_str = alloc::format!("006239040001{}{}", d1, d2); + assert!(is_valid(&cnpj_str)); + let cnpj: Cnpj = cnpj_str.parse().unwrap(); + assert!(cnpj.as_str().starts_with("00")); + } else { + // base might be all-equal or invalid, skip + let _ = result; + } + } + + #[test] + fn char_value_mapping() { + assert_eq!(char_value(b'0'), 0); + assert_eq!(char_value(b'9'), 9); + assert_eq!(char_value(b'A'), 17); + assert_eq!(char_value(b'Z'), 42); + } +} diff --git a/core/src/cpf.rs b/core/src/cpf.rs index 86e1d3c..4c3ee86 100644 --- a/core/src/cpf.rs +++ b/core/src/cpf.rs @@ -6,6 +6,9 @@ use alloc::string::String; use alloc::vec::Vec; use core::fmt; +use crate::rand::{simple_seed, xorshift64}; +use crate::util::{self, impl_document_traits}; + const CPF_LEN: usize = 11; const WEIGHTS_D1: [u32; 9] = [10, 9, 8, 7, 6, 5, 4, 3, 2]; const WEIGHTS_D2: [u32; 10] = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]; @@ -115,25 +118,7 @@ impl fmt::Display for Cpf { } } -impl fmt::Debug for Cpf { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "Cpf({self})") - } -} - -impl AsRef for Cpf { - fn as_ref(&self) -> &str { - self.as_str() - } -} - -impl core::str::FromStr for Cpf { - type Err = CpfError; - - fn from_str(s: &str) -> Result { - parse_strict(s) - } -} +impl_document_traits!(Cpf, CpfError); pub fn remove_symbols(cpf: &str) -> String { cpf.chars().filter(char::is_ascii_digit).collect() @@ -211,7 +196,7 @@ pub fn compute_check_digits(base: &str) -> Option<(u8, u8)> { } fn all_equal(digits: &[u8]) -> bool { - digits.iter().all(|&v| v == digits[0]) + util::all_equal(digits) } fn validate_digits(d: &[u8]) -> bool { @@ -291,29 +276,6 @@ fn generate_with_seed(mut seed: u64) -> Cpf { Cpf::from_numeric(digits) } -#[cfg(feature = "std")] -fn simple_seed() -> u64 { - use std::hash::{BuildHasher, Hasher}; - std::collections::hash_map::RandomState::new() - .build_hasher() - .finish() -} - -#[cfg(not(feature = "std"))] -fn simple_seed() -> u64 { - let stack_var: u8 = 0; - let addr = &stack_var as *const u8 as u64; - addr.wrapping_mul(6_364_136_223_846_793_005) - .wrapping_add(1_442_695_040_888_963_407) -} - -fn xorshift64(mut state: u64) -> u64 { - state ^= state << 13; - state ^= state >> 7; - state ^= state << 17; - state -} - #[cfg(test)] fn make_cpf(base: [u8; 9]) -> Cpf { let mut digits = [0u8; CPF_LEN]; diff --git a/core/src/lib.rs b/core/src/lib.rs index 3ae1238..84be9e7 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -6,4 +6,11 @@ #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; +mod rand; +pub(crate) mod util; + +pub mod cep; +pub mod cnpj; pub mod cpf; +pub mod municipio; +pub mod uf; diff --git a/core/src/municipio.rs b/core/src/municipio.rs new file mode 100644 index 0000000..20d4713 --- /dev/null +++ b/core/src/municipio.rs @@ -0,0 +1,28079 @@ +//! Municípios brasileiros. +//! +//! Dados extraídos da API de Localidades do IBGE: +//! +//! +//! Referência oficial dos códigos: +//! + +use crate::uf::State; +use core::fmt; + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct Municipio { + /// IBGE 7-digit code. + pub ibge_code: u32, + /// Municipality name. + pub name: &'static str, + /// State this municipality belongs to. + pub state: State, +} + +#[allow(clippy::unreadable_literal)] +pub const ALL: &[Municipio] = &[ + Municipio { + ibge_code: 1200013, + name: "Acrelândia", + state: State::AC, + }, + Municipio { + ibge_code: 1200054, + name: "Assis Brasil", + state: State::AC, + }, + Municipio { + ibge_code: 1200104, + name: "Brasiléia", + state: State::AC, + }, + Municipio { + ibge_code: 1200138, + name: "Bujari", + state: State::AC, + }, + Municipio { + ibge_code: 1200179, + name: "Capixaba", + state: State::AC, + }, + Municipio { + ibge_code: 1200203, + name: "Cruzeiro do Sul", + state: State::AC, + }, + Municipio { + ibge_code: 1200252, + name: "Epitaciolândia", + state: State::AC, + }, + Municipio { + ibge_code: 1200302, + name: "Feijó", + state: State::AC, + }, + Municipio { + ibge_code: 1200328, + name: "Jordão", + state: State::AC, + }, + Municipio { + ibge_code: 1200344, + name: "Manoel Urbano", + state: State::AC, + }, + Municipio { + ibge_code: 1200351, + name: "Marechal Thaumaturgo", + state: State::AC, + }, + Municipio { + ibge_code: 1200336, + name: "Mâncio Lima", + state: State::AC, + }, + Municipio { + ibge_code: 1200385, + name: "Plácido de Castro", + state: State::AC, + }, + Municipio { + ibge_code: 1200807, + name: "Porto Acre", + state: State::AC, + }, + Municipio { + ibge_code: 1200393, + name: "Porto Walter", + state: State::AC, + }, + Municipio { + ibge_code: 1200401, + name: "Rio Branco", + state: State::AC, + }, + Municipio { + ibge_code: 1200427, + name: "Rodrigues Alves", + state: State::AC, + }, + Municipio { + ibge_code: 1200435, + name: "Santa Rosa do Purus", + state: State::AC, + }, + Municipio { + ibge_code: 1200500, + name: "Sena Madureira", + state: State::AC, + }, + Municipio { + ibge_code: 1200450, + name: "Senador Guiomard", + state: State::AC, + }, + Municipio { + ibge_code: 1200609, + name: "Tarauacá", + state: State::AC, + }, + Municipio { + ibge_code: 1200708, + name: "Xapuri", + state: State::AC, + }, + Municipio { + ibge_code: 2700201, + name: "Anadia", + state: State::AL, + }, + Municipio { + ibge_code: 2700300, + name: "Arapiraca", + state: State::AL, + }, + Municipio { + ibge_code: 2700409, + name: "Atalaia", + state: State::AL, + }, + Municipio { + ibge_code: 2700508, + name: "Barra de Santo Antônio", + state: State::AL, + }, + Municipio { + ibge_code: 2700607, + name: "Barra de São Miguel", + state: State::AL, + }, + Municipio { + ibge_code: 2700706, + name: "Batalha", + state: State::AL, + }, + Municipio { + ibge_code: 2700904, + name: "Belo Monte", + state: State::AL, + }, + Municipio { + ibge_code: 2700805, + name: "Belém", + state: State::AL, + }, + Municipio { + ibge_code: 2701001, + name: "Boca da Mata", + state: State::AL, + }, + Municipio { + ibge_code: 2701100, + name: "Branquinha", + state: State::AL, + }, + Municipio { + ibge_code: 2701209, + name: "Cacimbinhas", + state: State::AL, + }, + Municipio { + ibge_code: 2701308, + name: "Cajueiro", + state: State::AL, + }, + Municipio { + ibge_code: 2701357, + name: "Campestre", + state: State::AL, + }, + Municipio { + ibge_code: 2701407, + name: "Campo Alegre", + state: State::AL, + }, + Municipio { + ibge_code: 2701506, + name: "Campo Grande", + state: State::AL, + }, + Municipio { + ibge_code: 2701605, + name: "Canapi", + state: State::AL, + }, + Municipio { + ibge_code: 2701704, + name: "Capela", + state: State::AL, + }, + Municipio { + ibge_code: 2701803, + name: "Carneiros", + state: State::AL, + }, + Municipio { + ibge_code: 2701902, + name: "Chã Preta", + state: State::AL, + }, + Municipio { + ibge_code: 2702009, + name: "Coité do Nóia", + state: State::AL, + }, + Municipio { + ibge_code: 2702108, + name: "Colônia Leopoldina", + state: State::AL, + }, + Municipio { + ibge_code: 2702207, + name: "Coqueiro Seco", + state: State::AL, + }, + Municipio { + ibge_code: 2702306, + name: "Coruripe", + state: State::AL, + }, + Municipio { + ibge_code: 2702355, + name: "Craíbas", + state: State::AL, + }, + Municipio { + ibge_code: 2702405, + name: "Delmiro Gouveia", + state: State::AL, + }, + Municipio { + ibge_code: 2702504, + name: "Dois Riachos", + state: State::AL, + }, + Municipio { + ibge_code: 2702553, + name: "Estrela de Alagoas", + state: State::AL, + }, + Municipio { + ibge_code: 2702603, + name: "Feira Grande", + state: State::AL, + }, + Municipio { + ibge_code: 2702702, + name: "Feliz Deserto", + state: State::AL, + }, + Municipio { + ibge_code: 2702801, + name: "Flexeiras", + state: State::AL, + }, + Municipio { + ibge_code: 2702900, + name: "Girau do Ponciano", + state: State::AL, + }, + Municipio { + ibge_code: 2703007, + name: "Ibateguara", + state: State::AL, + }, + Municipio { + ibge_code: 2703106, + name: "Igaci", + state: State::AL, + }, + Municipio { + ibge_code: 2703205, + name: "Igreja Nova", + state: State::AL, + }, + Municipio { + ibge_code: 2703304, + name: "Inhapi", + state: State::AL, + }, + Municipio { + ibge_code: 2703403, + name: "Jacaré dos Homens", + state: State::AL, + }, + Municipio { + ibge_code: 2703502, + name: "Jacuípe", + state: State::AL, + }, + Municipio { + ibge_code: 2703601, + name: "Japaratinga", + state: State::AL, + }, + Municipio { + ibge_code: 2703700, + name: "Jaramataia", + state: State::AL, + }, + Municipio { + ibge_code: 2703759, + name: "Jequiá da Praia", + state: State::AL, + }, + Municipio { + ibge_code: 2703809, + name: "Joaquim Gomes", + state: State::AL, + }, + Municipio { + ibge_code: 2703908, + name: "Jundiá", + state: State::AL, + }, + Municipio { + ibge_code: 2704005, + name: "Junqueiro", + state: State::AL, + }, + Municipio { + ibge_code: 2704104, + name: "Lagoa da Canoa", + state: State::AL, + }, + Municipio { + ibge_code: 2704203, + name: "Limoeiro de Anadia", + state: State::AL, + }, + Municipio { + ibge_code: 2704302, + name: "Maceió", + state: State::AL, + }, + Municipio { + ibge_code: 2704401, + name: "Major Isidoro", + state: State::AL, + }, + Municipio { + ibge_code: 2704906, + name: "Mar Vermelho", + state: State::AL, + }, + Municipio { + ibge_code: 2704500, + name: "Maragogi", + state: State::AL, + }, + Municipio { + ibge_code: 2704609, + name: "Maravilha", + state: State::AL, + }, + Municipio { + ibge_code: 2704708, + name: "Marechal Deodoro", + state: State::AL, + }, + Municipio { + ibge_code: 2704807, + name: "Maribondo", + state: State::AL, + }, + Municipio { + ibge_code: 2705002, + name: "Mata Grande", + state: State::AL, + }, + Municipio { + ibge_code: 2705101, + name: "Matriz de Camaragibe", + state: State::AL, + }, + Municipio { + ibge_code: 2705200, + name: "Messias", + state: State::AL, + }, + Municipio { + ibge_code: 2705309, + name: "Minador do Negrão", + state: State::AL, + }, + Municipio { + ibge_code: 2705408, + name: "Monteirópolis", + state: State::AL, + }, + Municipio { + ibge_code: 2705507, + name: "Murici", + state: State::AL, + }, + Municipio { + ibge_code: 2705606, + name: "Novo Lino", + state: State::AL, + }, + Municipio { + ibge_code: 2705903, + name: "Olho d'Água Grande", + state: State::AL, + }, + Municipio { + ibge_code: 2705705, + name: "Olho d'Água das Flores", + state: State::AL, + }, + Municipio { + ibge_code: 2705804, + name: "Olho d'Água do Casado", + state: State::AL, + }, + Municipio { + ibge_code: 2706000, + name: "Olivença", + state: State::AL, + }, + Municipio { + ibge_code: 2706109, + name: "Ouro Branco", + state: State::AL, + }, + Municipio { + ibge_code: 2706208, + name: "Palestina", + state: State::AL, + }, + Municipio { + ibge_code: 2706307, + name: "Palmeira dos Índios", + state: State::AL, + }, + Municipio { + ibge_code: 2706422, + name: "Pariconha", + state: State::AL, + }, + Municipio { + ibge_code: 2706448, + name: "Paripueira", + state: State::AL, + }, + Municipio { + ibge_code: 2706505, + name: "Passo de Camaragibe", + state: State::AL, + }, + Municipio { + ibge_code: 2706604, + name: "Paulo Jacinto", + state: State::AL, + }, + Municipio { + ibge_code: 2706703, + name: "Penedo", + state: State::AL, + }, + Municipio { + ibge_code: 2706802, + name: "Piaçabuçu", + state: State::AL, + }, + Municipio { + ibge_code: 2706901, + name: "Pilar", + state: State::AL, + }, + Municipio { + ibge_code: 2707008, + name: "Pindoba", + state: State::AL, + }, + Municipio { + ibge_code: 2707107, + name: "Piranhas", + state: State::AL, + }, + Municipio { + ibge_code: 2707305, + name: "Porto Calvo", + state: State::AL, + }, + Municipio { + ibge_code: 2707503, + name: "Porto Real do Colégio", + state: State::AL, + }, + Municipio { + ibge_code: 2707404, + name: "Porto de Pedras", + state: State::AL, + }, + Municipio { + ibge_code: 2707206, + name: "Poço das Trincheiras", + state: State::AL, + }, + Municipio { + ibge_code: 2706406, + name: "Pão de Açúcar", + state: State::AL, + }, + Municipio { + ibge_code: 2707602, + name: "Quebrangulo", + state: State::AL, + }, + Municipio { + ibge_code: 2707701, + name: "Rio Largo", + state: State::AL, + }, + Municipio { + ibge_code: 2707800, + name: "Roteiro", + state: State::AL, + }, + Municipio { + ibge_code: 2707909, + name: "Santa Luzia do Norte", + state: State::AL, + }, + Municipio { + ibge_code: 2708006, + name: "Santana do Ipanema", + state: State::AL, + }, + Municipio { + ibge_code: 2708105, + name: "Santana do Mundaú", + state: State::AL, + }, + Municipio { + ibge_code: 2708907, + name: "Satuba", + state: State::AL, + }, + Municipio { + ibge_code: 2708956, + name: "Senador Rui Palmeira", + state: State::AL, + }, + Municipio { + ibge_code: 2708204, + name: "São Brás", + state: State::AL, + }, + Municipio { + ibge_code: 2708303, + name: "São José da Laje", + state: State::AL, + }, + Municipio { + ibge_code: 2708402, + name: "São José da Tapera", + state: State::AL, + }, + Municipio { + ibge_code: 2708501, + name: "São Luís do Quitunde", + state: State::AL, + }, + Municipio { + ibge_code: 2708600, + name: "São Miguel dos Campos", + state: State::AL, + }, + Municipio { + ibge_code: 2708709, + name: "São Miguel dos Milagres", + state: State::AL, + }, + Municipio { + ibge_code: 2708808, + name: "São Sebastião", + state: State::AL, + }, + Municipio { + ibge_code: 2709004, + name: "Tanque d'Arca", + state: State::AL, + }, + Municipio { + ibge_code: 2709103, + name: "Taquarana", + state: State::AL, + }, + Municipio { + ibge_code: 2709152, + name: "Teotônio Vilela", + state: State::AL, + }, + Municipio { + ibge_code: 2709202, + name: "Traipu", + state: State::AL, + }, + Municipio { + ibge_code: 2709301, + name: "União dos Palmares", + state: State::AL, + }, + Municipio { + ibge_code: 2709400, + name: "Viçosa", + state: State::AL, + }, + Municipio { + ibge_code: 2700102, + name: "Água Branca", + state: State::AL, + }, + Municipio { + ibge_code: 1300029, + name: "Alvarães", + state: State::AM, + }, + Municipio { + ibge_code: 1300060, + name: "Amaturá", + state: State::AM, + }, + Municipio { + ibge_code: 1300086, + name: "Anamã", + state: State::AM, + }, + Municipio { + ibge_code: 1300102, + name: "Anori", + state: State::AM, + }, + Municipio { + ibge_code: 1300144, + name: "Apuí", + state: State::AM, + }, + Municipio { + ibge_code: 1300201, + name: "Atalaia do Norte", + state: State::AM, + }, + Municipio { + ibge_code: 1300300, + name: "Autazes", + state: State::AM, + }, + Municipio { + ibge_code: 1300409, + name: "Barcelos", + state: State::AM, + }, + Municipio { + ibge_code: 1300508, + name: "Barreirinha", + state: State::AM, + }, + Municipio { + ibge_code: 1300607, + name: "Benjamin Constant", + state: State::AM, + }, + Municipio { + ibge_code: 1300631, + name: "Beruri", + state: State::AM, + }, + Municipio { + ibge_code: 1300680, + name: "Boa Vista do Ramos", + state: State::AM, + }, + Municipio { + ibge_code: 1300706, + name: "Boca do Acre", + state: State::AM, + }, + Municipio { + ibge_code: 1300805, + name: "Borba", + state: State::AM, + }, + Municipio { + ibge_code: 1300839, + name: "Caapiranga", + state: State::AM, + }, + Municipio { + ibge_code: 1300904, + name: "Canutama", + state: State::AM, + }, + Municipio { + ibge_code: 1301001, + name: "Carauari", + state: State::AM, + }, + Municipio { + ibge_code: 1301100, + name: "Careiro", + state: State::AM, + }, + Municipio { + ibge_code: 1301159, + name: "Careiro da Várzea", + state: State::AM, + }, + Municipio { + ibge_code: 1301209, + name: "Coari", + state: State::AM, + }, + Municipio { + ibge_code: 1301308, + name: "Codajás", + state: State::AM, + }, + Municipio { + ibge_code: 1301407, + name: "Eirunepé", + state: State::AM, + }, + Municipio { + ibge_code: 1301506, + name: "Envira", + state: State::AM, + }, + Municipio { + ibge_code: 1301605, + name: "Fonte Boa", + state: State::AM, + }, + Municipio { + ibge_code: 1301654, + name: "Guajará", + state: State::AM, + }, + Municipio { + ibge_code: 1301704, + name: "Humaitá", + state: State::AM, + }, + Municipio { + ibge_code: 1301803, + name: "Ipixuna", + state: State::AM, + }, + Municipio { + ibge_code: 1301852, + name: "Iranduba", + state: State::AM, + }, + Municipio { + ibge_code: 1301902, + name: "Itacoatiara", + state: State::AM, + }, + Municipio { + ibge_code: 1301951, + name: "Itamarati", + state: State::AM, + }, + Municipio { + ibge_code: 1302009, + name: "Itapiranga", + state: State::AM, + }, + Municipio { + ibge_code: 1302108, + name: "Japurá", + state: State::AM, + }, + Municipio { + ibge_code: 1302207, + name: "Juruá", + state: State::AM, + }, + Municipio { + ibge_code: 1302306, + name: "Jutaí", + state: State::AM, + }, + Municipio { + ibge_code: 1302405, + name: "Lábrea", + state: State::AM, + }, + Municipio { + ibge_code: 1302504, + name: "Manacapuru", + state: State::AM, + }, + Municipio { + ibge_code: 1302553, + name: "Manaquiri", + state: State::AM, + }, + Municipio { + ibge_code: 1302603, + name: "Manaus", + state: State::AM, + }, + Municipio { + ibge_code: 1302702, + name: "Manicoré", + state: State::AM, + }, + Municipio { + ibge_code: 1302801, + name: "Maraã", + state: State::AM, + }, + Municipio { + ibge_code: 1302900, + name: "Maués", + state: State::AM, + }, + Municipio { + ibge_code: 1303007, + name: "Nhamundá", + state: State::AM, + }, + Municipio { + ibge_code: 1303106, + name: "Nova Olinda do Norte", + state: State::AM, + }, + Municipio { + ibge_code: 1303205, + name: "Novo Airão", + state: State::AM, + }, + Municipio { + ibge_code: 1303304, + name: "Novo Aripuanã", + state: State::AM, + }, + Municipio { + ibge_code: 1303403, + name: "Parintins", + state: State::AM, + }, + Municipio { + ibge_code: 1303502, + name: "Pauini", + state: State::AM, + }, + Municipio { + ibge_code: 1303536, + name: "Presidente Figueiredo", + state: State::AM, + }, + Municipio { + ibge_code: 1303569, + name: "Rio Preto da Eva", + state: State::AM, + }, + Municipio { + ibge_code: 1303601, + name: "Santa Isabel do Rio Negro", + state: State::AM, + }, + Municipio { + ibge_code: 1303700, + name: "Santo Antônio do Içá", + state: State::AM, + }, + Municipio { + ibge_code: 1304005, + name: "Silves", + state: State::AM, + }, + Municipio { + ibge_code: 1303809, + name: "São Gabriel da Cachoeira", + state: State::AM, + }, + Municipio { + ibge_code: 1303908, + name: "São Paulo de Olivença", + state: State::AM, + }, + Municipio { + ibge_code: 1303957, + name: "São Sebastião do Uatumã", + state: State::AM, + }, + Municipio { + ibge_code: 1304062, + name: "Tabatinga", + state: State::AM, + }, + Municipio { + ibge_code: 1304104, + name: "Tapauá", + state: State::AM, + }, + Municipio { + ibge_code: 1304203, + name: "Tefé", + state: State::AM, + }, + Municipio { + ibge_code: 1304237, + name: "Tonantins", + state: State::AM, + }, + Municipio { + ibge_code: 1304260, + name: "Uarini", + state: State::AM, + }, + Municipio { + ibge_code: 1304302, + name: "Urucará", + state: State::AM, + }, + Municipio { + ibge_code: 1304401, + name: "Urucurituba", + state: State::AM, + }, + Municipio { + ibge_code: 1600105, + name: "Amapá", + state: State::AP, + }, + Municipio { + ibge_code: 1600204, + name: "Calçoene", + state: State::AP, + }, + Municipio { + ibge_code: 1600212, + name: "Cutias", + state: State::AP, + }, + Municipio { + ibge_code: 1600238, + name: "Ferreira Gomes", + state: State::AP, + }, + Municipio { + ibge_code: 1600253, + name: "Itaubal", + state: State::AP, + }, + Municipio { + ibge_code: 1600279, + name: "Laranjal do Jari", + state: State::AP, + }, + Municipio { + ibge_code: 1600303, + name: "Macapá", + state: State::AP, + }, + Municipio { + ibge_code: 1600402, + name: "Mazagão", + state: State::AP, + }, + Municipio { + ibge_code: 1600501, + name: "Oiapoque", + state: State::AP, + }, + Municipio { + ibge_code: 1600154, + name: "Pedra Branca do Amapari", + state: State::AP, + }, + Municipio { + ibge_code: 1600535, + name: "Porto Grande", + state: State::AP, + }, + Municipio { + ibge_code: 1600550, + name: "Pracuúba", + state: State::AP, + }, + Municipio { + ibge_code: 1600600, + name: "Santana", + state: State::AP, + }, + Municipio { + ibge_code: 1600055, + name: "Serra do Navio", + state: State::AP, + }, + Municipio { + ibge_code: 1600709, + name: "Tartarugalzinho", + state: State::AP, + }, + Municipio { + ibge_code: 1600808, + name: "Vitória do Jari", + state: State::AP, + }, + Municipio { + ibge_code: 2900207, + name: "Abaré", + state: State::BA, + }, + Municipio { + ibge_code: 2900108, + name: "Abaíra", + state: State::BA, + }, + Municipio { + ibge_code: 2900306, + name: "Acajutiba", + state: State::BA, + }, + Municipio { + ibge_code: 2900355, + name: "Adustina", + state: State::BA, + }, + Municipio { + ibge_code: 2900603, + name: "Aiquara", + state: State::BA, + }, + Municipio { + ibge_code: 2900702, + name: "Alagoinhas", + state: State::BA, + }, + Municipio { + ibge_code: 2900801, + name: "Alcobaça", + state: State::BA, + }, + Municipio { + ibge_code: 2900900, + name: "Almadina", + state: State::BA, + }, + Municipio { + ibge_code: 2901007, + name: "Amargosa", + state: State::BA, + }, + Municipio { + ibge_code: 2901106, + name: "Amélia Rodrigues", + state: State::BA, + }, + Municipio { + ibge_code: 2901155, + name: "América Dourada", + state: State::BA, + }, + Municipio { + ibge_code: 2901205, + name: "Anagé", + state: State::BA, + }, + Municipio { + ibge_code: 2901304, + name: "Andaraí", + state: State::BA, + }, + Municipio { + ibge_code: 2901353, + name: "Andorinha", + state: State::BA, + }, + Municipio { + ibge_code: 2901403, + name: "Angical", + state: State::BA, + }, + Municipio { + ibge_code: 2901502, + name: "Anguera", + state: State::BA, + }, + Municipio { + ibge_code: 2901601, + name: "Antas", + state: State::BA, + }, + Municipio { + ibge_code: 2901700, + name: "Antônio Cardoso", + state: State::BA, + }, + Municipio { + ibge_code: 2901809, + name: "Antônio Gonçalves", + state: State::BA, + }, + Municipio { + ibge_code: 2901908, + name: "Aporá", + state: State::BA, + }, + Municipio { + ibge_code: 2901957, + name: "Apuarema", + state: State::BA, + }, + Municipio { + ibge_code: 2902005, + name: "Aracatu", + state: State::BA, + }, + Municipio { + ibge_code: 2902104, + name: "Araci", + state: State::BA, + }, + Municipio { + ibge_code: 2902203, + name: "Aramari", + state: State::BA, + }, + Municipio { + ibge_code: 2902252, + name: "Arataca", + state: State::BA, + }, + Municipio { + ibge_code: 2902302, + name: "Aratuípe", + state: State::BA, + }, + Municipio { + ibge_code: 2902054, + name: "Araçás", + state: State::BA, + }, + Municipio { + ibge_code: 2902401, + name: "Aurelino Leal", + state: State::BA, + }, + Municipio { + ibge_code: 2902500, + name: "Baianópolis", + state: State::BA, + }, + Municipio { + ibge_code: 2902609, + name: "Baixa Grande", + state: State::BA, + }, + Municipio { + ibge_code: 2902658, + name: "Banzaê", + state: State::BA, + }, + Municipio { + ibge_code: 2902708, + name: "Barra", + state: State::BA, + }, + Municipio { + ibge_code: 2902807, + name: "Barra da Estiva", + state: State::BA, + }, + Municipio { + ibge_code: 2902906, + name: "Barra do Choça", + state: State::BA, + }, + Municipio { + ibge_code: 2903003, + name: "Barra do Mendes", + state: State::BA, + }, + Municipio { + ibge_code: 2903102, + name: "Barra do Rocha", + state: State::BA, + }, + Municipio { + ibge_code: 2903201, + name: "Barreiras", + state: State::BA, + }, + Municipio { + ibge_code: 2903235, + name: "Barro Alto", + state: State::BA, + }, + Municipio { + ibge_code: 2903300, + name: "Barro Preto", + state: State::BA, + }, + Municipio { + ibge_code: 2903276, + name: "Barrocas", + state: State::BA, + }, + Municipio { + ibge_code: 2903409, + name: "Belmonte", + state: State::BA, + }, + Municipio { + ibge_code: 2903508, + name: "Belo Campo", + state: State::BA, + }, + Municipio { + ibge_code: 2903607, + name: "Biritinga", + state: State::BA, + }, + Municipio { + ibge_code: 2903706, + name: "Boa Nova", + state: State::BA, + }, + Municipio { + ibge_code: 2903805, + name: "Boa Vista do Tupim", + state: State::BA, + }, + Municipio { + ibge_code: 2903904, + name: "Bom Jesus da Lapa", + state: State::BA, + }, + Municipio { + ibge_code: 2903953, + name: "Bom Jesus da Serra", + state: State::BA, + }, + Municipio { + ibge_code: 2904001, + name: "Boninal", + state: State::BA, + }, + Municipio { + ibge_code: 2904050, + name: "Bonito", + state: State::BA, + }, + Municipio { + ibge_code: 2904100, + name: "Boquira", + state: State::BA, + }, + Municipio { + ibge_code: 2904209, + name: "Botuporã", + state: State::BA, + }, + Municipio { + ibge_code: 2904407, + name: "Brejolândia", + state: State::BA, + }, + Municipio { + ibge_code: 2904308, + name: "Brejões", + state: State::BA, + }, + Municipio { + ibge_code: 2904506, + name: "Brotas de Macaúbas", + state: State::BA, + }, + Municipio { + ibge_code: 2904605, + name: "Brumado", + state: State::BA, + }, + Municipio { + ibge_code: 2904704, + name: "Buerarema", + state: State::BA, + }, + Municipio { + ibge_code: 2904753, + name: "Buritirama", + state: State::BA, + }, + Municipio { + ibge_code: 2904803, + name: "Caatiba", + state: State::BA, + }, + Municipio { + ibge_code: 2904852, + name: "Cabaceiras do Paraguaçu", + state: State::BA, + }, + Municipio { + ibge_code: 2904902, + name: "Cachoeira", + state: State::BA, + }, + Municipio { + ibge_code: 2905008, + name: "Caculé", + state: State::BA, + }, + Municipio { + ibge_code: 2905156, + name: "Caetanos", + state: State::BA, + }, + Municipio { + ibge_code: 2905206, + name: "Caetité", + state: State::BA, + }, + Municipio { + ibge_code: 2905305, + name: "Cafarnaum", + state: State::BA, + }, + Municipio { + ibge_code: 2905404, + name: "Cairu", + state: State::BA, + }, + Municipio { + ibge_code: 2905503, + name: "Caldeirão Grande", + state: State::BA, + }, + Municipio { + ibge_code: 2905602, + name: "Camacan", + state: State::BA, + }, + Municipio { + ibge_code: 2905800, + name: "Camamu", + state: State::BA, + }, + Municipio { + ibge_code: 2905701, + name: "Camaçari", + state: State::BA, + }, + Municipio { + ibge_code: 2905909, + name: "Campo Alegre de Lourdes", + state: State::BA, + }, + Municipio { + ibge_code: 2906006, + name: "Campo Formoso", + state: State::BA, + }, + Municipio { + ibge_code: 2906204, + name: "Canarana", + state: State::BA, + }, + Municipio { + ibge_code: 2906303, + name: "Canavieiras", + state: State::BA, + }, + Municipio { + ibge_code: 2906402, + name: "Candeal", + state: State::BA, + }, + Municipio { + ibge_code: 2906501, + name: "Candeias", + state: State::BA, + }, + Municipio { + ibge_code: 2906600, + name: "Candiba", + state: State::BA, + }, + Municipio { + ibge_code: 2906808, + name: "Cansanção", + state: State::BA, + }, + Municipio { + ibge_code: 2906824, + name: "Canudos", + state: State::BA, + }, + Municipio { + ibge_code: 2906105, + name: "Canápolis", + state: State::BA, + }, + Municipio { + ibge_code: 2906857, + name: "Capela do Alto Alegre", + state: State::BA, + }, + Municipio { + ibge_code: 2906873, + name: "Capim Grosso", + state: State::BA, + }, + Municipio { + ibge_code: 2906907, + name: "Caravelas", + state: State::BA, + }, + Municipio { + ibge_code: 2906899, + name: "Caraíbas", + state: State::BA, + }, + Municipio { + ibge_code: 2907004, + name: "Cardeal da Silva", + state: State::BA, + }, + Municipio { + ibge_code: 2907103, + name: "Carinhanha", + state: State::BA, + }, + Municipio { + ibge_code: 2907202, + name: "Casa Nova", + state: State::BA, + }, + Municipio { + ibge_code: 2907301, + name: "Castro Alves", + state: State::BA, + }, + Municipio { + ibge_code: 2907400, + name: "Catolândia", + state: State::BA, + }, + Municipio { + ibge_code: 2907509, + name: "Catu", + state: State::BA, + }, + Municipio { + ibge_code: 2907558, + name: "Caturama", + state: State::BA, + }, + Municipio { + ibge_code: 2905107, + name: "Caém", + state: State::BA, + }, + Municipio { + ibge_code: 2907608, + name: "Central", + state: State::BA, + }, + Municipio { + ibge_code: 2907707, + name: "Chorrochó", + state: State::BA, + }, + Municipio { + ibge_code: 2907905, + name: "Cipó", + state: State::BA, + }, + Municipio { + ibge_code: 2908002, + name: "Coaraci", + state: State::BA, + }, + Municipio { + ibge_code: 2908101, + name: "Cocos", + state: State::BA, + }, + Municipio { + ibge_code: 2908200, + name: "Conceição da Feira", + state: State::BA, + }, + Municipio { + ibge_code: 2908309, + name: "Conceição do Almeida", + state: State::BA, + }, + Municipio { + ibge_code: 2908408, + name: "Conceição do Coité", + state: State::BA, + }, + Municipio { + ibge_code: 2908507, + name: "Conceição do Jacuípe", + state: State::BA, + }, + Municipio { + ibge_code: 2908606, + name: "Conde", + state: State::BA, + }, + Municipio { + ibge_code: 2908705, + name: "Condeúba", + state: State::BA, + }, + Municipio { + ibge_code: 2908804, + name: "Contendas do Sincorá", + state: State::BA, + }, + Municipio { + ibge_code: 2908903, + name: "Coração de Maria", + state: State::BA, + }, + Municipio { + ibge_code: 2909000, + name: "Cordeiros", + state: State::BA, + }, + Municipio { + ibge_code: 2909109, + name: "Coribe", + state: State::BA, + }, + Municipio { + ibge_code: 2909208, + name: "Coronel João Sá", + state: State::BA, + }, + Municipio { + ibge_code: 2909307, + name: "Correntina", + state: State::BA, + }, + Municipio { + ibge_code: 2909406, + name: "Cotegipe", + state: State::BA, + }, + Municipio { + ibge_code: 2909505, + name: "Cravolândia", + state: State::BA, + }, + Municipio { + ibge_code: 2909703, + name: "Cristópolis", + state: State::BA, + }, + Municipio { + ibge_code: 2909604, + name: "Crisópolis", + state: State::BA, + }, + Municipio { + ibge_code: 2909802, + name: "Cruz das Almas", + state: State::BA, + }, + Municipio { + ibge_code: 2909901, + name: "Curaçá", + state: State::BA, + }, + Municipio { + ibge_code: 2906709, + name: "Cândido Sales", + state: State::BA, + }, + Municipio { + ibge_code: 2907806, + name: "Cícero Dantas", + state: State::BA, + }, + Municipio { + ibge_code: 2910057, + name: "Dias d'Ávila", + state: State::BA, + }, + Municipio { + ibge_code: 2910107, + name: "Dom Basílio", + state: State::BA, + }, + Municipio { + ibge_code: 2910206, + name: "Dom Macedo Costa", + state: State::BA, + }, + Municipio { + ibge_code: 2910008, + name: "Dário Meira", + state: State::BA, + }, + Municipio { + ibge_code: 2910305, + name: "Elísio Medrado", + state: State::BA, + }, + Municipio { + ibge_code: 2910404, + name: "Encruzilhada", + state: State::BA, + }, + Municipio { + ibge_code: 2910503, + name: "Entre Rios", + state: State::BA, + }, + Municipio { + ibge_code: 2910602, + name: "Esplanada", + state: State::BA, + }, + Municipio { + ibge_code: 2910701, + name: "Euclides da Cunha", + state: State::BA, + }, + Municipio { + ibge_code: 2910727, + name: "Eunápolis", + state: State::BA, + }, + Municipio { + ibge_code: 2910776, + name: "Feira da Mata", + state: State::BA, + }, + Municipio { + ibge_code: 2910800, + name: "Feira de Santana", + state: State::BA, + }, + Municipio { + ibge_code: 2910859, + name: "Filadélfia", + state: State::BA, + }, + Municipio { + ibge_code: 2910909, + name: "Firmino Alves", + state: State::BA, + }, + Municipio { + ibge_code: 2911006, + name: "Floresta Azul", + state: State::BA, + }, + Municipio { + ibge_code: 2911105, + name: "Formosa do Rio Preto", + state: State::BA, + }, + Municipio { + ibge_code: 2910750, + name: "Fátima", + state: State::BA, + }, + Municipio { + ibge_code: 2911204, + name: "Gandu", + state: State::BA, + }, + Municipio { + ibge_code: 2911253, + name: "Gavião", + state: State::BA, + }, + Municipio { + ibge_code: 2911303, + name: "Gentio do Ouro", + state: State::BA, + }, + Municipio { + ibge_code: 2911402, + name: "Glória", + state: State::BA, + }, + Municipio { + ibge_code: 2911501, + name: "Gongogi", + state: State::BA, + }, + Municipio { + ibge_code: 2911600, + name: "Governador Mangabeira", + state: State::BA, + }, + Municipio { + ibge_code: 2911659, + name: "Guajeru", + state: State::BA, + }, + Municipio { + ibge_code: 2911709, + name: "Guanambi", + state: State::BA, + }, + Municipio { + ibge_code: 2911808, + name: "Guaratinga", + state: State::BA, + }, + Municipio { + ibge_code: 2911857, + name: "Heliópolis", + state: State::BA, + }, + Municipio { + ibge_code: 2911907, + name: "Iaçu", + state: State::BA, + }, + Municipio { + ibge_code: 2912004, + name: "Ibiassucê", + state: State::BA, + }, + Municipio { + ibge_code: 2912103, + name: "Ibicaraí", + state: State::BA, + }, + Municipio { + ibge_code: 2912202, + name: "Ibicoara", + state: State::BA, + }, + Municipio { + ibge_code: 2912301, + name: "Ibicuí", + state: State::BA, + }, + Municipio { + ibge_code: 2912400, + name: "Ibipeba", + state: State::BA, + }, + Municipio { + ibge_code: 2912509, + name: "Ibipitanga", + state: State::BA, + }, + Municipio { + ibge_code: 2912608, + name: "Ibiquera", + state: State::BA, + }, + Municipio { + ibge_code: 2912707, + name: "Ibirapitanga", + state: State::BA, + }, + Municipio { + ibge_code: 2912806, + name: "Ibirapuã", + state: State::BA, + }, + Municipio { + ibge_code: 2912905, + name: "Ibirataia", + state: State::BA, + }, + Municipio { + ibge_code: 2913002, + name: "Ibitiara", + state: State::BA, + }, + Municipio { + ibge_code: 2913101, + name: "Ibititá", + state: State::BA, + }, + Municipio { + ibge_code: 2913200, + name: "Ibotirama", + state: State::BA, + }, + Municipio { + ibge_code: 2913309, + name: "Ichu", + state: State::BA, + }, + Municipio { + ibge_code: 2913408, + name: "Igaporã", + state: State::BA, + }, + Municipio { + ibge_code: 2913457, + name: "Igrapiúna", + state: State::BA, + }, + Municipio { + ibge_code: 2913507, + name: "Iguaí", + state: State::BA, + }, + Municipio { + ibge_code: 2913606, + name: "Ilhéus", + state: State::BA, + }, + Municipio { + ibge_code: 2913705, + name: "Inhambupe", + state: State::BA, + }, + Municipio { + ibge_code: 2913804, + name: "Ipecaetá", + state: State::BA, + }, + Municipio { + ibge_code: 2913903, + name: "Ipiaú", + state: State::BA, + }, + Municipio { + ibge_code: 2914000, + name: "Ipirá", + state: State::BA, + }, + Municipio { + ibge_code: 2914109, + name: "Ipupiara", + state: State::BA, + }, + Municipio { + ibge_code: 2914208, + name: "Irajuba", + state: State::BA, + }, + Municipio { + ibge_code: 2914307, + name: "Iramaia", + state: State::BA, + }, + Municipio { + ibge_code: 2914406, + name: "Iraquara", + state: State::BA, + }, + Municipio { + ibge_code: 2914505, + name: "Irará", + state: State::BA, + }, + Municipio { + ibge_code: 2914604, + name: "Irecê", + state: State::BA, + }, + Municipio { + ibge_code: 2914653, + name: "Itabela", + state: State::BA, + }, + Municipio { + ibge_code: 2914703, + name: "Itaberaba", + state: State::BA, + }, + Municipio { + ibge_code: 2914802, + name: "Itabuna", + state: State::BA, + }, + Municipio { + ibge_code: 2914901, + name: "Itacaré", + state: State::BA, + }, + Municipio { + ibge_code: 2915007, + name: "Itaeté", + state: State::BA, + }, + Municipio { + ibge_code: 2915106, + name: "Itagi", + state: State::BA, + }, + Municipio { + ibge_code: 2915205, + name: "Itagibá", + state: State::BA, + }, + Municipio { + ibge_code: 2915304, + name: "Itagimirim", + state: State::BA, + }, + Municipio { + ibge_code: 2915353, + name: "Itaguaçu da Bahia", + state: State::BA, + }, + Municipio { + ibge_code: 2915403, + name: "Itaju do Colônia", + state: State::BA, + }, + Municipio { + ibge_code: 2915502, + name: "Itajuípe", + state: State::BA, + }, + Municipio { + ibge_code: 2915601, + name: "Itamaraju", + state: State::BA, + }, + Municipio { + ibge_code: 2915700, + name: "Itamari", + state: State::BA, + }, + Municipio { + ibge_code: 2915809, + name: "Itambé", + state: State::BA, + }, + Municipio { + ibge_code: 2915908, + name: "Itanagra", + state: State::BA, + }, + Municipio { + ibge_code: 2916005, + name: "Itanhém", + state: State::BA, + }, + Municipio { + ibge_code: 2916104, + name: "Itaparica", + state: State::BA, + }, + Municipio { + ibge_code: 2916302, + name: "Itapebi", + state: State::BA, + }, + Municipio { + ibge_code: 2916401, + name: "Itapetinga", + state: State::BA, + }, + Municipio { + ibge_code: 2916500, + name: "Itapicuru", + state: State::BA, + }, + Municipio { + ibge_code: 2916609, + name: "Itapitanga", + state: State::BA, + }, + Municipio { + ibge_code: 2916203, + name: "Itapé", + state: State::BA, + }, + Municipio { + ibge_code: 2916708, + name: "Itaquara", + state: State::BA, + }, + Municipio { + ibge_code: 2916807, + name: "Itarantim", + state: State::BA, + }, + Municipio { + ibge_code: 2916856, + name: "Itatim", + state: State::BA, + }, + Municipio { + ibge_code: 2916906, + name: "Itiruçu", + state: State::BA, + }, + Municipio { + ibge_code: 2917003, + name: "Itiúba", + state: State::BA, + }, + Municipio { + ibge_code: 2917102, + name: "Itororó", + state: State::BA, + }, + Municipio { + ibge_code: 2917201, + name: "Ituaçu", + state: State::BA, + }, + Municipio { + ibge_code: 2917300, + name: "Ituberá", + state: State::BA, + }, + Municipio { + ibge_code: 2917334, + name: "Iuiu", + state: State::BA, + }, + Municipio { + ibge_code: 2917359, + name: "Jaborandi", + state: State::BA, + }, + Municipio { + ibge_code: 2917409, + name: "Jacaraci", + state: State::BA, + }, + Municipio { + ibge_code: 2917508, + name: "Jacobina", + state: State::BA, + }, + Municipio { + ibge_code: 2917607, + name: "Jaguaquara", + state: State::BA, + }, + Municipio { + ibge_code: 2917706, + name: "Jaguarari", + state: State::BA, + }, + Municipio { + ibge_code: 2917805, + name: "Jaguaripe", + state: State::BA, + }, + Municipio { + ibge_code: 2917904, + name: "Jandaíra", + state: State::BA, + }, + Municipio { + ibge_code: 2918001, + name: "Jequié", + state: State::BA, + }, + Municipio { + ibge_code: 2918100, + name: "Jeremoabo", + state: State::BA, + }, + Municipio { + ibge_code: 2918209, + name: "Jiquiriçá", + state: State::BA, + }, + Municipio { + ibge_code: 2918308, + name: "Jitaúna", + state: State::BA, + }, + Municipio { + ibge_code: 2918357, + name: "João Dourado", + state: State::BA, + }, + Municipio { + ibge_code: 2918407, + name: "Juazeiro", + state: State::BA, + }, + Municipio { + ibge_code: 2918456, + name: "Jucuruçu", + state: State::BA, + }, + Municipio { + ibge_code: 2918506, + name: "Jussara", + state: State::BA, + }, + Municipio { + ibge_code: 2918555, + name: "Jussari", + state: State::BA, + }, + Municipio { + ibge_code: 2918605, + name: "Jussiape", + state: State::BA, + }, + Municipio { + ibge_code: 2918704, + name: "Lafaiete Coutinho", + state: State::BA, + }, + Municipio { + ibge_code: 2918753, + name: "Lagoa Real", + state: State::BA, + }, + Municipio { + ibge_code: 2918803, + name: "Laje", + state: State::BA, + }, + Municipio { + ibge_code: 2919009, + name: "Lajedinho", + state: State::BA, + }, + Municipio { + ibge_code: 2919058, + name: "Lajedo do Tabocal", + state: State::BA, + }, + Municipio { + ibge_code: 2918902, + name: "Lajedão", + state: State::BA, + }, + Municipio { + ibge_code: 2919108, + name: "Lamarão", + state: State::BA, + }, + Municipio { + ibge_code: 2919157, + name: "Lapão", + state: State::BA, + }, + Municipio { + ibge_code: 2919207, + name: "Lauro de Freitas", + state: State::BA, + }, + Municipio { + ibge_code: 2919306, + name: "Lençóis", + state: State::BA, + }, + Municipio { + ibge_code: 2919405, + name: "Licínio de Almeida", + state: State::BA, + }, + Municipio { + ibge_code: 2919504, + name: "Livramento de Nossa Senhora", + state: State::BA, + }, + Municipio { + ibge_code: 2919553, + name: "Luís Eduardo Magalhães", + state: State::BA, + }, + Municipio { + ibge_code: 2919603, + name: "Macajuba", + state: State::BA, + }, + Municipio { + ibge_code: 2919702, + name: "Macarani", + state: State::BA, + }, + Municipio { + ibge_code: 2919801, + name: "Macaúbas", + state: State::BA, + }, + Municipio { + ibge_code: 2919900, + name: "Macururé", + state: State::BA, + }, + Municipio { + ibge_code: 2919926, + name: "Madre de Deus", + state: State::BA, + }, + Municipio { + ibge_code: 2919959, + name: "Maetinga", + state: State::BA, + }, + Municipio { + ibge_code: 2920007, + name: "Maiquinique", + state: State::BA, + }, + Municipio { + ibge_code: 2920106, + name: "Mairi", + state: State::BA, + }, + Municipio { + ibge_code: 2920205, + name: "Malhada", + state: State::BA, + }, + Municipio { + ibge_code: 2920304, + name: "Malhada de Pedras", + state: State::BA, + }, + Municipio { + ibge_code: 2920403, + name: "Manoel Vitorino", + state: State::BA, + }, + Municipio { + ibge_code: 2920452, + name: "Mansidão", + state: State::BA, + }, + Municipio { + ibge_code: 2920502, + name: "Maracás", + state: State::BA, + }, + Municipio { + ibge_code: 2920601, + name: "Maragogipe", + state: State::BA, + }, + Municipio { + ibge_code: 2920700, + name: "Maraú", + state: State::BA, + }, + Municipio { + ibge_code: 2920809, + name: "Marcionílio Souza", + state: State::BA, + }, + Municipio { + ibge_code: 2920908, + name: "Mascote", + state: State::BA, + }, + Municipio { + ibge_code: 2921005, + name: "Mata de São João", + state: State::BA, + }, + Municipio { + ibge_code: 2921054, + name: "Matina", + state: State::BA, + }, + Municipio { + ibge_code: 2921104, + name: "Medeiros Neto", + state: State::BA, + }, + Municipio { + ibge_code: 2921203, + name: "Miguel Calmon", + state: State::BA, + }, + Municipio { + ibge_code: 2921302, + name: "Milagres", + state: State::BA, + }, + Municipio { + ibge_code: 2921401, + name: "Mirangaba", + state: State::BA, + }, + Municipio { + ibge_code: 2921450, + name: "Mirante", + state: State::BA, + }, + Municipio { + ibge_code: 2921500, + name: "Monte Santo", + state: State::BA, + }, + Municipio { + ibge_code: 2921609, + name: "Morpará", + state: State::BA, + }, + Municipio { + ibge_code: 2921708, + name: "Morro do Chapéu", + state: State::BA, + }, + Municipio { + ibge_code: 2921807, + name: "Mortugaba", + state: State::BA, + }, + Municipio { + ibge_code: 2921906, + name: "Mucugê", + state: State::BA, + }, + Municipio { + ibge_code: 2922003, + name: "Mucuri", + state: State::BA, + }, + Municipio { + ibge_code: 2922052, + name: "Mulungu do Morro", + state: State::BA, + }, + Municipio { + ibge_code: 2922102, + name: "Mundo Novo", + state: State::BA, + }, + Municipio { + ibge_code: 2922201, + name: "Muniz Ferreira", + state: State::BA, + }, + Municipio { + ibge_code: 2922250, + name: "Muquém do São Francisco", + state: State::BA, + }, + Municipio { + ibge_code: 2922300, + name: "Muritiba", + state: State::BA, + }, + Municipio { + ibge_code: 2922409, + name: "Mutuípe", + state: State::BA, + }, + Municipio { + ibge_code: 2922508, + name: "Nazaré", + state: State::BA, + }, + Municipio { + ibge_code: 2922607, + name: "Nilo Peçanha", + state: State::BA, + }, + Municipio { + ibge_code: 2922656, + name: "Nordestina", + state: State::BA, + }, + Municipio { + ibge_code: 2922706, + name: "Nova Canaã", + state: State::BA, + }, + Municipio { + ibge_code: 2922730, + name: "Nova Fátima", + state: State::BA, + }, + Municipio { + ibge_code: 2922755, + name: "Nova Ibiá", + state: State::BA, + }, + Municipio { + ibge_code: 2922805, + name: "Nova Itarana", + state: State::BA, + }, + Municipio { + ibge_code: 2922854, + name: "Nova Redenção", + state: State::BA, + }, + Municipio { + ibge_code: 2922904, + name: "Nova Soure", + state: State::BA, + }, + Municipio { + ibge_code: 2923001, + name: "Nova Viçosa", + state: State::BA, + }, + Municipio { + ibge_code: 2923035, + name: "Novo Horizonte", + state: State::BA, + }, + Municipio { + ibge_code: 2923050, + name: "Novo Triunfo", + state: State::BA, + }, + Municipio { + ibge_code: 2923100, + name: "Olindina", + state: State::BA, + }, + Municipio { + ibge_code: 2923209, + name: "Oliveira dos Brejinhos", + state: State::BA, + }, + Municipio { + ibge_code: 2923308, + name: "Ouriçangas", + state: State::BA, + }, + Municipio { + ibge_code: 2923357, + name: "Ourolândia", + state: State::BA, + }, + Municipio { + ibge_code: 2923407, + name: "Palmas de Monte Alto", + state: State::BA, + }, + Municipio { + ibge_code: 2923506, + name: "Palmeiras", + state: State::BA, + }, + Municipio { + ibge_code: 2923605, + name: "Paramirim", + state: State::BA, + }, + Municipio { + ibge_code: 2923704, + name: "Paratinga", + state: State::BA, + }, + Municipio { + ibge_code: 2923803, + name: "Paripiranga", + state: State::BA, + }, + Municipio { + ibge_code: 2923902, + name: "Pau Brasil", + state: State::BA, + }, + Municipio { + ibge_code: 2924009, + name: "Paulo Afonso", + state: State::BA, + }, + Municipio { + ibge_code: 2924207, + name: "Pedro Alexandre", + state: State::BA, + }, + Municipio { + ibge_code: 2924108, + name: "Pedrão", + state: State::BA, + }, + Municipio { + ibge_code: 2924306, + name: "Piatã", + state: State::BA, + }, + Municipio { + ibge_code: 2924405, + name: "Pilão Arcado", + state: State::BA, + }, + Municipio { + ibge_code: 2924504, + name: "Pindaí", + state: State::BA, + }, + Municipio { + ibge_code: 2924603, + name: "Pindobaçu", + state: State::BA, + }, + Municipio { + ibge_code: 2924652, + name: "Pintadas", + state: State::BA, + }, + Municipio { + ibge_code: 2924678, + name: "Piraí do Norte", + state: State::BA, + }, + Municipio { + ibge_code: 2924702, + name: "Piripá", + state: State::BA, + }, + Municipio { + ibge_code: 2924801, + name: "Piritiba", + state: State::BA, + }, + Municipio { + ibge_code: 2924900, + name: "Planaltino", + state: State::BA, + }, + Municipio { + ibge_code: 2925006, + name: "Planalto", + state: State::BA, + }, + Municipio { + ibge_code: 2925204, + name: "Pojuca", + state: State::BA, + }, + Municipio { + ibge_code: 2925253, + name: "Ponto Novo", + state: State::BA, + }, + Municipio { + ibge_code: 2925303, + name: "Porto Seguro", + state: State::BA, + }, + Municipio { + ibge_code: 2925402, + name: "Potiraguá", + state: State::BA, + }, + Municipio { + ibge_code: 2925105, + name: "Poções", + state: State::BA, + }, + Municipio { + ibge_code: 2925501, + name: "Prado", + state: State::BA, + }, + Municipio { + ibge_code: 2925600, + name: "Presidente Dutra", + state: State::BA, + }, + Municipio { + ibge_code: 2925709, + name: "Presidente Jânio Quadros", + state: State::BA, + }, + Municipio { + ibge_code: 2925758, + name: "Presidente Tancredo Neves", + state: State::BA, + }, + Municipio { + ibge_code: 2924058, + name: "Pé de Serra", + state: State::BA, + }, + Municipio { + ibge_code: 2925808, + name: "Queimadas", + state: State::BA, + }, + Municipio { + ibge_code: 2925907, + name: "Quijingue", + state: State::BA, + }, + Municipio { + ibge_code: 2925931, + name: "Quixabeira", + state: State::BA, + }, + Municipio { + ibge_code: 2925956, + name: "Rafael Jambeiro", + state: State::BA, + }, + Municipio { + ibge_code: 2926004, + name: "Remanso", + state: State::BA, + }, + Municipio { + ibge_code: 2926103, + name: "Retirolândia", + state: State::BA, + }, + Municipio { + ibge_code: 2926400, + name: "Riacho de Santana", + state: State::BA, + }, + Municipio { + ibge_code: 2926202, + name: "Riachão das Neves", + state: State::BA, + }, + Municipio { + ibge_code: 2926301, + name: "Riachão do Jacuípe", + state: State::BA, + }, + Municipio { + ibge_code: 2926509, + name: "Ribeira do Amparo", + state: State::BA, + }, + Municipio { + ibge_code: 2926608, + name: "Ribeira do Pombal", + state: State::BA, + }, + Municipio { + ibge_code: 2926657, + name: "Ribeirão do Largo", + state: State::BA, + }, + Municipio { + ibge_code: 2927002, + name: "Rio Real", + state: State::BA, + }, + Municipio { + ibge_code: 2926707, + name: "Rio de Contas", + state: State::BA, + }, + Municipio { + ibge_code: 2926806, + name: "Rio do Antônio", + state: State::BA, + }, + Municipio { + ibge_code: 2926905, + name: "Rio do Pires", + state: State::BA, + }, + Municipio { + ibge_code: 2927101, + name: "Rodelas", + state: State::BA, + }, + Municipio { + ibge_code: 2927200, + name: "Ruy Barbosa", + state: State::BA, + }, + Municipio { + ibge_code: 2927309, + name: "Salinas da Margarida", + state: State::BA, + }, + Municipio { + ibge_code: 2927408, + name: "Salvador", + state: State::BA, + }, + Municipio { + ibge_code: 2927606, + name: "Santa Brígida", + state: State::BA, + }, + Municipio { + ibge_code: 2927507, + name: "Santa Bárbara", + state: State::BA, + }, + Municipio { + ibge_code: 2927705, + name: "Santa Cruz Cabrália", + state: State::BA, + }, + Municipio { + ibge_code: 2927804, + name: "Santa Cruz da Vitória", + state: State::BA, + }, + Municipio { + ibge_code: 2927903, + name: "Santa Inês", + state: State::BA, + }, + Municipio { + ibge_code: 2928059, + name: "Santa Luzia", + state: State::BA, + }, + Municipio { + ibge_code: 2928109, + name: "Santa Maria da Vitória", + state: State::BA, + }, + Municipio { + ibge_code: 2928406, + name: "Santa Rita de Cássia", + state: State::BA, + }, + Municipio { + ibge_code: 2928505, + name: "Santa Terezinha", + state: State::BA, + }, + Municipio { + ibge_code: 2928000, + name: "Santaluz", + state: State::BA, + }, + Municipio { + ibge_code: 2928208, + name: "Santana", + state: State::BA, + }, + Municipio { + ibge_code: 2928307, + name: "Santanópolis", + state: State::BA, + }, + Municipio { + ibge_code: 2928604, + name: "Santo Amaro", + state: State::BA, + }, + Municipio { + ibge_code: 2928703, + name: "Santo Antônio de Jesus", + state: State::BA, + }, + Municipio { + ibge_code: 2928802, + name: "Santo Estêvão", + state: State::BA, + }, + Municipio { + ibge_code: 2929602, + name: "Sapeaçu", + state: State::BA, + }, + Municipio { + ibge_code: 2929750, + name: "Saubara", + state: State::BA, + }, + Municipio { + ibge_code: 2929800, + name: "Saúde", + state: State::BA, + }, + Municipio { + ibge_code: 2929909, + name: "Seabra", + state: State::BA, + }, + Municipio { + ibge_code: 2930006, + name: "Sebastião Laranjeiras", + state: State::BA, + }, + Municipio { + ibge_code: 2930105, + name: "Senhor do Bonfim", + state: State::BA, + }, + Municipio { + ibge_code: 2930204, + name: "Sento Sé", + state: State::BA, + }, + Municipio { + ibge_code: 2930303, + name: "Serra Dourada", + state: State::BA, + }, + Municipio { + ibge_code: 2930402, + name: "Serra Preta", + state: State::BA, + }, + Municipio { + ibge_code: 2930154, + name: "Serra do Ramalho", + state: State::BA, + }, + Municipio { + ibge_code: 2930501, + name: "Serrinha", + state: State::BA, + }, + Municipio { + ibge_code: 2930600, + name: "Serrolândia", + state: State::BA, + }, + Municipio { + ibge_code: 2930709, + name: "Simões Filho", + state: State::BA, + }, + Municipio { + ibge_code: 2930774, + name: "Sobradinho", + state: State::BA, + }, + Municipio { + ibge_code: 2930808, + name: "Souto Soares", + state: State::BA, + }, + Municipio { + ibge_code: 2929701, + name: "Sátiro Dias", + state: State::BA, + }, + Municipio { + ibge_code: 2928901, + name: "São Desidério", + state: State::BA, + }, + Municipio { + ibge_code: 2928950, + name: "São Domingos", + state: State::BA, + }, + Municipio { + ibge_code: 2929107, + name: "São Felipe", + state: State::BA, + }, + Municipio { + ibge_code: 2929206, + name: "São Francisco do Conde", + state: State::BA, + }, + Municipio { + ibge_code: 2929008, + name: "São Félix", + state: State::BA, + }, + Municipio { + ibge_code: 2929057, + name: "São Félix do Coribe", + state: State::BA, + }, + Municipio { + ibge_code: 2929255, + name: "São Gabriel", + state: State::BA, + }, + Municipio { + ibge_code: 2929305, + name: "São Gonçalo dos Campos", + state: State::BA, + }, + Municipio { + ibge_code: 2929354, + name: "São José da Vitória", + state: State::BA, + }, + Municipio { + ibge_code: 2929370, + name: "São José do Jacuípe", + state: State::BA, + }, + Municipio { + ibge_code: 2929404, + name: "São Miguel das Matas", + state: State::BA, + }, + Municipio { + ibge_code: 2929503, + name: "São Sebastião do Passé", + state: State::BA, + }, + Municipio { + ibge_code: 2930758, + name: "Sítio do Mato", + state: State::BA, + }, + Municipio { + ibge_code: 2930766, + name: "Sítio do Quinto", + state: State::BA, + }, + Municipio { + ibge_code: 2930907, + name: "Tabocas do Brejo Velho", + state: State::BA, + }, + Municipio { + ibge_code: 2931004, + name: "Tanhaçu", + state: State::BA, + }, + Municipio { + ibge_code: 2931053, + name: "Tanque Novo", + state: State::BA, + }, + Municipio { + ibge_code: 2931103, + name: "Tanquinho", + state: State::BA, + }, + Municipio { + ibge_code: 2931202, + name: "Taperoá", + state: State::BA, + }, + Municipio { + ibge_code: 2931301, + name: "Tapiramutá", + state: State::BA, + }, + Municipio { + ibge_code: 2931350, + name: "Teixeira de Freitas", + state: State::BA, + }, + Municipio { + ibge_code: 2931400, + name: "Teodoro Sampaio", + state: State::BA, + }, + Municipio { + ibge_code: 2931509, + name: "Teofilândia", + state: State::BA, + }, + Municipio { + ibge_code: 2931608, + name: "Teolândia", + state: State::BA, + }, + Municipio { + ibge_code: 2931707, + name: "Terra Nova", + state: State::BA, + }, + Municipio { + ibge_code: 2931806, + name: "Tremedal", + state: State::BA, + }, + Municipio { + ibge_code: 2931905, + name: "Tucano", + state: State::BA, + }, + Municipio { + ibge_code: 2932002, + name: "Uauá", + state: State::BA, + }, + Municipio { + ibge_code: 2932200, + name: "Ubaitaba", + state: State::BA, + }, + Municipio { + ibge_code: 2932309, + name: "Ubatã", + state: State::BA, + }, + Municipio { + ibge_code: 2932101, + name: "Ubaíra", + state: State::BA, + }, + Municipio { + ibge_code: 2932408, + name: "Uibaí", + state: State::BA, + }, + Municipio { + ibge_code: 2932457, + name: "Umburanas", + state: State::BA, + }, + Municipio { + ibge_code: 2932507, + name: "Una", + state: State::BA, + }, + Municipio { + ibge_code: 2932606, + name: "Urandi", + state: State::BA, + }, + Municipio { + ibge_code: 2932705, + name: "Uruçuca", + state: State::BA, + }, + Municipio { + ibge_code: 2932804, + name: "Utinga", + state: State::BA, + }, + Municipio { + ibge_code: 2933000, + name: "Valente", + state: State::BA, + }, + Municipio { + ibge_code: 2932903, + name: "Valença", + state: State::BA, + }, + Municipio { + ibge_code: 2933174, + name: "Varzedo", + state: State::BA, + }, + Municipio { + ibge_code: 2933208, + name: "Vera Cruz", + state: State::BA, + }, + Municipio { + ibge_code: 2933257, + name: "Vereda", + state: State::BA, + }, + Municipio { + ibge_code: 2933307, + name: "Vitória da Conquista", + state: State::BA, + }, + Municipio { + ibge_code: 2933158, + name: "Várzea Nova", + state: State::BA, + }, + Municipio { + ibge_code: 2933059, + name: "Várzea da Roça", + state: State::BA, + }, + Municipio { + ibge_code: 2933109, + name: "Várzea do Poço", + state: State::BA, + }, + Municipio { + ibge_code: 2933406, + name: "Wagner", + state: State::BA, + }, + Municipio { + ibge_code: 2933455, + name: "Wanderley", + state: State::BA, + }, + Municipio { + ibge_code: 2933505, + name: "Wenceslau Guimarães", + state: State::BA, + }, + Municipio { + ibge_code: 2933604, + name: "Xique-Xique", + state: State::BA, + }, + Municipio { + ibge_code: 2900405, + name: "Água Fria", + state: State::BA, + }, + Municipio { + ibge_code: 2900504, + name: "Érico Cardoso", + state: State::BA, + }, + Municipio { + ibge_code: 2300101, + name: "Abaiara", + state: State::CE, + }, + Municipio { + ibge_code: 2300150, + name: "Acarape", + state: State::CE, + }, + Municipio { + ibge_code: 2300200, + name: "Acaraú", + state: State::CE, + }, + Municipio { + ibge_code: 2300309, + name: "Acopiara", + state: State::CE, + }, + Municipio { + ibge_code: 2300408, + name: "Aiuaba", + state: State::CE, + }, + Municipio { + ibge_code: 2300507, + name: "Alcântaras", + state: State::CE, + }, + Municipio { + ibge_code: 2300606, + name: "Altaneira", + state: State::CE, + }, + Municipio { + ibge_code: 2300705, + name: "Alto Santo", + state: State::CE, + }, + Municipio { + ibge_code: 2300754, + name: "Amontada", + state: State::CE, + }, + Municipio { + ibge_code: 2300804, + name: "Antonina do Norte", + state: State::CE, + }, + Municipio { + ibge_code: 2300903, + name: "Apuiarés", + state: State::CE, + }, + Municipio { + ibge_code: 2301000, + name: "Aquiraz", + state: State::CE, + }, + Municipio { + ibge_code: 2301109, + name: "Aracati", + state: State::CE, + }, + Municipio { + ibge_code: 2301208, + name: "Aracoiaba", + state: State::CE, + }, + Municipio { + ibge_code: 2301257, + name: "Ararendá", + state: State::CE, + }, + Municipio { + ibge_code: 2301307, + name: "Araripe", + state: State::CE, + }, + Municipio { + ibge_code: 2301406, + name: "Aratuba", + state: State::CE, + }, + Municipio { + ibge_code: 2301505, + name: "Arneiroz", + state: State::CE, + }, + Municipio { + ibge_code: 2301604, + name: "Assaré", + state: State::CE, + }, + Municipio { + ibge_code: 2301703, + name: "Aurora", + state: State::CE, + }, + Municipio { + ibge_code: 2301802, + name: "Baixio", + state: State::CE, + }, + Municipio { + ibge_code: 2301851, + name: "Banabuiú", + state: State::CE, + }, + Municipio { + ibge_code: 2301901, + name: "Barbalha", + state: State::CE, + }, + Municipio { + ibge_code: 2301950, + name: "Barreira", + state: State::CE, + }, + Municipio { + ibge_code: 2302008, + name: "Barro", + state: State::CE, + }, + Municipio { + ibge_code: 2302057, + name: "Barroquinha", + state: State::CE, + }, + Municipio { + ibge_code: 2302107, + name: "Baturité", + state: State::CE, + }, + Municipio { + ibge_code: 2302206, + name: "Beberibe", + state: State::CE, + }, + Municipio { + ibge_code: 2302305, + name: "Bela Cruz", + state: State::CE, + }, + Municipio { + ibge_code: 2302404, + name: "Boa Viagem", + state: State::CE, + }, + Municipio { + ibge_code: 2302503, + name: "Brejo Santo", + state: State::CE, + }, + Municipio { + ibge_code: 2302602, + name: "Camocim", + state: State::CE, + }, + Municipio { + ibge_code: 2302701, + name: "Campos Sales", + state: State::CE, + }, + Municipio { + ibge_code: 2302800, + name: "Canindé", + state: State::CE, + }, + Municipio { + ibge_code: 2302909, + name: "Capistrano", + state: State::CE, + }, + Municipio { + ibge_code: 2303006, + name: "Caridade", + state: State::CE, + }, + Municipio { + ibge_code: 2303204, + name: "Caririaçu", + state: State::CE, + }, + Municipio { + ibge_code: 2303105, + name: "Cariré", + state: State::CE, + }, + Municipio { + ibge_code: 2303303, + name: "Cariús", + state: State::CE, + }, + Municipio { + ibge_code: 2303402, + name: "Carnaubal", + state: State::CE, + }, + Municipio { + ibge_code: 2303501, + name: "Cascavel", + state: State::CE, + }, + Municipio { + ibge_code: 2303600, + name: "Catarina", + state: State::CE, + }, + Municipio { + ibge_code: 2303659, + name: "Catunda", + state: State::CE, + }, + Municipio { + ibge_code: 2303709, + name: "Caucaia", + state: State::CE, + }, + Municipio { + ibge_code: 2303808, + name: "Cedro", + state: State::CE, + }, + Municipio { + ibge_code: 2303907, + name: "Chaval", + state: State::CE, + }, + Municipio { + ibge_code: 2303956, + name: "Chorozinho", + state: State::CE, + }, + Municipio { + ibge_code: 2303931, + name: "Choró", + state: State::CE, + }, + Municipio { + ibge_code: 2304004, + name: "Coreaú", + state: State::CE, + }, + Municipio { + ibge_code: 2304103, + name: "Crateús", + state: State::CE, + }, + Municipio { + ibge_code: 2304202, + name: "Crato", + state: State::CE, + }, + Municipio { + ibge_code: 2304236, + name: "Croatá", + state: State::CE, + }, + Municipio { + ibge_code: 2304251, + name: "Cruz", + state: State::CE, + }, + Municipio { + ibge_code: 2304269, + name: "Deputado Irapuan Pinheiro", + state: State::CE, + }, + Municipio { + ibge_code: 2304277, + name: "Ereré", + state: State::CE, + }, + Municipio { + ibge_code: 2304285, + name: "Eusébio", + state: State::CE, + }, + Municipio { + ibge_code: 2304301, + name: "Farias Brito", + state: State::CE, + }, + Municipio { + ibge_code: 2304350, + name: "Forquilha", + state: State::CE, + }, + Municipio { + ibge_code: 2304400, + name: "Fortaleza", + state: State::CE, + }, + Municipio { + ibge_code: 2304459, + name: "Fortim", + state: State::CE, + }, + Municipio { + ibge_code: 2304509, + name: "Frecheirinha", + state: State::CE, + }, + Municipio { + ibge_code: 2304608, + name: "General Sampaio", + state: State::CE, + }, + Municipio { + ibge_code: 2304707, + name: "Granja", + state: State::CE, + }, + Municipio { + ibge_code: 2304806, + name: "Granjeiro", + state: State::CE, + }, + Municipio { + ibge_code: 2304657, + name: "Graça", + state: State::CE, + }, + Municipio { + ibge_code: 2304905, + name: "Groaíras", + state: State::CE, + }, + Municipio { + ibge_code: 2304954, + name: "Guaiúba", + state: State::CE, + }, + Municipio { + ibge_code: 2305001, + name: "Guaraciaba do Norte", + state: State::CE, + }, + Municipio { + ibge_code: 2305100, + name: "Guaramiranga", + state: State::CE, + }, + Municipio { + ibge_code: 2305209, + name: "Hidrolândia", + state: State::CE, + }, + Municipio { + ibge_code: 2305233, + name: "Horizonte", + state: State::CE, + }, + Municipio { + ibge_code: 2305266, + name: "Ibaretama", + state: State::CE, + }, + Municipio { + ibge_code: 2305308, + name: "Ibiapina", + state: State::CE, + }, + Municipio { + ibge_code: 2305332, + name: "Ibicuitinga", + state: State::CE, + }, + Municipio { + ibge_code: 2305357, + name: "Icapuí", + state: State::CE, + }, + Municipio { + ibge_code: 2305407, + name: "Icó", + state: State::CE, + }, + Municipio { + ibge_code: 2305506, + name: "Iguatu", + state: State::CE, + }, + Municipio { + ibge_code: 2305605, + name: "Independência", + state: State::CE, + }, + Municipio { + ibge_code: 2305654, + name: "Ipaporanga", + state: State::CE, + }, + Municipio { + ibge_code: 2305704, + name: "Ipaumirim", + state: State::CE, + }, + Municipio { + ibge_code: 2305803, + name: "Ipu", + state: State::CE, + }, + Municipio { + ibge_code: 2305902, + name: "Ipueiras", + state: State::CE, + }, + Municipio { + ibge_code: 2306009, + name: "Iracema", + state: State::CE, + }, + Municipio { + ibge_code: 2306108, + name: "Irauçuba", + state: State::CE, + }, + Municipio { + ibge_code: 2306256, + name: "Itaitinga", + state: State::CE, + }, + Municipio { + ibge_code: 2306207, + name: "Itaiçaba", + state: State::CE, + }, + Municipio { + ibge_code: 2306306, + name: "Itapajé", + state: State::CE, + }, + Municipio { + ibge_code: 2306405, + name: "Itapipoca", + state: State::CE, + }, + Municipio { + ibge_code: 2306504, + name: "Itapiúna", + state: State::CE, + }, + Municipio { + ibge_code: 2306553, + name: "Itarema", + state: State::CE, + }, + Municipio { + ibge_code: 2306603, + name: "Itatira", + state: State::CE, + }, + Municipio { + ibge_code: 2306702, + name: "Jaguaretama", + state: State::CE, + }, + Municipio { + ibge_code: 2306801, + name: "Jaguaribara", + state: State::CE, + }, + Municipio { + ibge_code: 2306900, + name: "Jaguaribe", + state: State::CE, + }, + Municipio { + ibge_code: 2307007, + name: "Jaguaruana", + state: State::CE, + }, + Municipio { + ibge_code: 2307106, + name: "Jardim", + state: State::CE, + }, + Municipio { + ibge_code: 2307205, + name: "Jati", + state: State::CE, + }, + Municipio { + ibge_code: 2307254, + name: "Jijoca de Jericoacoara", + state: State::CE, + }, + Municipio { + ibge_code: 2307304, + name: "Juazeiro do Norte", + state: State::CE, + }, + Municipio { + ibge_code: 2307403, + name: "Jucás", + state: State::CE, + }, + Municipio { + ibge_code: 2307502, + name: "Lavras da Mangabeira", + state: State::CE, + }, + Municipio { + ibge_code: 2307601, + name: "Limoeiro do Norte", + state: State::CE, + }, + Municipio { + ibge_code: 2307635, + name: "Madalena", + state: State::CE, + }, + Municipio { + ibge_code: 2307650, + name: "Maracanaú", + state: State::CE, + }, + Municipio { + ibge_code: 2307700, + name: "Maranguape", + state: State::CE, + }, + Municipio { + ibge_code: 2307809, + name: "Marco", + state: State::CE, + }, + Municipio { + ibge_code: 2307908, + name: "Martinópole", + state: State::CE, + }, + Municipio { + ibge_code: 2308005, + name: "Massapê", + state: State::CE, + }, + Municipio { + ibge_code: 2308104, + name: "Mauriti", + state: State::CE, + }, + Municipio { + ibge_code: 2308203, + name: "Meruoca", + state: State::CE, + }, + Municipio { + ibge_code: 2308302, + name: "Milagres", + state: State::CE, + }, + Municipio { + ibge_code: 2308351, + name: "Milhã", + state: State::CE, + }, + Municipio { + ibge_code: 2308377, + name: "Miraíma", + state: State::CE, + }, + Municipio { + ibge_code: 2308401, + name: "Missão Velha", + state: State::CE, + }, + Municipio { + ibge_code: 2308500, + name: "Mombaça", + state: State::CE, + }, + Municipio { + ibge_code: 2308609, + name: "Monsenhor Tabosa", + state: State::CE, + }, + Municipio { + ibge_code: 2308708, + name: "Morada Nova", + state: State::CE, + }, + Municipio { + ibge_code: 2308807, + name: "Moraújo", + state: State::CE, + }, + Municipio { + ibge_code: 2308906, + name: "Morrinhos", + state: State::CE, + }, + Municipio { + ibge_code: 2309003, + name: "Mucambo", + state: State::CE, + }, + Municipio { + ibge_code: 2309102, + name: "Mulungu", + state: State::CE, + }, + Municipio { + ibge_code: 2309201, + name: "Nova Olinda", + state: State::CE, + }, + Municipio { + ibge_code: 2309300, + name: "Nova Russas", + state: State::CE, + }, + Municipio { + ibge_code: 2309409, + name: "Novo Oriente", + state: State::CE, + }, + Municipio { + ibge_code: 2309458, + name: "Ocara", + state: State::CE, + }, + Municipio { + ibge_code: 2309508, + name: "Orós", + state: State::CE, + }, + Municipio { + ibge_code: 2309607, + name: "Pacajus", + state: State::CE, + }, + Municipio { + ibge_code: 2309706, + name: "Pacatuba", + state: State::CE, + }, + Municipio { + ibge_code: 2309805, + name: "Pacoti", + state: State::CE, + }, + Municipio { + ibge_code: 2309904, + name: "Pacujá", + state: State::CE, + }, + Municipio { + ibge_code: 2310001, + name: "Palhano", + state: State::CE, + }, + Municipio { + ibge_code: 2310100, + name: "Palmácia", + state: State::CE, + }, + Municipio { + ibge_code: 2310209, + name: "Paracuru", + state: State::CE, + }, + Municipio { + ibge_code: 2310258, + name: "Paraipaba", + state: State::CE, + }, + Municipio { + ibge_code: 2310308, + name: "Parambu", + state: State::CE, + }, + Municipio { + ibge_code: 2310407, + name: "Paramoti", + state: State::CE, + }, + Municipio { + ibge_code: 2310506, + name: "Pedra Branca", + state: State::CE, + }, + Municipio { + ibge_code: 2310605, + name: "Penaforte", + state: State::CE, + }, + Municipio { + ibge_code: 2310704, + name: "Pentecoste", + state: State::CE, + }, + Municipio { + ibge_code: 2310803, + name: "Pereiro", + state: State::CE, + }, + Municipio { + ibge_code: 2310852, + name: "Pindoretama", + state: State::CE, + }, + Municipio { + ibge_code: 2310902, + name: "Piquet Carneiro", + state: State::CE, + }, + Municipio { + ibge_code: 2310951, + name: "Pires Ferreira", + state: State::CE, + }, + Municipio { + ibge_code: 2311009, + name: "Poranga", + state: State::CE, + }, + Municipio { + ibge_code: 2311108, + name: "Porteiras", + state: State::CE, + }, + Municipio { + ibge_code: 2311207, + name: "Potengi", + state: State::CE, + }, + Municipio { + ibge_code: 2311231, + name: "Potiretama", + state: State::CE, + }, + Municipio { + ibge_code: 2311264, + name: "Quiterianópolis", + state: State::CE, + }, + Municipio { + ibge_code: 2311306, + name: "Quixadá", + state: State::CE, + }, + Municipio { + ibge_code: 2311355, + name: "Quixelô", + state: State::CE, + }, + Municipio { + ibge_code: 2311405, + name: "Quixeramobim", + state: State::CE, + }, + Municipio { + ibge_code: 2311504, + name: "Quixeré", + state: State::CE, + }, + Municipio { + ibge_code: 2311603, + name: "Redenção", + state: State::CE, + }, + Municipio { + ibge_code: 2311702, + name: "Reriutaba", + state: State::CE, + }, + Municipio { + ibge_code: 2311801, + name: "Russas", + state: State::CE, + }, + Municipio { + ibge_code: 2311900, + name: "Saboeiro", + state: State::CE, + }, + Municipio { + ibge_code: 2311959, + name: "Salitre", + state: State::CE, + }, + Municipio { + ibge_code: 2312205, + name: "Santa Quitéria", + state: State::CE, + }, + Municipio { + ibge_code: 2312007, + name: "Santana do Acaraú", + state: State::CE, + }, + Municipio { + ibge_code: 2312106, + name: "Santana do Cariri", + state: State::CE, + }, + Municipio { + ibge_code: 2312700, + name: "Senador Pompeu", + state: State::CE, + }, + Municipio { + ibge_code: 2312809, + name: "Senador Sá", + state: State::CE, + }, + Municipio { + ibge_code: 2312908, + name: "Sobral", + state: State::CE, + }, + Municipio { + ibge_code: 2313005, + name: "Solonópole", + state: State::CE, + }, + Municipio { + ibge_code: 2312304, + name: "São Benedito", + state: State::CE, + }, + Municipio { + ibge_code: 2312403, + name: "São Gonçalo do Amarante", + state: State::CE, + }, + Municipio { + ibge_code: 2312502, + name: "São João do Jaguaribe", + state: State::CE, + }, + Municipio { + ibge_code: 2312601, + name: "São Luís do Curu", + state: State::CE, + }, + Municipio { + ibge_code: 2313104, + name: "Tabuleiro do Norte", + state: State::CE, + }, + Municipio { + ibge_code: 2313203, + name: "Tamboril", + state: State::CE, + }, + Municipio { + ibge_code: 2313252, + name: "Tarrafas", + state: State::CE, + }, + Municipio { + ibge_code: 2313302, + name: "Tauá", + state: State::CE, + }, + Municipio { + ibge_code: 2313351, + name: "Tejuçuoca", + state: State::CE, + }, + Municipio { + ibge_code: 2313401, + name: "Tianguá", + state: State::CE, + }, + Municipio { + ibge_code: 2313500, + name: "Trairi", + state: State::CE, + }, + Municipio { + ibge_code: 2313559, + name: "Tururu", + state: State::CE, + }, + Municipio { + ibge_code: 2313609, + name: "Ubajara", + state: State::CE, + }, + Municipio { + ibge_code: 2313708, + name: "Umari", + state: State::CE, + }, + Municipio { + ibge_code: 2313757, + name: "Umirim", + state: State::CE, + }, + Municipio { + ibge_code: 2313807, + name: "Uruburetama", + state: State::CE, + }, + Municipio { + ibge_code: 2313906, + name: "Uruoca", + state: State::CE, + }, + Municipio { + ibge_code: 2313955, + name: "Varjota", + state: State::CE, + }, + Municipio { + ibge_code: 2314102, + name: "Viçosa do Ceará", + state: State::CE, + }, + Municipio { + ibge_code: 2314003, + name: "Várzea Alegre", + state: State::CE, + }, + Municipio { + ibge_code: 5300108, + name: "Brasília", + state: State::DF, + }, + Municipio { + ibge_code: 3200102, + name: "Afonso Cláudio", + state: State::ES, + }, + Municipio { + ibge_code: 3200201, + name: "Alegre", + state: State::ES, + }, + Municipio { + ibge_code: 3200300, + name: "Alfredo Chaves", + state: State::ES, + }, + Municipio { + ibge_code: 3200359, + name: "Alto Rio Novo", + state: State::ES, + }, + Municipio { + ibge_code: 3200409, + name: "Anchieta", + state: State::ES, + }, + Municipio { + ibge_code: 3200508, + name: "Apiacá", + state: State::ES, + }, + Municipio { + ibge_code: 3200607, + name: "Aracruz", + state: State::ES, + }, + Municipio { + ibge_code: 3200706, + name: "Atílio Vivácqua", + state: State::ES, + }, + Municipio { + ibge_code: 3200805, + name: "Baixo Guandu", + state: State::ES, + }, + Municipio { + ibge_code: 3200904, + name: "Barra de São Francisco", + state: State::ES, + }, + Municipio { + ibge_code: 3201001, + name: "Boa Esperança", + state: State::ES, + }, + Municipio { + ibge_code: 3201100, + name: "Bom Jesus do Norte", + state: State::ES, + }, + Municipio { + ibge_code: 3201159, + name: "Brejetuba", + state: State::ES, + }, + Municipio { + ibge_code: 3201209, + name: "Cachoeiro de Itapemirim", + state: State::ES, + }, + Municipio { + ibge_code: 3201308, + name: "Cariacica", + state: State::ES, + }, + Municipio { + ibge_code: 3201407, + name: "Castelo", + state: State::ES, + }, + Municipio { + ibge_code: 3201506, + name: "Colatina", + state: State::ES, + }, + Municipio { + ibge_code: 3201605, + name: "Conceição da Barra", + state: State::ES, + }, + Municipio { + ibge_code: 3201704, + name: "Conceição do Castelo", + state: State::ES, + }, + Municipio { + ibge_code: 3201803, + name: "Divino de São Lourenço", + state: State::ES, + }, + Municipio { + ibge_code: 3201902, + name: "Domingos Martins", + state: State::ES, + }, + Municipio { + ibge_code: 3202009, + name: "Dores do Rio Preto", + state: State::ES, + }, + Municipio { + ibge_code: 3202108, + name: "Ecoporanga", + state: State::ES, + }, + Municipio { + ibge_code: 3202207, + name: "Fundão", + state: State::ES, + }, + Municipio { + ibge_code: 3202256, + name: "Governador Lindenberg", + state: State::ES, + }, + Municipio { + ibge_code: 3202405, + name: "Guarapari", + state: State::ES, + }, + Municipio { + ibge_code: 3202306, + name: "Guaçuí", + state: State::ES, + }, + Municipio { + ibge_code: 3202454, + name: "Ibatiba", + state: State::ES, + }, + Municipio { + ibge_code: 3202504, + name: "Ibiraçu", + state: State::ES, + }, + Municipio { + ibge_code: 3202553, + name: "Ibitirama", + state: State::ES, + }, + Municipio { + ibge_code: 3202603, + name: "Iconha", + state: State::ES, + }, + Municipio { + ibge_code: 3202652, + name: "Irupi", + state: State::ES, + }, + Municipio { + ibge_code: 3202702, + name: "Itaguaçu", + state: State::ES, + }, + Municipio { + ibge_code: 3202801, + name: "Itapemirim", + state: State::ES, + }, + Municipio { + ibge_code: 3202900, + name: "Itarana", + state: State::ES, + }, + Municipio { + ibge_code: 3203007, + name: "Iúna", + state: State::ES, + }, + Municipio { + ibge_code: 3203056, + name: "Jaguaré", + state: State::ES, + }, + Municipio { + ibge_code: 3203106, + name: "Jerônimo Monteiro", + state: State::ES, + }, + Municipio { + ibge_code: 3203130, + name: "João Neiva", + state: State::ES, + }, + Municipio { + ibge_code: 3203163, + name: "Laranja da Terra", + state: State::ES, + }, + Municipio { + ibge_code: 3203205, + name: "Linhares", + state: State::ES, + }, + Municipio { + ibge_code: 3203304, + name: "Mantenópolis", + state: State::ES, + }, + Municipio { + ibge_code: 3203320, + name: "Marataízes", + state: State::ES, + }, + Municipio { + ibge_code: 3203346, + name: "Marechal Floriano", + state: State::ES, + }, + Municipio { + ibge_code: 3203353, + name: "Marilândia", + state: State::ES, + }, + Municipio { + ibge_code: 3203403, + name: "Mimoso do Sul", + state: State::ES, + }, + Municipio { + ibge_code: 3203502, + name: "Montanha", + state: State::ES, + }, + Municipio { + ibge_code: 3203601, + name: "Mucurici", + state: State::ES, + }, + Municipio { + ibge_code: 3203700, + name: "Muniz Freire", + state: State::ES, + }, + Municipio { + ibge_code: 3203809, + name: "Muqui", + state: State::ES, + }, + Municipio { + ibge_code: 3203908, + name: "Nova Venécia", + state: State::ES, + }, + Municipio { + ibge_code: 3204005, + name: "Pancas", + state: State::ES, + }, + Municipio { + ibge_code: 3204054, + name: "Pedro Canário", + state: State::ES, + }, + Municipio { + ibge_code: 3204104, + name: "Pinheiros", + state: State::ES, + }, + Municipio { + ibge_code: 3204203, + name: "Piúma", + state: State::ES, + }, + Municipio { + ibge_code: 3204252, + name: "Ponto Belo", + state: State::ES, + }, + Municipio { + ibge_code: 3204302, + name: "Presidente Kennedy", + state: State::ES, + }, + Municipio { + ibge_code: 3204351, + name: "Rio Bananal", + state: State::ES, + }, + Municipio { + ibge_code: 3204401, + name: "Rio Novo do Sul", + state: State::ES, + }, + Municipio { + ibge_code: 3204500, + name: "Santa Leopoldina", + state: State::ES, + }, + Municipio { + ibge_code: 3204559, + name: "Santa Maria de Jetibá", + state: State::ES, + }, + Municipio { + ibge_code: 3204609, + name: "Santa Teresa", + state: State::ES, + }, + Municipio { + ibge_code: 3205002, + name: "Serra", + state: State::ES, + }, + Municipio { + ibge_code: 3205010, + name: "Sooretama", + state: State::ES, + }, + Municipio { + ibge_code: 3204658, + name: "São Domingos do Norte", + state: State::ES, + }, + Municipio { + ibge_code: 3204708, + name: "São Gabriel da Palha", + state: State::ES, + }, + Municipio { + ibge_code: 3204807, + name: "São José do Calçado", + state: State::ES, + }, + Municipio { + ibge_code: 3204906, + name: "São Mateus", + state: State::ES, + }, + Municipio { + ibge_code: 3204955, + name: "São Roque do Canaã", + state: State::ES, + }, + Municipio { + ibge_code: 3205036, + name: "Vargem Alta", + state: State::ES, + }, + Municipio { + ibge_code: 3205069, + name: "Venda Nova do Imigrante", + state: State::ES, + }, + Municipio { + ibge_code: 3205101, + name: "Viana", + state: State::ES, + }, + Municipio { + ibge_code: 3205150, + name: "Vila Pavão", + state: State::ES, + }, + Municipio { + ibge_code: 3205176, + name: "Vila Valério", + state: State::ES, + }, + Municipio { + ibge_code: 3205200, + name: "Vila Velha", + state: State::ES, + }, + Municipio { + ibge_code: 3205309, + name: "Vitória", + state: State::ES, + }, + Municipio { + ibge_code: 3200169, + name: "Água Doce do Norte", + state: State::ES, + }, + Municipio { + ibge_code: 3200136, + name: "Águia Branca", + state: State::ES, + }, + Municipio { + ibge_code: 5200050, + name: "Abadia de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5200100, + name: "Abadiânia", + state: State::GO, + }, + Municipio { + ibge_code: 5200134, + name: "Acreúna", + state: State::GO, + }, + Municipio { + ibge_code: 5200159, + name: "Adelândia", + state: State::GO, + }, + Municipio { + ibge_code: 5200308, + name: "Alexânia", + state: State::GO, + }, + Municipio { + ibge_code: 5200506, + name: "Aloândia", + state: State::GO, + }, + Municipio { + ibge_code: 5200555, + name: "Alto Horizonte", + state: State::GO, + }, + Municipio { + ibge_code: 5200605, + name: "Alto Paraíso de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5200803, + name: "Alvorada do Norte", + state: State::GO, + }, + Municipio { + ibge_code: 5200829, + name: "Amaralina", + state: State::GO, + }, + Municipio { + ibge_code: 5200852, + name: "Americano do Brasil", + state: State::GO, + }, + Municipio { + ibge_code: 5200902, + name: "Amorinópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5201207, + name: "Anhanguera", + state: State::GO, + }, + Municipio { + ibge_code: 5201306, + name: "Anicuns", + state: State::GO, + }, + Municipio { + ibge_code: 5201108, + name: "Anápolis", + state: State::GO, + }, + Municipio { + ibge_code: 5201405, + name: "Aparecida de Goiânia", + state: State::GO, + }, + Municipio { + ibge_code: 5201454, + name: "Aparecida do Rio Doce", + state: State::GO, + }, + Municipio { + ibge_code: 5201504, + name: "Aporé", + state: State::GO, + }, + Municipio { + ibge_code: 5201702, + name: "Aragarças", + state: State::GO, + }, + Municipio { + ibge_code: 5201801, + name: "Aragoiânia", + state: State::GO, + }, + Municipio { + ibge_code: 5202155, + name: "Araguapaz", + state: State::GO, + }, + Municipio { + ibge_code: 5201603, + name: "Araçu", + state: State::GO, + }, + Municipio { + ibge_code: 5202353, + name: "Arenópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5202502, + name: "Aruanã", + state: State::GO, + }, + Municipio { + ibge_code: 5202601, + name: "Aurilândia", + state: State::GO, + }, + Municipio { + ibge_code: 5202809, + name: "Avelinópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5203104, + name: "Baliza", + state: State::GO, + }, + Municipio { + ibge_code: 5203203, + name: "Barro Alto", + state: State::GO, + }, + Municipio { + ibge_code: 5203302, + name: "Bela Vista de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5203401, + name: "Bom Jardim de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5203500, + name: "Bom Jesus de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5203559, + name: "Bonfinópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5203575, + name: "Bonópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5203609, + name: "Brazabrantes", + state: State::GO, + }, + Municipio { + ibge_code: 5203807, + name: "Britânia", + state: State::GO, + }, + Municipio { + ibge_code: 5203906, + name: "Buriti Alegre", + state: State::GO, + }, + Municipio { + ibge_code: 5203939, + name: "Buriti de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5203962, + name: "Buritinópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5204003, + name: "Cabeceiras", + state: State::GO, + }, + Municipio { + ibge_code: 5204102, + name: "Cachoeira Alta", + state: State::GO, + }, + Municipio { + ibge_code: 5204250, + name: "Cachoeira Dourada", + state: State::GO, + }, + Municipio { + ibge_code: 5204201, + name: "Cachoeira de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5204409, + name: "Caiapônia", + state: State::GO, + }, + Municipio { + ibge_code: 5204508, + name: "Caldas Novas", + state: State::GO, + }, + Municipio { + ibge_code: 5204557, + name: "Caldazinha", + state: State::GO, + }, + Municipio { + ibge_code: 5204607, + name: "Campestre de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5204656, + name: "Campinaçu", + state: State::GO, + }, + Municipio { + ibge_code: 5204706, + name: "Campinorte", + state: State::GO, + }, + Municipio { + ibge_code: 5204805, + name: "Campo Alegre de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5204854, + name: "Campo Limpo de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5204904, + name: "Campos Belos", + state: State::GO, + }, + Municipio { + ibge_code: 5204953, + name: "Campos Verdes", + state: State::GO, + }, + Municipio { + ibge_code: 5205000, + name: "Carmo do Rio Verde", + state: State::GO, + }, + Municipio { + ibge_code: 5205059, + name: "Castelândia", + state: State::GO, + }, + Municipio { + ibge_code: 5205109, + name: "Catalão", + state: State::GO, + }, + Municipio { + ibge_code: 5205208, + name: "Caturaí", + state: State::GO, + }, + Municipio { + ibge_code: 5205307, + name: "Cavalcante", + state: State::GO, + }, + Municipio { + ibge_code: 5204300, + name: "Caçu", + state: State::GO, + }, + Municipio { + ibge_code: 5205406, + name: "Ceres", + state: State::GO, + }, + Municipio { + ibge_code: 5205455, + name: "Cezarina", + state: State::GO, + }, + Municipio { + ibge_code: 5205471, + name: "Chapadão do Céu", + state: State::GO, + }, + Municipio { + ibge_code: 5205497, + name: "Cidade Ocidental", + state: State::GO, + }, + Municipio { + ibge_code: 5205513, + name: "Cocalzinho de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5205521, + name: "Colinas do Sul", + state: State::GO, + }, + Municipio { + ibge_code: 5205901, + name: "Corumbaíba", + state: State::GO, + }, + Municipio { + ibge_code: 5205802, + name: "Corumbá de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5206206, + name: "Cristalina", + state: State::GO, + }, + Municipio { + ibge_code: 5206305, + name: "Cristianópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5206404, + name: "Crixás", + state: State::GO, + }, + Municipio { + ibge_code: 5206503, + name: "Cromínia", + state: State::GO, + }, + Municipio { + ibge_code: 5206602, + name: "Cumari", + state: State::GO, + }, + Municipio { + ibge_code: 5205703, + name: "Córrego do Ouro", + state: State::GO, + }, + Municipio { + ibge_code: 5206701, + name: "Damianópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5206800, + name: "Damolândia", + state: State::GO, + }, + Municipio { + ibge_code: 5206909, + name: "Davinópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5207105, + name: "Diorama", + state: State::GO, + }, + Municipio { + ibge_code: 5208301, + name: "Divinópolis de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5207253, + name: "Doverlândia", + state: State::GO, + }, + Municipio { + ibge_code: 5207352, + name: "Edealina", + state: State::GO, + }, + Municipio { + ibge_code: 5207402, + name: "Edéia", + state: State::GO, + }, + Municipio { + ibge_code: 5207501, + name: "Estrela do Norte", + state: State::GO, + }, + Municipio { + ibge_code: 5207535, + name: "Faina", + state: State::GO, + }, + Municipio { + ibge_code: 5207600, + name: "Fazenda Nova", + state: State::GO, + }, + Municipio { + ibge_code: 5207808, + name: "Firminópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5207907, + name: "Flores de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5208004, + name: "Formosa", + state: State::GO, + }, + Municipio { + ibge_code: 5208103, + name: "Formoso", + state: State::GO, + }, + Municipio { + ibge_code: 5208152, + name: "Gameleira de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5208509, + name: "Goiandira", + state: State::GO, + }, + Municipio { + ibge_code: 5208806, + name: "Goianira", + state: State::GO, + }, + Municipio { + ibge_code: 5208400, + name: "Goianápolis", + state: State::GO, + }, + Municipio { + ibge_code: 5208608, + name: "Goianésia", + state: State::GO, + }, + Municipio { + ibge_code: 5209101, + name: "Goiatuba", + state: State::GO, + }, + Municipio { + ibge_code: 5208905, + name: "Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5208707, + name: "Goiânia", + state: State::GO, + }, + Municipio { + ibge_code: 5209150, + name: "Gouvelândia", + state: State::GO, + }, + Municipio { + ibge_code: 5209200, + name: "Guapó", + state: State::GO, + }, + Municipio { + ibge_code: 5209408, + name: "Guarani de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5209291, + name: "Guaraíta", + state: State::GO, + }, + Municipio { + ibge_code: 5209457, + name: "Guarinos", + state: State::GO, + }, + Municipio { + ibge_code: 5209606, + name: "Heitoraí", + state: State::GO, + }, + Municipio { + ibge_code: 5209804, + name: "Hidrolina", + state: State::GO, + }, + Municipio { + ibge_code: 5209705, + name: "Hidrolândia", + state: State::GO, + }, + Municipio { + ibge_code: 5209903, + name: "Iaciara", + state: State::GO, + }, + Municipio { + ibge_code: 5209937, + name: "Inaciolândia", + state: State::GO, + }, + Municipio { + ibge_code: 5209952, + name: "Indiara", + state: State::GO, + }, + Municipio { + ibge_code: 5210000, + name: "Inhumas", + state: State::GO, + }, + Municipio { + ibge_code: 5210109, + name: "Ipameri", + state: State::GO, + }, + Municipio { + ibge_code: 5210158, + name: "Ipiranga de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5210208, + name: "Iporá", + state: State::GO, + }, + Municipio { + ibge_code: 5210307, + name: "Israelândia", + state: State::GO, + }, + Municipio { + ibge_code: 5210406, + name: "Itaberaí", + state: State::GO, + }, + Municipio { + ibge_code: 5210562, + name: "Itaguari", + state: State::GO, + }, + Municipio { + ibge_code: 5210604, + name: "Itaguaru", + state: State::GO, + }, + Municipio { + ibge_code: 5210802, + name: "Itajá", + state: State::GO, + }, + Municipio { + ibge_code: 5210901, + name: "Itapaci", + state: State::GO, + }, + Municipio { + ibge_code: 5211008, + name: "Itapirapuã", + state: State::GO, + }, + Municipio { + ibge_code: 5211206, + name: "Itapuranga", + state: State::GO, + }, + Municipio { + ibge_code: 5211305, + name: "Itarumã", + state: State::GO, + }, + Municipio { + ibge_code: 5211404, + name: "Itauçu", + state: State::GO, + }, + Municipio { + ibge_code: 5211503, + name: "Itumbiara", + state: State::GO, + }, + Municipio { + ibge_code: 5211602, + name: "Ivolândia", + state: State::GO, + }, + Municipio { + ibge_code: 5211701, + name: "Jandaia", + state: State::GO, + }, + Municipio { + ibge_code: 5211800, + name: "Jaraguá", + state: State::GO, + }, + Municipio { + ibge_code: 5211909, + name: "Jataí", + state: State::GO, + }, + Municipio { + ibge_code: 5212006, + name: "Jaupaci", + state: State::GO, + }, + Municipio { + ibge_code: 5212055, + name: "Jesúpolis", + state: State::GO, + }, + Municipio { + ibge_code: 5212105, + name: "Joviânia", + state: State::GO, + }, + Municipio { + ibge_code: 5212204, + name: "Jussara", + state: State::GO, + }, + Municipio { + ibge_code: 5212253, + name: "Lagoa Santa", + state: State::GO, + }, + Municipio { + ibge_code: 5212303, + name: "Leopoldo de Bulhões", + state: State::GO, + }, + Municipio { + ibge_code: 5212501, + name: "Luziânia", + state: State::GO, + }, + Municipio { + ibge_code: 5212600, + name: "Mairipotaba", + state: State::GO, + }, + Municipio { + ibge_code: 5212709, + name: "Mambaí", + state: State::GO, + }, + Municipio { + ibge_code: 5212808, + name: "Mara Rosa", + state: State::GO, + }, + Municipio { + ibge_code: 5212907, + name: "Marzagão", + state: State::GO, + }, + Municipio { + ibge_code: 5212956, + name: "Matrinchã", + state: State::GO, + }, + Municipio { + ibge_code: 5213004, + name: "Maurilândia", + state: State::GO, + }, + Municipio { + ibge_code: 5213053, + name: "Mimoso de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5213087, + name: "Minaçu", + state: State::GO, + }, + Municipio { + ibge_code: 5213103, + name: "Mineiros", + state: State::GO, + }, + Municipio { + ibge_code: 5213400, + name: "Moiporá", + state: State::GO, + }, + Municipio { + ibge_code: 5213509, + name: "Monte Alegre de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5213707, + name: "Montes Claros de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5213756, + name: "Montividiu", + state: State::GO, + }, + Municipio { + ibge_code: 5213772, + name: "Montividiu do Norte", + state: State::GO, + }, + Municipio { + ibge_code: 5213806, + name: "Morrinhos", + state: State::GO, + }, + Municipio { + ibge_code: 5213855, + name: "Morro Agudo de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5213905, + name: "Mossâmedes", + state: State::GO, + }, + Municipio { + ibge_code: 5214002, + name: "Mozarlândia", + state: State::GO, + }, + Municipio { + ibge_code: 5214051, + name: "Mundo Novo", + state: State::GO, + }, + Municipio { + ibge_code: 5214101, + name: "Mutunópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5214408, + name: "Nazário", + state: State::GO, + }, + Municipio { + ibge_code: 5214507, + name: "Nerópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5214606, + name: "Niquelândia", + state: State::GO, + }, + Municipio { + ibge_code: 5214705, + name: "Nova América", + state: State::GO, + }, + Municipio { + ibge_code: 5214804, + name: "Nova Aurora", + state: State::GO, + }, + Municipio { + ibge_code: 5214838, + name: "Nova Crixás", + state: State::GO, + }, + Municipio { + ibge_code: 5214861, + name: "Nova Glória", + state: State::GO, + }, + Municipio { + ibge_code: 5214879, + name: "Nova Iguaçu de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5214903, + name: "Nova Roma", + state: State::GO, + }, + Municipio { + ibge_code: 5215009, + name: "Nova Veneza", + state: State::GO, + }, + Municipio { + ibge_code: 5215207, + name: "Novo Brasil", + state: State::GO, + }, + Municipio { + ibge_code: 5215231, + name: "Novo Gama", + state: State::GO, + }, + Municipio { + ibge_code: 5215256, + name: "Novo Planalto", + state: State::GO, + }, + Municipio { + ibge_code: 5215306, + name: "Orizona", + state: State::GO, + }, + Municipio { + ibge_code: 5215405, + name: "Ouro Verde de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5215504, + name: "Ouvidor", + state: State::GO, + }, + Municipio { + ibge_code: 5215603, + name: "Padre Bernardo", + state: State::GO, + }, + Municipio { + ibge_code: 5215652, + name: "Palestina de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5215702, + name: "Palmeiras de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5215801, + name: "Palmelo", + state: State::GO, + }, + Municipio { + ibge_code: 5215900, + name: "Palminópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5216007, + name: "Panamá", + state: State::GO, + }, + Municipio { + ibge_code: 5216304, + name: "Paranaiguara", + state: State::GO, + }, + Municipio { + ibge_code: 5216403, + name: "Paraúna", + state: State::GO, + }, + Municipio { + ibge_code: 5216452, + name: "Perolândia", + state: State::GO, + }, + Municipio { + ibge_code: 5216809, + name: "Petrolina de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5216908, + name: "Pilar de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5217104, + name: "Piracanjuba", + state: State::GO, + }, + Municipio { + ibge_code: 5217203, + name: "Piranhas", + state: State::GO, + }, + Municipio { + ibge_code: 5217302, + name: "Pirenópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5217401, + name: "Pires do Rio", + state: State::GO, + }, + Municipio { + ibge_code: 5217609, + name: "Planaltina", + state: State::GO, + }, + Municipio { + ibge_code: 5217708, + name: "Pontalina", + state: State::GO, + }, + Municipio { + ibge_code: 5218003, + name: "Porangatu", + state: State::GO, + }, + Municipio { + ibge_code: 5218052, + name: "Porteirão", + state: State::GO, + }, + Municipio { + ibge_code: 5218102, + name: "Portelândia", + state: State::GO, + }, + Municipio { + ibge_code: 5218300, + name: "Posse", + state: State::GO, + }, + Municipio { + ibge_code: 5218391, + name: "Professor Jamil", + state: State::GO, + }, + Municipio { + ibge_code: 5218508, + name: "Quirinópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5218607, + name: "Rialma", + state: State::GO, + }, + Municipio { + ibge_code: 5218706, + name: "Rianápolis", + state: State::GO, + }, + Municipio { + ibge_code: 5218789, + name: "Rio Quente", + state: State::GO, + }, + Municipio { + ibge_code: 5218805, + name: "Rio Verde", + state: State::GO, + }, + Municipio { + ibge_code: 5218904, + name: "Rubiataba", + state: State::GO, + }, + Municipio { + ibge_code: 5219001, + name: "Sanclerlândia", + state: State::GO, + }, + Municipio { + ibge_code: 5219100, + name: "Santa Bárbara de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219209, + name: "Santa Cruz de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219258, + name: "Santa Fé de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219308, + name: "Santa Helena de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219357, + name: "Santa Isabel", + state: State::GO, + }, + Municipio { + ibge_code: 5219407, + name: "Santa Rita do Araguaia", + state: State::GO, + }, + Municipio { + ibge_code: 5219456, + name: "Santa Rita do Novo Destino", + state: State::GO, + }, + Municipio { + ibge_code: 5219506, + name: "Santa Rosa de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219605, + name: "Santa Tereza de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219704, + name: "Santa Terezinha de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219712, + name: "Santo Antônio da Barra", + state: State::GO, + }, + Municipio { + ibge_code: 5219738, + name: "Santo Antônio de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5219753, + name: "Santo Antônio do Descoberto", + state: State::GO, + }, + Municipio { + ibge_code: 5220454, + name: "Senador Canedo", + state: State::GO, + }, + Municipio { + ibge_code: 5220504, + name: "Serranópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5220603, + name: "Silvânia", + state: State::GO, + }, + Municipio { + ibge_code: 5220686, + name: "Simolândia", + state: State::GO, + }, + Municipio { + ibge_code: 5219803, + name: "São Domingos", + state: State::GO, + }, + Municipio { + ibge_code: 5219902, + name: "São Francisco de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5220009, + name: "São João d'Aliança", + state: State::GO, + }, + Municipio { + ibge_code: 5220058, + name: "São João da Paraúna", + state: State::GO, + }, + Municipio { + ibge_code: 5220157, + name: "São Luiz do Norte", + state: State::GO, + }, + Municipio { + ibge_code: 5220108, + name: "São Luís de Montes Belos", + state: State::GO, + }, + Municipio { + ibge_code: 5220207, + name: "São Miguel do Araguaia", + state: State::GO, + }, + Municipio { + ibge_code: 5220264, + name: "São Miguel do Passa Quatro", + state: State::GO, + }, + Municipio { + ibge_code: 5220280, + name: "São Patrício", + state: State::GO, + }, + Municipio { + ibge_code: 5220405, + name: "São Simão", + state: State::GO, + }, + Municipio { + ibge_code: 5220702, + name: "Sítio d'Abadia", + state: State::GO, + }, + Municipio { + ibge_code: 5221007, + name: "Taquaral de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5221080, + name: "Teresina de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5221197, + name: "Terezópolis de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5221403, + name: "Trindade", + state: State::GO, + }, + Municipio { + ibge_code: 5221452, + name: "Trombas", + state: State::GO, + }, + Municipio { + ibge_code: 5221304, + name: "Três Ranchos", + state: State::GO, + }, + Municipio { + ibge_code: 5221551, + name: "Turvelândia", + state: State::GO, + }, + Municipio { + ibge_code: 5221502, + name: "Turvânia", + state: State::GO, + }, + Municipio { + ibge_code: 5221577, + name: "Uirapuru", + state: State::GO, + }, + Municipio { + ibge_code: 5221700, + name: "Uruana", + state: State::GO, + }, + Municipio { + ibge_code: 5221601, + name: "Uruaçu", + state: State::GO, + }, + Municipio { + ibge_code: 5221809, + name: "Urutaí", + state: State::GO, + }, + Municipio { + ibge_code: 5221858, + name: "Valparaíso de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5221908, + name: "Varjão", + state: State::GO, + }, + Municipio { + ibge_code: 5222005, + name: "Vianópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5222054, + name: "Vicentinópolis", + state: State::GO, + }, + Municipio { + ibge_code: 5222203, + name: "Vila Boa", + state: State::GO, + }, + Municipio { + ibge_code: 5222302, + name: "Vila Propício", + state: State::GO, + }, + Municipio { + ibge_code: 5200175, + name: "Água Fria de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 5200209, + name: "Água Limpa", + state: State::GO, + }, + Municipio { + ibge_code: 5200258, + name: "Águas Lindas de Goiás", + state: State::GO, + }, + Municipio { + ibge_code: 2100105, + name: "Afonso Cunha", + state: State::MA, + }, + Municipio { + ibge_code: 2100204, + name: "Alcântara", + state: State::MA, + }, + Municipio { + ibge_code: 2100303, + name: "Aldeias Altas", + state: State::MA, + }, + Municipio { + ibge_code: 2100402, + name: "Altamira do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2100436, + name: "Alto Alegre do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2100477, + name: "Alto Alegre do Pindaré", + state: State::MA, + }, + Municipio { + ibge_code: 2100501, + name: "Alto Parnaíba", + state: State::MA, + }, + Municipio { + ibge_code: 2100550, + name: "Amapá do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2100600, + name: "Amarante do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2100709, + name: "Anajatuba", + state: State::MA, + }, + Municipio { + ibge_code: 2100808, + name: "Anapurus", + state: State::MA, + }, + Municipio { + ibge_code: 2100832, + name: "Apicum-Açu", + state: State::MA, + }, + Municipio { + ibge_code: 2100873, + name: "Araguanã", + state: State::MA, + }, + Municipio { + ibge_code: 2100907, + name: "Araioses", + state: State::MA, + }, + Municipio { + ibge_code: 2100956, + name: "Arame", + state: State::MA, + }, + Municipio { + ibge_code: 2101004, + name: "Arari", + state: State::MA, + }, + Municipio { + ibge_code: 2101103, + name: "Axixá", + state: State::MA, + }, + Municipio { + ibge_code: 2100055, + name: "Açailândia", + state: State::MA, + }, + Municipio { + ibge_code: 2101202, + name: "Bacabal", + state: State::MA, + }, + Municipio { + ibge_code: 2101251, + name: "Bacabeira", + state: State::MA, + }, + Municipio { + ibge_code: 2101301, + name: "Bacuri", + state: State::MA, + }, + Municipio { + ibge_code: 2101350, + name: "Bacurituba", + state: State::MA, + }, + Municipio { + ibge_code: 2101400, + name: "Balsas", + state: State::MA, + }, + Municipio { + ibge_code: 2101608, + name: "Barra do Corda", + state: State::MA, + }, + Municipio { + ibge_code: 2101707, + name: "Barreirinhas", + state: State::MA, + }, + Municipio { + ibge_code: 2101509, + name: "Barão de Grajaú", + state: State::MA, + }, + Municipio { + ibge_code: 2101772, + name: "Bela Vista do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2101731, + name: "Belágua", + state: State::MA, + }, + Municipio { + ibge_code: 2101806, + name: "Benedito Leite", + state: State::MA, + }, + Municipio { + ibge_code: 2101905, + name: "Bequimão", + state: State::MA, + }, + Municipio { + ibge_code: 2101939, + name: "Bernardo do Mearim", + state: State::MA, + }, + Municipio { + ibge_code: 2101970, + name: "Boa Vista do Gurupi", + state: State::MA, + }, + Municipio { + ibge_code: 2102002, + name: "Bom Jardim", + state: State::MA, + }, + Municipio { + ibge_code: 2102036, + name: "Bom Jesus das Selvas", + state: State::MA, + }, + Municipio { + ibge_code: 2102077, + name: "Bom Lugar", + state: State::MA, + }, + Municipio { + ibge_code: 2102101, + name: "Brejo", + state: State::MA, + }, + Municipio { + ibge_code: 2102150, + name: "Brejo de Areia", + state: State::MA, + }, + Municipio { + ibge_code: 2102200, + name: "Buriti", + state: State::MA, + }, + Municipio { + ibge_code: 2102309, + name: "Buriti Bravo", + state: State::MA, + }, + Municipio { + ibge_code: 2102325, + name: "Buriticupu", + state: State::MA, + }, + Municipio { + ibge_code: 2102358, + name: "Buritirana", + state: State::MA, + }, + Municipio { + ibge_code: 2102374, + name: "Cachoeira Grande", + state: State::MA, + }, + Municipio { + ibge_code: 2102408, + name: "Cajapió", + state: State::MA, + }, + Municipio { + ibge_code: 2102507, + name: "Cajari", + state: State::MA, + }, + Municipio { + ibge_code: 2102556, + name: "Campestre do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2102705, + name: "Cantanhede", + state: State::MA, + }, + Municipio { + ibge_code: 2102754, + name: "Capinzal do Norte", + state: State::MA, + }, + Municipio { + ibge_code: 2102804, + name: "Carolina", + state: State::MA, + }, + Municipio { + ibge_code: 2102903, + name: "Carutapera", + state: State::MA, + }, + Municipio { + ibge_code: 2103000, + name: "Caxias", + state: State::MA, + }, + Municipio { + ibge_code: 2103109, + name: "Cedral", + state: State::MA, + }, + Municipio { + ibge_code: 2103125, + name: "Central do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2103174, + name: "Centro Novo do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2103158, + name: "Centro do Guilherme", + state: State::MA, + }, + Municipio { + ibge_code: 2103208, + name: "Chapadinha", + state: State::MA, + }, + Municipio { + ibge_code: 2103257, + name: "Cidelândia", + state: State::MA, + }, + Municipio { + ibge_code: 2103307, + name: "Codó", + state: State::MA, + }, + Municipio { + ibge_code: 2103406, + name: "Coelho Neto", + state: State::MA, + }, + Municipio { + ibge_code: 2103505, + name: "Colinas", + state: State::MA, + }, + Municipio { + ibge_code: 2103554, + name: "Conceição do Lago-Açu", + state: State::MA, + }, + Municipio { + ibge_code: 2103604, + name: "Coroatá", + state: State::MA, + }, + Municipio { + ibge_code: 2103703, + name: "Cururupu", + state: State::MA, + }, + Municipio { + ibge_code: 2102606, + name: "Cândido Mendes", + state: State::MA, + }, + Municipio { + ibge_code: 2103752, + name: "Davinópolis", + state: State::MA, + }, + Municipio { + ibge_code: 2103802, + name: "Dom Pedro", + state: State::MA, + }, + Municipio { + ibge_code: 2103901, + name: "Duque Bacelar", + state: State::MA, + }, + Municipio { + ibge_code: 2104008, + name: "Esperantinópolis", + state: State::MA, + }, + Municipio { + ibge_code: 2104057, + name: "Estreito", + state: State::MA, + }, + Municipio { + ibge_code: 2104073, + name: "Feira Nova do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2104081, + name: "Fernando Falcão", + state: State::MA, + }, + Municipio { + ibge_code: 2104099, + name: "Formosa da Serra Negra", + state: State::MA, + }, + Municipio { + ibge_code: 2104107, + name: "Fortaleza dos Nogueiras", + state: State::MA, + }, + Municipio { + ibge_code: 2104206, + name: "Fortuna", + state: State::MA, + }, + Municipio { + ibge_code: 2104305, + name: "Godofredo Viana", + state: State::MA, + }, + Municipio { + ibge_code: 2104404, + name: "Gonçalves Dias", + state: State::MA, + }, + Municipio { + ibge_code: 2104503, + name: "Governador Archer", + state: State::MA, + }, + Municipio { + ibge_code: 2104552, + name: "Governador Edison Lobão", + state: State::MA, + }, + Municipio { + ibge_code: 2104602, + name: "Governador Eugênio Barros", + state: State::MA, + }, + Municipio { + ibge_code: 2104628, + name: "Governador Luiz Rocha", + state: State::MA, + }, + Municipio { + ibge_code: 2104651, + name: "Governador Newton Bello", + state: State::MA, + }, + Municipio { + ibge_code: 2104677, + name: "Governador Nunes Freire", + state: State::MA, + }, + Municipio { + ibge_code: 2104800, + name: "Grajaú", + state: State::MA, + }, + Municipio { + ibge_code: 2104701, + name: "Graça Aranha", + state: State::MA, + }, + Municipio { + ibge_code: 2104909, + name: "Guimarães", + state: State::MA, + }, + Municipio { + ibge_code: 2105005, + name: "Humberto de Campos", + state: State::MA, + }, + Municipio { + ibge_code: 2105104, + name: "Icatu", + state: State::MA, + }, + Municipio { + ibge_code: 2105203, + name: "Igarapé Grande", + state: State::MA, + }, + Municipio { + ibge_code: 2105153, + name: "Igarapé do Meio", + state: State::MA, + }, + Municipio { + ibge_code: 2105302, + name: "Imperatriz", + state: State::MA, + }, + Municipio { + ibge_code: 2105351, + name: "Itaipava do Grajaú", + state: State::MA, + }, + Municipio { + ibge_code: 2105401, + name: "Itapecuru Mirim", + state: State::MA, + }, + Municipio { + ibge_code: 2105427, + name: "Itinga do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2105450, + name: "Jatobá", + state: State::MA, + }, + Municipio { + ibge_code: 2105476, + name: "Jenipapo dos Vieiras", + state: State::MA, + }, + Municipio { + ibge_code: 2105609, + name: "Joselândia", + state: State::MA, + }, + Municipio { + ibge_code: 2105500, + name: "João Lisboa", + state: State::MA, + }, + Municipio { + ibge_code: 2105658, + name: "Junco do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2105906, + name: "Lago Verde", + state: State::MA, + }, + Municipio { + ibge_code: 2105708, + name: "Lago da Pedra", + state: State::MA, + }, + Municipio { + ibge_code: 2105807, + name: "Lago do Junco", + state: State::MA, + }, + Municipio { + ibge_code: 2105948, + name: "Lago dos Rodrigues", + state: State::MA, + }, + Municipio { + ibge_code: 2105963, + name: "Lagoa Grande do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2105922, + name: "Lagoa do Mato", + state: State::MA, + }, + Municipio { + ibge_code: 2105989, + name: "Lajeado Novo", + state: State::MA, + }, + Municipio { + ibge_code: 2106003, + name: "Lima Campos", + state: State::MA, + }, + Municipio { + ibge_code: 2106102, + name: "Loreto", + state: State::MA, + }, + Municipio { + ibge_code: 2106201, + name: "Luís Domingues", + state: State::MA, + }, + Municipio { + ibge_code: 2106300, + name: "Magalhães de Almeida", + state: State::MA, + }, + Municipio { + ibge_code: 2106326, + name: "Maracaçumé", + state: State::MA, + }, + Municipio { + ibge_code: 2106359, + name: "Marajá do Sena", + state: State::MA, + }, + Municipio { + ibge_code: 2106375, + name: "Maranhãozinho", + state: State::MA, + }, + Municipio { + ibge_code: 2106409, + name: "Mata Roma", + state: State::MA, + }, + Municipio { + ibge_code: 2106508, + name: "Matinha", + state: State::MA, + }, + Municipio { + ibge_code: 2106607, + name: "Matões", + state: State::MA, + }, + Municipio { + ibge_code: 2106631, + name: "Matões do Norte", + state: State::MA, + }, + Municipio { + ibge_code: 2106672, + name: "Milagres do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2106706, + name: "Mirador", + state: State::MA, + }, + Municipio { + ibge_code: 2106755, + name: "Miranda do Norte", + state: State::MA, + }, + Municipio { + ibge_code: 2106805, + name: "Mirinzal", + state: State::MA, + }, + Municipio { + ibge_code: 2107001, + name: "Montes Altos", + state: State::MA, + }, + Municipio { + ibge_code: 2106904, + name: "Monção", + state: State::MA, + }, + Municipio { + ibge_code: 2107100, + name: "Morros", + state: State::MA, + }, + Municipio { + ibge_code: 2107209, + name: "Nina Rodrigues", + state: State::MA, + }, + Municipio { + ibge_code: 2107258, + name: "Nova Colinas", + state: State::MA, + }, + Municipio { + ibge_code: 2107308, + name: "Nova Iorque", + state: State::MA, + }, + Municipio { + ibge_code: 2107357, + name: "Nova Olinda do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2107407, + name: "Olho d'Água das Cunhãs", + state: State::MA, + }, + Municipio { + ibge_code: 2107456, + name: "Olinda Nova do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2107605, + name: "Palmeirândia", + state: State::MA, + }, + Municipio { + ibge_code: 2107704, + name: "Paraibano", + state: State::MA, + }, + Municipio { + ibge_code: 2107803, + name: "Parnarama", + state: State::MA, + }, + Municipio { + ibge_code: 2107902, + name: "Passagem Franca", + state: State::MA, + }, + Municipio { + ibge_code: 2108009, + name: "Pastos Bons", + state: State::MA, + }, + Municipio { + ibge_code: 2108058, + name: "Paulino Neves", + state: State::MA, + }, + Municipio { + ibge_code: 2108108, + name: "Paulo Ramos", + state: State::MA, + }, + Municipio { + ibge_code: 2107506, + name: "Paço do Lumiar", + state: State::MA, + }, + Municipio { + ibge_code: 2108207, + name: "Pedreiras", + state: State::MA, + }, + Municipio { + ibge_code: 2108256, + name: "Pedro do Rosário", + state: State::MA, + }, + Municipio { + ibge_code: 2108306, + name: "Penalva", + state: State::MA, + }, + Municipio { + ibge_code: 2108405, + name: "Peri Mirim", + state: State::MA, + }, + Municipio { + ibge_code: 2108454, + name: "Peritoró", + state: State::MA, + }, + Municipio { + ibge_code: 2108504, + name: "Pindaré-Mirim", + state: State::MA, + }, + Municipio { + ibge_code: 2108603, + name: "Pinheiro", + state: State::MA, + }, + Municipio { + ibge_code: 2108702, + name: "Pio XII", + state: State::MA, + }, + Municipio { + ibge_code: 2108801, + name: "Pirapemas", + state: State::MA, + }, + Municipio { + ibge_code: 2109007, + name: "Porto Franco", + state: State::MA, + }, + Municipio { + ibge_code: 2109056, + name: "Porto Rico do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2108900, + name: "Poção de Pedras", + state: State::MA, + }, + Municipio { + ibge_code: 2109106, + name: "Presidente Dutra", + state: State::MA, + }, + Municipio { + ibge_code: 2109205, + name: "Presidente Juscelino", + state: State::MA, + }, + Municipio { + ibge_code: 2109239, + name: "Presidente Médici", + state: State::MA, + }, + Municipio { + ibge_code: 2109270, + name: "Presidente Sarney", + state: State::MA, + }, + Municipio { + ibge_code: 2109304, + name: "Presidente Vargas", + state: State::MA, + }, + Municipio { + ibge_code: 2109403, + name: "Primeira Cruz", + state: State::MA, + }, + Municipio { + ibge_code: 2109452, + name: "Raposa", + state: State::MA, + }, + Municipio { + ibge_code: 2109502, + name: "Riachão", + state: State::MA, + }, + Municipio { + ibge_code: 2109551, + name: "Ribamar Fiquene", + state: State::MA, + }, + Municipio { + ibge_code: 2109601, + name: "Rosário", + state: State::MA, + }, + Municipio { + ibge_code: 2109700, + name: "Sambaíba", + state: State::MA, + }, + Municipio { + ibge_code: 2109759, + name: "Santa Filomena do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2109809, + name: "Santa Helena", + state: State::MA, + }, + Municipio { + ibge_code: 2109908, + name: "Santa Inês", + state: State::MA, + }, + Municipio { + ibge_code: 2110005, + name: "Santa Luzia", + state: State::MA, + }, + Municipio { + ibge_code: 2110039, + name: "Santa Luzia do Paruá", + state: State::MA, + }, + Municipio { + ibge_code: 2110104, + name: "Santa Quitéria do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2110203, + name: "Santa Rita", + state: State::MA, + }, + Municipio { + ibge_code: 2110237, + name: "Santana do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2110278, + name: "Santo Amaro do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2110302, + name: "Santo Antônio dos Lopes", + state: State::MA, + }, + Municipio { + ibge_code: 2111722, + name: "Satubinha", + state: State::MA, + }, + Municipio { + ibge_code: 2111748, + name: "Senador Alexandre Costa", + state: State::MA, + }, + Municipio { + ibge_code: 2111763, + name: "Senador La Rocque", + state: State::MA, + }, + Municipio { + ibge_code: 2111789, + name: "Serrano do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2111904, + name: "Sucupira do Norte", + state: State::MA, + }, + Municipio { + ibge_code: 2111953, + name: "Sucupira do Riachão", + state: State::MA, + }, + Municipio { + ibge_code: 2110401, + name: "São Benedito do Rio Preto", + state: State::MA, + }, + Municipio { + ibge_code: 2110500, + name: "São Bento", + state: State::MA, + }, + Municipio { + ibge_code: 2110609, + name: "São Bernardo", + state: State::MA, + }, + Municipio { + ibge_code: 2110658, + name: "São Domingos do Azeitão", + state: State::MA, + }, + Municipio { + ibge_code: 2110708, + name: "São Domingos do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2110856, + name: "São Francisco do Brejão", + state: State::MA, + }, + Municipio { + ibge_code: 2110906, + name: "São Francisco do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2110807, + name: "São Félix de Balsas", + state: State::MA, + }, + Municipio { + ibge_code: 2111201, + name: "São José de Ribamar", + state: State::MA, + }, + Municipio { + ibge_code: 2111250, + name: "São José dos Basílios", + state: State::MA, + }, + Municipio { + ibge_code: 2111003, + name: "São João Batista", + state: State::MA, + }, + Municipio { + ibge_code: 2111029, + name: "São João do Carú", + state: State::MA, + }, + Municipio { + ibge_code: 2111052, + name: "São João do Paraíso", + state: State::MA, + }, + Municipio { + ibge_code: 2111078, + name: "São João do Soter", + state: State::MA, + }, + Municipio { + ibge_code: 2111102, + name: "São João dos Patos", + state: State::MA, + }, + Municipio { + ibge_code: 2111300, + name: "São Luís", + state: State::MA, + }, + Municipio { + ibge_code: 2111409, + name: "São Luís Gonzaga do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2111508, + name: "São Mateus do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 2111532, + name: "São Pedro da Água Branca", + state: State::MA, + }, + Municipio { + ibge_code: 2111573, + name: "São Pedro dos Crentes", + state: State::MA, + }, + Municipio { + ibge_code: 2111607, + name: "São Raimundo das Mangabeiras", + state: State::MA, + }, + Municipio { + ibge_code: 2111631, + name: "São Raimundo do Doca Bezerra", + state: State::MA, + }, + Municipio { + ibge_code: 2111672, + name: "São Roberto", + state: State::MA, + }, + Municipio { + ibge_code: 2111706, + name: "São Vicente Ferrer", + state: State::MA, + }, + Municipio { + ibge_code: 2111805, + name: "Sítio Novo", + state: State::MA, + }, + Municipio { + ibge_code: 2112001, + name: "Tasso Fragoso", + state: State::MA, + }, + Municipio { + ibge_code: 2112100, + name: "Timbiras", + state: State::MA, + }, + Municipio { + ibge_code: 2112209, + name: "Timon", + state: State::MA, + }, + Municipio { + ibge_code: 2112233, + name: "Trizidela do Vale", + state: State::MA, + }, + Municipio { + ibge_code: 2112274, + name: "Tufilândia", + state: State::MA, + }, + Municipio { + ibge_code: 2112308, + name: "Tuntum", + state: State::MA, + }, + Municipio { + ibge_code: 2112407, + name: "Turiaçu", + state: State::MA, + }, + Municipio { + ibge_code: 2112456, + name: "Turilândia", + state: State::MA, + }, + Municipio { + ibge_code: 2112506, + name: "Tutóia", + state: State::MA, + }, + Municipio { + ibge_code: 2112605, + name: "Urbano Santos", + state: State::MA, + }, + Municipio { + ibge_code: 2112704, + name: "Vargem Grande", + state: State::MA, + }, + Municipio { + ibge_code: 2112803, + name: "Viana", + state: State::MA, + }, + Municipio { + ibge_code: 2112852, + name: "Vila Nova dos Martírios", + state: State::MA, + }, + Municipio { + ibge_code: 2113009, + name: "Vitorino Freire", + state: State::MA, + }, + Municipio { + ibge_code: 2112902, + name: "Vitória do Mearim", + state: State::MA, + }, + Municipio { + ibge_code: 2114007, + name: "Zé Doca", + state: State::MA, + }, + Municipio { + ibge_code: 2100154, + name: "Água Doce do Maranhão", + state: State::MA, + }, + Municipio { + ibge_code: 3100104, + name: "Abadia dos Dourados", + state: State::MG, + }, + Municipio { + ibge_code: 3100203, + name: "Abaeté", + state: State::MG, + }, + Municipio { + ibge_code: 3100302, + name: "Abre Campo", + state: State::MG, + }, + Municipio { + ibge_code: 3100401, + name: "Acaiaca", + state: State::MG, + }, + Municipio { + ibge_code: 3100807, + name: "Aguanil", + state: State::MG, + }, + Municipio { + ibge_code: 3101102, + name: "Aimorés", + state: State::MG, + }, + Municipio { + ibge_code: 3101201, + name: "Aiuruoca", + state: State::MG, + }, + Municipio { + ibge_code: 3101300, + name: "Alagoa", + state: State::MG, + }, + Municipio { + ibge_code: 3101409, + name: "Albertina", + state: State::MG, + }, + Municipio { + ibge_code: 3101607, + name: "Alfenas", + state: State::MG, + }, + Municipio { + ibge_code: 3101631, + name: "Alfredo Vasconcelos", + state: State::MG, + }, + Municipio { + ibge_code: 3101706, + name: "Almenara", + state: State::MG, + }, + Municipio { + ibge_code: 3101805, + name: "Alpercata", + state: State::MG, + }, + Municipio { + ibge_code: 3101904, + name: "Alpinópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3102001, + name: "Alterosa", + state: State::MG, + }, + Municipio { + ibge_code: 3102050, + name: "Alto Caparaó", + state: State::MG, + }, + Municipio { + ibge_code: 3153509, + name: "Alto Jequitibá", + state: State::MG, + }, + Municipio { + ibge_code: 3102100, + name: "Alto Rio Doce", + state: State::MG, + }, + Municipio { + ibge_code: 3102209, + name: "Alvarenga", + state: State::MG, + }, + Municipio { + ibge_code: 3102308, + name: "Alvinópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3102407, + name: "Alvorada de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3101508, + name: "Além Paraíba", + state: State::MG, + }, + Municipio { + ibge_code: 3102506, + name: "Amparo do Serra", + state: State::MG, + }, + Municipio { + ibge_code: 3102605, + name: "Andradas", + state: State::MG, + }, + Municipio { + ibge_code: 3102803, + name: "Andrelândia", + state: State::MG, + }, + Municipio { + ibge_code: 3102852, + name: "Angelândia", + state: State::MG, + }, + Municipio { + ibge_code: 3102902, + name: "Antônio Carlos", + state: State::MG, + }, + Municipio { + ibge_code: 3103009, + name: "Antônio Dias", + state: State::MG, + }, + Municipio { + ibge_code: 3103108, + name: "Antônio Prado de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3103306, + name: "Aracitaba", + state: State::MG, + }, + Municipio { + ibge_code: 3103504, + name: "Araguari", + state: State::MG, + }, + Municipio { + ibge_code: 3103603, + name: "Arantina", + state: State::MG, + }, + Municipio { + ibge_code: 3103702, + name: "Araponga", + state: State::MG, + }, + Municipio { + ibge_code: 3103751, + name: "Araporã", + state: State::MG, + }, + Municipio { + ibge_code: 3103801, + name: "Arapuá", + state: State::MG, + }, + Municipio { + ibge_code: 3104007, + name: "Araxá", + state: State::MG, + }, + Municipio { + ibge_code: 3103207, + name: "Araçaí", + state: State::MG, + }, + Municipio { + ibge_code: 3103405, + name: "Araçuaí", + state: State::MG, + }, + Municipio { + ibge_code: 3103900, + name: "Araújos", + state: State::MG, + }, + Municipio { + ibge_code: 3104106, + name: "Arceburgo", + state: State::MG, + }, + Municipio { + ibge_code: 3104205, + name: "Arcos", + state: State::MG, + }, + Municipio { + ibge_code: 3104304, + name: "Areado", + state: State::MG, + }, + Municipio { + ibge_code: 3104403, + name: "Argirita", + state: State::MG, + }, + Municipio { + ibge_code: 3104452, + name: "Aricanduva", + state: State::MG, + }, + Municipio { + ibge_code: 3104502, + name: "Arinos", + state: State::MG, + }, + Municipio { + ibge_code: 3104601, + name: "Astolfo Dutra", + state: State::MG, + }, + Municipio { + ibge_code: 3104700, + name: "Ataléia", + state: State::MG, + }, + Municipio { + ibge_code: 3104809, + name: "Augusto de Lima", + state: State::MG, + }, + Municipio { + ibge_code: 3100500, + name: "Açucena", + state: State::MG, + }, + Municipio { + ibge_code: 3104908, + name: "Baependi", + state: State::MG, + }, + Municipio { + ibge_code: 3105004, + name: "Baldim", + state: State::MG, + }, + Municipio { + ibge_code: 3105103, + name: "Bambuí", + state: State::MG, + }, + Municipio { + ibge_code: 3105202, + name: "Bandeira", + state: State::MG, + }, + Municipio { + ibge_code: 3105301, + name: "Bandeira do Sul", + state: State::MG, + }, + Municipio { + ibge_code: 3105608, + name: "Barbacena", + state: State::MG, + }, + Municipio { + ibge_code: 3105707, + name: "Barra Longa", + state: State::MG, + }, + Municipio { + ibge_code: 3105905, + name: "Barroso", + state: State::MG, + }, + Municipio { + ibge_code: 3105400, + name: "Barão de Cocais", + state: State::MG, + }, + Municipio { + ibge_code: 3105509, + name: "Barão do Monte Alto", + state: State::MG, + }, + Municipio { + ibge_code: 3106002, + name: "Bela Vista de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3106101, + name: "Belmiro Braga", + state: State::MG, + }, + Municipio { + ibge_code: 3106200, + name: "Belo Horizonte", + state: State::MG, + }, + Municipio { + ibge_code: 3106309, + name: "Belo Oriente", + state: State::MG, + }, + Municipio { + ibge_code: 3106408, + name: "Belo Vale", + state: State::MG, + }, + Municipio { + ibge_code: 3106507, + name: "Berilo", + state: State::MG, + }, + Municipio { + ibge_code: 3106655, + name: "Berizal", + state: State::MG, + }, + Municipio { + ibge_code: 3106606, + name: "Bertópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3106705, + name: "Betim", + state: State::MG, + }, + Municipio { + ibge_code: 3106804, + name: "Bias Fortes", + state: State::MG, + }, + Municipio { + ibge_code: 3106903, + name: "Bicas", + state: State::MG, + }, + Municipio { + ibge_code: 3107000, + name: "Biquinhas", + state: State::MG, + }, + Municipio { + ibge_code: 3107109, + name: "Boa Esperança", + state: State::MG, + }, + Municipio { + ibge_code: 3107208, + name: "Bocaina de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3107307, + name: "Bocaiúva", + state: State::MG, + }, + Municipio { + ibge_code: 3107406, + name: "Bom Despacho", + state: State::MG, + }, + Municipio { + ibge_code: 3107505, + name: "Bom Jardim de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3107604, + name: "Bom Jesus da Penha", + state: State::MG, + }, + Municipio { + ibge_code: 3107703, + name: "Bom Jesus do Amparo", + state: State::MG, + }, + Municipio { + ibge_code: 3107802, + name: "Bom Jesus do Galho", + state: State::MG, + }, + Municipio { + ibge_code: 3107901, + name: "Bom Repouso", + state: State::MG, + }, + Municipio { + ibge_code: 3108008, + name: "Bom Sucesso", + state: State::MG, + }, + Municipio { + ibge_code: 3108107, + name: "Bonfim", + state: State::MG, + }, + Municipio { + ibge_code: 3108206, + name: "Bonfinópolis de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3108255, + name: "Bonito de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3108305, + name: "Borda da Mata", + state: State::MG, + }, + Municipio { + ibge_code: 3108404, + name: "Botelhos", + state: State::MG, + }, + Municipio { + ibge_code: 3108503, + name: "Botumirim", + state: State::MG, + }, + Municipio { + ibge_code: 3108552, + name: "Brasilândia de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3108602, + name: "Brasília de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3108909, + name: "Brazópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3108800, + name: "Braúnas", + state: State::MG, + }, + Municipio { + ibge_code: 3109006, + name: "Brumadinho", + state: State::MG, + }, + Municipio { + ibge_code: 3108701, + name: "Brás Pires", + state: State::MG, + }, + Municipio { + ibge_code: 3109105, + name: "Bueno Brandão", + state: State::MG, + }, + Municipio { + ibge_code: 3109204, + name: "Buenópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3109253, + name: "Bugre", + state: State::MG, + }, + Municipio { + ibge_code: 3109303, + name: "Buritis", + state: State::MG, + }, + Municipio { + ibge_code: 3109402, + name: "Buritizeiro", + state: State::MG, + }, + Municipio { + ibge_code: 3109451, + name: "Cabeceira Grande", + state: State::MG, + }, + Municipio { + ibge_code: 3109501, + name: "Cabo Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3109808, + name: "Cachoeira Dourada", + state: State::MG, + }, + Municipio { + ibge_code: 3109600, + name: "Cachoeira da Prata", + state: State::MG, + }, + Municipio { + ibge_code: 3109709, + name: "Cachoeira de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3102704, + name: "Cachoeira de Pajeú", + state: State::MG, + }, + Municipio { + ibge_code: 3109907, + name: "Caetanópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3110004, + name: "Caeté", + state: State::MG, + }, + Municipio { + ibge_code: 3110103, + name: "Caiana", + state: State::MG, + }, + Municipio { + ibge_code: 3110202, + name: "Cajuri", + state: State::MG, + }, + Municipio { + ibge_code: 3110301, + name: "Caldas", + state: State::MG, + }, + Municipio { + ibge_code: 3110400, + name: "Camacho", + state: State::MG, + }, + Municipio { + ibge_code: 3110509, + name: "Camanducaia", + state: State::MG, + }, + Municipio { + ibge_code: 3110707, + name: "Cambuquira", + state: State::MG, + }, + Municipio { + ibge_code: 3110608, + name: "Cambuí", + state: State::MG, + }, + Municipio { + ibge_code: 3110905, + name: "Campanha", + state: State::MG, + }, + Municipio { + ibge_code: 3110806, + name: "Campanário", + state: State::MG, + }, + Municipio { + ibge_code: 3111002, + name: "Campestre", + state: State::MG, + }, + Municipio { + ibge_code: 3111101, + name: "Campina Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3111150, + name: "Campo Azul", + state: State::MG, + }, + Municipio { + ibge_code: 3111200, + name: "Campo Belo", + state: State::MG, + }, + Municipio { + ibge_code: 3111408, + name: "Campo Florido", + state: State::MG, + }, + Municipio { + ibge_code: 3111309, + name: "Campo do Meio", + state: State::MG, + }, + Municipio { + ibge_code: 3111507, + name: "Campos Altos", + state: State::MG, + }, + Municipio { + ibge_code: 3111606, + name: "Campos Gerais", + state: State::MG, + }, + Municipio { + ibge_code: 3111903, + name: "Cana Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3111705, + name: "Canaã", + state: State::MG, + }, + Municipio { + ibge_code: 3112000, + name: "Candeias", + state: State::MG, + }, + Municipio { + ibge_code: 3112059, + name: "Cantagalo", + state: State::MG, + }, + Municipio { + ibge_code: 3111804, + name: "Canápolis", + state: State::MG, + }, + Municipio { + ibge_code: 3112109, + name: "Caparaó", + state: State::MG, + }, + Municipio { + ibge_code: 3112208, + name: "Capela Nova", + state: State::MG, + }, + Municipio { + ibge_code: 3112307, + name: "Capelinha", + state: State::MG, + }, + Municipio { + ibge_code: 3112406, + name: "Capetinga", + state: State::MG, + }, + Municipio { + ibge_code: 3112505, + name: "Capim Branco", + state: State::MG, + }, + Municipio { + ibge_code: 3112604, + name: "Capinópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3112653, + name: "Capitão Andrade", + state: State::MG, + }, + Municipio { + ibge_code: 3112703, + name: "Capitão Enéas", + state: State::MG, + }, + Municipio { + ibge_code: 3112802, + name: "Capitólio", + state: State::MG, + }, + Municipio { + ibge_code: 3112901, + name: "Caputira", + state: State::MG, + }, + Municipio { + ibge_code: 3113107, + name: "Caranaíba", + state: State::MG, + }, + Municipio { + ibge_code: 3113206, + name: "Carandaí", + state: State::MG, + }, + Municipio { + ibge_code: 3113305, + name: "Carangola", + state: State::MG, + }, + Municipio { + ibge_code: 3113404, + name: "Caratinga", + state: State::MG, + }, + Municipio { + ibge_code: 3113008, + name: "Caraí", + state: State::MG, + }, + Municipio { + ibge_code: 3113503, + name: "Carbonita", + state: State::MG, + }, + Municipio { + ibge_code: 3113602, + name: "Careaçu", + state: State::MG, + }, + Municipio { + ibge_code: 3113701, + name: "Carlos Chagas", + state: State::MG, + }, + Municipio { + ibge_code: 3113909, + name: "Carmo da Cachoeira", + state: State::MG, + }, + Municipio { + ibge_code: 3114006, + name: "Carmo da Mata", + state: State::MG, + }, + Municipio { + ibge_code: 3114105, + name: "Carmo de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3114204, + name: "Carmo do Cajuru", + state: State::MG, + }, + Municipio { + ibge_code: 3114303, + name: "Carmo do Paranaíba", + state: State::MG, + }, + Municipio { + ibge_code: 3114402, + name: "Carmo do Rio Claro", + state: State::MG, + }, + Municipio { + ibge_code: 3113800, + name: "Carmésia", + state: State::MG, + }, + Municipio { + ibge_code: 3114501, + name: "Carmópolis de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3114550, + name: "Carneirinho", + state: State::MG, + }, + Municipio { + ibge_code: 3114600, + name: "Carrancas", + state: State::MG, + }, + Municipio { + ibge_code: 3114808, + name: "Carvalhos", + state: State::MG, + }, + Municipio { + ibge_code: 3114709, + name: "Carvalhópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3114907, + name: "Casa Grande", + state: State::MG, + }, + Municipio { + ibge_code: 3115003, + name: "Cascalho Rico", + state: State::MG, + }, + Municipio { + ibge_code: 3115300, + name: "Cataguases", + state: State::MG, + }, + Municipio { + ibge_code: 3115359, + name: "Catas Altas", + state: State::MG, + }, + Municipio { + ibge_code: 3115409, + name: "Catas Altas da Noruega", + state: State::MG, + }, + Municipio { + ibge_code: 3115458, + name: "Catuji", + state: State::MG, + }, + Municipio { + ibge_code: 3115474, + name: "Catuti", + state: State::MG, + }, + Municipio { + ibge_code: 3115508, + name: "Caxambu", + state: State::MG, + }, + Municipio { + ibge_code: 3115607, + name: "Cedro do Abaeté", + state: State::MG, + }, + Municipio { + ibge_code: 3115706, + name: "Central de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3115805, + name: "Centralina", + state: State::MG, + }, + Municipio { + ibge_code: 3116001, + name: "Chalé", + state: State::MG, + }, + Municipio { + ibge_code: 3116159, + name: "Chapada Gaúcha", + state: State::MG, + }, + Municipio { + ibge_code: 3116100, + name: "Chapada do Norte", + state: State::MG, + }, + Municipio { + ibge_code: 3116209, + name: "Chiador", + state: State::MG, + }, + Municipio { + ibge_code: 3115904, + name: "Chácara", + state: State::MG, + }, + Municipio { + ibge_code: 3116308, + name: "Cipotânea", + state: State::MG, + }, + Municipio { + ibge_code: 3116407, + name: "Claraval", + state: State::MG, + }, + Municipio { + ibge_code: 3116506, + name: "Claro dos Poções", + state: State::MG, + }, + Municipio { + ibge_code: 3116605, + name: "Cláudio", + state: State::MG, + }, + Municipio { + ibge_code: 3116704, + name: "Coimbra", + state: State::MG, + }, + Municipio { + ibge_code: 3116803, + name: "Coluna", + state: State::MG, + }, + Municipio { + ibge_code: 3116902, + name: "Comendador Gomes", + state: State::MG, + }, + Municipio { + ibge_code: 3117009, + name: "Comercinho", + state: State::MG, + }, + Municipio { + ibge_code: 3117108, + name: "Conceição da Aparecida", + state: State::MG, + }, + Municipio { + ibge_code: 3115201, + name: "Conceição da Barra de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3117306, + name: "Conceição das Alagoas", + state: State::MG, + }, + Municipio { + ibge_code: 3117207, + name: "Conceição das Pedras", + state: State::MG, + }, + Municipio { + ibge_code: 3117405, + name: "Conceição de Ipanema", + state: State::MG, + }, + Municipio { + ibge_code: 3117504, + name: "Conceição do Mato Dentro", + state: State::MG, + }, + Municipio { + ibge_code: 3117603, + name: "Conceição do Pará", + state: State::MG, + }, + Municipio { + ibge_code: 3117702, + name: "Conceição do Rio Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3117801, + name: "Conceição dos Ouros", + state: State::MG, + }, + Municipio { + ibge_code: 3117876, + name: "Confins", + state: State::MG, + }, + Municipio { + ibge_code: 3117900, + name: "Congonhal", + state: State::MG, + }, + Municipio { + ibge_code: 3118007, + name: "Congonhas", + state: State::MG, + }, + Municipio { + ibge_code: 3118106, + name: "Congonhas do Norte", + state: State::MG, + }, + Municipio { + ibge_code: 3118205, + name: "Conquista", + state: State::MG, + }, + Municipio { + ibge_code: 3118304, + name: "Conselheiro Lafaiete", + state: State::MG, + }, + Municipio { + ibge_code: 3118403, + name: "Conselheiro Pena", + state: State::MG, + }, + Municipio { + ibge_code: 3118502, + name: "Consolação", + state: State::MG, + }, + Municipio { + ibge_code: 3118601, + name: "Contagem", + state: State::MG, + }, + Municipio { + ibge_code: 3118700, + name: "Coqueiral", + state: State::MG, + }, + Municipio { + ibge_code: 3118809, + name: "Coração de Jesus", + state: State::MG, + }, + Municipio { + ibge_code: 3118908, + name: "Cordisburgo", + state: State::MG, + }, + Municipio { + ibge_code: 3119005, + name: "Cordislândia", + state: State::MG, + }, + Municipio { + ibge_code: 3119104, + name: "Corinto", + state: State::MG, + }, + Municipio { + ibge_code: 3119203, + name: "Coroaci", + state: State::MG, + }, + Municipio { + ibge_code: 3119302, + name: "Coromandel", + state: State::MG, + }, + Municipio { + ibge_code: 3119401, + name: "Coronel Fabriciano", + state: State::MG, + }, + Municipio { + ibge_code: 3119500, + name: "Coronel Murta", + state: State::MG, + }, + Municipio { + ibge_code: 3119609, + name: "Coronel Pacheco", + state: State::MG, + }, + Municipio { + ibge_code: 3119708, + name: "Coronel Xavier Chaves", + state: State::MG, + }, + Municipio { + ibge_code: 3120102, + name: "Couto de Magalhães de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3120201, + name: "Cristais", + state: State::MG, + }, + Municipio { + ibge_code: 3120409, + name: "Cristiano Otoni", + state: State::MG, + }, + Municipio { + ibge_code: 3120508, + name: "Cristina", + state: State::MG, + }, + Municipio { + ibge_code: 3120300, + name: "Cristália", + state: State::MG, + }, + Municipio { + ibge_code: 3120151, + name: "Crisólita", + state: State::MG, + }, + Municipio { + ibge_code: 3120607, + name: "Crucilândia", + state: State::MG, + }, + Municipio { + ibge_code: 3120706, + name: "Cruzeiro da Fortaleza", + state: State::MG, + }, + Municipio { + ibge_code: 3120805, + name: "Cruzília", + state: State::MG, + }, + Municipio { + ibge_code: 3120839, + name: "Cuparaque", + state: State::MG, + }, + Municipio { + ibge_code: 3120870, + name: "Curral de Dentro", + state: State::MG, + }, + Municipio { + ibge_code: 3120904, + name: "Curvelo", + state: State::MG, + }, + Municipio { + ibge_code: 3115102, + name: "Cássia", + state: State::MG, + }, + Municipio { + ibge_code: 3119807, + name: "Córrego Danta", + state: State::MG, + }, + Municipio { + ibge_code: 3119955, + name: "Córrego Fundo", + state: State::MG, + }, + Municipio { + ibge_code: 3120003, + name: "Córrego Novo", + state: State::MG, + }, + Municipio { + ibge_code: 3119906, + name: "Córrego do Bom Jesus", + state: State::MG, + }, + Municipio { + ibge_code: 3117836, + name: "Cônego Marinho", + state: State::MG, + }, + Municipio { + ibge_code: 3121001, + name: "Datas", + state: State::MG, + }, + Municipio { + ibge_code: 3121100, + name: "Delfim Moreira", + state: State::MG, + }, + Municipio { + ibge_code: 3121209, + name: "Delfinópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3121258, + name: "Delta", + state: State::MG, + }, + Municipio { + ibge_code: 3121308, + name: "Descoberto", + state: State::MG, + }, + Municipio { + ibge_code: 3121407, + name: "Desterro de Entre Rios", + state: State::MG, + }, + Municipio { + ibge_code: 3121506, + name: "Desterro do Melo", + state: State::MG, + }, + Municipio { + ibge_code: 3121605, + name: "Diamantina", + state: State::MG, + }, + Municipio { + ibge_code: 3121704, + name: "Diogo de Vasconcelos", + state: State::MG, + }, + Municipio { + ibge_code: 3121803, + name: "Dionísio", + state: State::MG, + }, + Municipio { + ibge_code: 3122009, + name: "Divino", + state: State::MG, + }, + Municipio { + ibge_code: 3122108, + name: "Divino das Laranjeiras", + state: State::MG, + }, + Municipio { + ibge_code: 3122207, + name: "Divinolândia de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3121902, + name: "Divinésia", + state: State::MG, + }, + Municipio { + ibge_code: 3122306, + name: "Divinópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3122355, + name: "Divisa Alegre", + state: State::MG, + }, + Municipio { + ibge_code: 3122405, + name: "Divisa Nova", + state: State::MG, + }, + Municipio { + ibge_code: 3122454, + name: "Divisópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3122470, + name: "Dom Bosco", + state: State::MG, + }, + Municipio { + ibge_code: 3122504, + name: "Dom Cavati", + state: State::MG, + }, + Municipio { + ibge_code: 3122603, + name: "Dom Joaquim", + state: State::MG, + }, + Municipio { + ibge_code: 3122702, + name: "Dom Silvério", + state: State::MG, + }, + Municipio { + ibge_code: 3122801, + name: "Dom Viçoso", + state: State::MG, + }, + Municipio { + ibge_code: 3122900, + name: "Dona Euzébia", + state: State::MG, + }, + Municipio { + ibge_code: 3123007, + name: "Dores de Campos", + state: State::MG, + }, + Municipio { + ibge_code: 3123106, + name: "Dores de Guanhães", + state: State::MG, + }, + Municipio { + ibge_code: 3123205, + name: "Dores do Indaiá", + state: State::MG, + }, + Municipio { + ibge_code: 3123304, + name: "Dores do Turvo", + state: State::MG, + }, + Municipio { + ibge_code: 3123403, + name: "Doresópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3123502, + name: "Douradoquara", + state: State::MG, + }, + Municipio { + ibge_code: 3123528, + name: "Durandé", + state: State::MG, + }, + Municipio { + ibge_code: 3123601, + name: "Elói Mendes", + state: State::MG, + }, + Municipio { + ibge_code: 3123700, + name: "Engenheiro Caldas", + state: State::MG, + }, + Municipio { + ibge_code: 3123809, + name: "Engenheiro Navarro", + state: State::MG, + }, + Municipio { + ibge_code: 3123858, + name: "Entre Folhas", + state: State::MG, + }, + Municipio { + ibge_code: 3123908, + name: "Entre Rios de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3124005, + name: "Ervália", + state: State::MG, + }, + Municipio { + ibge_code: 3124104, + name: "Esmeraldas", + state: State::MG, + }, + Municipio { + ibge_code: 3124203, + name: "Espera Feliz", + state: State::MG, + }, + Municipio { + ibge_code: 3124302, + name: "Espinosa", + state: State::MG, + }, + Municipio { + ibge_code: 3124401, + name: "Espírito Santo do Dourado", + state: State::MG, + }, + Municipio { + ibge_code: 3124500, + name: "Estiva", + state: State::MG, + }, + Municipio { + ibge_code: 3124609, + name: "Estrela Dalva", + state: State::MG, + }, + Municipio { + ibge_code: 3124708, + name: "Estrela do Indaiá", + state: State::MG, + }, + Municipio { + ibge_code: 3124807, + name: "Estrela do Sul", + state: State::MG, + }, + Municipio { + ibge_code: 3124906, + name: "Eugenópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3125002, + name: "Ewbank da Câmara", + state: State::MG, + }, + Municipio { + ibge_code: 3125101, + name: "Extrema", + state: State::MG, + }, + Municipio { + ibge_code: 3125200, + name: "Fama", + state: State::MG, + }, + Municipio { + ibge_code: 3125309, + name: "Faria Lemos", + state: State::MG, + }, + Municipio { + ibge_code: 3125606, + name: "Felisburgo", + state: State::MG, + }, + Municipio { + ibge_code: 3125705, + name: "Felixlândia", + state: State::MG, + }, + Municipio { + ibge_code: 3125408, + name: "Felício dos Santos", + state: State::MG, + }, + Municipio { + ibge_code: 3125804, + name: "Fernandes Tourinho", + state: State::MG, + }, + Municipio { + ibge_code: 3125903, + name: "Ferros", + state: State::MG, + }, + Municipio { + ibge_code: 3125952, + name: "Fervedouro", + state: State::MG, + }, + Municipio { + ibge_code: 3126000, + name: "Florestal", + state: State::MG, + }, + Municipio { + ibge_code: 3126109, + name: "Formiga", + state: State::MG, + }, + Municipio { + ibge_code: 3126208, + name: "Formoso", + state: State::MG, + }, + Municipio { + ibge_code: 3126307, + name: "Fortaleza de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3126406, + name: "Fortuna de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3126505, + name: "Francisco Badaró", + state: State::MG, + }, + Municipio { + ibge_code: 3126604, + name: "Francisco Dumont", + state: State::MG, + }, + Municipio { + ibge_code: 3126703, + name: "Francisco Sá", + state: State::MG, + }, + Municipio { + ibge_code: 3126752, + name: "Franciscópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3126802, + name: "Frei Gaspar", + state: State::MG, + }, + Municipio { + ibge_code: 3126901, + name: "Frei Inocêncio", + state: State::MG, + }, + Municipio { + ibge_code: 3126950, + name: "Frei Lagonegro", + state: State::MG, + }, + Municipio { + ibge_code: 3127008, + name: "Fronteira", + state: State::MG, + }, + Municipio { + ibge_code: 3127057, + name: "Fronteira dos Vales", + state: State::MG, + }, + Municipio { + ibge_code: 3127073, + name: "Fruta de Leite", + state: State::MG, + }, + Municipio { + ibge_code: 3127107, + name: "Frutal", + state: State::MG, + }, + Municipio { + ibge_code: 3127206, + name: "Funilândia", + state: State::MG, + }, + Municipio { + ibge_code: 3127305, + name: "Galiléia", + state: State::MG, + }, + Municipio { + ibge_code: 3127339, + name: "Gameleiras", + state: State::MG, + }, + Municipio { + ibge_code: 3127354, + name: "Glaucilândia", + state: State::MG, + }, + Municipio { + ibge_code: 3127370, + name: "Goiabeira", + state: State::MG, + }, + Municipio { + ibge_code: 3127388, + name: "Goianá", + state: State::MG, + }, + Municipio { + ibge_code: 3127503, + name: "Gonzaga", + state: State::MG, + }, + Municipio { + ibge_code: 3127404, + name: "Gonçalves", + state: State::MG, + }, + Municipio { + ibge_code: 3127602, + name: "Gouveia", + state: State::MG, + }, + Municipio { + ibge_code: 3127701, + name: "Governador Valadares", + state: State::MG, + }, + Municipio { + ibge_code: 3127909, + name: "Grupiara", + state: State::MG, + }, + Municipio { + ibge_code: 3127800, + name: "Grão Mogol", + state: State::MG, + }, + Municipio { + ibge_code: 3128006, + name: "Guanhães", + state: State::MG, + }, + Municipio { + ibge_code: 3128105, + name: "Guapé", + state: State::MG, + }, + Municipio { + ibge_code: 3128204, + name: "Guaraciaba", + state: State::MG, + }, + Municipio { + ibge_code: 3128253, + name: "Guaraciama", + state: State::MG, + }, + Municipio { + ibge_code: 3128402, + name: "Guarani", + state: State::MG, + }, + Municipio { + ibge_code: 3128303, + name: "Guaranésia", + state: State::MG, + }, + Municipio { + ibge_code: 3128501, + name: "Guarará", + state: State::MG, + }, + Municipio { + ibge_code: 3128600, + name: "Guarda-Mor", + state: State::MG, + }, + Municipio { + ibge_code: 3128709, + name: "Guaxupé", + state: State::MG, + }, + Municipio { + ibge_code: 3128808, + name: "Guidoval", + state: State::MG, + }, + Municipio { + ibge_code: 3128907, + name: "Guimarânia", + state: State::MG, + }, + Municipio { + ibge_code: 3129004, + name: "Guiricema", + state: State::MG, + }, + Municipio { + ibge_code: 3129103, + name: "Gurinhatã", + state: State::MG, + }, + Municipio { + ibge_code: 3129202, + name: "Heliodora", + state: State::MG, + }, + Municipio { + ibge_code: 3129301, + name: "Iapu", + state: State::MG, + }, + Municipio { + ibge_code: 3129400, + name: "Ibertioga", + state: State::MG, + }, + Municipio { + ibge_code: 3129608, + name: "Ibiaí", + state: State::MG, + }, + Municipio { + ibge_code: 3129657, + name: "Ibiracatu", + state: State::MG, + }, + Municipio { + ibge_code: 3129707, + name: "Ibiraci", + state: State::MG, + }, + Municipio { + ibge_code: 3129806, + name: "Ibirité", + state: State::MG, + }, + Municipio { + ibge_code: 3129905, + name: "Ibitiúra de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3130002, + name: "Ibituruna", + state: State::MG, + }, + Municipio { + ibge_code: 3129509, + name: "Ibiá", + state: State::MG, + }, + Municipio { + ibge_code: 3130051, + name: "Icaraí de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3130101, + name: "Igarapé", + state: State::MG, + }, + Municipio { + ibge_code: 3130200, + name: "Igaratinga", + state: State::MG, + }, + Municipio { + ibge_code: 3130309, + name: "Iguatama", + state: State::MG, + }, + Municipio { + ibge_code: 3130408, + name: "Ijaci", + state: State::MG, + }, + Municipio { + ibge_code: 3130507, + name: "Ilicínea", + state: State::MG, + }, + Municipio { + ibge_code: 3130556, + name: "Imbé de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3130606, + name: "Inconfidentes", + state: State::MG, + }, + Municipio { + ibge_code: 3130655, + name: "Indaiabira", + state: State::MG, + }, + Municipio { + ibge_code: 3130705, + name: "Indianópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3130804, + name: "Ingaí", + state: State::MG, + }, + Municipio { + ibge_code: 3130903, + name: "Inhapim", + state: State::MG, + }, + Municipio { + ibge_code: 3131000, + name: "Inhaúma", + state: State::MG, + }, + Municipio { + ibge_code: 3131109, + name: "Inimutaba", + state: State::MG, + }, + Municipio { + ibge_code: 3131158, + name: "Ipaba", + state: State::MG, + }, + Municipio { + ibge_code: 3131208, + name: "Ipanema", + state: State::MG, + }, + Municipio { + ibge_code: 3131307, + name: "Ipatinga", + state: State::MG, + }, + Municipio { + ibge_code: 3131406, + name: "Ipiaçu", + state: State::MG, + }, + Municipio { + ibge_code: 3131505, + name: "Ipuiúna", + state: State::MG, + }, + Municipio { + ibge_code: 3131604, + name: "Iraí de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3131703, + name: "Itabira", + state: State::MG, + }, + Municipio { + ibge_code: 3131802, + name: "Itabirinha", + state: State::MG, + }, + Municipio { + ibge_code: 3131901, + name: "Itabirito", + state: State::MG, + }, + Municipio { + ibge_code: 3132008, + name: "Itacambira", + state: State::MG, + }, + Municipio { + ibge_code: 3132107, + name: "Itacarambi", + state: State::MG, + }, + Municipio { + ibge_code: 3132206, + name: "Itaguara", + state: State::MG, + }, + Municipio { + ibge_code: 3132305, + name: "Itaipé", + state: State::MG, + }, + Municipio { + ibge_code: 3132404, + name: "Itajubá", + state: State::MG, + }, + Municipio { + ibge_code: 3132503, + name: "Itamarandiba", + state: State::MG, + }, + Municipio { + ibge_code: 3132602, + name: "Itamarati de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3132701, + name: "Itambacuri", + state: State::MG, + }, + Municipio { + ibge_code: 3132800, + name: "Itambé do Mato Dentro", + state: State::MG, + }, + Municipio { + ibge_code: 3132909, + name: "Itamogi", + state: State::MG, + }, + Municipio { + ibge_code: 3133006, + name: "Itamonte", + state: State::MG, + }, + Municipio { + ibge_code: 3133105, + name: "Itanhandu", + state: State::MG, + }, + Municipio { + ibge_code: 3133204, + name: "Itanhomi", + state: State::MG, + }, + Municipio { + ibge_code: 3133303, + name: "Itaobim", + state: State::MG, + }, + Municipio { + ibge_code: 3133402, + name: "Itapagipe", + state: State::MG, + }, + Municipio { + ibge_code: 3133501, + name: "Itapecerica", + state: State::MG, + }, + Municipio { + ibge_code: 3133600, + name: "Itapeva", + state: State::MG, + }, + Municipio { + ibge_code: 3133709, + name: "Itatiaiuçu", + state: State::MG, + }, + Municipio { + ibge_code: 3133907, + name: "Itaverava", + state: State::MG, + }, + Municipio { + ibge_code: 3133758, + name: "Itaú de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3133808, + name: "Itaúna", + state: State::MG, + }, + Municipio { + ibge_code: 3134004, + name: "Itinga", + state: State::MG, + }, + Municipio { + ibge_code: 3134103, + name: "Itueta", + state: State::MG, + }, + Municipio { + ibge_code: 3134202, + name: "Ituiutaba", + state: State::MG, + }, + Municipio { + ibge_code: 3134301, + name: "Itumirim", + state: State::MG, + }, + Municipio { + ibge_code: 3134400, + name: "Iturama", + state: State::MG, + }, + Municipio { + ibge_code: 3134509, + name: "Itutinga", + state: State::MG, + }, + Municipio { + ibge_code: 3134608, + name: "Jaboticatubas", + state: State::MG, + }, + Municipio { + ibge_code: 3134707, + name: "Jacinto", + state: State::MG, + }, + Municipio { + ibge_code: 3134905, + name: "Jacutinga", + state: State::MG, + }, + Municipio { + ibge_code: 3134806, + name: "Jacuí", + state: State::MG, + }, + Municipio { + ibge_code: 3135001, + name: "Jaguaraçu", + state: State::MG, + }, + Municipio { + ibge_code: 3135076, + name: "Jampruca", + state: State::MG, + }, + Municipio { + ibge_code: 3135100, + name: "Janaúba", + state: State::MG, + }, + Municipio { + ibge_code: 3135209, + name: "Januária", + state: State::MG, + }, + Municipio { + ibge_code: 3135308, + name: "Japaraíba", + state: State::MG, + }, + Municipio { + ibge_code: 3135357, + name: "Japonvar", + state: State::MG, + }, + Municipio { + ibge_code: 3135050, + name: "Jaíba", + state: State::MG, + }, + Municipio { + ibge_code: 3135407, + name: "Jeceaba", + state: State::MG, + }, + Municipio { + ibge_code: 3135456, + name: "Jenipapo de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3135506, + name: "Jequeri", + state: State::MG, + }, + Municipio { + ibge_code: 3135605, + name: "Jequitaí", + state: State::MG, + }, + Municipio { + ibge_code: 3135704, + name: "Jequitibá", + state: State::MG, + }, + Municipio { + ibge_code: 3135803, + name: "Jequitinhonha", + state: State::MG, + }, + Municipio { + ibge_code: 3135902, + name: "Jesuânia", + state: State::MG, + }, + Municipio { + ibge_code: 3136108, + name: "Joanésia", + state: State::MG, + }, + Municipio { + ibge_code: 3136405, + name: "Joaquim Felício", + state: State::MG, + }, + Municipio { + ibge_code: 3136009, + name: "Joaíma", + state: State::MG, + }, + Municipio { + ibge_code: 3136504, + name: "Jordânia", + state: State::MG, + }, + Municipio { + ibge_code: 3136579, + name: "Josenópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3136520, + name: "José Gonçalves de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3136553, + name: "José Raydan", + state: State::MG, + }, + Municipio { + ibge_code: 3136207, + name: "João Monlevade", + state: State::MG, + }, + Municipio { + ibge_code: 3136306, + name: "João Pinheiro", + state: State::MG, + }, + Municipio { + ibge_code: 3136652, + name: "Juatuba", + state: State::MG, + }, + Municipio { + ibge_code: 3136702, + name: "Juiz de Fora", + state: State::MG, + }, + Municipio { + ibge_code: 3136801, + name: "Juramento", + state: State::MG, + }, + Municipio { + ibge_code: 3136900, + name: "Juruaia", + state: State::MG, + }, + Municipio { + ibge_code: 3136959, + name: "Juvenília", + state: State::MG, + }, + Municipio { + ibge_code: 3137007, + name: "Ladainha", + state: State::MG, + }, + Municipio { + ibge_code: 3137106, + name: "Lagamar", + state: State::MG, + }, + Municipio { + ibge_code: 3137403, + name: "Lagoa Dourada", + state: State::MG, + }, + Municipio { + ibge_code: 3137502, + name: "Lagoa Formosa", + state: State::MG, + }, + Municipio { + ibge_code: 3137536, + name: "Lagoa Grande", + state: State::MG, + }, + Municipio { + ibge_code: 3137601, + name: "Lagoa Santa", + state: State::MG, + }, + Municipio { + ibge_code: 3137205, + name: "Lagoa da Prata", + state: State::MG, + }, + Municipio { + ibge_code: 3137304, + name: "Lagoa dos Patos", + state: State::MG, + }, + Municipio { + ibge_code: 3137700, + name: "Lajinha", + state: State::MG, + }, + Municipio { + ibge_code: 3137809, + name: "Lambari", + state: State::MG, + }, + Municipio { + ibge_code: 3137908, + name: "Lamim", + state: State::MG, + }, + Municipio { + ibge_code: 3138005, + name: "Laranjal", + state: State::MG, + }, + Municipio { + ibge_code: 3138104, + name: "Lassance", + state: State::MG, + }, + Municipio { + ibge_code: 3138203, + name: "Lavras", + state: State::MG, + }, + Municipio { + ibge_code: 3138302, + name: "Leandro Ferreira", + state: State::MG, + }, + Municipio { + ibge_code: 3138351, + name: "Leme do Prado", + state: State::MG, + }, + Municipio { + ibge_code: 3138401, + name: "Leopoldina", + state: State::MG, + }, + Municipio { + ibge_code: 3138500, + name: "Liberdade", + state: State::MG, + }, + Municipio { + ibge_code: 3138609, + name: "Lima Duarte", + state: State::MG, + }, + Municipio { + ibge_code: 3138625, + name: "Limeira do Oeste", + state: State::MG, + }, + Municipio { + ibge_code: 3138658, + name: "Lontra", + state: State::MG, + }, + Municipio { + ibge_code: 3138674, + name: "Luisburgo", + state: State::MG, + }, + Municipio { + ibge_code: 3138682, + name: "Luislândia", + state: State::MG, + }, + Municipio { + ibge_code: 3138708, + name: "Luminárias", + state: State::MG, + }, + Municipio { + ibge_code: 3138807, + name: "Luz", + state: State::MG, + }, + Municipio { + ibge_code: 3138906, + name: "Machacalis", + state: State::MG, + }, + Municipio { + ibge_code: 3139003, + name: "Machado", + state: State::MG, + }, + Municipio { + ibge_code: 3139102, + name: "Madre de Deus de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3139201, + name: "Malacacheta", + state: State::MG, + }, + Municipio { + ibge_code: 3139250, + name: "Mamonas", + state: State::MG, + }, + Municipio { + ibge_code: 3139300, + name: "Manga", + state: State::MG, + }, + Municipio { + ibge_code: 3139409, + name: "Manhuaçu", + state: State::MG, + }, + Municipio { + ibge_code: 3139508, + name: "Manhumirim", + state: State::MG, + }, + Municipio { + ibge_code: 3139607, + name: "Mantena", + state: State::MG, + }, + Municipio { + ibge_code: 3139805, + name: "Mar de Espanha", + state: State::MG, + }, + Municipio { + ibge_code: 3139706, + name: "Maravilhas", + state: State::MG, + }, + Municipio { + ibge_code: 3139904, + name: "Maria da Fé", + state: State::MG, + }, + Municipio { + ibge_code: 3140001, + name: "Mariana", + state: State::MG, + }, + Municipio { + ibge_code: 3140100, + name: "Marilac", + state: State::MG, + }, + Municipio { + ibge_code: 3140209, + name: "Maripá de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3140308, + name: "Marliéria", + state: State::MG, + }, + Municipio { + ibge_code: 3140407, + name: "Marmelópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3140506, + name: "Martinho Campos", + state: State::MG, + }, + Municipio { + ibge_code: 3140530, + name: "Martins Soares", + state: State::MG, + }, + Municipio { + ibge_code: 3140555, + name: "Mata Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3140605, + name: "Materlândia", + state: State::MG, + }, + Municipio { + ibge_code: 3140704, + name: "Mateus Leme", + state: State::MG, + }, + Municipio { + ibge_code: 3171501, + name: "Mathias Lobato", + state: State::MG, + }, + Municipio { + ibge_code: 3140803, + name: "Matias Barbosa", + state: State::MG, + }, + Municipio { + ibge_code: 3140852, + name: "Matias Cardoso", + state: State::MG, + }, + Municipio { + ibge_code: 3140902, + name: "Matipó", + state: State::MG, + }, + Municipio { + ibge_code: 3141009, + name: "Mato Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3141108, + name: "Matozinhos", + state: State::MG, + }, + Municipio { + ibge_code: 3141207, + name: "Matutina", + state: State::MG, + }, + Municipio { + ibge_code: 3141306, + name: "Medeiros", + state: State::MG, + }, + Municipio { + ibge_code: 3141405, + name: "Medina", + state: State::MG, + }, + Municipio { + ibge_code: 3141504, + name: "Mendes Pimentel", + state: State::MG, + }, + Municipio { + ibge_code: 3141603, + name: "Mercês", + state: State::MG, + }, + Municipio { + ibge_code: 3141702, + name: "Mesquita", + state: State::MG, + }, + Municipio { + ibge_code: 3141801, + name: "Minas Novas", + state: State::MG, + }, + Municipio { + ibge_code: 3141900, + name: "Minduri", + state: State::MG, + }, + Municipio { + ibge_code: 3142007, + name: "Mirabela", + state: State::MG, + }, + Municipio { + ibge_code: 3142106, + name: "Miradouro", + state: State::MG, + }, + Municipio { + ibge_code: 3142254, + name: "Miravânia", + state: State::MG, + }, + Municipio { + ibge_code: 3142205, + name: "Miraí", + state: State::MG, + }, + Municipio { + ibge_code: 3142304, + name: "Moeda", + state: State::MG, + }, + Municipio { + ibge_code: 3142403, + name: "Moema", + state: State::MG, + }, + Municipio { + ibge_code: 3142502, + name: "Monjolos", + state: State::MG, + }, + Municipio { + ibge_code: 3142601, + name: "Monsenhor Paulo", + state: State::MG, + }, + Municipio { + ibge_code: 3142700, + name: "Montalvânia", + state: State::MG, + }, + Municipio { + ibge_code: 3142809, + name: "Monte Alegre de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3142908, + name: "Monte Azul", + state: State::MG, + }, + Municipio { + ibge_code: 3143005, + name: "Monte Belo", + state: State::MG, + }, + Municipio { + ibge_code: 3143104, + name: "Monte Carmelo", + state: State::MG, + }, + Municipio { + ibge_code: 3143153, + name: "Monte Formoso", + state: State::MG, + }, + Municipio { + ibge_code: 3143203, + name: "Monte Santo de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3143401, + name: "Monte Sião", + state: State::MG, + }, + Municipio { + ibge_code: 3143302, + name: "Montes Claros", + state: State::MG, + }, + Municipio { + ibge_code: 3143450, + name: "Montezuma", + state: State::MG, + }, + Municipio { + ibge_code: 3143500, + name: "Morada Nova de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3143609, + name: "Morro da Garça", + state: State::MG, + }, + Municipio { + ibge_code: 3143708, + name: "Morro do Pilar", + state: State::MG, + }, + Municipio { + ibge_code: 3143807, + name: "Munhoz", + state: State::MG, + }, + Municipio { + ibge_code: 3143906, + name: "Muriaé", + state: State::MG, + }, + Municipio { + ibge_code: 3144003, + name: "Mutum", + state: State::MG, + }, + Municipio { + ibge_code: 3144102, + name: "Muzambinho", + state: State::MG, + }, + Municipio { + ibge_code: 3140159, + name: "Mário Campos", + state: State::MG, + }, + Municipio { + ibge_code: 3144201, + name: "Nacip Raydan", + state: State::MG, + }, + Municipio { + ibge_code: 3144300, + name: "Nanuque", + state: State::MG, + }, + Municipio { + ibge_code: 3144359, + name: "Naque", + state: State::MG, + }, + Municipio { + ibge_code: 3144375, + name: "Natalândia", + state: State::MG, + }, + Municipio { + ibge_code: 3144409, + name: "Natércia", + state: State::MG, + }, + Municipio { + ibge_code: 3144508, + name: "Nazareno", + state: State::MG, + }, + Municipio { + ibge_code: 3144607, + name: "Nepomuceno", + state: State::MG, + }, + Municipio { + ibge_code: 3144656, + name: "Ninheira", + state: State::MG, + }, + Municipio { + ibge_code: 3144672, + name: "Nova Belém", + state: State::MG, + }, + Municipio { + ibge_code: 3144706, + name: "Nova Era", + state: State::MG, + }, + Municipio { + ibge_code: 3144805, + name: "Nova Lima", + state: State::MG, + }, + Municipio { + ibge_code: 3144904, + name: "Nova Módica", + state: State::MG, + }, + Municipio { + ibge_code: 3145000, + name: "Nova Ponte", + state: State::MG, + }, + Municipio { + ibge_code: 3145059, + name: "Nova Porteirinha", + state: State::MG, + }, + Municipio { + ibge_code: 3145109, + name: "Nova Resende", + state: State::MG, + }, + Municipio { + ibge_code: 3145208, + name: "Nova Serrana", + state: State::MG, + }, + Municipio { + ibge_code: 3136603, + name: "Nova União", + state: State::MG, + }, + Municipio { + ibge_code: 3145307, + name: "Novo Cruzeiro", + state: State::MG, + }, + Municipio { + ibge_code: 3145356, + name: "Novo Oriente de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3145372, + name: "Novorizonte", + state: State::MG, + }, + Municipio { + ibge_code: 3145406, + name: "Olaria", + state: State::MG, + }, + Municipio { + ibge_code: 3145455, + name: "Olhos-d'Água", + state: State::MG, + }, + Municipio { + ibge_code: 3145604, + name: "Oliveira", + state: State::MG, + }, + Municipio { + ibge_code: 3145703, + name: "Oliveira Fortes", + state: State::MG, + }, + Municipio { + ibge_code: 3145505, + name: "Olímpio Noronha", + state: State::MG, + }, + Municipio { + ibge_code: 3145802, + name: "Onça de Pitangui", + state: State::MG, + }, + Municipio { + ibge_code: 3145851, + name: "Oratórios", + state: State::MG, + }, + Municipio { + ibge_code: 3145877, + name: "Orizânia", + state: State::MG, + }, + Municipio { + ibge_code: 3145901, + name: "Ouro Branco", + state: State::MG, + }, + Municipio { + ibge_code: 3146008, + name: "Ouro Fino", + state: State::MG, + }, + Municipio { + ibge_code: 3146107, + name: "Ouro Preto", + state: State::MG, + }, + Municipio { + ibge_code: 3146206, + name: "Ouro Verde de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3146255, + name: "Padre Carvalho", + state: State::MG, + }, + Municipio { + ibge_code: 3146305, + name: "Padre Paraíso", + state: State::MG, + }, + Municipio { + ibge_code: 3146552, + name: "Pai Pedro", + state: State::MG, + }, + Municipio { + ibge_code: 3146404, + name: "Paineiras", + state: State::MG, + }, + Municipio { + ibge_code: 3146503, + name: "Pains", + state: State::MG, + }, + Municipio { + ibge_code: 3146602, + name: "Paiva", + state: State::MG, + }, + Municipio { + ibge_code: 3146701, + name: "Palma", + state: State::MG, + }, + Municipio { + ibge_code: 3146750, + name: "Palmópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3146909, + name: "Papagaios", + state: State::MG, + }, + Municipio { + ibge_code: 3147006, + name: "Paracatu", + state: State::MG, + }, + Municipio { + ibge_code: 3147204, + name: "Paraguaçu", + state: State::MG, + }, + Municipio { + ibge_code: 3147303, + name: "Paraisópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3147402, + name: "Paraopeba", + state: State::MG, + }, + Municipio { + ibge_code: 3147105, + name: "Pará de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3147600, + name: "Passa Quatro", + state: State::MG, + }, + Municipio { + ibge_code: 3147709, + name: "Passa Tempo", + state: State::MG, + }, + Municipio { + ibge_code: 3147808, + name: "Passa Vinte", + state: State::MG, + }, + Municipio { + ibge_code: 3147501, + name: "Passabém", + state: State::MG, + }, + Municipio { + ibge_code: 3147907, + name: "Passos", + state: State::MG, + }, + Municipio { + ibge_code: 3147956, + name: "Patis", + state: State::MG, + }, + Municipio { + ibge_code: 3148004, + name: "Patos de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3148103, + name: "Patrocínio", + state: State::MG, + }, + Municipio { + ibge_code: 3148202, + name: "Patrocínio do Muriaé", + state: State::MG, + }, + Municipio { + ibge_code: 3148301, + name: "Paula Cândido", + state: State::MG, + }, + Municipio { + ibge_code: 3148400, + name: "Paulistas", + state: State::MG, + }, + Municipio { + ibge_code: 3148509, + name: "Pavão", + state: State::MG, + }, + Municipio { + ibge_code: 3148707, + name: "Pedra Azul", + state: State::MG, + }, + Municipio { + ibge_code: 3148756, + name: "Pedra Bonita", + state: State::MG, + }, + Municipio { + ibge_code: 3149002, + name: "Pedra Dourada", + state: State::MG, + }, + Municipio { + ibge_code: 3148806, + name: "Pedra do Anta", + state: State::MG, + }, + Municipio { + ibge_code: 3148905, + name: "Pedra do Indaiá", + state: State::MG, + }, + Municipio { + ibge_code: 3149101, + name: "Pedralva", + state: State::MG, + }, + Municipio { + ibge_code: 3149150, + name: "Pedras de Maria da Cruz", + state: State::MG, + }, + Municipio { + ibge_code: 3149200, + name: "Pedrinópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3149309, + name: "Pedro Leopoldo", + state: State::MG, + }, + Municipio { + ibge_code: 3149408, + name: "Pedro Teixeira", + state: State::MG, + }, + Municipio { + ibge_code: 3149507, + name: "Pequeri", + state: State::MG, + }, + Municipio { + ibge_code: 3149606, + name: "Pequi", + state: State::MG, + }, + Municipio { + ibge_code: 3149705, + name: "Perdigão", + state: State::MG, + }, + Municipio { + ibge_code: 3149804, + name: "Perdizes", + state: State::MG, + }, + Municipio { + ibge_code: 3149903, + name: "Perdões", + state: State::MG, + }, + Municipio { + ibge_code: 3149952, + name: "Periquito", + state: State::MG, + }, + Municipio { + ibge_code: 3150000, + name: "Pescador", + state: State::MG, + }, + Municipio { + ibge_code: 3148608, + name: "Peçanha", + state: State::MG, + }, + Municipio { + ibge_code: 3150109, + name: "Piau", + state: State::MG, + }, + Municipio { + ibge_code: 3150158, + name: "Piedade de Caratinga", + state: State::MG, + }, + Municipio { + ibge_code: 3150208, + name: "Piedade de Ponte Nova", + state: State::MG, + }, + Municipio { + ibge_code: 3150307, + name: "Piedade do Rio Grande", + state: State::MG, + }, + Municipio { + ibge_code: 3150406, + name: "Piedade dos Gerais", + state: State::MG, + }, + Municipio { + ibge_code: 3150505, + name: "Pimenta", + state: State::MG, + }, + Municipio { + ibge_code: 3150539, + name: "Pingo-d'Água", + state: State::MG, + }, + Municipio { + ibge_code: 3150570, + name: "Pintópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3150604, + name: "Piracema", + state: State::MG, + }, + Municipio { + ibge_code: 3150703, + name: "Pirajuba", + state: State::MG, + }, + Municipio { + ibge_code: 3150802, + name: "Piranga", + state: State::MG, + }, + Municipio { + ibge_code: 3151008, + name: "Piranguinho", + state: State::MG, + }, + Municipio { + ibge_code: 3150901, + name: "Piranguçu", + state: State::MG, + }, + Municipio { + ibge_code: 3151107, + name: "Pirapetinga", + state: State::MG, + }, + Municipio { + ibge_code: 3151206, + name: "Pirapora", + state: State::MG, + }, + Municipio { + ibge_code: 3151305, + name: "Piraúba", + state: State::MG, + }, + Municipio { + ibge_code: 3151404, + name: "Pitangui", + state: State::MG, + }, + Municipio { + ibge_code: 3151503, + name: "Piumhi", + state: State::MG, + }, + Municipio { + ibge_code: 3151602, + name: "Planura", + state: State::MG, + }, + Municipio { + ibge_code: 3151909, + name: "Pocrane", + state: State::MG, + }, + Municipio { + ibge_code: 3152006, + name: "Pompéu", + state: State::MG, + }, + Municipio { + ibge_code: 3152105, + name: "Ponte Nova", + state: State::MG, + }, + Municipio { + ibge_code: 3152131, + name: "Ponto Chique", + state: State::MG, + }, + Municipio { + ibge_code: 3152170, + name: "Ponto dos Volantes", + state: State::MG, + }, + Municipio { + ibge_code: 3152204, + name: "Porteirinha", + state: State::MG, + }, + Municipio { + ibge_code: 3152303, + name: "Porto Firme", + state: State::MG, + }, + Municipio { + ibge_code: 3152402, + name: "Poté", + state: State::MG, + }, + Municipio { + ibge_code: 3152501, + name: "Pouso Alegre", + state: State::MG, + }, + Municipio { + ibge_code: 3152600, + name: "Pouso Alto", + state: State::MG, + }, + Municipio { + ibge_code: 3151701, + name: "Poço Fundo", + state: State::MG, + }, + Municipio { + ibge_code: 3151800, + name: "Poços de Caldas", + state: State::MG, + }, + Municipio { + ibge_code: 3152709, + name: "Prados", + state: State::MG, + }, + Municipio { + ibge_code: 3152808, + name: "Prata", + state: State::MG, + }, + Municipio { + ibge_code: 3153004, + name: "Pratinha", + state: State::MG, + }, + Municipio { + ibge_code: 3152907, + name: "Pratápolis", + state: State::MG, + }, + Municipio { + ibge_code: 3153103, + name: "Presidente Bernardes", + state: State::MG, + }, + Municipio { + ibge_code: 3153202, + name: "Presidente Juscelino", + state: State::MG, + }, + Municipio { + ibge_code: 3153301, + name: "Presidente Kubitschek", + state: State::MG, + }, + Municipio { + ibge_code: 3153400, + name: "Presidente Olegário", + state: State::MG, + }, + Municipio { + ibge_code: 3153608, + name: "Prudente de Morais", + state: State::MG, + }, + Municipio { + ibge_code: 3153707, + name: "Quartel Geral", + state: State::MG, + }, + Municipio { + ibge_code: 3153806, + name: "Queluzito", + state: State::MG, + }, + Municipio { + ibge_code: 3153905, + name: "Raposos", + state: State::MG, + }, + Municipio { + ibge_code: 3154002, + name: "Raul Soares", + state: State::MG, + }, + Municipio { + ibge_code: 3154101, + name: "Recreio", + state: State::MG, + }, + Municipio { + ibge_code: 3154150, + name: "Reduto", + state: State::MG, + }, + Municipio { + ibge_code: 3154200, + name: "Resende Costa", + state: State::MG, + }, + Municipio { + ibge_code: 3154309, + name: "Resplendor", + state: State::MG, + }, + Municipio { + ibge_code: 3154408, + name: "Ressaquinha", + state: State::MG, + }, + Municipio { + ibge_code: 3154457, + name: "Riachinho", + state: State::MG, + }, + Municipio { + ibge_code: 3154507, + name: "Riacho dos Machados", + state: State::MG, + }, + Municipio { + ibge_code: 3154705, + name: "Ribeirão Vermelho", + state: State::MG, + }, + Municipio { + ibge_code: 3154606, + name: "Ribeirão das Neves", + state: State::MG, + }, + Municipio { + ibge_code: 3154804, + name: "Rio Acima", + state: State::MG, + }, + Municipio { + ibge_code: 3154903, + name: "Rio Casca", + state: State::MG, + }, + Municipio { + ibge_code: 3155009, + name: "Rio Doce", + state: State::MG, + }, + Municipio { + ibge_code: 3155207, + name: "Rio Espera", + state: State::MG, + }, + Municipio { + ibge_code: 3155306, + name: "Rio Manso", + state: State::MG, + }, + Municipio { + ibge_code: 3155405, + name: "Rio Novo", + state: State::MG, + }, + Municipio { + ibge_code: 3155504, + name: "Rio Paranaíba", + state: State::MG, + }, + Municipio { + ibge_code: 3155603, + name: "Rio Pardo de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3155702, + name: "Rio Piracicaba", + state: State::MG, + }, + Municipio { + ibge_code: 3155801, + name: "Rio Pomba", + state: State::MG, + }, + Municipio { + ibge_code: 3155900, + name: "Rio Preto", + state: State::MG, + }, + Municipio { + ibge_code: 3156007, + name: "Rio Vermelho", + state: State::MG, + }, + Municipio { + ibge_code: 3155108, + name: "Rio do Prado", + state: State::MG, + }, + Municipio { + ibge_code: 3156106, + name: "Ritápolis", + state: State::MG, + }, + Municipio { + ibge_code: 3156205, + name: "Rochedo de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3156304, + name: "Rodeiro", + state: State::MG, + }, + Municipio { + ibge_code: 3156403, + name: "Romaria", + state: State::MG, + }, + Municipio { + ibge_code: 3156452, + name: "Rosário da Limeira", + state: State::MG, + }, + Municipio { + ibge_code: 3156502, + name: "Rubelita", + state: State::MG, + }, + Municipio { + ibge_code: 3156601, + name: "Rubim", + state: State::MG, + }, + Municipio { + ibge_code: 3156700, + name: "Sabará", + state: State::MG, + }, + Municipio { + ibge_code: 3156809, + name: "Sabinópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3156908, + name: "Sacramento", + state: State::MG, + }, + Municipio { + ibge_code: 3157005, + name: "Salinas", + state: State::MG, + }, + Municipio { + ibge_code: 3157104, + name: "Salto da Divisa", + state: State::MG, + }, + Municipio { + ibge_code: 3157203, + name: "Santa Bárbara", + state: State::MG, + }, + Municipio { + ibge_code: 3157252, + name: "Santa Bárbara do Leste", + state: State::MG, + }, + Municipio { + ibge_code: 3157278, + name: "Santa Bárbara do Monte Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3157302, + name: "Santa Bárbara do Tugúrio", + state: State::MG, + }, + Municipio { + ibge_code: 3157336, + name: "Santa Cruz de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3157377, + name: "Santa Cruz de Salinas", + state: State::MG, + }, + Municipio { + ibge_code: 3157401, + name: "Santa Cruz do Escalvado", + state: State::MG, + }, + Municipio { + ibge_code: 3157500, + name: "Santa Efigênia de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3157609, + name: "Santa Fé de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3157658, + name: "Santa Helena de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3157708, + name: "Santa Juliana", + state: State::MG, + }, + Municipio { + ibge_code: 3157807, + name: "Santa Luzia", + state: State::MG, + }, + Municipio { + ibge_code: 3157906, + name: "Santa Margarida", + state: State::MG, + }, + Municipio { + ibge_code: 3158003, + name: "Santa Maria de Itabira", + state: State::MG, + }, + Municipio { + ibge_code: 3158102, + name: "Santa Maria do Salto", + state: State::MG, + }, + Municipio { + ibge_code: 3158201, + name: "Santa Maria do Suaçuí", + state: State::MG, + }, + Municipio { + ibge_code: 3159209, + name: "Santa Rita de Caldas", + state: State::MG, + }, + Municipio { + ibge_code: 3159407, + name: "Santa Rita de Ibitipoca", + state: State::MG, + }, + Municipio { + ibge_code: 3159308, + name: "Santa Rita de Jacutinga", + state: State::MG, + }, + Municipio { + ibge_code: 3159357, + name: "Santa Rita de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3159506, + name: "Santa Rita do Itueto", + state: State::MG, + }, + Municipio { + ibge_code: 3159605, + name: "Santa Rita do Sapucaí", + state: State::MG, + }, + Municipio { + ibge_code: 3159704, + name: "Santa Rosa da Serra", + state: State::MG, + }, + Municipio { + ibge_code: 3159803, + name: "Santa Vitória", + state: State::MG, + }, + Municipio { + ibge_code: 3158300, + name: "Santana da Vargem", + state: State::MG, + }, + Municipio { + ibge_code: 3158409, + name: "Santana de Cataguases", + state: State::MG, + }, + Municipio { + ibge_code: 3158508, + name: "Santana de Pirapama", + state: State::MG, + }, + Municipio { + ibge_code: 3158607, + name: "Santana do Deserto", + state: State::MG, + }, + Municipio { + ibge_code: 3158706, + name: "Santana do Garambéu", + state: State::MG, + }, + Municipio { + ibge_code: 3158805, + name: "Santana do Jacaré", + state: State::MG, + }, + Municipio { + ibge_code: 3158904, + name: "Santana do Manhuaçu", + state: State::MG, + }, + Municipio { + ibge_code: 3158953, + name: "Santana do Paraíso", + state: State::MG, + }, + Municipio { + ibge_code: 3159001, + name: "Santana do Riacho", + state: State::MG, + }, + Municipio { + ibge_code: 3159100, + name: "Santana dos Montes", + state: State::MG, + }, + Municipio { + ibge_code: 3159902, + name: "Santo Antônio do Amparo", + state: State::MG, + }, + Municipio { + ibge_code: 3160009, + name: "Santo Antônio do Aventureiro", + state: State::MG, + }, + Municipio { + ibge_code: 3160108, + name: "Santo Antônio do Grama", + state: State::MG, + }, + Municipio { + ibge_code: 3160207, + name: "Santo Antônio do Itambé", + state: State::MG, + }, + Municipio { + ibge_code: 3160306, + name: "Santo Antônio do Jacinto", + state: State::MG, + }, + Municipio { + ibge_code: 3160405, + name: "Santo Antônio do Monte", + state: State::MG, + }, + Municipio { + ibge_code: 3160454, + name: "Santo Antônio do Retiro", + state: State::MG, + }, + Municipio { + ibge_code: 3160504, + name: "Santo Antônio do Rio Abaixo", + state: State::MG, + }, + Municipio { + ibge_code: 3160603, + name: "Santo Hipólito", + state: State::MG, + }, + Municipio { + ibge_code: 3160702, + name: "Santos Dumont", + state: State::MG, + }, + Municipio { + ibge_code: 3165404, + name: "Sapucaí-Mirim", + state: State::MG, + }, + Municipio { + ibge_code: 3165503, + name: "Sardoá", + state: State::MG, + }, + Municipio { + ibge_code: 3165537, + name: "Sarzedo", + state: State::MG, + }, + Municipio { + ibge_code: 3165560, + name: "Sem-Peixe", + state: State::MG, + }, + Municipio { + ibge_code: 3165578, + name: "Senador Amaral", + state: State::MG, + }, + Municipio { + ibge_code: 3165602, + name: "Senador Cortes", + state: State::MG, + }, + Municipio { + ibge_code: 3165701, + name: "Senador Firmino", + state: State::MG, + }, + Municipio { + ibge_code: 3165800, + name: "Senador José Bento", + state: State::MG, + }, + Municipio { + ibge_code: 3165909, + name: "Senador Modestino Gonçalves", + state: State::MG, + }, + Municipio { + ibge_code: 3166006, + name: "Senhora de Oliveira", + state: State::MG, + }, + Municipio { + ibge_code: 3166105, + name: "Senhora do Porto", + state: State::MG, + }, + Municipio { + ibge_code: 3166204, + name: "Senhora dos Remédios", + state: State::MG, + }, + Municipio { + ibge_code: 3166303, + name: "Sericita", + state: State::MG, + }, + Municipio { + ibge_code: 3166402, + name: "Seritinga", + state: State::MG, + }, + Municipio { + ibge_code: 3166501, + name: "Serra Azul de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3166600, + name: "Serra da Saudade", + state: State::MG, + }, + Municipio { + ibge_code: 3166808, + name: "Serra do Salitre", + state: State::MG, + }, + Municipio { + ibge_code: 3166709, + name: "Serra dos Aimorés", + state: State::MG, + }, + Municipio { + ibge_code: 3166907, + name: "Serrania", + state: State::MG, + }, + Municipio { + ibge_code: 3167004, + name: "Serranos", + state: State::MG, + }, + Municipio { + ibge_code: 3166956, + name: "Serranópolis de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3167103, + name: "Serro", + state: State::MG, + }, + Municipio { + ibge_code: 3167202, + name: "Sete Lagoas", + state: State::MG, + }, + Municipio { + ibge_code: 3165552, + name: "Setubinha", + state: State::MG, + }, + Municipio { + ibge_code: 3167301, + name: "Silveirânia", + state: State::MG, + }, + Municipio { + ibge_code: 3167400, + name: "Silvianópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3167608, + name: "Simonésia", + state: State::MG, + }, + Municipio { + ibge_code: 3167509, + name: "Simão Pereira", + state: State::MG, + }, + Municipio { + ibge_code: 3167707, + name: "Sobrália", + state: State::MG, + }, + Municipio { + ibge_code: 3167806, + name: "Soledade de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3160801, + name: "São Bento Abade", + state: State::MG, + }, + Municipio { + ibge_code: 3160900, + name: "São Brás do Suaçuí", + state: State::MG, + }, + Municipio { + ibge_code: 3160959, + name: "São Domingos das Dores", + state: State::MG, + }, + Municipio { + ibge_code: 3161007, + name: "São Domingos do Prata", + state: State::MG, + }, + Municipio { + ibge_code: 3161106, + name: "São Francisco", + state: State::MG, + }, + Municipio { + ibge_code: 3161205, + name: "São Francisco de Paula", + state: State::MG, + }, + Municipio { + ibge_code: 3161304, + name: "São Francisco de Sales", + state: State::MG, + }, + Municipio { + ibge_code: 3161403, + name: "São Francisco do Glória", + state: State::MG, + }, + Municipio { + ibge_code: 3161056, + name: "São Félix de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3161502, + name: "São Geraldo", + state: State::MG, + }, + Municipio { + ibge_code: 3161601, + name: "São Geraldo da Piedade", + state: State::MG, + }, + Municipio { + ibge_code: 3161650, + name: "São Geraldo do Baixio", + state: State::MG, + }, + Municipio { + ibge_code: 3161700, + name: "São Gonçalo do Abaeté", + state: State::MG, + }, + Municipio { + ibge_code: 3161809, + name: "São Gonçalo do Pará", + state: State::MG, + }, + Municipio { + ibge_code: 3161908, + name: "São Gonçalo do Rio Abaixo", + state: State::MG, + }, + Municipio { + ibge_code: 3125507, + name: "São Gonçalo do Rio Preto", + state: State::MG, + }, + Municipio { + ibge_code: 3162005, + name: "São Gonçalo do Sapucaí", + state: State::MG, + }, + Municipio { + ibge_code: 3162104, + name: "São Gotardo", + state: State::MG, + }, + Municipio { + ibge_code: 3162922, + name: "São Joaquim de Bicas", + state: State::MG, + }, + Municipio { + ibge_code: 3162948, + name: "São José da Barra", + state: State::MG, + }, + Municipio { + ibge_code: 3162955, + name: "São José da Lapa", + state: State::MG, + }, + Municipio { + ibge_code: 3163003, + name: "São José da Safira", + state: State::MG, + }, + Municipio { + ibge_code: 3163102, + name: "São José da Varginha", + state: State::MG, + }, + Municipio { + ibge_code: 3163201, + name: "São José do Alegre", + state: State::MG, + }, + Municipio { + ibge_code: 3163300, + name: "São José do Divino", + state: State::MG, + }, + Municipio { + ibge_code: 3163409, + name: "São José do Goiabal", + state: State::MG, + }, + Municipio { + ibge_code: 3163508, + name: "São José do Jacuri", + state: State::MG, + }, + Municipio { + ibge_code: 3163607, + name: "São José do Mantimento", + state: State::MG, + }, + Municipio { + ibge_code: 3162203, + name: "São João Batista do Glória", + state: State::MG, + }, + Municipio { + ibge_code: 3162807, + name: "São João Evangelista", + state: State::MG, + }, + Municipio { + ibge_code: 3162906, + name: "São João Nepomuceno", + state: State::MG, + }, + Municipio { + ibge_code: 3162252, + name: "São João da Lagoa", + state: State::MG, + }, + Municipio { + ibge_code: 3162302, + name: "São João da Mata", + state: State::MG, + }, + Municipio { + ibge_code: 3162401, + name: "São João da Ponte", + state: State::MG, + }, + Municipio { + ibge_code: 3162450, + name: "São João das Missões", + state: State::MG, + }, + Municipio { + ibge_code: 3162500, + name: "São João del Rei", + state: State::MG, + }, + Municipio { + ibge_code: 3162559, + name: "São João do Manhuaçu", + state: State::MG, + }, + Municipio { + ibge_code: 3162575, + name: "São João do Manteninha", + state: State::MG, + }, + Municipio { + ibge_code: 3162609, + name: "São João do Oriente", + state: State::MG, + }, + Municipio { + ibge_code: 3162658, + name: "São João do Pacuí", + state: State::MG, + }, + Municipio { + ibge_code: 3162708, + name: "São João do Paraíso", + state: State::MG, + }, + Municipio { + ibge_code: 3163706, + name: "São Lourenço", + state: State::MG, + }, + Municipio { + ibge_code: 3163805, + name: "São Miguel do Anta", + state: State::MG, + }, + Municipio { + ibge_code: 3163904, + name: "São Pedro da União", + state: State::MG, + }, + Municipio { + ibge_code: 3164100, + name: "São Pedro do Suaçuí", + state: State::MG, + }, + Municipio { + ibge_code: 3164001, + name: "São Pedro dos Ferros", + state: State::MG, + }, + Municipio { + ibge_code: 3164209, + name: "São Romão", + state: State::MG, + }, + Municipio { + ibge_code: 3164308, + name: "São Roque de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3164407, + name: "São Sebastião da Bela Vista", + state: State::MG, + }, + Municipio { + ibge_code: 3164431, + name: "São Sebastião da Vargem Alegre", + state: State::MG, + }, + Municipio { + ibge_code: 3164472, + name: "São Sebastião do Anta", + state: State::MG, + }, + Municipio { + ibge_code: 3164506, + name: "São Sebastião do Maranhão", + state: State::MG, + }, + Municipio { + ibge_code: 3164605, + name: "São Sebastião do Oeste", + state: State::MG, + }, + Municipio { + ibge_code: 3164704, + name: "São Sebastião do Paraíso", + state: State::MG, + }, + Municipio { + ibge_code: 3164803, + name: "São Sebastião do Rio Preto", + state: State::MG, + }, + Municipio { + ibge_code: 3164902, + name: "São Sebastião do Rio Verde", + state: State::MG, + }, + Municipio { + ibge_code: 3165008, + name: "São Tiago", + state: State::MG, + }, + Municipio { + ibge_code: 3165107, + name: "São Tomás de Aquino", + state: State::MG, + }, + Municipio { + ibge_code: 3165206, + name: "São Tomé das Letras", + state: State::MG, + }, + Municipio { + ibge_code: 3165305, + name: "São Vicente de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3167905, + name: "Tabuleiro", + state: State::MG, + }, + Municipio { + ibge_code: 3168002, + name: "Taiobeiras", + state: State::MG, + }, + Municipio { + ibge_code: 3168051, + name: "Taparuba", + state: State::MG, + }, + Municipio { + ibge_code: 3168101, + name: "Tapira", + state: State::MG, + }, + Municipio { + ibge_code: 3168200, + name: "Tapiraí", + state: State::MG, + }, + Municipio { + ibge_code: 3168309, + name: "Taquaraçu de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3168408, + name: "Tarumirim", + state: State::MG, + }, + Municipio { + ibge_code: 3168507, + name: "Teixeiras", + state: State::MG, + }, + Municipio { + ibge_code: 3168606, + name: "Teófilo Otoni", + state: State::MG, + }, + Municipio { + ibge_code: 3168705, + name: "Timóteo", + state: State::MG, + }, + Municipio { + ibge_code: 3168804, + name: "Tiradentes", + state: State::MG, + }, + Municipio { + ibge_code: 3168903, + name: "Tiros", + state: State::MG, + }, + Municipio { + ibge_code: 3169000, + name: "Tocantins", + state: State::MG, + }, + Municipio { + ibge_code: 3169059, + name: "Tocos do Moji", + state: State::MG, + }, + Municipio { + ibge_code: 3169109, + name: "Toledo", + state: State::MG, + }, + Municipio { + ibge_code: 3169208, + name: "Tombos", + state: State::MG, + }, + Municipio { + ibge_code: 3169307, + name: "Três Corações", + state: State::MG, + }, + Municipio { + ibge_code: 3169356, + name: "Três Marias", + state: State::MG, + }, + Municipio { + ibge_code: 3169406, + name: "Três Pontas", + state: State::MG, + }, + Municipio { + ibge_code: 3169505, + name: "Tumiritinga", + state: State::MG, + }, + Municipio { + ibge_code: 3169604, + name: "Tupaciguara", + state: State::MG, + }, + Municipio { + ibge_code: 3169703, + name: "Turmalina", + state: State::MG, + }, + Municipio { + ibge_code: 3169802, + name: "Turvolândia", + state: State::MG, + }, + Municipio { + ibge_code: 3170057, + name: "Ubaporanga", + state: State::MG, + }, + Municipio { + ibge_code: 3170008, + name: "Ubaí", + state: State::MG, + }, + Municipio { + ibge_code: 3170107, + name: "Uberaba", + state: State::MG, + }, + Municipio { + ibge_code: 3170206, + name: "Uberlândia", + state: State::MG, + }, + Municipio { + ibge_code: 3169901, + name: "Ubá", + state: State::MG, + }, + Municipio { + ibge_code: 3170305, + name: "Umburatiba", + state: State::MG, + }, + Municipio { + ibge_code: 3170404, + name: "Unaí", + state: State::MG, + }, + Municipio { + ibge_code: 3170438, + name: "União de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3170479, + name: "Uruana de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3170529, + name: "Urucuia", + state: State::MG, + }, + Municipio { + ibge_code: 3170503, + name: "Urucânia", + state: State::MG, + }, + Municipio { + ibge_code: 3170578, + name: "Vargem Alegre", + state: State::MG, + }, + Municipio { + ibge_code: 3170602, + name: "Vargem Bonita", + state: State::MG, + }, + Municipio { + ibge_code: 3170651, + name: "Vargem Grande do Rio Pardo", + state: State::MG, + }, + Municipio { + ibge_code: 3170701, + name: "Varginha", + state: State::MG, + }, + Municipio { + ibge_code: 3170750, + name: "Varjão de Minas", + state: State::MG, + }, + Municipio { + ibge_code: 3170909, + name: "Varzelândia", + state: State::MG, + }, + Municipio { + ibge_code: 3171006, + name: "Vazante", + state: State::MG, + }, + Municipio { + ibge_code: 3171030, + name: "Verdelândia", + state: State::MG, + }, + Municipio { + ibge_code: 3171071, + name: "Veredinha", + state: State::MG, + }, + Municipio { + ibge_code: 3171154, + name: "Vermelho Novo", + state: State::MG, + }, + Municipio { + ibge_code: 3171105, + name: "Veríssimo", + state: State::MG, + }, + Municipio { + ibge_code: 3171204, + name: "Vespasiano", + state: State::MG, + }, + Municipio { + ibge_code: 3171402, + name: "Vieiras", + state: State::MG, + }, + Municipio { + ibge_code: 3171600, + name: "Virgem da Lapa", + state: State::MG, + }, + Municipio { + ibge_code: 3171808, + name: "Virginópolis", + state: State::MG, + }, + Municipio { + ibge_code: 3171907, + name: "Virgolândia", + state: State::MG, + }, + Municipio { + ibge_code: 3171709, + name: "Virgínia", + state: State::MG, + }, + Municipio { + ibge_code: 3172004, + name: "Visconde do Rio Branco", + state: State::MG, + }, + Municipio { + ibge_code: 3171303, + name: "Viçosa", + state: State::MG, + }, + Municipio { + ibge_code: 3172103, + name: "Volta Grande", + state: State::MG, + }, + Municipio { + ibge_code: 3170800, + name: "Várzea da Palma", + state: State::MG, + }, + Municipio { + ibge_code: 3172202, + name: "Wenceslau Braz", + state: State::MG, + }, + Municipio { + ibge_code: 3100609, + name: "Água Boa", + state: State::MG, + }, + Municipio { + ibge_code: 3100708, + name: "Água Comprida", + state: State::MG, + }, + Municipio { + ibge_code: 3100906, + name: "Águas Formosas", + state: State::MG, + }, + Municipio { + ibge_code: 3101003, + name: "Águas Vermelhas", + state: State::MG, + }, + Municipio { + ibge_code: 5000252, + name: "Alcinópolis", + state: State::MS, + }, + Municipio { + ibge_code: 5000609, + name: "Amambai", + state: State::MS, + }, + Municipio { + ibge_code: 5000708, + name: "Anastácio", + state: State::MS, + }, + Municipio { + ibge_code: 5000807, + name: "Anaurilândia", + state: State::MS, + }, + Municipio { + ibge_code: 5000856, + name: "Angélica", + state: State::MS, + }, + Municipio { + ibge_code: 5000906, + name: "Antônio João", + state: State::MS, + }, + Municipio { + ibge_code: 5001003, + name: "Aparecida do Taboado", + state: State::MS, + }, + Municipio { + ibge_code: 5001102, + name: "Aquidauana", + state: State::MS, + }, + Municipio { + ibge_code: 5001243, + name: "Aral Moreira", + state: State::MS, + }, + Municipio { + ibge_code: 5001508, + name: "Bandeirantes", + state: State::MS, + }, + Municipio { + ibge_code: 5001904, + name: "Bataguassu", + state: State::MS, + }, + Municipio { + ibge_code: 5002001, + name: "Batayporã", + state: State::MS, + }, + Municipio { + ibge_code: 5002100, + name: "Bela Vista", + state: State::MS, + }, + Municipio { + ibge_code: 5002159, + name: "Bodoquena", + state: State::MS, + }, + Municipio { + ibge_code: 5002209, + name: "Bonito", + state: State::MS, + }, + Municipio { + ibge_code: 5002308, + name: "Brasilândia", + state: State::MS, + }, + Municipio { + ibge_code: 5002407, + name: "Caarapó", + state: State::MS, + }, + Municipio { + ibge_code: 5002605, + name: "Camapuã", + state: State::MS, + }, + Municipio { + ibge_code: 5002704, + name: "Campo Grande", + state: State::MS, + }, + Municipio { + ibge_code: 5002803, + name: "Caracol", + state: State::MS, + }, + Municipio { + ibge_code: 5002902, + name: "Cassilândia", + state: State::MS, + }, + Municipio { + ibge_code: 5002951, + name: "Chapadão do Sul", + state: State::MS, + }, + Municipio { + ibge_code: 5003108, + name: "Corguinho", + state: State::MS, + }, + Municipio { + ibge_code: 5003157, + name: "Coronel Sapucaia", + state: State::MS, + }, + Municipio { + ibge_code: 5003207, + name: "Corumbá", + state: State::MS, + }, + Municipio { + ibge_code: 5003256, + name: "Costa Rica", + state: State::MS, + }, + Municipio { + ibge_code: 5003306, + name: "Coxim", + state: State::MS, + }, + Municipio { + ibge_code: 5003454, + name: "Deodápolis", + state: State::MS, + }, + Municipio { + ibge_code: 5003488, + name: "Dois Irmãos do Buriti", + state: State::MS, + }, + Municipio { + ibge_code: 5003504, + name: "Douradina", + state: State::MS, + }, + Municipio { + ibge_code: 5003702, + name: "Dourados", + state: State::MS, + }, + Municipio { + ibge_code: 5003751, + name: "Eldorado", + state: State::MS, + }, + Municipio { + ibge_code: 5003900, + name: "Figueirão", + state: State::MS, + }, + Municipio { + ibge_code: 5003801, + name: "Fátima do Sul", + state: State::MS, + }, + Municipio { + ibge_code: 5004007, + name: "Glória de Dourados", + state: State::MS, + }, + Municipio { + ibge_code: 5004106, + name: "Guia Lopes da Laguna", + state: State::MS, + }, + Municipio { + ibge_code: 5004304, + name: "Iguatemi", + state: State::MS, + }, + Municipio { + ibge_code: 5004403, + name: "Inocência", + state: State::MS, + }, + Municipio { + ibge_code: 5004502, + name: "Itaporã", + state: State::MS, + }, + Municipio { + ibge_code: 5004601, + name: "Itaquiraí", + state: State::MS, + }, + Municipio { + ibge_code: 5004700, + name: "Ivinhema", + state: State::MS, + }, + Municipio { + ibge_code: 5004809, + name: "Japorã", + state: State::MS, + }, + Municipio { + ibge_code: 5004908, + name: "Jaraguari", + state: State::MS, + }, + Municipio { + ibge_code: 5005004, + name: "Jardim", + state: State::MS, + }, + Municipio { + ibge_code: 5005103, + name: "Jateí", + state: State::MS, + }, + Municipio { + ibge_code: 5005152, + name: "Juti", + state: State::MS, + }, + Municipio { + ibge_code: 5005202, + name: "Ladário", + state: State::MS, + }, + Municipio { + ibge_code: 5005251, + name: "Laguna Carapã", + state: State::MS, + }, + Municipio { + ibge_code: 5005400, + name: "Maracaju", + state: State::MS, + }, + Municipio { + ibge_code: 5005608, + name: "Miranda", + state: State::MS, + }, + Municipio { + ibge_code: 5005681, + name: "Mundo Novo", + state: State::MS, + }, + Municipio { + ibge_code: 5005707, + name: "Naviraí", + state: State::MS, + }, + Municipio { + ibge_code: 5005806, + name: "Nioaque", + state: State::MS, + }, + Municipio { + ibge_code: 5006002, + name: "Nova Alvorada do Sul", + state: State::MS, + }, + Municipio { + ibge_code: 5006200, + name: "Nova Andradina", + state: State::MS, + }, + Municipio { + ibge_code: 5006259, + name: "Novo Horizonte do Sul", + state: State::MS, + }, + Municipio { + ibge_code: 5006309, + name: "Paranaíba", + state: State::MS, + }, + Municipio { + ibge_code: 5006358, + name: "Paranhos", + state: State::MS, + }, + Municipio { + ibge_code: 5006275, + name: "Paraíso das Águas", + state: State::MS, + }, + Municipio { + ibge_code: 5006408, + name: "Pedro Gomes", + state: State::MS, + }, + Municipio { + ibge_code: 5006606, + name: "Ponta Porã", + state: State::MS, + }, + Municipio { + ibge_code: 5006903, + name: "Porto Murtinho", + state: State::MS, + }, + Municipio { + ibge_code: 5007109, + name: "Ribas do Rio Pardo", + state: State::MS, + }, + Municipio { + ibge_code: 5007208, + name: "Rio Brilhante", + state: State::MS, + }, + Municipio { + ibge_code: 5007307, + name: "Rio Negro", + state: State::MS, + }, + Municipio { + ibge_code: 5007406, + name: "Rio Verde de Mato Grosso", + state: State::MS, + }, + Municipio { + ibge_code: 5007505, + name: "Rochedo", + state: State::MS, + }, + Municipio { + ibge_code: 5007554, + name: "Santa Rita do Pardo", + state: State::MS, + }, + Municipio { + ibge_code: 5007802, + name: "Selvíria", + state: State::MS, + }, + Municipio { + ibge_code: 5007703, + name: "Sete Quedas", + state: State::MS, + }, + Municipio { + ibge_code: 5007901, + name: "Sidrolândia", + state: State::MS, + }, + Municipio { + ibge_code: 5007935, + name: "Sonora", + state: State::MS, + }, + Municipio { + ibge_code: 5007695, + name: "São Gabriel do Oeste", + state: State::MS, + }, + Municipio { + ibge_code: 5007950, + name: "Tacuru", + state: State::MS, + }, + Municipio { + ibge_code: 5007976, + name: "Taquarussu", + state: State::MS, + }, + Municipio { + ibge_code: 5008008, + name: "Terenos", + state: State::MS, + }, + Municipio { + ibge_code: 5008305, + name: "Três Lagoas", + state: State::MS, + }, + Municipio { + ibge_code: 5008404, + name: "Vicentina", + state: State::MS, + }, + Municipio { + ibge_code: 5000203, + name: "Água Clara", + state: State::MS, + }, + Municipio { + ibge_code: 5100102, + name: "Acorizal", + state: State::MT, + }, + Municipio { + ibge_code: 5100250, + name: "Alta Floresta", + state: State::MT, + }, + Municipio { + ibge_code: 5100300, + name: "Alto Araguaia", + state: State::MT, + }, + Municipio { + ibge_code: 5100359, + name: "Alto Boa Vista", + state: State::MT, + }, + Municipio { + ibge_code: 5100409, + name: "Alto Garças", + state: State::MT, + }, + Municipio { + ibge_code: 5100508, + name: "Alto Paraguai", + state: State::MT, + }, + Municipio { + ibge_code: 5100607, + name: "Alto Taquari", + state: State::MT, + }, + Municipio { + ibge_code: 5100805, + name: "Apiacás", + state: State::MT, + }, + Municipio { + ibge_code: 5101001, + name: "Araguaiana", + state: State::MT, + }, + Municipio { + ibge_code: 5101209, + name: "Araguainha", + state: State::MT, + }, + Municipio { + ibge_code: 5101258, + name: "Araputanga", + state: State::MT, + }, + Municipio { + ibge_code: 5101308, + name: "Arenápolis", + state: State::MT, + }, + Municipio { + ibge_code: 5101407, + name: "Aripuanã", + state: State::MT, + }, + Municipio { + ibge_code: 5101704, + name: "Barra do Bugres", + state: State::MT, + }, + Municipio { + ibge_code: 5101803, + name: "Barra do Garças", + state: State::MT, + }, + Municipio { + ibge_code: 5101605, + name: "Barão de Melgaço", + state: State::MT, + }, + Municipio { + ibge_code: 5101837, + name: "Boa Esperança do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5101852, + name: "Bom Jesus do Araguaia", + state: State::MT, + }, + Municipio { + ibge_code: 5101902, + name: "Brasnorte", + state: State::MT, + }, + Municipio { + ibge_code: 5102603, + name: "Campinápolis", + state: State::MT, + }, + Municipio { + ibge_code: 5102637, + name: "Campo Novo do Parecis", + state: State::MT, + }, + Municipio { + ibge_code: 5102678, + name: "Campo Verde", + state: State::MT, + }, + Municipio { + ibge_code: 5102686, + name: "Campos de Júlio", + state: State::MT, + }, + Municipio { + ibge_code: 5102694, + name: "Canabrava do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5102702, + name: "Canarana", + state: State::MT, + }, + Municipio { + ibge_code: 5102793, + name: "Carlinda", + state: State::MT, + }, + Municipio { + ibge_code: 5102850, + name: "Castanheira", + state: State::MT, + }, + Municipio { + ibge_code: 5103007, + name: "Chapada dos Guimarães", + state: State::MT, + }, + Municipio { + ibge_code: 5103056, + name: "Cláudia", + state: State::MT, + }, + Municipio { + ibge_code: 5103106, + name: "Cocalinho", + state: State::MT, + }, + Municipio { + ibge_code: 5103254, + name: "Colniza", + state: State::MT, + }, + Municipio { + ibge_code: 5103205, + name: "Colíder", + state: State::MT, + }, + Municipio { + ibge_code: 5103304, + name: "Comodoro", + state: State::MT, + }, + Municipio { + ibge_code: 5103353, + name: "Confresa", + state: State::MT, + }, + Municipio { + ibge_code: 5103361, + name: "Conquista D'Oeste", + state: State::MT, + }, + Municipio { + ibge_code: 5103379, + name: "Cotriguaçu", + state: State::MT, + }, + Municipio { + ibge_code: 5103403, + name: "Cuiabá", + state: State::MT, + }, + Municipio { + ibge_code: 5103437, + name: "Curvelândia", + state: State::MT, + }, + Municipio { + ibge_code: 5102504, + name: "Cáceres", + state: State::MT, + }, + Municipio { + ibge_code: 5103452, + name: "Denise", + state: State::MT, + }, + Municipio { + ibge_code: 5103502, + name: "Diamantino", + state: State::MT, + }, + Municipio { + ibge_code: 5103601, + name: "Dom Aquino", + state: State::MT, + }, + Municipio { + ibge_code: 5103700, + name: "Feliz Natal", + state: State::MT, + }, + Municipio { + ibge_code: 5103809, + name: "Figueirópolis D'Oeste", + state: State::MT, + }, + Municipio { + ibge_code: 5103858, + name: "Gaúcha do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5103908, + name: "General Carneiro", + state: State::MT, + }, + Municipio { + ibge_code: 5103957, + name: "Glória D'Oeste", + state: State::MT, + }, + Municipio { + ibge_code: 5104104, + name: "Guarantã do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5104203, + name: "Guiratinga", + state: State::MT, + }, + Municipio { + ibge_code: 5104500, + name: "Indiavaí", + state: State::MT, + }, + Municipio { + ibge_code: 5104526, + name: "Ipiranga do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5104542, + name: "Itanhangá", + state: State::MT, + }, + Municipio { + ibge_code: 5104559, + name: "Itaúba", + state: State::MT, + }, + Municipio { + ibge_code: 5104609, + name: "Itiquira", + state: State::MT, + }, + Municipio { + ibge_code: 5104807, + name: "Jaciara", + state: State::MT, + }, + Municipio { + ibge_code: 5104906, + name: "Jangada", + state: State::MT, + }, + Municipio { + ibge_code: 5105002, + name: "Jauru", + state: State::MT, + }, + Municipio { + ibge_code: 5105101, + name: "Juara", + state: State::MT, + }, + Municipio { + ibge_code: 5105176, + name: "Juruena", + state: State::MT, + }, + Municipio { + ibge_code: 5105200, + name: "Juscimeira", + state: State::MT, + }, + Municipio { + ibge_code: 5105150, + name: "Juína", + state: State::MT, + }, + Municipio { + ibge_code: 5105234, + name: "Lambari D'Oeste", + state: State::MT, + }, + Municipio { + ibge_code: 5105259, + name: "Lucas do Rio Verde", + state: State::MT, + }, + Municipio { + ibge_code: 5105309, + name: "Luciara", + state: State::MT, + }, + Municipio { + ibge_code: 5105580, + name: "Marcelândia", + state: State::MT, + }, + Municipio { + ibge_code: 5105606, + name: "Matupá", + state: State::MT, + }, + Municipio { + ibge_code: 5105622, + name: "Mirassol d'Oeste", + state: State::MT, + }, + Municipio { + ibge_code: 5105903, + name: "Nobres", + state: State::MT, + }, + Municipio { + ibge_code: 5106000, + name: "Nortelândia", + state: State::MT, + }, + Municipio { + ibge_code: 5106109, + name: "Nossa Senhora do Livramento", + state: State::MT, + }, + Municipio { + ibge_code: 5106158, + name: "Nova Bandeirantes", + state: State::MT, + }, + Municipio { + ibge_code: 5106208, + name: "Nova Brasilândia", + state: State::MT, + }, + Municipio { + ibge_code: 5106216, + name: "Nova Canaã do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5108808, + name: "Nova Guarita", + state: State::MT, + }, + Municipio { + ibge_code: 5106182, + name: "Nova Lacerda", + state: State::MT, + }, + Municipio { + ibge_code: 5108857, + name: "Nova Marilândia", + state: State::MT, + }, + Municipio { + ibge_code: 5108907, + name: "Nova Maringá", + state: State::MT, + }, + Municipio { + ibge_code: 5108956, + name: "Nova Monte Verde", + state: State::MT, + }, + Municipio { + ibge_code: 5106224, + name: "Nova Mutum", + state: State::MT, + }, + Municipio { + ibge_code: 5106174, + name: "Nova Nazaré", + state: State::MT, + }, + Municipio { + ibge_code: 5106232, + name: "Nova Olímpia", + state: State::MT, + }, + Municipio { + ibge_code: 5106190, + name: "Nova Santa Helena", + state: State::MT, + }, + Municipio { + ibge_code: 5106240, + name: "Nova Ubiratã", + state: State::MT, + }, + Municipio { + ibge_code: 5106257, + name: "Nova Xavantina", + state: State::MT, + }, + Municipio { + ibge_code: 5106273, + name: "Novo Horizonte do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5106265, + name: "Novo Mundo", + state: State::MT, + }, + Municipio { + ibge_code: 5106315, + name: "Novo Santo Antônio", + state: State::MT, + }, + Municipio { + ibge_code: 5106281, + name: "Novo São Joaquim", + state: State::MT, + }, + Municipio { + ibge_code: 5106307, + name: "Paranatinga", + state: State::MT, + }, + Municipio { + ibge_code: 5106299, + name: "Paranaíta", + state: State::MT, + }, + Municipio { + ibge_code: 5106372, + name: "Pedra Preta", + state: State::MT, + }, + Municipio { + ibge_code: 5106422, + name: "Peixoto de Azevedo", + state: State::MT, + }, + Municipio { + ibge_code: 5106455, + name: "Planalto da Serra", + state: State::MT, + }, + Municipio { + ibge_code: 5106505, + name: "Poconé", + state: State::MT, + }, + Municipio { + ibge_code: 5106653, + name: "Pontal do Araguaia", + state: State::MT, + }, + Municipio { + ibge_code: 5106703, + name: "Ponte Branca", + state: State::MT, + }, + Municipio { + ibge_code: 5106752, + name: "Pontes e Lacerda", + state: State::MT, + }, + Municipio { + ibge_code: 5106778, + name: "Porto Alegre do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5106828, + name: "Porto Esperidião", + state: State::MT, + }, + Municipio { + ibge_code: 5106851, + name: "Porto Estrela", + state: State::MT, + }, + Municipio { + ibge_code: 5106802, + name: "Porto dos Gaúchos", + state: State::MT, + }, + Municipio { + ibge_code: 5107008, + name: "Poxoréu", + state: State::MT, + }, + Municipio { + ibge_code: 5107040, + name: "Primavera do Leste", + state: State::MT, + }, + Municipio { + ibge_code: 5107065, + name: "Querência", + state: State::MT, + }, + Municipio { + ibge_code: 5107156, + name: "Reserva do Cabaçal", + state: State::MT, + }, + Municipio { + ibge_code: 5107180, + name: "Ribeirão Cascalheira", + state: State::MT, + }, + Municipio { + ibge_code: 5107198, + name: "Ribeirãozinho", + state: State::MT, + }, + Municipio { + ibge_code: 5107206, + name: "Rio Branco", + state: State::MT, + }, + Municipio { + ibge_code: 5107578, + name: "Rondolândia", + state: State::MT, + }, + Municipio { + ibge_code: 5107602, + name: "Rondonópolis", + state: State::MT, + }, + Municipio { + ibge_code: 5107701, + name: "Rosário Oeste", + state: State::MT, + }, + Municipio { + ibge_code: 5107750, + name: "Salto do Céu", + state: State::MT, + }, + Municipio { + ibge_code: 5107248, + name: "Santa Carmem", + state: State::MT, + }, + Municipio { + ibge_code: 5107743, + name: "Santa Cruz do Xingu", + state: State::MT, + }, + Municipio { + ibge_code: 5107768, + name: "Santa Rita do Trivelato", + state: State::MT, + }, + Municipio { + ibge_code: 5107776, + name: "Santa Terezinha", + state: State::MT, + }, + Municipio { + ibge_code: 5107263, + name: "Santo Afonso", + state: State::MT, + }, + Municipio { + ibge_code: 5107800, + name: "Santo Antônio de Leverger", + state: State::MT, + }, + Municipio { + ibge_code: 5107792, + name: "Santo Antônio do Leste", + state: State::MT, + }, + Municipio { + ibge_code: 5107875, + name: "Sapezal", + state: State::MT, + }, + Municipio { + ibge_code: 5107883, + name: "Serra Nova Dourada", + state: State::MT, + }, + Municipio { + ibge_code: 5107909, + name: "Sinop", + state: State::MT, + }, + Municipio { + ibge_code: 5107925, + name: "Sorriso", + state: State::MT, + }, + Municipio { + ibge_code: 5107859, + name: "São Félix do Araguaia", + state: State::MT, + }, + Municipio { + ibge_code: 5107297, + name: "São José do Povo", + state: State::MT, + }, + Municipio { + ibge_code: 5107305, + name: "São José do Rio Claro", + state: State::MT, + }, + Municipio { + ibge_code: 5107354, + name: "São José do Xingu", + state: State::MT, + }, + Municipio { + ibge_code: 5107107, + name: "São José dos Quatro Marcos", + state: State::MT, + }, + Municipio { + ibge_code: 5107404, + name: "São Pedro da Cipa", + state: State::MT, + }, + Municipio { + ibge_code: 5107941, + name: "Tabaporã", + state: State::MT, + }, + Municipio { + ibge_code: 5107958, + name: "Tangará da Serra", + state: State::MT, + }, + Municipio { + ibge_code: 5108006, + name: "Tapurah", + state: State::MT, + }, + Municipio { + ibge_code: 5108055, + name: "Terra Nova do Norte", + state: State::MT, + }, + Municipio { + ibge_code: 5108105, + name: "Tesouro", + state: State::MT, + }, + Municipio { + ibge_code: 5108204, + name: "Torixoréu", + state: State::MT, + }, + Municipio { + ibge_code: 5108303, + name: "União do Sul", + state: State::MT, + }, + Municipio { + ibge_code: 5108352, + name: "Vale de São Domingos", + state: State::MT, + }, + Municipio { + ibge_code: 5108501, + name: "Vera", + state: State::MT, + }, + Municipio { + ibge_code: 5105507, + name: "Vila Bela da Santíssima Trindade", + state: State::MT, + }, + Municipio { + ibge_code: 5108600, + name: "Vila Rica", + state: State::MT, + }, + Municipio { + ibge_code: 5108402, + name: "Várzea Grande", + state: State::MT, + }, + Municipio { + ibge_code: 5100201, + name: "Água Boa", + state: State::MT, + }, + Municipio { + ibge_code: 1500107, + name: "Abaetetuba", + state: State::PA, + }, + Municipio { + ibge_code: 1500131, + name: "Abel Figueiredo", + state: State::PA, + }, + Municipio { + ibge_code: 1500206, + name: "Acará", + state: State::PA, + }, + Municipio { + ibge_code: 1500305, + name: "Afuá", + state: State::PA, + }, + Municipio { + ibge_code: 1500404, + name: "Alenquer", + state: State::PA, + }, + Municipio { + ibge_code: 1500503, + name: "Almeirim", + state: State::PA, + }, + Municipio { + ibge_code: 1500602, + name: "Altamira", + state: State::PA, + }, + Municipio { + ibge_code: 1500701, + name: "Anajás", + state: State::PA, + }, + Municipio { + ibge_code: 1500800, + name: "Ananindeua", + state: State::PA, + }, + Municipio { + ibge_code: 1500859, + name: "Anapu", + state: State::PA, + }, + Municipio { + ibge_code: 1500909, + name: "Augusto Corrêa", + state: State::PA, + }, + Municipio { + ibge_code: 1500958, + name: "Aurora do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1501006, + name: "Aveiro", + state: State::PA, + }, + Municipio { + ibge_code: 1501105, + name: "Bagre", + state: State::PA, + }, + Municipio { + ibge_code: 1501204, + name: "Baião", + state: State::PA, + }, + Municipio { + ibge_code: 1501253, + name: "Bannach", + state: State::PA, + }, + Municipio { + ibge_code: 1501303, + name: "Barcarena", + state: State::PA, + }, + Municipio { + ibge_code: 1501451, + name: "Belterra", + state: State::PA, + }, + Municipio { + ibge_code: 1501402, + name: "Belém", + state: State::PA, + }, + Municipio { + ibge_code: 1501501, + name: "Benevides", + state: State::PA, + }, + Municipio { + ibge_code: 1501576, + name: "Bom Jesus do Tocantins", + state: State::PA, + }, + Municipio { + ibge_code: 1501600, + name: "Bonito", + state: State::PA, + }, + Municipio { + ibge_code: 1501709, + name: "Bragança", + state: State::PA, + }, + Municipio { + ibge_code: 1501725, + name: "Brasil Novo", + state: State::PA, + }, + Municipio { + ibge_code: 1501758, + name: "Brejo Grande do Araguaia", + state: State::PA, + }, + Municipio { + ibge_code: 1501782, + name: "Breu Branco", + state: State::PA, + }, + Municipio { + ibge_code: 1501808, + name: "Breves", + state: State::PA, + }, + Municipio { + ibge_code: 1501907, + name: "Bujaru", + state: State::PA, + }, + Municipio { + ibge_code: 1502004, + name: "Cachoeira do Arari", + state: State::PA, + }, + Municipio { + ibge_code: 1501956, + name: "Cachoeira do Piriá", + state: State::PA, + }, + Municipio { + ibge_code: 1502103, + name: "Cametá", + state: State::PA, + }, + Municipio { + ibge_code: 1502152, + name: "Canaã dos Carajás", + state: State::PA, + }, + Municipio { + ibge_code: 1502202, + name: "Capanema", + state: State::PA, + }, + Municipio { + ibge_code: 1502301, + name: "Capitão Poço", + state: State::PA, + }, + Municipio { + ibge_code: 1502400, + name: "Castanhal", + state: State::PA, + }, + Municipio { + ibge_code: 1502509, + name: "Chaves", + state: State::PA, + }, + Municipio { + ibge_code: 1502608, + name: "Colares", + state: State::PA, + }, + Municipio { + ibge_code: 1502707, + name: "Conceição do Araguaia", + state: State::PA, + }, + Municipio { + ibge_code: 1502756, + name: "Concórdia do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1502764, + name: "Cumaru do Norte", + state: State::PA, + }, + Municipio { + ibge_code: 1502772, + name: "Curionópolis", + state: State::PA, + }, + Municipio { + ibge_code: 1502806, + name: "Curralinho", + state: State::PA, + }, + Municipio { + ibge_code: 1502855, + name: "Curuá", + state: State::PA, + }, + Municipio { + ibge_code: 1502905, + name: "Curuçá", + state: State::PA, + }, + Municipio { + ibge_code: 1502939, + name: "Dom Eliseu", + state: State::PA, + }, + Municipio { + ibge_code: 1502954, + name: "Eldorado do Carajás", + state: State::PA, + }, + Municipio { + ibge_code: 1503002, + name: "Faro", + state: State::PA, + }, + Municipio { + ibge_code: 1503044, + name: "Floresta do Araguaia", + state: State::PA, + }, + Municipio { + ibge_code: 1503077, + name: "Garrafão do Norte", + state: State::PA, + }, + Municipio { + ibge_code: 1503093, + name: "Goianésia do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1503101, + name: "Gurupá", + state: State::PA, + }, + Municipio { + ibge_code: 1503200, + name: "Igarapé-Açu", + state: State::PA, + }, + Municipio { + ibge_code: 1503309, + name: "Igarapé-Miri", + state: State::PA, + }, + Municipio { + ibge_code: 1503408, + name: "Inhangapi", + state: State::PA, + }, + Municipio { + ibge_code: 1503457, + name: "Ipixuna do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1503507, + name: "Irituia", + state: State::PA, + }, + Municipio { + ibge_code: 1503606, + name: "Itaituba", + state: State::PA, + }, + Municipio { + ibge_code: 1503705, + name: "Itupiranga", + state: State::PA, + }, + Municipio { + ibge_code: 1503754, + name: "Jacareacanga", + state: State::PA, + }, + Municipio { + ibge_code: 1503804, + name: "Jacundá", + state: State::PA, + }, + Municipio { + ibge_code: 1503903, + name: "Juruti", + state: State::PA, + }, + Municipio { + ibge_code: 1504000, + name: "Limoeiro do Ajuru", + state: State::PA, + }, + Municipio { + ibge_code: 1504109, + name: "Magalhães Barata", + state: State::PA, + }, + Municipio { + ibge_code: 1504208, + name: "Marabá", + state: State::PA, + }, + Municipio { + ibge_code: 1504307, + name: "Maracanã", + state: State::PA, + }, + Municipio { + ibge_code: 1504406, + name: "Marapanim", + state: State::PA, + }, + Municipio { + ibge_code: 1504422, + name: "Marituba", + state: State::PA, + }, + Municipio { + ibge_code: 1504455, + name: "Medicilândia", + state: State::PA, + }, + Municipio { + ibge_code: 1504505, + name: "Melgaço", + state: State::PA, + }, + Municipio { + ibge_code: 1504604, + name: "Mocajuba", + state: State::PA, + }, + Municipio { + ibge_code: 1504703, + name: "Moju", + state: State::PA, + }, + Municipio { + ibge_code: 1504752, + name: "Mojuí dos Campos", + state: State::PA, + }, + Municipio { + ibge_code: 1504802, + name: "Monte Alegre", + state: State::PA, + }, + Municipio { + ibge_code: 1504901, + name: "Muaná", + state: State::PA, + }, + Municipio { + ibge_code: 1504059, + name: "Mãe do Rio", + state: State::PA, + }, + Municipio { + ibge_code: 1504950, + name: "Nova Esperança do Piriá", + state: State::PA, + }, + Municipio { + ibge_code: 1504976, + name: "Nova Ipixuna", + state: State::PA, + }, + Municipio { + ibge_code: 1505007, + name: "Nova Timboteua", + state: State::PA, + }, + Municipio { + ibge_code: 1505031, + name: "Novo Progresso", + state: State::PA, + }, + Municipio { + ibge_code: 1505064, + name: "Novo Repartimento", + state: State::PA, + }, + Municipio { + ibge_code: 1505205, + name: "Oeiras do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1505304, + name: "Oriximiná", + state: State::PA, + }, + Municipio { + ibge_code: 1505437, + name: "Ourilândia do Norte", + state: State::PA, + }, + Municipio { + ibge_code: 1505403, + name: "Ourém", + state: State::PA, + }, + Municipio { + ibge_code: 1505486, + name: "Pacajá", + state: State::PA, + }, + Municipio { + ibge_code: 1505494, + name: "Palestina do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1505502, + name: "Paragominas", + state: State::PA, + }, + Municipio { + ibge_code: 1505536, + name: "Parauapebas", + state: State::PA, + }, + Municipio { + ibge_code: 1505551, + name: "Pau D'Arco", + state: State::PA, + }, + Municipio { + ibge_code: 1505601, + name: "Peixe-Boi", + state: State::PA, + }, + Municipio { + ibge_code: 1505635, + name: "Piçarra", + state: State::PA, + }, + Municipio { + ibge_code: 1505650, + name: "Placas", + state: State::PA, + }, + Municipio { + ibge_code: 1505700, + name: "Ponta de Pedras", + state: State::PA, + }, + Municipio { + ibge_code: 1505809, + name: "Portel", + state: State::PA, + }, + Municipio { + ibge_code: 1505908, + name: "Porto de Moz", + state: State::PA, + }, + Municipio { + ibge_code: 1506005, + name: "Prainha", + state: State::PA, + }, + Municipio { + ibge_code: 1506104, + name: "Primavera", + state: State::PA, + }, + Municipio { + ibge_code: 1506112, + name: "Quatipuru", + state: State::PA, + }, + Municipio { + ibge_code: 1506138, + name: "Redenção", + state: State::PA, + }, + Municipio { + ibge_code: 1506161, + name: "Rio Maria", + state: State::PA, + }, + Municipio { + ibge_code: 1506187, + name: "Rondon do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1506195, + name: "Rurópolis", + state: State::PA, + }, + Municipio { + ibge_code: 1506203, + name: "Salinópolis", + state: State::PA, + }, + Municipio { + ibge_code: 1506302, + name: "Salvaterra", + state: State::PA, + }, + Municipio { + ibge_code: 1506351, + name: "Santa Bárbara do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1506401, + name: "Santa Cruz do Arari", + state: State::PA, + }, + Municipio { + ibge_code: 1506500, + name: "Santa Izabel do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1506559, + name: "Santa Luzia do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1506583, + name: "Santa Maria das Barreiras", + state: State::PA, + }, + Municipio { + ibge_code: 1506609, + name: "Santa Maria do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1506708, + name: "Santana do Araguaia", + state: State::PA, + }, + Municipio { + ibge_code: 1506807, + name: "Santarém", + state: State::PA, + }, + Municipio { + ibge_code: 1506906, + name: "Santarém Novo", + state: State::PA, + }, + Municipio { + ibge_code: 1507003, + name: "Santo Antônio do Tauá", + state: State::PA, + }, + Municipio { + ibge_code: 1507755, + name: "Sapucaia", + state: State::PA, + }, + Municipio { + ibge_code: 1507805, + name: "Senador José Porfírio", + state: State::PA, + }, + Municipio { + ibge_code: 1507904, + name: "Soure", + state: State::PA, + }, + Municipio { + ibge_code: 1507102, + name: "São Caetano de Odivelas", + state: State::PA, + }, + Municipio { + ibge_code: 1507151, + name: "São Domingos do Araguaia", + state: State::PA, + }, + Municipio { + ibge_code: 1507201, + name: "São Domingos do Capim", + state: State::PA, + }, + Municipio { + ibge_code: 1507409, + name: "São Francisco do Pará", + state: State::PA, + }, + Municipio { + ibge_code: 1507300, + name: "São Félix do Xingu", + state: State::PA, + }, + Municipio { + ibge_code: 1507458, + name: "São Geraldo do Araguaia", + state: State::PA, + }, + Municipio { + ibge_code: 1507466, + name: "São João da Ponta", + state: State::PA, + }, + Municipio { + ibge_code: 1507474, + name: "São João de Pirabas", + state: State::PA, + }, + Municipio { + ibge_code: 1507508, + name: "São João do Araguaia", + state: State::PA, + }, + Municipio { + ibge_code: 1507607, + name: "São Miguel do Guamá", + state: State::PA, + }, + Municipio { + ibge_code: 1507706, + name: "São Sebastião da Boa Vista", + state: State::PA, + }, + Municipio { + ibge_code: 1507953, + name: "Tailândia", + state: State::PA, + }, + Municipio { + ibge_code: 1507961, + name: "Terra Alta", + state: State::PA, + }, + Municipio { + ibge_code: 1507979, + name: "Terra Santa", + state: State::PA, + }, + Municipio { + ibge_code: 1508001, + name: "Tomé-Açu", + state: State::PA, + }, + Municipio { + ibge_code: 1508035, + name: "Tracuateua", + state: State::PA, + }, + Municipio { + ibge_code: 1508050, + name: "Trairão", + state: State::PA, + }, + Municipio { + ibge_code: 1508084, + name: "Tucumã", + state: State::PA, + }, + Municipio { + ibge_code: 1508100, + name: "Tucuruí", + state: State::PA, + }, + Municipio { + ibge_code: 1508126, + name: "Ulianópolis", + state: State::PA, + }, + Municipio { + ibge_code: 1508159, + name: "Uruará", + state: State::PA, + }, + Municipio { + ibge_code: 1508209, + name: "Vigia", + state: State::PA, + }, + Municipio { + ibge_code: 1508308, + name: "Viseu", + state: State::PA, + }, + Municipio { + ibge_code: 1508357, + name: "Vitória do Xingu", + state: State::PA, + }, + Municipio { + ibge_code: 1508407, + name: "Xinguara", + state: State::PA, + }, + Municipio { + ibge_code: 1500347, + name: "Água Azul do Norte", + state: State::PA, + }, + Municipio { + ibge_code: 1505106, + name: "Óbidos", + state: State::PA, + }, + Municipio { + ibge_code: 2500205, + name: "Aguiar", + state: State::PB, + }, + Municipio { + ibge_code: 2500304, + name: "Alagoa Grande", + state: State::PB, + }, + Municipio { + ibge_code: 2500403, + name: "Alagoa Nova", + state: State::PB, + }, + Municipio { + ibge_code: 2500502, + name: "Alagoinha", + state: State::PB, + }, + Municipio { + ibge_code: 2500536, + name: "Alcantil", + state: State::PB, + }, + Municipio { + ibge_code: 2500577, + name: "Algodão de Jandaíra", + state: State::PB, + }, + Municipio { + ibge_code: 2500601, + name: "Alhandra", + state: State::PB, + }, + Municipio { + ibge_code: 2500734, + name: "Amparo", + state: State::PB, + }, + Municipio { + ibge_code: 2500775, + name: "Aparecida", + state: State::PB, + }, + Municipio { + ibge_code: 2500908, + name: "Arara", + state: State::PB, + }, + Municipio { + ibge_code: 2501005, + name: "Araruna", + state: State::PB, + }, + Municipio { + ibge_code: 2500809, + name: "Araçagi", + state: State::PB, + }, + Municipio { + ibge_code: 2501104, + name: "Areia", + state: State::PB, + }, + Municipio { + ibge_code: 2501153, + name: "Areia de Baraúnas", + state: State::PB, + }, + Municipio { + ibge_code: 2501203, + name: "Areial", + state: State::PB, + }, + Municipio { + ibge_code: 2501302, + name: "Aroeiras", + state: State::PB, + }, + Municipio { + ibge_code: 2501351, + name: "Assunção", + state: State::PB, + }, + Municipio { + ibge_code: 2501500, + name: "Bananeiras", + state: State::PB, + }, + Municipio { + ibge_code: 2501534, + name: "Baraúna", + state: State::PB, + }, + Municipio { + ibge_code: 2501609, + name: "Barra de Santa Rosa", + state: State::PB, + }, + Municipio { + ibge_code: 2501575, + name: "Barra de Santana", + state: State::PB, + }, + Municipio { + ibge_code: 2501708, + name: "Barra de São Miguel", + state: State::PB, + }, + Municipio { + ibge_code: 2501807, + name: "Bayeux", + state: State::PB, + }, + Municipio { + ibge_code: 2501401, + name: "Baía da Traição", + state: State::PB, + }, + Municipio { + ibge_code: 2501906, + name: "Belém", + state: State::PB, + }, + Municipio { + ibge_code: 2502003, + name: "Belém do Brejo do Cruz", + state: State::PB, + }, + Municipio { + ibge_code: 2502052, + name: "Bernardino Batista", + state: State::PB, + }, + Municipio { + ibge_code: 2502102, + name: "Boa Ventura", + state: State::PB, + }, + Municipio { + ibge_code: 2502151, + name: "Boa Vista", + state: State::PB, + }, + Municipio { + ibge_code: 2502201, + name: "Bom Jesus", + state: State::PB, + }, + Municipio { + ibge_code: 2502300, + name: "Bom Sucesso", + state: State::PB, + }, + Municipio { + ibge_code: 2502409, + name: "Bonito de Santa Fé", + state: State::PB, + }, + Municipio { + ibge_code: 2502508, + name: "Boqueirão", + state: State::PB, + }, + Municipio { + ibge_code: 2502706, + name: "Borborema", + state: State::PB, + }, + Municipio { + ibge_code: 2502805, + name: "Brejo do Cruz", + state: State::PB, + }, + Municipio { + ibge_code: 2502904, + name: "Brejo dos Santos", + state: State::PB, + }, + Municipio { + ibge_code: 2503001, + name: "Caaporã", + state: State::PB, + }, + Municipio { + ibge_code: 2503100, + name: "Cabaceiras", + state: State::PB, + }, + Municipio { + ibge_code: 2503209, + name: "Cabedelo", + state: State::PB, + }, + Municipio { + ibge_code: 2503308, + name: "Cachoeira dos Índios", + state: State::PB, + }, + Municipio { + ibge_code: 2503407, + name: "Cacimba de Areia", + state: State::PB, + }, + Municipio { + ibge_code: 2503506, + name: "Cacimba de Dentro", + state: State::PB, + }, + Municipio { + ibge_code: 2503555, + name: "Cacimbas", + state: State::PB, + }, + Municipio { + ibge_code: 2503605, + name: "Caiçara", + state: State::PB, + }, + Municipio { + ibge_code: 2503704, + name: "Cajazeiras", + state: State::PB, + }, + Municipio { + ibge_code: 2503753, + name: "Cajazeirinhas", + state: State::PB, + }, + Municipio { + ibge_code: 2503803, + name: "Caldas Brandão", + state: State::PB, + }, + Municipio { + ibge_code: 2503902, + name: "Camalaú", + state: State::PB, + }, + Municipio { + ibge_code: 2504009, + name: "Campina Grande", + state: State::PB, + }, + Municipio { + ibge_code: 2504033, + name: "Capim", + state: State::PB, + }, + Municipio { + ibge_code: 2504074, + name: "Caraúbas", + state: State::PB, + }, + Municipio { + ibge_code: 2504108, + name: "Carrapateira", + state: State::PB, + }, + Municipio { + ibge_code: 2504157, + name: "Casserengue", + state: State::PB, + }, + Municipio { + ibge_code: 2504207, + name: "Catingueira", + state: State::PB, + }, + Municipio { + ibge_code: 2504306, + name: "Catolé do Rocha", + state: State::PB, + }, + Municipio { + ibge_code: 2504355, + name: "Caturité", + state: State::PB, + }, + Municipio { + ibge_code: 2504405, + name: "Conceição", + state: State::PB, + }, + Municipio { + ibge_code: 2504504, + name: "Condado", + state: State::PB, + }, + Municipio { + ibge_code: 2504603, + name: "Conde", + state: State::PB, + }, + Municipio { + ibge_code: 2504702, + name: "Congo", + state: State::PB, + }, + Municipio { + ibge_code: 2504801, + name: "Coremas", + state: State::PB, + }, + Municipio { + ibge_code: 2504850, + name: "Coxixola", + state: State::PB, + }, + Municipio { + ibge_code: 2504900, + name: "Cruz do Espírito Santo", + state: State::PB, + }, + Municipio { + ibge_code: 2505006, + name: "Cubati", + state: State::PB, + }, + Municipio { + ibge_code: 2505204, + name: "Cuitegi", + state: State::PB, + }, + Municipio { + ibge_code: 2505105, + name: "Cuité", + state: State::PB, + }, + Municipio { + ibge_code: 2505238, + name: "Cuité de Mamanguape", + state: State::PB, + }, + Municipio { + ibge_code: 2505303, + name: "Curral Velho", + state: State::PB, + }, + Municipio { + ibge_code: 2505279, + name: "Curral de Cima", + state: State::PB, + }, + Municipio { + ibge_code: 2505352, + name: "Damião", + state: State::PB, + }, + Municipio { + ibge_code: 2505402, + name: "Desterro", + state: State::PB, + }, + Municipio { + ibge_code: 2505600, + name: "Diamante", + state: State::PB, + }, + Municipio { + ibge_code: 2505709, + name: "Dona Inês", + state: State::PB, + }, + Municipio { + ibge_code: 2505808, + name: "Duas Estradas", + state: State::PB, + }, + Municipio { + ibge_code: 2505907, + name: "Emas", + state: State::PB, + }, + Municipio { + ibge_code: 2506004, + name: "Esperança", + state: State::PB, + }, + Municipio { + ibge_code: 2506103, + name: "Fagundes", + state: State::PB, + }, + Municipio { + ibge_code: 2506202, + name: "Frei Martinho", + state: State::PB, + }, + Municipio { + ibge_code: 2506251, + name: "Gado Bravo", + state: State::PB, + }, + Municipio { + ibge_code: 2506301, + name: "Guarabira", + state: State::PB, + }, + Municipio { + ibge_code: 2506400, + name: "Gurinhém", + state: State::PB, + }, + Municipio { + ibge_code: 2506509, + name: "Gurjão", + state: State::PB, + }, + Municipio { + ibge_code: 2506608, + name: "Ibiara", + state: State::PB, + }, + Municipio { + ibge_code: 2502607, + name: "Igaracy", + state: State::PB, + }, + Municipio { + ibge_code: 2506707, + name: "Imaculada", + state: State::PB, + }, + Municipio { + ibge_code: 2506806, + name: "Ingá", + state: State::PB, + }, + Municipio { + ibge_code: 2506905, + name: "Itabaiana", + state: State::PB, + }, + Municipio { + ibge_code: 2507002, + name: "Itaporanga", + state: State::PB, + }, + Municipio { + ibge_code: 2507101, + name: "Itapororoca", + state: State::PB, + }, + Municipio { + ibge_code: 2507200, + name: "Itatuba", + state: State::PB, + }, + Municipio { + ibge_code: 2507309, + name: "Jacaraú", + state: State::PB, + }, + Municipio { + ibge_code: 2507408, + name: "Jericó", + state: State::PB, + }, + Municipio { + ibge_code: 2513653, + name: "Joca Claudino", + state: State::PB, + }, + Municipio { + ibge_code: 2507507, + name: "João Pessoa", + state: State::PB, + }, + Municipio { + ibge_code: 2507606, + name: "Juarez Távora", + state: State::PB, + }, + Municipio { + ibge_code: 2507705, + name: "Juazeirinho", + state: State::PB, + }, + Municipio { + ibge_code: 2507804, + name: "Junco do Seridó", + state: State::PB, + }, + Municipio { + ibge_code: 2507903, + name: "Juripiranga", + state: State::PB, + }, + Municipio { + ibge_code: 2508000, + name: "Juru", + state: State::PB, + }, + Municipio { + ibge_code: 2508109, + name: "Lagoa", + state: State::PB, + }, + Municipio { + ibge_code: 2508307, + name: "Lagoa Seca", + state: State::PB, + }, + Municipio { + ibge_code: 2508208, + name: "Lagoa de Dentro", + state: State::PB, + }, + Municipio { + ibge_code: 2508406, + name: "Lastro", + state: State::PB, + }, + Municipio { + ibge_code: 2508505, + name: "Livramento", + state: State::PB, + }, + Municipio { + ibge_code: 2508554, + name: "Logradouro", + state: State::PB, + }, + Municipio { + ibge_code: 2508604, + name: "Lucena", + state: State::PB, + }, + Municipio { + ibge_code: 2508802, + name: "Malta", + state: State::PB, + }, + Municipio { + ibge_code: 2508901, + name: "Mamanguape", + state: State::PB, + }, + Municipio { + ibge_code: 2509008, + name: "Manaíra", + state: State::PB, + }, + Municipio { + ibge_code: 2509057, + name: "Marcação", + state: State::PB, + }, + Municipio { + ibge_code: 2509107, + name: "Mari", + state: State::PB, + }, + Municipio { + ibge_code: 2509156, + name: "Marizópolis", + state: State::PB, + }, + Municipio { + ibge_code: 2509206, + name: "Massaranduba", + state: State::PB, + }, + Municipio { + ibge_code: 2509305, + name: "Mataraca", + state: State::PB, + }, + Municipio { + ibge_code: 2509339, + name: "Matinhas", + state: State::PB, + }, + Municipio { + ibge_code: 2509370, + name: "Mato Grosso", + state: State::PB, + }, + Municipio { + ibge_code: 2509396, + name: "Maturéia", + state: State::PB, + }, + Municipio { + ibge_code: 2509404, + name: "Mogeiro", + state: State::PB, + }, + Municipio { + ibge_code: 2509503, + name: "Montadas", + state: State::PB, + }, + Municipio { + ibge_code: 2509602, + name: "Monte Horebe", + state: State::PB, + }, + Municipio { + ibge_code: 2509701, + name: "Monteiro", + state: State::PB, + }, + Municipio { + ibge_code: 2509800, + name: "Mulungu", + state: State::PB, + }, + Municipio { + ibge_code: 2508703, + name: "Mãe d'Água", + state: State::PB, + }, + Municipio { + ibge_code: 2509909, + name: "Natuba", + state: State::PB, + }, + Municipio { + ibge_code: 2510006, + name: "Nazarezinho", + state: State::PB, + }, + Municipio { + ibge_code: 2510105, + name: "Nova Floresta", + state: State::PB, + }, + Municipio { + ibge_code: 2510204, + name: "Nova Olinda", + state: State::PB, + }, + Municipio { + ibge_code: 2510303, + name: "Nova Palmeira", + state: State::PB, + }, + Municipio { + ibge_code: 2510402, + name: "Olho d'Água", + state: State::PB, + }, + Municipio { + ibge_code: 2510501, + name: "Olivedos", + state: State::PB, + }, + Municipio { + ibge_code: 2510600, + name: "Ouro Velho", + state: State::PB, + }, + Municipio { + ibge_code: 2510659, + name: "Parari", + state: State::PB, + }, + Municipio { + ibge_code: 2510709, + name: "Passagem", + state: State::PB, + }, + Municipio { + ibge_code: 2510808, + name: "Patos", + state: State::PB, + }, + Municipio { + ibge_code: 2510907, + name: "Paulista", + state: State::PB, + }, + Municipio { + ibge_code: 2511004, + name: "Pedra Branca", + state: State::PB, + }, + Municipio { + ibge_code: 2511103, + name: "Pedra Lavrada", + state: State::PB, + }, + Municipio { + ibge_code: 2511202, + name: "Pedras de Fogo", + state: State::PB, + }, + Municipio { + ibge_code: 2512721, + name: "Pedro Régis", + state: State::PB, + }, + Municipio { + ibge_code: 2511301, + name: "Piancó", + state: State::PB, + }, + Municipio { + ibge_code: 2511400, + name: "Picuí", + state: State::PB, + }, + Municipio { + ibge_code: 2511509, + name: "Pilar", + state: State::PB, + }, + Municipio { + ibge_code: 2511608, + name: "Pilões", + state: State::PB, + }, + Municipio { + ibge_code: 2511707, + name: "Pilõezinhos", + state: State::PB, + }, + Municipio { + ibge_code: 2511806, + name: "Pirpirituba", + state: State::PB, + }, + Municipio { + ibge_code: 2511905, + name: "Pitimbu", + state: State::PB, + }, + Municipio { + ibge_code: 2512002, + name: "Pocinhos", + state: State::PB, + }, + Municipio { + ibge_code: 2512101, + name: "Pombal", + state: State::PB, + }, + Municipio { + ibge_code: 2512036, + name: "Poço Dantas", + state: State::PB, + }, + Municipio { + ibge_code: 2512077, + name: "Poço de José de Moura", + state: State::PB, + }, + Municipio { + ibge_code: 2512200, + name: "Prata", + state: State::PB, + }, + Municipio { + ibge_code: 2512309, + name: "Princesa Isabel", + state: State::PB, + }, + Municipio { + ibge_code: 2512408, + name: "Puxinanã", + state: State::PB, + }, + Municipio { + ibge_code: 2512507, + name: "Queimadas", + state: State::PB, + }, + Municipio { + ibge_code: 2512606, + name: "Quixaba", + state: State::PB, + }, + Municipio { + ibge_code: 2512705, + name: "Remígio", + state: State::PB, + }, + Municipio { + ibge_code: 2512788, + name: "Riacho de Santo Antônio", + state: State::PB, + }, + Municipio { + ibge_code: 2512804, + name: "Riacho dos Cavalos", + state: State::PB, + }, + Municipio { + ibge_code: 2512747, + name: "Riachão", + state: State::PB, + }, + Municipio { + ibge_code: 2512754, + name: "Riachão do Bacamarte", + state: State::PB, + }, + Municipio { + ibge_code: 2512762, + name: "Riachão do Poço", + state: State::PB, + }, + Municipio { + ibge_code: 2512903, + name: "Rio Tinto", + state: State::PB, + }, + Municipio { + ibge_code: 2513000, + name: "Salgadinho", + state: State::PB, + }, + Municipio { + ibge_code: 2513109, + name: "Salgado de São Félix", + state: State::PB, + }, + Municipio { + ibge_code: 2513158, + name: "Santa Cecília", + state: State::PB, + }, + Municipio { + ibge_code: 2513208, + name: "Santa Cruz", + state: State::PB, + }, + Municipio { + ibge_code: 2513307, + name: "Santa Helena", + state: State::PB, + }, + Municipio { + ibge_code: 2513356, + name: "Santa Inês", + state: State::PB, + }, + Municipio { + ibge_code: 2513406, + name: "Santa Luzia", + state: State::PB, + }, + Municipio { + ibge_code: 2513703, + name: "Santa Rita", + state: State::PB, + }, + Municipio { + ibge_code: 2513802, + name: "Santa Teresinha", + state: State::PB, + }, + Municipio { + ibge_code: 2513505, + name: "Santana de Mangueira", + state: State::PB, + }, + Municipio { + ibge_code: 2513604, + name: "Santana dos Garrotes", + state: State::PB, + }, + Municipio { + ibge_code: 2513851, + name: "Santo André", + state: State::PB, + }, + Municipio { + ibge_code: 2515302, + name: "Sapé", + state: State::PB, + }, + Municipio { + ibge_code: 2515500, + name: "Serra Branca", + state: State::PB, + }, + Municipio { + ibge_code: 2515708, + name: "Serra Grande", + state: State::PB, + }, + Municipio { + ibge_code: 2515807, + name: "Serra Redonda", + state: State::PB, + }, + Municipio { + ibge_code: 2515609, + name: "Serra da Raiz", + state: State::PB, + }, + Municipio { + ibge_code: 2515906, + name: "Serraria", + state: State::PB, + }, + Municipio { + ibge_code: 2515930, + name: "Sertãozinho", + state: State::PB, + }, + Municipio { + ibge_code: 2515971, + name: "Sobrado", + state: State::PB, + }, + Municipio { + ibge_code: 2516102, + name: "Soledade", + state: State::PB, + }, + Municipio { + ibge_code: 2516003, + name: "Solânea", + state: State::PB, + }, + Municipio { + ibge_code: 2516151, + name: "Sossêgo", + state: State::PB, + }, + Municipio { + ibge_code: 2516201, + name: "Sousa", + state: State::PB, + }, + Municipio { + ibge_code: 2516300, + name: "Sumé", + state: State::PB, + }, + Municipio { + ibge_code: 2513927, + name: "São Bentinho", + state: State::PB, + }, + Municipio { + ibge_code: 2513901, + name: "São Bento", + state: State::PB, + }, + Municipio { + ibge_code: 2513968, + name: "São Domingos", + state: State::PB, + }, + Municipio { + ibge_code: 2513943, + name: "São Domingos do Cariri", + state: State::PB, + }, + Municipio { + ibge_code: 2513984, + name: "São Francisco", + state: State::PB, + }, + Municipio { + ibge_code: 2514206, + name: "São José da Lagoa Tapada", + state: State::PB, + }, + Municipio { + ibge_code: 2514305, + name: "São José de Caiana", + state: State::PB, + }, + Municipio { + ibge_code: 2514404, + name: "São José de Espinharas", + state: State::PB, + }, + Municipio { + ibge_code: 2514503, + name: "São José de Piranhas", + state: State::PB, + }, + Municipio { + ibge_code: 2514552, + name: "São José de Princesa", + state: State::PB, + }, + Municipio { + ibge_code: 2514602, + name: "São José do Bonfim", + state: State::PB, + }, + Municipio { + ibge_code: 2514651, + name: "São José do Brejo do Cruz", + state: State::PB, + }, + Municipio { + ibge_code: 2514701, + name: "São José do Sabugi", + state: State::PB, + }, + Municipio { + ibge_code: 2514800, + name: "São José dos Cordeiros", + state: State::PB, + }, + Municipio { + ibge_code: 2514453, + name: "São José dos Ramos", + state: State::PB, + }, + Municipio { + ibge_code: 2514008, + name: "São João do Cariri", + state: State::PB, + }, + Municipio { + ibge_code: 2500700, + name: "São João do Rio do Peixe", + state: State::PB, + }, + Municipio { + ibge_code: 2514107, + name: "São João do Tigre", + state: State::PB, + }, + Municipio { + ibge_code: 2514909, + name: "São Mamede", + state: State::PB, + }, + Municipio { + ibge_code: 2515005, + name: "São Miguel de Taipu", + state: State::PB, + }, + Municipio { + ibge_code: 2515104, + name: "São Sebastião de Lagoa de Roça", + state: State::PB, + }, + Municipio { + ibge_code: 2515203, + name: "São Sebastião do Umbuzeiro", + state: State::PB, + }, + Municipio { + ibge_code: 2515401, + name: "São Vicente do Seridó", + state: State::PB, + }, + Municipio { + ibge_code: 2516409, + name: "Tacima", + state: State::PB, + }, + Municipio { + ibge_code: 2516508, + name: "Taperoá", + state: State::PB, + }, + Municipio { + ibge_code: 2516607, + name: "Tavares", + state: State::PB, + }, + Municipio { + ibge_code: 2516706, + name: "Teixeira", + state: State::PB, + }, + Municipio { + ibge_code: 2516755, + name: "Tenório", + state: State::PB, + }, + Municipio { + ibge_code: 2516805, + name: "Triunfo", + state: State::PB, + }, + Municipio { + ibge_code: 2516904, + name: "Uiraúna", + state: State::PB, + }, + Municipio { + ibge_code: 2517001, + name: "Umbuzeiro", + state: State::PB, + }, + Municipio { + ibge_code: 2517209, + name: "Vieirópolis", + state: State::PB, + }, + Municipio { + ibge_code: 2505501, + name: "Vista Serrana", + state: State::PB, + }, + Municipio { + ibge_code: 2517100, + name: "Várzea", + state: State::PB, + }, + Municipio { + ibge_code: 2517407, + name: "Zabelê", + state: State::PB, + }, + Municipio { + ibge_code: 2500106, + name: "Água Branca", + state: State::PB, + }, + Municipio { + ibge_code: 2600054, + name: "Abreu e Lima", + state: State::PE, + }, + Municipio { + ibge_code: 2600104, + name: "Afogados da Ingazeira", + state: State::PE, + }, + Municipio { + ibge_code: 2600203, + name: "Afrânio", + state: State::PE, + }, + Municipio { + ibge_code: 2600302, + name: "Agrestina", + state: State::PE, + }, + Municipio { + ibge_code: 2600609, + name: "Alagoinha", + state: State::PE, + }, + Municipio { + ibge_code: 2600708, + name: "Aliança", + state: State::PE, + }, + Municipio { + ibge_code: 2600807, + name: "Altinho", + state: State::PE, + }, + Municipio { + ibge_code: 2600906, + name: "Amaraji", + state: State::PE, + }, + Municipio { + ibge_code: 2601003, + name: "Angelim", + state: State::PE, + }, + Municipio { + ibge_code: 2601102, + name: "Araripina", + state: State::PE, + }, + Municipio { + ibge_code: 2601052, + name: "Araçoiaba", + state: State::PE, + }, + Municipio { + ibge_code: 2601201, + name: "Arcoverde", + state: State::PE, + }, + Municipio { + ibge_code: 2601300, + name: "Barra de Guabiraba", + state: State::PE, + }, + Municipio { + ibge_code: 2601409, + name: "Barreiros", + state: State::PE, + }, + Municipio { + ibge_code: 2601706, + name: "Belo Jardim", + state: State::PE, + }, + Municipio { + ibge_code: 2601508, + name: "Belém de Maria", + state: State::PE, + }, + Municipio { + ibge_code: 2601607, + name: "Belém do São Francisco", + state: State::PE, + }, + Municipio { + ibge_code: 2601805, + name: "Betânia", + state: State::PE, + }, + Municipio { + ibge_code: 2601904, + name: "Bezerros", + state: State::PE, + }, + Municipio { + ibge_code: 2602001, + name: "Bodocó", + state: State::PE, + }, + Municipio { + ibge_code: 2602100, + name: "Bom Conselho", + state: State::PE, + }, + Municipio { + ibge_code: 2602209, + name: "Bom Jardim", + state: State::PE, + }, + Municipio { + ibge_code: 2602308, + name: "Bonito", + state: State::PE, + }, + Municipio { + ibge_code: 2602506, + name: "Brejinho", + state: State::PE, + }, + Municipio { + ibge_code: 2602605, + name: "Brejo da Madre de Deus", + state: State::PE, + }, + Municipio { + ibge_code: 2602407, + name: "Brejão", + state: State::PE, + }, + Municipio { + ibge_code: 2602704, + name: "Buenos Aires", + state: State::PE, + }, + Municipio { + ibge_code: 2602803, + name: "Buíque", + state: State::PE, + }, + Municipio { + ibge_code: 2602902, + name: "Cabo de Santo Agostinho", + state: State::PE, + }, + Municipio { + ibge_code: 2603009, + name: "Cabrobó", + state: State::PE, + }, + Municipio { + ibge_code: 2603108, + name: "Cachoeirinha", + state: State::PE, + }, + Municipio { + ibge_code: 2603207, + name: "Caetés", + state: State::PE, + }, + Municipio { + ibge_code: 2603405, + name: "Calumbi", + state: State::PE, + }, + Municipio { + ibge_code: 2603306, + name: "Calçado", + state: State::PE, + }, + Municipio { + ibge_code: 2603454, + name: "Camaragibe", + state: State::PE, + }, + Municipio { + ibge_code: 2603504, + name: "Camocim de São Félix", + state: State::PE, + }, + Municipio { + ibge_code: 2603603, + name: "Camutanga", + state: State::PE, + }, + Municipio { + ibge_code: 2603702, + name: "Canhotinho", + state: State::PE, + }, + Municipio { + ibge_code: 2603801, + name: "Capoeiras", + state: State::PE, + }, + Municipio { + ibge_code: 2603926, + name: "Carnaubeira da Penha", + state: State::PE, + }, + Municipio { + ibge_code: 2603900, + name: "Carnaíba", + state: State::PE, + }, + Municipio { + ibge_code: 2604007, + name: "Carpina", + state: State::PE, + }, + Municipio { + ibge_code: 2604106, + name: "Caruaru", + state: State::PE, + }, + Municipio { + ibge_code: 2604155, + name: "Casinhas", + state: State::PE, + }, + Municipio { + ibge_code: 2604205, + name: "Catende", + state: State::PE, + }, + Municipio { + ibge_code: 2604304, + name: "Cedro", + state: State::PE, + }, + Municipio { + ibge_code: 2604502, + name: "Chã Grande", + state: State::PE, + }, + Municipio { + ibge_code: 2604403, + name: "Chã de Alegria", + state: State::PE, + }, + Municipio { + ibge_code: 2604601, + name: "Condado", + state: State::PE, + }, + Municipio { + ibge_code: 2604700, + name: "Correntes", + state: State::PE, + }, + Municipio { + ibge_code: 2604809, + name: "Cortês", + state: State::PE, + }, + Municipio { + ibge_code: 2604908, + name: "Cumaru", + state: State::PE, + }, + Municipio { + ibge_code: 2605004, + name: "Cupira", + state: State::PE, + }, + Municipio { + ibge_code: 2605103, + name: "Custódia", + state: State::PE, + }, + Municipio { + ibge_code: 2605152, + name: "Dormentes", + state: State::PE, + }, + Municipio { + ibge_code: 2605202, + name: "Escada", + state: State::PE, + }, + Municipio { + ibge_code: 2605301, + name: "Exu", + state: State::PE, + }, + Municipio { + ibge_code: 2605400, + name: "Feira Nova", + state: State::PE, + }, + Municipio { + ibge_code: 2605459, + name: "Fernando de Noronha", + state: State::PE, + }, + Municipio { + ibge_code: 2605509, + name: "Ferreiros", + state: State::PE, + }, + Municipio { + ibge_code: 2605608, + name: "Flores", + state: State::PE, + }, + Municipio { + ibge_code: 2605707, + name: "Floresta", + state: State::PE, + }, + Municipio { + ibge_code: 2605806, + name: "Frei Miguelinho", + state: State::PE, + }, + Municipio { + ibge_code: 2605905, + name: "Gameleira", + state: State::PE, + }, + Municipio { + ibge_code: 2606002, + name: "Garanhuns", + state: State::PE, + }, + Municipio { + ibge_code: 2606101, + name: "Glória do Goitá", + state: State::PE, + }, + Municipio { + ibge_code: 2606200, + name: "Goiana", + state: State::PE, + }, + Municipio { + ibge_code: 2606309, + name: "Granito", + state: State::PE, + }, + Municipio { + ibge_code: 2606408, + name: "Gravatá", + state: State::PE, + }, + Municipio { + ibge_code: 2606507, + name: "Iati", + state: State::PE, + }, + Municipio { + ibge_code: 2606606, + name: "Ibimirim", + state: State::PE, + }, + Municipio { + ibge_code: 2606705, + name: "Ibirajuba", + state: State::PE, + }, + Municipio { + ibge_code: 2606804, + name: "Igarassu", + state: State::PE, + }, + Municipio { + ibge_code: 2606903, + name: "Iguaracy", + state: State::PE, + }, + Municipio { + ibge_code: 2607604, + name: "Ilha de Itamaracá", + state: State::PE, + }, + Municipio { + ibge_code: 2607000, + name: "Inajá", + state: State::PE, + }, + Municipio { + ibge_code: 2607109, + name: "Ingazeira", + state: State::PE, + }, + Municipio { + ibge_code: 2607208, + name: "Ipojuca", + state: State::PE, + }, + Municipio { + ibge_code: 2607307, + name: "Ipubi", + state: State::PE, + }, + Municipio { + ibge_code: 2607406, + name: "Itacuruba", + state: State::PE, + }, + Municipio { + ibge_code: 2607653, + name: "Itambé", + state: State::PE, + }, + Municipio { + ibge_code: 2607703, + name: "Itapetim", + state: State::PE, + }, + Municipio { + ibge_code: 2607752, + name: "Itapissuma", + state: State::PE, + }, + Municipio { + ibge_code: 2607802, + name: "Itaquitinga", + state: State::PE, + }, + Municipio { + ibge_code: 2607505, + name: "Itaíba", + state: State::PE, + }, + Municipio { + ibge_code: 2607901, + name: "Jaboatão dos Guararapes", + state: State::PE, + }, + Municipio { + ibge_code: 2607950, + name: "Jaqueira", + state: State::PE, + }, + Municipio { + ibge_code: 2608008, + name: "Jataúba", + state: State::PE, + }, + Municipio { + ibge_code: 2608057, + name: "Jatobá", + state: State::PE, + }, + Municipio { + ibge_code: 2608206, + name: "Joaquim Nabuco", + state: State::PE, + }, + Municipio { + ibge_code: 2608107, + name: "João Alfredo", + state: State::PE, + }, + Municipio { + ibge_code: 2608255, + name: "Jucati", + state: State::PE, + }, + Municipio { + ibge_code: 2608305, + name: "Jupi", + state: State::PE, + }, + Municipio { + ibge_code: 2608404, + name: "Jurema", + state: State::PE, + }, + Municipio { + ibge_code: 2608750, + name: "Lagoa Grande", + state: State::PE, + }, + Municipio { + ibge_code: 2608503, + name: "Lagoa de Itaenga", + state: State::PE, + }, + Municipio { + ibge_code: 2608453, + name: "Lagoa do Carro", + state: State::PE, + }, + Municipio { + ibge_code: 2608602, + name: "Lagoa do Ouro", + state: State::PE, + }, + Municipio { + ibge_code: 2608701, + name: "Lagoa dos Gatos", + state: State::PE, + }, + Municipio { + ibge_code: 2608800, + name: "Lajedo", + state: State::PE, + }, + Municipio { + ibge_code: 2608909, + name: "Limoeiro", + state: State::PE, + }, + Municipio { + ibge_code: 2609006, + name: "Macaparana", + state: State::PE, + }, + Municipio { + ibge_code: 2609105, + name: "Machados", + state: State::PE, + }, + Municipio { + ibge_code: 2609154, + name: "Manari", + state: State::PE, + }, + Municipio { + ibge_code: 2609204, + name: "Maraial", + state: State::PE, + }, + Municipio { + ibge_code: 2609303, + name: "Mirandiba", + state: State::PE, + }, + Municipio { + ibge_code: 2614303, + name: "Moreilândia", + state: State::PE, + }, + Municipio { + ibge_code: 2609402, + name: "Moreno", + state: State::PE, + }, + Municipio { + ibge_code: 2609501, + name: "Nazaré da Mata", + state: State::PE, + }, + Municipio { + ibge_code: 2609600, + name: "Olinda", + state: State::PE, + }, + Municipio { + ibge_code: 2609709, + name: "Orobó", + state: State::PE, + }, + Municipio { + ibge_code: 2609808, + name: "Orocó", + state: State::PE, + }, + Municipio { + ibge_code: 2609907, + name: "Ouricuri", + state: State::PE, + }, + Municipio { + ibge_code: 2610004, + name: "Palmares", + state: State::PE, + }, + Municipio { + ibge_code: 2610103, + name: "Palmeirina", + state: State::PE, + }, + Municipio { + ibge_code: 2610202, + name: "Panelas", + state: State::PE, + }, + Municipio { + ibge_code: 2610301, + name: "Paranatama", + state: State::PE, + }, + Municipio { + ibge_code: 2610400, + name: "Parnamirim", + state: State::PE, + }, + Municipio { + ibge_code: 2610509, + name: "Passira", + state: State::PE, + }, + Municipio { + ibge_code: 2610608, + name: "Paudalho", + state: State::PE, + }, + Municipio { + ibge_code: 2610707, + name: "Paulista", + state: State::PE, + }, + Municipio { + ibge_code: 2610806, + name: "Pedra", + state: State::PE, + }, + Municipio { + ibge_code: 2610905, + name: "Pesqueira", + state: State::PE, + }, + Municipio { + ibge_code: 2611101, + name: "Petrolina", + state: State::PE, + }, + Municipio { + ibge_code: 2611002, + name: "Petrolândia", + state: State::PE, + }, + Municipio { + ibge_code: 2611309, + name: "Pombos", + state: State::PE, + }, + Municipio { + ibge_code: 2611200, + name: "Poção", + state: State::PE, + }, + Municipio { + ibge_code: 2611408, + name: "Primavera", + state: State::PE, + }, + Municipio { + ibge_code: 2611507, + name: "Quipapá", + state: State::PE, + }, + Municipio { + ibge_code: 2611533, + name: "Quixaba", + state: State::PE, + }, + Municipio { + ibge_code: 2611606, + name: "Recife", + state: State::PE, + }, + Municipio { + ibge_code: 2611705, + name: "Riacho das Almas", + state: State::PE, + }, + Municipio { + ibge_code: 2611804, + name: "Ribeirão", + state: State::PE, + }, + Municipio { + ibge_code: 2611903, + name: "Rio Formoso", + state: State::PE, + }, + Municipio { + ibge_code: 2612000, + name: "Sairé", + state: State::PE, + }, + Municipio { + ibge_code: 2612109, + name: "Salgadinho", + state: State::PE, + }, + Municipio { + ibge_code: 2612208, + name: "Salgueiro", + state: State::PE, + }, + Municipio { + ibge_code: 2612307, + name: "Saloá", + state: State::PE, + }, + Municipio { + ibge_code: 2612406, + name: "Sanharó", + state: State::PE, + }, + Municipio { + ibge_code: 2612455, + name: "Santa Cruz", + state: State::PE, + }, + Municipio { + ibge_code: 2612471, + name: "Santa Cruz da Baixa Verde", + state: State::PE, + }, + Municipio { + ibge_code: 2612505, + name: "Santa Cruz do Capibaribe", + state: State::PE, + }, + Municipio { + ibge_code: 2612554, + name: "Santa Filomena", + state: State::PE, + }, + Municipio { + ibge_code: 2612604, + name: "Santa Maria da Boa Vista", + state: State::PE, + }, + Municipio { + ibge_code: 2612703, + name: "Santa Maria do Cambucá", + state: State::PE, + }, + Municipio { + ibge_code: 2612802, + name: "Santa Terezinha", + state: State::PE, + }, + Municipio { + ibge_code: 2613909, + name: "Serra Talhada", + state: State::PE, + }, + Municipio { + ibge_code: 2614006, + name: "Serrita", + state: State::PE, + }, + Municipio { + ibge_code: 2614105, + name: "Sertânia", + state: State::PE, + }, + Municipio { + ibge_code: 2614204, + name: "Sirinhaém", + state: State::PE, + }, + Municipio { + ibge_code: 2614402, + name: "Solidão", + state: State::PE, + }, + Municipio { + ibge_code: 2614501, + name: "Surubim", + state: State::PE, + }, + Municipio { + ibge_code: 2612901, + name: "São Benedito do Sul", + state: State::PE, + }, + Municipio { + ibge_code: 2613008, + name: "São Bento do Una", + state: State::PE, + }, + Municipio { + ibge_code: 2613107, + name: "São Caitano", + state: State::PE, + }, + Municipio { + ibge_code: 2613305, + name: "São Joaquim do Monte", + state: State::PE, + }, + Municipio { + ibge_code: 2613404, + name: "São José da Coroa Grande", + state: State::PE, + }, + Municipio { + ibge_code: 2613503, + name: "São José do Belmonte", + state: State::PE, + }, + Municipio { + ibge_code: 2613602, + name: "São José do Egito", + state: State::PE, + }, + Municipio { + ibge_code: 2613206, + name: "São João", + state: State::PE, + }, + Municipio { + ibge_code: 2613701, + name: "São Lourenço da Mata", + state: State::PE, + }, + Municipio { + ibge_code: 2613800, + name: "São Vicente Férrer", + state: State::PE, + }, + Municipio { + ibge_code: 2614600, + name: "Tabira", + state: State::PE, + }, + Municipio { + ibge_code: 2614709, + name: "Tacaimbó", + state: State::PE, + }, + Municipio { + ibge_code: 2614808, + name: "Tacaratu", + state: State::PE, + }, + Municipio { + ibge_code: 2614857, + name: "Tamandaré", + state: State::PE, + }, + Municipio { + ibge_code: 2615003, + name: "Taquaritinga do Norte", + state: State::PE, + }, + Municipio { + ibge_code: 2615102, + name: "Terezinha", + state: State::PE, + }, + Municipio { + ibge_code: 2615201, + name: "Terra Nova", + state: State::PE, + }, + Municipio { + ibge_code: 2615300, + name: "Timbaúba", + state: State::PE, + }, + Municipio { + ibge_code: 2615409, + name: "Toritama", + state: State::PE, + }, + Municipio { + ibge_code: 2615508, + name: "Tracunhaém", + state: State::PE, + }, + Municipio { + ibge_code: 2615607, + name: "Trindade", + state: State::PE, + }, + Municipio { + ibge_code: 2615706, + name: "Triunfo", + state: State::PE, + }, + Municipio { + ibge_code: 2615805, + name: "Tupanatinga", + state: State::PE, + }, + Municipio { + ibge_code: 2615904, + name: "Tuparetama", + state: State::PE, + }, + Municipio { + ibge_code: 2616001, + name: "Venturosa", + state: State::PE, + }, + Municipio { + ibge_code: 2616100, + name: "Verdejante", + state: State::PE, + }, + Municipio { + ibge_code: 2616183, + name: "Vertente do Lério", + state: State::PE, + }, + Municipio { + ibge_code: 2616209, + name: "Vertentes", + state: State::PE, + }, + Municipio { + ibge_code: 2616308, + name: "Vicência", + state: State::PE, + }, + Municipio { + ibge_code: 2616407, + name: "Vitória de Santo Antão", + state: State::PE, + }, + Municipio { + ibge_code: 2616506, + name: "Xexéu", + state: State::PE, + }, + Municipio { + ibge_code: 2600401, + name: "Água Preta", + state: State::PE, + }, + Municipio { + ibge_code: 2600500, + name: "Águas Belas", + state: State::PE, + }, + Municipio { + ibge_code: 2200053, + name: "Acauã", + state: State::PI, + }, + Municipio { + ibge_code: 2200103, + name: "Agricolândia", + state: State::PI, + }, + Municipio { + ibge_code: 2200251, + name: "Alagoinha do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2200277, + name: "Alegrete do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2200301, + name: "Alto Longá", + state: State::PI, + }, + Municipio { + ibge_code: 2200400, + name: "Altos", + state: State::PI, + }, + Municipio { + ibge_code: 2200459, + name: "Alvorada do Gurguéia", + state: State::PI, + }, + Municipio { + ibge_code: 2200509, + name: "Amarante", + state: State::PI, + }, + Municipio { + ibge_code: 2200608, + name: "Angical do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2200806, + name: "Antônio Almeida", + state: State::PI, + }, + Municipio { + ibge_code: 2200707, + name: "Anísio de Abreu", + state: State::PI, + }, + Municipio { + ibge_code: 2200905, + name: "Aroazes", + state: State::PI, + }, + Municipio { + ibge_code: 2200954, + name: "Aroeiras do Itaim", + state: State::PI, + }, + Municipio { + ibge_code: 2201002, + name: "Arraial", + state: State::PI, + }, + Municipio { + ibge_code: 2201051, + name: "Assunção do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201101, + name: "Avelino Lopes", + state: State::PI, + }, + Municipio { + ibge_code: 2201150, + name: "Baixa Grande do Ribeiro", + state: State::PI, + }, + Municipio { + ibge_code: 2201176, + name: "Barra D'Alcântara", + state: State::PI, + }, + Municipio { + ibge_code: 2201200, + name: "Barras", + state: State::PI, + }, + Municipio { + ibge_code: 2201309, + name: "Barreiras do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201408, + name: "Barro Duro", + state: State::PI, + }, + Municipio { + ibge_code: 2201507, + name: "Batalha", + state: State::PI, + }, + Municipio { + ibge_code: 2201556, + name: "Bela Vista do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201572, + name: "Belém do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201606, + name: "Beneditinos", + state: State::PI, + }, + Municipio { + ibge_code: 2201705, + name: "Bertolínia", + state: State::PI, + }, + Municipio { + ibge_code: 2201739, + name: "Betânia do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201770, + name: "Boa Hora", + state: State::PI, + }, + Municipio { + ibge_code: 2201804, + name: "Bocaina", + state: State::PI, + }, + Municipio { + ibge_code: 2201903, + name: "Bom Jesus", + state: State::PI, + }, + Municipio { + ibge_code: 2201919, + name: "Bom Princípio do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201929, + name: "Bonfim do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201945, + name: "Boqueirão do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2201960, + name: "Brasileira", + state: State::PI, + }, + Municipio { + ibge_code: 2201988, + name: "Brejo do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202000, + name: "Buriti dos Lopes", + state: State::PI, + }, + Municipio { + ibge_code: 2202026, + name: "Buriti dos Montes", + state: State::PI, + }, + Municipio { + ibge_code: 2202059, + name: "Cabeceiras do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202075, + name: "Cajazeiras do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202083, + name: "Cajueiro da Praia", + state: State::PI, + }, + Municipio { + ibge_code: 2202091, + name: "Caldeirão Grande do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202109, + name: "Campinas do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202117, + name: "Campo Alegre do Fidalgo", + state: State::PI, + }, + Municipio { + ibge_code: 2202133, + name: "Campo Grande do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202174, + name: "Campo Largo do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202208, + name: "Campo Maior", + state: State::PI, + }, + Municipio { + ibge_code: 2202251, + name: "Canavieira", + state: State::PI, + }, + Municipio { + ibge_code: 2202307, + name: "Canto do Buriti", + state: State::PI, + }, + Municipio { + ibge_code: 2202455, + name: "Capitão Gervásio Oliveira", + state: State::PI, + }, + Municipio { + ibge_code: 2202406, + name: "Capitão de Campos", + state: State::PI, + }, + Municipio { + ibge_code: 2202505, + name: "Caracol", + state: State::PI, + }, + Municipio { + ibge_code: 2202539, + name: "Caraúbas do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202554, + name: "Caridade do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202604, + name: "Castelo do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202653, + name: "Caxingó", + state: State::PI, + }, + Municipio { + ibge_code: 2202703, + name: "Cocal", + state: State::PI, + }, + Municipio { + ibge_code: 2202711, + name: "Cocal de Telha", + state: State::PI, + }, + Municipio { + ibge_code: 2202729, + name: "Cocal dos Alves", + state: State::PI, + }, + Municipio { + ibge_code: 2202737, + name: "Coivaras", + state: State::PI, + }, + Municipio { + ibge_code: 2202752, + name: "Colônia do Gurguéia", + state: State::PI, + }, + Municipio { + ibge_code: 2202778, + name: "Colônia do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2202802, + name: "Conceição do Canindé", + state: State::PI, + }, + Municipio { + ibge_code: 2202851, + name: "Coronel José Dias", + state: State::PI, + }, + Municipio { + ibge_code: 2202901, + name: "Corrente", + state: State::PI, + }, + Municipio { + ibge_code: 2203008, + name: "Cristalândia do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2203107, + name: "Cristino Castro", + state: State::PI, + }, + Municipio { + ibge_code: 2203206, + name: "Curimatá", + state: State::PI, + }, + Municipio { + ibge_code: 2203230, + name: "Currais", + state: State::PI, + }, + Municipio { + ibge_code: 2203271, + name: "Curral Novo do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2203255, + name: "Curralinhos", + state: State::PI, + }, + Municipio { + ibge_code: 2203305, + name: "Demerval Lobão", + state: State::PI, + }, + Municipio { + ibge_code: 2203354, + name: "Dirceu Arcoverde", + state: State::PI, + }, + Municipio { + ibge_code: 2203404, + name: "Dom Expedito Lopes", + state: State::PI, + }, + Municipio { + ibge_code: 2203453, + name: "Dom Inocêncio", + state: State::PI, + }, + Municipio { + ibge_code: 2203420, + name: "Domingos Mourão", + state: State::PI, + }, + Municipio { + ibge_code: 2203503, + name: "Elesbão Veloso", + state: State::PI, + }, + Municipio { + ibge_code: 2203602, + name: "Eliseu Martins", + state: State::PI, + }, + Municipio { + ibge_code: 2203701, + name: "Esperantina", + state: State::PI, + }, + Municipio { + ibge_code: 2203750, + name: "Fartura do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2203800, + name: "Flores do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2203859, + name: "Floresta do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2203909, + name: "Floriano", + state: State::PI, + }, + Municipio { + ibge_code: 2204006, + name: "Francinópolis", + state: State::PI, + }, + Municipio { + ibge_code: 2204105, + name: "Francisco Ayres", + state: State::PI, + }, + Municipio { + ibge_code: 2204154, + name: "Francisco Macedo", + state: State::PI, + }, + Municipio { + ibge_code: 2204204, + name: "Francisco Santos", + state: State::PI, + }, + Municipio { + ibge_code: 2204303, + name: "Fronteiras", + state: State::PI, + }, + Municipio { + ibge_code: 2204352, + name: "Geminiano", + state: State::PI, + }, + Municipio { + ibge_code: 2204402, + name: "Gilbués", + state: State::PI, + }, + Municipio { + ibge_code: 2204501, + name: "Guadalupe", + state: State::PI, + }, + Municipio { + ibge_code: 2204550, + name: "Guaribas", + state: State::PI, + }, + Municipio { + ibge_code: 2204600, + name: "Hugo Napoleão", + state: State::PI, + }, + Municipio { + ibge_code: 2204659, + name: "Ilha Grande", + state: State::PI, + }, + Municipio { + ibge_code: 2204709, + name: "Inhuma", + state: State::PI, + }, + Municipio { + ibge_code: 2204808, + name: "Ipiranga do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2204907, + name: "Isaías Coelho", + state: State::PI, + }, + Municipio { + ibge_code: 2205003, + name: "Itainópolis", + state: State::PI, + }, + Municipio { + ibge_code: 2205102, + name: "Itaueira", + state: State::PI, + }, + Municipio { + ibge_code: 2205151, + name: "Jacobina do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2205201, + name: "Jaicós", + state: State::PI, + }, + Municipio { + ibge_code: 2205250, + name: "Jardim do Mulato", + state: State::PI, + }, + Municipio { + ibge_code: 2205276, + name: "Jatobá do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2205300, + name: "Jerumenha", + state: State::PI, + }, + Municipio { + ibge_code: 2205409, + name: "Joaquim Pires", + state: State::PI, + }, + Municipio { + ibge_code: 2205458, + name: "Joca Marques", + state: State::PI, + }, + Municipio { + ibge_code: 2205508, + name: "José de Freitas", + state: State::PI, + }, + Municipio { + ibge_code: 2205359, + name: "João Costa", + state: State::PI, + }, + Municipio { + ibge_code: 2205516, + name: "Juazeiro do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2205532, + name: "Jurema", + state: State::PI, + }, + Municipio { + ibge_code: 2205524, + name: "Júlio Borges", + state: State::PI, + }, + Municipio { + ibge_code: 2205557, + name: "Lagoa Alegre", + state: State::PI, + }, + Municipio { + ibge_code: 2205573, + name: "Lagoa de São Francisco", + state: State::PI, + }, + Municipio { + ibge_code: 2205565, + name: "Lagoa do Barro do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2205581, + name: "Lagoa do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2205599, + name: "Lagoa do Sítio", + state: State::PI, + }, + Municipio { + ibge_code: 2205540, + name: "Lagoinha do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2205607, + name: "Landri Sales", + state: State::PI, + }, + Municipio { + ibge_code: 2205805, + name: "Luzilândia", + state: State::PI, + }, + Municipio { + ibge_code: 2205706, + name: "Luís Correia", + state: State::PI, + }, + Municipio { + ibge_code: 2205854, + name: "Madeiro", + state: State::PI, + }, + Municipio { + ibge_code: 2205904, + name: "Manoel Emídio", + state: State::PI, + }, + Municipio { + ibge_code: 2205953, + name: "Marcolândia", + state: State::PI, + }, + Municipio { + ibge_code: 2206001, + name: "Marcos Parente", + state: State::PI, + }, + Municipio { + ibge_code: 2206050, + name: "Massapê do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2206100, + name: "Matias Olímpio", + state: State::PI, + }, + Municipio { + ibge_code: 2206209, + name: "Miguel Alves", + state: State::PI, + }, + Municipio { + ibge_code: 2206308, + name: "Miguel Leão", + state: State::PI, + }, + Municipio { + ibge_code: 2206357, + name: "Milton Brandão", + state: State::PI, + }, + Municipio { + ibge_code: 2206407, + name: "Monsenhor Gil", + state: State::PI, + }, + Municipio { + ibge_code: 2206506, + name: "Monsenhor Hipólito", + state: State::PI, + }, + Municipio { + ibge_code: 2206605, + name: "Monte Alegre do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2206654, + name: "Morro Cabeça no Tempo", + state: State::PI, + }, + Municipio { + ibge_code: 2206670, + name: "Morro do Chapéu do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2206696, + name: "Murici dos Portelas", + state: State::PI, + }, + Municipio { + ibge_code: 2206704, + name: "Nazaré do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2206720, + name: "Nazária", + state: State::PI, + }, + Municipio { + ibge_code: 2206753, + name: "Nossa Senhora de Nazaré", + state: State::PI, + }, + Municipio { + ibge_code: 2206803, + name: "Nossa Senhora dos Remédios", + state: State::PI, + }, + Municipio { + ibge_code: 2207959, + name: "Nova Santa Rita", + state: State::PI, + }, + Municipio { + ibge_code: 2206902, + name: "Novo Oriente do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2206951, + name: "Novo Santo Antônio", + state: State::PI, + }, + Municipio { + ibge_code: 2207009, + name: "Oeiras", + state: State::PI, + }, + Municipio { + ibge_code: 2207108, + name: "Olho D'Água do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2207207, + name: "Padre Marcos", + state: State::PI, + }, + Municipio { + ibge_code: 2207306, + name: "Paes Landim", + state: State::PI, + }, + Municipio { + ibge_code: 2207355, + name: "Pajeú do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2207405, + name: "Palmeira do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2207504, + name: "Palmeirais", + state: State::PI, + }, + Municipio { + ibge_code: 2207553, + name: "Paquetá", + state: State::PI, + }, + Municipio { + ibge_code: 2207603, + name: "Parnaguá", + state: State::PI, + }, + Municipio { + ibge_code: 2207702, + name: "Parnaíba", + state: State::PI, + }, + Municipio { + ibge_code: 2207751, + name: "Passagem Franca do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2207777, + name: "Patos do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2207793, + name: "Pau D'Arco do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2207801, + name: "Paulistana", + state: State::PI, + }, + Municipio { + ibge_code: 2207850, + name: "Pavussu", + state: State::PI, + }, + Municipio { + ibge_code: 2207900, + name: "Pedro II", + state: State::PI, + }, + Municipio { + ibge_code: 2207934, + name: "Pedro Laurentino", + state: State::PI, + }, + Municipio { + ibge_code: 2208007, + name: "Picos", + state: State::PI, + }, + Municipio { + ibge_code: 2208106, + name: "Pimenteiras", + state: State::PI, + }, + Municipio { + ibge_code: 2208205, + name: "Pio IX", + state: State::PI, + }, + Municipio { + ibge_code: 2208304, + name: "Piracuruca", + state: State::PI, + }, + Municipio { + ibge_code: 2208403, + name: "Piripiri", + state: State::PI, + }, + Municipio { + ibge_code: 2208502, + name: "Porto", + state: State::PI, + }, + Municipio { + ibge_code: 2208551, + name: "Porto Alegre do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2208601, + name: "Prata do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2208650, + name: "Queimada Nova", + state: State::PI, + }, + Municipio { + ibge_code: 2208700, + name: "Redenção do Gurguéia", + state: State::PI, + }, + Municipio { + ibge_code: 2208809, + name: "Regeneração", + state: State::PI, + }, + Municipio { + ibge_code: 2208858, + name: "Riacho Frio", + state: State::PI, + }, + Municipio { + ibge_code: 2208874, + name: "Ribeira do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2208908, + name: "Ribeiro Gonçalves", + state: State::PI, + }, + Municipio { + ibge_code: 2209005, + name: "Rio Grande do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209104, + name: "Santa Cruz do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209153, + name: "Santa Cruz dos Milagres", + state: State::PI, + }, + Municipio { + ibge_code: 2209203, + name: "Santa Filomena", + state: State::PI, + }, + Municipio { + ibge_code: 2209302, + name: "Santa Luz", + state: State::PI, + }, + Municipio { + ibge_code: 2209377, + name: "Santa Rosa do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209351, + name: "Santana do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209401, + name: "Santo Antônio de Lisboa", + state: State::PI, + }, + Municipio { + ibge_code: 2209450, + name: "Santo Antônio dos Milagres", + state: State::PI, + }, + Municipio { + ibge_code: 2209500, + name: "Santo Inácio do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210623, + name: "Sebastião Barros", + state: State::PI, + }, + Municipio { + ibge_code: 2210631, + name: "Sebastião Leal", + state: State::PI, + }, + Municipio { + ibge_code: 2210656, + name: "Sigefredo Pacheco", + state: State::PI, + }, + Municipio { + ibge_code: 2210805, + name: "Simplício Mendes", + state: State::PI, + }, + Municipio { + ibge_code: 2210706, + name: "Simões", + state: State::PI, + }, + Municipio { + ibge_code: 2210904, + name: "Socorro do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210938, + name: "Sussuapara", + state: State::PI, + }, + Municipio { + ibge_code: 2209559, + name: "São Braz do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209658, + name: "São Francisco de Assis do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209708, + name: "São Francisco do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209609, + name: "São Félix do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209757, + name: "São Gonçalo do Gurguéia", + state: State::PI, + }, + Municipio { + ibge_code: 2209807, + name: "São Gonçalo do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210052, + name: "São José do Divino", + state: State::PI, + }, + Municipio { + ibge_code: 2210102, + name: "São José do Peixe", + state: State::PI, + }, + Municipio { + ibge_code: 2210201, + name: "São José do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2209856, + name: "São João da Canabrava", + state: State::PI, + }, + Municipio { + ibge_code: 2209872, + name: "São João da Fronteira", + state: State::PI, + }, + Municipio { + ibge_code: 2209906, + name: "São João da Serra", + state: State::PI, + }, + Municipio { + ibge_code: 2209955, + name: "São João da Varjota", + state: State::PI, + }, + Municipio { + ibge_code: 2209971, + name: "São João do Arraial", + state: State::PI, + }, + Municipio { + ibge_code: 2210003, + name: "São João do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210300, + name: "São Julião", + state: State::PI, + }, + Municipio { + ibge_code: 2210359, + name: "São Lourenço do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210375, + name: "São Luis do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210383, + name: "São Miguel da Baixa Grande", + state: State::PI, + }, + Municipio { + ibge_code: 2210391, + name: "São Miguel do Fidalgo", + state: State::PI, + }, + Municipio { + ibge_code: 2210409, + name: "São Miguel do Tapuio", + state: State::PI, + }, + Municipio { + ibge_code: 2210508, + name: "São Pedro do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210607, + name: "São Raimundo Nonato", + state: State::PI, + }, + Municipio { + ibge_code: 2210953, + name: "Tamboril do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2210979, + name: "Tanque do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2211001, + name: "Teresina", + state: State::PI, + }, + Municipio { + ibge_code: 2211100, + name: "União", + state: State::PI, + }, + Municipio { + ibge_code: 2211209, + name: "Uruçuí", + state: State::PI, + }, + Municipio { + ibge_code: 2211308, + name: "Valença do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2211506, + name: "Vera Mendes", + state: State::PI, + }, + Municipio { + ibge_code: 2211605, + name: "Vila Nova do Piauí", + state: State::PI, + }, + Municipio { + ibge_code: 2211357, + name: "Várzea Branca", + state: State::PI, + }, + Municipio { + ibge_code: 2211407, + name: "Várzea Grande", + state: State::PI, + }, + Municipio { + ibge_code: 2211704, + name: "Wall Ferraz", + state: State::PI, + }, + Municipio { + ibge_code: 2200202, + name: "Água Branca", + state: State::PI, + }, + Municipio { + ibge_code: 4100103, + name: "Abatiá", + state: State::PR, + }, + Municipio { + ibge_code: 4100202, + name: "Adrianópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4100301, + name: "Agudos do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4100400, + name: "Almirante Tamandaré", + state: State::PR, + }, + Municipio { + ibge_code: 4100459, + name: "Altamira do Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4100608, + name: "Alto Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4128625, + name: "Alto Paraíso", + state: State::PR, + }, + Municipio { + ibge_code: 4100707, + name: "Alto Piquiri", + state: State::PR, + }, + Municipio { + ibge_code: 4100509, + name: "Altônia", + state: State::PR, + }, + Municipio { + ibge_code: 4100806, + name: "Alvorada do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4100905, + name: "Amaporã", + state: State::PR, + }, + Municipio { + ibge_code: 4101002, + name: "Ampére", + state: State::PR, + }, + Municipio { + ibge_code: 4101051, + name: "Anahy", + state: State::PR, + }, + Municipio { + ibge_code: 4101101, + name: "Andirá", + state: State::PR, + }, + Municipio { + ibge_code: 4101200, + name: "Antonina", + state: State::PR, + }, + Municipio { + ibge_code: 4101309, + name: "Antônio Olinto", + state: State::PR, + }, + Municipio { + ibge_code: 4101408, + name: "Apucarana", + state: State::PR, + }, + Municipio { + ibge_code: 4101507, + name: "Arapongas", + state: State::PR, + }, + Municipio { + ibge_code: 4101606, + name: "Arapoti", + state: State::PR, + }, + Municipio { + ibge_code: 4101655, + name: "Arapuã", + state: State::PR, + }, + Municipio { + ibge_code: 4101705, + name: "Araruna", + state: State::PR, + }, + Municipio { + ibge_code: 4101804, + name: "Araucária", + state: State::PR, + }, + Municipio { + ibge_code: 4101853, + name: "Ariranha do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4101903, + name: "Assaí", + state: State::PR, + }, + Municipio { + ibge_code: 4102000, + name: "Assis Chateaubriand", + state: State::PR, + }, + Municipio { + ibge_code: 4102109, + name: "Astorga", + state: State::PR, + }, + Municipio { + ibge_code: 4102208, + name: "Atalaia", + state: State::PR, + }, + Municipio { + ibge_code: 4102307, + name: "Balsa Nova", + state: State::PR, + }, + Municipio { + ibge_code: 4102406, + name: "Bandeirantes", + state: State::PR, + }, + Municipio { + ibge_code: 4102505, + name: "Barbosa Ferraz", + state: State::PR, + }, + Municipio { + ibge_code: 4102703, + name: "Barra do Jacaré", + state: State::PR, + }, + Municipio { + ibge_code: 4102604, + name: "Barracão", + state: State::PR, + }, + Municipio { + ibge_code: 4102752, + name: "Bela Vista da Caroba", + state: State::PR, + }, + Municipio { + ibge_code: 4102802, + name: "Bela Vista do Paraíso", + state: State::PR, + }, + Municipio { + ibge_code: 4102901, + name: "Bituruna", + state: State::PR, + }, + Municipio { + ibge_code: 4103008, + name: "Boa Esperança", + state: State::PR, + }, + Municipio { + ibge_code: 4103024, + name: "Boa Esperança do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4103040, + name: "Boa Ventura de São Roque", + state: State::PR, + }, + Municipio { + ibge_code: 4103057, + name: "Boa Vista da Aparecida", + state: State::PR, + }, + Municipio { + ibge_code: 4103107, + name: "Bocaiúva do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4103156, + name: "Bom Jesus do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4103206, + name: "Bom Sucesso", + state: State::PR, + }, + Municipio { + ibge_code: 4103222, + name: "Bom Sucesso do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4103305, + name: "Borrazópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4103354, + name: "Braganey", + state: State::PR, + }, + Municipio { + ibge_code: 4103370, + name: "Brasilândia do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4103404, + name: "Cafeara", + state: State::PR, + }, + Municipio { + ibge_code: 4103453, + name: "Cafelândia", + state: State::PR, + }, + Municipio { + ibge_code: 4103479, + name: "Cafezal do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4103503, + name: "Califórnia", + state: State::PR, + }, + Municipio { + ibge_code: 4103602, + name: "Cambará", + state: State::PR, + }, + Municipio { + ibge_code: 4103800, + name: "Cambira", + state: State::PR, + }, + Municipio { + ibge_code: 4103701, + name: "Cambé", + state: State::PR, + }, + Municipio { + ibge_code: 4104006, + name: "Campina Grande do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4103909, + name: "Campina da Lagoa", + state: State::PR, + }, + Municipio { + ibge_code: 4103958, + name: "Campina do Simão", + state: State::PR, + }, + Municipio { + ibge_code: 4104055, + name: "Campo Bonito", + state: State::PR, + }, + Municipio { + ibge_code: 4104204, + name: "Campo Largo", + state: State::PR, + }, + Municipio { + ibge_code: 4104253, + name: "Campo Magro", + state: State::PR, + }, + Municipio { + ibge_code: 4104303, + name: "Campo Mourão", + state: State::PR, + }, + Municipio { + ibge_code: 4104105, + name: "Campo do Tenente", + state: State::PR, + }, + Municipio { + ibge_code: 4104428, + name: "Candói", + state: State::PR, + }, + Municipio { + ibge_code: 4104451, + name: "Cantagalo", + state: State::PR, + }, + Municipio { + ibge_code: 4104501, + name: "Capanema", + state: State::PR, + }, + Municipio { + ibge_code: 4104600, + name: "Capitão Leônidas Marques", + state: State::PR, + }, + Municipio { + ibge_code: 4104659, + name: "Carambeí", + state: State::PR, + }, + Municipio { + ibge_code: 4104709, + name: "Carlópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4104808, + name: "Cascavel", + state: State::PR, + }, + Municipio { + ibge_code: 4104907, + name: "Castro", + state: State::PR, + }, + Municipio { + ibge_code: 4105003, + name: "Catanduvas", + state: State::PR, + }, + Municipio { + ibge_code: 4105102, + name: "Centenário do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4105201, + name: "Cerro Azul", + state: State::PR, + }, + Municipio { + ibge_code: 4105409, + name: "Chopinzinho", + state: State::PR, + }, + Municipio { + ibge_code: 4105508, + name: "Cianorte", + state: State::PR, + }, + Municipio { + ibge_code: 4105607, + name: "Cidade Gaúcha", + state: State::PR, + }, + Municipio { + ibge_code: 4105706, + name: "Clevelândia", + state: State::PR, + }, + Municipio { + ibge_code: 4105805, + name: "Colombo", + state: State::PR, + }, + Municipio { + ibge_code: 4105904, + name: "Colorado", + state: State::PR, + }, + Municipio { + ibge_code: 4106001, + name: "Congonhinhas", + state: State::PR, + }, + Municipio { + ibge_code: 4106100, + name: "Conselheiro Mairinck", + state: State::PR, + }, + Municipio { + ibge_code: 4106209, + name: "Contenda", + state: State::PR, + }, + Municipio { + ibge_code: 4106308, + name: "Corbélia", + state: State::PR, + }, + Municipio { + ibge_code: 4106407, + name: "Cornélio Procópio", + state: State::PR, + }, + Municipio { + ibge_code: 4106456, + name: "Coronel Domingos Soares", + state: State::PR, + }, + Municipio { + ibge_code: 4106506, + name: "Coronel Vivida", + state: State::PR, + }, + Municipio { + ibge_code: 4106555, + name: "Corumbataí do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4106803, + name: "Cruz Machado", + state: State::PR, + }, + Municipio { + ibge_code: 4106571, + name: "Cruzeiro do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4106605, + name: "Cruzeiro do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4106704, + name: "Cruzeiro do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4106852, + name: "Cruzmaltina", + state: State::PR, + }, + Municipio { + ibge_code: 4106902, + name: "Curitiba", + state: State::PR, + }, + Municipio { + ibge_code: 4107009, + name: "Curiúva", + state: State::PR, + }, + Municipio { + ibge_code: 4104402, + name: "Cândido de Abreu", + state: State::PR, + }, + Municipio { + ibge_code: 4105300, + name: "Céu Azul", + state: State::PR, + }, + Municipio { + ibge_code: 4107157, + name: "Diamante D'Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4107108, + name: "Diamante do Norte", + state: State::PR, + }, + Municipio { + ibge_code: 4107124, + name: "Diamante do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4107207, + name: "Dois Vizinhos", + state: State::PR, + }, + Municipio { + ibge_code: 4107256, + name: "Douradina", + state: State::PR, + }, + Municipio { + ibge_code: 4107306, + name: "Doutor Camargo", + state: State::PR, + }, + Municipio { + ibge_code: 4128633, + name: "Doutor Ulysses", + state: State::PR, + }, + Municipio { + ibge_code: 4107504, + name: "Engenheiro Beltrão", + state: State::PR, + }, + Municipio { + ibge_code: 4107538, + name: "Entre Rios do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4107405, + name: "Enéas Marques", + state: State::PR, + }, + Municipio { + ibge_code: 4107520, + name: "Esperança Nova", + state: State::PR, + }, + Municipio { + ibge_code: 4107546, + name: "Espigão Alto do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4107553, + name: "Farol", + state: State::PR, + }, + Municipio { + ibge_code: 4107603, + name: "Faxinal", + state: State::PR, + }, + Municipio { + ibge_code: 4107652, + name: "Fazenda Rio Grande", + state: State::PR, + }, + Municipio { + ibge_code: 4107736, + name: "Fernandes Pinheiro", + state: State::PR, + }, + Municipio { + ibge_code: 4107751, + name: "Figueira", + state: State::PR, + }, + Municipio { + ibge_code: 4107850, + name: "Flor da Serra do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4107801, + name: "Floraí", + state: State::PR, + }, + Municipio { + ibge_code: 4107900, + name: "Floresta", + state: State::PR, + }, + Municipio { + ibge_code: 4108007, + name: "Florestópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4108106, + name: "Flórida", + state: State::PR, + }, + Municipio { + ibge_code: 4108205, + name: "Formosa do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4108304, + name: "Foz do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4108452, + name: "Foz do Jordão", + state: State::PR, + }, + Municipio { + ibge_code: 4108320, + name: "Francisco Alves", + state: State::PR, + }, + Municipio { + ibge_code: 4108403, + name: "Francisco Beltrão", + state: State::PR, + }, + Municipio { + ibge_code: 4107702, + name: "Fênix", + state: State::PR, + }, + Municipio { + ibge_code: 4108502, + name: "General Carneiro", + state: State::PR, + }, + Municipio { + ibge_code: 4108551, + name: "Godoy Moreira", + state: State::PR, + }, + Municipio { + ibge_code: 4108601, + name: "Goioerê", + state: State::PR, + }, + Municipio { + ibge_code: 4108650, + name: "Goioxim", + state: State::PR, + }, + Municipio { + ibge_code: 4108700, + name: "Grandes Rios", + state: State::PR, + }, + Municipio { + ibge_code: 4108908, + name: "Guairaçá", + state: State::PR, + }, + Municipio { + ibge_code: 4108957, + name: "Guamiranga", + state: State::PR, + }, + Municipio { + ibge_code: 4109005, + name: "Guapirama", + state: State::PR, + }, + Municipio { + ibge_code: 4109104, + name: "Guaporema", + state: State::PR, + }, + Municipio { + ibge_code: 4109203, + name: "Guaraci", + state: State::PR, + }, + Municipio { + ibge_code: 4109302, + name: "Guaraniaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4109401, + name: "Guarapuava", + state: State::PR, + }, + Municipio { + ibge_code: 4109500, + name: "Guaraqueçaba", + state: State::PR, + }, + Municipio { + ibge_code: 4109609, + name: "Guaratuba", + state: State::PR, + }, + Municipio { + ibge_code: 4108809, + name: "Guaíra", + state: State::PR, + }, + Municipio { + ibge_code: 4109658, + name: "Honório Serpa", + state: State::PR, + }, + Municipio { + ibge_code: 4109708, + name: "Ibaiti", + state: State::PR, + }, + Municipio { + ibge_code: 4109757, + name: "Ibema", + state: State::PR, + }, + Municipio { + ibge_code: 4109807, + name: "Ibiporã", + state: State::PR, + }, + Municipio { + ibge_code: 4109906, + name: "Icaraíma", + state: State::PR, + }, + Municipio { + ibge_code: 4110003, + name: "Iguaraçu", + state: State::PR, + }, + Municipio { + ibge_code: 4110052, + name: "Iguatu", + state: State::PR, + }, + Municipio { + ibge_code: 4110078, + name: "Imbaú", + state: State::PR, + }, + Municipio { + ibge_code: 4110102, + name: "Imbituva", + state: State::PR, + }, + Municipio { + ibge_code: 4110300, + name: "Inajá", + state: State::PR, + }, + Municipio { + ibge_code: 4110409, + name: "Indianópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4110201, + name: "Inácio Martins", + state: State::PR, + }, + Municipio { + ibge_code: 4110508, + name: "Ipiranga", + state: State::PR, + }, + Municipio { + ibge_code: 4110607, + name: "Iporã", + state: State::PR, + }, + Municipio { + ibge_code: 4110656, + name: "Iracema do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4110706, + name: "Irati", + state: State::PR, + }, + Municipio { + ibge_code: 4110805, + name: "Iretama", + state: State::PR, + }, + Municipio { + ibge_code: 4110904, + name: "Itaguajé", + state: State::PR, + }, + Municipio { + ibge_code: 4110953, + name: "Itaipulândia", + state: State::PR, + }, + Municipio { + ibge_code: 4111001, + name: "Itambaracá", + state: State::PR, + }, + Municipio { + ibge_code: 4111100, + name: "Itambé", + state: State::PR, + }, + Municipio { + ibge_code: 4111209, + name: "Itapejara d'Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4111258, + name: "Itaperuçu", + state: State::PR, + }, + Municipio { + ibge_code: 4111308, + name: "Itaúna do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4111506, + name: "Ivaiporã", + state: State::PR, + }, + Municipio { + ibge_code: 4111605, + name: "Ivatuba", + state: State::PR, + }, + Municipio { + ibge_code: 4111555, + name: "Ivaté", + state: State::PR, + }, + Municipio { + ibge_code: 4111407, + name: "Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4111704, + name: "Jaboti", + state: State::PR, + }, + Municipio { + ibge_code: 4111803, + name: "Jacarezinho", + state: State::PR, + }, + Municipio { + ibge_code: 4111902, + name: "Jaguapitã", + state: State::PR, + }, + Municipio { + ibge_code: 4112009, + name: "Jaguariaíva", + state: State::PR, + }, + Municipio { + ibge_code: 4112108, + name: "Jandaia do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4112207, + name: "Janiópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4112306, + name: "Japira", + state: State::PR, + }, + Municipio { + ibge_code: 4112405, + name: "Japurá", + state: State::PR, + }, + Municipio { + ibge_code: 4112504, + name: "Jardim Alegre", + state: State::PR, + }, + Municipio { + ibge_code: 4112603, + name: "Jardim Olinda", + state: State::PR, + }, + Municipio { + ibge_code: 4112702, + name: "Jataizinho", + state: State::PR, + }, + Municipio { + ibge_code: 4112751, + name: "Jesuítas", + state: State::PR, + }, + Municipio { + ibge_code: 4112801, + name: "Joaquim Távora", + state: State::PR, + }, + Municipio { + ibge_code: 4112900, + name: "Jundiaí do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4112959, + name: "Juranda", + state: State::PR, + }, + Municipio { + ibge_code: 4113007, + name: "Jussara", + state: State::PR, + }, + Municipio { + ibge_code: 4113106, + name: "Kaloré", + state: State::PR, + }, + Municipio { + ibge_code: 4113205, + name: "Lapa", + state: State::PR, + }, + Municipio { + ibge_code: 4113254, + name: "Laranjal", + state: State::PR, + }, + Municipio { + ibge_code: 4113304, + name: "Laranjeiras do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4113403, + name: "Leópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4113429, + name: "Lidianópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4113452, + name: "Lindoeste", + state: State::PR, + }, + Municipio { + ibge_code: 4113502, + name: "Loanda", + state: State::PR, + }, + Municipio { + ibge_code: 4113601, + name: "Lobato", + state: State::PR, + }, + Municipio { + ibge_code: 4113700, + name: "Londrina", + state: State::PR, + }, + Municipio { + ibge_code: 4113734, + name: "Luiziana", + state: State::PR, + }, + Municipio { + ibge_code: 4113759, + name: "Lunardelli", + state: State::PR, + }, + Municipio { + ibge_code: 4113809, + name: "Lupionópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4113908, + name: "Mallet", + state: State::PR, + }, + Municipio { + ibge_code: 4114005, + name: "Mamborê", + state: State::PR, + }, + Municipio { + ibge_code: 4114203, + name: "Mandaguari", + state: State::PR, + }, + Municipio { + ibge_code: 4114104, + name: "Mandaguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4114302, + name: "Mandirituba", + state: State::PR, + }, + Municipio { + ibge_code: 4114351, + name: "Manfrinópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4114401, + name: "Mangueirinha", + state: State::PR, + }, + Municipio { + ibge_code: 4114500, + name: "Manoel Ribas", + state: State::PR, + }, + Municipio { + ibge_code: 4114609, + name: "Marechal Cândido Rondon", + state: State::PR, + }, + Municipio { + ibge_code: 4114708, + name: "Maria Helena", + state: State::PR, + }, + Municipio { + ibge_code: 4114807, + name: "Marialva", + state: State::PR, + }, + Municipio { + ibge_code: 4115002, + name: "Marilena", + state: State::PR, + }, + Municipio { + ibge_code: 4115101, + name: "Mariluz", + state: State::PR, + }, + Municipio { + ibge_code: 4114906, + name: "Marilândia do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4115200, + name: "Maringá", + state: State::PR, + }, + Municipio { + ibge_code: 4115358, + name: "Maripá", + state: State::PR, + }, + Municipio { + ibge_code: 4115309, + name: "Mariópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4115408, + name: "Marmeleiro", + state: State::PR, + }, + Municipio { + ibge_code: 4115457, + name: "Marquinho", + state: State::PR, + }, + Municipio { + ibge_code: 4115507, + name: "Marumbi", + state: State::PR, + }, + Municipio { + ibge_code: 4115606, + name: "Matelândia", + state: State::PR, + }, + Municipio { + ibge_code: 4115705, + name: "Matinhos", + state: State::PR, + }, + Municipio { + ibge_code: 4115739, + name: "Mato Rico", + state: State::PR, + }, + Municipio { + ibge_code: 4115754, + name: "Mauá da Serra", + state: State::PR, + }, + Municipio { + ibge_code: 4115804, + name: "Medianeira", + state: State::PR, + }, + Municipio { + ibge_code: 4115853, + name: "Mercedes", + state: State::PR, + }, + Municipio { + ibge_code: 4115903, + name: "Mirador", + state: State::PR, + }, + Municipio { + ibge_code: 4116000, + name: "Miraselva", + state: State::PR, + }, + Municipio { + ibge_code: 4116059, + name: "Missal", + state: State::PR, + }, + Municipio { + ibge_code: 4116109, + name: "Moreira Sales", + state: State::PR, + }, + Municipio { + ibge_code: 4116208, + name: "Morretes", + state: State::PR, + }, + Municipio { + ibge_code: 4116307, + name: "Munhoz de Melo", + state: State::PR, + }, + Municipio { + ibge_code: 4116406, + name: "Nossa Senhora das Graças", + state: State::PR, + }, + Municipio { + ibge_code: 4116505, + name: "Nova Aliança do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4116604, + name: "Nova América da Colina", + state: State::PR, + }, + Municipio { + ibge_code: 4116703, + name: "Nova Aurora", + state: State::PR, + }, + Municipio { + ibge_code: 4116802, + name: "Nova Cantu", + state: State::PR, + }, + Municipio { + ibge_code: 4116901, + name: "Nova Esperança", + state: State::PR, + }, + Municipio { + ibge_code: 4116950, + name: "Nova Esperança do Sudoeste", + state: State::PR, + }, + Municipio { + ibge_code: 4117008, + name: "Nova Fátima", + state: State::PR, + }, + Municipio { + ibge_code: 4117057, + name: "Nova Laranjeiras", + state: State::PR, + }, + Municipio { + ibge_code: 4117107, + name: "Nova Londrina", + state: State::PR, + }, + Municipio { + ibge_code: 4117206, + name: "Nova Olímpia", + state: State::PR, + }, + Municipio { + ibge_code: 4117255, + name: "Nova Prata do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4117214, + name: "Nova Santa Bárbara", + state: State::PR, + }, + Municipio { + ibge_code: 4117222, + name: "Nova Santa Rosa", + state: State::PR, + }, + Municipio { + ibge_code: 4117271, + name: "Nova Tebas", + state: State::PR, + }, + Municipio { + ibge_code: 4117297, + name: "Novo Itacolomi", + state: State::PR, + }, + Municipio { + ibge_code: 4117305, + name: "Ortigueira", + state: State::PR, + }, + Municipio { + ibge_code: 4117404, + name: "Ourizona", + state: State::PR, + }, + Municipio { + ibge_code: 4117453, + name: "Ouro Verde do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4117503, + name: "Paiçandu", + state: State::PR, + }, + Municipio { + ibge_code: 4117602, + name: "Palmas", + state: State::PR, + }, + Municipio { + ibge_code: 4117701, + name: "Palmeira", + state: State::PR, + }, + Municipio { + ibge_code: 4117800, + name: "Palmital", + state: State::PR, + }, + Municipio { + ibge_code: 4117909, + name: "Palotina", + state: State::PR, + }, + Municipio { + ibge_code: 4118105, + name: "Paranacity", + state: State::PR, + }, + Municipio { + ibge_code: 4118204, + name: "Paranaguá", + state: State::PR, + }, + Municipio { + ibge_code: 4118303, + name: "Paranapoema", + state: State::PR, + }, + Municipio { + ibge_code: 4118402, + name: "Paranavaí", + state: State::PR, + }, + Municipio { + ibge_code: 4118006, + name: "Paraíso do Norte", + state: State::PR, + }, + Municipio { + ibge_code: 4118451, + name: "Pato Bragado", + state: State::PR, + }, + Municipio { + ibge_code: 4118501, + name: "Pato Branco", + state: State::PR, + }, + Municipio { + ibge_code: 4118600, + name: "Paula Freitas", + state: State::PR, + }, + Municipio { + ibge_code: 4118709, + name: "Paulo Frontin", + state: State::PR, + }, + Municipio { + ibge_code: 4118808, + name: "Peabiru", + state: State::PR, + }, + Municipio { + ibge_code: 4118857, + name: "Perobal", + state: State::PR, + }, + Municipio { + ibge_code: 4119152, + name: "Pinhais", + state: State::PR, + }, + Municipio { + ibge_code: 4119251, + name: "Pinhal de São Bento", + state: State::PR, + }, + Municipio { + ibge_code: 4119202, + name: "Pinhalão", + state: State::PR, + }, + Municipio { + ibge_code: 4119301, + name: "Pinhão", + state: State::PR, + }, + Municipio { + ibge_code: 4119509, + name: "Piraquara", + state: State::PR, + }, + Municipio { + ibge_code: 4119400, + name: "Piraí do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4119608, + name: "Pitanga", + state: State::PR, + }, + Municipio { + ibge_code: 4119657, + name: "Pitangueiras", + state: State::PR, + }, + Municipio { + ibge_code: 4119103, + name: "Piên", + state: State::PR, + }, + Municipio { + ibge_code: 4119707, + name: "Planaltina do Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4119806, + name: "Planalto", + state: State::PR, + }, + Municipio { + ibge_code: 4119905, + name: "Ponta Grossa", + state: State::PR, + }, + Municipio { + ibge_code: 4119954, + name: "Pontal do Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4120002, + name: "Porecatu", + state: State::PR, + }, + Municipio { + ibge_code: 4120101, + name: "Porto Amazonas", + state: State::PR, + }, + Municipio { + ibge_code: 4120150, + name: "Porto Barreiro", + state: State::PR, + }, + Municipio { + ibge_code: 4120200, + name: "Porto Rico", + state: State::PR, + }, + Municipio { + ibge_code: 4120309, + name: "Porto Vitória", + state: State::PR, + }, + Municipio { + ibge_code: 4120333, + name: "Prado Ferreira", + state: State::PR, + }, + Municipio { + ibge_code: 4120358, + name: "Pranchita", + state: State::PR, + }, + Municipio { + ibge_code: 4120408, + name: "Presidente Castelo Branco", + state: State::PR, + }, + Municipio { + ibge_code: 4120507, + name: "Primeiro de Maio", + state: State::PR, + }, + Municipio { + ibge_code: 4120606, + name: "Prudentópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4118907, + name: "Pérola", + state: State::PR, + }, + Municipio { + ibge_code: 4119004, + name: "Pérola d'Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4120655, + name: "Quarto Centenário", + state: State::PR, + }, + Municipio { + ibge_code: 4120705, + name: "Quatiguá", + state: State::PR, + }, + Municipio { + ibge_code: 4120804, + name: "Quatro Barras", + state: State::PR, + }, + Municipio { + ibge_code: 4120853, + name: "Quatro Pontes", + state: State::PR, + }, + Municipio { + ibge_code: 4120903, + name: "Quedas do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4121000, + name: "Querência do Norte", + state: State::PR, + }, + Municipio { + ibge_code: 4121109, + name: "Quinta do Sol", + state: State::PR, + }, + Municipio { + ibge_code: 4121208, + name: "Quitandinha", + state: State::PR, + }, + Municipio { + ibge_code: 4121257, + name: "Ramilândia", + state: State::PR, + }, + Municipio { + ibge_code: 4121307, + name: "Rancho Alegre", + state: State::PR, + }, + Municipio { + ibge_code: 4121356, + name: "Rancho Alegre D'Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4121406, + name: "Realeza", + state: State::PR, + }, + Municipio { + ibge_code: 4121505, + name: "Rebouças", + state: State::PR, + }, + Municipio { + ibge_code: 4121604, + name: "Renascença", + state: State::PR, + }, + Municipio { + ibge_code: 4121703, + name: "Reserva", + state: State::PR, + }, + Municipio { + ibge_code: 4121752, + name: "Reserva do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4121802, + name: "Ribeirão Claro", + state: State::PR, + }, + Municipio { + ibge_code: 4121901, + name: "Ribeirão do Pinhal", + state: State::PR, + }, + Municipio { + ibge_code: 4122008, + name: "Rio Azul", + state: State::PR, + }, + Municipio { + ibge_code: 4122107, + name: "Rio Bom", + state: State::PR, + }, + Municipio { + ibge_code: 4122156, + name: "Rio Bonito do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4122172, + name: "Rio Branco do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4122206, + name: "Rio Branco do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4122305, + name: "Rio Negro", + state: State::PR, + }, + Municipio { + ibge_code: 4122404, + name: "Rolândia", + state: State::PR, + }, + Municipio { + ibge_code: 4122503, + name: "Roncador", + state: State::PR, + }, + Municipio { + ibge_code: 4122602, + name: "Rondon", + state: State::PR, + }, + Municipio { + ibge_code: 4122651, + name: "Rosário do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4122701, + name: "Sabáudia", + state: State::PR, + }, + Municipio { + ibge_code: 4122800, + name: "Salgado Filho", + state: State::PR, + }, + Municipio { + ibge_code: 4122909, + name: "Salto do Itararé", + state: State::PR, + }, + Municipio { + ibge_code: 4123006, + name: "Salto do Lontra", + state: State::PR, + }, + Municipio { + ibge_code: 4123105, + name: "Santa Amélia", + state: State::PR, + }, + Municipio { + ibge_code: 4123204, + name: "Santa Cecília do Pavão", + state: State::PR, + }, + Municipio { + ibge_code: 4123303, + name: "Santa Cruz de Monte Castelo", + state: State::PR, + }, + Municipio { + ibge_code: 4123402, + name: "Santa Fé", + state: State::PR, + }, + Municipio { + ibge_code: 4123501, + name: "Santa Helena", + state: State::PR, + }, + Municipio { + ibge_code: 4123600, + name: "Santa Inês", + state: State::PR, + }, + Municipio { + ibge_code: 4123709, + name: "Santa Isabel do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4123808, + name: "Santa Izabel do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4123824, + name: "Santa Lúcia", + state: State::PR, + }, + Municipio { + ibge_code: 4123857, + name: "Santa Maria do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4123907, + name: "Santa Mariana", + state: State::PR, + }, + Municipio { + ibge_code: 4123956, + name: "Santa Mônica", + state: State::PR, + }, + Municipio { + ibge_code: 4124020, + name: "Santa Tereza do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4124053, + name: "Santa Terezinha de Itaipu", + state: State::PR, + }, + Municipio { + ibge_code: 4124004, + name: "Santana do Itararé", + state: State::PR, + }, + Municipio { + ibge_code: 4124103, + name: "Santo Antônio da Platina", + state: State::PR, + }, + Municipio { + ibge_code: 4124202, + name: "Santo Antônio do Caiuá", + state: State::PR, + }, + Municipio { + ibge_code: 4124301, + name: "Santo Antônio do Paraíso", + state: State::PR, + }, + Municipio { + ibge_code: 4124400, + name: "Santo Antônio do Sudoeste", + state: State::PR, + }, + Municipio { + ibge_code: 4124509, + name: "Santo Inácio", + state: State::PR, + }, + Municipio { + ibge_code: 4126207, + name: "Sapopema", + state: State::PR, + }, + Municipio { + ibge_code: 4126256, + name: "Sarandi", + state: State::PR, + }, + Municipio { + ibge_code: 4126272, + name: "Saudade do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4126306, + name: "Sengés", + state: State::PR, + }, + Municipio { + ibge_code: 4126355, + name: "Serranópolis do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4126405, + name: "Sertaneja", + state: State::PR, + }, + Municipio { + ibge_code: 4126504, + name: "Sertanópolis", + state: State::PR, + }, + Municipio { + ibge_code: 4126603, + name: "Siqueira Campos", + state: State::PR, + }, + Municipio { + ibge_code: 4126652, + name: "Sulina", + state: State::PR, + }, + Municipio { + ibge_code: 4124608, + name: "São Carlos do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4124707, + name: "São Jerônimo da Serra", + state: State::PR, + }, + Municipio { + ibge_code: 4125209, + name: "São Jorge d'Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4125308, + name: "São Jorge do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4125357, + name: "São Jorge do Patrocínio", + state: State::PR, + }, + Municipio { + ibge_code: 4125407, + name: "São José da Boa Vista", + state: State::PR, + }, + Municipio { + ibge_code: 4125456, + name: "São José das Palmeiras", + state: State::PR, + }, + Municipio { + ibge_code: 4125506, + name: "São José dos Pinhais", + state: State::PR, + }, + Municipio { + ibge_code: 4124806, + name: "São João", + state: State::PR, + }, + Municipio { + ibge_code: 4124905, + name: "São João do Caiuá", + state: State::PR, + }, + Municipio { + ibge_code: 4125001, + name: "São João do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4125100, + name: "São João do Triunfo", + state: State::PR, + }, + Municipio { + ibge_code: 4125555, + name: "São Manoel do Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4125605, + name: "São Mateus do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4125704, + name: "São Miguel do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4125753, + name: "São Pedro do Iguaçu", + state: State::PR, + }, + Municipio { + ibge_code: 4125803, + name: "São Pedro do Ivaí", + state: State::PR, + }, + Municipio { + ibge_code: 4125902, + name: "São Pedro do Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4126009, + name: "São Sebastião da Amoreira", + state: State::PR, + }, + Municipio { + ibge_code: 4126108, + name: "São Tomé", + state: State::PR, + }, + Municipio { + ibge_code: 4126678, + name: "Tamarana", + state: State::PR, + }, + Municipio { + ibge_code: 4126702, + name: "Tamboara", + state: State::PR, + }, + Municipio { + ibge_code: 4126801, + name: "Tapejara", + state: State::PR, + }, + Municipio { + ibge_code: 4126900, + name: "Tapira", + state: State::PR, + }, + Municipio { + ibge_code: 4127007, + name: "Teixeira Soares", + state: State::PR, + }, + Municipio { + ibge_code: 4127106, + name: "Telêmaco Borba", + state: State::PR, + }, + Municipio { + ibge_code: 4127205, + name: "Terra Boa", + state: State::PR, + }, + Municipio { + ibge_code: 4127304, + name: "Terra Rica", + state: State::PR, + }, + Municipio { + ibge_code: 4127403, + name: "Terra Roxa", + state: State::PR, + }, + Municipio { + ibge_code: 4127502, + name: "Tibagi", + state: State::PR, + }, + Municipio { + ibge_code: 4127601, + name: "Tijucas do Sul", + state: State::PR, + }, + Municipio { + ibge_code: 4127700, + name: "Toledo", + state: State::PR, + }, + Municipio { + ibge_code: 4127809, + name: "Tomazina", + state: State::PR, + }, + Municipio { + ibge_code: 4127858, + name: "Três Barras do Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4127882, + name: "Tunas do Paraná", + state: State::PR, + }, + Municipio { + ibge_code: 4127908, + name: "Tuneiras do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4127957, + name: "Tupãssi", + state: State::PR, + }, + Municipio { + ibge_code: 4127965, + name: "Turvo", + state: State::PR, + }, + Municipio { + ibge_code: 4128005, + name: "Ubiratã", + state: State::PR, + }, + Municipio { + ibge_code: 4128104, + name: "Umuarama", + state: State::PR, + }, + Municipio { + ibge_code: 4128302, + name: "Uniflor", + state: State::PR, + }, + Municipio { + ibge_code: 4128203, + name: "União da Vitória", + state: State::PR, + }, + Municipio { + ibge_code: 4128401, + name: "Uraí", + state: State::PR, + }, + Municipio { + ibge_code: 4128534, + name: "Ventania", + state: State::PR, + }, + Municipio { + ibge_code: 4128559, + name: "Vera Cruz do Oeste", + state: State::PR, + }, + Municipio { + ibge_code: 4128609, + name: "Verê", + state: State::PR, + }, + Municipio { + ibge_code: 4128658, + name: "Virmond", + state: State::PR, + }, + Municipio { + ibge_code: 4128708, + name: "Vitorino", + state: State::PR, + }, + Municipio { + ibge_code: 4128500, + name: "Wenceslau Braz", + state: State::PR, + }, + Municipio { + ibge_code: 4128807, + name: "Xambrê", + state: State::PR, + }, + Municipio { + ibge_code: 4101150, + name: "Ângulo", + state: State::PR, + }, + Municipio { + ibge_code: 3300100, + name: "Angra dos Reis", + state: State::RJ, + }, + Municipio { + ibge_code: 3300159, + name: "Aperibé", + state: State::RJ, + }, + Municipio { + ibge_code: 3300209, + name: "Araruama", + state: State::RJ, + }, + Municipio { + ibge_code: 3300225, + name: "Areal", + state: State::RJ, + }, + Municipio { + ibge_code: 3300233, + name: "Armação dos Búzios", + state: State::RJ, + }, + Municipio { + ibge_code: 3300258, + name: "Arraial do Cabo", + state: State::RJ, + }, + Municipio { + ibge_code: 3300407, + name: "Barra Mansa", + state: State::RJ, + }, + Municipio { + ibge_code: 3300308, + name: "Barra do Piraí", + state: State::RJ, + }, + Municipio { + ibge_code: 3300456, + name: "Belford Roxo", + state: State::RJ, + }, + Municipio { + ibge_code: 3300506, + name: "Bom Jardim", + state: State::RJ, + }, + Municipio { + ibge_code: 3300605, + name: "Bom Jesus do Itabapoana", + state: State::RJ, + }, + Municipio { + ibge_code: 3300704, + name: "Cabo Frio", + state: State::RJ, + }, + Municipio { + ibge_code: 3300803, + name: "Cachoeiras de Macacu", + state: State::RJ, + }, + Municipio { + ibge_code: 3300902, + name: "Cambuci", + state: State::RJ, + }, + Municipio { + ibge_code: 3301009, + name: "Campos dos Goytacazes", + state: State::RJ, + }, + Municipio { + ibge_code: 3301108, + name: "Cantagalo", + state: State::RJ, + }, + Municipio { + ibge_code: 3300936, + name: "Carapebus", + state: State::RJ, + }, + Municipio { + ibge_code: 3301157, + name: "Cardoso Moreira", + state: State::RJ, + }, + Municipio { + ibge_code: 3301207, + name: "Carmo", + state: State::RJ, + }, + Municipio { + ibge_code: 3301306, + name: "Casimiro de Abreu", + state: State::RJ, + }, + Municipio { + ibge_code: 3300951, + name: "Comendador Levy Gasparian", + state: State::RJ, + }, + Municipio { + ibge_code: 3301405, + name: "Conceição de Macabu", + state: State::RJ, + }, + Municipio { + ibge_code: 3301504, + name: "Cordeiro", + state: State::RJ, + }, + Municipio { + ibge_code: 3301603, + name: "Duas Barras", + state: State::RJ, + }, + Municipio { + ibge_code: 3301702, + name: "Duque de Caxias", + state: State::RJ, + }, + Municipio { + ibge_code: 3301801, + name: "Engenheiro Paulo de Frontin", + state: State::RJ, + }, + Municipio { + ibge_code: 3301850, + name: "Guapimirim", + state: State::RJ, + }, + Municipio { + ibge_code: 3301876, + name: "Iguaba Grande", + state: State::RJ, + }, + Municipio { + ibge_code: 3301900, + name: "Itaboraí", + state: State::RJ, + }, + Municipio { + ibge_code: 3302007, + name: "Itaguaí", + state: State::RJ, + }, + Municipio { + ibge_code: 3302056, + name: "Italva", + state: State::RJ, + }, + Municipio { + ibge_code: 3302106, + name: "Itaocara", + state: State::RJ, + }, + Municipio { + ibge_code: 3302205, + name: "Itaperuna", + state: State::RJ, + }, + Municipio { + ibge_code: 3302254, + name: "Itatiaia", + state: State::RJ, + }, + Municipio { + ibge_code: 3302270, + name: "Japeri", + state: State::RJ, + }, + Municipio { + ibge_code: 3302304, + name: "Laje do Muriaé", + state: State::RJ, + }, + Municipio { + ibge_code: 3302403, + name: "Macaé", + state: State::RJ, + }, + Municipio { + ibge_code: 3302452, + name: "Macuco", + state: State::RJ, + }, + Municipio { + ibge_code: 3302502, + name: "Magé", + state: State::RJ, + }, + Municipio { + ibge_code: 3302601, + name: "Mangaratiba", + state: State::RJ, + }, + Municipio { + ibge_code: 3302700, + name: "Maricá", + state: State::RJ, + }, + Municipio { + ibge_code: 3302809, + name: "Mendes", + state: State::RJ, + }, + Municipio { + ibge_code: 3302858, + name: "Mesquita", + state: State::RJ, + }, + Municipio { + ibge_code: 3302908, + name: "Miguel Pereira", + state: State::RJ, + }, + Municipio { + ibge_code: 3303005, + name: "Miracema", + state: State::RJ, + }, + Municipio { + ibge_code: 3303104, + name: "Natividade", + state: State::RJ, + }, + Municipio { + ibge_code: 3303203, + name: "Nilópolis", + state: State::RJ, + }, + Municipio { + ibge_code: 3303302, + name: "Niterói", + state: State::RJ, + }, + Municipio { + ibge_code: 3303401, + name: "Nova Friburgo", + state: State::RJ, + }, + Municipio { + ibge_code: 3303500, + name: "Nova Iguaçu", + state: State::RJ, + }, + Municipio { + ibge_code: 3303609, + name: "Paracambi", + state: State::RJ, + }, + Municipio { + ibge_code: 3303807, + name: "Paraty", + state: State::RJ, + }, + Municipio { + ibge_code: 3303708, + name: "Paraíba do Sul", + state: State::RJ, + }, + Municipio { + ibge_code: 3303856, + name: "Paty do Alferes", + state: State::RJ, + }, + Municipio { + ibge_code: 3303906, + name: "Petrópolis", + state: State::RJ, + }, + Municipio { + ibge_code: 3303955, + name: "Pinheiral", + state: State::RJ, + }, + Municipio { + ibge_code: 3304003, + name: "Piraí", + state: State::RJ, + }, + Municipio { + ibge_code: 3304102, + name: "Porciúncula", + state: State::RJ, + }, + Municipio { + ibge_code: 3304110, + name: "Porto Real", + state: State::RJ, + }, + Municipio { + ibge_code: 3304128, + name: "Quatis", + state: State::RJ, + }, + Municipio { + ibge_code: 3304144, + name: "Queimados", + state: State::RJ, + }, + Municipio { + ibge_code: 3304151, + name: "Quissamã", + state: State::RJ, + }, + Municipio { + ibge_code: 3304201, + name: "Resende", + state: State::RJ, + }, + Municipio { + ibge_code: 3304300, + name: "Rio Bonito", + state: State::RJ, + }, + Municipio { + ibge_code: 3304409, + name: "Rio Claro", + state: State::RJ, + }, + Municipio { + ibge_code: 3304508, + name: "Rio das Flores", + state: State::RJ, + }, + Municipio { + ibge_code: 3304524, + name: "Rio das Ostras", + state: State::RJ, + }, + Municipio { + ibge_code: 3304557, + name: "Rio de Janeiro", + state: State::RJ, + }, + Municipio { + ibge_code: 3304607, + name: "Santa Maria Madalena", + state: State::RJ, + }, + Municipio { + ibge_code: 3304706, + name: "Santo Antônio de Pádua", + state: State::RJ, + }, + Municipio { + ibge_code: 3305406, + name: "Sapucaia", + state: State::RJ, + }, + Municipio { + ibge_code: 3305505, + name: "Saquarema", + state: State::RJ, + }, + Municipio { + ibge_code: 3305554, + name: "Seropédica", + state: State::RJ, + }, + Municipio { + ibge_code: 3305604, + name: "Silva Jardim", + state: State::RJ, + }, + Municipio { + ibge_code: 3305703, + name: "Sumidouro", + state: State::RJ, + }, + Municipio { + ibge_code: 3304805, + name: "São Fidélis", + state: State::RJ, + }, + Municipio { + ibge_code: 3304755, + name: "São Francisco de Itabapoana", + state: State::RJ, + }, + Municipio { + ibge_code: 3304904, + name: "São Gonçalo", + state: State::RJ, + }, + Municipio { + ibge_code: 3305133, + name: "São José de Ubá", + state: State::RJ, + }, + Municipio { + ibge_code: 3305158, + name: "São José do Vale do Rio Preto", + state: State::RJ, + }, + Municipio { + ibge_code: 3305000, + name: "São João da Barra", + state: State::RJ, + }, + Municipio { + ibge_code: 3305109, + name: "São João de Meriti", + state: State::RJ, + }, + Municipio { + ibge_code: 3305208, + name: "São Pedro da Aldeia", + state: State::RJ, + }, + Municipio { + ibge_code: 3305307, + name: "São Sebastião do Alto", + state: State::RJ, + }, + Municipio { + ibge_code: 3305752, + name: "Tanguá", + state: State::RJ, + }, + Municipio { + ibge_code: 3305802, + name: "Teresópolis", + state: State::RJ, + }, + Municipio { + ibge_code: 3305901, + name: "Trajano de Moraes", + state: State::RJ, + }, + Municipio { + ibge_code: 3306008, + name: "Três Rios", + state: State::RJ, + }, + Municipio { + ibge_code: 3306107, + name: "Valença", + state: State::RJ, + }, + Municipio { + ibge_code: 3306156, + name: "Varre-Sai", + state: State::RJ, + }, + Municipio { + ibge_code: 3306206, + name: "Vassouras", + state: State::RJ, + }, + Municipio { + ibge_code: 3306305, + name: "Volta Redonda", + state: State::RJ, + }, + Municipio { + ibge_code: 2400109, + name: "Acari", + state: State::RN, + }, + Municipio { + ibge_code: 2400307, + name: "Afonso Bezerra", + state: State::RN, + }, + Municipio { + ibge_code: 2400505, + name: "Alexandria", + state: State::RN, + }, + Municipio { + ibge_code: 2400604, + name: "Almino Afonso", + state: State::RN, + }, + Municipio { + ibge_code: 2400703, + name: "Alto do Rodrigues", + state: State::RN, + }, + Municipio { + ibge_code: 2400802, + name: "Angicos", + state: State::RN, + }, + Municipio { + ibge_code: 2400901, + name: "Antônio Martins", + state: State::RN, + }, + Municipio { + ibge_code: 2401008, + name: "Apodi", + state: State::RN, + }, + Municipio { + ibge_code: 2401107, + name: "Areia Branca", + state: State::RN, + }, + Municipio { + ibge_code: 2401206, + name: "Arez", + state: State::RN, + }, + Municipio { + ibge_code: 2400208, + name: "Assú", + state: State::RN, + }, + Municipio { + ibge_code: 2401453, + name: "Baraúna", + state: State::RN, + }, + Municipio { + ibge_code: 2401503, + name: "Barcelona", + state: State::RN, + }, + Municipio { + ibge_code: 2401404, + name: "Baía Formosa", + state: State::RN, + }, + Municipio { + ibge_code: 2401602, + name: "Bento Fernandes", + state: State::RN, + }, + Municipio { + ibge_code: 2401651, + name: "Bodó", + state: State::RN, + }, + Municipio { + ibge_code: 2401701, + name: "Bom Jesus", + state: State::RN, + }, + Municipio { + ibge_code: 2401800, + name: "Brejinho", + state: State::RN, + }, + Municipio { + ibge_code: 2402006, + name: "Caicó", + state: State::RN, + }, + Municipio { + ibge_code: 2401859, + name: "Caiçara do Norte", + state: State::RN, + }, + Municipio { + ibge_code: 2401909, + name: "Caiçara do Rio do Vento", + state: State::RN, + }, + Municipio { + ibge_code: 2401305, + name: "Campo Grande", + state: State::RN, + }, + Municipio { + ibge_code: 2402105, + name: "Campo Redondo", + state: State::RN, + }, + Municipio { + ibge_code: 2402204, + name: "Canguaretama", + state: State::RN, + }, + Municipio { + ibge_code: 2402303, + name: "Caraúbas", + state: State::RN, + }, + Municipio { + ibge_code: 2402501, + name: "Carnaubais", + state: State::RN, + }, + Municipio { + ibge_code: 2402402, + name: "Carnaúba dos Dantas", + state: State::RN, + }, + Municipio { + ibge_code: 2402600, + name: "Ceará-Mirim", + state: State::RN, + }, + Municipio { + ibge_code: 2402709, + name: "Cerro Corá", + state: State::RN, + }, + Municipio { + ibge_code: 2402808, + name: "Coronel Ezequiel", + state: State::RN, + }, + Municipio { + ibge_code: 2402907, + name: "Coronel João Pessoa", + state: State::RN, + }, + Municipio { + ibge_code: 2403004, + name: "Cruzeta", + state: State::RN, + }, + Municipio { + ibge_code: 2403103, + name: "Currais Novos", + state: State::RN, + }, + Municipio { + ibge_code: 2403202, + name: "Doutor Severiano", + state: State::RN, + }, + Municipio { + ibge_code: 2403301, + name: "Encanto", + state: State::RN, + }, + Municipio { + ibge_code: 2403400, + name: "Equador", + state: State::RN, + }, + Municipio { + ibge_code: 2403509, + name: "Espírito Santo", + state: State::RN, + }, + Municipio { + ibge_code: 2403608, + name: "Extremoz", + state: State::RN, + }, + Municipio { + ibge_code: 2403707, + name: "Felipe Guerra", + state: State::RN, + }, + Municipio { + ibge_code: 2403756, + name: "Fernando Pedroza", + state: State::RN, + }, + Municipio { + ibge_code: 2403806, + name: "Florânia", + state: State::RN, + }, + Municipio { + ibge_code: 2403905, + name: "Francisco Dantas", + state: State::RN, + }, + Municipio { + ibge_code: 2404002, + name: "Frutuoso Gomes", + state: State::RN, + }, + Municipio { + ibge_code: 2404101, + name: "Galinhos", + state: State::RN, + }, + Municipio { + ibge_code: 2404200, + name: "Goianinha", + state: State::RN, + }, + Municipio { + ibge_code: 2404309, + name: "Governador Dix-Sept Rosado", + state: State::RN, + }, + Municipio { + ibge_code: 2404408, + name: "Grossos", + state: State::RN, + }, + Municipio { + ibge_code: 2404507, + name: "Guamaré", + state: State::RN, + }, + Municipio { + ibge_code: 2404606, + name: "Ielmo Marinho", + state: State::RN, + }, + Municipio { + ibge_code: 2404705, + name: "Ipanguaçu", + state: State::RN, + }, + Municipio { + ibge_code: 2404804, + name: "Ipueira", + state: State::RN, + }, + Municipio { + ibge_code: 2404853, + name: "Itajá", + state: State::RN, + }, + Municipio { + ibge_code: 2404903, + name: "Itaú", + state: State::RN, + }, + Municipio { + ibge_code: 2405108, + name: "Jandaíra", + state: State::RN, + }, + Municipio { + ibge_code: 2405207, + name: "Janduís", + state: State::RN, + }, + Municipio { + ibge_code: 2405306, + name: "Januário Cicco", + state: State::RN, + }, + Municipio { + ibge_code: 2405405, + name: "Japi", + state: State::RN, + }, + Municipio { + ibge_code: 2405504, + name: "Jardim de Angicos", + state: State::RN, + }, + Municipio { + ibge_code: 2405603, + name: "Jardim de Piranhas", + state: State::RN, + }, + Municipio { + ibge_code: 2405702, + name: "Jardim do Seridó", + state: State::RN, + }, + Municipio { + ibge_code: 2405009, + name: "Jaçanã", + state: State::RN, + }, + Municipio { + ibge_code: 2406007, + name: "José da Penha", + state: State::RN, + }, + Municipio { + ibge_code: 2405801, + name: "João Câmara", + state: State::RN, + }, + Municipio { + ibge_code: 2405900, + name: "João Dias", + state: State::RN, + }, + Municipio { + ibge_code: 2406106, + name: "Jucurutu", + state: State::RN, + }, + Municipio { + ibge_code: 2406155, + name: "Jundiá", + state: State::RN, + }, + Municipio { + ibge_code: 2406502, + name: "Lagoa Nova", + state: State::RN, + }, + Municipio { + ibge_code: 2406601, + name: "Lagoa Salgada", + state: State::RN, + }, + Municipio { + ibge_code: 2406205, + name: "Lagoa d'Anta", + state: State::RN, + }, + Municipio { + ibge_code: 2406304, + name: "Lagoa de Pedras", + state: State::RN, + }, + Municipio { + ibge_code: 2406403, + name: "Lagoa de Velhos", + state: State::RN, + }, + Municipio { + ibge_code: 2406700, + name: "Lajes", + state: State::RN, + }, + Municipio { + ibge_code: 2406809, + name: "Lajes Pintadas", + state: State::RN, + }, + Municipio { + ibge_code: 2406908, + name: "Lucrécia", + state: State::RN, + }, + Municipio { + ibge_code: 2407005, + name: "Luís Gomes", + state: State::RN, + }, + Municipio { + ibge_code: 2407203, + name: "Macau", + state: State::RN, + }, + Municipio { + ibge_code: 2407104, + name: "Macaíba", + state: State::RN, + }, + Municipio { + ibge_code: 2407252, + name: "Major Sales", + state: State::RN, + }, + Municipio { + ibge_code: 2407302, + name: "Marcelino Vieira", + state: State::RN, + }, + Municipio { + ibge_code: 2407401, + name: "Martins", + state: State::RN, + }, + Municipio { + ibge_code: 2407500, + name: "Maxaranguape", + state: State::RN, + }, + Municipio { + ibge_code: 2407609, + name: "Messias Targino", + state: State::RN, + }, + Municipio { + ibge_code: 2407708, + name: "Montanhas", + state: State::RN, + }, + Municipio { + ibge_code: 2407807, + name: "Monte Alegre", + state: State::RN, + }, + Municipio { + ibge_code: 2407906, + name: "Monte das Gameleiras", + state: State::RN, + }, + Municipio { + ibge_code: 2408003, + name: "Mossoró", + state: State::RN, + }, + Municipio { + ibge_code: 2408102, + name: "Natal", + state: State::RN, + }, + Municipio { + ibge_code: 2408300, + name: "Nova Cruz", + state: State::RN, + }, + Municipio { + ibge_code: 2408201, + name: "Nísia Floresta", + state: State::RN, + }, + Municipio { + ibge_code: 2408409, + name: "Olho d'Água do Borges", + state: State::RN, + }, + Municipio { + ibge_code: 2408508, + name: "Ouro Branco", + state: State::RN, + }, + Municipio { + ibge_code: 2408607, + name: "Paraná", + state: State::RN, + }, + Municipio { + ibge_code: 2408805, + name: "Parazinho", + state: State::RN, + }, + Municipio { + ibge_code: 2408706, + name: "Paraú", + state: State::RN, + }, + Municipio { + ibge_code: 2408904, + name: "Parelhas", + state: State::RN, + }, + Municipio { + ibge_code: 2403251, + name: "Parnamirim", + state: State::RN, + }, + Municipio { + ibge_code: 2409100, + name: "Passa e Fica", + state: State::RN, + }, + Municipio { + ibge_code: 2409209, + name: "Passagem", + state: State::RN, + }, + Municipio { + ibge_code: 2409308, + name: "Patu", + state: State::RN, + }, + Municipio { + ibge_code: 2409407, + name: "Pau dos Ferros", + state: State::RN, + }, + Municipio { + ibge_code: 2409506, + name: "Pedra Grande", + state: State::RN, + }, + Municipio { + ibge_code: 2409605, + name: "Pedra Preta", + state: State::RN, + }, + Municipio { + ibge_code: 2409704, + name: "Pedro Avelino", + state: State::RN, + }, + Municipio { + ibge_code: 2409803, + name: "Pedro Velho", + state: State::RN, + }, + Municipio { + ibge_code: 2409902, + name: "Pendências", + state: State::RN, + }, + Municipio { + ibge_code: 2410009, + name: "Pilões", + state: State::RN, + }, + Municipio { + ibge_code: 2410207, + name: "Portalegre", + state: State::RN, + }, + Municipio { + ibge_code: 2410256, + name: "Porto do Mangue", + state: State::RN, + }, + Municipio { + ibge_code: 2410108, + name: "Poço Branco", + state: State::RN, + }, + Municipio { + ibge_code: 2410405, + name: "Pureza", + state: State::RN, + }, + Municipio { + ibge_code: 2410504, + name: "Rafael Fernandes", + state: State::RN, + }, + Municipio { + ibge_code: 2410603, + name: "Rafael Godeiro", + state: State::RN, + }, + Municipio { + ibge_code: 2410702, + name: "Riacho da Cruz", + state: State::RN, + }, + Municipio { + ibge_code: 2410801, + name: "Riacho de Santana", + state: State::RN, + }, + Municipio { + ibge_code: 2410900, + name: "Riachuelo", + state: State::RN, + }, + Municipio { + ibge_code: 2408953, + name: "Rio do Fogo", + state: State::RN, + }, + Municipio { + ibge_code: 2411007, + name: "Rodolfo Fernandes", + state: State::RN, + }, + Municipio { + ibge_code: 2411106, + name: "Ruy Barbosa", + state: State::RN, + }, + Municipio { + ibge_code: 2411205, + name: "Santa Cruz", + state: State::RN, + }, + Municipio { + ibge_code: 2409332, + name: "Santa Maria", + state: State::RN, + }, + Municipio { + ibge_code: 2411403, + name: "Santana do Matos", + state: State::RN, + }, + Municipio { + ibge_code: 2411429, + name: "Santana do Seridó", + state: State::RN, + }, + Municipio { + ibge_code: 2411502, + name: "Santo Antônio", + state: State::RN, + }, + Municipio { + ibge_code: 2413102, + name: "Senador Elói de Souza", + state: State::RN, + }, + Municipio { + ibge_code: 2413201, + name: "Senador Georgino Avelino", + state: State::RN, + }, + Municipio { + ibge_code: 2410306, + name: "Serra Caiada", + state: State::RN, + }, + Municipio { + ibge_code: 2413409, + name: "Serra Negra do Norte", + state: State::RN, + }, + Municipio { + ibge_code: 2413300, + name: "Serra de São Bento", + state: State::RN, + }, + Municipio { + ibge_code: 2413359, + name: "Serra do Mel", + state: State::RN, + }, + Municipio { + ibge_code: 2413508, + name: "Serrinha", + state: State::RN, + }, + Municipio { + ibge_code: 2413557, + name: "Serrinha dos Pintos", + state: State::RN, + }, + Municipio { + ibge_code: 2413607, + name: "Severiano Melo", + state: State::RN, + }, + Municipio { + ibge_code: 2411601, + name: "São Bento do Norte", + state: State::RN, + }, + Municipio { + ibge_code: 2411700, + name: "São Bento do Trairí", + state: State::RN, + }, + Municipio { + ibge_code: 2411809, + name: "São Fernando", + state: State::RN, + }, + Municipio { + ibge_code: 2411908, + name: "São Francisco do Oeste", + state: State::RN, + }, + Municipio { + ibge_code: 2412005, + name: "São Gonçalo do Amarante", + state: State::RN, + }, + Municipio { + ibge_code: 2412203, + name: "São José de Mipibu", + state: State::RN, + }, + Municipio { + ibge_code: 2412302, + name: "São José do Campestre", + state: State::RN, + }, + Municipio { + ibge_code: 2412401, + name: "São José do Seridó", + state: State::RN, + }, + Municipio { + ibge_code: 2412104, + name: "São João do Sabugi", + state: State::RN, + }, + Municipio { + ibge_code: 2412500, + name: "São Miguel", + state: State::RN, + }, + Municipio { + ibge_code: 2412559, + name: "São Miguel do Gostoso", + state: State::RN, + }, + Municipio { + ibge_code: 2412609, + name: "São Paulo do Potengi", + state: State::RN, + }, + Municipio { + ibge_code: 2412708, + name: "São Pedro", + state: State::RN, + }, + Municipio { + ibge_code: 2412807, + name: "São Rafael", + state: State::RN, + }, + Municipio { + ibge_code: 2412906, + name: "São Tomé", + state: State::RN, + }, + Municipio { + ibge_code: 2413003, + name: "São Vicente", + state: State::RN, + }, + Municipio { + ibge_code: 2413706, + name: "Sítio Novo", + state: State::RN, + }, + Municipio { + ibge_code: 2413805, + name: "Taboleiro Grande", + state: State::RN, + }, + Municipio { + ibge_code: 2413904, + name: "Taipu", + state: State::RN, + }, + Municipio { + ibge_code: 2414001, + name: "Tangará", + state: State::RN, + }, + Municipio { + ibge_code: 2414100, + name: "Tenente Ananias", + state: State::RN, + }, + Municipio { + ibge_code: 2414159, + name: "Tenente Laurentino Cruz", + state: State::RN, + }, + Municipio { + ibge_code: 2411056, + name: "Tibau", + state: State::RN, + }, + Municipio { + ibge_code: 2414209, + name: "Tibau do Sul", + state: State::RN, + }, + Municipio { + ibge_code: 2414308, + name: "Timbaúba dos Batistas", + state: State::RN, + }, + Municipio { + ibge_code: 2414407, + name: "Touros", + state: State::RN, + }, + Municipio { + ibge_code: 2414456, + name: "Triunfo Potiguar", + state: State::RN, + }, + Municipio { + ibge_code: 2414506, + name: "Umarizal", + state: State::RN, + }, + Municipio { + ibge_code: 2414605, + name: "Upanema", + state: State::RN, + }, + Municipio { + ibge_code: 2414753, + name: "Venha-Ver", + state: State::RN, + }, + Municipio { + ibge_code: 2414803, + name: "Vera Cruz", + state: State::RN, + }, + Municipio { + ibge_code: 2415008, + name: "Vila Flor", + state: State::RN, + }, + Municipio { + ibge_code: 2414902, + name: "Viçosa", + state: State::RN, + }, + Municipio { + ibge_code: 2414704, + name: "Várzea", + state: State::RN, + }, + Municipio { + ibge_code: 2400406, + name: "Água Nova", + state: State::RN, + }, + Municipio { + ibge_code: 1100015, + name: "Alta Floresta D'Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1100379, + name: "Alto Alegre dos Parecis", + state: State::RO, + }, + Municipio { + ibge_code: 1100403, + name: "Alto Paraíso", + state: State::RO, + }, + Municipio { + ibge_code: 1100346, + name: "Alvorada D'Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1100023, + name: "Ariquemes", + state: State::RO, + }, + Municipio { + ibge_code: 1100452, + name: "Buritis", + state: State::RO, + }, + Municipio { + ibge_code: 1100031, + name: "Cabixi", + state: State::RO, + }, + Municipio { + ibge_code: 1100601, + name: "Cacaulândia", + state: State::RO, + }, + Municipio { + ibge_code: 1100049, + name: "Cacoal", + state: State::RO, + }, + Municipio { + ibge_code: 1100700, + name: "Campo Novo de Rondônia", + state: State::RO, + }, + Municipio { + ibge_code: 1100809, + name: "Candeias do Jamari", + state: State::RO, + }, + Municipio { + ibge_code: 1100908, + name: "Castanheiras", + state: State::RO, + }, + Municipio { + ibge_code: 1100056, + name: "Cerejeiras", + state: State::RO, + }, + Municipio { + ibge_code: 1100924, + name: "Chupinguaia", + state: State::RO, + }, + Municipio { + ibge_code: 1100064, + name: "Colorado do Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1100072, + name: "Corumbiara", + state: State::RO, + }, + Municipio { + ibge_code: 1100080, + name: "Costa Marques", + state: State::RO, + }, + Municipio { + ibge_code: 1100940, + name: "Cujubim", + state: State::RO, + }, + Municipio { + ibge_code: 1100098, + name: "Espigão D'Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1101005, + name: "Governador Jorge Teixeira", + state: State::RO, + }, + Municipio { + ibge_code: 1100106, + name: "Guajará-Mirim", + state: State::RO, + }, + Municipio { + ibge_code: 1101104, + name: "Itapuã do Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1100114, + name: "Jaru", + state: State::RO, + }, + Municipio { + ibge_code: 1100122, + name: "Ji-Paraná", + state: State::RO, + }, + Municipio { + ibge_code: 1100130, + name: "Machadinho D'Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1101203, + name: "Ministro Andreazza", + state: State::RO, + }, + Municipio { + ibge_code: 1101302, + name: "Mirante da Serra", + state: State::RO, + }, + Municipio { + ibge_code: 1101401, + name: "Monte Negro", + state: State::RO, + }, + Municipio { + ibge_code: 1100148, + name: "Nova Brasilândia D'Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1100338, + name: "Nova Mamoré", + state: State::RO, + }, + Municipio { + ibge_code: 1101435, + name: "Nova União", + state: State::RO, + }, + Municipio { + ibge_code: 1100502, + name: "Novo Horizonte do Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1100155, + name: "Ouro Preto do Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1101450, + name: "Parecis", + state: State::RO, + }, + Municipio { + ibge_code: 1100189, + name: "Pimenta Bueno", + state: State::RO, + }, + Municipio { + ibge_code: 1101468, + name: "Pimenteiras do Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1100205, + name: "Porto Velho", + state: State::RO, + }, + Municipio { + ibge_code: 1100254, + name: "Presidente Médici", + state: State::RO, + }, + Municipio { + ibge_code: 1101476, + name: "Primavera de Rondônia", + state: State::RO, + }, + Municipio { + ibge_code: 1100262, + name: "Rio Crespo", + state: State::RO, + }, + Municipio { + ibge_code: 1100288, + name: "Rolim de Moura", + state: State::RO, + }, + Municipio { + ibge_code: 1100296, + name: "Santa Luzia D'Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1101500, + name: "Seringueiras", + state: State::RO, + }, + Municipio { + ibge_code: 1101484, + name: "São Felipe D'Oeste", + state: State::RO, + }, + Municipio { + ibge_code: 1101492, + name: "São Francisco do Guaporé", + state: State::RO, + }, + Municipio { + ibge_code: 1100320, + name: "São Miguel do Guaporé", + state: State::RO, + }, + Municipio { + ibge_code: 1101559, + name: "Teixeirópolis", + state: State::RO, + }, + Municipio { + ibge_code: 1101609, + name: "Theobroma", + state: State::RO, + }, + Municipio { + ibge_code: 1101708, + name: "Urupá", + state: State::RO, + }, + Municipio { + ibge_code: 1101757, + name: "Vale do Anari", + state: State::RO, + }, + Municipio { + ibge_code: 1101807, + name: "Vale do Paraíso", + state: State::RO, + }, + Municipio { + ibge_code: 1100304, + name: "Vilhena", + state: State::RO, + }, + Municipio { + ibge_code: 1400050, + name: "Alto Alegre", + state: State::RR, + }, + Municipio { + ibge_code: 1400027, + name: "Amajari", + state: State::RR, + }, + Municipio { + ibge_code: 1400100, + name: "Boa Vista", + state: State::RR, + }, + Municipio { + ibge_code: 1400159, + name: "Bonfim", + state: State::RR, + }, + Municipio { + ibge_code: 1400175, + name: "Cantá", + state: State::RR, + }, + Municipio { + ibge_code: 1400209, + name: "Caracaraí", + state: State::RR, + }, + Municipio { + ibge_code: 1400233, + name: "Caroebe", + state: State::RR, + }, + Municipio { + ibge_code: 1400282, + name: "Iracema", + state: State::RR, + }, + Municipio { + ibge_code: 1400308, + name: "Mucajaí", + state: State::RR, + }, + Municipio { + ibge_code: 1400407, + name: "Normandia", + state: State::RR, + }, + Municipio { + ibge_code: 1400456, + name: "Pacaraima", + state: State::RR, + }, + Municipio { + ibge_code: 1400472, + name: "Rorainópolis", + state: State::RR, + }, + Municipio { + ibge_code: 1400506, + name: "São João da Baliza", + state: State::RR, + }, + Municipio { + ibge_code: 1400605, + name: "São Luiz do Anauá", + state: State::RR, + }, + Municipio { + ibge_code: 1400704, + name: "Uiramutã", + state: State::RR, + }, + Municipio { + ibge_code: 4300034, + name: "Aceguá", + state: State::RS, + }, + Municipio { + ibge_code: 4300109, + name: "Agudo", + state: State::RS, + }, + Municipio { + ibge_code: 4300208, + name: "Ajuricaba", + state: State::RS, + }, + Municipio { + ibge_code: 4300307, + name: "Alecrim", + state: State::RS, + }, + Municipio { + ibge_code: 4300406, + name: "Alegrete", + state: State::RS, + }, + Municipio { + ibge_code: 4300455, + name: "Alegria", + state: State::RS, + }, + Municipio { + ibge_code: 4300471, + name: "Almirante Tamandaré do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4300505, + name: "Alpestre", + state: State::RS, + }, + Municipio { + ibge_code: 4300554, + name: "Alto Alegre", + state: State::RS, + }, + Municipio { + ibge_code: 4300570, + name: "Alto Feliz", + state: State::RS, + }, + Municipio { + ibge_code: 4300604, + name: "Alvorada", + state: State::RS, + }, + Municipio { + ibge_code: 4300638, + name: "Amaral Ferrador", + state: State::RS, + }, + Municipio { + ibge_code: 4300646, + name: "Ametista do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4300661, + name: "André da Rocha", + state: State::RS, + }, + Municipio { + ibge_code: 4300703, + name: "Anta Gorda", + state: State::RS, + }, + Municipio { + ibge_code: 4300802, + name: "Antônio Prado", + state: State::RS, + }, + Municipio { + ibge_code: 4300851, + name: "Arambaré", + state: State::RS, + }, + Municipio { + ibge_code: 4300877, + name: "Araricá", + state: State::RS, + }, + Municipio { + ibge_code: 4300901, + name: "Aratiba", + state: State::RS, + }, + Municipio { + ibge_code: 4301305, + name: "Arroio Grande", + state: State::RS, + }, + Municipio { + ibge_code: 4301008, + name: "Arroio do Meio", + state: State::RS, + }, + Municipio { + ibge_code: 4301073, + name: "Arroio do Padre", + state: State::RS, + }, + Municipio { + ibge_code: 4301057, + name: "Arroio do Sal", + state: State::RS, + }, + Municipio { + ibge_code: 4301206, + name: "Arroio do Tigre", + state: State::RS, + }, + Municipio { + ibge_code: 4301107, + name: "Arroio dos Ratos", + state: State::RS, + }, + Municipio { + ibge_code: 4301404, + name: "Arvorezinha", + state: State::RS, + }, + Municipio { + ibge_code: 4301503, + name: "Augusto Pestana", + state: State::RS, + }, + Municipio { + ibge_code: 4301602, + name: "Bagé", + state: State::RS, + }, + Municipio { + ibge_code: 4301636, + name: "Balneário Pinhal", + state: State::RS, + }, + Municipio { + ibge_code: 4301958, + name: "Barra Funda", + state: State::RS, + }, + Municipio { + ibge_code: 4301859, + name: "Barra do Guarita", + state: State::RS, + }, + Municipio { + ibge_code: 4301875, + name: "Barra do Quaraí", + state: State::RS, + }, + Municipio { + ibge_code: 4301909, + name: "Barra do Ribeiro", + state: State::RS, + }, + Municipio { + ibge_code: 4301925, + name: "Barra do Rio Azul", + state: State::RS, + }, + Municipio { + ibge_code: 4301800, + name: "Barracão", + state: State::RS, + }, + Municipio { + ibge_code: 4302006, + name: "Barros Cassal", + state: State::RS, + }, + Municipio { + ibge_code: 4301651, + name: "Barão", + state: State::RS, + }, + Municipio { + ibge_code: 4301701, + name: "Barão de Cotegipe", + state: State::RS, + }, + Municipio { + ibge_code: 4301750, + name: "Barão do Triunfo", + state: State::RS, + }, + Municipio { + ibge_code: 4302055, + name: "Benjamin Constant do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4302105, + name: "Bento Gonçalves", + state: State::RS, + }, + Municipio { + ibge_code: 4302154, + name: "Boa Vista das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4302204, + name: "Boa Vista do Buricá", + state: State::RS, + }, + Municipio { + ibge_code: 4302220, + name: "Boa Vista do Cadeado", + state: State::RS, + }, + Municipio { + ibge_code: 4302238, + name: "Boa Vista do Incra", + state: State::RS, + }, + Municipio { + ibge_code: 4302253, + name: "Boa Vista do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4302303, + name: "Bom Jesus", + state: State::RS, + }, + Municipio { + ibge_code: 4302352, + name: "Bom Princípio", + state: State::RS, + }, + Municipio { + ibge_code: 4302378, + name: "Bom Progresso", + state: State::RS, + }, + Municipio { + ibge_code: 4302402, + name: "Bom Retiro do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4302451, + name: "Boqueirão do Leão", + state: State::RS, + }, + Municipio { + ibge_code: 4302501, + name: "Bossoroca", + state: State::RS, + }, + Municipio { + ibge_code: 4302584, + name: "Bozano", + state: State::RS, + }, + Municipio { + ibge_code: 4302600, + name: "Braga", + state: State::RS, + }, + Municipio { + ibge_code: 4302659, + name: "Brochier", + state: State::RS, + }, + Municipio { + ibge_code: 4302709, + name: "Butiá", + state: State::RS, + }, + Municipio { + ibge_code: 4302907, + name: "Cacequi", + state: State::RS, + }, + Municipio { + ibge_code: 4303004, + name: "Cachoeira do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4303103, + name: "Cachoeirinha", + state: State::RS, + }, + Municipio { + ibge_code: 4303202, + name: "Cacique Doble", + state: State::RS, + }, + Municipio { + ibge_code: 4303301, + name: "Caibaté", + state: State::RS, + }, + Municipio { + ibge_code: 4303400, + name: "Caiçara", + state: State::RS, + }, + Municipio { + ibge_code: 4303509, + name: "Camaquã", + state: State::RS, + }, + Municipio { + ibge_code: 4303558, + name: "Camargo", + state: State::RS, + }, + Municipio { + ibge_code: 4303608, + name: "Cambará do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4303673, + name: "Campestre da Serra", + state: State::RS, + }, + Municipio { + ibge_code: 4303707, + name: "Campina das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4303806, + name: "Campinas do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4303905, + name: "Campo Bom", + state: State::RS, + }, + Municipio { + ibge_code: 4304002, + name: "Campo Novo", + state: State::RS, + }, + Municipio { + ibge_code: 4304101, + name: "Campos Borges", + state: State::RS, + }, + Municipio { + ibge_code: 4304200, + name: "Candelária", + state: State::RS, + }, + Municipio { + ibge_code: 4304358, + name: "Candiota", + state: State::RS, + }, + Municipio { + ibge_code: 4304408, + name: "Canela", + state: State::RS, + }, + Municipio { + ibge_code: 4304507, + name: "Canguçu", + state: State::RS, + }, + Municipio { + ibge_code: 4304606, + name: "Canoas", + state: State::RS, + }, + Municipio { + ibge_code: 4304614, + name: "Canudos do Vale", + state: State::RS, + }, + Municipio { + ibge_code: 4304689, + name: "Capela de Santana", + state: State::RS, + }, + Municipio { + ibge_code: 4304697, + name: "Capitão", + state: State::RS, + }, + Municipio { + ibge_code: 4304671, + name: "Capivari do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4304622, + name: "Capão Bonito do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4304630, + name: "Capão da Canoa", + state: State::RS, + }, + Municipio { + ibge_code: 4304655, + name: "Capão do Cipó", + state: State::RS, + }, + Municipio { + ibge_code: 4304663, + name: "Capão do Leão", + state: State::RS, + }, + Municipio { + ibge_code: 4304705, + name: "Carazinho", + state: State::RS, + }, + Municipio { + ibge_code: 4304713, + name: "Caraá", + state: State::RS, + }, + Municipio { + ibge_code: 4304804, + name: "Carlos Barbosa", + state: State::RS, + }, + Municipio { + ibge_code: 4304853, + name: "Carlos Gomes", + state: State::RS, + }, + Municipio { + ibge_code: 4304903, + name: "Casca", + state: State::RS, + }, + Municipio { + ibge_code: 4304952, + name: "Caseiros", + state: State::RS, + }, + Municipio { + ibge_code: 4305009, + name: "Catuípe", + state: State::RS, + }, + Municipio { + ibge_code: 4305108, + name: "Caxias do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4302808, + name: "Caçapava do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4305116, + name: "Centenário", + state: State::RS, + }, + Municipio { + ibge_code: 4305124, + name: "Cerrito", + state: State::RS, + }, + Municipio { + ibge_code: 4305132, + name: "Cerro Branco", + state: State::RS, + }, + Municipio { + ibge_code: 4305157, + name: "Cerro Grande", + state: State::RS, + }, + Municipio { + ibge_code: 4305173, + name: "Cerro Grande do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4305207, + name: "Cerro Largo", + state: State::RS, + }, + Municipio { + ibge_code: 4305306, + name: "Chapada", + state: State::RS, + }, + Municipio { + ibge_code: 4305355, + name: "Charqueadas", + state: State::RS, + }, + Municipio { + ibge_code: 4305371, + name: "Charrua", + state: State::RS, + }, + Municipio { + ibge_code: 4305405, + name: "Chiapetta", + state: State::RS, + }, + Municipio { + ibge_code: 4305447, + name: "Chuvisca", + state: State::RS, + }, + Municipio { + ibge_code: 4305439, + name: "Chuí", + state: State::RS, + }, + Municipio { + ibge_code: 4305454, + name: "Cidreira", + state: State::RS, + }, + Municipio { + ibge_code: 4305504, + name: "Ciríaco", + state: State::RS, + }, + Municipio { + ibge_code: 4305587, + name: "Colinas", + state: State::RS, + }, + Municipio { + ibge_code: 4305603, + name: "Colorado", + state: State::RS, + }, + Municipio { + ibge_code: 4305702, + name: "Condor", + state: State::RS, + }, + Municipio { + ibge_code: 4305801, + name: "Constantina", + state: State::RS, + }, + Municipio { + ibge_code: 4305835, + name: "Coqueiro Baixo", + state: State::RS, + }, + Municipio { + ibge_code: 4305850, + name: "Coqueiros do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4305871, + name: "Coronel Barros", + state: State::RS, + }, + Municipio { + ibge_code: 4305900, + name: "Coronel Bicaco", + state: State::RS, + }, + Municipio { + ibge_code: 4305934, + name: "Coronel Pilar", + state: State::RS, + }, + Municipio { + ibge_code: 4305959, + name: "Cotiporã", + state: State::RS, + }, + Municipio { + ibge_code: 4305975, + name: "Coxilha", + state: State::RS, + }, + Municipio { + ibge_code: 4306007, + name: "Crissiumal", + state: State::RS, + }, + Municipio { + ibge_code: 4306056, + name: "Cristal", + state: State::RS, + }, + Municipio { + ibge_code: 4306072, + name: "Cristal do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4306106, + name: "Cruz Alta", + state: State::RS, + }, + Municipio { + ibge_code: 4306130, + name: "Cruzaltense", + state: State::RS, + }, + Municipio { + ibge_code: 4306205, + name: "Cruzeiro do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4304309, + name: "Cândido Godói", + state: State::RS, + }, + Municipio { + ibge_code: 4306304, + name: "David Canabarro", + state: State::RS, + }, + Municipio { + ibge_code: 4306320, + name: "Derrubadas", + state: State::RS, + }, + Municipio { + ibge_code: 4306353, + name: "Dezesseis de Novembro", + state: State::RS, + }, + Municipio { + ibge_code: 4306379, + name: "Dilermando de Aguiar", + state: State::RS, + }, + Municipio { + ibge_code: 4306403, + name: "Dois Irmãos", + state: State::RS, + }, + Municipio { + ibge_code: 4306429, + name: "Dois Irmãos das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4306452, + name: "Dois Lajeados", + state: State::RS, + }, + Municipio { + ibge_code: 4306502, + name: "Dom Feliciano", + state: State::RS, + }, + Municipio { + ibge_code: 4306601, + name: "Dom Pedrito", + state: State::RS, + }, + Municipio { + ibge_code: 4306551, + name: "Dom Pedro de Alcântara", + state: State::RS, + }, + Municipio { + ibge_code: 4306700, + name: "Dona Francisca", + state: State::RS, + }, + Municipio { + ibge_code: 4306734, + name: "Doutor Maurício Cardoso", + state: State::RS, + }, + Municipio { + ibge_code: 4306759, + name: "Doutor Ricardo", + state: State::RS, + }, + Municipio { + ibge_code: 4306767, + name: "Eldorado do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4306809, + name: "Encantado", + state: State::RS, + }, + Municipio { + ibge_code: 4306908, + name: "Encruzilhada do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4306924, + name: "Engenho Velho", + state: State::RS, + }, + Municipio { + ibge_code: 4306957, + name: "Entre Rios do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4306932, + name: "Entre-Ijuís", + state: State::RS, + }, + Municipio { + ibge_code: 4306973, + name: "Erebango", + state: State::RS, + }, + Municipio { + ibge_code: 4307005, + name: "Erechim", + state: State::RS, + }, + Municipio { + ibge_code: 4307054, + name: "Ernestina", + state: State::RS, + }, + Municipio { + ibge_code: 4307203, + name: "Erval Grande", + state: State::RS, + }, + Municipio { + ibge_code: 4307302, + name: "Erval Seco", + state: State::RS, + }, + Municipio { + ibge_code: 4307401, + name: "Esmeralda", + state: State::RS, + }, + Municipio { + ibge_code: 4307450, + name: "Esperança do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4307500, + name: "Espumoso", + state: State::RS, + }, + Municipio { + ibge_code: 4307559, + name: "Estação", + state: State::RS, + }, + Municipio { + ibge_code: 4307708, + name: "Esteio", + state: State::RS, + }, + Municipio { + ibge_code: 4307807, + name: "Estrela", + state: State::RS, + }, + Municipio { + ibge_code: 4307815, + name: "Estrela Velha", + state: State::RS, + }, + Municipio { + ibge_code: 4307609, + name: "Estância Velha", + state: State::RS, + }, + Municipio { + ibge_code: 4307831, + name: "Eugênio de Castro", + state: State::RS, + }, + Municipio { + ibge_code: 4307864, + name: "Fagundes Varela", + state: State::RS, + }, + Municipio { + ibge_code: 4307906, + name: "Farroupilha", + state: State::RS, + }, + Municipio { + ibge_code: 4308003, + name: "Faxinal do Soturno", + state: State::RS, + }, + Municipio { + ibge_code: 4308052, + name: "Faxinalzinho", + state: State::RS, + }, + Municipio { + ibge_code: 4308078, + name: "Fazenda Vilanova", + state: State::RS, + }, + Municipio { + ibge_code: 4308102, + name: "Feliz", + state: State::RS, + }, + Municipio { + ibge_code: 4308201, + name: "Flores da Cunha", + state: State::RS, + }, + Municipio { + ibge_code: 4308250, + name: "Floriano Peixoto", + state: State::RS, + }, + Municipio { + ibge_code: 4308300, + name: "Fontoura Xavier", + state: State::RS, + }, + Municipio { + ibge_code: 4308409, + name: "Formigueiro", + state: State::RS, + }, + Municipio { + ibge_code: 4308433, + name: "Forquetinha", + state: State::RS, + }, + Municipio { + ibge_code: 4308458, + name: "Fortaleza dos Valos", + state: State::RS, + }, + Municipio { + ibge_code: 4308508, + name: "Frederico Westphalen", + state: State::RS, + }, + Municipio { + ibge_code: 4308607, + name: "Garibaldi", + state: State::RS, + }, + Municipio { + ibge_code: 4308656, + name: "Garruchos", + state: State::RS, + }, + Municipio { + ibge_code: 4308706, + name: "Gaurama", + state: State::RS, + }, + Municipio { + ibge_code: 4308805, + name: "General Câmara", + state: State::RS, + }, + Municipio { + ibge_code: 4308854, + name: "Gentil", + state: State::RS, + }, + Municipio { + ibge_code: 4308904, + name: "Getúlio Vargas", + state: State::RS, + }, + Municipio { + ibge_code: 4309001, + name: "Giruá", + state: State::RS, + }, + Municipio { + ibge_code: 4309050, + name: "Glorinha", + state: State::RS, + }, + Municipio { + ibge_code: 4309100, + name: "Gramado", + state: State::RS, + }, + Municipio { + ibge_code: 4309159, + name: "Gramado Xavier", + state: State::RS, + }, + Municipio { + ibge_code: 4309126, + name: "Gramado dos Loureiros", + state: State::RS, + }, + Municipio { + ibge_code: 4309209, + name: "Gravataí", + state: State::RS, + }, + Municipio { + ibge_code: 4309258, + name: "Guabiju", + state: State::RS, + }, + Municipio { + ibge_code: 4309407, + name: "Guaporé", + state: State::RS, + }, + Municipio { + ibge_code: 4309506, + name: "Guarani das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4309308, + name: "Guaíba", + state: State::RS, + }, + Municipio { + ibge_code: 4309555, + name: "Harmonia", + state: State::RS, + }, + Municipio { + ibge_code: 4307104, + name: "Herval", + state: State::RS, + }, + Municipio { + ibge_code: 4309571, + name: "Herveiras", + state: State::RS, + }, + Municipio { + ibge_code: 4309605, + name: "Horizontina", + state: State::RS, + }, + Municipio { + ibge_code: 4309654, + name: "Hulha Negra", + state: State::RS, + }, + Municipio { + ibge_code: 4309704, + name: "Humaitá", + state: State::RS, + }, + Municipio { + ibge_code: 4309753, + name: "Ibarama", + state: State::RS, + }, + Municipio { + ibge_code: 4309803, + name: "Ibiaçá", + state: State::RS, + }, + Municipio { + ibge_code: 4309902, + name: "Ibiraiaras", + state: State::RS, + }, + Municipio { + ibge_code: 4309951, + name: "Ibirapuitã", + state: State::RS, + }, + Municipio { + ibge_code: 4310009, + name: "Ibirubá", + state: State::RS, + }, + Municipio { + ibge_code: 4310108, + name: "Igrejinha", + state: State::RS, + }, + Municipio { + ibge_code: 4310207, + name: "Ijuí", + state: State::RS, + }, + Municipio { + ibge_code: 4310306, + name: "Ilópolis", + state: State::RS, + }, + Municipio { + ibge_code: 4310330, + name: "Imbé", + state: State::RS, + }, + Municipio { + ibge_code: 4310363, + name: "Imigrante", + state: State::RS, + }, + Municipio { + ibge_code: 4310405, + name: "Independência", + state: State::RS, + }, + Municipio { + ibge_code: 4310413, + name: "Inhacorá", + state: State::RS, + }, + Municipio { + ibge_code: 4310462, + name: "Ipiranga do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4310439, + name: "Ipê", + state: State::RS, + }, + Municipio { + ibge_code: 4310504, + name: "Iraí", + state: State::RS, + }, + Municipio { + ibge_code: 4310538, + name: "Itaara", + state: State::RS, + }, + Municipio { + ibge_code: 4310553, + name: "Itacurubi", + state: State::RS, + }, + Municipio { + ibge_code: 4310579, + name: "Itapuca", + state: State::RS, + }, + Municipio { + ibge_code: 4310603, + name: "Itaqui", + state: State::RS, + }, + Municipio { + ibge_code: 4310652, + name: "Itati", + state: State::RS, + }, + Municipio { + ibge_code: 4310702, + name: "Itatiba do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4310751, + name: "Ivorá", + state: State::RS, + }, + Municipio { + ibge_code: 4310801, + name: "Ivoti", + state: State::RS, + }, + Municipio { + ibge_code: 4310850, + name: "Jaboticaba", + state: State::RS, + }, + Municipio { + ibge_code: 4310876, + name: "Jacuizinho", + state: State::RS, + }, + Municipio { + ibge_code: 4310900, + name: "Jacutinga", + state: State::RS, + }, + Municipio { + ibge_code: 4311106, + name: "Jaguari", + state: State::RS, + }, + Municipio { + ibge_code: 4311007, + name: "Jaguarão", + state: State::RS, + }, + Municipio { + ibge_code: 4311122, + name: "Jaquirana", + state: State::RS, + }, + Municipio { + ibge_code: 4311130, + name: "Jari", + state: State::RS, + }, + Municipio { + ibge_code: 4311155, + name: "Jóia", + state: State::RS, + }, + Municipio { + ibge_code: 4311205, + name: "Júlio de Castilhos", + state: State::RS, + }, + Municipio { + ibge_code: 4311239, + name: "Lagoa Bonita do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4311304, + name: "Lagoa Vermelha", + state: State::RS, + }, + Municipio { + ibge_code: 4311270, + name: "Lagoa dos Três Cantos", + state: State::RS, + }, + Municipio { + ibge_code: 4311254, + name: "Lagoão", + state: State::RS, + }, + Municipio { + ibge_code: 4311403, + name: "Lajeado", + state: State::RS, + }, + Municipio { + ibge_code: 4311429, + name: "Lajeado do Bugre", + state: State::RS, + }, + Municipio { + ibge_code: 4311502, + name: "Lavras do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4311601, + name: "Liberato Salzano", + state: State::RS, + }, + Municipio { + ibge_code: 4311627, + name: "Lindolfo Collor", + state: State::RS, + }, + Municipio { + ibge_code: 4311643, + name: "Linha Nova", + state: State::RS, + }, + Municipio { + ibge_code: 4311700, + name: "Machadinho", + state: State::RS, + }, + Municipio { + ibge_code: 4311734, + name: "Mampituba", + state: State::RS, + }, + Municipio { + ibge_code: 4311759, + name: "Manoel Viana", + state: State::RS, + }, + Municipio { + ibge_code: 4311775, + name: "Maquiné", + state: State::RS, + }, + Municipio { + ibge_code: 4311791, + name: "Maratá", + state: State::RS, + }, + Municipio { + ibge_code: 4311809, + name: "Marau", + state: State::RS, + }, + Municipio { + ibge_code: 4311908, + name: "Marcelino Ramos", + state: State::RS, + }, + Municipio { + ibge_code: 4311981, + name: "Mariana Pimentel", + state: State::RS, + }, + Municipio { + ibge_code: 4312005, + name: "Mariano Moro", + state: State::RS, + }, + Municipio { + ibge_code: 4312054, + name: "Marques de Souza", + state: State::RS, + }, + Municipio { + ibge_code: 4312104, + name: "Mata", + state: State::RS, + }, + Municipio { + ibge_code: 4312138, + name: "Mato Castelhano", + state: State::RS, + }, + Municipio { + ibge_code: 4312153, + name: "Mato Leitão", + state: State::RS, + }, + Municipio { + ibge_code: 4312179, + name: "Mato Queimado", + state: State::RS, + }, + Municipio { + ibge_code: 4312203, + name: "Maximiliano de Almeida", + state: State::RS, + }, + Municipio { + ibge_code: 4311718, + name: "Maçambará", + state: State::RS, + }, + Municipio { + ibge_code: 4312252, + name: "Minas do Leão", + state: State::RS, + }, + Municipio { + ibge_code: 4312302, + name: "Miraguaí", + state: State::RS, + }, + Municipio { + ibge_code: 4312351, + name: "Montauri", + state: State::RS, + }, + Municipio { + ibge_code: 4312377, + name: "Monte Alegre dos Campos", + state: State::RS, + }, + Municipio { + ibge_code: 4312385, + name: "Monte Belo do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4312401, + name: "Montenegro", + state: State::RS, + }, + Municipio { + ibge_code: 4312427, + name: "Mormaço", + state: State::RS, + }, + Municipio { + ibge_code: 4312443, + name: "Morrinhos do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4312450, + name: "Morro Redondo", + state: State::RS, + }, + Municipio { + ibge_code: 4312476, + name: "Morro Reuter", + state: State::RS, + }, + Municipio { + ibge_code: 4312500, + name: "Mostardas", + state: State::RS, + }, + Municipio { + ibge_code: 4312617, + name: "Muitos Capões", + state: State::RS, + }, + Municipio { + ibge_code: 4312625, + name: "Muliterno", + state: State::RS, + }, + Municipio { + ibge_code: 4312609, + name: "Muçum", + state: State::RS, + }, + Municipio { + ibge_code: 4312674, + name: "Nicolau Vergueiro", + state: State::RS, + }, + Municipio { + ibge_code: 4312708, + name: "Nonoai", + state: State::RS, + }, + Municipio { + ibge_code: 4312757, + name: "Nova Alvorada", + state: State::RS, + }, + Municipio { + ibge_code: 4312807, + name: "Nova Araçá", + state: State::RS, + }, + Municipio { + ibge_code: 4312906, + name: "Nova Bassano", + state: State::RS, + }, + Municipio { + ibge_code: 4312955, + name: "Nova Boa Vista", + state: State::RS, + }, + Municipio { + ibge_code: 4313003, + name: "Nova Bréscia", + state: State::RS, + }, + Municipio { + ibge_code: 4313011, + name: "Nova Candelária", + state: State::RS, + }, + Municipio { + ibge_code: 4313037, + name: "Nova Esperança do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4313060, + name: "Nova Hartz", + state: State::RS, + }, + Municipio { + ibge_code: 4313102, + name: "Nova Palma", + state: State::RS, + }, + Municipio { + ibge_code: 4313201, + name: "Nova Petrópolis", + state: State::RS, + }, + Municipio { + ibge_code: 4313300, + name: "Nova Prata", + state: State::RS, + }, + Municipio { + ibge_code: 4313086, + name: "Nova Pádua", + state: State::RS, + }, + Municipio { + ibge_code: 4313334, + name: "Nova Ramada", + state: State::RS, + }, + Municipio { + ibge_code: 4313359, + name: "Nova Roma do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4313375, + name: "Nova Santa Rita", + state: State::RS, + }, + Municipio { + ibge_code: 4313490, + name: "Novo Barreiro", + state: State::RS, + }, + Municipio { + ibge_code: 4313391, + name: "Novo Cabrais", + state: State::RS, + }, + Municipio { + ibge_code: 4313409, + name: "Novo Hamburgo", + state: State::RS, + }, + Municipio { + ibge_code: 4313425, + name: "Novo Machado", + state: State::RS, + }, + Municipio { + ibge_code: 4313441, + name: "Novo Tiradentes", + state: State::RS, + }, + Municipio { + ibge_code: 4313466, + name: "Novo Xingu", + state: State::RS, + }, + Municipio { + ibge_code: 4312658, + name: "Não-Me-Toque", + state: State::RS, + }, + Municipio { + ibge_code: 4313508, + name: "Osório", + state: State::RS, + }, + Municipio { + ibge_code: 4313607, + name: "Paim Filho", + state: State::RS, + }, + Municipio { + ibge_code: 4313656, + name: "Palmares do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4313706, + name: "Palmeira das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4313805, + name: "Palmitinho", + state: State::RS, + }, + Municipio { + ibge_code: 4313904, + name: "Panambi", + state: State::RS, + }, + Municipio { + ibge_code: 4313953, + name: "Pantano Grande", + state: State::RS, + }, + Municipio { + ibge_code: 4314001, + name: "Paraí", + state: State::RS, + }, + Municipio { + ibge_code: 4314027, + name: "Paraíso do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4314035, + name: "Pareci Novo", + state: State::RS, + }, + Municipio { + ibge_code: 4314050, + name: "Parobé", + state: State::RS, + }, + Municipio { + ibge_code: 4314068, + name: "Passa Sete", + state: State::RS, + }, + Municipio { + ibge_code: 4314100, + name: "Passo Fundo", + state: State::RS, + }, + Municipio { + ibge_code: 4314076, + name: "Passo do Sobrado", + state: State::RS, + }, + Municipio { + ibge_code: 4314134, + name: "Paulo Bento", + state: State::RS, + }, + Municipio { + ibge_code: 4314159, + name: "Paverama", + state: State::RS, + }, + Municipio { + ibge_code: 4314175, + name: "Pedras Altas", + state: State::RS, + }, + Municipio { + ibge_code: 4314209, + name: "Pedro Osório", + state: State::RS, + }, + Municipio { + ibge_code: 4314308, + name: "Pejuçara", + state: State::RS, + }, + Municipio { + ibge_code: 4314407, + name: "Pelotas", + state: State::RS, + }, + Municipio { + ibge_code: 4314423, + name: "Picada Café", + state: State::RS, + }, + Municipio { + ibge_code: 4314456, + name: "Pinhal", + state: State::RS, + }, + Municipio { + ibge_code: 4314472, + name: "Pinhal Grande", + state: State::RS, + }, + Municipio { + ibge_code: 4314464, + name: "Pinhal da Serra", + state: State::RS, + }, + Municipio { + ibge_code: 4314498, + name: "Pinheirinho do Vale", + state: State::RS, + }, + Municipio { + ibge_code: 4314506, + name: "Pinheiro Machado", + state: State::RS, + }, + Municipio { + ibge_code: 4314548, + name: "Pinto Bandeira", + state: State::RS, + }, + Municipio { + ibge_code: 4314555, + name: "Pirapó", + state: State::RS, + }, + Municipio { + ibge_code: 4314605, + name: "Piratini", + state: State::RS, + }, + Municipio { + ibge_code: 4314704, + name: "Planalto", + state: State::RS, + }, + Municipio { + ibge_code: 4314787, + name: "Ponte Preta", + state: State::RS, + }, + Municipio { + ibge_code: 4314779, + name: "Pontão", + state: State::RS, + }, + Municipio { + ibge_code: 4314902, + name: "Porto Alegre", + state: State::RS, + }, + Municipio { + ibge_code: 4315008, + name: "Porto Lucena", + state: State::RS, + }, + Municipio { + ibge_code: 4315057, + name: "Porto Mauá", + state: State::RS, + }, + Municipio { + ibge_code: 4315073, + name: "Porto Vera Cruz", + state: State::RS, + }, + Municipio { + ibge_code: 4315107, + name: "Porto Xavier", + state: State::RS, + }, + Municipio { + ibge_code: 4314803, + name: "Portão", + state: State::RS, + }, + Municipio { + ibge_code: 4315131, + name: "Pouso Novo", + state: State::RS, + }, + Municipio { + ibge_code: 4314753, + name: "Poço das Antas", + state: State::RS, + }, + Municipio { + ibge_code: 4315149, + name: "Presidente Lucena", + state: State::RS, + }, + Municipio { + ibge_code: 4315156, + name: "Progresso", + state: State::RS, + }, + Municipio { + ibge_code: 4315172, + name: "Protásio Alves", + state: State::RS, + }, + Municipio { + ibge_code: 4315206, + name: "Putinga", + state: State::RS, + }, + Municipio { + ibge_code: 4315305, + name: "Quaraí", + state: State::RS, + }, + Municipio { + ibge_code: 4315313, + name: "Quatro Irmãos", + state: State::RS, + }, + Municipio { + ibge_code: 4315321, + name: "Quevedos", + state: State::RS, + }, + Municipio { + ibge_code: 4315354, + name: "Quinze de Novembro", + state: State::RS, + }, + Municipio { + ibge_code: 4315404, + name: "Redentora", + state: State::RS, + }, + Municipio { + ibge_code: 4315453, + name: "Relvado", + state: State::RS, + }, + Municipio { + ibge_code: 4315503, + name: "Restinga Sêca", + state: State::RS, + }, + Municipio { + ibge_code: 4315602, + name: "Rio Grande", + state: State::RS, + }, + Municipio { + ibge_code: 4315701, + name: "Rio Pardo", + state: State::RS, + }, + Municipio { + ibge_code: 4315552, + name: "Rio dos Índios", + state: State::RS, + }, + Municipio { + ibge_code: 4315750, + name: "Riozinho", + state: State::RS, + }, + Municipio { + ibge_code: 4315800, + name: "Roca Sales", + state: State::RS, + }, + Municipio { + ibge_code: 4315909, + name: "Rodeio Bonito", + state: State::RS, + }, + Municipio { + ibge_code: 4315958, + name: "Rolador", + state: State::RS, + }, + Municipio { + ibge_code: 4316006, + name: "Rolante", + state: State::RS, + }, + Municipio { + ibge_code: 4316105, + name: "Ronda Alta", + state: State::RS, + }, + Municipio { + ibge_code: 4316204, + name: "Rondinha", + state: State::RS, + }, + Municipio { + ibge_code: 4316303, + name: "Roque Gonzales", + state: State::RS, + }, + Municipio { + ibge_code: 4316402, + name: "Rosário do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4316428, + name: "Sagrada Família", + state: State::RS, + }, + Municipio { + ibge_code: 4316436, + name: "Saldanha Marinho", + state: State::RS, + }, + Municipio { + ibge_code: 4316451, + name: "Salto do Jacuí", + state: State::RS, + }, + Municipio { + ibge_code: 4316477, + name: "Salvador das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4316501, + name: "Salvador do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4316600, + name: "Sananduva", + state: State::RS, + }, + Municipio { + ibge_code: 4317103, + name: "Sant'Ana do Livramento", + state: State::RS, + }, + Municipio { + ibge_code: 4316709, + name: "Santa Bárbara do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4316733, + name: "Santa Cecília do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4316758, + name: "Santa Clara do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4316808, + name: "Santa Cruz do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4316972, + name: "Santa Margarida do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4316907, + name: "Santa Maria", + state: State::RS, + }, + Municipio { + ibge_code: 4316956, + name: "Santa Maria do Herval", + state: State::RS, + }, + Municipio { + ibge_code: 4317202, + name: "Santa Rosa", + state: State::RS, + }, + Municipio { + ibge_code: 4317251, + name: "Santa Tereza", + state: State::RS, + }, + Municipio { + ibge_code: 4317301, + name: "Santa Vitória do Palmar", + state: State::RS, + }, + Municipio { + ibge_code: 4317004, + name: "Santana da Boa Vista", + state: State::RS, + }, + Municipio { + ibge_code: 4317400, + name: "Santiago", + state: State::RS, + }, + Municipio { + ibge_code: 4317608, + name: "Santo Antônio da Patrulha", + state: State::RS, + }, + Municipio { + ibge_code: 4317707, + name: "Santo Antônio das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4317558, + name: "Santo Antônio do Palma", + state: State::RS, + }, + Municipio { + ibge_code: 4317756, + name: "Santo Antônio do Planalto", + state: State::RS, + }, + Municipio { + ibge_code: 4317806, + name: "Santo Augusto", + state: State::RS, + }, + Municipio { + ibge_code: 4317905, + name: "Santo Cristo", + state: State::RS, + }, + Municipio { + ibge_code: 4317954, + name: "Santo Expedito do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4317509, + name: "Santo Ângelo", + state: State::RS, + }, + Municipio { + ibge_code: 4319901, + name: "Sapiranga", + state: State::RS, + }, + Municipio { + ibge_code: 4320008, + name: "Sapucaia do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4320107, + name: "Sarandi", + state: State::RS, + }, + Municipio { + ibge_code: 4320206, + name: "Seberi", + state: State::RS, + }, + Municipio { + ibge_code: 4320230, + name: "Sede Nova", + state: State::RS, + }, + Municipio { + ibge_code: 4320263, + name: "Segredo", + state: State::RS, + }, + Municipio { + ibge_code: 4320305, + name: "Selbach", + state: State::RS, + }, + Municipio { + ibge_code: 4320321, + name: "Senador Salgado Filho", + state: State::RS, + }, + Municipio { + ibge_code: 4320354, + name: "Sentinela do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4320404, + name: "Serafina Corrêa", + state: State::RS, + }, + Municipio { + ibge_code: 4320503, + name: "Sertão", + state: State::RS, + }, + Municipio { + ibge_code: 4320552, + name: "Sertão Santana", + state: State::RS, + }, + Municipio { + ibge_code: 4320578, + name: "Sete de Setembro", + state: State::RS, + }, + Municipio { + ibge_code: 4320602, + name: "Severiano de Almeida", + state: State::RS, + }, + Municipio { + ibge_code: 4320651, + name: "Silveira Martins", + state: State::RS, + }, + Municipio { + ibge_code: 4320677, + name: "Sinimbu", + state: State::RS, + }, + Municipio { + ibge_code: 4320701, + name: "Sobradinho", + state: State::RS, + }, + Municipio { + ibge_code: 4320800, + name: "Soledade", + state: State::RS, + }, + Municipio { + ibge_code: 4318002, + name: "São Borja", + state: State::RS, + }, + Municipio { + ibge_code: 4318051, + name: "São Domingos do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4318101, + name: "São Francisco de Assis", + state: State::RS, + }, + Municipio { + ibge_code: 4318200, + name: "São Francisco de Paula", + state: State::RS, + }, + Municipio { + ibge_code: 4318309, + name: "São Gabriel", + state: State::RS, + }, + Municipio { + ibge_code: 4318408, + name: "São Jerônimo", + state: State::RS, + }, + Municipio { + ibge_code: 4318440, + name: "São Jorge", + state: State::RS, + }, + Municipio { + ibge_code: 4318457, + name: "São José das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4318465, + name: "São José do Herval", + state: State::RS, + }, + Municipio { + ibge_code: 4318481, + name: "São José do Hortêncio", + state: State::RS, + }, + Municipio { + ibge_code: 4318499, + name: "São José do Inhacorá", + state: State::RS, + }, + Municipio { + ibge_code: 4318507, + name: "São José do Norte", + state: State::RS, + }, + Municipio { + ibge_code: 4318606, + name: "São José do Ouro", + state: State::RS, + }, + Municipio { + ibge_code: 4318614, + name: "São José do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4318622, + name: "São José dos Ausentes", + state: State::RS, + }, + Municipio { + ibge_code: 4318424, + name: "São João da Urtiga", + state: State::RS, + }, + Municipio { + ibge_code: 4318432, + name: "São João do Polêsine", + state: State::RS, + }, + Municipio { + ibge_code: 4318705, + name: "São Leopoldo", + state: State::RS, + }, + Municipio { + ibge_code: 4318804, + name: "São Lourenço do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4318903, + name: "São Luiz Gonzaga", + state: State::RS, + }, + Municipio { + ibge_code: 4319000, + name: "São Marcos", + state: State::RS, + }, + Municipio { + ibge_code: 4319109, + name: "São Martinho", + state: State::RS, + }, + Municipio { + ibge_code: 4319125, + name: "São Martinho da Serra", + state: State::RS, + }, + Municipio { + ibge_code: 4319158, + name: "São Miguel das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4319208, + name: "São Nicolau", + state: State::RS, + }, + Municipio { + ibge_code: 4319307, + name: "São Paulo das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4319356, + name: "São Pedro da Serra", + state: State::RS, + }, + Municipio { + ibge_code: 4319364, + name: "São Pedro das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4319372, + name: "São Pedro do Butiá", + state: State::RS, + }, + Municipio { + ibge_code: 4319406, + name: "São Pedro do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4319505, + name: "São Sebastião do Caí", + state: State::RS, + }, + Municipio { + ibge_code: 4319604, + name: "São Sepé", + state: State::RS, + }, + Municipio { + ibge_code: 4319703, + name: "São Valentim", + state: State::RS, + }, + Municipio { + ibge_code: 4319711, + name: "São Valentim do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4319737, + name: "São Valério do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4319752, + name: "São Vendelino", + state: State::RS, + }, + Municipio { + ibge_code: 4319802, + name: "São Vicente do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4320453, + name: "Sério", + state: State::RS, + }, + Municipio { + ibge_code: 4320859, + name: "Tabaí", + state: State::RS, + }, + Municipio { + ibge_code: 4320909, + name: "Tapejara", + state: State::RS, + }, + Municipio { + ibge_code: 4321006, + name: "Tapera", + state: State::RS, + }, + Municipio { + ibge_code: 4321105, + name: "Tapes", + state: State::RS, + }, + Municipio { + ibge_code: 4321204, + name: "Taquara", + state: State::RS, + }, + Municipio { + ibge_code: 4321303, + name: "Taquari", + state: State::RS, + }, + Municipio { + ibge_code: 4321329, + name: "Taquaruçu do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4321352, + name: "Tavares", + state: State::RS, + }, + Municipio { + ibge_code: 4321402, + name: "Tenente Portela", + state: State::RS, + }, + Municipio { + ibge_code: 4321436, + name: "Terra de Areia", + state: State::RS, + }, + Municipio { + ibge_code: 4321451, + name: "Teutônia", + state: State::RS, + }, + Municipio { + ibge_code: 4321469, + name: "Tio Hugo", + state: State::RS, + }, + Municipio { + ibge_code: 4321477, + name: "Tiradentes do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4321493, + name: "Toropi", + state: State::RS, + }, + Municipio { + ibge_code: 4321501, + name: "Torres", + state: State::RS, + }, + Municipio { + ibge_code: 4321600, + name: "Tramandaí", + state: State::RS, + }, + Municipio { + ibge_code: 4321626, + name: "Travesseiro", + state: State::RS, + }, + Municipio { + ibge_code: 4321956, + name: "Trindade do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4322004, + name: "Triunfo", + state: State::RS, + }, + Municipio { + ibge_code: 4321634, + name: "Três Arroios", + state: State::RS, + }, + Municipio { + ibge_code: 4321667, + name: "Três Cachoeiras", + state: State::RS, + }, + Municipio { + ibge_code: 4321709, + name: "Três Coroas", + state: State::RS, + }, + Municipio { + ibge_code: 4321832, + name: "Três Forquilhas", + state: State::RS, + }, + Municipio { + ibge_code: 4321857, + name: "Três Palmeiras", + state: State::RS, + }, + Municipio { + ibge_code: 4321907, + name: "Três Passos", + state: State::RS, + }, + Municipio { + ibge_code: 4321808, + name: "Três de Maio", + state: State::RS, + }, + Municipio { + ibge_code: 4322103, + name: "Tucunduva", + state: State::RS, + }, + Municipio { + ibge_code: 4322152, + name: "Tunas", + state: State::RS, + }, + Municipio { + ibge_code: 4322186, + name: "Tupanci do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4322202, + name: "Tupanciretã", + state: State::RS, + }, + Municipio { + ibge_code: 4322251, + name: "Tupandi", + state: State::RS, + }, + Municipio { + ibge_code: 4322301, + name: "Tuparendi", + state: State::RS, + }, + Municipio { + ibge_code: 4322327, + name: "Turuçu", + state: State::RS, + }, + Municipio { + ibge_code: 4322343, + name: "Ubiretama", + state: State::RS, + }, + Municipio { + ibge_code: 4322376, + name: "Unistalda", + state: State::RS, + }, + Municipio { + ibge_code: 4322350, + name: "União da Serra", + state: State::RS, + }, + Municipio { + ibge_code: 4322400, + name: "Uruguaiana", + state: State::RS, + }, + Municipio { + ibge_code: 4322509, + name: "Vacaria", + state: State::RS, + }, + Municipio { + ibge_code: 4322541, + name: "Vale Real", + state: State::RS, + }, + Municipio { + ibge_code: 4322525, + name: "Vale Verde", + state: State::RS, + }, + Municipio { + ibge_code: 4322533, + name: "Vale do Sol", + state: State::RS, + }, + Municipio { + ibge_code: 4322558, + name: "Vanini", + state: State::RS, + }, + Municipio { + ibge_code: 4322608, + name: "Venâncio Aires", + state: State::RS, + }, + Municipio { + ibge_code: 4322707, + name: "Vera Cruz", + state: State::RS, + }, + Municipio { + ibge_code: 4322806, + name: "Veranópolis", + state: State::RS, + }, + Municipio { + ibge_code: 4322855, + name: "Vespasiano Corrêa", + state: State::RS, + }, + Municipio { + ibge_code: 4322905, + name: "Viadutos", + state: State::RS, + }, + Municipio { + ibge_code: 4323002, + name: "Viamão", + state: State::RS, + }, + Municipio { + ibge_code: 4323101, + name: "Vicente Dutra", + state: State::RS, + }, + Municipio { + ibge_code: 4323200, + name: "Victor Graeff", + state: State::RS, + }, + Municipio { + ibge_code: 4323309, + name: "Vila Flores", + state: State::RS, + }, + Municipio { + ibge_code: 4323358, + name: "Vila Lângaro", + state: State::RS, + }, + Municipio { + ibge_code: 4323408, + name: "Vila Maria", + state: State::RS, + }, + Municipio { + ibge_code: 4323457, + name: "Vila Nova do Sul", + state: State::RS, + }, + Municipio { + ibge_code: 4323507, + name: "Vista Alegre", + state: State::RS, + }, + Municipio { + ibge_code: 4323606, + name: "Vista Alegre do Prata", + state: State::RS, + }, + Municipio { + ibge_code: 4323705, + name: "Vista Gaúcha", + state: State::RS, + }, + Municipio { + ibge_code: 4323754, + name: "Vitória das Missões", + state: State::RS, + }, + Municipio { + ibge_code: 4323770, + name: "Westfália", + state: State::RS, + }, + Municipio { + ibge_code: 4323804, + name: "Xangri-lá", + state: State::RS, + }, + Municipio { + ibge_code: 4300059, + name: "Água Santa", + state: State::RS, + }, + Municipio { + ibge_code: 4301552, + name: "Áurea", + state: State::RS, + }, + Municipio { + ibge_code: 4200051, + name: "Abdon Batista", + state: State::SC, + }, + Municipio { + ibge_code: 4200101, + name: "Abelardo Luz", + state: State::SC, + }, + Municipio { + ibge_code: 4200200, + name: "Agrolândia", + state: State::SC, + }, + Municipio { + ibge_code: 4200309, + name: "Agronômica", + state: State::SC, + }, + Municipio { + ibge_code: 4200705, + name: "Alfredo Wagner", + state: State::SC, + }, + Municipio { + ibge_code: 4200754, + name: "Alto Bela Vista", + state: State::SC, + }, + Municipio { + ibge_code: 4200804, + name: "Anchieta", + state: State::SC, + }, + Municipio { + ibge_code: 4200903, + name: "Angelina", + state: State::SC, + }, + Municipio { + ibge_code: 4201000, + name: "Anita Garibaldi", + state: State::SC, + }, + Municipio { + ibge_code: 4201109, + name: "Anitápolis", + state: State::SC, + }, + Municipio { + ibge_code: 4201208, + name: "Antônio Carlos", + state: State::SC, + }, + Municipio { + ibge_code: 4201257, + name: "Apiúna", + state: State::SC, + }, + Municipio { + ibge_code: 4201273, + name: "Arabutã", + state: State::SC, + }, + Municipio { + ibge_code: 4201307, + name: "Araquari", + state: State::SC, + }, + Municipio { + ibge_code: 4201406, + name: "Araranguá", + state: State::SC, + }, + Municipio { + ibge_code: 4201505, + name: "Armazém", + state: State::SC, + }, + Municipio { + ibge_code: 4201604, + name: "Arroio Trinta", + state: State::SC, + }, + Municipio { + ibge_code: 4201653, + name: "Arvoredo", + state: State::SC, + }, + Municipio { + ibge_code: 4201703, + name: "Ascurra", + state: State::SC, + }, + Municipio { + ibge_code: 4201802, + name: "Atalanta", + state: State::SC, + }, + Municipio { + ibge_code: 4201901, + name: "Aurora", + state: State::SC, + }, + Municipio { + ibge_code: 4201950, + name: "Balneário Arroio do Silva", + state: State::SC, + }, + Municipio { + ibge_code: 4202057, + name: "Balneário Barra do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4202008, + name: "Balneário Camboriú", + state: State::SC, + }, + Municipio { + ibge_code: 4202073, + name: "Balneário Gaivota", + state: State::SC, + }, + Municipio { + ibge_code: 4212809, + name: "Balneário Piçarras", + state: State::SC, + }, + Municipio { + ibge_code: 4220000, + name: "Balneário Rincão", + state: State::SC, + }, + Municipio { + ibge_code: 4202081, + name: "Bandeirante", + state: State::SC, + }, + Municipio { + ibge_code: 4202099, + name: "Barra Bonita", + state: State::SC, + }, + Municipio { + ibge_code: 4202107, + name: "Barra Velha", + state: State::SC, + }, + Municipio { + ibge_code: 4202131, + name: "Bela Vista do Toldo", + state: State::SC, + }, + Municipio { + ibge_code: 4202156, + name: "Belmonte", + state: State::SC, + }, + Municipio { + ibge_code: 4202206, + name: "Benedito Novo", + state: State::SC, + }, + Municipio { + ibge_code: 4202305, + name: "Biguaçu", + state: State::SC, + }, + Municipio { + ibge_code: 4202404, + name: "Blumenau", + state: State::SC, + }, + Municipio { + ibge_code: 4202438, + name: "Bocaina do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4202503, + name: "Bom Jardim da Serra", + state: State::SC, + }, + Municipio { + ibge_code: 4202537, + name: "Bom Jesus", + state: State::SC, + }, + Municipio { + ibge_code: 4202578, + name: "Bom Jesus do Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4202602, + name: "Bom Retiro", + state: State::SC, + }, + Municipio { + ibge_code: 4202453, + name: "Bombinhas", + state: State::SC, + }, + Municipio { + ibge_code: 4202701, + name: "Botuverá", + state: State::SC, + }, + Municipio { + ibge_code: 4202800, + name: "Braço do Norte", + state: State::SC, + }, + Municipio { + ibge_code: 4202859, + name: "Braço do Trombudo", + state: State::SC, + }, + Municipio { + ibge_code: 4202875, + name: "Brunópolis", + state: State::SC, + }, + Municipio { + ibge_code: 4202909, + name: "Brusque", + state: State::SC, + }, + Municipio { + ibge_code: 4203105, + name: "Caibi", + state: State::SC, + }, + Municipio { + ibge_code: 4203154, + name: "Calmon", + state: State::SC, + }, + Municipio { + ibge_code: 4203204, + name: "Camboriú", + state: State::SC, + }, + Municipio { + ibge_code: 4203303, + name: "Campo Alegre", + state: State::SC, + }, + Municipio { + ibge_code: 4203402, + name: "Campo Belo do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4203501, + name: "Campo Erê", + state: State::SC, + }, + Municipio { + ibge_code: 4203600, + name: "Campos Novos", + state: State::SC, + }, + Municipio { + ibge_code: 4203709, + name: "Canelinha", + state: State::SC, + }, + Municipio { + ibge_code: 4203808, + name: "Canoinhas", + state: State::SC, + }, + Municipio { + ibge_code: 4203907, + name: "Capinzal", + state: State::SC, + }, + Municipio { + ibge_code: 4203956, + name: "Capivari de Baixo", + state: State::SC, + }, + Municipio { + ibge_code: 4203253, + name: "Capão Alto", + state: State::SC, + }, + Municipio { + ibge_code: 4204004, + name: "Catanduvas", + state: State::SC, + }, + Municipio { + ibge_code: 4204103, + name: "Caxambu do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4203006, + name: "Caçador", + state: State::SC, + }, + Municipio { + ibge_code: 4204152, + name: "Celso Ramos", + state: State::SC, + }, + Municipio { + ibge_code: 4204178, + name: "Cerro Negro", + state: State::SC, + }, + Municipio { + ibge_code: 4204194, + name: "Chapadão do Lageado", + state: State::SC, + }, + Municipio { + ibge_code: 4204202, + name: "Chapecó", + state: State::SC, + }, + Municipio { + ibge_code: 4204251, + name: "Cocal do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4204301, + name: "Concórdia", + state: State::SC, + }, + Municipio { + ibge_code: 4204350, + name: "Cordilheira Alta", + state: State::SC, + }, + Municipio { + ibge_code: 4204400, + name: "Coronel Freitas", + state: State::SC, + }, + Municipio { + ibge_code: 4204459, + name: "Coronel Martins", + state: State::SC, + }, + Municipio { + ibge_code: 4204558, + name: "Correia Pinto", + state: State::SC, + }, + Municipio { + ibge_code: 4204509, + name: "Corupá", + state: State::SC, + }, + Municipio { + ibge_code: 4204608, + name: "Criciúma", + state: State::SC, + }, + Municipio { + ibge_code: 4204707, + name: "Cunha Porã", + state: State::SC, + }, + Municipio { + ibge_code: 4204756, + name: "Cunhataí", + state: State::SC, + }, + Municipio { + ibge_code: 4204806, + name: "Curitibanos", + state: State::SC, + }, + Municipio { + ibge_code: 4204905, + name: "Descanso", + state: State::SC, + }, + Municipio { + ibge_code: 4205001, + name: "Dionísio Cerqueira", + state: State::SC, + }, + Municipio { + ibge_code: 4205100, + name: "Dona Emma", + state: State::SC, + }, + Municipio { + ibge_code: 4205159, + name: "Doutor Pedrinho", + state: State::SC, + }, + Municipio { + ibge_code: 4205175, + name: "Entre Rios", + state: State::SC, + }, + Municipio { + ibge_code: 4205191, + name: "Ermo", + state: State::SC, + }, + Municipio { + ibge_code: 4205209, + name: "Erval Velho", + state: State::SC, + }, + Municipio { + ibge_code: 4205308, + name: "Faxinal dos Guedes", + state: State::SC, + }, + Municipio { + ibge_code: 4205357, + name: "Flor do Sertão", + state: State::SC, + }, + Municipio { + ibge_code: 4205407, + name: "Florianópolis", + state: State::SC, + }, + Municipio { + ibge_code: 4205431, + name: "Formosa do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4205456, + name: "Forquilhinha", + state: State::SC, + }, + Municipio { + ibge_code: 4205506, + name: "Fraiburgo", + state: State::SC, + }, + Municipio { + ibge_code: 4205555, + name: "Frei Rogério", + state: State::SC, + }, + Municipio { + ibge_code: 4205605, + name: "Galvão", + state: State::SC, + }, + Municipio { + ibge_code: 4205704, + name: "Garopaba", + state: State::SC, + }, + Municipio { + ibge_code: 4205803, + name: "Garuva", + state: State::SC, + }, + Municipio { + ibge_code: 4205902, + name: "Gaspar", + state: State::SC, + }, + Municipio { + ibge_code: 4206009, + name: "Governador Celso Ramos", + state: State::SC, + }, + Municipio { + ibge_code: 4206207, + name: "Gravatal", + state: State::SC, + }, + Municipio { + ibge_code: 4206108, + name: "Grão-Pará", + state: State::SC, + }, + Municipio { + ibge_code: 4206306, + name: "Guabiruba", + state: State::SC, + }, + Municipio { + ibge_code: 4206405, + name: "Guaraciaba", + state: State::SC, + }, + Municipio { + ibge_code: 4206504, + name: "Guaramirim", + state: State::SC, + }, + Municipio { + ibge_code: 4206603, + name: "Guarujá do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4206652, + name: "Guatambú", + state: State::SC, + }, + Municipio { + ibge_code: 4206702, + name: "Herval d'Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4206751, + name: "Ibiam", + state: State::SC, + }, + Municipio { + ibge_code: 4206801, + name: "Ibicaré", + state: State::SC, + }, + Municipio { + ibge_code: 4206900, + name: "Ibirama", + state: State::SC, + }, + Municipio { + ibge_code: 4207106, + name: "Ilhota", + state: State::SC, + }, + Municipio { + ibge_code: 4207205, + name: "Imaruí", + state: State::SC, + }, + Municipio { + ibge_code: 4207304, + name: "Imbituba", + state: State::SC, + }, + Municipio { + ibge_code: 4207403, + name: "Imbuia", + state: State::SC, + }, + Municipio { + ibge_code: 4207502, + name: "Indaial", + state: State::SC, + }, + Municipio { + ibge_code: 4207577, + name: "Iomerê", + state: State::SC, + }, + Municipio { + ibge_code: 4207601, + name: "Ipira", + state: State::SC, + }, + Municipio { + ibge_code: 4207650, + name: "Iporã do Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4207684, + name: "Ipuaçu", + state: State::SC, + }, + Municipio { + ibge_code: 4207700, + name: "Ipumirim", + state: State::SC, + }, + Municipio { + ibge_code: 4207759, + name: "Iraceminha", + state: State::SC, + }, + Municipio { + ibge_code: 4207809, + name: "Irani", + state: State::SC, + }, + Municipio { + ibge_code: 4207858, + name: "Irati", + state: State::SC, + }, + Municipio { + ibge_code: 4207908, + name: "Irineópolis", + state: State::SC, + }, + Municipio { + ibge_code: 4208104, + name: "Itaiópolis", + state: State::SC, + }, + Municipio { + ibge_code: 4208203, + name: "Itajaí", + state: State::SC, + }, + Municipio { + ibge_code: 4208302, + name: "Itapema", + state: State::SC, + }, + Municipio { + ibge_code: 4208401, + name: "Itapiranga", + state: State::SC, + }, + Municipio { + ibge_code: 4208450, + name: "Itapoá", + state: State::SC, + }, + Municipio { + ibge_code: 4208500, + name: "Ituporanga", + state: State::SC, + }, + Municipio { + ibge_code: 4208005, + name: "Itá", + state: State::SC, + }, + Municipio { + ibge_code: 4207007, + name: "Içara", + state: State::SC, + }, + Municipio { + ibge_code: 4208609, + name: "Jaborá", + state: State::SC, + }, + Municipio { + ibge_code: 4208708, + name: "Jacinto Machado", + state: State::SC, + }, + Municipio { + ibge_code: 4208807, + name: "Jaguaruna", + state: State::SC, + }, + Municipio { + ibge_code: 4208906, + name: "Jaraguá do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4208955, + name: "Jardinópolis", + state: State::SC, + }, + Municipio { + ibge_code: 4209003, + name: "Joaçaba", + state: State::SC, + }, + Municipio { + ibge_code: 4209102, + name: "Joinville", + state: State::SC, + }, + Municipio { + ibge_code: 4209151, + name: "José Boiteux", + state: State::SC, + }, + Municipio { + ibge_code: 4209177, + name: "Jupiá", + state: State::SC, + }, + Municipio { + ibge_code: 4209201, + name: "Lacerdópolis", + state: State::SC, + }, + Municipio { + ibge_code: 4209300, + name: "Lages", + state: State::SC, + }, + Municipio { + ibge_code: 4209409, + name: "Laguna", + state: State::SC, + }, + Municipio { + ibge_code: 4209458, + name: "Lajeado Grande", + state: State::SC, + }, + Municipio { + ibge_code: 4209508, + name: "Laurentino", + state: State::SC, + }, + Municipio { + ibge_code: 4209607, + name: "Lauro Müller", + state: State::SC, + }, + Municipio { + ibge_code: 4209706, + name: "Lebon Régis", + state: State::SC, + }, + Municipio { + ibge_code: 4209805, + name: "Leoberto Leal", + state: State::SC, + }, + Municipio { + ibge_code: 4209854, + name: "Lindóia do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4209904, + name: "Lontras", + state: State::SC, + }, + Municipio { + ibge_code: 4210001, + name: "Luiz Alves", + state: State::SC, + }, + Municipio { + ibge_code: 4210035, + name: "Luzerna", + state: State::SC, + }, + Municipio { + ibge_code: 4210050, + name: "Macieira", + state: State::SC, + }, + Municipio { + ibge_code: 4210100, + name: "Mafra", + state: State::SC, + }, + Municipio { + ibge_code: 4210209, + name: "Major Gercino", + state: State::SC, + }, + Municipio { + ibge_code: 4210308, + name: "Major Vieira", + state: State::SC, + }, + Municipio { + ibge_code: 4210407, + name: "Maracajá", + state: State::SC, + }, + Municipio { + ibge_code: 4210506, + name: "Maravilha", + state: State::SC, + }, + Municipio { + ibge_code: 4210555, + name: "Marema", + state: State::SC, + }, + Municipio { + ibge_code: 4210605, + name: "Massaranduba", + state: State::SC, + }, + Municipio { + ibge_code: 4210704, + name: "Matos Costa", + state: State::SC, + }, + Municipio { + ibge_code: 4210803, + name: "Meleiro", + state: State::SC, + }, + Municipio { + ibge_code: 4210852, + name: "Mirim Doce", + state: State::SC, + }, + Municipio { + ibge_code: 4210902, + name: "Modelo", + state: State::SC, + }, + Municipio { + ibge_code: 4211009, + name: "Mondaí", + state: State::SC, + }, + Municipio { + ibge_code: 4211058, + name: "Monte Carlo", + state: State::SC, + }, + Municipio { + ibge_code: 4211108, + name: "Monte Castelo", + state: State::SC, + }, + Municipio { + ibge_code: 4211256, + name: "Morro Grande", + state: State::SC, + }, + Municipio { + ibge_code: 4211207, + name: "Morro da Fumaça", + state: State::SC, + }, + Municipio { + ibge_code: 4211306, + name: "Navegantes", + state: State::SC, + }, + Municipio { + ibge_code: 4211405, + name: "Nova Erechim", + state: State::SC, + }, + Municipio { + ibge_code: 4211454, + name: "Nova Itaberaba", + state: State::SC, + }, + Municipio { + ibge_code: 4211504, + name: "Nova Trento", + state: State::SC, + }, + Municipio { + ibge_code: 4211603, + name: "Nova Veneza", + state: State::SC, + }, + Municipio { + ibge_code: 4211652, + name: "Novo Horizonte", + state: State::SC, + }, + Municipio { + ibge_code: 4211702, + name: "Orleans", + state: State::SC, + }, + Municipio { + ibge_code: 4211751, + name: "Otacílio Costa", + state: State::SC, + }, + Municipio { + ibge_code: 4211801, + name: "Ouro", + state: State::SC, + }, + Municipio { + ibge_code: 4211850, + name: "Ouro Verde", + state: State::SC, + }, + Municipio { + ibge_code: 4211876, + name: "Paial", + state: State::SC, + }, + Municipio { + ibge_code: 4211892, + name: "Painel", + state: State::SC, + }, + Municipio { + ibge_code: 4211900, + name: "Palhoça", + state: State::SC, + }, + Municipio { + ibge_code: 4212007, + name: "Palma Sola", + state: State::SC, + }, + Municipio { + ibge_code: 4212056, + name: "Palmeira", + state: State::SC, + }, + Municipio { + ibge_code: 4212106, + name: "Palmitos", + state: State::SC, + }, + Municipio { + ibge_code: 4212205, + name: "Papanduva", + state: State::SC, + }, + Municipio { + ibge_code: 4212239, + name: "Paraíso", + state: State::SC, + }, + Municipio { + ibge_code: 4212254, + name: "Passo de Torres", + state: State::SC, + }, + Municipio { + ibge_code: 4212270, + name: "Passos Maia", + state: State::SC, + }, + Municipio { + ibge_code: 4212304, + name: "Paulo Lopes", + state: State::SC, + }, + Municipio { + ibge_code: 4212403, + name: "Pedras Grandes", + state: State::SC, + }, + Municipio { + ibge_code: 4212502, + name: "Penha", + state: State::SC, + }, + Municipio { + ibge_code: 4212601, + name: "Peritiba", + state: State::SC, + }, + Municipio { + ibge_code: 4212650, + name: "Pescaria Brava", + state: State::SC, + }, + Municipio { + ibge_code: 4212700, + name: "Petrolândia", + state: State::SC, + }, + Municipio { + ibge_code: 4212908, + name: "Pinhalzinho", + state: State::SC, + }, + Municipio { + ibge_code: 4213005, + name: "Pinheiro Preto", + state: State::SC, + }, + Municipio { + ibge_code: 4213104, + name: "Piratuba", + state: State::SC, + }, + Municipio { + ibge_code: 4213153, + name: "Planalto Alegre", + state: State::SC, + }, + Municipio { + ibge_code: 4213203, + name: "Pomerode", + state: State::SC, + }, + Municipio { + ibge_code: 4213302, + name: "Ponte Alta", + state: State::SC, + }, + Municipio { + ibge_code: 4213351, + name: "Ponte Alta do Norte", + state: State::SC, + }, + Municipio { + ibge_code: 4213401, + name: "Ponte Serrada", + state: State::SC, + }, + Municipio { + ibge_code: 4213500, + name: "Porto Belo", + state: State::SC, + }, + Municipio { + ibge_code: 4213609, + name: "Porto União", + state: State::SC, + }, + Municipio { + ibge_code: 4213708, + name: "Pouso Redondo", + state: State::SC, + }, + Municipio { + ibge_code: 4213807, + name: "Praia Grande", + state: State::SC, + }, + Municipio { + ibge_code: 4213906, + name: "Presidente Castello Branco", + state: State::SC, + }, + Municipio { + ibge_code: 4214003, + name: "Presidente Getúlio", + state: State::SC, + }, + Municipio { + ibge_code: 4214102, + name: "Presidente Nereu", + state: State::SC, + }, + Municipio { + ibge_code: 4214151, + name: "Princesa", + state: State::SC, + }, + Municipio { + ibge_code: 4214201, + name: "Quilombo", + state: State::SC, + }, + Municipio { + ibge_code: 4214300, + name: "Rancho Queimado", + state: State::SC, + }, + Municipio { + ibge_code: 4214904, + name: "Rio Fortuna", + state: State::SC, + }, + Municipio { + ibge_code: 4215000, + name: "Rio Negrinho", + state: State::SC, + }, + Municipio { + ibge_code: 4215059, + name: "Rio Rufino", + state: State::SC, + }, + Municipio { + ibge_code: 4214409, + name: "Rio das Antas", + state: State::SC, + }, + Municipio { + ibge_code: 4214508, + name: "Rio do Campo", + state: State::SC, + }, + Municipio { + ibge_code: 4214607, + name: "Rio do Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4214805, + name: "Rio do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4214706, + name: "Rio dos Cedros", + state: State::SC, + }, + Municipio { + ibge_code: 4215075, + name: "Riqueza", + state: State::SC, + }, + Municipio { + ibge_code: 4215109, + name: "Rodeio", + state: State::SC, + }, + Municipio { + ibge_code: 4215208, + name: "Romelândia", + state: State::SC, + }, + Municipio { + ibge_code: 4215307, + name: "Salete", + state: State::SC, + }, + Municipio { + ibge_code: 4215356, + name: "Saltinho", + state: State::SC, + }, + Municipio { + ibge_code: 4215406, + name: "Salto Veloso", + state: State::SC, + }, + Municipio { + ibge_code: 4215455, + name: "Sangão", + state: State::SC, + }, + Municipio { + ibge_code: 4215505, + name: "Santa Cecília", + state: State::SC, + }, + Municipio { + ibge_code: 4215554, + name: "Santa Helena", + state: State::SC, + }, + Municipio { + ibge_code: 4215604, + name: "Santa Rosa de Lima", + state: State::SC, + }, + Municipio { + ibge_code: 4215653, + name: "Santa Rosa do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4215679, + name: "Santa Terezinha", + state: State::SC, + }, + Municipio { + ibge_code: 4215687, + name: "Santa Terezinha do Progresso", + state: State::SC, + }, + Municipio { + ibge_code: 4215695, + name: "Santiago do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4215703, + name: "Santo Amaro da Imperatriz", + state: State::SC, + }, + Municipio { + ibge_code: 4217303, + name: "Saudades", + state: State::SC, + }, + Municipio { + ibge_code: 4217402, + name: "Schroeder", + state: State::SC, + }, + Municipio { + ibge_code: 4217501, + name: "Seara", + state: State::SC, + }, + Municipio { + ibge_code: 4217550, + name: "Serra Alta", + state: State::SC, + }, + Municipio { + ibge_code: 4217600, + name: "Siderópolis", + state: State::SC, + }, + Municipio { + ibge_code: 4217709, + name: "Sombrio", + state: State::SC, + }, + Municipio { + ibge_code: 4217758, + name: "Sul Brasil", + state: State::SC, + }, + Municipio { + ibge_code: 4215802, + name: "São Bento do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4215752, + name: "São Bernardino", + state: State::SC, + }, + Municipio { + ibge_code: 4215901, + name: "São Bonifácio", + state: State::SC, + }, + Municipio { + ibge_code: 4216008, + name: "São Carlos", + state: State::SC, + }, + Municipio { + ibge_code: 4216057, + name: "São Cristóvão do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4216107, + name: "São Domingos", + state: State::SC, + }, + Municipio { + ibge_code: 4216206, + name: "São Francisco do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4216503, + name: "São Joaquim", + state: State::SC, + }, + Municipio { + ibge_code: 4216602, + name: "São José", + state: State::SC, + }, + Municipio { + ibge_code: 4216701, + name: "São José do Cedro", + state: State::SC, + }, + Municipio { + ibge_code: 4216800, + name: "São José do Cerrito", + state: State::SC, + }, + Municipio { + ibge_code: 4216305, + name: "São João Batista", + state: State::SC, + }, + Municipio { + ibge_code: 4216354, + name: "São João do Itaperiú", + state: State::SC, + }, + Municipio { + ibge_code: 4216255, + name: "São João do Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4216404, + name: "São João do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4216909, + name: "São Lourenço do Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4217006, + name: "São Ludgero", + state: State::SC, + }, + Municipio { + ibge_code: 4217105, + name: "São Martinho", + state: State::SC, + }, + Municipio { + ibge_code: 4217154, + name: "São Miguel da Boa Vista", + state: State::SC, + }, + Municipio { + ibge_code: 4217204, + name: "São Miguel do Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4217253, + name: "São Pedro de Alcântara", + state: State::SC, + }, + Municipio { + ibge_code: 4217808, + name: "Taió", + state: State::SC, + }, + Municipio { + ibge_code: 4217907, + name: "Tangará", + state: State::SC, + }, + Municipio { + ibge_code: 4217956, + name: "Tigrinhos", + state: State::SC, + }, + Municipio { + ibge_code: 4218004, + name: "Tijucas", + state: State::SC, + }, + Municipio { + ibge_code: 4218103, + name: "Timbé do Sul", + state: State::SC, + }, + Municipio { + ibge_code: 4218202, + name: "Timbó", + state: State::SC, + }, + Municipio { + ibge_code: 4218251, + name: "Timbó Grande", + state: State::SC, + }, + Municipio { + ibge_code: 4218350, + name: "Treviso", + state: State::SC, + }, + Municipio { + ibge_code: 4218509, + name: "Treze Tílias", + state: State::SC, + }, + Municipio { + ibge_code: 4218400, + name: "Treze de Maio", + state: State::SC, + }, + Municipio { + ibge_code: 4218608, + name: "Trombudo Central", + state: State::SC, + }, + Municipio { + ibge_code: 4218301, + name: "Três Barras", + state: State::SC, + }, + Municipio { + ibge_code: 4218707, + name: "Tubarão", + state: State::SC, + }, + Municipio { + ibge_code: 4218756, + name: "Tunápolis", + state: State::SC, + }, + Municipio { + ibge_code: 4218806, + name: "Turvo", + state: State::SC, + }, + Municipio { + ibge_code: 4218855, + name: "União do Oeste", + state: State::SC, + }, + Municipio { + ibge_code: 4218905, + name: "Urubici", + state: State::SC, + }, + Municipio { + ibge_code: 4218954, + name: "Urupema", + state: State::SC, + }, + Municipio { + ibge_code: 4219002, + name: "Urussanga", + state: State::SC, + }, + Municipio { + ibge_code: 4219150, + name: "Vargem", + state: State::SC, + }, + Municipio { + ibge_code: 4219176, + name: "Vargem Bonita", + state: State::SC, + }, + Municipio { + ibge_code: 4219101, + name: "Vargeão", + state: State::SC, + }, + Municipio { + ibge_code: 4219200, + name: "Vidal Ramos", + state: State::SC, + }, + Municipio { + ibge_code: 4219309, + name: "Videira", + state: State::SC, + }, + Municipio { + ibge_code: 4219358, + name: "Vitor Meireles", + state: State::SC, + }, + Municipio { + ibge_code: 4219408, + name: "Witmarsum", + state: State::SC, + }, + Municipio { + ibge_code: 4219507, + name: "Xanxerê", + state: State::SC, + }, + Municipio { + ibge_code: 4219606, + name: "Xavantina", + state: State::SC, + }, + Municipio { + ibge_code: 4219705, + name: "Xaxim", + state: State::SC, + }, + Municipio { + ibge_code: 4219853, + name: "Zortéa", + state: State::SC, + }, + Municipio { + ibge_code: 4200408, + name: "Água Doce", + state: State::SC, + }, + Municipio { + ibge_code: 4200556, + name: "Águas Frias", + state: State::SC, + }, + Municipio { + ibge_code: 4200606, + name: "Águas Mornas", + state: State::SC, + }, + Municipio { + ibge_code: 4200507, + name: "Águas de Chapecó", + state: State::SC, + }, + Municipio { + ibge_code: 2800100, + name: "Amparo do São Francisco", + state: State::SE, + }, + Municipio { + ibge_code: 2800209, + name: "Aquidabã", + state: State::SE, + }, + Municipio { + ibge_code: 2800308, + name: "Aracaju", + state: State::SE, + }, + Municipio { + ibge_code: 2800407, + name: "Arauá", + state: State::SE, + }, + Municipio { + ibge_code: 2800506, + name: "Areia Branca", + state: State::SE, + }, + Municipio { + ibge_code: 2800605, + name: "Barra dos Coqueiros", + state: State::SE, + }, + Municipio { + ibge_code: 2800670, + name: "Boquim", + state: State::SE, + }, + Municipio { + ibge_code: 2800704, + name: "Brejo Grande", + state: State::SE, + }, + Municipio { + ibge_code: 2801009, + name: "Campo do Brito", + state: State::SE, + }, + Municipio { + ibge_code: 2801108, + name: "Canhoba", + state: State::SE, + }, + Municipio { + ibge_code: 2801207, + name: "Canindé de São Francisco", + state: State::SE, + }, + Municipio { + ibge_code: 2801306, + name: "Capela", + state: State::SE, + }, + Municipio { + ibge_code: 2801405, + name: "Carira", + state: State::SE, + }, + Municipio { + ibge_code: 2801504, + name: "Carmópolis", + state: State::SE, + }, + Municipio { + ibge_code: 2801603, + name: "Cedro de São João", + state: State::SE, + }, + Municipio { + ibge_code: 2801702, + name: "Cristinápolis", + state: State::SE, + }, + Municipio { + ibge_code: 2801900, + name: "Cumbe", + state: State::SE, + }, + Municipio { + ibge_code: 2802007, + name: "Divina Pastora", + state: State::SE, + }, + Municipio { + ibge_code: 2802106, + name: "Estância", + state: State::SE, + }, + Municipio { + ibge_code: 2802205, + name: "Feira Nova", + state: State::SE, + }, + Municipio { + ibge_code: 2802304, + name: "Frei Paulo", + state: State::SE, + }, + Municipio { + ibge_code: 2802403, + name: "Gararu", + state: State::SE, + }, + Municipio { + ibge_code: 2802502, + name: "General Maynard", + state: State::SE, + }, + Municipio { + ibge_code: 2802601, + name: "Graccho Cardoso", + state: State::SE, + }, + Municipio { + ibge_code: 2802700, + name: "Ilha das Flores", + state: State::SE, + }, + Municipio { + ibge_code: 2802809, + name: "Indiaroba", + state: State::SE, + }, + Municipio { + ibge_code: 2802908, + name: "Itabaiana", + state: State::SE, + }, + Municipio { + ibge_code: 2803005, + name: "Itabaianinha", + state: State::SE, + }, + Municipio { + ibge_code: 2803104, + name: "Itabi", + state: State::SE, + }, + Municipio { + ibge_code: 2803203, + name: "Itaporanga d'Ajuda", + state: State::SE, + }, + Municipio { + ibge_code: 2803302, + name: "Japaratuba", + state: State::SE, + }, + Municipio { + ibge_code: 2803401, + name: "Japoatã", + state: State::SE, + }, + Municipio { + ibge_code: 2803500, + name: "Lagarto", + state: State::SE, + }, + Municipio { + ibge_code: 2803609, + name: "Laranjeiras", + state: State::SE, + }, + Municipio { + ibge_code: 2803708, + name: "Macambira", + state: State::SE, + }, + Municipio { + ibge_code: 2803807, + name: "Malhada dos Bois", + state: State::SE, + }, + Municipio { + ibge_code: 2803906, + name: "Malhador", + state: State::SE, + }, + Municipio { + ibge_code: 2804003, + name: "Maruim", + state: State::SE, + }, + Municipio { + ibge_code: 2804102, + name: "Moita Bonita", + state: State::SE, + }, + Municipio { + ibge_code: 2804201, + name: "Monte Alegre de Sergipe", + state: State::SE, + }, + Municipio { + ibge_code: 2804300, + name: "Muribeca", + state: State::SE, + }, + Municipio { + ibge_code: 2804409, + name: "Neópolis", + state: State::SE, + }, + Municipio { + ibge_code: 2804458, + name: "Nossa Senhora Aparecida", + state: State::SE, + }, + Municipio { + ibge_code: 2804508, + name: "Nossa Senhora da Glória", + state: State::SE, + }, + Municipio { + ibge_code: 2804607, + name: "Nossa Senhora das Dores", + state: State::SE, + }, + Municipio { + ibge_code: 2804706, + name: "Nossa Senhora de Lourdes", + state: State::SE, + }, + Municipio { + ibge_code: 2804805, + name: "Nossa Senhora do Socorro", + state: State::SE, + }, + Municipio { + ibge_code: 2804904, + name: "Pacatuba", + state: State::SE, + }, + Municipio { + ibge_code: 2805000, + name: "Pedra Mole", + state: State::SE, + }, + Municipio { + ibge_code: 2805109, + name: "Pedrinhas", + state: State::SE, + }, + Municipio { + ibge_code: 2805208, + name: "Pinhão", + state: State::SE, + }, + Municipio { + ibge_code: 2805307, + name: "Pirambu", + state: State::SE, + }, + Municipio { + ibge_code: 2805604, + name: "Porto da Folha", + state: State::SE, + }, + Municipio { + ibge_code: 2805406, + name: "Poço Redondo", + state: State::SE, + }, + Municipio { + ibge_code: 2805505, + name: "Poço Verde", + state: State::SE, + }, + Municipio { + ibge_code: 2805703, + name: "Propriá", + state: State::SE, + }, + Municipio { + ibge_code: 2805901, + name: "Riachuelo", + state: State::SE, + }, + Municipio { + ibge_code: 2805802, + name: "Riachão do Dantas", + state: State::SE, + }, + Municipio { + ibge_code: 2806008, + name: "Ribeirópolis", + state: State::SE, + }, + Municipio { + ibge_code: 2806107, + name: "Rosário do Catete", + state: State::SE, + }, + Municipio { + ibge_code: 2806206, + name: "Salgado", + state: State::SE, + }, + Municipio { + ibge_code: 2806305, + name: "Santa Luzia do Itanhy", + state: State::SE, + }, + Municipio { + ibge_code: 2806503, + name: "Santa Rosa de Lima", + state: State::SE, + }, + Municipio { + ibge_code: 2806404, + name: "Santana do São Francisco", + state: State::SE, + }, + Municipio { + ibge_code: 2806602, + name: "Santo Amaro das Brotas", + state: State::SE, + }, + Municipio { + ibge_code: 2807105, + name: "Simão Dias", + state: State::SE, + }, + Municipio { + ibge_code: 2807204, + name: "Siriri", + state: State::SE, + }, + Municipio { + ibge_code: 2806701, + name: "São Cristóvão", + state: State::SE, + }, + Municipio { + ibge_code: 2806800, + name: "São Domingos", + state: State::SE, + }, + Municipio { + ibge_code: 2806909, + name: "São Francisco", + state: State::SE, + }, + Municipio { + ibge_code: 2807006, + name: "São Miguel do Aleixo", + state: State::SE, + }, + Municipio { + ibge_code: 2807303, + name: "Telha", + state: State::SE, + }, + Municipio { + ibge_code: 2807402, + name: "Tobias Barreto", + state: State::SE, + }, + Municipio { + ibge_code: 2807501, + name: "Tomar do Geru", + state: State::SE, + }, + Municipio { + ibge_code: 2807600, + name: "Umbaúba", + state: State::SE, + }, + Municipio { + ibge_code: 3500105, + name: "Adamantina", + state: State::SP, + }, + Municipio { + ibge_code: 3500204, + name: "Adolfo", + state: State::SP, + }, + Municipio { + ibge_code: 3500303, + name: "Aguaí", + state: State::SP, + }, + Municipio { + ibge_code: 3500709, + name: "Agudos", + state: State::SP, + }, + Municipio { + ibge_code: 3500758, + name: "Alambari", + state: State::SP, + }, + Municipio { + ibge_code: 3500808, + name: "Alfredo Marcondes", + state: State::SP, + }, + Municipio { + ibge_code: 3500907, + name: "Altair", + state: State::SP, + }, + Municipio { + ibge_code: 3501004, + name: "Altinópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3501103, + name: "Alto Alegre", + state: State::SP, + }, + Municipio { + ibge_code: 3501152, + name: "Alumínio", + state: State::SP, + }, + Municipio { + ibge_code: 3501509, + name: "Alvinlândia", + state: State::SP, + }, + Municipio { + ibge_code: 3501608, + name: "Americana", + state: State::SP, + }, + Municipio { + ibge_code: 3501905, + name: "Amparo", + state: State::SP, + }, + Municipio { + ibge_code: 3501707, + name: "Américo Brasiliense", + state: State::SP, + }, + Municipio { + ibge_code: 3501806, + name: "Américo de Campos", + state: State::SP, + }, + Municipio { + ibge_code: 3502002, + name: "Analândia", + state: State::SP, + }, + Municipio { + ibge_code: 3502101, + name: "Andradina", + state: State::SP, + }, + Municipio { + ibge_code: 3502200, + name: "Angatuba", + state: State::SP, + }, + Municipio { + ibge_code: 3502309, + name: "Anhembi", + state: State::SP, + }, + Municipio { + ibge_code: 3502408, + name: "Anhumas", + state: State::SP, + }, + Municipio { + ibge_code: 3502507, + name: "Aparecida", + state: State::SP, + }, + Municipio { + ibge_code: 3502606, + name: "Aparecida d'Oeste", + state: State::SP, + }, + Municipio { + ibge_code: 3502705, + name: "Apiaí", + state: State::SP, + }, + Municipio { + ibge_code: 3503000, + name: "Aramina", + state: State::SP, + }, + Municipio { + ibge_code: 3503109, + name: "Arandu", + state: State::SP, + }, + Municipio { + ibge_code: 3503158, + name: "Arapeí", + state: State::SP, + }, + Municipio { + ibge_code: 3503208, + name: "Araraquara", + state: State::SP, + }, + Municipio { + ibge_code: 3503307, + name: "Araras", + state: State::SP, + }, + Municipio { + ibge_code: 3502754, + name: "Araçariguama", + state: State::SP, + }, + Municipio { + ibge_code: 3502804, + name: "Araçatuba", + state: State::SP, + }, + Municipio { + ibge_code: 3502903, + name: "Araçoiaba da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3503356, + name: "Arco-Íris", + state: State::SP, + }, + Municipio { + ibge_code: 3503406, + name: "Arealva", + state: State::SP, + }, + Municipio { + ibge_code: 3503505, + name: "Areias", + state: State::SP, + }, + Municipio { + ibge_code: 3503604, + name: "Areiópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3503703, + name: "Ariranha", + state: State::SP, + }, + Municipio { + ibge_code: 3503802, + name: "Artur Nogueira", + state: State::SP, + }, + Municipio { + ibge_code: 3503901, + name: "Arujá", + state: State::SP, + }, + Municipio { + ibge_code: 3503950, + name: "Aspásia", + state: State::SP, + }, + Municipio { + ibge_code: 3504008, + name: "Assis", + state: State::SP, + }, + Municipio { + ibge_code: 3504107, + name: "Atibaia", + state: State::SP, + }, + Municipio { + ibge_code: 3504206, + name: "Auriflama", + state: State::SP, + }, + Municipio { + ibge_code: 3504404, + name: "Avanhandava", + state: State::SP, + }, + Municipio { + ibge_code: 3504503, + name: "Avaré", + state: State::SP, + }, + Municipio { + ibge_code: 3504305, + name: "Avaí", + state: State::SP, + }, + Municipio { + ibge_code: 3504602, + name: "Bady Bassitt", + state: State::SP, + }, + Municipio { + ibge_code: 3504701, + name: "Balbinos", + state: State::SP, + }, + Municipio { + ibge_code: 3504909, + name: "Bananal", + state: State::SP, + }, + Municipio { + ibge_code: 3505104, + name: "Barbosa", + state: State::SP, + }, + Municipio { + ibge_code: 3505203, + name: "Bariri", + state: State::SP, + }, + Municipio { + ibge_code: 3505302, + name: "Barra Bonita", + state: State::SP, + }, + Municipio { + ibge_code: 3505351, + name: "Barra do Chapéu", + state: State::SP, + }, + Municipio { + ibge_code: 3505401, + name: "Barra do Turvo", + state: State::SP, + }, + Municipio { + ibge_code: 3505500, + name: "Barretos", + state: State::SP, + }, + Municipio { + ibge_code: 3505609, + name: "Barrinha", + state: State::SP, + }, + Municipio { + ibge_code: 3505708, + name: "Barueri", + state: State::SP, + }, + Municipio { + ibge_code: 3505005, + name: "Barão de Antonina", + state: State::SP, + }, + Municipio { + ibge_code: 3505807, + name: "Bastos", + state: State::SP, + }, + Municipio { + ibge_code: 3505906, + name: "Batatais", + state: State::SP, + }, + Municipio { + ibge_code: 3506003, + name: "Bauru", + state: State::SP, + }, + Municipio { + ibge_code: 3506102, + name: "Bebedouro", + state: State::SP, + }, + Municipio { + ibge_code: 3506201, + name: "Bento de Abreu", + state: State::SP, + }, + Municipio { + ibge_code: 3506300, + name: "Bernardino de Campos", + state: State::SP, + }, + Municipio { + ibge_code: 3506359, + name: "Bertioga", + state: State::SP, + }, + Municipio { + ibge_code: 3506409, + name: "Bilac", + state: State::SP, + }, + Municipio { + ibge_code: 3506508, + name: "Birigui", + state: State::SP, + }, + Municipio { + ibge_code: 3506607, + name: "Biritiba Mirim", + state: State::SP, + }, + Municipio { + ibge_code: 3506706, + name: "Boa Esperança do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3506805, + name: "Bocaina", + state: State::SP, + }, + Municipio { + ibge_code: 3506904, + name: "Bofete", + state: State::SP, + }, + Municipio { + ibge_code: 3507001, + name: "Boituva", + state: State::SP, + }, + Municipio { + ibge_code: 3507100, + name: "Bom Jesus dos Perdões", + state: State::SP, + }, + Municipio { + ibge_code: 3507159, + name: "Bom Sucesso de Itararé", + state: State::SP, + }, + Municipio { + ibge_code: 3507308, + name: "Boracéia", + state: State::SP, + }, + Municipio { + ibge_code: 3507407, + name: "Borborema", + state: State::SP, + }, + Municipio { + ibge_code: 3507456, + name: "Borebi", + state: State::SP, + }, + Municipio { + ibge_code: 3507209, + name: "Borá", + state: State::SP, + }, + Municipio { + ibge_code: 3507506, + name: "Botucatu", + state: State::SP, + }, + Municipio { + ibge_code: 3507605, + name: "Bragança Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3507704, + name: "Braúna", + state: State::SP, + }, + Municipio { + ibge_code: 3507753, + name: "Brejo Alegre", + state: State::SP, + }, + Municipio { + ibge_code: 3507803, + name: "Brodowski", + state: State::SP, + }, + Municipio { + ibge_code: 3507902, + name: "Brotas", + state: State::SP, + }, + Municipio { + ibge_code: 3508009, + name: "Buri", + state: State::SP, + }, + Municipio { + ibge_code: 3508108, + name: "Buritama", + state: State::SP, + }, + Municipio { + ibge_code: 3508207, + name: "Buritizal", + state: State::SP, + }, + Municipio { + ibge_code: 3504800, + name: "Bálsamo", + state: State::SP, + }, + Municipio { + ibge_code: 3508405, + name: "Cabreúva", + state: State::SP, + }, + Municipio { + ibge_code: 3508306, + name: "Cabrália Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3508603, + name: "Cachoeira Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3508702, + name: "Caconde", + state: State::SP, + }, + Municipio { + ibge_code: 3508801, + name: "Cafelândia", + state: State::SP, + }, + Municipio { + ibge_code: 3508900, + name: "Caiabu", + state: State::SP, + }, + Municipio { + ibge_code: 3509007, + name: "Caieiras", + state: State::SP, + }, + Municipio { + ibge_code: 3509106, + name: "Caiuá", + state: State::SP, + }, + Municipio { + ibge_code: 3509205, + name: "Cajamar", + state: State::SP, + }, + Municipio { + ibge_code: 3509254, + name: "Cajati", + state: State::SP, + }, + Municipio { + ibge_code: 3509304, + name: "Cajobi", + state: State::SP, + }, + Municipio { + ibge_code: 3509403, + name: "Cajuru", + state: State::SP, + }, + Municipio { + ibge_code: 3509452, + name: "Campina do Monte Alegre", + state: State::SP, + }, + Municipio { + ibge_code: 3509502, + name: "Campinas", + state: State::SP, + }, + Municipio { + ibge_code: 3509601, + name: "Campo Limpo Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3509809, + name: "Campos Novos Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3509700, + name: "Campos do Jordão", + state: State::SP, + }, + Municipio { + ibge_code: 3509908, + name: "Cananéia", + state: State::SP, + }, + Municipio { + ibge_code: 3509957, + name: "Canas", + state: State::SP, + }, + Municipio { + ibge_code: 3510153, + name: "Canitar", + state: State::SP, + }, + Municipio { + ibge_code: 3510302, + name: "Capela do Alto", + state: State::SP, + }, + Municipio { + ibge_code: 3510401, + name: "Capivari", + state: State::SP, + }, + Municipio { + ibge_code: 3510203, + name: "Capão Bonito", + state: State::SP, + }, + Municipio { + ibge_code: 3510500, + name: "Caraguatatuba", + state: State::SP, + }, + Municipio { + ibge_code: 3510609, + name: "Carapicuíba", + state: State::SP, + }, + Municipio { + ibge_code: 3510708, + name: "Cardoso", + state: State::SP, + }, + Municipio { + ibge_code: 3510807, + name: "Casa Branca", + state: State::SP, + }, + Municipio { + ibge_code: 3511003, + name: "Castilho", + state: State::SP, + }, + Municipio { + ibge_code: 3511102, + name: "Catanduva", + state: State::SP, + }, + Municipio { + ibge_code: 3511201, + name: "Catiguá", + state: State::SP, + }, + Municipio { + ibge_code: 3508504, + name: "Caçapava", + state: State::SP, + }, + Municipio { + ibge_code: 3511300, + name: "Cedral", + state: State::SP, + }, + Municipio { + ibge_code: 3511409, + name: "Cerqueira César", + state: State::SP, + }, + Municipio { + ibge_code: 3511508, + name: "Cerquilho", + state: State::SP, + }, + Municipio { + ibge_code: 3511607, + name: "Cesário Lange", + state: State::SP, + }, + Municipio { + ibge_code: 3511706, + name: "Charqueada", + state: State::SP, + }, + Municipio { + ibge_code: 3557204, + name: "Chavantes", + state: State::SP, + }, + Municipio { + ibge_code: 3511904, + name: "Clementina", + state: State::SP, + }, + Municipio { + ibge_code: 3512001, + name: "Colina", + state: State::SP, + }, + Municipio { + ibge_code: 3512100, + name: "Colômbia", + state: State::SP, + }, + Municipio { + ibge_code: 3512209, + name: "Conchal", + state: State::SP, + }, + Municipio { + ibge_code: 3512308, + name: "Conchas", + state: State::SP, + }, + Municipio { + ibge_code: 3512407, + name: "Cordeirópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3512506, + name: "Coroados", + state: State::SP, + }, + Municipio { + ibge_code: 3512605, + name: "Coronel Macedo", + state: State::SP, + }, + Municipio { + ibge_code: 3512704, + name: "Corumbataí", + state: State::SP, + }, + Municipio { + ibge_code: 3512902, + name: "Cosmorama", + state: State::SP, + }, + Municipio { + ibge_code: 3512803, + name: "Cosmópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3513009, + name: "Cotia", + state: State::SP, + }, + Municipio { + ibge_code: 3513108, + name: "Cravinhos", + state: State::SP, + }, + Municipio { + ibge_code: 3513207, + name: "Cristais Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3513405, + name: "Cruzeiro", + state: State::SP, + }, + Municipio { + ibge_code: 3513306, + name: "Cruzália", + state: State::SP, + }, + Municipio { + ibge_code: 3513504, + name: "Cubatão", + state: State::SP, + }, + Municipio { + ibge_code: 3513603, + name: "Cunha", + state: State::SP, + }, + Municipio { + ibge_code: 3510906, + name: "Cássia dos Coqueiros", + state: State::SP, + }, + Municipio { + ibge_code: 3510005, + name: "Cândido Mota", + state: State::SP, + }, + Municipio { + ibge_code: 3510104, + name: "Cândido Rodrigues", + state: State::SP, + }, + Municipio { + ibge_code: 3513702, + name: "Descalvado", + state: State::SP, + }, + Municipio { + ibge_code: 3513801, + name: "Diadema", + state: State::SP, + }, + Municipio { + ibge_code: 3513850, + name: "Dirce Reis", + state: State::SP, + }, + Municipio { + ibge_code: 3513900, + name: "Divinolândia", + state: State::SP, + }, + Municipio { + ibge_code: 3514007, + name: "Dobrada", + state: State::SP, + }, + Municipio { + ibge_code: 3514106, + name: "Dois Córregos", + state: State::SP, + }, + Municipio { + ibge_code: 3514205, + name: "Dolcinópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3514304, + name: "Dourado", + state: State::SP, + }, + Municipio { + ibge_code: 3514403, + name: "Dracena", + state: State::SP, + }, + Municipio { + ibge_code: 3514502, + name: "Duartina", + state: State::SP, + }, + Municipio { + ibge_code: 3514601, + name: "Dumont", + state: State::SP, + }, + Municipio { + ibge_code: 3514700, + name: "Echaporã", + state: State::SP, + }, + Municipio { + ibge_code: 3514809, + name: "Eldorado", + state: State::SP, + }, + Municipio { + ibge_code: 3514908, + name: "Elias Fausto", + state: State::SP, + }, + Municipio { + ibge_code: 3514924, + name: "Elisiário", + state: State::SP, + }, + Municipio { + ibge_code: 3514957, + name: "Embaúba", + state: State::SP, + }, + Municipio { + ibge_code: 3515004, + name: "Embu das Artes", + state: State::SP, + }, + Municipio { + ibge_code: 3515103, + name: "Embu-Guaçu", + state: State::SP, + }, + Municipio { + ibge_code: 3515129, + name: "Emilianópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3515152, + name: "Engenheiro Coelho", + state: State::SP, + }, + Municipio { + ibge_code: 3515186, + name: "Espírito Santo do Pinhal", + state: State::SP, + }, + Municipio { + ibge_code: 3515194, + name: "Espírito Santo do Turvo", + state: State::SP, + }, + Municipio { + ibge_code: 3557303, + name: "Estiva Gerbi", + state: State::SP, + }, + Municipio { + ibge_code: 3515202, + name: "Estrela d'Oeste", + state: State::SP, + }, + Municipio { + ibge_code: 3515301, + name: "Estrela do Norte", + state: State::SP, + }, + Municipio { + ibge_code: 3515350, + name: "Euclides da Cunha Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3515400, + name: "Fartura", + state: State::SP, + }, + Municipio { + ibge_code: 3515608, + name: "Fernando Prestes", + state: State::SP, + }, + Municipio { + ibge_code: 3515509, + name: "Fernandópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3515657, + name: "Fernão", + state: State::SP, + }, + Municipio { + ibge_code: 3515707, + name: "Ferraz de Vasconcelos", + state: State::SP, + }, + Municipio { + ibge_code: 3515806, + name: "Flora Rica", + state: State::SP, + }, + Municipio { + ibge_code: 3515905, + name: "Floreal", + state: State::SP, + }, + Municipio { + ibge_code: 3516101, + name: "Florínea", + state: State::SP, + }, + Municipio { + ibge_code: 3516002, + name: "Flórida Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3516200, + name: "Franca", + state: State::SP, + }, + Municipio { + ibge_code: 3516309, + name: "Francisco Morato", + state: State::SP, + }, + Municipio { + ibge_code: 3516408, + name: "Franco da Rocha", + state: State::SP, + }, + Municipio { + ibge_code: 3516507, + name: "Gabriel Monteiro", + state: State::SP, + }, + Municipio { + ibge_code: 3516705, + name: "Garça", + state: State::SP, + }, + Municipio { + ibge_code: 3516804, + name: "Gastão Vidigal", + state: State::SP, + }, + Municipio { + ibge_code: 3516853, + name: "Gavião Peixoto", + state: State::SP, + }, + Municipio { + ibge_code: 3516903, + name: "General Salgado", + state: State::SP, + }, + Municipio { + ibge_code: 3517000, + name: "Getulina", + state: State::SP, + }, + Municipio { + ibge_code: 3517109, + name: "Glicério", + state: State::SP, + }, + Municipio { + ibge_code: 3517307, + name: "Guaimbê", + state: State::SP, + }, + Municipio { + ibge_code: 3517208, + name: "Guaiçara", + state: State::SP, + }, + Municipio { + ibge_code: 3517604, + name: "Guapiara", + state: State::SP, + }, + Municipio { + ibge_code: 3517505, + name: "Guapiaçu", + state: State::SP, + }, + Municipio { + ibge_code: 3517901, + name: "Guaraci", + state: State::SP, + }, + Municipio { + ibge_code: 3518008, + name: "Guarani d'Oeste", + state: State::SP, + }, + Municipio { + ibge_code: 3518107, + name: "Guarantã", + state: State::SP, + }, + Municipio { + ibge_code: 3518206, + name: "Guararapes", + state: State::SP, + }, + Municipio { + ibge_code: 3518305, + name: "Guararema", + state: State::SP, + }, + Municipio { + ibge_code: 3518404, + name: "Guaratinguetá", + state: State::SP, + }, + Municipio { + ibge_code: 3517802, + name: "Guaraçaí", + state: State::SP, + }, + Municipio { + ibge_code: 3518503, + name: "Guareí", + state: State::SP, + }, + Municipio { + ibge_code: 3518602, + name: "Guariba", + state: State::SP, + }, + Municipio { + ibge_code: 3518701, + name: "Guarujá", + state: State::SP, + }, + Municipio { + ibge_code: 3518800, + name: "Guarulhos", + state: State::SP, + }, + Municipio { + ibge_code: 3517703, + name: "Guará", + state: State::SP, + }, + Municipio { + ibge_code: 3518859, + name: "Guatapará", + state: State::SP, + }, + Municipio { + ibge_code: 3517406, + name: "Guaíra", + state: State::SP, + }, + Municipio { + ibge_code: 3518909, + name: "Guzolândia", + state: State::SP, + }, + Municipio { + ibge_code: 3516606, + name: "Gália", + state: State::SP, + }, + Municipio { + ibge_code: 3519006, + name: "Herculândia", + state: State::SP, + }, + Municipio { + ibge_code: 3519055, + name: "Holambra", + state: State::SP, + }, + Municipio { + ibge_code: 3519071, + name: "Hortolândia", + state: State::SP, + }, + Municipio { + ibge_code: 3519105, + name: "Iacanga", + state: State::SP, + }, + Municipio { + ibge_code: 3519204, + name: "Iacri", + state: State::SP, + }, + Municipio { + ibge_code: 3519253, + name: "Iaras", + state: State::SP, + }, + Municipio { + ibge_code: 3519303, + name: "Ibaté", + state: State::SP, + }, + Municipio { + ibge_code: 3519501, + name: "Ibirarema", + state: State::SP, + }, + Municipio { + ibge_code: 3519402, + name: "Ibirá", + state: State::SP, + }, + Municipio { + ibge_code: 3519600, + name: "Ibitinga", + state: State::SP, + }, + Municipio { + ibge_code: 3519709, + name: "Ibiúna", + state: State::SP, + }, + Municipio { + ibge_code: 3519808, + name: "Icém", + state: State::SP, + }, + Municipio { + ibge_code: 3519907, + name: "Iepê", + state: State::SP, + }, + Municipio { + ibge_code: 3520103, + name: "Igarapava", + state: State::SP, + }, + Municipio { + ibge_code: 3520202, + name: "Igaratá", + state: State::SP, + }, + Municipio { + ibge_code: 3520004, + name: "Igaraçu do Tietê", + state: State::SP, + }, + Municipio { + ibge_code: 3520301, + name: "Iguape", + state: State::SP, + }, + Municipio { + ibge_code: 3520426, + name: "Ilha Comprida", + state: State::SP, + }, + Municipio { + ibge_code: 3520442, + name: "Ilha Solteira", + state: State::SP, + }, + Municipio { + ibge_code: 3520400, + name: "Ilhabela", + state: State::SP, + }, + Municipio { + ibge_code: 3520509, + name: "Indaiatuba", + state: State::SP, + }, + Municipio { + ibge_code: 3520608, + name: "Indiana", + state: State::SP, + }, + Municipio { + ibge_code: 3520707, + name: "Indiaporã", + state: State::SP, + }, + Municipio { + ibge_code: 3520806, + name: "Inúbia Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3520905, + name: "Ipaussu", + state: State::SP, + }, + Municipio { + ibge_code: 3521002, + name: "Iperó", + state: State::SP, + }, + Municipio { + ibge_code: 3521101, + name: "Ipeúna", + state: State::SP, + }, + Municipio { + ibge_code: 3521150, + name: "Ipiguá", + state: State::SP, + }, + Municipio { + ibge_code: 3521200, + name: "Iporanga", + state: State::SP, + }, + Municipio { + ibge_code: 3521309, + name: "Ipuã", + state: State::SP, + }, + Municipio { + ibge_code: 3521408, + name: "Iracemápolis", + state: State::SP, + }, + Municipio { + ibge_code: 3521606, + name: "Irapuru", + state: State::SP, + }, + Municipio { + ibge_code: 3521507, + name: "Irapuã", + state: State::SP, + }, + Municipio { + ibge_code: 3521705, + name: "Itaberá", + state: State::SP, + }, + Municipio { + ibge_code: 3521903, + name: "Itajobi", + state: State::SP, + }, + Municipio { + ibge_code: 3522000, + name: "Itaju", + state: State::SP, + }, + Municipio { + ibge_code: 3522109, + name: "Itanhaém", + state: State::SP, + }, + Municipio { + ibge_code: 3522158, + name: "Itaoca", + state: State::SP, + }, + Municipio { + ibge_code: 3522208, + name: "Itapecerica da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3522307, + name: "Itapetininga", + state: State::SP, + }, + Municipio { + ibge_code: 3522406, + name: "Itapeva", + state: State::SP, + }, + Municipio { + ibge_code: 3522505, + name: "Itapevi", + state: State::SP, + }, + Municipio { + ibge_code: 3522604, + name: "Itapira", + state: State::SP, + }, + Municipio { + ibge_code: 3522653, + name: "Itapirapuã Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3522802, + name: "Itaporanga", + state: State::SP, + }, + Municipio { + ibge_code: 3523008, + name: "Itapura", + state: State::SP, + }, + Municipio { + ibge_code: 3522901, + name: "Itapuí", + state: State::SP, + }, + Municipio { + ibge_code: 3523107, + name: "Itaquaquecetuba", + state: State::SP, + }, + Municipio { + ibge_code: 3523206, + name: "Itararé", + state: State::SP, + }, + Municipio { + ibge_code: 3523305, + name: "Itariri", + state: State::SP, + }, + Municipio { + ibge_code: 3523404, + name: "Itatiba", + state: State::SP, + }, + Municipio { + ibge_code: 3523503, + name: "Itatinga", + state: State::SP, + }, + Municipio { + ibge_code: 3521804, + name: "Itaí", + state: State::SP, + }, + Municipio { + ibge_code: 3523602, + name: "Itirapina", + state: State::SP, + }, + Municipio { + ibge_code: 3523701, + name: "Itirapuã", + state: State::SP, + }, + Municipio { + ibge_code: 3523800, + name: "Itobi", + state: State::SP, + }, + Municipio { + ibge_code: 3523909, + name: "Itu", + state: State::SP, + }, + Municipio { + ibge_code: 3524006, + name: "Itupeva", + state: State::SP, + }, + Municipio { + ibge_code: 3524105, + name: "Ituverava", + state: State::SP, + }, + Municipio { + ibge_code: 3522703, + name: "Itápolis", + state: State::SP, + }, + Municipio { + ibge_code: 3524204, + name: "Jaborandi", + state: State::SP, + }, + Municipio { + ibge_code: 3524303, + name: "Jaboticabal", + state: State::SP, + }, + Municipio { + ibge_code: 3524402, + name: "Jacareí", + state: State::SP, + }, + Municipio { + ibge_code: 3524501, + name: "Jaci", + state: State::SP, + }, + Municipio { + ibge_code: 3524600, + name: "Jacupiranga", + state: State::SP, + }, + Municipio { + ibge_code: 3524709, + name: "Jaguariúna", + state: State::SP, + }, + Municipio { + ibge_code: 3524808, + name: "Jales", + state: State::SP, + }, + Municipio { + ibge_code: 3524907, + name: "Jambeiro", + state: State::SP, + }, + Municipio { + ibge_code: 3525003, + name: "Jandira", + state: State::SP, + }, + Municipio { + ibge_code: 3525102, + name: "Jardinópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3525201, + name: "Jarinu", + state: State::SP, + }, + Municipio { + ibge_code: 3525300, + name: "Jaú", + state: State::SP, + }, + Municipio { + ibge_code: 3525409, + name: "Jeriquara", + state: State::SP, + }, + Municipio { + ibge_code: 3525508, + name: "Joanópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3525706, + name: "José Bonifácio", + state: State::SP, + }, + Municipio { + ibge_code: 3525607, + name: "João Ramalho", + state: State::SP, + }, + Municipio { + ibge_code: 3525854, + name: "Jumirim", + state: State::SP, + }, + Municipio { + ibge_code: 3525904, + name: "Jundiaí", + state: State::SP, + }, + Municipio { + ibge_code: 3526001, + name: "Junqueirópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3526209, + name: "Juquitiba", + state: State::SP, + }, + Municipio { + ibge_code: 3526100, + name: "Juquiá", + state: State::SP, + }, + Municipio { + ibge_code: 3525805, + name: "Júlio Mesquita", + state: State::SP, + }, + Municipio { + ibge_code: 3526308, + name: "Lagoinha", + state: State::SP, + }, + Municipio { + ibge_code: 3526407, + name: "Laranjal Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3526605, + name: "Lavrinhas", + state: State::SP, + }, + Municipio { + ibge_code: 3526506, + name: "Lavínia", + state: State::SP, + }, + Municipio { + ibge_code: 3526704, + name: "Leme", + state: State::SP, + }, + Municipio { + ibge_code: 3526803, + name: "Lençóis Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3526902, + name: "Limeira", + state: State::SP, + }, + Municipio { + ibge_code: 3527009, + name: "Lindóia", + state: State::SP, + }, + Municipio { + ibge_code: 3527108, + name: "Lins", + state: State::SP, + }, + Municipio { + ibge_code: 3527207, + name: "Lorena", + state: State::SP, + }, + Municipio { + ibge_code: 3527256, + name: "Lourdes", + state: State::SP, + }, + Municipio { + ibge_code: 3527306, + name: "Louveira", + state: State::SP, + }, + Municipio { + ibge_code: 3527504, + name: "Lucianópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3527405, + name: "Lucélia", + state: State::SP, + }, + Municipio { + ibge_code: 3527702, + name: "Luiziânia", + state: State::SP, + }, + Municipio { + ibge_code: 3527801, + name: "Lupércio", + state: State::SP, + }, + Municipio { + ibge_code: 3527900, + name: "Lutécia", + state: State::SP, + }, + Municipio { + ibge_code: 3527603, + name: "Luís Antônio", + state: State::SP, + }, + Municipio { + ibge_code: 3528007, + name: "Macatuba", + state: State::SP, + }, + Municipio { + ibge_code: 3528106, + name: "Macaubal", + state: State::SP, + }, + Municipio { + ibge_code: 3528205, + name: "Macedônia", + state: State::SP, + }, + Municipio { + ibge_code: 3528304, + name: "Magda", + state: State::SP, + }, + Municipio { + ibge_code: 3528403, + name: "Mairinque", + state: State::SP, + }, + Municipio { + ibge_code: 3528502, + name: "Mairiporã", + state: State::SP, + }, + Municipio { + ibge_code: 3528601, + name: "Manduri", + state: State::SP, + }, + Municipio { + ibge_code: 3528700, + name: "Marabá Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3528809, + name: "Maracaí", + state: State::SP, + }, + Municipio { + ibge_code: 3528858, + name: "Marapoama", + state: State::SP, + }, + Municipio { + ibge_code: 3529104, + name: "Marinópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3528908, + name: "Mariápolis", + state: State::SP, + }, + Municipio { + ibge_code: 3529203, + name: "Martinópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3529005, + name: "Marília", + state: State::SP, + }, + Municipio { + ibge_code: 3529302, + name: "Matão", + state: State::SP, + }, + Municipio { + ibge_code: 3529401, + name: "Mauá", + state: State::SP, + }, + Municipio { + ibge_code: 3529500, + name: "Mendonça", + state: State::SP, + }, + Municipio { + ibge_code: 3529609, + name: "Meridiano", + state: State::SP, + }, + Municipio { + ibge_code: 3529658, + name: "Mesópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3529708, + name: "Miguelópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3529807, + name: "Mineiros do Tietê", + state: State::SP, + }, + Municipio { + ibge_code: 3530003, + name: "Mira Estrela", + state: State::SP, + }, + Municipio { + ibge_code: 3529906, + name: "Miracatu", + state: State::SP, + }, + Municipio { + ibge_code: 3530102, + name: "Mirandópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3530201, + name: "Mirante do Paranapanema", + state: State::SP, + }, + Municipio { + ibge_code: 3530300, + name: "Mirassol", + state: State::SP, + }, + Municipio { + ibge_code: 3530409, + name: "Mirassolândia", + state: State::SP, + }, + Municipio { + ibge_code: 3530508, + name: "Mococa", + state: State::SP, + }, + Municipio { + ibge_code: 3530706, + name: "Mogi Guaçu", + state: State::SP, + }, + Municipio { + ibge_code: 3530805, + name: "Mogi Mirim", + state: State::SP, + }, + Municipio { + ibge_code: 3530607, + name: "Mogi das Cruzes", + state: State::SP, + }, + Municipio { + ibge_code: 3530904, + name: "Mombuca", + state: State::SP, + }, + Municipio { + ibge_code: 3531100, + name: "Mongaguá", + state: State::SP, + }, + Municipio { + ibge_code: 3531209, + name: "Monte Alegre do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3531308, + name: "Monte Alto", + state: State::SP, + }, + Municipio { + ibge_code: 3531407, + name: "Monte Aprazível", + state: State::SP, + }, + Municipio { + ibge_code: 3531506, + name: "Monte Azul Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3531605, + name: "Monte Castelo", + state: State::SP, + }, + Municipio { + ibge_code: 3531803, + name: "Monte Mor", + state: State::SP, + }, + Municipio { + ibge_code: 3531704, + name: "Monteiro Lobato", + state: State::SP, + }, + Municipio { + ibge_code: 3531001, + name: "Monções", + state: State::SP, + }, + Municipio { + ibge_code: 3531902, + name: "Morro Agudo", + state: State::SP, + }, + Municipio { + ibge_code: 3532009, + name: "Morungaba", + state: State::SP, + }, + Municipio { + ibge_code: 3532058, + name: "Motuca", + state: State::SP, + }, + Municipio { + ibge_code: 3532108, + name: "Murutinga do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3532157, + name: "Nantes", + state: State::SP, + }, + Municipio { + ibge_code: 3532207, + name: "Narandiba", + state: State::SP, + }, + Municipio { + ibge_code: 3532306, + name: "Natividade da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3532405, + name: "Nazaré Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3532504, + name: "Neves Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3532603, + name: "Nhandeara", + state: State::SP, + }, + Municipio { + ibge_code: 3532702, + name: "Nipoã", + state: State::SP, + }, + Municipio { + ibge_code: 3532801, + name: "Nova Aliança", + state: State::SP, + }, + Municipio { + ibge_code: 3532827, + name: "Nova Campina", + state: State::SP, + }, + Municipio { + ibge_code: 3532843, + name: "Nova Canaã Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3532868, + name: "Nova Castilho", + state: State::SP, + }, + Municipio { + ibge_code: 3532900, + name: "Nova Europa", + state: State::SP, + }, + Municipio { + ibge_code: 3533007, + name: "Nova Granada", + state: State::SP, + }, + Municipio { + ibge_code: 3533106, + name: "Nova Guataporanga", + state: State::SP, + }, + Municipio { + ibge_code: 3533205, + name: "Nova Independência", + state: State::SP, + }, + Municipio { + ibge_code: 3533304, + name: "Nova Luzitânia", + state: State::SP, + }, + Municipio { + ibge_code: 3533403, + name: "Nova Odessa", + state: State::SP, + }, + Municipio { + ibge_code: 3533254, + name: "Novais", + state: State::SP, + }, + Municipio { + ibge_code: 3533502, + name: "Novo Horizonte", + state: State::SP, + }, + Municipio { + ibge_code: 3533601, + name: "Nuporanga", + state: State::SP, + }, + Municipio { + ibge_code: 3533700, + name: "Ocauçu", + state: State::SP, + }, + Municipio { + ibge_code: 3533908, + name: "Olímpia", + state: State::SP, + }, + Municipio { + ibge_code: 3534005, + name: "Onda Verde", + state: State::SP, + }, + Municipio { + ibge_code: 3534104, + name: "Oriente", + state: State::SP, + }, + Municipio { + ibge_code: 3534203, + name: "Orindiúva", + state: State::SP, + }, + Municipio { + ibge_code: 3534302, + name: "Orlândia", + state: State::SP, + }, + Municipio { + ibge_code: 3534401, + name: "Osasco", + state: State::SP, + }, + Municipio { + ibge_code: 3534500, + name: "Oscar Bressane", + state: State::SP, + }, + Municipio { + ibge_code: 3534609, + name: "Osvaldo Cruz", + state: State::SP, + }, + Municipio { + ibge_code: 3534708, + name: "Ourinhos", + state: State::SP, + }, + Municipio { + ibge_code: 3534807, + name: "Ouro Verde", + state: State::SP, + }, + Municipio { + ibge_code: 3534757, + name: "Ouroeste", + state: State::SP, + }, + Municipio { + ibge_code: 3534906, + name: "Pacaembu", + state: State::SP, + }, + Municipio { + ibge_code: 3535002, + name: "Palestina", + state: State::SP, + }, + Municipio { + ibge_code: 3535101, + name: "Palmares Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3535200, + name: "Palmeira d'Oeste", + state: State::SP, + }, + Municipio { + ibge_code: 3535309, + name: "Palmital", + state: State::SP, + }, + Municipio { + ibge_code: 3535408, + name: "Panorama", + state: State::SP, + }, + Municipio { + ibge_code: 3535507, + name: "Paraguaçu Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3535606, + name: "Paraibuna", + state: State::SP, + }, + Municipio { + ibge_code: 3535804, + name: "Paranapanema", + state: State::SP, + }, + Municipio { + ibge_code: 3535903, + name: "Paranapuã", + state: State::SP, + }, + Municipio { + ibge_code: 3536000, + name: "Parapuã", + state: State::SP, + }, + Municipio { + ibge_code: 3535705, + name: "Paraíso", + state: State::SP, + }, + Municipio { + ibge_code: 3536109, + name: "Pardinho", + state: State::SP, + }, + Municipio { + ibge_code: 3536208, + name: "Pariquera-Açu", + state: State::SP, + }, + Municipio { + ibge_code: 3536257, + name: "Parisi", + state: State::SP, + }, + Municipio { + ibge_code: 3536307, + name: "Patrocínio Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3536406, + name: "Paulicéia", + state: State::SP, + }, + Municipio { + ibge_code: 3536570, + name: "Paulistânia", + state: State::SP, + }, + Municipio { + ibge_code: 3536604, + name: "Paulo de Faria", + state: State::SP, + }, + Municipio { + ibge_code: 3536505, + name: "Paulínia", + state: State::SP, + }, + Municipio { + ibge_code: 3536703, + name: "Pederneiras", + state: State::SP, + }, + Municipio { + ibge_code: 3536802, + name: "Pedra Bela", + state: State::SP, + }, + Municipio { + ibge_code: 3536901, + name: "Pedranópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3537008, + name: "Pedregulho", + state: State::SP, + }, + Municipio { + ibge_code: 3537107, + name: "Pedreira", + state: State::SP, + }, + Municipio { + ibge_code: 3537156, + name: "Pedrinhas Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3537206, + name: "Pedro de Toledo", + state: State::SP, + }, + Municipio { + ibge_code: 3537305, + name: "Penápolis", + state: State::SP, + }, + Municipio { + ibge_code: 3537404, + name: "Pereira Barreto", + state: State::SP, + }, + Municipio { + ibge_code: 3537503, + name: "Pereiras", + state: State::SP, + }, + Municipio { + ibge_code: 3537602, + name: "Peruíbe", + state: State::SP, + }, + Municipio { + ibge_code: 3537701, + name: "Piacatu", + state: State::SP, + }, + Municipio { + ibge_code: 3537800, + name: "Piedade", + state: State::SP, + }, + Municipio { + ibge_code: 3537909, + name: "Pilar do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3538006, + name: "Pindamonhangaba", + state: State::SP, + }, + Municipio { + ibge_code: 3538105, + name: "Pindorama", + state: State::SP, + }, + Municipio { + ibge_code: 3538204, + name: "Pinhalzinho", + state: State::SP, + }, + Municipio { + ibge_code: 3538303, + name: "Piquerobi", + state: State::SP, + }, + Municipio { + ibge_code: 3538501, + name: "Piquete", + state: State::SP, + }, + Municipio { + ibge_code: 3538600, + name: "Piracaia", + state: State::SP, + }, + Municipio { + ibge_code: 3538709, + name: "Piracicaba", + state: State::SP, + }, + Municipio { + ibge_code: 3538808, + name: "Piraju", + state: State::SP, + }, + Municipio { + ibge_code: 3538907, + name: "Pirajuí", + state: State::SP, + }, + Municipio { + ibge_code: 3539004, + name: "Pirangi", + state: State::SP, + }, + Municipio { + ibge_code: 3539103, + name: "Pirapora do Bom Jesus", + state: State::SP, + }, + Municipio { + ibge_code: 3539202, + name: "Pirapozinho", + state: State::SP, + }, + Municipio { + ibge_code: 3539301, + name: "Pirassununga", + state: State::SP, + }, + Municipio { + ibge_code: 3539400, + name: "Piratininga", + state: State::SP, + }, + Municipio { + ibge_code: 3539509, + name: "Pitangueiras", + state: State::SP, + }, + Municipio { + ibge_code: 3539608, + name: "Planalto", + state: State::SP, + }, + Municipio { + ibge_code: 3539707, + name: "Platina", + state: State::SP, + }, + Municipio { + ibge_code: 3539905, + name: "Poloni", + state: State::SP, + }, + Municipio { + ibge_code: 3540002, + name: "Pompéia", + state: State::SP, + }, + Municipio { + ibge_code: 3540101, + name: "Pongaí", + state: State::SP, + }, + Municipio { + ibge_code: 3540200, + name: "Pontal", + state: State::SP, + }, + Municipio { + ibge_code: 3540259, + name: "Pontalinda", + state: State::SP, + }, + Municipio { + ibge_code: 3540309, + name: "Pontes Gestal", + state: State::SP, + }, + Municipio { + ibge_code: 3540408, + name: "Populina", + state: State::SP, + }, + Municipio { + ibge_code: 3540507, + name: "Porangaba", + state: State::SP, + }, + Municipio { + ibge_code: 3540606, + name: "Porto Feliz", + state: State::SP, + }, + Municipio { + ibge_code: 3540705, + name: "Porto Ferreira", + state: State::SP, + }, + Municipio { + ibge_code: 3540754, + name: "Potim", + state: State::SP, + }, + Municipio { + ibge_code: 3540804, + name: "Potirendaba", + state: State::SP, + }, + Municipio { + ibge_code: 3539806, + name: "Poá", + state: State::SP, + }, + Municipio { + ibge_code: 3540853, + name: "Pracinha", + state: State::SP, + }, + Municipio { + ibge_code: 3540903, + name: "Pradópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3541000, + name: "Praia Grande", + state: State::SP, + }, + Municipio { + ibge_code: 3541059, + name: "Pratânia", + state: State::SP, + }, + Municipio { + ibge_code: 3541109, + name: "Presidente Alves", + state: State::SP, + }, + Municipio { + ibge_code: 3541208, + name: "Presidente Bernardes", + state: State::SP, + }, + Municipio { + ibge_code: 3541307, + name: "Presidente Epitácio", + state: State::SP, + }, + Municipio { + ibge_code: 3541406, + name: "Presidente Prudente", + state: State::SP, + }, + Municipio { + ibge_code: 3541505, + name: "Presidente Venceslau", + state: State::SP, + }, + Municipio { + ibge_code: 3541604, + name: "Promissão", + state: State::SP, + }, + Municipio { + ibge_code: 3541653, + name: "Quadra", + state: State::SP, + }, + Municipio { + ibge_code: 3541703, + name: "Quatá", + state: State::SP, + }, + Municipio { + ibge_code: 3541802, + name: "Queiroz", + state: State::SP, + }, + Municipio { + ibge_code: 3541901, + name: "Queluz", + state: State::SP, + }, + Municipio { + ibge_code: 3542008, + name: "Quintana", + state: State::SP, + }, + Municipio { + ibge_code: 3542107, + name: "Rafard", + state: State::SP, + }, + Municipio { + ibge_code: 3542206, + name: "Rancharia", + state: State::SP, + }, + Municipio { + ibge_code: 3542305, + name: "Redenção da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3542404, + name: "Regente Feijó", + state: State::SP, + }, + Municipio { + ibge_code: 3542503, + name: "Reginópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3542602, + name: "Registro", + state: State::SP, + }, + Municipio { + ibge_code: 3542701, + name: "Restinga", + state: State::SP, + }, + Municipio { + ibge_code: 3542800, + name: "Ribeira", + state: State::SP, + }, + Municipio { + ibge_code: 3542909, + name: "Ribeirão Bonito", + state: State::SP, + }, + Municipio { + ibge_code: 3543006, + name: "Ribeirão Branco", + state: State::SP, + }, + Municipio { + ibge_code: 3543105, + name: "Ribeirão Corrente", + state: State::SP, + }, + Municipio { + ibge_code: 3543253, + name: "Ribeirão Grande", + state: State::SP, + }, + Municipio { + ibge_code: 3543303, + name: "Ribeirão Pires", + state: State::SP, + }, + Municipio { + ibge_code: 3543402, + name: "Ribeirão Preto", + state: State::SP, + }, + Municipio { + ibge_code: 3543204, + name: "Ribeirão do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3543238, + name: "Ribeirão dos Índios", + state: State::SP, + }, + Municipio { + ibge_code: 3543600, + name: "Rifaina", + state: State::SP, + }, + Municipio { + ibge_code: 3543709, + name: "Rincão", + state: State::SP, + }, + Municipio { + ibge_code: 3543808, + name: "Rinópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3543907, + name: "Rio Claro", + state: State::SP, + }, + Municipio { + ibge_code: 3544103, + name: "Rio Grande da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3544004, + name: "Rio das Pedras", + state: State::SP, + }, + Municipio { + ibge_code: 3544202, + name: "Riolândia", + state: State::SP, + }, + Municipio { + ibge_code: 3543501, + name: "Riversul", + state: State::SP, + }, + Municipio { + ibge_code: 3544251, + name: "Rosana", + state: State::SP, + }, + Municipio { + ibge_code: 3544301, + name: "Roseira", + state: State::SP, + }, + Municipio { + ibge_code: 3544509, + name: "Rubinéia", + state: State::SP, + }, + Municipio { + ibge_code: 3544400, + name: "Rubiácea", + state: State::SP, + }, + Municipio { + ibge_code: 3544608, + name: "Sabino", + state: State::SP, + }, + Municipio { + ibge_code: 3544707, + name: "Sagres", + state: State::SP, + }, + Municipio { + ibge_code: 3544806, + name: "Sales", + state: State::SP, + }, + Municipio { + ibge_code: 3544905, + name: "Sales Oliveira", + state: State::SP, + }, + Municipio { + ibge_code: 3545001, + name: "Salesópolis", + state: State::SP, + }, + Municipio { + ibge_code: 3545100, + name: "Salmourão", + state: State::SP, + }, + Municipio { + ibge_code: 3545159, + name: "Saltinho", + state: State::SP, + }, + Municipio { + ibge_code: 3545209, + name: "Salto", + state: State::SP, + }, + Municipio { + ibge_code: 3545407, + name: "Salto Grande", + state: State::SP, + }, + Municipio { + ibge_code: 3545308, + name: "Salto de Pirapora", + state: State::SP, + }, + Municipio { + ibge_code: 3545506, + name: "Sandovalina", + state: State::SP, + }, + Municipio { + ibge_code: 3545605, + name: "Santa Adélia", + state: State::SP, + }, + Municipio { + ibge_code: 3545704, + name: "Santa Albertina", + state: State::SP, + }, + Municipio { + ibge_code: 3546009, + name: "Santa Branca", + state: State::SP, + }, + Municipio { + ibge_code: 3545803, + name: "Santa Bárbara d'Oeste", + state: State::SP, + }, + Municipio { + ibge_code: 3546108, + name: "Santa Clara d'Oeste", + state: State::SP, + }, + Municipio { + ibge_code: 3546207, + name: "Santa Cruz da Conceição", + state: State::SP, + }, + Municipio { + ibge_code: 3546256, + name: "Santa Cruz da Esperança", + state: State::SP, + }, + Municipio { + ibge_code: 3546306, + name: "Santa Cruz das Palmeiras", + state: State::SP, + }, + Municipio { + ibge_code: 3546405, + name: "Santa Cruz do Rio Pardo", + state: State::SP, + }, + Municipio { + ibge_code: 3546504, + name: "Santa Ernestina", + state: State::SP, + }, + Municipio { + ibge_code: 3546603, + name: "Santa Fé do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3546702, + name: "Santa Gertrudes", + state: State::SP, + }, + Municipio { + ibge_code: 3546801, + name: "Santa Isabel", + state: State::SP, + }, + Municipio { + ibge_code: 3546900, + name: "Santa Lúcia", + state: State::SP, + }, + Municipio { + ibge_code: 3547007, + name: "Santa Maria da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3547106, + name: "Santa Mercedes", + state: State::SP, + }, + Municipio { + ibge_code: 3547403, + name: "Santa Rita d'Oeste", + state: State::SP, + }, + Municipio { + ibge_code: 3547502, + name: "Santa Rita do Passa Quatro", + state: State::SP, + }, + Municipio { + ibge_code: 3547601, + name: "Santa Rosa de Viterbo", + state: State::SP, + }, + Municipio { + ibge_code: 3547650, + name: "Santa Salete", + state: State::SP, + }, + Municipio { + ibge_code: 3547205, + name: "Santana da Ponte Pensa", + state: State::SP, + }, + Municipio { + ibge_code: 3547304, + name: "Santana de Parnaíba", + state: State::SP, + }, + Municipio { + ibge_code: 3547700, + name: "Santo Anastácio", + state: State::SP, + }, + Municipio { + ibge_code: 3547809, + name: "Santo André", + state: State::SP, + }, + Municipio { + ibge_code: 3547908, + name: "Santo Antônio da Alegria", + state: State::SP, + }, + Municipio { + ibge_code: 3548005, + name: "Santo Antônio de Posse", + state: State::SP, + }, + Municipio { + ibge_code: 3548054, + name: "Santo Antônio do Aracanguá", + state: State::SP, + }, + Municipio { + ibge_code: 3548104, + name: "Santo Antônio do Jardim", + state: State::SP, + }, + Municipio { + ibge_code: 3548203, + name: "Santo Antônio do Pinhal", + state: State::SP, + }, + Municipio { + ibge_code: 3548302, + name: "Santo Expedito", + state: State::SP, + }, + Municipio { + ibge_code: 3548500, + name: "Santos", + state: State::SP, + }, + Municipio { + ibge_code: 3548401, + name: "Santópolis do Aguapeí", + state: State::SP, + }, + Municipio { + ibge_code: 3551108, + name: "Sarapuí", + state: State::SP, + }, + Municipio { + ibge_code: 3551207, + name: "Sarutaiá", + state: State::SP, + }, + Municipio { + ibge_code: 3551306, + name: "Sebastianópolis do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3551405, + name: "Serra Azul", + state: State::SP, + }, + Municipio { + ibge_code: 3551603, + name: "Serra Negra", + state: State::SP, + }, + Municipio { + ibge_code: 3551504, + name: "Serrana", + state: State::SP, + }, + Municipio { + ibge_code: 3551702, + name: "Sertãozinho", + state: State::SP, + }, + Municipio { + ibge_code: 3551801, + name: "Sete Barras", + state: State::SP, + }, + Municipio { + ibge_code: 3551900, + name: "Severínia", + state: State::SP, + }, + Municipio { + ibge_code: 3552007, + name: "Silveiras", + state: State::SP, + }, + Municipio { + ibge_code: 3552106, + name: "Socorro", + state: State::SP, + }, + Municipio { + ibge_code: 3552205, + name: "Sorocaba", + state: State::SP, + }, + Municipio { + ibge_code: 3552304, + name: "Sud Mennucci", + state: State::SP, + }, + Municipio { + ibge_code: 3552403, + name: "Sumaré", + state: State::SP, + }, + Municipio { + ibge_code: 3552502, + name: "Suzano", + state: State::SP, + }, + Municipio { + ibge_code: 3552551, + name: "Suzanápolis", + state: State::SP, + }, + Municipio { + ibge_code: 3548609, + name: "São Bento do Sapucaí", + state: State::SP, + }, + Municipio { + ibge_code: 3548708, + name: "São Bernardo do Campo", + state: State::SP, + }, + Municipio { + ibge_code: 3548807, + name: "São Caetano do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3548906, + name: "São Carlos", + state: State::SP, + }, + Municipio { + ibge_code: 3549003, + name: "São Francisco", + state: State::SP, + }, + Municipio { + ibge_code: 3549409, + name: "São Joaquim da Barra", + state: State::SP, + }, + Municipio { + ibge_code: 3549508, + name: "São José da Bela Vista", + state: State::SP, + }, + Municipio { + ibge_code: 3549607, + name: "São José do Barreiro", + state: State::SP, + }, + Municipio { + ibge_code: 3549706, + name: "São José do Rio Pardo", + state: State::SP, + }, + Municipio { + ibge_code: 3549805, + name: "São José do Rio Preto", + state: State::SP, + }, + Municipio { + ibge_code: 3549904, + name: "São José dos Campos", + state: State::SP, + }, + Municipio { + ibge_code: 3549102, + name: "São João da Boa Vista", + state: State::SP, + }, + Municipio { + ibge_code: 3549201, + name: "São João das Duas Pontes", + state: State::SP, + }, + Municipio { + ibge_code: 3549250, + name: "São João de Iracema", + state: State::SP, + }, + Municipio { + ibge_code: 3549300, + name: "São João do Pau d'Alho", + state: State::SP, + }, + Municipio { + ibge_code: 3549953, + name: "São Lourenço da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3550001, + name: "São Luiz do Paraitinga", + state: State::SP, + }, + Municipio { + ibge_code: 3550100, + name: "São Manuel", + state: State::SP, + }, + Municipio { + ibge_code: 3550209, + name: "São Miguel Arcanjo", + state: State::SP, + }, + Municipio { + ibge_code: 3550308, + name: "São Paulo", + state: State::SP, + }, + Municipio { + ibge_code: 3550407, + name: "São Pedro", + state: State::SP, + }, + Municipio { + ibge_code: 3550506, + name: "São Pedro do Turvo", + state: State::SP, + }, + Municipio { + ibge_code: 3550605, + name: "São Roque", + state: State::SP, + }, + Municipio { + ibge_code: 3550704, + name: "São Sebastião", + state: State::SP, + }, + Municipio { + ibge_code: 3550803, + name: "São Sebastião da Grama", + state: State::SP, + }, + Municipio { + ibge_code: 3550902, + name: "São Simão", + state: State::SP, + }, + Municipio { + ibge_code: 3551009, + name: "São Vicente", + state: State::SP, + }, + Municipio { + ibge_code: 3552601, + name: "Tabapuã", + state: State::SP, + }, + Municipio { + ibge_code: 3552700, + name: "Tabatinga", + state: State::SP, + }, + Municipio { + ibge_code: 3552809, + name: "Taboão da Serra", + state: State::SP, + }, + Municipio { + ibge_code: 3552908, + name: "Taciba", + state: State::SP, + }, + Municipio { + ibge_code: 3553005, + name: "Taguaí", + state: State::SP, + }, + Municipio { + ibge_code: 3553104, + name: "Taiaçu", + state: State::SP, + }, + Municipio { + ibge_code: 3553203, + name: "Taiúva", + state: State::SP, + }, + Municipio { + ibge_code: 3553302, + name: "Tambaú", + state: State::SP, + }, + Municipio { + ibge_code: 3553401, + name: "Tanabi", + state: State::SP, + }, + Municipio { + ibge_code: 3553609, + name: "Tapiratiba", + state: State::SP, + }, + Municipio { + ibge_code: 3553500, + name: "Tapiraí", + state: State::SP, + }, + Municipio { + ibge_code: 3553658, + name: "Taquaral", + state: State::SP, + }, + Municipio { + ibge_code: 3553708, + name: "Taquaritinga", + state: State::SP, + }, + Municipio { + ibge_code: 3553807, + name: "Taquarituba", + state: State::SP, + }, + Municipio { + ibge_code: 3553856, + name: "Taquarivaí", + state: State::SP, + }, + Municipio { + ibge_code: 3553906, + name: "Tarabai", + state: State::SP, + }, + Municipio { + ibge_code: 3553955, + name: "Tarumã", + state: State::SP, + }, + Municipio { + ibge_code: 3554003, + name: "Tatuí", + state: State::SP, + }, + Municipio { + ibge_code: 3554102, + name: "Taubaté", + state: State::SP, + }, + Municipio { + ibge_code: 3554201, + name: "Tejupá", + state: State::SP, + }, + Municipio { + ibge_code: 3554300, + name: "Teodoro Sampaio", + state: State::SP, + }, + Municipio { + ibge_code: 3554409, + name: "Terra Roxa", + state: State::SP, + }, + Municipio { + ibge_code: 3554508, + name: "Tietê", + state: State::SP, + }, + Municipio { + ibge_code: 3554607, + name: "Timburi", + state: State::SP, + }, + Municipio { + ibge_code: 3554656, + name: "Torre de Pedra", + state: State::SP, + }, + Municipio { + ibge_code: 3554706, + name: "Torrinha", + state: State::SP, + }, + Municipio { + ibge_code: 3554755, + name: "Trabiju", + state: State::SP, + }, + Municipio { + ibge_code: 3554805, + name: "Tremembé", + state: State::SP, + }, + Municipio { + ibge_code: 3554904, + name: "Três Fronteiras", + state: State::SP, + }, + Municipio { + ibge_code: 3554953, + name: "Tuiuti", + state: State::SP, + }, + Municipio { + ibge_code: 3555109, + name: "Tupi Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3555000, + name: "Tupã", + state: State::SP, + }, + Municipio { + ibge_code: 3555208, + name: "Turiúba", + state: State::SP, + }, + Municipio { + ibge_code: 3555307, + name: "Turmalina", + state: State::SP, + }, + Municipio { + ibge_code: 3555356, + name: "Ubarana", + state: State::SP, + }, + Municipio { + ibge_code: 3555406, + name: "Ubatuba", + state: State::SP, + }, + Municipio { + ibge_code: 3555505, + name: "Ubirajara", + state: State::SP, + }, + Municipio { + ibge_code: 3555604, + name: "Uchoa", + state: State::SP, + }, + Municipio { + ibge_code: 3555703, + name: "União Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3555901, + name: "Uru", + state: State::SP, + }, + Municipio { + ibge_code: 3556008, + name: "Urupês", + state: State::SP, + }, + Municipio { + ibge_code: 3555802, + name: "Urânia", + state: State::SP, + }, + Municipio { + ibge_code: 3556107, + name: "Valentim Gentil", + state: State::SP, + }, + Municipio { + ibge_code: 3556206, + name: "Valinhos", + state: State::SP, + }, + Municipio { + ibge_code: 3556305, + name: "Valparaíso", + state: State::SP, + }, + Municipio { + ibge_code: 3556354, + name: "Vargem", + state: State::SP, + }, + Municipio { + ibge_code: 3556453, + name: "Vargem Grande Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3556404, + name: "Vargem Grande do Sul", + state: State::SP, + }, + Municipio { + ibge_code: 3556602, + name: "Vera Cruz", + state: State::SP, + }, + Municipio { + ibge_code: 3556701, + name: "Vinhedo", + state: State::SP, + }, + Municipio { + ibge_code: 3556800, + name: "Viradouro", + state: State::SP, + }, + Municipio { + ibge_code: 3556909, + name: "Vista Alegre do Alto", + state: State::SP, + }, + Municipio { + ibge_code: 3556958, + name: "Vitória Brasil", + state: State::SP, + }, + Municipio { + ibge_code: 3557006, + name: "Votorantim", + state: State::SP, + }, + Municipio { + ibge_code: 3557105, + name: "Votuporanga", + state: State::SP, + }, + Municipio { + ibge_code: 3556503, + name: "Várzea Paulista", + state: State::SP, + }, + Municipio { + ibge_code: 3557154, + name: "Zacarias", + state: State::SP, + }, + Municipio { + ibge_code: 3500402, + name: "Águas da Prata", + state: State::SP, + }, + Municipio { + ibge_code: 3500501, + name: "Águas de Lindóia", + state: State::SP, + }, + Municipio { + ibge_code: 3500550, + name: "Águas de Santa Bárbara", + state: State::SP, + }, + Municipio { + ibge_code: 3500600, + name: "Águas de São Pedro", + state: State::SP, + }, + Municipio { + ibge_code: 3501202, + name: "Álvares Florence", + state: State::SP, + }, + Municipio { + ibge_code: 3501301, + name: "Álvares Machado", + state: State::SP, + }, + Municipio { + ibge_code: 3501400, + name: "Álvaro de Carvalho", + state: State::SP, + }, + Municipio { + ibge_code: 3533809, + name: "Óleo", + state: State::SP, + }, + Municipio { + ibge_code: 1700251, + name: "Abreulândia", + state: State::TO, + }, + Municipio { + ibge_code: 1700301, + name: "Aguiarnópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1700350, + name: "Aliança do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1700400, + name: "Almas", + state: State::TO, + }, + Municipio { + ibge_code: 1700707, + name: "Alvorada", + state: State::TO, + }, + Municipio { + ibge_code: 1701002, + name: "Ananás", + state: State::TO, + }, + Municipio { + ibge_code: 1701051, + name: "Angico", + state: State::TO, + }, + Municipio { + ibge_code: 1701101, + name: "Aparecida do Rio Negro", + state: State::TO, + }, + Municipio { + ibge_code: 1701309, + name: "Aragominas", + state: State::TO, + }, + Municipio { + ibge_code: 1701903, + name: "Araguacema", + state: State::TO, + }, + Municipio { + ibge_code: 1702158, + name: "Araguanã", + state: State::TO, + }, + Municipio { + ibge_code: 1702208, + name: "Araguatins", + state: State::TO, + }, + Municipio { + ibge_code: 1702000, + name: "Araguaçu", + state: State::TO, + }, + Municipio { + ibge_code: 1702109, + name: "Araguaína", + state: State::TO, + }, + Municipio { + ibge_code: 1702307, + name: "Arapoema", + state: State::TO, + }, + Municipio { + ibge_code: 1702406, + name: "Arraias", + state: State::TO, + }, + Municipio { + ibge_code: 1702554, + name: "Augustinópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1702703, + name: "Aurora do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1702901, + name: "Axixá do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1703008, + name: "Babaçulândia", + state: State::TO, + }, + Municipio { + ibge_code: 1703057, + name: "Bandeirantes do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1703073, + name: "Barra do Ouro", + state: State::TO, + }, + Municipio { + ibge_code: 1703107, + name: "Barrolândia", + state: State::TO, + }, + Municipio { + ibge_code: 1703206, + name: "Bernardo Sayão", + state: State::TO, + }, + Municipio { + ibge_code: 1703305, + name: "Bom Jesus do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1703602, + name: "Brasilândia do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1703701, + name: "Brejinho de Nazaré", + state: State::TO, + }, + Municipio { + ibge_code: 1703800, + name: "Buriti do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1703826, + name: "Cachoeirinha", + state: State::TO, + }, + Municipio { + ibge_code: 1703842, + name: "Campos Lindos", + state: State::TO, + }, + Municipio { + ibge_code: 1703867, + name: "Cariri do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1703883, + name: "Carmolândia", + state: State::TO, + }, + Municipio { + ibge_code: 1703891, + name: "Carrasco Bonito", + state: State::TO, + }, + Municipio { + ibge_code: 1703909, + name: "Caseara", + state: State::TO, + }, + Municipio { + ibge_code: 1704105, + name: "Centenário", + state: State::TO, + }, + Municipio { + ibge_code: 1705102, + name: "Chapada da Natividade", + state: State::TO, + }, + Municipio { + ibge_code: 1704600, + name: "Chapada de Areia", + state: State::TO, + }, + Municipio { + ibge_code: 1705508, + name: "Colinas do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1716703, + name: "Colméia", + state: State::TO, + }, + Municipio { + ibge_code: 1705557, + name: "Combinado", + state: State::TO, + }, + Municipio { + ibge_code: 1705607, + name: "Conceição do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1706001, + name: "Couto Magalhães", + state: State::TO, + }, + Municipio { + ibge_code: 1706100, + name: "Cristalândia", + state: State::TO, + }, + Municipio { + ibge_code: 1706258, + name: "Crixás do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1706506, + name: "Darcinópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1707009, + name: "Dianópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1707108, + name: "Divinópolis do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1707207, + name: "Dois Irmãos do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1707306, + name: "Dueré", + state: State::TO, + }, + Municipio { + ibge_code: 1707405, + name: "Esperantina", + state: State::TO, + }, + Municipio { + ibge_code: 1707652, + name: "Figueirópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1707702, + name: "Filadélfia", + state: State::TO, + }, + Municipio { + ibge_code: 1708205, + name: "Formoso do Araguaia", + state: State::TO, + }, + Municipio { + ibge_code: 1707553, + name: "Fátima", + state: State::TO, + }, + Municipio { + ibge_code: 1708304, + name: "Goianorte", + state: State::TO, + }, + Municipio { + ibge_code: 1709005, + name: "Goiatins", + state: State::TO, + }, + Municipio { + ibge_code: 1709302, + name: "Guaraí", + state: State::TO, + }, + Municipio { + ibge_code: 1709500, + name: "Gurupi", + state: State::TO, + }, + Municipio { + ibge_code: 1709807, + name: "Ipueiras", + state: State::TO, + }, + Municipio { + ibge_code: 1710508, + name: "Itacajá", + state: State::TO, + }, + Municipio { + ibge_code: 1710706, + name: "Itaguatins", + state: State::TO, + }, + Municipio { + ibge_code: 1710904, + name: "Itapiratins", + state: State::TO, + }, + Municipio { + ibge_code: 1711100, + name: "Itaporã do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1711506, + name: "Jaú do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1711803, + name: "Juarina", + state: State::TO, + }, + Municipio { + ibge_code: 1711902, + name: "Lagoa da Confusão", + state: State::TO, + }, + Municipio { + ibge_code: 1711951, + name: "Lagoa do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1712009, + name: "Lajeado", + state: State::TO, + }, + Municipio { + ibge_code: 1712157, + name: "Lavandeira", + state: State::TO, + }, + Municipio { + ibge_code: 1712405, + name: "Lizarda", + state: State::TO, + }, + Municipio { + ibge_code: 1712454, + name: "Luzinópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1712504, + name: "Marianópolis do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1712702, + name: "Mateiros", + state: State::TO, + }, + Municipio { + ibge_code: 1712801, + name: "Maurilândia do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1713205, + name: "Miracema do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1713304, + name: "Miranorte", + state: State::TO, + }, + Municipio { + ibge_code: 1713700, + name: "Monte Santo do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1713601, + name: "Monte do Carmo", + state: State::TO, + }, + Municipio { + ibge_code: 1713957, + name: "Muricilândia", + state: State::TO, + }, + Municipio { + ibge_code: 1714203, + name: "Natividade", + state: State::TO, + }, + Municipio { + ibge_code: 1714302, + name: "Nazaré", + state: State::TO, + }, + Municipio { + ibge_code: 1714880, + name: "Nova Olinda", + state: State::TO, + }, + Municipio { + ibge_code: 1715002, + name: "Nova Rosalândia", + state: State::TO, + }, + Municipio { + ibge_code: 1715101, + name: "Novo Acordo", + state: State::TO, + }, + Municipio { + ibge_code: 1715150, + name: "Novo Alegre", + state: State::TO, + }, + Municipio { + ibge_code: 1715259, + name: "Novo Jardim", + state: State::TO, + }, + Municipio { + ibge_code: 1715507, + name: "Oliveira de Fátima", + state: State::TO, + }, + Municipio { + ibge_code: 1721000, + name: "Palmas", + state: State::TO, + }, + Municipio { + ibge_code: 1715705, + name: "Palmeirante", + state: State::TO, + }, + Municipio { + ibge_code: 1713809, + name: "Palmeiras do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1715754, + name: "Palmeirópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1716208, + name: "Paranã", + state: State::TO, + }, + Municipio { + ibge_code: 1716109, + name: "Paraíso do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1716307, + name: "Pau D'Arco", + state: State::TO, + }, + Municipio { + ibge_code: 1716505, + name: "Pedro Afonso", + state: State::TO, + }, + Municipio { + ibge_code: 1716604, + name: "Peixe", + state: State::TO, + }, + Municipio { + ibge_code: 1716653, + name: "Pequizeiro", + state: State::TO, + }, + Municipio { + ibge_code: 1717008, + name: "Pindorama do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1717206, + name: "Piraquê", + state: State::TO, + }, + Municipio { + ibge_code: 1717503, + name: "Pium", + state: State::TO, + }, + Municipio { + ibge_code: 1717800, + name: "Ponte Alta do Bom Jesus", + state: State::TO, + }, + Municipio { + ibge_code: 1717909, + name: "Ponte Alta do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1718006, + name: "Porto Alegre do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1718204, + name: "Porto Nacional", + state: State::TO, + }, + Municipio { + ibge_code: 1718303, + name: "Praia Norte", + state: State::TO, + }, + Municipio { + ibge_code: 1718402, + name: "Presidente Kennedy", + state: State::TO, + }, + Municipio { + ibge_code: 1718451, + name: "Pugmil", + state: State::TO, + }, + Municipio { + ibge_code: 1718501, + name: "Recursolândia", + state: State::TO, + }, + Municipio { + ibge_code: 1718550, + name: "Riachinho", + state: State::TO, + }, + Municipio { + ibge_code: 1718758, + name: "Rio Sono", + state: State::TO, + }, + Municipio { + ibge_code: 1718659, + name: "Rio da Conceição", + state: State::TO, + }, + Municipio { + ibge_code: 1718709, + name: "Rio dos Bois", + state: State::TO, + }, + Municipio { + ibge_code: 1718808, + name: "Sampaio", + state: State::TO, + }, + Municipio { + ibge_code: 1718840, + name: "Sandolândia", + state: State::TO, + }, + Municipio { + ibge_code: 1718865, + name: "Santa Fé do Araguaia", + state: State::TO, + }, + Municipio { + ibge_code: 1718881, + name: "Santa Maria do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1718899, + name: "Santa Rita do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1718907, + name: "Santa Rosa do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1719004, + name: "Santa Tereza do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720002, + name: "Santa Terezinha do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720655, + name: "Silvanópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1720853, + name: "Sucupira", + state: State::TO, + }, + Municipio { + ibge_code: 1720101, + name: "São Bento do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720150, + name: "São Félix do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720200, + name: "São Miguel do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720259, + name: "São Salvador do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720309, + name: "São Sebastião do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720499, + name: "São Valério", + state: State::TO, + }, + Municipio { + ibge_code: 1720804, + name: "Sítio Novo do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1708254, + name: "Tabocão", + state: State::TO, + }, + Municipio { + ibge_code: 1720903, + name: "Taguatinga", + state: State::TO, + }, + Municipio { + ibge_code: 1720937, + name: "Taipas do Tocantins", + state: State::TO, + }, + Municipio { + ibge_code: 1720978, + name: "Talismã", + state: State::TO, + }, + Municipio { + ibge_code: 1721208, + name: "Tocantinópolis", + state: State::TO, + }, + Municipio { + ibge_code: 1721109, + name: "Tocantínia", + state: State::TO, + }, + Municipio { + ibge_code: 1721257, + name: "Tupirama", + state: State::TO, + }, + Municipio { + ibge_code: 1721307, + name: "Tupiratins", + state: State::TO, + }, + Municipio { + ibge_code: 1722081, + name: "Wanderlândia", + state: State::TO, + }, + Municipio { + ibge_code: 1722107, + name: "Xambioá", + state: State::TO, + }, +]; + +/// IBGE codes of the 27 state capitals, ordered to match [`crate::uf::ALL`]. +#[allow(clippy::unreadable_literal)] +pub const CAPITAL_CODES: [u32; 27] = [ + 1200401, // Rio Branco - AC + 2704302, // Maceió - AL + 1302603, // Manaus - AM + 1600303, // Macapá - AP + 2927408, // Salvador - BA + 2304400, // Fortaleza - CE + 5300108, // Brasília - DF + 3205309, // Vitória - ES + 5208707, // Goiânia - GO + 2111300, // São Luís - MA + 3106200, // Belo Horizonte - MG + 5002704, // Campo Grande - MS + 5103403, // Cuiabá - MT + 1501402, // Belém - PA + 2507507, // João Pessoa - PB + 2611606, // Recife - PE + 2211001, // Teresina - PI + 4106902, // Curitiba - PR + 3304557, // Rio de Janeiro - RJ + 2408102, // Natal - RN + 1100205, // Porto Velho - RO + 1400100, // Boa Vista - RR + 4314902, // Porto Alegre - RS + 4205407, // Florianópolis - SC + 2800308, // Aracaju - SE + 3550308, // São Paulo - SP + 1721000, // Palmas - TO +]; + +impl Municipio { + /// Find a municipality by its IBGE code. + pub fn from_ibge_code(code: u32) -> Option<&'static Municipio> { + ALL.iter().find(|m| m.ibge_code == code) + } + + /// Get the capital of a given state. + pub fn capital_of(state: State) -> &'static Municipio { + let code = CAPITAL_CODES + .iter() + .zip(crate::uf::ALL.iter()) + .find(|(_, s)| **s == state) + .map(|(c, _)| *c) + .unwrap(); + Self::from_ibge_code(code).unwrap() + } + + /// Returns all municipalities in a given state. + /// + /// Efficient: exploits the fact that `ALL` is sorted by state. + pub fn by_state(state: State) -> &'static [Municipio] { + let start = ALL.iter().position(|m| m.state == state); + match start { + Some(s) => { + let end = ALL[s..] + .iter() + .position(|m| m.state != state) + .map_or(ALL.len(), |e| s + e); + &ALL[s..end] + } + None => &[], + } + } + + /// Find municipalities whose name contains the given substring (case-insensitive). + pub fn search_by_name(query: &str) -> impl Iterator { + let query_lower: alloc::string::String = + query.chars().flat_map(char::to_lowercase).collect(); + ALL.iter().filter(move |m| { + let name_lower: alloc::string::String = + m.name.chars().flat_map(char::to_lowercase).collect(); + name_lower.contains(query_lower.as_str()) + }) + } + + pub fn is_capital(&self) -> bool { + CAPITAL_CODES.contains(&self.ibge_code) + } +} + +impl fmt::Display for Municipio { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}/{}", self.name, self.state) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use alloc::vec::Vec; + + #[test] + fn total_count() { + assert_eq!(ALL.len(), 5571); + } + + #[test] + fn sorted_by_state_then_name() { + for pair in ALL.windows(2) { + let a = &pair[0]; + let b = &pair[1]; + assert!( + (a.state as u8) < (b.state as u8) + || ((a.state as u8) == (b.state as u8) && a.name <= b.name), + "{} should come before {}", + a, + b + ); + } + } + + #[test] + fn each_state_has_municipalities() { + for &state in &crate::uf::ALL { + let munis = Municipio::by_state(state); + assert!(!munis.is_empty(), "{:?} has no municipalities", state); + } + } + + #[test] + fn capitals_exist_in_all() { + for &code in &CAPITAL_CODES { + assert!( + Municipio::from_ibge_code(code).is_some(), + "Capital code {} not found", + code + ); + } + } + + #[test] + fn capital_of_each_state() { + for &state in &crate::uf::ALL { + let cap = Municipio::capital_of(state); + assert_eq!(cap.state, state); + assert!(cap.is_capital()); + } + } + + #[test] + fn from_ibge_code_sao_paulo() { + let sp = Municipio::from_ibge_code(3550308).unwrap(); + assert_eq!(sp.name, "São Paulo"); + assert_eq!(sp.state, State::SP); + } + + #[test] + fn from_ibge_code_returns_none() { + assert!(Municipio::from_ibge_code(0).is_none()); + assert!(Municipio::from_ibge_code(9999999).is_none()); + } + + #[test] + fn by_state_returns_correct_state() { + let sp_munis = Municipio::by_state(State::SP); + for m in sp_munis { + assert_eq!(m.state, State::SP); + } + // SP has 645 municipalities + assert!(sp_munis.len() > 600); + } + + #[test] + fn search_by_name_works() { + let results: Vec<_> = Municipio::search_by_name("porto").collect(); + assert!(results.len() >= 2); + } + + #[test] + fn is_capital_correct() { + let sp = Municipio::from_ibge_code(3550308).unwrap(); + assert!(sp.is_capital()); + + // Campinas is not a capital + let campinas = Municipio::from_ibge_code(3509502).unwrap(); + assert!(!campinas.is_capital()); + } + + #[test] + fn display_format() { + use alloc::string::ToString; + let sp = Municipio::from_ibge_code(3550308).unwrap(); + assert_eq!(sp.to_string(), "São Paulo/SP"); + } + + #[test] + fn ibge_codes_are_7_digits() { + for m in ALL { + assert!( + m.ibge_code >= 1_000_000 && m.ibge_code <= 9_999_999, + "{} has invalid IBGE code: {}", + m.name, + m.ibge_code + ); + } + } +} diff --git a/core/src/rand.rs b/core/src/rand.rs new file mode 100644 index 0000000..188a568 --- /dev/null +++ b/core/src/rand.rs @@ -0,0 +1,22 @@ +#[cfg(feature = "std")] +pub(crate) fn simple_seed() -> u64 { + use std::hash::{BuildHasher, Hasher}; + std::collections::hash_map::RandomState::new() + .build_hasher() + .finish() +} + +#[cfg(not(feature = "std"))] +pub(crate) fn simple_seed() -> u64 { + let stack_var: u8 = 0; + let addr = &stack_var as *const u8 as u64; + addr.wrapping_mul(6_364_136_223_846_793_005) + .wrapping_add(1_442_695_040_888_963_407) +} + +pub(crate) fn xorshift64(mut state: u64) -> u64 { + state ^= state << 13; + state ^= state >> 7; + state ^= state << 17; + state +} diff --git a/core/src/uf.rs b/core/src/uf.rs new file mode 100644 index 0000000..29eacef --- /dev/null +++ b/core/src/uf.rs @@ -0,0 +1,273 @@ +//! Brazilian states (Unidades Federativas). +//! +//! The 26 states plus the Federal District, with their two-letter abbreviations +//! and region classification. + +use core::fmt; + +/// The 27 Brazilian federative units. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +#[repr(u8)] +pub enum State { + AC = 0, + AL = 1, + AM = 2, + AP = 3, + BA = 4, + CE = 5, + DF = 6, + ES = 7, + GO = 8, + MA = 9, + MG = 10, + MS = 11, + MT = 12, + PA = 13, + PB = 14, + PE = 15, + PI = 16, + PR = 17, + RJ = 18, + RN = 19, + RO = 20, + RR = 21, + RS = 22, + SC = 23, + SE = 24, + SP = 25, + TO = 26, +} + +/// All 27 states in alphabetical order by abbreviation. +pub const ALL: [State; 27] = [ + State::AC, + State::AL, + State::AM, + State::AP, + State::BA, + State::CE, + State::DF, + State::ES, + State::GO, + State::MA, + State::MG, + State::MS, + State::MT, + State::PA, + State::PB, + State::PE, + State::PI, + State::PR, + State::RJ, + State::RN, + State::RO, + State::RR, + State::RS, + State::SC, + State::SE, + State::SP, + State::TO, +]; + +/// Geographic region. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +#[repr(u8)] +pub enum Region { + Norte = 0, + Nordeste = 1, + CentroOeste = 2, + Sudeste = 3, + Sul = 4, +} + +impl State { + /// Two-letter abbreviation (e.g. `"SP"`, `"RJ"`). + pub fn abbreviation(self) -> &'static str { + match self { + State::AC => "AC", + State::AL => "AL", + State::AM => "AM", + State::AP => "AP", + State::BA => "BA", + State::CE => "CE", + State::DF => "DF", + State::ES => "ES", + State::GO => "GO", + State::MA => "MA", + State::MG => "MG", + State::MS => "MS", + State::MT => "MT", + State::PA => "PA", + State::PB => "PB", + State::PE => "PE", + State::PI => "PI", + State::PR => "PR", + State::RJ => "RJ", + State::RN => "RN", + State::RO => "RO", + State::RR => "RR", + State::RS => "RS", + State::SC => "SC", + State::SE => "SE", + State::SP => "SP", + State::TO => "TO", + } + } + + /// Full name of the state. + pub fn name(self) -> &'static str { + match self { + State::AC => "Acre", + State::AL => "Alagoas", + State::AM => "Amazonas", + State::AP => "Amapá", + State::BA => "Bahia", + State::CE => "Ceará", + State::DF => "Distrito Federal", + State::ES => "Espírito Santo", + State::GO => "Goiás", + State::MA => "Maranhão", + State::MG => "Minas Gerais", + State::MS => "Mato Grosso do Sul", + State::MT => "Mato Grosso", + State::PA => "Pará", + State::PB => "Paraíba", + State::PE => "Pernambuco", + State::PI => "Piauí", + State::PR => "Paraná", + State::RJ => "Rio de Janeiro", + State::RN => "Rio Grande do Norte", + State::RO => "Rondônia", + State::RR => "Roraima", + State::RS => "Rio Grande do Sul", + State::SC => "Santa Catarina", + State::SE => "Sergipe", + State::SP => "São Paulo", + State::TO => "Tocantins", + } + } + + /// Geographic region this state belongs to. + pub fn region(self) -> Region { + match self { + State::AC | State::AM | State::AP | State::PA | State::RO | State::RR | State::TO => { + Region::Norte + } + State::AL + | State::BA + | State::CE + | State::MA + | State::PB + | State::PE + | State::PI + | State::RN + | State::SE => Region::Nordeste, + State::DF | State::GO | State::MS | State::MT => Region::CentroOeste, + State::ES | State::MG | State::RJ | State::SP => Region::Sudeste, + State::PR | State::RS | State::SC => Region::Sul, + } + } + + /// Parse from a two-letter abbreviation (case-insensitive). + pub fn from_abbreviation(s: &str) -> Option { + match s.as_bytes() { + b"AC" | b"ac" | b"Ac" => Some(State::AC), + b"AL" | b"al" | b"Al" => Some(State::AL), + b"AM" | b"am" | b"Am" => Some(State::AM), + b"AP" | b"ap" | b"Ap" => Some(State::AP), + b"BA" | b"ba" | b"Ba" => Some(State::BA), + b"CE" | b"ce" | b"Ce" => Some(State::CE), + b"DF" | b"df" | b"Df" => Some(State::DF), + b"ES" | b"es" | b"Es" => Some(State::ES), + b"GO" | b"go" | b"Go" => Some(State::GO), + b"MA" | b"ma" | b"Ma" => Some(State::MA), + b"MG" | b"mg" | b"Mg" => Some(State::MG), + b"MS" | b"ms" | b"Ms" => Some(State::MS), + b"MT" | b"mt" | b"Mt" => Some(State::MT), + b"PA" | b"pa" | b"Pa" => Some(State::PA), + b"PB" | b"pb" | b"Pb" => Some(State::PB), + b"PE" | b"pe" | b"Pe" => Some(State::PE), + b"PI" | b"pi" | b"Pi" => Some(State::PI), + b"PR" | b"pr" | b"Pr" => Some(State::PR), + b"RJ" | b"rj" | b"Rj" => Some(State::RJ), + b"RN" | b"rn" | b"Rn" => Some(State::RN), + b"RO" | b"ro" | b"Ro" => Some(State::RO), + b"RR" | b"rr" | b"Rr" => Some(State::RR), + b"RS" | b"rs" | b"Rs" => Some(State::RS), + b"SC" | b"sc" | b"Sc" => Some(State::SC), + b"SE" | b"se" | b"Se" => Some(State::SE), + b"SP" | b"sp" | b"Sp" => Some(State::SP), + b"TO" | b"to" | b"To" => Some(State::TO), + _ => None, + } + } +} + +impl fmt::Display for State { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(self.abbreviation()) + } +} + +impl fmt::Display for Region { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(match self { + Region::Norte => "Norte", + Region::Nordeste => "Nordeste", + Region::CentroOeste => "Centro-Oeste", + Region::Sudeste => "Sudeste", + Region::Sul => "Sul", + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn all_states_count() { + assert_eq!(ALL.len(), 27); + } + + #[test] + fn abbreviation_roundtrip() { + for state in ALL { + let abbr = state.abbreviation(); + assert_eq!(abbr.len(), 2); + assert_eq!(State::from_abbreviation(abbr), Some(state)); + } + } + + #[test] + fn from_abbreviation_case_insensitive() { + assert_eq!(State::from_abbreviation("sp"), Some(State::SP)); + assert_eq!(State::from_abbreviation("SP"), Some(State::SP)); + assert_eq!(State::from_abbreviation("Sp"), Some(State::SP)); + assert_eq!(State::from_abbreviation("XX"), None); + assert_eq!(State::from_abbreviation(""), None); + } + + #[test] + fn display_shows_abbreviation() { + use alloc::string::ToString; + assert_eq!(State::SP.to_string(), "SP"); + assert_eq!(State::RJ.to_string(), "RJ"); + } + + #[test] + fn region_classification() { + assert_eq!(State::SP.region(), Region::Sudeste); + assert_eq!(State::AM.region(), Region::Norte); + assert_eq!(State::BA.region(), Region::Nordeste); + assert_eq!(State::DF.region(), Region::CentroOeste); + assert_eq!(State::RS.region(), Region::Sul); + } + + #[test] + fn name_not_empty() { + for state in ALL { + assert!(!state.name().is_empty()); + } + } +} diff --git a/core/src/util.rs b/core/src/util.rs new file mode 100644 index 0000000..3a449f6 --- /dev/null +++ b/core/src/util.rs @@ -0,0 +1,35 @@ +/// Returns `true` if all elements in the slice are equal. +pub(crate) fn all_equal(bytes: &[u8]) -> bool { + bytes.iter().all(|&v| v == bytes[0]) +} + +/// Generates boilerplate trait implementations for document structs. +/// +/// Implements `AsRef`, `FromStr`, and `Debug` for a given type. +/// Requires that the type has an `as_str()` method and a `parse_strict` +/// function exists in scope. +macro_rules! impl_document_traits { + ($Type:ident, $Error:ident) => { + impl AsRef for $Type { + fn as_ref(&self) -> &str { + self.as_str() + } + } + + impl core::str::FromStr for $Type { + type Err = $Error; + + fn from_str(s: &str) -> Result { + parse_strict(s) + } + } + + impl core::fmt::Debug for $Type { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + write!(f, "{}({self})", stringify!($Type)) + } + } + }; +} + +pub(crate) use impl_document_traits; diff --git a/core/tests/municipio_ibge_sync.rs b/core/tests/municipio_ibge_sync.rs new file mode 100644 index 0000000..437945e --- /dev/null +++ b/core/tests/municipio_ibge_sync.rs @@ -0,0 +1,206 @@ +//! Integration test: validates that hardcoded municipality data matches the IBGE source. +//! +//! The JSON file was fetched from: +//! +//! +//! To update: `curl -o tests/data/ibge_municipios_YYYY-MM-DD.json \ +//! "https://servicodados.ibge.gov.br/api/v1/localidades/municipios?orderBy=nome"` + +use std::collections::HashMap; +use std::fs; +use std::path::PathBuf; +use std::process::Command; + +use stdbr_core::municipio; +use stdbr_core::uf::State; + +const IBGE_URL: &str = + "https://servicodados.ibge.gov.br/api/v1/localidades/municipios?orderBy=nome"; + +/// Finds the most recent IBGE JSON file in tests/data/, downloading from the +/// IBGE API if none exists. +fn find_ibge_json() -> PathBuf { + let data_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/data"); + fs::create_dir_all(&data_dir).expect("failed to create tests/data/"); + + let mut files: Vec<_> = fs::read_dir(&data_dir) + .expect("tests/data/ directory must exist") + .filter_map(|e| e.ok()) + .filter(|e| { + e.file_name() + .to_str() + .is_some_and(|n| n.starts_with("ibge_municipios_") && n.ends_with(".json")) + }) + .collect(); + files.sort_by_key(|e| e.file_name()); + + if let Some(entry) = files.last() { + return entry.path(); + } + + // No cached file — fetch from IBGE API + let today = chrono_free_date(); + let dest = data_dir.join(format!("ibge_municipios_{today}.json")); + let status = Command::new("curl") + .args(["-sf", "-o"]) + .arg(&dest) + .arg(IBGE_URL) + .status() + .expect("failed to run curl — is it installed?"); + assert!(status.success(), "curl failed to fetch IBGE data"); + dest +} + +/// Returns today's date as `YYYY-MM-DD` without pulling in the `chrono` crate. +fn chrono_free_date() -> String { + let output = Command::new("date") + .arg("+%Y-%m-%d") + .output() + .expect("failed to run `date`"); + String::from_utf8(output.stdout) + .expect("invalid UTF-8 from date") + .trim() + .to_string() +} + +fn state_from_sigla(sigla: &str) -> State { + State::from_abbreviation(sigla).unwrap_or_else(|| panic!("Unknown state abbreviation: {sigla}")) +} + +#[derive(Debug)] +struct IbgeMunicipio { + id: u32, + nome: String, + uf_sigla: String, +} + +fn parse_ibge_json(path: &PathBuf) -> Vec { + let content = fs::read_to_string(path).expect("Failed to read IBGE JSON"); + let data: serde_json::Value = serde_json::from_str(&content).expect("Invalid JSON"); + let arr = data.as_array().expect("JSON root must be an array"); + + arr.iter() + .map(|m| { + let id = m["id"].as_u64().expect("id must be u64") as u32; + let nome = m["nome"].as_str().expect("nome must be string").to_string(); + + // Try microrregiao path first, fallback to regiao-imediata + let uf_sigla = m["microrregiao"]["mesorregiao"]["UF"]["sigla"] + .as_str() + .or_else(|| m["regiao-imediata"]["regiao-intermediaria"]["UF"]["sigla"].as_str()) + .unwrap_or_else(|| panic!("Cannot determine UF for {nome} (id={id})")) + .to_string(); + + IbgeMunicipio { id, nome, uf_sigla } + }) + .collect() +} + +#[test] +fn hardcoded_count_matches_ibge() { + let path = find_ibge_json(); + let ibge = parse_ibge_json(&path); + assert_eq!( + municipio::ALL.len(), + ibge.len(), + "Municipality count mismatch: hardcoded={} vs IBGE={}", + municipio::ALL.len(), + ibge.len() + ); +} + +#[test] +fn every_ibge_entry_exists_in_hardcoded() { + let path = find_ibge_json(); + let ibge = parse_ibge_json(&path); + + let hardcoded: HashMap = + municipio::ALL.iter().map(|m| (m.ibge_code, m)).collect(); + + let mut missing = Vec::new(); + for entry in &ibge { + if !hardcoded.contains_key(&entry.id) { + missing.push(format!("{} ({}/{})", entry.id, entry.nome, entry.uf_sigla)); + } + } + + assert!( + missing.is_empty(), + "Municipalities in IBGE but missing from hardcoded data:\n{}", + missing.join("\n") + ); +} + +#[test] +fn every_hardcoded_entry_exists_in_ibge() { + let path = find_ibge_json(); + let ibge = parse_ibge_json(&path); + + let ibge_codes: HashMap = ibge.iter().map(|m| (m.id, m)).collect(); + + let mut extra = Vec::new(); + for m in municipio::ALL { + if !ibge_codes.contains_key(&m.ibge_code) { + extra.push(format!("{} ({}/{})", m.ibge_code, m.name, m.state)); + } + } + + assert!( + extra.is_empty(), + "Municipalities in hardcoded data but missing from IBGE:\n{}", + extra.join("\n") + ); +} + +#[test] +fn names_match_ibge() { + let path = find_ibge_json(); + let ibge = parse_ibge_json(&path); + + let ibge_map: HashMap = ibge.iter().map(|m| (m.id, m)).collect(); + + let mut mismatches = Vec::new(); + for m in municipio::ALL { + if let Some(ibge_entry) = ibge_map.get(&m.ibge_code) { + if m.name != ibge_entry.nome { + mismatches.push(format!( + " {}: hardcoded=\"{}\" vs IBGE=\"{}\"", + m.ibge_code, m.name, ibge_entry.nome + )); + } + } + } + + assert!( + mismatches.is_empty(), + "Name mismatches:\n{}", + mismatches.join("\n") + ); +} + +#[test] +fn states_match_ibge() { + let path = find_ibge_json(); + let ibge = parse_ibge_json(&path); + + let ibge_map: HashMap = ibge.iter().map(|m| (m.id, m)).collect(); + + let mut mismatches = Vec::new(); + for m in municipio::ALL { + if let Some(ibge_entry) = ibge_map.get(&m.ibge_code) { + let expected_state = state_from_sigla(&ibge_entry.uf_sigla); + if m.state != expected_state { + mismatches.push(format!( + " {} ({}): hardcoded={} vs IBGE={}", + m.ibge_code, m.name, m.state, ibge_entry.uf_sigla + )); + } + } + } + + assert!( + mismatches.is_empty(), + "State mismatches:\n{}", + mismatches.join("\n") + ); +} diff --git a/rust-analyzer.toml b/rust-analyzer.toml new file mode 100644 index 0000000..c7e03a5 --- /dev/null +++ b/rust-analyzer.toml @@ -0,0 +1,5 @@ +# napi-derive proc macros require build-time state (type_def.json) +# that only exists during `napi build`, causing expansion failures +# in rust-analyzer's proc-macro server. +[procMacro] +ignored = { "napi_derive" = ["napi"] }