diff --git a/.cursor/rules/projects/nucleos-eleitorais.mdc b/.cursor/rules/projects/nucleos-eleitorais.mdc index 2cef8987..62adc182 100644 --- a/.cursor/rules/projects/nucleos-eleitorais.mdc +++ b/.cursor/rules/projects/nucleos-eleitorais.mdc @@ -8,6 +8,7 @@ alwaysApply: false ## Status - **B19 registrado (2026-07-24):** gerenciar assessores em `/campanha/assessores` (lista + novo + detalhe) — só Coordenador Geral e Candidato; criar/editar contas `advisor`, carteira de municípios, reenviar senha; alinha access update/phone do `candidate`. Sem migration. Plano: [`gerenciar-assessores.md`](../../../docs/plans/gerenciar-assessores.md). +- **E8 entregue em código (2026-07-24):** conta da cadeira — artefato TSE commitado estendido para v2 (`campoFederalVotesByYear`, `federalTallyByYear`, `majoritarian2022` presidente/governador T1 2022, via `pnpm build:election-aggregates`; teto de bytes revisado 400→700 KB) + curadoria `src/lib/campoParties.ts` (ano→siglas do campo, validada contra `electionPartySpectrum` por unit test); global `campaignGoals` (meta estadual 150 mil + margem, migration `20260724_180000_add_campaign_goals_global`, access staff-read/coordinator-write, **sem** hook de revalidação — `/campanha` é dinâmico com auth); `municipalityPotential.ts` (válidos projetados, teto do campo, captura, share intracampo, roll-off 2022-only, decomposição proporcional da meta + sanity por TI) e `goalCoverage.ts` (`meta = expectedVotes[cenário] ?? suggestedGoal`; `comprometido = Σ pledges`, nunca a expectativa da mesa — semântica travada contra o conflito da auditoria); UI Impeccable classe B: linha "Cobertura da meta" no dashboard e no overview da lista, nova coluna na lista de municípios (renomeando "Cobertura"→"Assessoria" para eliminar ambiguidade), card "Conta da cadeira" no detalhe (fixo em `central`, sem seletor de cenário). `/simplify` pós-entrega: removida a checagem de sanidade por TI do caminho quente por requisição (fica exportada/testada para o E12 consumir), lookup de potencial por município virou O(1) (`Map` em vez de `.find`), loaders quase-idênticos de votos majoritários/deputado federal unificados, tipo de tally duplicado unificado, formatadores de percentual/progresso deduplicados entre dashboard/overview/card. Desbloqueia **E9/E10/E12/E13** no roadmap. **Follow-up mesmo dia (feedback do usuário):** tooltips hover/foco nos 4 números de diagnóstico do card (`MunicipalityHoverTooltip`, sem ícone de interrogação); seed local passou a importar presidente/governador também para 2014/2018 (artefato/fórmulas continuam 2022-only); `/impeccable critique` do card (2×P1 touch dead-end + colisão de layout, 2×P2 idiomas de disclosure/cópia densa, 1×P3 progress bar) endereçado por completo — tooltip agora abre/fecha por toque com dismiss por toque fora, nunca cobre "Cobertura da meta", cópia reescrita em frase-líder + fórmula sem cross-reference, barra de progresso mais visível a 0%; registrado **E18** (documentação de conceitos de inteligência de campanha, plano futuro). Plano: [`conta-da-cadeira.md`](../../../docs/plans/conta-da-cadeira.md). - **C12 Registro-fundação entregue em código (2026-07-24):** trajetória de `votePledge` por versions nativas com baseline; atualização municipal `sinal` tipada (explicações, fonte e triangulação); `actionPlan.origin`; demandas vinculadas ao plano com custo derivado e criação múltipla atômica no formulário; `allocationDecision` ex-ante imutável com snapshot pequeno. Migration consolidada `20260724_180000_add_campaign_foundation_records`; testes de integração e jornada E2E dedicados. - **B18 registrado (2026-07-24):** filtros **salvos com nome** em `/campanha/municipios` (`localStorage`) + acesso rápido de 2º nível sob Municípios no sidebar (hover desktop / expand mobile; sticky só no filtro salvo ativo). Soft B16/B17 (barra). Fatia concreta do “saved views” que FD2 adiava como genérico. Sem migration. Plano: [`filtros-salvos-municipios.md`](../../../docs/plans/filtros-salvos-municipios.md). - **Avaliação: reorder de colunas por DnD (2026-07-24):** pedido para arrastar headers em `/campanha/municipios` → **fora de escopo** (não confundir com **B17** hide/show). Tecnicamente possível (~1–1,5d), mas conflita com sort B15 + filtros B16 no mesmo header, anti spreadsheet do PRODUCT, e não desbloqueia decisão de alocação. Gatilho em [`reordenar-colunas-lista-municipios.md`](../../../docs/plans/reordenar-colunas-lista-municipios.md). @@ -87,6 +88,7 @@ alwaysApply: false - Em 2026-07-24, **header da coluna A11 = `2022` (não "Concentração 2022"):** o título longo competia com células curtas (`%` + `12º`); no contexto da mesa o ano basta. Definição da métrica fica no hover do header (`formatMunicipalityConcentrationHint`). **Rejeitado:** manter "Concentração" no rótulo visível. - Em 2026-07-24, **C12 preserva fatos e decisões antes de sugerir:** pledges mantêm histórico nativo; sinais exigem tipo+fonte e distinguem triangulação; origem/custo são observados via plano→demandas; decisão de alocação é append-only para campanha (correção só por admin), sempre com racional e snapshot ex-ante pequeno. Demandas criadas junto do plano compartilham a mesma transação e fazem rollback integral em conflito. **Rejeitado:** sobrescrever trajetória, custo duplicado no plano, sugestão que decide automaticamente. +- Em 2026-07-24, **conta da cadeira (E8) — meta × comprometido, teto do campo e derivados vão para o artefato commitado, não para queries em runtime:** `meta = expectedVotes[cenário] ?? suggestedGoal` (a expectativa da mesa nunca é substituída pela soma dos pledges no denominador de cobertura — resolve o conflito de `resolveMunicipalityStaffVoteTotal`, que faz a expectativa vencer); `comprometido = aggregate.effectiveByScenario[cenário]` (só Σ pledges). Teto do campo = presidencial do campo T1 2022 (#13) como série primária, governador como leitura secundária (assumido, para validar com produto). Decomposição da meta estadual é proporcional ao teto do campo projetado (`suggestedGoal_i = metaEfetiva × tetoProjetado_i / Σ tetoProjetado`), nunca uma fórmula composta com captura/share/roll-off como pesos — essas ficam como colunas de diagnóstico. Roll-off (brancos+nulos DF − majoritária) é 2022-only (não há tally majoritário seedado para 2014/2018). `teto do campo`/`captura`/`share intracampo`/`roll-off` são derivados de um artefato TSE **commitado** (v2 de `bahia-federal-baseline.json`, via `pnpm build:election-aggregates`), não de `unstable_cache` sobre `electionCandidateVote` (~100k/73k/52k linhas por ano) — o hardening de 2026-07-23 já havia banido esse padrão do runtime. Meta estadual mora num global editável (`campaignGoals`, 150 mil inicial); `campoParties.ts` é lib estática curada por ano, não collection administrável nem segunda fonte de verdade de partido (valida contra `electionPartySpectrum.ts` por unit test). **Rejeitado:** meta por município 100% automática; fórmula composta multifatorial de potencial; inferir "campo" pela coligação bruta do TSE; collection de metas versionadas nesta fatia (fica para C12). - Em 2026-07-24, **uma única série por cenário — "Metas" eliminadas:** o grupo `municipality.voteGoals` ("Meta Bom/Regular/Mínimo") duplicava o conceito de votos estimados e foi removido do app (collection, zod, view models, form/card, `utilities/voteGoals.ts`); a série do município é `expectedVotes` (pessimista/média/otimista). Planilha EXPECTATIVA mapeia **Bom→otimista, Regular→média, Mínimo→pessimista**. Migration `20260724_133600_drop_municipality_vote_goals` com backfill metas→estimativas (estimativa existente vence). **Supersede** o "não fundir com `voteGoals`" da decisão A10 abaixo. **Rejeitado:** manter os dois grupos com semânticas distintas (meta de planejamento × estimativa) — a mesa trabalha com um número por cenário. - Em 2026-07-24, **E4R overwrite-always:** `pnpm db:seed:projecao` sempre sobrescreve `expectedVotes` + `priority` nas linhas casadas (planilha nova sobre DB já populado). **Rejeitado:** empty-only / `--overwrite` opt-in (quebraria o re-seed). Dry-run continua obrigatório antes de produção. - Em 2026-07-23, **access explícito em toda collection (hardening Fase 0):** o default do Payload ("qualquer autenticado pode CRUD") é tratado como bug; toda collection declara `access` explícito — `users`/`signature`/`subscription`/`consent` só Payload admin (`payloadAdminOnly`), escrita de CMS admin-only com leitura pública preservada. JWTs de `campaignUser` não operam mais essas collections via `/api`. **Rejeitado:** confiar no default do Payload; RBAC só na camada de UI. diff --git a/.impeccable/critique/2026-07-25T01-04-34Z__omponents-campaign-municipalitygoalaccountcard-tsx.md b/.impeccable/critique/2026-07-25T01-04-34Z__omponents-campaign-municipalitygoalaccountcard-tsx.md new file mode 100644 index 00000000..dcc665bf --- /dev/null +++ b/.impeccable/critique/2026-07-25T01-04-34Z__omponents-campaign-municipalitygoalaccountcard-tsx.md @@ -0,0 +1,96 @@ +--- +target: Conta da cadeira card (/campanha/municipios/) — MunicipalityGoalAccountCard.tsx tooltips +total_score: 26 +p0_count: 0 +p1_count: 3 +timestamp: 2026-07-25T01-04-34Z +slug: omponents-campaign-municipalitygoalaccountcard-tsx +--- +Method: dual-agent (A: 92b63fbf-f200-4a00-9cc5-81db3f317b57 · B: 35312920-2be2-4bac-92aa-0fbb62c2a571) + +## Design Health Score + +| # | Heuristic | Score | Key Issue | +|---|-----------|-------|-----------| +| 1 | Visibility of System Status | 3 | Coverage %, deficit text, and provenance ("estimativa da mesa") are all stated plainly; the 0%-coverage `Progress` bar is a near-invisible 4px hairline, understating urgency at the most common early-campaign state. | +| 2 | Match Between System and Real World | 2 | "Teto do campo," "share intracampo," "roll-off," "campo" are coined composites — confirmed by the product's own coordinator calling these "conceitos complicados" *after* this exact tooltip fix shipped (`docs/plans/documentacao-conceitos-campanha.md`). | +| 3 | User Control and Freedom | 3 | Popover/tooltip dismiss cleanly (Escape, click-outside, blur); no traps. | +| 4 | Consistency and Standards | 2 | Two disclosure idioms collide in one card: `CampaignInfoHint` opens-on-click-and-stays-open; the metric `Tooltip` closes-on-click and never opens on click. A user primed by the "?" icon one line above will click a metric next and get nothing, or dismiss an open tooltip. | +| 5 | Error Prevention | 3 | n/a mostly (read-only diagnostics); sane zero/negative fallbacks ("Sem meta definida," "Sem teto do campo projetado..."). | +| 6 | Recognition Rather Than Recall | 2 | Dotted-underline is a fair desktop cue, but on touch there is **no cue at all** — confirmed by both assessments (Radix's own touch-suppression logic, and no tap affordance reachable at 390×844). | +| 7 | Flexibility and Efficiency of Use | 3 | `Tab` reaches every metric and opens its tooltip on focus with a visible ring — solid keyboard path, measured live. | +| 8 | Aesthetic and Minimalist Design | 3 | Restrained, on-brand, correctly dense for a staff surface; undermined live by the tooltip/popover collision covering sibling content (screenshotted at both desktop and 390px). | +| 9 | Error Recovery | 3 | n/a — no error states exercised; fallback copy is clear and non-technical. | +| 10 | Help and Documentation | 2 | Good *density* of contextual help (card popover + 4 inline tooltips), not yet *effective* — field evidence says the explanations didn't resolve confusion, and there's no link to deeper docs yet (that's roadmap E18). | +| **Total** | | **26/40** | **Acceptable — significant improvements needed before users are happy** | + +## Anti-Patterns Verdict + +**LLM assessment**: Not AI slop. This is a real derived-data card built on the existing token system — flat `rounded-xl` card, hairline border, stone/red restraint, `tabular-nums`, dotted-underline instead of a fifth icon button. No purple-gradient/hero-metric/generic-SaaS tells. The actual risk is the opposite: the tooltip follow-up added this session has the texture of a fast patch (dense unbroken-paragraph copy, a disclosure-pattern collision) rather than a considered craft pass. + +**Deterministic scan**: `detect.mjs --json` against the three target files (`MunicipalityGoalAccountCard.tsx`, `CampaignInfoHint.tsx`, `MunicipalityHoverTooltip.tsx`) returned **exit 0, zero findings** — the code itself carries no static anti-pattern signatures. The bundled live-overlay injection (`live-server.mjs` + `detect.js`) separately surfaced 7 **page-wide** console findings (line-length ~135 chars/line, overused/single-font Inter, one `layout-transition: height`, and `nested-cards` ×3) — these scan the whole rendered page (header/sidebar included) and are **not confirmed scoped to the 3 target files**; treat as pre-existing shell-level context, not new debt from this session's work. One `nested-cards` hit plausibly matches this card's own "Votos estimados" `rounded-lg bg-muted/40` box sitting inside the card's `rounded-xl border` section, but this wasn't isolated with certainty. + +**Visual overlays**: No standing overlay was left running — the live-server was started, injected, read, and stopped as part of the evidence-gathering process; nothing persists in your browser to check. + +## Overall Impression + +The card itself is well-crafted and on-brand — restrained, honest about data provenance, and genuinely keyboard-accessible. But the tooltip follow-up built this session to fix a real comprehension gap **does not work at all on touch**, and where it does work, the bubble physically covers the "Cobertura da meta" figure it's meant to clarify. Both are P1s confirmed with hard evidence (Radix's own source, live screenshots at two viewports), not opinion. The biggest opportunity is recognizing that hover/focus disclosure may be the wrong mechanism for this density of explanation in the first place — worth weighing before this pattern gets copied onto more metrics as E9–E17 land. + +## What's Working + +1. **`CampaignInfoHint`'s copy is intellectually honest**: "Comprometido é só a soma das declarações de lideranças — nunca a meta," plus the explicit 2022-only caveat for roll-off/teto do campo. It pre-answers the obvious follow-up and admits data limitations instead of hiding them. +2. **Keyboard accessibility of the metric tooltips is genuinely solid, not a token gesture**: `tabIndex={0}` + a visible Mandate-Red `focus-visible` ring + tooltip opening on focus with proper `aria-describedby` — verified live via real `Tab` navigation. +3. **On-brand restraint**: flat card, hairline border, `tabular-nums`, dotted-underline instead of a fifth "?" icon — respects the Signal Red Rule (red stays on "Editar") and Flat-By-Default. Tooltip contrast measured at 17.49:1 (white on near-black) — no readability issue once a tooltip is actually visible. + +## Priority Issues + +**[P1] Touch users cannot open the metric tooltips at all.** +- **Why it matters**: PRODUCT.md names "used in the field and on the go" as this surface's defining context, and this exact follow-up exists for comprehension. It's unreachable on the device class that context implies. +- **What/evidence**: `@radix-ui/react-tooltip@1.2.8`'s `TooltipTrigger` explicitly ignores touch pointer events and gates focus-open on a pointer-down ref that a tap sets first — confirmed against the installed source, not inference. At 390×844, no tap affordance exists for any of the 4 metrics; the adjacent "Editar votos estimados" control works fine at the same width, so this reads as an oversight, not a deliberate mobile choice. +- **Fix**: Add an explicit tap trigger — drop `asChild` for a focusable/clickable element with its own `onClick` toggling open, or give each metric a small click-openable affordance like `CampaignInfoHint`'s. +- **Suggested command**: `/impeccable harden` + +**[P1] Tooltips render on top of the number/coverage block they explain.** +- **Why it matters**: The moment someone seeks clarification is the moment the clarified figure disappears — a direct "one thing at a time" violation at the card's highest-stakes row. +- **What/evidence**: Reproduced independently by both assessments via hover, real keyboard focus, and screenshots at 1280×720 and 390×844 — the bubble (Radix collision-flips to `data-side="top"` since the trigger sits near the viewport bottom) fully covers "Cobertura da meta" / the progress bar / "Faltam X votos para a meta" at both widths. +- **Fix**: Force collision-safe placement for this usage (`side="top"` with generous `sideOffset` plus bottom padding, or reorder the diagnostic row above the coverage block so there's room for the tooltip to open without overlap). +- **Suggested command**: `/impeccable layout` + +**[P1] Tooltip/popover copy is dense, cross-referential jargon — and the real user already said it didn't help.** +- **Why it matters**: `docs/plans/documentacao-conceitos-campanha.md` quotes the actual coordinator calling these "conceitos complicados" *after* these exact tooltips shipped — the fix under critique didn't fix the problem it was built to fix. +- **What/evidence**: e.g. the "Teto do campo" explanation is one ~40-word sentence with three technical terms and no break; "Share intracampo"'s explanation requires recalling "Captura"'s definition mid-read, but the two tooltips can never be open at the same time (opening one closes the other) — a genuine working-memory violation. +- **Fix**: Split each explanation into a short lead sentence (what it measures) + a visually secondary formula line; bold only the one term each tooltip defines; stop cross-referencing metrics that can't be open simultaneously — state the difference inline instead of by reference. +- **Suggested command**: `/impeccable clarify` + +**[P2] Two incompatible disclosure idioms coexist in one card.** +- **Why it matters**: Breaking Consistency *within* a single component teaches the wrong mental model in real time — a user who just learned "click the small icon" naturally tries clicking a metric next and gets nothing or an unwanted dismissal. +- **What/evidence**: `CampaignInfoHint` = click-to-open-and-stay-open Popover; `GoalAccountMetric` = hover/focus Tooltip that closes on click (Radix default), never opens on click. +- **Fix**: Pick one idiom for this card, or make the "click for detail" vs. "hover/focus for definition" visual distinction stronger than dotted-underline vs. circle-icon alone. +- **Suggested command**: `/impeccable clarify` + +**[P3] The 0%-coverage progress bar is nearly invisible.** +- **Why it matters**: Understates urgency exactly when it should read loudest (0% coverage is the most common early-campaign state). +- **Fix**: Give the near-zero state deliberate visual weight instead of relying solely on the adjacent "0%" text. +- **Suggested command**: `/impeccable polish` + +## Persona Red Flags + +**Alex (Impatient Power User — the coordinator in the weekly meeting)**: Wants "does the account close" in one glance; instead has to learn two disclosure idioms in the same card, and hovering a diagnostic metric to double-check a number before reporting it upward covers that exact number with the tooltip bubble. + +**Sam (Accessibility-Dependent, keyboard/screen reader)**: Genuinely well-served on keyboard (visible focus ring, `Tab` reaches every metric, proper `aria-describedby`). Red flag: nothing in the accessible name/role of the `tabIndex={0}` wrapper signals "this one has extra content" in advance — unlike `CampaignInfoHint`, which is an explicitly-named button — so a screen-reader user has to tab-and-listen speculatively. + +**Casey (Distracted Mobile User — "field and on the go")**: Confirmed dead end. Tapping any of the 4 metrics mid-conversation with a leadership contact produces silence — no tooltip, no feedback, no error — verified against Radix's own touch-suppression logic and a live 390×844 render. The adjacent "Editar votos estimados" control works fine at the same width, so the gap reads as an oversight, not a deliberate choice. + +## Minor Observations + +- Inconsistent naming for the same race across the card: "deputado federal," "DF," and the card's own title "cadeira" all mean the same office; a first-time reader must infer the synonymy. +- `CampaignInfoHint`'s popover runs three distinct ideas (meta/comprometido/2022-only caveat) into one unbroken `

` — a blank line between them would help scanning under pressure. +- Measured: the "?" button is exactly 44×44px (meets the enhanced WCAG 2.2 target size); the 4 metric touch-target wrappers measured only 36px tall — below that same bar, compounding the touch dead-end above rather than causing it. +- Measured: metric label contrast (`text-muted-foreground`, 12px) is ≈4.83:1 — passes AA (≥4.5:1) but with a thin 0.33 margin; tooltip content itself measured 17.49:1, no issue there. +- `sm:grid-cols-4` collapses to 2×2 below `sm`; mid-size tablet/foldable widths weren't tested and are worth a pass as more metrics join this row (E9–E17). + +## Questions to Consider + +- If the coordinator needed a *separate* documentation surface (E18) days after these exact tooltips shipped specifically because they didn't resolve the confusion, is hover/focus disclosure the right mechanism for this density of explanation at all — or does the card need one worked example inline before a glossary page ever ships? +- "Captura" and "Share intracampo" exist as two numbers whose entire tooltip copy is dedicated to explaining how they differ from each other — should this be one metric with a denominator toggle instead of two numbers that each require reading the other's footnote? +- As E9–E17 add more diagnostic metrics to this row, does the card need a settled disclosure model *now* — before there are 8 metrics fighting over two incompatible idioms instead of 4? diff --git a/AGENTS.md b/AGENTS.md index 6eb156c6..617c20c6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -65,6 +65,8 @@ Backlog consolidado (bloqueadores, site, campanha, white-label): [`docs/roadmap. **Recently resolved (2026-07-24):** **E4R** Import único da planilha de projeção — `pnpm db:seed:projecao` (`scripts/import-projecao.mjs`) lê o xlsx canônico em `docs/sheets/`, faz match via `canonicalizeMunicipalityName` + `municipalityCatalog`, e **sempre sobrescreve** `municipality.expectedVotes` + `priority` (re-seed quando a mesa manda planilha nova); Salvador pulado; `--dry-run` + guard `ALLOW_REMOTE_DB`; parser puro em `src/lib/projectionSheetParse.ts` (Bom→`optimistic`, Regular→`central`, Mínimo→`pessimistic`). **Fase 2 (mesmo dia, decisão do produto — não é mais zero PII):** o seed também importa as colunas de estratégia, com PRIORITÁRIAS sobrepondo MAPA GERAL quando não-vazia — SITUAÇÃO→`politicalTrend` (QUEDA/MANTÉM/AUMENTO→desfavorável/neutra/favorável, com nota de proveniência), DOBRADINHAS→`stateDeputy`+`stateDeputies` (união; célula crua em `dobradinhaNotes`), LIDERANÇAS→`contact` name-only **sem telefone** + `leadership` (dedup estadual por slug do nome; `Contact.phone` virou opcional via migration `20260724_175500_contact_phone_optional`, UI continua exigindo), ASSESSOR RESPONSÁVEL→`campaignUser`+`advisors` (união; Edizio=coordinator, Solla=candidate — `candidate` agora é elegível como assessor em `eligibleCampaignStaffWhere`; novos usuários com email `@planilha.invalid` + senha aleatória, sem login até um admin trocar), ENCAMINHAMENTOS→`nextSteps`, OBSERVAÇÃO→`strengths`/`risks` (classificação curada por slug). Relações são união (nunca removem vínculos da UI); re-run idempotente; nomes de atores políticos entraram sem trilha de consentimento — regularizar com a assessoria jurídica. No mesmo dia, o grupo duplicado `municipality.voteGoals` ("Meta Bom/Regular/Mínimo") foi **removido** — collection, zod, view models, form/card e utilitário `voteGoals.ts` — via migration `20260724_133600_drop_municipality_vote_goals` (backfill metas→estimativas onde a estimativa estava vazia): `expectedVotes` (pessimista/média/otimista) é a única série por cenário do município. Plano: [`docs/plans/import-planilha-projecao.md`](docs/plans/import-planilha-projecao.md). +**Recently resolved (2026-07-24):** **E8** Conta da cadeira (metas derivadas, potencial por município, cobertura) — committed TSE artifact extended to v2 (`pnpm build:election-aggregates` now writes `campoFederalVotesByYear`, `federalTallyByYear`, and 2022 `majoritarian2022` presidente/governador T1 per municipality, alongside the existing `votesByYear`/`validVotesByYear`; byte budget raised 400→700 KB in the unit test); `src/lib/campoParties.ts` (curated field-party siglas per election year, unit-tested against `electionPartySpectrum.ts`'s `esquerda` bucket — not a second party classifier); global `campaignGoals` (`src/globals/CampaignGoals.ts`, migration `20260724_180000_add_campaign_goals_global`, `stateGoal` default 150,000 + `margin`/`baseYear`/`note`, `read` = admin/staff, `update` = admin/`isCampaignUnrestricted`, **no** `afterChange` hook — `/campanha` is dynamic with auth so nothing caches it); pure derived utilities `src/utilities/municipalityPotential.ts` (projected valid votes, field ceiling, capture rate, intra-field share, 2022-only roll-off, proportional goal decomposition + TI sanity check) and `src/utilities/goalCoverage.ts` — **locked semantics:** `meta = expectedVotes[scenario] ?? suggestedGoal`, `comprometido = aggregate.effectiveByScenario[scenario]` (pledges only — the mesa's own expectation never substitutes for the pledge sum in the coverage denominator, unlike `resolveMunicipalityStaffVoteTotal`); orchestration in `src/utilities/municipalityGoalAccount.ts` (`cache()`-deduplicated across dashboard/list/detail). UI (Impeccable class B): "Cobertura da meta" row on the dashboard and the list overview `CampaignMetricStrip`, a new list column (renaming the old "Cobertura" column to "Assessoria" to remove ambiguity) via a shared `MunicipalityListGoalCoverageCell` (compact/default layouts), and a new "Conta da cadeira" card on the municipality detail page (fixed to the `central` scenario, replacing the "Votos estimados" block that used to live in `MunicipalityStrategyCard`). Unblocks roadmap items **E9/E10/E12/E13**. Plano: [`docs/plans/conta-da-cadeira.md`](docs/plans/conta-da-cadeira.md). + **Recently resolved (2026-07-23):** **A10** Cenários de estimativa (pessimista/média/otimista) — `votePledge.estimatedVotes` e `municipality.expectedVotes` viram groups (`pessimistic|central|optimistic`); migration `20260723_124200_add_vote_estimate_scenarios` (backfill scalar→`central`); agregação por cenário em `votePledgeData` com default `central`; mapa 2026 com `values2026ByScenario` + seletor local; lista/overview/dashboard com média + faixa secundária; liderança continua com um `declaredVotes` sem ver estimativas. Plano: [`docs/plans/cenarios-estimativa-votos.md`](docs/plans/cenarios-estimativa-votos.md). Desbloqueia **E8**. ## Posts & Tags (news / publications) @@ -124,7 +126,7 @@ The internal `/campanha` area is gated by its own authentication, deliberately k `/campanha` is organized around `municipality` ("Município") — the campaign's PREDEFINED operational territory. Deployed to production on 2026-07-23 (destructive remodel migrations applied via the Vercel build). Master plan: `docs/plans/remodelagem-municipios.md` (supersedes `docs/plans/remodelagem-pracas.md`). - **Município definition:** 435 seeded rows — one per Bahia municipality (416), except Salvador (19 zone municipalities, ZE 1–19); Camaçari is a single whole municipality (ZE 170/171 aggregated). Canonical catalog: `src/lib/municipalityCatalog.ts` (`tests/fixtures/municipality-catalog.snapshot.json`). Seeded by migration `20260723_200000_remodel_municipalities` (+ reconcile `20260723_202000_reconcile_municipality_remodel`). Geography is admin-only; staff edit strategy fields and the coordinator assigns `advisors`. -- **Collections (admin group `Campanha`):** `municipality`, `leadership`, `votePledge`, `organization`, `stateDeputy` (dobradinhas), `campaignDemand`, `municipalityUpdate`, `campaignInvite`, `supporter`, `actionPlan`. +- **Collections (admin group `Campanha`):** `municipality`, `leadership`, `votePledge`, `organization`, `stateDeputy` (dobradinhas), `campaignDemand`, `municipalityUpdate`, `campaignInvite`, `supporter`, `actionPlan`. **Global** (same admin group): `campaignGoals` (E8 "conta da cadeira" — state-level vote goal + margin; `read` = admin/staff, `update` = admin/`isCampaignUnrestricted`; no `afterChange` hook — nothing caches it). - **Roles:** `coordinator` ("Coordenador Geral") and `candidate` ("Candidato", unrestricted visibility via `isCampaignUnrestricted`) see/manage everything staff sees; `advisor` ("Assessor") is scoped to `municipality.advisors`; `leader` ("Liderança") is **lockdown** — home is the supporter contact tool only (`LeaderContactsPanel`, `source: lideranca`), reads only supporters they created (`createdBy`), no municipalities/leaderships/pledges/demands/plans/election data. - **Vote pledge asymmetry:** staff declare `declaredVotes` and record `estimatedVotes` (pessimistic/central/optimistic); leaders never see estimates. Aggregates use `estimated[S] ?? declared`, default `central` (`src/utilities/votePledgeData.ts`). - **Demandas:** staff-only create/read (`canCreateCampaignDemand`); optional `leadership` provenance selected by staff. Escalated decisions: coordinator **or** candidate. diff --git a/docs/plans/conta-da-cadeira.md b/docs/plans/conta-da-cadeira.md index 0bf894df..5db390eb 100644 --- a/docs/plans/conta-da-cadeira.md +++ b/docs/plans/conta-da-cadeira.md @@ -1,12 +1,43 @@ # E8 — Conta da cadeira (metas derivadas, potencial por município, cobertura) -Status: rascunho -Atualizado em: 2026-07-24 (refs sincronizadas pós-remodelagem Municípios + hardening; **A10 entregue e remodelagem em produção — dependências duras satisfeitas**; meta inicial ancorada na sessão de campo de 2026-07-23; `expectedVotes` seedados por E4R — o grupo `voteGoals` foi removido do app em 2026-07-24, a série manual por cenário é só `expectedVotes`) +Status: entregue em código (2026-07-24; ver "Entregue (as-built)" abaixo) +Atualizado em: 2026-07-24 (auditoria de implementação — ver "Achados da auditoria" abaixo; escopo completo confirmado com o usuário; appetite revisado ~2,5–3d; entrega registrada) Item do roadmap: [docs/roadmap.md](../roadmap.md) (seção "Inteligência de campanha", E8; plano-mestre [inteligencia-campanha.md](inteligencia-campanha.md); A10 ✓) Impeccable: B — cobertura/metas encaixadas no dashboard, na lista de municípios e no detalhe (sem rota nova) -Appetite: ~2 dias eng; migration pequena (global `campaignGoals`) + utilities derivadas + encaixes de UI +Appetite: ~2,5–3 dias eng (revisado — degrau 3 da caching ladder para teto do campo/share intracampo/roll-off, ver auditoria); migration pequena (global `campaignGoals`) + artefato TSE estendido + utilities derivadas + encaixes de UI Responsável: — +## Achados da auditoria de implementação (2026-07-24) + +Confirmado contra o repositório antes do craft: dependências duras satisfeitas (A10 vivo, remodelagem em produção, `voteGoals` de fato removido); o artefato commitado [bahia-federal-baseline.json](../../src/lib/electionAggregates/bahia-federal-baseline.json) já tem `votesByYear`/`validVotesByYear` por município para 2014/2018/2022; o banco local seedado para esta sessão confirma TSE completo nos três anos (DF T1 2014/2018/2022 + ticket 2022 completo, incluindo presidente/governador por zona) — o rabbit hole "roll-off por zona sem tally do majoritário" fica **fechado por evidência para 2022** (não para 2014/2018, que só têm deputado federal). + +Ajustes ao plano abaixo, travados nesta sessão: + +1. **Escala.** Teto do campo / share intracampo / roll-off NÃO usam `unstable_cache` sobre as collections como a seção "Abordagem proposta" sugeria — `electionCandidateVote` tem ~100k/73k/52k linhas por ano (2022/2018/2014); varrer isso por município na lista/dashboard é exatamente o padrão que o hardening de 2026-07-23 baniu do runtime. Vai para o **degrau 3 da caching ladder**: estender o artefato commitado via `pnpm build:election-aggregates` (`campoFederalVotesByYear`, `federalTallyByYear`, `majoritarian2022`), não um loader novo com tag. +2. **Meta × comprometido (semântica).** A seção "Objetivos" abaixo (linha da cobertura) e o rabbit hole sobre `expectedVotes ?? Σ pledges` estavam ambíguos: hoje `resolveMunicipalityStaffVoteTotal` faz a expectativa **substituir** a soma dos pledges — usar isso como denominador daria 100% de cobertura nos ~189 municípios com planilha (E4R). **Travado:** `meta = expectedVotes[cenário] ?? suggestedGoal`; `comprometido = aggregate.effectiveByScenario[cenário]` (só pledges, nunca a expectativa da mesa). Cobertura = "quanto da expectativa está lastreado em compromisso auditável" — mesma regra do plano do [E9](fila-de-alocacao.md). +3. **Global sem hook de revalidação.** `revalidateGlobal` citado nos "Componentes" abaixo é cerimônia morta: `/campanha` é dinâmico com auth (nada cacheia o global) e a tag não entraria no allowlist de `revalidateRequest.ts`. O global `campaignGoals` não terá `afterChange` hook (comentário no código justificando). +4. **`campoParties.ts` não é uma segunda fonte de verdade de partido.** Já existe [electionPartySpectrum.ts](../../src/lib/electionPartySpectrum.ts) (buckets esquerda/centro/direita). `campoParties.ts` é a curadoria de **campo por ano** (2014/2018/2022/2026); um unit test prova que toda sigla do campo está no bucket `esquerda`, com exclusões documentadas. +5. **Access de global é terreno novo.** Os 4 globals existentes (`SiteSettings`, `HomePage`, `Metadata`, `PrivacyPolicy`) usam `read: () => true` / `update: Boolean(user)`; nenhum está no grupo `Campanha` nem nega leitura. `campaignGoals` precisa de access explícito (JWT de `campaignUser` alcança `/api/globals/*`). + +Decisões de produto travadas na mesma sessão (detalhes na seção "Decisões travadas" e "Questões em aberto" abaixo, já atualizadas): meta estadual inicial 150.000 (editável); válidos projetados = média ponderada `(v2014 + v2018 + 2×v2022) / 4`; decomposição proporcional ao teto do campo projetado (não fórmula composta); teto do campo = presidencial do campo T1 2022 (#13) como primário, governador como leitura secundária (assumido, validar com produto); roll-off = (brancos+nulos DF) − (brancos+nulos majoritária), 2022-only. + +## Entregue (as-built, 2026-07-24) + +Todas as 6 fases implementadas conforme o plano de execução, com os ajustes da auditoria já incorporados: + +- **Artefato v2** (`pnpm build:election-aggregates`): `campoFederalVotesByYear`, `federalTallyByYear` e `majoritarian2022` (presidente/governador T1 2022) adicionados por município a `bahia-federal-baseline.json`, ao lado de `votesByYear`/`validVotesByYear`. Curadoria `src/lib/campoParties.ts` (2014/2018/2022/2026), validada por unit test contra o bucket `esquerda` de `electionPartySpectrum.ts`. Teto de bytes do artefato revisado de 400 KB para 700 KB (`tests/unit/bahiaElectionAggregates.unit.spec.ts`). +- **Global `campaignGoals`** (`src/globals/CampaignGoals.ts`, migration `20260724_180000_add_campaign_goals_global`): `stateGoal` (default 150.000), `margin`, `baseYear`, `note`; `read` = admin/staff, `update` = admin/`isCampaignUnrestricted`; **sem** hook `afterChange` (achado #4 da auditoria — cerimônia morta, `/campanha` é dinâmico com auth). Loader `src/utilities/campaignGoals.ts` com React `cache()`. +- **Derivados puros**: `src/utilities/municipalityPotential.ts` (`projectedValidVotes`, `fieldCeiling`, `projectedFieldCeiling`, `captureRate`, `intraFieldShare`, `rollOff`, `decomposeStateGoal`, `sanityCheckSuggestedGoalsByTerritory`) e `src/utilities/goalCoverage.ts` (`meta = expectedVotes[cenário] ?? suggestedGoal`; `comprometido = aggregate.effectiveByScenario[cenário]`, nunca a expectativa da mesa — achado #2). Orquestração server-scoped em `src/utilities/municipalityGoalAccount.ts` (`cache()`-deduplicado entre dashboard/lista/detalhe). +- **UI** (Impeccable classe B, shape → craft → critique → harden): linha "Cobertura da meta" na `CampaignMetricStrip` do dashboard (`CampaignDashboard.tsx`) e do overview da lista (`MunicipalityListOverview.tsx`); nova coluna "Cobertura da meta" em `MunicipalityList.tsx` (a coluna antiga "Cobertura" foi renomeada para "Assessoria" para eliminar a ambiguidade), com célula compartilhada `MunicipalityListGoalCoverageCell.tsx` (variante `compact` para a tabela desktop, `default` para os cards mobile); card novo "Conta da cadeira" (`MunicipalityGoalAccountCard.tsx`) na aba Visão geral do detalhe do município, fixo no cenário `central` (sem seletor de cenário nessa página) — substitui o bloco "Votos estimados" que antes vivia em `MunicipalityStrategyCard.tsx`. +- **Verificação:** `tsc --noEmit`, `pnpm lint`, `pnpm exec knip`, unit + int (incl. `tests/int/campaignGoalsAccess.int.spec.ts` cobrindo a matriz de acesso por papel) e `pnpm build` verdes contra o banco local; `pnpm test:e2e` verde quando executado isolado (flakiness de timeout/`ECONNRESET` observada só sob contenção de recursos do sandbox com múltiplos dev servers em paralelo — não é regressão de código; 1 assertion ajustada para um seletor Playwright não-ambíguo pós-mudança de UI). +- **Divergências do plano original:** nenhuma decisão de produto mudou; os 6 achados da auditoria (seção acima) e as decisões travadas na sessão foram seguidos à risca. `territoryWarnings` (sanity check por TI) ficam computados e disponíveis em `municipalityPotential.ts`/`computeStatewideGoalDecomposition`, mas **não** ganharam superfície de UI nesta entrega — o brief de shape aprovado (Fase 4a) cobriu só as 4 integrações (dashboard, overview, lista, detalhe); exibir os avisos por TI é candidato natural para E12 (camada TI) ou um fill-in futuro. + +### Follow-up pós-entrega (mesmo dia, feedback do usuário) + +1. **Tooltips nos 4 números de diagnóstico.** O card `MunicipalityGoalAccountCard.tsx` só tinha o `CampaignInfoHint` ("?") no título; os 4 números do bloco de diagnóstico (teto do campo, captura, share intracampo, roll-off) ficaram sem explicação inline. Adicionado `GoalAccountMetric` (Tooltip do shadcn/ui, hover + foco por teclado, sem ícone de interrogação — pedido explícito do usuário) envolvendo cada par `dt`/`dd`. +2. **Majoritária 2014/2018: útil, seed expandido.** A auditoria (linha 12 acima) tinha fechado o rabbit hole do roll-off "só para 2022" citando que 2014/2018 só tinham deputado federal seedado. Decisão: essa lacuna é útil de fechar (diagnóstico histórico futuro), então `scripts/seed-tse-results.mjs` passou a importar presidente + governador também para 2014/2018 (`HISTORICAL_BASELINE_OFFICES` em `electionResultsBuild.ts`), carregando sempre os arquivos BR (nacionais) de voto/apuração — os votos presidenciais por município da Bahia vivem nesses arquivos, não nos BA. Isso expôs duplicatas de "voto em trânsito" (só existem no cargo presidente) que colidiam com o índice único de `ElectionCandidateVote`/`electionTally` em 2014 (BA, zona 154, e outras); corrigido somando os splits (`mergeDuplicateVoteRows`/`mergeDuplicateTallyRows` em `electionResultsParse.ts`). **Escopo mantido:** só o banco local ganhou os dados; o artefato commitado (`bahia-federal-baseline.json`) e as fórmulas de `municipalityPotential.ts` (teto do campo, roll-off) continuam 2022-only por design — estender isso é trabalho futuro, não pedido nesta sessão. Textos na UI/comentários que diziam "não seedado" foram corrigidos para não ficarem factualmente errados. +3. **`/impeccable critique` no card + hardening completo (mesmo dia).** Critique sobre `MunicipalityGoalAccountCard.tsx`/`CampaignInfoHint.tsx`/`MunicipalityHoverTooltip.tsx` (persistido em `.impeccable/critique/2026-07-25T01-04-34Z__omponents-campaign-municipalitygoalaccountcard-tsx.md`, 26/40) achou 2×P1 confirmados com evidência de browser real (Playwright, 1280×720 e 390×844): (a) as 4 tooltips de métrica eram **inalcançáveis por toque** — `@radix-ui/react-tooltip` ignora `pointerType: 'touch'` de propósito, e o card é usado "no campo"; (b) a bolha colidia (`side` flip do Radix) e cobria a linha "Cobertura da meta" logo abaixo do título. Mais 2×P2 (idiomas de disclosure incompatíveis no mesmo card — Popover clica-e-fica-aberto vs. Tooltip hover/foco que nunca abre no clique; cópia densa com referência cruzada entre "Captura" e "Share intracampo" que não podem estar abertas ao mesmo tempo) e 1×P3 (barra de progresso a 0% quase invisível, `h-1`). Todos endereçados na mesma sessão: `MunicipalityHoverTooltip.tsx` ganhou estado controlado com um `onPointerUp` que só reage a `pointerType === 'touch'` (mouse/teclado continuam 100% no hover/foco nativo do Radix — sem o bug simétrico de "clique fecha o que o hover acabou de abrir") e um listener de `pointerdown` fora do gatilho que fecha a bolha (Radix não tem dismiss-layer para Tooltip, só para Popover) — abrir a métrica B fecha a métrica A "de graça", já que é só um "toque fora" do ponto de vista de A. `GoalAccountMetric` trocou o `div tabIndex` por um ` + +) + +/** + * Two-tier tooltip copy: a short lead sentence naming what the metric + * measures (its one bolded term), then a visually secondary formula line — + * split per the E8 `/impeccable critique` finding that a single ~40-word + * sentence with three technical terms didn't resolve the coordinator's + * confusion. `formula` sits at `text-background/70` (tooltip content is + * dark, so this lightens rather than muting against a light background). + */ +const MetricExplanation = ({ lead, formula }: { lead: ReactNode; formula?: ReactNode }) => ( +

+

{lead}

+ {formula ?

{formula}

: null} +
+) + +const formatRollOff = (rollOff: RollOff | null): string => { + if (!rollOff) return 'Sem majoritária 2022 disponível' + const votesLabel = formatElectionNumber(rollOff.votes) + const percentLabel = + rollOff.percentOfTurnout != null + ? ` (${formatRatioAsPercentLabel(rollOff.percentOfTurnout)} do comparecimento)` + : '' + return `${votesLabel}${percentLabel}` +} + +/** + * E8 "conta da cadeira" — meta × comprometido para este município, com o + * bloco de diagnóstico (teto do campo, captura, share intracampo, roll-off). + * Cenário fixo `central`: o detalhe não tem seletor de cenário (a lista e o + * dashboard têm). + */ +export const MunicipalityGoalAccountCard = ({ + municipalityID, + expectedVotes, + pledgeCoverage, + suggestedGoal, + goalCoverage, + potential, +}: { + municipalityID: number + expectedVotes: VoteEstimateScenarioViewModel + pledgeCoverage: MunicipalityPledgeCoverageView | null + suggestedGoal: number + goalCoverage: MunicipalityGoalCoverage + potential: MunicipalityPotential +}) => { + const usesMesaEstimate = expectedVotes.central != null + const latestIntraFieldShareYear = Math.max( + ...Object.keys(potential.intraFieldShareByYear).map(Number), + ) + const latestIntraFieldShare = potential.intraFieldShareByYear[latestIntraFieldShareYear] ?? null + + return ( +
+
+

+ Conta da cadeira +

+ +
+

+ Meta é a estimativa da mesa; sem estimativa, usa a meta sugerida + (decomposição proporcional da meta estadual pelo teto do campo projetado). +

+

+ Comprometido é só a soma das declarações de lideranças — nunca a + meta. +

+

+ O roll-off e o teto do campo (abaixo) só usam 2022 — a majoritária de 2014/2018 já + foi importada, mas ainda não entra nessas contas. +

+
+
+
+ +
+

Votos estimados

+ +

+ Meta usada na conta: {formatElectionNumber(goalCoverage.goal)} ( + {usesMesaEstimate ? 'estimativa da mesa' : 'meta sugerida, decomposição da meta estadual'}) +

+
+ +
+
+ + {formatGoalCoverageRatioLabel(goalCoverage)} + + Cobertura da meta +
+ {goalCoverage.coverageRatio != null ? ( + // h-2 (vs. the shared default h-1): at 0% coverage — the most common + // early-campaign state — the empty track is the only visual signal, + // and a 4px hairline read as near-invisible in the E8 + // `/impeccable critique`. + + ) : null} +

+ {formatGoalCoverageDeficitLabel(goalCoverage)} +

+
+ +
+ + Teto do campo projeta quantos votos válidos o campo pode + alcançar em 2026. + + } + formula="Fórmula: votos do presidencial do campo em 2022 (1º turno), ajustados pelo crescimento de comparecimento projetado para a disputa de deputado federal." + /> + } + /> + + Captura mostra quanto do teto do campo Jorge Solla conquistou + em 2022. + + } + formula="Fórmula: votos de Solla (2022) ÷ teto do campo (presidencial 2022). Só diagnóstico — não entra na meta." + /> + } + /> + + Share intracampo mostra a fração dos votos do campo, só na + disputa de deputado federal, que foi para Jorge Solla nesse ano. + + } + formula="O denominador é o próprio campo nessa disputa — não o teto presidencial de 2022, que é o denominador da Captura." + /> + } + /> + + Roll-off mede quanto voto em branco/nulo a disputa de deputado + federal atrai a mais que a presidencial, no mesmo pleito. + + } + formula="Fórmula: (brancos + nulos, deputado federal 2022) − (brancos + nulos, presidencial 2022)." + /> + } + /> +
+ {suggestedGoal <= 0 ? ( +

+ Sem teto do campo projetado para decompor uma meta sugerida — cadastre a estimativa da + mesa manualmente. +

+ ) : null} +
+ ) +} diff --git a/src/components/campaign/MunicipalityHoverTooltip.tsx b/src/components/campaign/MunicipalityHoverTooltip.tsx index 32505803..501ca199 100644 --- a/src/components/campaign/MunicipalityHoverTooltip.tsx +++ b/src/components/campaign/MunicipalityHoverTooltip.tsx @@ -1,27 +1,82 @@ 'use client' -import type { ReactElement, ReactNode } from 'react' +import { cloneElement, useEffect, useRef, useState } from 'react' +import type { PointerEvent, ReactElement, ReactNode, Ref } from 'react' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip' -/** Hover/focus explanation with no extra chrome — wraps an existing control or heading. */ +/** + * Hover/focus explanation with no extra chrome — wraps an existing control or + * heading. Radix's `TooltipTrigger` deliberately ignores touch pointer + * events — no hover on touch, and a tap doesn't reliably focus a non-form + * element either — which otherwise makes the whole tooltip unreachable on + * phones (an `/impeccable critique` finding). The open state is controlled + * so a `pointerType === 'touch'` tap can explicitly toggle it; mouse hover + * and keyboard focus are untouched (Radix keeps driving `onOpenChange` for + * those exactly as before), so a **mouse** click — which already hovered the + * trigger on its way in — can't immediately re-close what hover just opened. + * + * Radix's Tooltip has no outside-tap dismiss layer (that's a Popover + * feature), so once opened by touch it would otherwise stay open until the + * page navigates. The `pointerdown`-outside listener below closes it — + * tapping a *different* metric's trigger counts as "outside" too, which is + * what keeps at most one of these tooltips open at a time. + */ +type TappableElement = ReactElement<{ + onPointerUp?: (event: PointerEvent) => void + ref?: Ref +}> + export const MunicipalityHoverTooltip = ({ content, children, side = 'bottom', align = 'center', + sideOffset = 4, }: { content: ReactNode - children: ReactElement + children: TappableElement side?: 'top' | 'right' | 'bottom' | 'left' align?: 'start' | 'center' | 'end' -}) => ( - - - {children} - - {content} - - - -) + sideOffset?: number +}) => { + const [open, setOpen] = useState(false) + const triggerRef = useRef(null) + + useEffect(() => { + if (!open) return + const closeIfOutside = (event: globalThis.PointerEvent) => { + if (event.pointerType !== 'touch') return + if (triggerRef.current?.contains(event.target as Node)) return + setOpen(false) + } + document.addEventListener('pointerdown', closeIfOutside) + return () => document.removeEventListener('pointerdown', closeIfOutside) + }, [open]) + + const trigger = cloneElement(children, { + ref: (node: HTMLElement | null) => { + triggerRef.current = node + }, + onPointerUp: (event: PointerEvent) => { + children.props.onPointerUp?.(event) + if (event.pointerType === 'touch') setOpen((current) => !current) + }, + }) + + return ( + + + {trigger} + + {content} + + + + ) +} diff --git a/src/components/campaign/MunicipalityList.tsx b/src/components/campaign/MunicipalityList.tsx index b7efc805..ab0dccb4 100644 --- a/src/components/campaign/MunicipalityList.tsx +++ b/src/components/campaign/MunicipalityList.tsx @@ -4,6 +4,7 @@ import Link from 'next/link' import { MunicipalityAdvisorAvatarStack } from '@/components/campaign/MunicipalityAdvisorAvatarStack' import { MunicipalityListAdvisorsControl } from '@/components/campaign/MunicipalityListAdvisorsControl' import { MunicipalityListExpectedVotesControl } from '@/components/campaign/MunicipalityListExpectedVotesControl' +import { MunicipalityListGoalCoverageCell } from '@/components/campaign/MunicipalityListGoalCoverageCell' import { MunicipalityListTrendControl } from '@/components/campaign/MunicipalityListTrendControl' import { MunicipalitySortableHead } from '@/components/campaign/MunicipalitySortableHead' import { Badge } from '@/components/ui/Badge' @@ -160,6 +161,14 @@ export const MunicipalityList = ({ /> +
+
Cobertura da meta
+
+ +
+
Assessoria
@@ -224,8 +233,9 @@ export const MunicipalityList = ({ Última atualização - Cobertura + Assessoria + Cobertura da meta ) : ( @@ -318,6 +328,12 @@ export const MunicipalityList = ({ {hasAdvisor ? 'Coberta' : 'Sem assessor'} + + + ) : ( diff --git a/src/components/campaign/MunicipalityListGoalCoverageCell.tsx b/src/components/campaign/MunicipalityListGoalCoverageCell.tsx new file mode 100644 index 00000000..afb1ef5a --- /dev/null +++ b/src/components/campaign/MunicipalityListGoalCoverageCell.tsx @@ -0,0 +1,47 @@ +'use client' + +import { useMunicipalityEstimateScenarioOptional } from '@/components/campaign/MunicipalityEstimateScenarioContext' +import { + formatGoalCoverageDeficitLabel, + formatGoalCoverageDeficitShortLabel, + formatGoalCoverageRatioLabel, + type MunicipalityGoalCoverage, +} from '@/utilities/goalCoverage' +import { DEFAULT_VOTE_ESTIMATE_SCENARIO, type VoteEstimateScenario } from '@/utilities/voteEstimate' + +/** + * E8 "conta da cadeira" list cell: reads the shared scenario picker (same + * pattern as `MunicipalityListExpectedVotesControl`) and shows the + * percent + deficit for that scenario, computed server-side for all three. + * + * `compact` (desktop table, dense) shows a short signed deficit with the + * full sentence as a `title` tooltip — same "abbreviate + title" pattern as + * `StaffMunicipalityVotesDisplay`'s "Nas lideranças" subline — so the column + * doesn't force a wide `whitespace-nowrap` cell. `default` (mobile cards, + * more room) spells the sentence out. + */ +export const MunicipalityListGoalCoverageCell = ({ + coverageByScenario, + layout = 'default', +}: { + coverageByScenario: Record + layout?: 'default' | 'compact' +}) => { + const scenarioContext = useMunicipalityEstimateScenarioOptional() + const activeScenario = scenarioContext?.scenario ?? DEFAULT_VOTE_ESTIMATE_SCENARIO + const coverage = coverageByScenario[activeScenario] + const deficitLabel = formatGoalCoverageDeficitLabel(coverage) + + return ( +
+ {formatGoalCoverageRatioLabel(coverage)} + {layout === 'compact' ? ( + + {formatGoalCoverageDeficitShortLabel(coverage)} + + ) : ( + {deficitLabel} + )} +
+ ) +} diff --git a/src/components/campaign/MunicipalityListOverview.tsx b/src/components/campaign/MunicipalityListOverview.tsx index 5869b45f..6a0ebba6 100644 --- a/src/components/campaign/MunicipalityListOverview.tsx +++ b/src/components/campaign/MunicipalityListOverview.tsx @@ -12,6 +12,11 @@ import { import { VoteEstimateScenarioStrip } from '@/components/campaign/VoteEstimateScenarioStrip' import { formatElectionNumber } from '@/lib/electionInsights' import { cn } from '@/lib/utils' +import { + formatGoalCoverageDeficitLabel, + formatGoalCoverageRatioLabel, + goalCoverageProgressPercent, +} from '@/utilities/goalCoverage' import type { MunicipalityListOverviewData } from '@/utilities/municipalityPageData' import { formatVoteEstimateEndpointsLabel, @@ -46,6 +51,7 @@ export const MunicipalityListOverview = ({ view }: { view: MunicipalityListOverv const endpointsLabel = formatVoteEstimateEndpointsLabel(scenarioTotals) const scenarioLabel = voteEstimateScenarioLabels[scenario] const hasScenarioTotals = hasAnyVoteEstimate(scenarioTotals) + const goalCoverage = view.goalCoverageByScenario[scenario] const heroDetail = (
@@ -117,6 +123,12 @@ export const MunicipalityListOverview = ({ view }: { view: MunicipalityListOverv ? Math.round((view.withAdvisorCount / view.municipalityCount) * 100) : undefined, }, + { + label: 'Cobertura da meta', + value: formatGoalCoverageRatioLabel(goalCoverage), + detail: formatGoalCoverageDeficitLabel(goalCoverage), + progress: goalCoverageProgressPercent(goalCoverage), + }, ]} /> diff --git a/src/components/campaign/MunicipalityStrategyCard.tsx b/src/components/campaign/MunicipalityStrategyCard.tsx index 04774786..c8252ea5 100644 --- a/src/components/campaign/MunicipalityStrategyCard.tsx +++ b/src/components/campaign/MunicipalityStrategyCard.tsx @@ -1,7 +1,6 @@ import { PencilIcon } from 'lucide-react' import Link from 'next/link' -import { StaffMunicipalityVotesDisplay } from '@/components/campaign/StaffMunicipalityVotesDisplay' import { StateDeputyChips } from '@/components/campaign/StateDeputyChips' import { Badge } from '@/components/ui/Badge' import { Button } from '@/components/ui/button' @@ -11,7 +10,6 @@ import { politicalTrendLabels, } from '@/utilities/municipalityUi' import type { MunicipalityDetailViewModel } from '@/utilities/municipalityViewModels' -import type { MunicipalityPledgeCoverageView } from '@/utilities/votePledgeData' const dateFormatter = new Intl.DateTimeFormat('pt-BR') @@ -19,12 +17,10 @@ export const MunicipalityStrategyCard = ({ strategy, municipalitySlug, canEdit, - pledgeCoverage, }: { strategy: NonNullable municipalitySlug: string canEdit: boolean - pledgeCoverage: MunicipalityPledgeCoverageView | null }) => { const trend = strategy.politicalTrend @@ -63,14 +59,6 @@ export const MunicipalityStrategyCard = ({ ) : null}
-
-

Votos estimados

- -
- {trend.status || trend.note ? (

Tendência política

diff --git a/src/globals/CampaignGoals.ts b/src/globals/CampaignGoals.ts new file mode 100644 index 00000000..12b6fe05 --- /dev/null +++ b/src/globals/CampaignGoals.ts @@ -0,0 +1,72 @@ +import { isCampaignStaff, isCampaignUnrestricted, isPayloadAdmin } from '@/utilities/campaignAccess' +import type { GlobalConfig } from 'payload' + +const slug = 'campaignGoals' + +/** + * State-level campaign goal used by E8 "conta da cadeira" to decompose a + * per-municipality suggested goal proportional to each municipality's + * projected field ceiling (`municipalityPotential.ts`). Editable by staff + * (piso do CG, sessão 2026-07-23: 150.000) rather than derived automatically — + * decomposition reads this value, it never writes back to it. + * + * No `afterChange` revalidation hook: `/campanha` is dynamic with + * authentication on every request (no ISR/ISR tag caches this global), and + * `campaignGoals` is not in the `revalidateRequest.ts` tag allowlist. Adding + * one here would be dead ceremony (see the E8 plan audit finding #4). + * + * Access is explicit (not Payload's "any authenticated user" default) because + * a `campaignUser` JWT reaches `/api/globals/*` directly: leaders and + * unauthenticated requests must be denied on read, and only coordinator/ + * candidate (`isCampaignUnrestricted`) may write the state goal. + */ +export const CampaignGoals: GlobalConfig = { + slug, + label: 'Metas da campanha', + admin: { + group: 'Campanha', + }, + access: { + read: ({ req: { user } }) => isPayloadAdmin(user) || isCampaignStaff(user), + update: ({ req: { user } }) => isPayloadAdmin(user) || isCampaignUnrestricted(user), + }, + fields: [ + { + name: 'stateGoal', + type: 'number', + label: 'Meta estadual (votos)', + required: true, + defaultValue: 150_000, + min: 0, + admin: { + description: + 'Piso decidido pela coordenação geral. A meta por município (E8) é decomposta proporcionalmente ao teto do campo projetado a partir deste valor.', + }, + }, + { + name: 'margin', + type: 'number', + label: 'Margem (%)', + min: 0, + admin: { + description: 'Margem de segurança sobre a meta estadual, para leitura da mesa (não altera a decomposição).', + }, + }, + { + name: 'baseYear', + type: 'number', + label: 'Ano de referência', + admin: { + description: 'Ano-base considerado pela coordenação ao fixar a meta estadual (contexto, não usado em cálculo).', + }, + }, + { + name: 'note', + type: 'textarea', + label: 'Observação', + admin: { + description: 'Contexto livre sobre a decisão da meta (ex.: data e instância que decidiu).', + }, + }, + ], +} diff --git a/src/lib/bahiaElectionAggregates.ts b/src/lib/bahiaElectionAggregates.ts index 0c12a99c..ba2f6d4d 100644 --- a/src/lib/bahiaElectionAggregates.ts +++ b/src/lib/bahiaElectionAggregates.ts @@ -6,16 +6,48 @@ import artifactJson from '@/lib/electionAggregates/bahia-federal-baseline.json' * `municipalityCatalog` geography the runtime uses (Salvador split by zone, * every other municipality whole — Camaçari included). * + * v2 (E8 "conta da cadeira"): adds the curated campo-parties federal nominal + * votes, federal T1 turnout/blank/null tally, and 2022 majoritarian + * (presidente/governador #13) votes+tally used for "teto do campo", + * "share intracampo" and roll-off. 2022-only for the majoritarian slice by + * design (E8's formulas anchor the field ceiling and roll-off to the single + * most recent majoritarian race) — the DB has majoritária seeded for + * 2014/2018 too (`pnpm db:seed:tse`, since 2026-07-24), but it isn't cut into + * this artifact; a future consumer that needs it extends `majoritarian2022` + * into a `majoritarianByYear` map. + * * Generated by `pnpm build:election-aggregates` from the locally seeded TSE * data — never computed at build or request time (see the script header for * the rationale). A snapshot test pins artifact keys ↔ catalog slugs. */ +/** Turnout/valid/blank/null tally cell (`municipalityElectoralBaseline.ts`'s `OfficeTallyCell` is this same type). */ +export type FederalBaselineTallyCell = { + comparecimento: number + votosValidos: number + votosBranco: number + votosNulo: number +} + +/** One 2022 majoritarian office (presidente/governador #13): votes + tally. */ +type MajoritarianOfficeCell = FederalBaselineTallyCell & { + votes: number +} + export type MunicipalityFederalBaseline = { /** TSE year (as string) → Solla nominal votes inside the municipality geography. */ votesByYear: Record /** TSE year (as string) → federal T1 valid votes inside the municipality geography. */ validVotesByYear: Record + /** TSE year (as string) → curated campo-parties (`campoParties.ts`) federal T1 nominal votes. */ + campoFederalVotesByYear: Record + /** TSE year (as string) → federal T1 turnout/valid/blank/null tally. */ + federalTallyByYear: Record + /** 2022-only majoritarian tickets (absent for older artifacts / unknown slugs). */ + majoritarian2022?: { + president: MajoritarianOfficeCell + governor: MajoritarianOfficeCell + } } type FederalBaselineArtifact = { @@ -33,7 +65,12 @@ export const FEDERAL_BASELINE_CANDIDATE_NUMBER = artifact.candidateNumber export const federalBaselineMunicipalitySlugs = (): string[] => Object.keys(artifact.municipalities) -const EMPTY_BASELINE: MunicipalityFederalBaseline = { votesByYear: {}, validVotesByYear: {} } +const EMPTY_BASELINE: MunicipalityFederalBaseline = { + votesByYear: {}, + validVotesByYear: {}, + campoFederalVotesByYear: {}, + federalTallyByYear: {}, +} /** * Baseline for one catalog municipality slug. Unknown slugs return an empty diff --git a/src/lib/campoParties.ts b/src/lib/campoParties.ts new file mode 100644 index 00000000..5cb5da66 --- /dev/null +++ b/src/lib/campoParties.ts @@ -0,0 +1,61 @@ +import { normalizePartySigla } from '@/lib/electionPartySpectrum' + +/** + * Curated "campo" (Solla/PT political field) parties by year, used for the + * deputado-federal "share intracampo" diagnostic (E8): of the votes that went + * to the field, how many went to Solla specifically. This is NOT the same + * concept as `electionPartySpectrum.ts` (ideological esquerda/centro/direita + * bucket, from the Bolognesi et al. expert survey) — every entry here MUST + * also be in the `esquerda` bucket (enforced by + * `tests/unit/campoParties.unit.spec.ts`), but the reverse isn't required: + * plenty of `esquerda`-bucket parties are not part of this specific ticket's + * field in a given year. + * + * Deliberately NOT inferred from the raw TSE `coalition` string on + * `electionCandidateVote`: Brazilian proportional "coligações" bundle + * opportunistic, ideologically unrelated allies purely to maximize the + * quotient. Confirmed against the locally seeded 2014/2018 data — Solla's own + * registered coalition that year also included PP, PR, PSD, PTB (2014) / + * PODE, PP, PR, PSD (2018), none of which belong in the political field. + * + * Sourcing: + * - 2014: coalition "MAIS MUDANÇAS, NOVAS CONQUISTAS" (BA, deputado federal) — + * PT's core-left partners inside it: PC do B, PDT. + * - 2018: coalition "FRENTE DO TRABALHO POR TODA BAHIA" (BA, deputado + * federal) — PT's core-left partners inside it: PC do B, PSB. + * - 2022: PT ran under the "Federação Brasil da Esperança — FE Brasil" + * (PT/PC do B/PV), a permanent partisan federation (TSE registered it + * 2022-05-24) — not a temporary coalition. Verified via TSE candidate + * filing (Folha "Ficha do candidato" 2022) and press coverage (Estadão, + * Bahia Notícias). PSB backed the same governismo ticket for governor that + * year but ran its own deputado-federal slate outside the federation, so it + * is excluded from the 2022 federal-deputy field (would double count a + * separate slate as "ours"). + * - 2026: FE Brasil is legally bound to stay unified through the end of the + * 2023–2026 mandate, so it carries over unchanged. Revisit once 2026 + * deputado-federal candidacies are registered (TSE `consulta_cand_2026`). + */ +export type CampoElectionYear = 2014 | 2018 | 2022 | 2026 + +const CAMPO_PARTIES_BY_YEAR: Readonly> = { + 2014: ['PT', 'PCDOB', 'PDT'], + 2018: ['PT', 'PCDOB', 'PSB'], + 2022: ['PT', 'PCDOB', 'PV'], + 2026: ['PT', 'PCDOB', 'PV'], +} + +export const CAMPO_ELECTION_YEARS = Object.keys(CAMPO_PARTIES_BY_YEAR).map(Number) as CampoElectionYear[] + +export const isCampoElectionYear = (year: number): year is CampoElectionYear => + (CAMPO_ELECTION_YEARS as readonly number[]).includes(year) + +/** Campo party siglas (already normalized) for one year, or [] for an unknown year. */ +export const campoPartiesForYear = (year: number): readonly string[] => + isCampoElectionYear(year) ? CAMPO_PARTIES_BY_YEAR[year] : [] + +/** Whether a TSE party sigla belongs to the curated field for that year. */ +export const isCampoParty = (party: string | null | undefined, year: number): boolean => { + const normalized = normalizePartySigla(party) + if (!normalized) return false + return campoPartiesForYear(year).includes(normalized) +} diff --git a/src/lib/electionAggregates/bahia-federal-baseline.json b/src/lib/electionAggregates/bahia-federal-baseline.json index 9d3ea22a..cf0c87c5 100644 --- a/src/lib/electionAggregates/bahia-federal-baseline.json +++ b/src/lib/electionAggregates/bahia-federal-baseline.json @@ -18,6 +18,47 @@ "2014": 4086, "2018": 3963, "2022": 4642 + }, + "campoFederalVotesByYear": { + "2014": 428, + "2018": 1503, + "2022": 259 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4998, + "votosValidos": 4086, + "votosBranco": 257, + "votosNulo": 248 + }, + "2018": { + "comparecimento": 5085, + "votosValidos": 3963, + "votosBranco": 224, + "votosNulo": 521 + }, + "2022": { + "comparecimento": 5460, + "votosValidos": 4642, + "votosBranco": 236, + "votosNulo": 320 + } + }, + "majoritarian2022": { + "president": { + "votes": 3274, + "comparecimento": 5460, + "votosValidos": 5057, + "votosBranco": 97, + "votosNulo": 306 + }, + "governor": { + "votes": 2137, + "comparecimento": 5460, + "votosValidos": 4939, + "votosBranco": 138, + "votosNulo": 381 + } } }, "abare": { @@ -30,6 +71,47 @@ "2014": 8528, "2018": 8976, "2022": 11213 + }, + "campoFederalVotesByYear": { + "2014": 1810, + "2018": 3924, + "2022": 4474 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9961, + "votosValidos": 8528, + "votosBranco": 253, + "votosNulo": 291 + }, + "2018": { + "comparecimento": 10313, + "votosValidos": 8976, + "votosBranco": 162, + "votosNulo": 553 + }, + "2022": { + "comparecimento": 11951, + "votosValidos": 11213, + "votosBranco": 118, + "votosNulo": 152 + } + }, + "majoritarian2022": { + "president": { + "votes": 8798, + "comparecimento": 11965, + "votosValidos": 11526, + "votosBranco": 95, + "votosNulo": 344 + }, + "governor": { + "votes": 7515, + "comparecimento": 11951, + "votosValidos": 11295, + "votosBranco": 122, + "votosNulo": 534 + } } }, "acajutiba": { @@ -42,6 +124,47 @@ "2014": 6107, "2018": 6622, "2022": 8138 + }, + "campoFederalVotesByYear": { + "2014": 944, + "2018": 836, + "2022": 1082 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8080, + "votosValidos": 6107, + "votosBranco": 717, + "votosNulo": 412 + }, + "2018": { + "comparecimento": 8244, + "votosValidos": 6622, + "votosBranco": 331, + "votosNulo": 732 + }, + "2022": { + "comparecimento": 9222, + "votosValidos": 8138, + "votosBranco": 352, + "votosNulo": 360 + } + }, + "majoritarian2022": { + "president": { + "votes": 6794, + "comparecimento": 9222, + "votosValidos": 8791, + "votosBranco": 109, + "votosNulo": 322 + }, + "governor": { + "votes": 5081, + "comparecimento": 9222, + "votosValidos": 8544, + "votosBranco": 185, + "votosNulo": 492 + } } }, "adustina": { @@ -54,6 +177,47 @@ "2014": 6769, "2018": 7394, "2022": 8592 + }, + "campoFederalVotesByYear": { + "2014": 1637, + "2018": 1381, + "2022": 1250 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8491, + "votosValidos": 6769, + "votosBranco": 646, + "votosNulo": 324 + }, + "2018": { + "comparecimento": 8881, + "votosValidos": 7394, + "votosBranco": 345, + "votosNulo": 504 + }, + "2022": { + "comparecimento": 9681, + "votosValidos": 8592, + "votosBranco": 417, + "votosNulo": 261 + } + }, + "majoritarian2022": { + "president": { + "votes": 7373, + "comparecimento": 9681, + "votosValidos": 9207, + "votosBranco": 116, + "votosNulo": 358 + }, + "governor": { + "votes": 4171, + "comparecimento": 9681, + "votosValidos": 8897, + "votosBranco": 247, + "votosNulo": 537 + } } }, "agua-fria": { @@ -66,6 +230,47 @@ "2014": 7233, "2018": 6839, "2022": 8352 + }, + "campoFederalVotesByYear": { + "2014": 2099, + "2018": 2274, + "2022": 1876 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8845, + "votosValidos": 7233, + "votosBranco": 367, + "votosNulo": 444 + }, + "2018": { + "comparecimento": 8873, + "votosValidos": 6839, + "votosBranco": 256, + "votosNulo": 769 + }, + "2022": { + "comparecimento": 9756, + "votosValidos": 8352, + "votosBranco": 264, + "votosNulo": 485 + } + }, + "majoritarian2022": { + "president": { + "votes": 7125, + "comparecimento": 9756, + "votosValidos": 9061, + "votosBranco": 140, + "votosNulo": 555 + }, + "governor": { + "votes": 5531, + "comparecimento": 9756, + "votosValidos": 8701, + "votosBranco": 211, + "votosNulo": 843 + } } }, "aiquara": { @@ -78,6 +283,47 @@ "2014": 2519, "2018": 2447, "2022": 2825 + }, + "campoFederalVotesByYear": { + "2014": 918, + "2018": 114, + "2022": 607 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3043, + "votosValidos": 2519, + "votosBranco": 114, + "votosNulo": 95 + }, + "2018": { + "comparecimento": 2916, + "votosValidos": 2447, + "votosBranco": 67, + "votosNulo": 158 + }, + "2022": { + "comparecimento": 3126, + "votosValidos": 2825, + "votosBranco": 88, + "votosNulo": 82 + } + }, + "majoritarian2022": { + "president": { + "votes": 2193, + "comparecimento": 3126, + "votosValidos": 2969, + "votosBranco": 34, + "votosNulo": 123 + }, + "governor": { + "votes": 1618, + "comparecimento": 3126, + "votosValidos": 2909, + "votosBranco": 49, + "votosNulo": 168 + } } }, "alagoinhas": { @@ -90,6 +336,47 @@ "2014": 28443, "2018": 63397, "2022": 72348 + }, + "campoFederalVotesByYear": { + "2014": 6042, + "2018": 25845, + "2022": 24292 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 38678, + "votosValidos": 28443, + "votosBranco": 4546, + "votosNulo": 2939 + }, + "2018": { + "comparecimento": 86000, + "votosValidos": 63397, + "votosBranco": 5106, + "votosNulo": 12651 + }, + "2022": { + "comparecimento": 89588, + "votosValidos": 72348, + "votosBranco": 6847, + "votosNulo": 6126 + } + }, + "majoritarian2022": { + "president": { + "votes": 56247, + "comparecimento": 89740, + "votosValidos": 84641, + "votosBranco": 1708, + "votosNulo": 3391 + }, + "governor": { + "votes": 33205, + "comparecimento": 89588, + "votosValidos": 80245, + "votosBranco": 3769, + "votosNulo": 5564 + } } }, "alcobaca": { @@ -102,6 +389,47 @@ "2014": 8535, "2018": 9165, "2022": 12011 + }, + "campoFederalVotesByYear": { + "2014": 1878, + "2018": 2783, + "2022": 2591 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12019, + "votosValidos": 8535, + "votosBranco": 1010, + "votosNulo": 1369 + }, + "2018": { + "comparecimento": 11640, + "votosValidos": 9165, + "votosBranco": 601, + "votosNulo": 944 + }, + "2022": { + "comparecimento": 13528, + "votosValidos": 12011, + "votosBranco": 543, + "votosNulo": 403 + } + }, + "majoritarian2022": { + "president": { + "votes": 8984, + "comparecimento": 13528, + "votosValidos": 12979, + "votosBranco": 167, + "votosNulo": 382 + }, + "governor": { + "votes": 7339, + "comparecimento": 13528, + "votosValidos": 12324, + "votosBranco": 473, + "votosNulo": 730 + } } }, "almadina": { @@ -114,6 +442,47 @@ "2014": 2874, "2018": 2840, "2022": 3343 + }, + "campoFederalVotesByYear": { + "2014": 712, + "2018": 135, + "2022": 2025 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3576, + "votosValidos": 2874, + "votosBranco": 165, + "votosNulo": 133 + }, + "2018": { + "comparecimento": 3379, + "votosValidos": 2840, + "votosBranco": 66, + "votosNulo": 182 + }, + "2022": { + "comparecimento": 3649, + "votosValidos": 3343, + "votosBranco": 60, + "votosNulo": 73 + } + }, + "majoritarian2022": { + "president": { + "votes": 2736, + "comparecimento": 3649, + "votosValidos": 3485, + "votosBranco": 27, + "votosNulo": 137 + }, + "governor": { + "votes": 2103, + "comparecimento": 3649, + "votosValidos": 3409, + "votosBranco": 37, + "votosNulo": 203 + } } }, "amargosa": { @@ -126,6 +495,47 @@ "2014": 14554, "2018": 15281, "2022": 19068 + }, + "campoFederalVotesByYear": { + "2014": 5667, + "2018": 8036, + "2022": 8362 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18901, + "votosValidos": 14554, + "votosBranco": 1687, + "votosNulo": 1127 + }, + "2018": { + "comparecimento": 20028, + "votosValidos": 15281, + "votosBranco": 939, + "votosNulo": 2513 + }, + "2022": { + "comparecimento": 22057, + "votosValidos": 19068, + "votosBranco": 998, + "votosNulo": 1213 + } + }, + "majoritarian2022": { + "president": { + "votes": 13958, + "comparecimento": 22059, + "votosValidos": 20923, + "votosBranco": 342, + "votosNulo": 794 + }, + "governor": { + "votes": 10648, + "comparecimento": 22057, + "votosValidos": 19914, + "votosBranco": 762, + "votosNulo": 1381 + } } }, "amelia-rodrigues": { @@ -138,6 +548,47 @@ "2014": 0, "2018": 11120, "2022": 13101 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 2152, + "2022": 2375 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 14658, + "votosValidos": 11120, + "votosBranco": 739, + "votosNulo": 1753 + }, + "2022": { + "comparecimento": 15717, + "votosValidos": 13101, + "votosBranco": 1057, + "votosNulo": 869 + } + }, + "majoritarian2022": { + "president": { + "votes": 11548, + "comparecimento": 15717, + "votosValidos": 14904, + "votosBranco": 270, + "votosNulo": 543 + }, + "governor": { + "votes": 7463, + "comparecimento": 15717, + "votosValidos": 14386, + "votosBranco": 480, + "votosNulo": 850 + } } }, "america-dourada": { @@ -150,6 +601,47 @@ "2014": 7387, "2018": 7770, "2022": 9267 + }, + "campoFederalVotesByYear": { + "2014": 2289, + "2018": 1608, + "2022": 2320 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8816, + "votosValidos": 7387, + "votosBranco": 411, + "votosNulo": 300 + }, + "2018": { + "comparecimento": 9149, + "votosValidos": 7770, + "votosBranco": 239, + "votosNulo": 336 + }, + "2022": { + "comparecimento": 10145, + "votosValidos": 9267, + "votosBranco": 342, + "votosNulo": 226 + } + }, + "majoritarian2022": { + "president": { + "votes": 8144, + "comparecimento": 10145, + "votosValidos": 9855, + "votosBranco": 75, + "votosNulo": 215 + }, + "governor": { + "votes": 7081, + "comparecimento": 10145, + "votosValidos": 9533, + "votosBranco": 194, + "votosNulo": 418 + } } }, "anage": { @@ -162,6 +654,47 @@ "2014": 11072, "2018": 10914, "2022": 13066 + }, + "campoFederalVotesByYear": { + "2014": 5872, + "2018": 5432, + "2022": 4014 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13304, + "votosValidos": 11072, + "votosBranco": 582, + "votosNulo": 386 + }, + "2018": { + "comparecimento": 13629, + "votosValidos": 10914, + "votosBranco": 444, + "votosNulo": 1002 + }, + "2022": { + "comparecimento": 14879, + "votosValidos": 13066, + "votosBranco": 509, + "votosNulo": 496 + } + }, + "majoritarian2022": { + "president": { + "votes": 10563, + "comparecimento": 14880, + "votosValidos": 14056, + "votosBranco": 137, + "votosNulo": 687 + }, + "governor": { + "votes": 8563, + "comparecimento": 14879, + "votosValidos": 13596, + "votosBranco": 273, + "votosNulo": 1009 + } } }, "andarai": { @@ -174,6 +707,47 @@ "2014": 5560, "2018": 5924, "2022": 6696 + }, + "campoFederalVotesByYear": { + "2014": 1989, + "2018": 3985, + "2022": 853 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6753, + "votosValidos": 5560, + "votosBranco": 337, + "votosNulo": 246 + }, + "2018": { + "comparecimento": 7318, + "votosValidos": 5924, + "votosBranco": 204, + "votosNulo": 562 + }, + "2022": { + "comparecimento": 7772, + "votosValidos": 6696, + "votosBranco": 308, + "votosNulo": 380 + } + }, + "majoritarian2022": { + "president": { + "votes": 6190, + "comparecimento": 7772, + "votosValidos": 7296, + "votosBranco": 81, + "votosNulo": 395 + }, + "governor": { + "votes": 4868, + "comparecimento": 7772, + "votosValidos": 6968, + "votosBranco": 173, + "votosNulo": 630 + } } }, "andorinha": { @@ -186,6 +760,47 @@ "2014": 7526, "2018": 6234, "2022": 9033 + }, + "campoFederalVotesByYear": { + "2014": 2353, + "2018": 2253, + "2022": 3747 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9249, + "votosValidos": 7526, + "votosBranco": 573, + "votosNulo": 307 + }, + "2018": { + "comparecimento": 9450, + "votosValidos": 6234, + "votosBranco": 355, + "votosNulo": 2092 + }, + "2022": { + "comparecimento": 10164, + "votosValidos": 9033, + "votosBranco": 409, + "votosNulo": 284 + } + }, + "majoritarian2022": { + "president": { + "votes": 8676, + "comparecimento": 10166, + "votosValidos": 9761, + "votosBranco": 100, + "votosNulo": 305 + }, + "governor": { + "votes": 7551, + "comparecimento": 10164, + "votosValidos": 9472, + "votosBranco": 193, + "votosNulo": 499 + } } }, "angical": { @@ -198,6 +813,47 @@ "2014": 7106, "2018": 8205, "2022": 9286 + }, + "campoFederalVotesByYear": { + "2014": 1604, + "2018": 2395, + "2022": 1356 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9267, + "votosValidos": 7106, + "votosBranco": 392, + "votosNulo": 968 + }, + "2018": { + "comparecimento": 9730, + "votosValidos": 8205, + "votosBranco": 250, + "votosNulo": 575 + }, + "2022": { + "comparecimento": 10143, + "votosValidos": 9286, + "votosBranco": 232, + "votosNulo": 246 + } + }, + "majoritarian2022": { + "president": { + "votes": 7497, + "comparecimento": 10143, + "votosValidos": 9782, + "votosBranco": 70, + "votosNulo": 291 + }, + "governor": { + "votes": 5257, + "comparecimento": 10143, + "votosValidos": 9459, + "votosBranco": 186, + "votosNulo": 498 + } } }, "anguera": { @@ -210,6 +866,47 @@ "2014": 0, "2018": 0, "2022": 6422 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 0, + "2022": 2103 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2022": { + "comparecimento": 7448, + "votosValidos": 6422, + "votosBranco": 407, + "votosNulo": 284 + } + }, + "majoritarian2022": { + "president": { + "votes": 5840, + "comparecimento": 7449, + "votosValidos": 7105, + "votosBranco": 99, + "votosNulo": 245 + }, + "governor": { + "votes": 4930, + "comparecimento": 7448, + "votosValidos": 6876, + "votosBranco": 195, + "votosNulo": 377 + } } }, "antas": { @@ -222,6 +919,47 @@ "2014": 6781, "2018": 7223, "2022": 7738 + }, + "campoFederalVotesByYear": { + "2014": 370, + "2018": 5795, + "2022": 226 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7777, + "votosValidos": 6781, + "votosBranco": 272, + "votosNulo": 183 + }, + "2018": { + "comparecimento": 8062, + "votosValidos": 7223, + "votosBranco": 131, + "votosNulo": 366 + }, + "2022": { + "comparecimento": 8465, + "votosValidos": 7738, + "votosBranco": 216, + "votosNulo": 199 + } + }, + "majoritarian2022": { + "president": { + "votes": 5699, + "comparecimento": 8465, + "votosValidos": 8125, + "votosBranco": 77, + "votosNulo": 263 + }, + "governor": { + "votes": 2871, + "comparecimento": 8465, + "votosValidos": 7968, + "votosBranco": 114, + "votosNulo": 383 + } } }, "antonio-cardoso": { @@ -234,6 +972,47 @@ "2014": 6685, "2018": 6498, "2022": 8279 + }, + "campoFederalVotesByYear": { + "2014": 1606, + "2018": 3666, + "2022": 4318 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8482, + "votosValidos": 6685, + "votosBranco": 608, + "votosNulo": 402 + }, + "2018": { + "comparecimento": 9306, + "votosValidos": 6498, + "votosBranco": 317, + "votosNulo": 713 + }, + "2022": { + "comparecimento": 9497, + "votosValidos": 8279, + "votosBranco": 418, + "votosNulo": 359 + } + }, + "majoritarian2022": { + "president": { + "votes": 8080, + "comparecimento": 9497, + "votosValidos": 9155, + "votosBranco": 85, + "votosNulo": 257 + }, + "governor": { + "votes": 6026, + "comparecimento": 9497, + "votosValidos": 8866, + "votosBranco": 209, + "votosNulo": 421 + } } }, "antonio-goncalves": { @@ -246,6 +1025,47 @@ "2014": 4896, "2018": 4716, "2022": 5989 + }, + "campoFederalVotesByYear": { + "2014": 945, + "2018": 612, + "2022": 1166 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5844, + "votosValidos": 4896, + "votosBranco": 262, + "votosNulo": 185 + }, + "2018": { + "comparecimento": 6198, + "votosValidos": 4716, + "votosBranco": 261, + "votosNulo": 806 + }, + "2022": { + "comparecimento": 6769, + "votosValidos": 5989, + "votosBranco": 302, + "votosNulo": 202 + } + }, + "majoritarian2022": { + "president": { + "votes": 4885, + "comparecimento": 6769, + "votosValidos": 6491, + "votosBranco": 65, + "votosNulo": 213 + }, + "governor": { + "votes": 4128, + "comparecimento": 6769, + "votosValidos": 6248, + "votosBranco": 170, + "votosNulo": 351 + } } }, "apora": { @@ -258,6 +1078,47 @@ "2014": 7255, "2018": 7399, "2022": 9233 + }, + "campoFederalVotesByYear": { + "2014": 2179, + "2018": 2887, + "2022": 2864 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9079, + "votosValidos": 7255, + "votosBranco": 683, + "votosNulo": 335 + }, + "2018": { + "comparecimento": 9145, + "votosValidos": 7399, + "votosBranco": 349, + "votosNulo": 752 + }, + "2022": { + "comparecimento": 10489, + "votosValidos": 9233, + "votosBranco": 344, + "votosNulo": 329 + } + }, + "majoritarian2022": { + "president": { + "votes": 7625, + "comparecimento": 10489, + "votosValidos": 9941, + "votosBranco": 135, + "votosNulo": 413 + }, + "governor": { + "votes": 6287, + "comparecimento": 10489, + "votosValidos": 9652, + "votosBranco": 194, + "votosNulo": 643 + } } }, "apuarema": { @@ -270,6 +1131,47 @@ "2014": 3134, "2018": 3616, "2022": 4283 + }, + "campoFederalVotesByYear": { + "2014": 965, + "2018": 766, + "2022": 310 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3797, + "votosValidos": 3134, + "votosBranco": 132, + "votosNulo": 147 + }, + "2018": { + "comparecimento": 4298, + "votosValidos": 3616, + "votosBranco": 75, + "votosNulo": 283 + }, + "2022": { + "comparecimento": 4711, + "votosValidos": 4283, + "votosBranco": 98, + "votosNulo": 135 + } + }, + "majoritarian2022": { + "president": { + "votes": 3122, + "comparecimento": 4711, + "votosValidos": 4440, + "votosBranco": 45, + "votosNulo": 226 + }, + "governor": { + "votes": 2482, + "comparecimento": 4711, + "votosValidos": 4311, + "votosBranco": 77, + "votosNulo": 323 + } } }, "aracas": { @@ -282,6 +1184,47 @@ "2014": 0, "2018": 6101, "2022": 6864 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3339, + "2022": 2050 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 7656, + "votosValidos": 6101, + "votosBranco": 358, + "votosNulo": 651 + }, + "2022": { + "comparecimento": 8046, + "votosValidos": 6864, + "votosBranco": 450, + "votosNulo": 337 + } + }, + "majoritarian2022": { + "president": { + "votes": 6089, + "comparecimento": 8046, + "votosValidos": 7652, + "votosBranco": 108, + "votosNulo": 286 + }, + "governor": { + "votes": 3733, + "comparecimento": 8046, + "votosValidos": 7451, + "votosBranco": 181, + "votosNulo": 414 + } } }, "aracatu": { @@ -294,6 +1237,47 @@ "2014": 7646, "2018": 8164, "2022": 9101 + }, + "campoFederalVotesByYear": { + "2014": 623, + "2018": 919, + "2022": 1046 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9028, + "votosValidos": 7646, + "votosBranco": 364, + "votosNulo": 231 + }, + "2018": { + "comparecimento": 9570, + "votosValidos": 8164, + "votosBranco": 303, + "votosNulo": 415 + }, + "2022": { + "comparecimento": 10246, + "votosValidos": 9101, + "votosBranco": 426, + "votosNulo": 260 + } + }, + "majoritarian2022": { + "president": { + "votes": 7610, + "comparecimento": 10246, + "votosValidos": 9738, + "votosBranco": 156, + "votosNulo": 352 + }, + "governor": { + "votes": 6373, + "comparecimento": 10246, + "votosValidos": 9421, + "votosBranco": 264, + "votosNulo": 561 + } } }, "araci": { @@ -306,6 +1290,47 @@ "2014": 22952, "2018": 22638, "2022": 26876 + }, + "campoFederalVotesByYear": { + "2014": 11208, + "2018": 4728, + "2022": 3200 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 26859, + "votosValidos": 22952, + "votosBranco": 1038, + "votosNulo": 666 + }, + "2018": { + "comparecimento": 27399, + "votosValidos": 22638, + "votosBranco": 890, + "votosNulo": 1551 + }, + "2022": { + "comparecimento": 29780, + "votosValidos": 26876, + "votosBranco": 891, + "votosNulo": 748 + } + }, + "majoritarian2022": { + "president": { + "votes": 23385, + "comparecimento": 29780, + "votosValidos": 28471, + "votosBranco": 296, + "votosNulo": 1013 + }, + "governor": { + "votes": 18820, + "comparecimento": 29780, + "votosValidos": 27211, + "votosBranco": 707, + "votosNulo": 1861 + } } }, "aramari": { @@ -318,6 +1343,47 @@ "2014": 5496, "2018": 5774, "2022": 6444 + }, + "campoFederalVotesByYear": { + "2014": 556, + "2018": 1300, + "2022": 1937 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6657, + "votosValidos": 5496, + "votosBranco": 442, + "votosNulo": 267 + }, + "2018": { + "comparecimento": 7094, + "votosValidos": 5774, + "votosBranco": 288, + "votosNulo": 587 + }, + "2022": { + "comparecimento": 7444, + "votosValidos": 6444, + "votosBranco": 355, + "votosNulo": 312 + } + }, + "majoritarian2022": { + "president": { + "votes": 5832, + "comparecimento": 7444, + "votosValidos": 7037, + "votosBranco": 115, + "votosNulo": 292 + }, + "governor": { + "votes": 3807, + "comparecimento": 7444, + "votosValidos": 6787, + "votosBranco": 206, + "votosNulo": 451 + } } }, "arataca": { @@ -330,6 +1396,47 @@ "2014": 3845, "2018": 4014, "2022": 4296 + }, + "campoFederalVotesByYear": { + "2014": 861, + "2018": 1468, + "2022": 408 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4567, + "votosValidos": 3845, + "votosBranco": 109, + "votosNulo": 120 + }, + "2018": { + "comparecimento": 4601, + "votosValidos": 4014, + "votosBranco": 81, + "votosNulo": 198 + }, + "2022": { + "comparecimento": 4658, + "votosValidos": 4296, + "votosBranco": 90, + "votosNulo": 93 + } + }, + "majoritarian2022": { + "president": { + "votes": 3091, + "comparecimento": 4658, + "votosValidos": 4471, + "votosBranco": 27, + "votosNulo": 160 + }, + "governor": { + "votes": 2260, + "comparecimento": 4658, + "votosValidos": 4390, + "votosBranco": 66, + "votosNulo": 202 + } } }, "aratuipe": { @@ -342,6 +1449,47 @@ "2014": 4024, "2018": 4676, "2022": 5907 + }, + "campoFederalVotesByYear": { + "2014": 917, + "2018": 956, + "2022": 2910 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5747, + "votosValidos": 4024, + "votosBranco": 358, + "votosNulo": 792 + }, + "2018": { + "comparecimento": 5850, + "votosValidos": 4676, + "votosBranco": 259, + "votosNulo": 407 + }, + "2022": { + "comparecimento": 6632, + "votosValidos": 5907, + "votosBranco": 264, + "votosNulo": 238 + } + }, + "majoritarian2022": { + "president": { + "votes": 5022, + "comparecimento": 6632, + "votosValidos": 6312, + "votosBranco": 112, + "votosNulo": 208 + }, + "governor": { + "votes": 3747, + "comparecimento": 6632, + "votosValidos": 6175, + "votosBranco": 125, + "votosNulo": 332 + } } }, "aurelino-leal": { @@ -354,6 +1502,47 @@ "2014": 5213, "2018": 6142, "2022": 6660 + }, + "campoFederalVotesByYear": { + "2014": 616, + "2018": 1304, + "2022": 807 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6403, + "votosValidos": 5213, + "votosBranco": 176, + "votosNulo": 285 + }, + "2018": { + "comparecimento": 7067, + "votosValidos": 6142, + "votosBranco": 156, + "votosNulo": 270 + }, + "2022": { + "comparecimento": 7311, + "votosValidos": 6660, + "votosBranco": 205, + "votosNulo": 142 + } + }, + "majoritarian2022": { + "president": { + "votes": 5086, + "comparecimento": 7311, + "votosValidos": 7061, + "votosBranco": 59, + "votosNulo": 191 + }, + "governor": { + "votes": 3126, + "comparecimento": 7311, + "votosValidos": 6872, + "votosBranco": 119, + "votosNulo": 320 + } } }, "baianopolis": { @@ -366,6 +1555,47 @@ "2014": 0, "2018": 7527, "2022": 8944 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1123, + "2022": 312 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 9016, + "votosValidos": 7527, + "votosBranco": 337, + "votosNulo": 450 + }, + "2022": { + "comparecimento": 9762, + "votosValidos": 8944, + "votosBranco": 280, + "votosNulo": 187 + } + }, + "majoritarian2022": { + "president": { + "votes": 6815, + "comparecimento": 9762, + "votosValidos": 9297, + "votosBranco": 116, + "votosNulo": 349 + }, + "governor": { + "votes": 4540, + "comparecimento": 9762, + "votosValidos": 8975, + "votosBranco": 289, + "votosNulo": 496 + } } }, "baixa-grande": { @@ -378,6 +1608,47 @@ "2014": 8676, "2018": 8582, "2022": 9630 + }, + "campoFederalVotesByYear": { + "2014": 3067, + "2018": 2370, + "2022": 1904 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11200, + "votosValidos": 8676, + "votosBranco": 803, + "votosNulo": 567 + }, + "2018": { + "comparecimento": 11022, + "votosValidos": 8582, + "votosBranco": 472, + "votosNulo": 1021 + }, + "2022": { + "comparecimento": 11612, + "votosValidos": 9630, + "votosBranco": 683, + "votosNulo": 672 + } + }, + "majoritarian2022": { + "president": { + "votes": 7404, + "comparecimento": 11612, + "votosValidos": 10725, + "votosBranco": 226, + "votosNulo": 661 + }, + "governor": { + "votes": 5160, + "comparecimento": 11612, + "votosValidos": 10305, + "votosBranco": 335, + "votosNulo": 972 + } } }, "banzae": { @@ -390,6 +1661,47 @@ "2014": 5940, "2018": 6740, "2022": 7802 + }, + "campoFederalVotesByYear": { + "2014": 452, + "2018": 507, + "2022": 230 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6939, + "votosValidos": 5940, + "votosBranco": 328, + "votosNulo": 158 + }, + "2018": { + "comparecimento": 7775, + "votosValidos": 6740, + "votosBranco": 224, + "votosNulo": 282 + }, + "2022": { + "comparecimento": 8292, + "votosValidos": 7802, + "votosBranco": 128, + "votosNulo": 118 + } + }, + "majoritarian2022": { + "president": { + "votes": 6093, + "comparecimento": 8292, + "votosValidos": 7941, + "votosBranco": 80, + "votosNulo": 271 + }, + "governor": { + "votes": 4626, + "comparecimento": 8292, + "votosValidos": 7773, + "votosBranco": 120, + "votosNulo": 399 + } } }, "barra": { @@ -402,6 +1714,47 @@ "2014": 21029, "2018": 21699, "2022": 25463 + }, + "campoFederalVotesByYear": { + "2014": 3448, + "2018": 3408, + "2022": 4512 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 25183, + "votosValidos": 21029, + "votosBranco": 697, + "votosNulo": 1047 + }, + "2018": { + "comparecimento": 25936, + "votosValidos": 21699, + "votosBranco": 552, + "votosNulo": 948 + }, + "2022": { + "comparecimento": 27918, + "votosValidos": 25463, + "votosBranco": 580, + "votosNulo": 438 + } + }, + "majoritarian2022": { + "president": { + "votes": 21605, + "comparecimento": 27918, + "votosValidos": 26749, + "votosBranco": 210, + "votosNulo": 959 + }, + "governor": { + "votes": 13625, + "comparecimento": 27918, + "votosValidos": 26073, + "votosBranco": 364, + "votosNulo": 1479 + } } }, "barra-da-estiva": { @@ -414,6 +1767,47 @@ "2014": 12127, "2018": 11723, "2022": 14721 + }, + "campoFederalVotesByYear": { + "2014": 381, + "2018": 1907, + "2022": 810 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 14153, + "votosValidos": 12127, + "votosBranco": 872, + "votosNulo": 345 + }, + "2018": { + "comparecimento": 15159, + "votosValidos": 11723, + "votosBranco": 744, + "votosNulo": 1882 + }, + "2022": { + "comparecimento": 16790, + "votosValidos": 14721, + "votosBranco": 836, + "votosNulo": 649 + } + }, + "majoritarian2022": { + "president": { + "votes": 11769, + "comparecimento": 16790, + "votosValidos": 15849, + "votosBranco": 264, + "votosNulo": 677 + }, + "governor": { + "votes": 8694, + "comparecimento": 16790, + "votosValidos": 15200, + "votosBranco": 543, + "votosNulo": 1046 + } } }, "barra-do-choca": { @@ -426,6 +1820,47 @@ "2014": 15236, "2018": 16648, "2022": 19584 + }, + "campoFederalVotesByYear": { + "2014": 3001, + "2018": 3902, + "2022": 2562 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18839, + "votosValidos": 15236, + "votosBranco": 1200, + "votosNulo": 733 + }, + "2018": { + "comparecimento": 20697, + "votosValidos": 16648, + "votosBranco": 822, + "votosNulo": 1728 + }, + "2022": { + "comparecimento": 22330, + "votosValidos": 19584, + "votosBranco": 954, + "votosNulo": 817 + } + }, + "majoritarian2022": { + "president": { + "votes": 16219, + "comparecimento": 22330, + "votosValidos": 21084, + "votosBranco": 255, + "votosNulo": 991 + }, + "governor": { + "votes": 13579, + "comparecimento": 22330, + "votosValidos": 20463, + "votosBranco": 460, + "votosNulo": 1405 + } } }, "barra-do-mendes": { @@ -438,6 +1873,47 @@ "2014": 5969, "2018": 6601, "2022": 8486 + }, + "campoFederalVotesByYear": { + "2014": 1975, + "2018": 2134, + "2022": 1988 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8028, + "votosValidos": 5969, + "votosBranco": 629, + "votosNulo": 684 + }, + "2018": { + "comparecimento": 8813, + "votosValidos": 6601, + "votosBranco": 364, + "votosNulo": 1139 + }, + "2022": { + "comparecimento": 9876, + "votosValidos": 8486, + "votosBranco": 493, + "votosNulo": 501 + } + }, + "majoritarian2022": { + "president": { + "votes": 8342, + "comparecimento": 9877, + "votosValidos": 9536, + "votosBranco": 97, + "votosNulo": 244 + }, + "governor": { + "votes": 6622, + "comparecimento": 9876, + "votosValidos": 9114, + "votosBranco": 226, + "votosNulo": 533 + } } }, "barra-do-rocha": { @@ -450,6 +1926,47 @@ "2014": 0, "2018": 2426, "2022": 2791 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1210, + "2022": 142 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 2813, + "votosValidos": 2426, + "votosBranco": 56, + "votosNulo": 149 + }, + "2022": { + "comparecimento": 3058, + "votosValidos": 2791, + "votosBranco": 58, + "votosNulo": 69 + } + }, + "majoritarian2022": { + "president": { + "votes": 1893, + "comparecimento": 3058, + "votosValidos": 2953, + "votosBranco": 21, + "votosNulo": 84 + }, + "governor": { + "votes": 1730, + "comparecimento": 3058, + "votosValidos": 2831, + "votosBranco": 53, + "votosNulo": 174 + } } }, "barreiras": { @@ -462,6 +1979,47 @@ "2014": 54475, "2018": 63210, "2022": 75322 + }, + "campoFederalVotesByYear": { + "2014": 6202, + "2018": 5442, + "2022": 4437 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 70805, + "votosValidos": 54475, + "votosBranco": 6789, + "votosNulo": 4335 + }, + "2018": { + "comparecimento": 77742, + "votosValidos": 63210, + "votosBranco": 3521, + "votosNulo": 6130 + }, + "2022": { + "comparecimento": 85085, + "votosValidos": 75322, + "votosBranco": 4091, + "votosNulo": 2943 + } + }, + "majoritarian2022": { + "president": { + "votes": 47952, + "comparecimento": 85497, + "votosValidos": 82598, + "votosBranco": 976, + "votosNulo": 1923 + }, + "governor": { + "votes": 32695, + "comparecimento": 85085, + "votosValidos": 78293, + "votosBranco": 2953, + "votosNulo": 3828 + } } }, "barro-alto": { @@ -474,6 +2032,47 @@ "2014": 5618, "2018": 5768, "2022": 7726 + }, + "campoFederalVotesByYear": { + "2014": 2567, + "2018": 2029, + "2022": 1370 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7243, + "votosValidos": 5618, + "votosBranco": 617, + "votosNulo": 534 + }, + "2018": { + "comparecimento": 7600, + "votosValidos": 5768, + "votosBranco": 361, + "votosNulo": 910 + }, + "2022": { + "comparecimento": 8663, + "votosValidos": 7726, + "votosBranco": 347, + "votosNulo": 343 + } + }, + "majoritarian2022": { + "president": { + "votes": 6585, + "comparecimento": 8663, + "votosValidos": 8339, + "votosBranco": 77, + "votosNulo": 247 + }, + "governor": { + "votes": 5058, + "comparecimento": 8663, + "votosValidos": 8122, + "votosBranco": 159, + "votosNulo": 381 + } } }, "barro-preto": { @@ -486,6 +2085,47 @@ "2014": 3475, "2018": 3430, "2022": 4062 + }, + "campoFederalVotesByYear": { + "2014": 375, + "2018": 1479, + "2022": 711 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4195, + "votosValidos": 3475, + "votosBranco": 203, + "votosNulo": 169 + }, + "2018": { + "comparecimento": 4281, + "votosValidos": 3430, + "votosBranco": 133, + "votosNulo": 377 + }, + "2022": { + "comparecimento": 4529, + "votosValidos": 4062, + "votosBranco": 138, + "votosNulo": 144 + } + }, + "majoritarian2022": { + "president": { + "votes": 3067, + "comparecimento": 4529, + "votosValidos": 4305, + "votosBranco": 59, + "votosNulo": 165 + }, + "governor": { + "votes": 1669, + "comparecimento": 4529, + "votosValidos": 4156, + "votosBranco": 97, + "votosNulo": 275 + } } }, "barrocas": { @@ -498,6 +2138,47 @@ "2014": 8238, "2018": 8796, "2022": 9984 + }, + "campoFederalVotesByYear": { + "2014": 1266, + "2018": 1753, + "2022": 1407 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9679, + "votosValidos": 8238, + "votosBranco": 436, + "votosNulo": 340 + }, + "2018": { + "comparecimento": 10725, + "votosValidos": 8796, + "votosBranco": 268, + "votosNulo": 985 + }, + "2022": { + "comparecimento": 11282, + "votosValidos": 9984, + "votosBranco": 380, + "votosNulo": 501 + } + }, + "majoritarian2022": { + "president": { + "votes": 8997, + "comparecimento": 11282, + "votosValidos": 10802, + "votosBranco": 106, + "votosNulo": 374 + }, + "governor": { + "votes": 5689, + "comparecimento": 11282, + "votosValidos": 10602, + "votosBranco": 154, + "votosNulo": 526 + } } }, "belmonte": { @@ -510,6 +2191,47 @@ "2014": 8355, "2018": 8621, "2022": 10119 + }, + "campoFederalVotesByYear": { + "2014": 531, + "2018": 1558, + "2022": 2231 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10585, + "votosValidos": 8355, + "votosBranco": 601, + "votosNulo": 900 + }, + "2018": { + "comparecimento": 11078, + "votosValidos": 8621, + "votosBranco": 436, + "votosNulo": 1083 + }, + "2022": { + "comparecimento": 11713, + "votosValidos": 10119, + "votosBranco": 558, + "votosNulo": 535 + } + }, + "majoritarian2022": { + "president": { + "votes": 7605, + "comparecimento": 11713, + "votosValidos": 11169, + "votosBranco": 127, + "votosNulo": 417 + }, + "governor": { + "votes": 5338, + "comparecimento": 11713, + "votosValidos": 10598, + "votosBranco": 390, + "votosNulo": 720 + } } }, "belo-campo": { @@ -522,6 +2244,47 @@ "2014": 8091, "2018": 9269, "2022": 10868 + }, + "campoFederalVotesByYear": { + "2014": 2311, + "2018": 1280, + "2022": 1360 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9578, + "votosValidos": 8091, + "votosBranco": 422, + "votosNulo": 229 + }, + "2018": { + "comparecimento": 10521, + "votosValidos": 9269, + "votosBranco": 237, + "votosNulo": 342 + }, + "2022": { + "comparecimento": 12173, + "votosValidos": 10868, + "votosBranco": 439, + "votosNulo": 294 + } + }, + "majoritarian2022": { + "president": { + "votes": 8583, + "comparecimento": 12173, + "votosValidos": 11556, + "votosBranco": 138, + "votosNulo": 479 + }, + "governor": { + "votes": 7590, + "comparecimento": 12173, + "votosValidos": 11346, + "votosBranco": 159, + "votosNulo": 668 + } } }, "biritinga": { @@ -534,6 +2297,47 @@ "2014": 6826, "2018": 7727, "2022": 8540 + }, + "campoFederalVotesByYear": { + "2014": 2876, + "2018": 5116, + "2022": 2722 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8732, + "votosValidos": 6826, + "votosBranco": 494, + "votosNulo": 463 + }, + "2018": { + "comparecimento": 10069, + "votosValidos": 7727, + "votosBranco": 330, + "votosNulo": 870 + }, + "2022": { + "comparecimento": 10003, + "votosValidos": 8540, + "votosBranco": 402, + "votosNulo": 542 + } + }, + "majoritarian2022": { + "president": { + "votes": 7882, + "comparecimento": 10003, + "votosValidos": 9283, + "votosBranco": 135, + "votosNulo": 585 + }, + "governor": { + "votes": 6620, + "comparecimento": 10003, + "votosValidos": 8847, + "votosBranco": 231, + "votosNulo": 925 + } } }, "boa-nova": { @@ -546,6 +2350,47 @@ "2014": 6429, "2018": 6487, "2022": 7944 + }, + "campoFederalVotesByYear": { + "2014": 725, + "2018": 1495, + "2022": 1416 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8148, + "votosValidos": 6429, + "votosBranco": 383, + "votosNulo": 309 + }, + "2018": { + "comparecimento": 8177, + "votosValidos": 6487, + "votosBranco": 265, + "votosNulo": 684 + }, + "2022": { + "comparecimento": 9078, + "votosValidos": 7944, + "votosBranco": 342, + "votosNulo": 305 + } + }, + "majoritarian2022": { + "president": { + "votes": 7118, + "comparecimento": 9078, + "votosValidos": 8543, + "votosBranco": 92, + "votosNulo": 443 + }, + "governor": { + "votes": 5278, + "comparecimento": 9078, + "votosValidos": 8211, + "votosBranco": 197, + "votosNulo": 670 + } } }, "boa-vista-do-tupim": { @@ -558,6 +2403,47 @@ "2014": 8195, "2018": 8232, "2022": 9861 + }, + "campoFederalVotesByYear": { + "2014": 4420, + "2018": 4132, + "2022": 3013 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9603, + "votosValidos": 8195, + "votosBranco": 259, + "votosNulo": 300 + }, + "2018": { + "comparecimento": 9905, + "votosValidos": 8232, + "votosBranco": 231, + "votosNulo": 691 + }, + "2022": { + "comparecimento": 11020, + "votosValidos": 9861, + "votosBranco": 255, + "votosNulo": 430 + } + }, + "majoritarian2022": { + "president": { + "votes": 7431, + "comparecimento": 11020, + "votosValidos": 10323, + "votosBranco": 103, + "votosNulo": 594 + }, + "governor": { + "votes": 5832, + "comparecimento": 11020, + "votosValidos": 10049, + "votosBranco": 136, + "votosNulo": 835 + } } }, "bom-jesus-da-lapa": { @@ -570,6 +2456,47 @@ "2014": 24479, "2018": 24552, "2022": 33667 + }, + "campoFederalVotesByYear": { + "2014": 3548, + "2018": 3933, + "2022": 6104 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 32476, + "votosValidos": 24479, + "votosBranco": 1693, + "votosNulo": 4052 + }, + "2018": { + "comparecimento": 33497, + "votosValidos": 24552, + "votosBranco": 1415, + "votosNulo": 3048 + }, + "2022": { + "comparecimento": 38141, + "votosValidos": 33667, + "votosBranco": 1603, + "votosNulo": 1536 + } + }, + "majoritarian2022": { + "president": { + "votes": 27731, + "comparecimento": 38145, + "votosValidos": 36387, + "votosBranco": 439, + "votosNulo": 1319 + }, + "governor": { + "votes": 23668, + "comparecimento": 38141, + "votosValidos": 34686, + "votosBranco": 1178, + "votosNulo": 2276 + } } }, "bom-jesus-da-serra": { @@ -582,6 +2509,47 @@ "2014": 4771, "2018": 5134, "2022": 6132 + }, + "campoFederalVotesByYear": { + "2014": 1043, + "2018": 864, + "2022": 1376 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5745, + "votosValidos": 4771, + "votosBranco": 194, + "votosNulo": 180 + }, + "2018": { + "comparecimento": 6139, + "votosValidos": 5134, + "votosBranco": 196, + "votosNulo": 314 + }, + "2022": { + "comparecimento": 6795, + "votosValidos": 6132, + "votosBranco": 190, + "votosNulo": 197 + } + }, + "majoritarian2022": { + "president": { + "votes": 5451, + "comparecimento": 6795, + "votosValidos": 6394, + "votosBranco": 60, + "votosNulo": 341 + }, + "governor": { + "votes": 4483, + "comparecimento": 6795, + "votosValidos": 6187, + "votosBranco": 122, + "votosNulo": 486 + } } }, "boninal": { @@ -594,6 +2562,47 @@ "2014": 5678, "2018": 5745, "2022": 7298 + }, + "campoFederalVotesByYear": { + "2014": 2440, + "2018": 2407, + "2022": 3999 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6779, + "votosValidos": 5678, + "votosBranco": 296, + "votosNulo": 221 + }, + "2018": { + "comparecimento": 7319, + "votosValidos": 5745, + "votosBranco": 287, + "votosNulo": 568 + }, + "2022": { + "comparecimento": 8259, + "votosValidos": 7298, + "votosBranco": 275, + "votosNulo": 248 + } + }, + "majoritarian2022": { + "president": { + "votes": 5537, + "comparecimento": 8261, + "votosValidos": 7787, + "votosBranco": 127, + "votosNulo": 347 + }, + "governor": { + "votes": 4536, + "comparecimento": 8259, + "votosValidos": 7627, + "votosBranco": 146, + "votosNulo": 486 + } } }, "bonito": { @@ -606,6 +2615,47 @@ "2014": 7262, "2018": 7744, "2022": 8779 + }, + "campoFederalVotesByYear": { + "2014": 279, + "2018": 2039, + "2022": 1226 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8312, + "votosValidos": 7262, + "votosBranco": 335, + "votosNulo": 193 + }, + "2018": { + "comparecimento": 9232, + "votosValidos": 7744, + "votosBranco": 306, + "votosNulo": 641 + }, + "2022": { + "comparecimento": 9791, + "votosValidos": 8779, + "votosBranco": 354, + "votosNulo": 398 + } + }, + "majoritarian2022": { + "president": { + "votes": 7602, + "comparecimento": 9791, + "votosValidos": 9346, + "votosBranco": 106, + "votosNulo": 339 + }, + "governor": { + "votes": 6513, + "comparecimento": 9791, + "votosValidos": 9000, + "votosBranco": 207, + "votosNulo": 584 + } } }, "boquira": { @@ -618,6 +2668,47 @@ "2014": 9111, "2018": 9442, "2022": 11016 + }, + "campoFederalVotesByYear": { + "2014": 1592, + "2018": 2280, + "2022": 1935 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10788, + "votosValidos": 9111, + "votosBranco": 448, + "votosNulo": 329 + }, + "2018": { + "comparecimento": 11364, + "votosValidos": 9442, + "votosBranco": 287, + "votosNulo": 843 + }, + "2022": { + "comparecimento": 12384, + "votosValidos": 11016, + "votosBranco": 341, + "votosNulo": 376 + } + }, + "majoritarian2022": { + "president": { + "votes": 10579, + "comparecimento": 12384, + "votosValidos": 11789, + "votosBranco": 108, + "votosNulo": 487 + }, + "governor": { + "votes": 8812, + "comparecimento": 12384, + "votosValidos": 11455, + "votosBranco": 220, + "votosNulo": 709 + } } }, "botupora": { @@ -630,6 +2721,47 @@ "2014": 0, "2018": 5632, "2022": 6379 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1294, + "2022": 1046 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6730, + "votosValidos": 5632, + "votosBranco": 244, + "votosNulo": 356 + }, + "2022": { + "comparecimento": 7164, + "votosValidos": 6379, + "votosBranco": 319, + "votosNulo": 187 + } + }, + "majoritarian2022": { + "president": { + "votes": 5457, + "comparecimento": 7164, + "votosValidos": 6706, + "votosBranco": 68, + "votosNulo": 390 + }, + "governor": { + "votes": 4216, + "comparecimento": 7164, + "votosValidos": 6527, + "votosBranco": 134, + "votosNulo": 503 + } } }, "brejoes": { @@ -642,6 +2774,47 @@ "2014": 6222, "2018": 5942, "2022": 7419 + }, + "campoFederalVotesByYear": { + "2014": 1092, + "2018": 3438, + "2022": 2383 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7607, + "votosValidos": 6222, + "votosBranco": 488, + "votosNulo": 300 + }, + "2018": { + "comparecimento": 7554, + "votosValidos": 5942, + "votosBranco": 309, + "votosNulo": 638 + }, + "2022": { + "comparecimento": 8443, + "votosValidos": 7419, + "votosBranco": 370, + "votosNulo": 335 + } + }, + "majoritarian2022": { + "president": { + "votes": 5775, + "comparecimento": 8443, + "votosValidos": 7994, + "votosBranco": 113, + "votosNulo": 336 + }, + "governor": { + "votes": 4493, + "comparecimento": 8443, + "votosValidos": 7727, + "votosBranco": 198, + "votosNulo": 518 + } } }, "brejolandia": { @@ -654,6 +2827,47 @@ "2014": 4470, "2018": 4172, "2022": 5744 + }, + "campoFederalVotesByYear": { + "2014": 421, + "2018": 379, + "2022": 631 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5719, + "votosValidos": 4470, + "votosBranco": 551, + "votosNulo": 190 + }, + "2018": { + "comparecimento": 5558, + "votosValidos": 4172, + "votosBranco": 392, + "votosNulo": 248 + }, + "2022": { + "comparecimento": 6288, + "votosValidos": 5744, + "votosBranco": 299, + "votosNulo": 86 + } + }, + "majoritarian2022": { + "president": { + "votes": 4217, + "comparecimento": 6288, + "votosValidos": 5984, + "votosBranco": 136, + "votosNulo": 168 + }, + "governor": { + "votes": 3034, + "comparecimento": 6288, + "votosValidos": 5658, + "votosBranco": 369, + "votosNulo": 261 + } } }, "brotas-de-macaubas": { @@ -666,6 +2880,47 @@ "2014": 5559, "2018": 5467, "2022": 6496 + }, + "campoFederalVotesByYear": { + "2014": 3096, + "2018": 2542, + "2022": 1820 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6532, + "votosValidos": 5559, + "votosBranco": 179, + "votosNulo": 213 + }, + "2018": { + "comparecimento": 6603, + "votosValidos": 5467, + "votosBranco": 157, + "votosNulo": 419 + }, + "2022": { + "comparecimento": 7294, + "votosValidos": 6496, + "votosBranco": 203, + "votosNulo": 255 + } + }, + "majoritarian2022": { + "president": { + "votes": 5239, + "comparecimento": 7294, + "votosValidos": 6936, + "votosBranco": 73, + "votosNulo": 285 + }, + "governor": { + "votes": 4306, + "comparecimento": 7294, + "votosValidos": 6684, + "votosBranco": 128, + "votosNulo": 482 + } } }, "brumado": { @@ -678,6 +2933,47 @@ "2014": 28964, "2018": 31899, "2022": 35787 + }, + "campoFederalVotesByYear": { + "2014": 9283, + "2018": 7338, + "2022": 12716 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 37975, + "votosValidos": 28964, + "votosBranco": 3477, + "votosNulo": 2597 + }, + "2018": { + "comparecimento": 41458, + "votosValidos": 31899, + "votosBranco": 1866, + "votosNulo": 5750 + }, + "2022": { + "comparecimento": 43209, + "votosValidos": 35787, + "votosBranco": 2992, + "votosNulo": 2878 + } + }, + "majoritarian2022": { + "president": { + "votes": 27831, + "comparecimento": 43209, + "votosValidos": 41055, + "votosBranco": 573, + "votosNulo": 1581 + }, + "governor": { + "votes": 17045, + "comparecimento": 43209, + "votosValidos": 39515, + "votosBranco": 1259, + "votosNulo": 2434 + } } }, "buerarema": { @@ -690,6 +2986,47 @@ "2014": 7293, "2018": 7277, "2022": 8574 + }, + "campoFederalVotesByYear": { + "2014": 1522, + "2018": 994, + "2022": 1536 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9217, + "votosValidos": 7293, + "votosBranco": 436, + "votosNulo": 449 + }, + "2018": { + "comparecimento": 9253, + "votosValidos": 7277, + "votosBranco": 313, + "votosNulo": 856 + }, + "2022": { + "comparecimento": 9635, + "votosValidos": 8574, + "votosBranco": 322, + "votosNulo": 323 + } + }, + "majoritarian2022": { + "president": { + "votes": 3581, + "comparecimento": 9635, + "votosValidos": 9194, + "votosBranco": 114, + "votosNulo": 327 + }, + "governor": { + "votes": 1996, + "comparecimento": 9635, + "votosValidos": 8901, + "votosBranco": 221, + "votosNulo": 512 + } } }, "buritirama": { @@ -702,6 +3039,47 @@ "2014": 8866, "2018": 9468, "2022": 11051 + }, + "campoFederalVotesByYear": { + "2014": 1115, + "2018": 2240, + "2022": 2131 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10132, + "votosValidos": 8866, + "votosBranco": 132, + "votosNulo": 196 + }, + "2018": { + "comparecimento": 10755, + "votosValidos": 9468, + "votosBranco": 118, + "votosNulo": 270 + }, + "2022": { + "comparecimento": 11875, + "votosValidos": 11051, + "votosBranco": 95, + "votosNulo": 187 + } + }, + "majoritarian2022": { + "president": { + "votes": 8737, + "comparecimento": 11875, + "votosValidos": 11339, + "votosBranco": 72, + "votosNulo": 464 + }, + "governor": { + "votes": 5582, + "comparecimento": 11875, + "votosValidos": 11124, + "votosBranco": 89, + "votosNulo": 662 + } } }, "caatiba": { @@ -714,6 +3092,47 @@ "2014": 0, "2018": 4538, "2022": 4295 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 42, + "2022": 119 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5234, + "votosValidos": 4538, + "votosBranco": 88, + "votosNulo": 344 + }, + "2022": { + "comparecimento": 4681, + "votosValidos": 4295, + "votosBranco": 125, + "votosNulo": 139 + } + }, + "majoritarian2022": { + "president": { + "votes": 2950, + "comparecimento": 4681, + "votosValidos": 4443, + "votosBranco": 38, + "votosNulo": 200 + }, + "governor": { + "votes": 2141, + "comparecimento": 4681, + "votosValidos": 4379, + "votosBranco": 40, + "votosNulo": 262 + } } }, "cabaceiras-do-paraguacu": { @@ -726,6 +3145,47 @@ "2014": 6863, "2018": 7703, "2022": 9152 + }, + "campoFederalVotesByYear": { + "2014": 745, + "2018": 565, + "2022": 1411 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8477, + "votosValidos": 6863, + "votosBranco": 485, + "votosNulo": 308 + }, + "2018": { + "comparecimento": 9613, + "votosValidos": 7703, + "votosBranco": 384, + "votosNulo": 720 + }, + "2022": { + "comparecimento": 10667, + "votosValidos": 9152, + "votosBranco": 586, + "votosNulo": 398 + } + }, + "majoritarian2022": { + "president": { + "votes": 8433, + "comparecimento": 10667, + "votosValidos": 10145, + "votosBranco": 144, + "votosNulo": 378 + }, + "governor": { + "votes": 5662, + "comparecimento": 10667, + "votosValidos": 9866, + "votosBranco": 235, + "votosNulo": 565 + } } }, "cachoeira": { @@ -738,6 +3198,47 @@ "2014": 14744, "2018": 15994, "2022": 17699 + }, + "campoFederalVotesByYear": { + "2014": 3735, + "2018": 4093, + "2022": 3011 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 19431, + "votosValidos": 14744, + "votosBranco": 1750, + "votosNulo": 1385 + }, + "2018": { + "comparecimento": 19605, + "votosValidos": 15994, + "votosBranco": 857, + "votosNulo": 1559 + }, + "2022": { + "comparecimento": 20452, + "votosValidos": 17699, + "votosBranco": 1068, + "votosNulo": 899 + } + }, + "majoritarian2022": { + "president": { + "votes": 15921, + "comparecimento": 20452, + "votosValidos": 19530, + "votosBranco": 300, + "votosNulo": 622 + }, + "governor": { + "votes": 10313, + "comparecimento": 20452, + "votosValidos": 18899, + "votosBranco": 548, + "votosNulo": 1005 + } } }, "cacule": { @@ -750,6 +3251,47 @@ "2014": 10278, "2018": 10538, "2022": 12968 + }, + "campoFederalVotesByYear": { + "2014": 3290, + "2018": 5501, + "2022": 3850 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12505, + "votosValidos": 10278, + "votosBranco": 797, + "votosNulo": 411 + }, + "2018": { + "comparecimento": 13028, + "votosValidos": 10538, + "votosBranco": 558, + "votosNulo": 1170 + }, + "2022": { + "comparecimento": 14499, + "votosValidos": 12968, + "votosBranco": 639, + "votosNulo": 476 + } + }, + "majoritarian2022": { + "president": { + "votes": 9571, + "comparecimento": 14500, + "votosValidos": 13709, + "votosBranco": 230, + "votosNulo": 561 + }, + "governor": { + "votes": 7314, + "comparecimento": 14499, + "votosValidos": 13442, + "votosBranco": 320, + "votosNulo": 737 + } } }, "caem": { @@ -762,6 +3304,47 @@ "2014": 4847, "2018": 4789, "2022": 5611 + }, + "campoFederalVotesByYear": { + "2014": 1243, + "2018": 1593, + "2022": 1001 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5817, + "votosValidos": 4847, + "votosBranco": 178, + "votosNulo": 197 + }, + "2018": { + "comparecimento": 5831, + "votosValidos": 4789, + "votosBranco": 148, + "votosNulo": 400 + }, + "2022": { + "comparecimento": 6233, + "votosValidos": 5611, + "votosBranco": 175, + "votosNulo": 204 + } + }, + "majoritarian2022": { + "president": { + "votes": 4810, + "comparecimento": 6233, + "votosValidos": 5899, + "votosBranco": 58, + "votosNulo": 276 + }, + "governor": { + "votes": 3578, + "comparecimento": 6233, + "votosValidos": 5732, + "votosBranco": 86, + "votosNulo": 414 + } } }, "caetanos": { @@ -774,6 +3357,47 @@ "2014": 0, "2018": 6089, "2022": 7141 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 5088, + "2022": 4719 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6985, + "votosValidos": 6089, + "votosBranco": 121, + "votosNulo": 275 + }, + "2022": { + "comparecimento": 7828, + "votosValidos": 7141, + "votosBranco": 158, + "votosNulo": 223 + } + }, + "majoritarian2022": { + "president": { + "votes": 6535, + "comparecimento": 7828, + "votosValidos": 7489, + "votosBranco": 67, + "votosNulo": 272 + }, + "governor": { + "votes": 5952, + "comparecimento": 7828, + "votosValidos": 7241, + "votosBranco": 123, + "votosNulo": 464 + } } }, "caetite": { @@ -786,6 +3410,47 @@ "2014": 23351, "2018": 24280, "2022": 29483 + }, + "campoFederalVotesByYear": { + "2014": 6901, + "2018": 8849, + "2022": 12534 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 29664, + "votosValidos": 23351, + "votosBranco": 1969, + "votosNulo": 2029 + }, + "2018": { + "comparecimento": 31172, + "votosValidos": 24280, + "votosBranco": 1244, + "votosNulo": 3417 + }, + "2022": { + "comparecimento": 34557, + "votosValidos": 29483, + "votosBranco": 1863, + "votosNulo": 1872 + } + }, + "majoritarian2022": { + "president": { + "votes": 25307, + "comparecimento": 34557, + "votosValidos": 32756, + "votosBranco": 383, + "votosNulo": 1418 + }, + "governor": { + "votes": 20011, + "comparecimento": 34557, + "votosValidos": 31160, + "votosBranco": 956, + "votosNulo": 2437 + } } }, "cafarnaum": { @@ -798,6 +3463,47 @@ "2014": 7630, "2018": 7936, "2022": 9694 + }, + "campoFederalVotesByYear": { + "2014": 885, + "2018": 2930, + "2022": 2624 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9167, + "votosValidos": 7630, + "votosBranco": 594, + "votosNulo": 253 + }, + "2018": { + "comparecimento": 10134, + "votosValidos": 7936, + "votosBranco": 473, + "votosNulo": 851 + }, + "2022": { + "comparecimento": 11378, + "votosValidos": 9694, + "votosBranco": 723, + "votosNulo": 468 + } + }, + "majoritarian2022": { + "president": { + "votes": 7945, + "comparecimento": 11378, + "votosValidos": 10844, + "votosBranco": 162, + "votosNulo": 372 + }, + "governor": { + "votes": 5840, + "comparecimento": 11378, + "votosValidos": 10302, + "votosBranco": 427, + "votosNulo": 649 + } } }, "cairu": { @@ -810,6 +3516,47 @@ "2014": 6288, "2018": 8468, "2022": 9710 + }, + "campoFederalVotesByYear": { + "2014": 930, + "2018": 722, + "2022": 1068 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9403, + "votosValidos": 6288, + "votosBranco": 639, + "votosNulo": 1601 + }, + "2018": { + "comparecimento": 10392, + "votosValidos": 8468, + "votosBranco": 376, + "votosNulo": 992 + }, + "2022": { + "comparecimento": 11161, + "votosValidos": 9710, + "votosBranco": 558, + "votosNulo": 447 + } + }, + "majoritarian2022": { + "president": { + "votes": 6846, + "comparecimento": 11161, + "votosValidos": 10612, + "votosBranco": 171, + "votosNulo": 378 + }, + "governor": { + "votes": 3271, + "comparecimento": 11161, + "votosValidos": 10398, + "votosBranco": 271, + "votosNulo": 490 + } } }, "caldeirao-grande": { @@ -822,6 +3569,47 @@ "2014": 5316, "2018": 5992, "2022": 7194 + }, + "campoFederalVotesByYear": { + "2014": 2955, + "2018": 1669, + "2022": 692 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6278, + "votosValidos": 5316, + "votosBranco": 210, + "votosNulo": 152 + }, + "2018": { + "comparecimento": 7156, + "votosValidos": 5992, + "votosBranco": 136, + "votosNulo": 597 + }, + "2022": { + "comparecimento": 7860, + "votosValidos": 7194, + "votosBranco": 166, + "votosNulo": 150 + } + }, + "majoritarian2022": { + "president": { + "votes": 5986, + "comparecimento": 7860, + "votosValidos": 7526, + "votosBranco": 82, + "votosNulo": 252 + }, + "governor": { + "votes": 3270, + "comparecimento": 7860, + "votosValidos": 7432, + "votosBranco": 89, + "votosNulo": 339 + } } }, "camacan": { @@ -834,6 +3622,47 @@ "2014": 10425, "2018": 10260, "2022": 12322 + }, + "campoFederalVotesByYear": { + "2014": 5418, + "2018": 3179, + "2022": 2176 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12801, + "votosValidos": 10425, + "votosBranco": 666, + "votosNulo": 592 + }, + "2018": { + "comparecimento": 12812, + "votosValidos": 10260, + "votosBranco": 437, + "votosNulo": 979 + }, + "2022": { + "comparecimento": 13787, + "votosValidos": 12322, + "votosBranco": 474, + "votosNulo": 409 + } + }, + "majoritarian2022": { + "president": { + "votes": 7618, + "comparecimento": 13787, + "votosValidos": 13153, + "votosBranco": 152, + "votosNulo": 482 + }, + "governor": { + "votes": 5629, + "comparecimento": 13787, + "votosValidos": 12723, + "votosBranco": 301, + "votosNulo": 763 + } } }, "camacari": { @@ -846,6 +3675,47 @@ "2014": 96393, "2018": 70536, "2022": 132271 + }, + "campoFederalVotesByYear": { + "2014": 41482, + "2018": 6317, + "2022": 48359 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 125829, + "votosValidos": 96393, + "votosBranco": 12401, + "votosNulo": 9745 + }, + "2018": { + "comparecimento": 143230, + "votosValidos": 70536, + "votosBranco": 6883, + "votosNulo": 19081 + }, + "2022": { + "comparecimento": 158632, + "votosValidos": 132271, + "votosBranco": 10003, + "votosNulo": 10358 + } + }, + "majoritarian2022": { + "president": { + "votes": 96759, + "comparecimento": 158912, + "votosValidos": 149384, + "votosBranco": 2943, + "votosNulo": 6585 + }, + "governor": { + "votes": 58518, + "comparecimento": 158632, + "votosValidos": 145206, + "votosBranco": 4645, + "votosNulo": 8772 + } } }, "camamu": { @@ -858,6 +3728,47 @@ "2014": 12141, "2018": 13369, "2022": 16232 + }, + "campoFederalVotesByYear": { + "2014": 4476, + "2018": 2208, + "2022": 5889 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 16614, + "votosValidos": 12141, + "votosBranco": 1011, + "votosNulo": 1689 + }, + "2018": { + "comparecimento": 16684, + "votosValidos": 13369, + "votosBranco": 553, + "votosNulo": 1306 + }, + "2022": { + "comparecimento": 18450, + "votosValidos": 16232, + "votosBranco": 599, + "votosNulo": 696 + } + }, + "majoritarian2022": { + "president": { + "votes": 11173, + "comparecimento": 18451, + "votosValidos": 17484, + "votosBranco": 265, + "votosNulo": 702 + }, + "governor": { + "votes": 7423, + "comparecimento": 18450, + "votosValidos": 17109, + "votosBranco": 345, + "votosNulo": 996 + } } }, "campo-alegre-de-lourdes": { @@ -870,6 +3781,47 @@ "2014": 12731, "2018": 13208, "2022": 16672 + }, + "campoFederalVotesByYear": { + "2014": 6636, + "2018": 3096, + "2022": 1985 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15081, + "votosValidos": 12731, + "votosBranco": 435, + "votosNulo": 515 + }, + "2018": { + "comparecimento": 15293, + "votosValidos": 13208, + "votosBranco": 252, + "votosNulo": 521 + }, + "2022": { + "comparecimento": 17891, + "votosValidos": 16672, + "votosBranco": 243, + "votosNulo": 284 + } + }, + "majoritarian2022": { + "president": { + "votes": 14265, + "comparecimento": 17893, + "votosValidos": 17262, + "votosBranco": 103, + "votosNulo": 528 + }, + "governor": { + "votes": 11570, + "comparecimento": 17891, + "votosValidos": 16757, + "votosBranco": 259, + "votosNulo": 871 + } } }, "campo-formoso": { @@ -882,6 +3834,47 @@ "2014": 34136, "2018": 35210, "2022": 41597 + }, + "campoFederalVotesByYear": { + "2014": 1181, + "2018": 1679, + "2022": 2274 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 38943, + "votosValidos": 34136, + "votosBranco": 1362, + "votosNulo": 782 + }, + "2018": { + "comparecimento": 41463, + "votosValidos": 35210, + "votosBranco": 1394, + "votosNulo": 2894 + }, + "2022": { + "comparecimento": 45458, + "votosValidos": 41597, + "votosBranco": 1416, + "votosNulo": 1094 + } + }, + "majoritarian2022": { + "president": { + "votes": 30654, + "comparecimento": 45459, + "votosValidos": 43098, + "votosBranco": 662, + "votosNulo": 1699 + }, + "governor": { + "votes": 22285, + "comparecimento": 45458, + "votosValidos": 41853, + "votosBranco": 1111, + "votosNulo": 2492 + } } }, "canapolis": { @@ -894,6 +3887,47 @@ "2014": 4831, "2018": 5033, "2022": 6126 + }, + "campoFederalVotesByYear": { + "2014": 1094, + "2018": 1944, + "2022": 1374 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6035, + "votosValidos": 4831, + "votosBranco": 385, + "votosNulo": 232 + }, + "2018": { + "comparecimento": 6212, + "votosValidos": 5033, + "votosBranco": 245, + "votosNulo": 453 + }, + "2022": { + "comparecimento": 6870, + "votosValidos": 6126, + "votosBranco": 206, + "votosNulo": 220 + } + }, + "majoritarian2022": { + "president": { + "votes": 5233, + "comparecimento": 6871, + "votosValidos": 6548, + "votosBranco": 73, + "votosNulo": 250 + }, + "governor": { + "votes": 4562, + "comparecimento": 6870, + "votosValidos": 6248, + "votosBranco": 178, + "votosNulo": 443 + } } }, "canarana": { @@ -906,6 +3940,47 @@ "2014": 10521, "2018": 10967, "2022": 14351 + }, + "campoFederalVotesByYear": { + "2014": 3505, + "2018": 2665, + "2022": 2242 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13051, + "votosValidos": 10521, + "votosBranco": 914, + "votosNulo": 613 + }, + "2018": { + "comparecimento": 14210, + "votosValidos": 10967, + "votosBranco": 393, + "votosNulo": 1089 + }, + "2022": { + "comparecimento": 15786, + "votosValidos": 14351, + "votosBranco": 480, + "votosNulo": 477 + } + }, + "majoritarian2022": { + "president": { + "votes": 11925, + "comparecimento": 15786, + "votosValidos": 15219, + "votosBranco": 135, + "votosNulo": 432 + }, + "governor": { + "votes": 8285, + "comparecimento": 15786, + "votosValidos": 14906, + "votosBranco": 209, + "votosNulo": 671 + } } }, "canavieiras": { @@ -918,6 +3993,47 @@ "2014": 12552, "2018": 13398, "2022": 15793 + }, + "campoFederalVotesByYear": { + "2014": 2986, + "2018": 2725, + "2022": 3488 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15821, + "votosValidos": 12552, + "votosBranco": 806, + "votosNulo": 886 + }, + "2018": { + "comparecimento": 17167, + "votosValidos": 13398, + "votosBranco": 594, + "votosNulo": 1798 + }, + "2022": { + "comparecimento": 18151, + "votosValidos": 15793, + "votosBranco": 721, + "votosNulo": 780 + } + }, + "majoritarian2022": { + "president": { + "votes": 10936, + "comparecimento": 18151, + "votosValidos": 17291, + "votosBranco": 182, + "votosNulo": 678 + }, + "governor": { + "votes": 6970, + "comparecimento": 18151, + "votosValidos": 16779, + "votosBranco": 361, + "votosNulo": 1010 + } } }, "candeal": { @@ -930,6 +4046,47 @@ "2014": 4534, "2018": 4733, "2022": 5488 + }, + "campoFederalVotesByYear": { + "2014": 1039, + "2018": 1768, + "2022": 2075 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5705, + "votosValidos": 4534, + "votosBranco": 347, + "votosNulo": 249 + }, + "2018": { + "comparecimento": 5976, + "votosValidos": 4733, + "votosBranco": 199, + "votosNulo": 540 + }, + "2022": { + "comparecimento": 6329, + "votosValidos": 5488, + "votosBranco": 238, + "votosNulo": 306 + } + }, + "majoritarian2022": { + "president": { + "votes": 4651, + "comparecimento": 6329, + "votosValidos": 6052, + "votosBranco": 61, + "votosNulo": 216 + }, + "governor": { + "votes": 3735, + "comparecimento": 6329, + "votosValidos": 5854, + "votosBranco": 116, + "votosNulo": 359 + } } }, "candeias": { @@ -942,6 +4099,47 @@ "2014": 34855, "2018": 42684, "2022": 43766 + }, + "campoFederalVotesByYear": { + "2014": 6524, + "2018": 6879, + "2022": 8424 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 47860, + "votosValidos": 34855, + "votosBranco": 5767, + "votosNulo": 3660 + }, + "2018": { + "comparecimento": 51401, + "votosValidos": 42684, + "votosBranco": 1809, + "votosNulo": 4129 + }, + "2022": { + "comparecimento": 53040, + "votosValidos": 43766, + "votosBranco": 4008, + "votosNulo": 3183 + } + }, + "majoritarian2022": { + "president": { + "votes": 40234, + "comparecimento": 53041, + "votosValidos": 50238, + "votosBranco": 922, + "votosNulo": 1881 + }, + "governor": { + "votes": 25706, + "comparecimento": 53040, + "votosValidos": 48416, + "votosBranco": 1794, + "votosNulo": 2826 + } } }, "candiba": { @@ -954,6 +4152,47 @@ "2014": 6703, "2018": 6976, "2022": 7816 + }, + "campoFederalVotesByYear": { + "2014": 1032, + "2018": 1190, + "2022": 1325 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8333, + "votosValidos": 6703, + "votosBranco": 661, + "votosNulo": 314 + }, + "2018": { + "comparecimento": 8710, + "votosValidos": 6976, + "votosBranco": 379, + "votosNulo": 795 + }, + "2022": { + "comparecimento": 8918, + "votosValidos": 7816, + "votosBranco": 436, + "votosNulo": 348 + } + }, + "majoritarian2022": { + "president": { + "votes": 6436, + "comparecimento": 8918, + "votosValidos": 8429, + "votosBranco": 128, + "votosNulo": 361 + }, + "governor": { + "votes": 4152, + "comparecimento": 8918, + "votosValidos": 7992, + "votosBranco": 303, + "votosNulo": 623 + } } }, "candido-sales": { @@ -966,6 +4205,47 @@ "2014": 0, "2018": 12011, "2022": 14056 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3207, + "2022": 2952 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 13885, + "votosValidos": 12011, + "votosBranco": 354, + "votosNulo": 692 + }, + "2022": { + "comparecimento": 15421, + "votosValidos": 14056, + "votosBranco": 416, + "votosNulo": 337 + } + }, + "majoritarian2022": { + "president": { + "votes": 10433, + "comparecimento": 15421, + "votosValidos": 14775, + "votosBranco": 151, + "votosNulo": 495 + }, + "governor": { + "votes": 8613, + "comparecimento": 15421, + "votosValidos": 14275, + "votosBranco": 338, + "votosNulo": 807 + } } }, "cansancao": { @@ -978,6 +4258,47 @@ "2014": 15194, "2018": 13352, "2022": 20984 + }, + "campoFederalVotesByYear": { + "2014": 2329, + "2018": 4161, + "2022": 3397 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18260, + "votosValidos": 15194, + "votosBranco": 932, + "votosNulo": 522 + }, + "2018": { + "comparecimento": 19549, + "votosValidos": 13352, + "votosBranco": 608, + "votosNulo": 4268 + }, + "2022": { + "comparecimento": 22923, + "votosValidos": 20984, + "votosBranco": 613, + "votosNulo": 478 + } + }, + "majoritarian2022": { + "president": { + "votes": 18667, + "comparecimento": 22923, + "votosValidos": 22094, + "votosBranco": 200, + "votosNulo": 629 + }, + "governor": { + "votes": 11883, + "comparecimento": 22923, + "votosValidos": 21610, + "votosBranco": 333, + "votosNulo": 979 + } } }, "canudos": { @@ -990,6 +4311,47 @@ "2014": 0, "2018": 7886, "2022": 9369 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1428, + "2022": 558 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 9164, + "votosValidos": 7886, + "votosBranco": 171, + "votosNulo": 613 + }, + "2022": { + "comparecimento": 10180, + "votosValidos": 9369, + "votosBranco": 187, + "votosNulo": 266 + } + }, + "majoritarian2022": { + "president": { + "votes": 7993, + "comparecimento": 10187, + "votosValidos": 9756, + "votosBranco": 62, + "votosNulo": 369 + }, + "governor": { + "votes": 6407, + "comparecimento": 10180, + "votosValidos": 9514, + "votosBranco": 133, + "votosNulo": 533 + } } }, "capela-do-alto-alegre": { @@ -1002,6 +4364,47 @@ "2014": 0, "2018": 5394, "2022": 6461 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3458, + "2022": 2119 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6837, + "votosValidos": 5394, + "votosBranco": 337, + "votosNulo": 703 + }, + "2022": { + "comparecimento": 7526, + "votosValidos": 6461, + "votosBranco": 355, + "votosNulo": 398 + } + }, + "majoritarian2022": { + "president": { + "votes": 5117, + "comparecimento": 7526, + "votosValidos": 7048, + "votosBranco": 141, + "votosNulo": 337 + }, + "governor": { + "votes": 3733, + "comparecimento": 7526, + "votosValidos": 6803, + "votosBranco": 222, + "votosNulo": 501 + } } }, "capim-grosso": { @@ -1014,6 +4417,47 @@ "2014": 12495, "2018": 12647, "2022": 16300 + }, + "campoFederalVotesByYear": { + "2014": 5750, + "2018": 1962, + "2022": 1682 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15564, + "votosValidos": 12495, + "votosBranco": 1153, + "votosNulo": 693 + }, + "2018": { + "comparecimento": 16954, + "votosValidos": 12647, + "votosBranco": 948, + "votosNulo": 2171 + }, + "2022": { + "comparecimento": 18919, + "votosValidos": 16300, + "votosBranco": 1034, + "votosNulo": 892 + } + }, + "majoritarian2022": { + "president": { + "votes": 11588, + "comparecimento": 18927, + "votosValidos": 17960, + "votosBranco": 282, + "votosNulo": 685 + }, + "governor": { + "votes": 8581, + "comparecimento": 18919, + "votosValidos": 17506, + "votosBranco": 429, + "votosNulo": 983 + } } }, "caraibas": { @@ -1026,6 +4470,47 @@ "2014": 4952, "2018": 5205, "2022": 6026 + }, + "campoFederalVotesByYear": { + "2014": 653, + "2018": 2131, + "2022": 1626 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5789, + "votosValidos": 4952, + "votosBranco": 144, + "votosNulo": 160 + }, + "2018": { + "comparecimento": 6023, + "votosValidos": 5205, + "votosBranco": 129, + "votosNulo": 338 + }, + "2022": { + "comparecimento": 6576, + "votosValidos": 6026, + "votosBranco": 146, + "votosNulo": 166 + } + }, + "majoritarian2022": { + "president": { + "votes": 4701, + "comparecimento": 6576, + "votosValidos": 6304, + "votosBranco": 58, + "votosNulo": 214 + }, + "governor": { + "votes": 3924, + "comparecimento": 6576, + "votosValidos": 6101, + "votosBranco": 89, + "votosNulo": 386 + } } }, "caravelas": { @@ -1038,6 +4523,47 @@ "2014": 0, "2018": 8023, "2022": 10648 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1438, + "2022": 1081 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 10234, + "votosValidos": 8023, + "votosBranco": 442, + "votosNulo": 1039 + }, + "2022": { + "comparecimento": 12135, + "votosValidos": 10648, + "votosBranco": 527, + "votosNulo": 484 + } + }, + "majoritarian2022": { + "president": { + "votes": 7646, + "comparecimento": 12135, + "votosValidos": 11556, + "votosBranco": 136, + "votosNulo": 443 + }, + "governor": { + "votes": 6229, + "comparecimento": 12135, + "votosValidos": 10931, + "votosBranco": 381, + "votosNulo": 819 + } } }, "cardeal-da-silva": { @@ -1050,6 +4576,47 @@ "2014": 3635, "2018": 3897, "2022": 4717 + }, + "campoFederalVotesByYear": { + "2014": 1219, + "2018": 1549, + "2022": 1275 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4935, + "votosValidos": 3635, + "votosBranco": 515, + "votosNulo": 366 + }, + "2018": { + "comparecimento": 5244, + "votosValidos": 3897, + "votosBranco": 295, + "votosNulo": 692 + }, + "2022": { + "comparecimento": 5802, + "votosValidos": 4717, + "votosBranco": 385, + "votosNulo": 381 + } + }, + "majoritarian2022": { + "president": { + "votes": 4743, + "comparecimento": 5802, + "votosValidos": 5421, + "votosBranco": 96, + "votosNulo": 285 + }, + "governor": { + "votes": 3705, + "comparecimento": 5802, + "votosValidos": 5141, + "votosBranco": 204, + "votosNulo": 457 + } } }, "carinhanha": { @@ -1062,6 +4629,47 @@ "2014": 11979, "2018": 10221, "2022": 16162 + }, + "campoFederalVotesByYear": { + "2014": 5744, + "2018": 1641, + "2022": 5866 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 14760, + "votosValidos": 11979, + "votosBranco": 439, + "votosNulo": 1172 + }, + "2018": { + "comparecimento": 15433, + "votosValidos": 10221, + "votosBranco": 365, + "votosNulo": 677 + }, + "2022": { + "comparecimento": 17553, + "votosValidos": 16162, + "votosBranco": 427, + "votosNulo": 416 + } + }, + "majoritarian2022": { + "president": { + "votes": 11160, + "comparecimento": 17555, + "votosValidos": 16902, + "votosBranco": 135, + "votosNulo": 518 + }, + "governor": { + "votes": 9501, + "comparecimento": 17553, + "votosValidos": 16438, + "votosBranco": 326, + "votosNulo": 788 + } } }, "casa-nova": { @@ -1074,6 +4682,47 @@ "2014": 31418, "2018": 31015, "2022": 41007 + }, + "campoFederalVotesByYear": { + "2014": 6831, + "2018": 7717, + "2022": 1522 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 40097, + "votosValidos": 31418, + "votosBranco": 2138, + "votosNulo": 3090 + }, + "2018": { + "comparecimento": 41565, + "votosValidos": 31015, + "votosBranco": 1252, + "votosNulo": 6031 + }, + "2022": { + "comparecimento": 46007, + "votosValidos": 41007, + "votosBranco": 1290, + "votosNulo": 2177 + } + }, + "majoritarian2022": { + "president": { + "votes": 34612, + "comparecimento": 46010, + "votosValidos": 44250, + "votosBranco": 375, + "votosNulo": 1385 + }, + "governor": { + "votes": 28964, + "comparecimento": 46007, + "votosValidos": 41506, + "votosBranco": 1342, + "votosNulo": 3158 + } } }, "castro-alves": { @@ -1086,6 +4735,47 @@ "2014": 14110, "2018": 13182, "2022": 15570 + }, + "campoFederalVotesByYear": { + "2014": 1944, + "2018": 4175, + "2022": 2393 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 16682, + "votosValidos": 14110, + "votosBranco": 850, + "votosNulo": 526 + }, + "2018": { + "comparecimento": 16729, + "votosValidos": 13182, + "votosBranco": 670, + "votosNulo": 1829 + }, + "2022": { + "comparecimento": 18031, + "votosValidos": 15570, + "votosBranco": 936, + "votosNulo": 839 + } + }, + "majoritarian2022": { + "president": { + "votes": 13961, + "comparecimento": 18031, + "votosValidos": 17302, + "votosBranco": 177, + "votosNulo": 552 + }, + "governor": { + "votes": 11192, + "comparecimento": 18031, + "votosValidos": 16783, + "votosBranco": 402, + "votosNulo": 845 + } } }, "catolandia": { @@ -1098,6 +4788,47 @@ "2014": 1921, "2018": 2460, "2022": 2950 + }, + "campoFederalVotesByYear": { + "2014": 178, + "2018": 780, + "2022": 112 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 2356, + "votosValidos": 1921, + "votosBranco": 174, + "votosNulo": 55 + }, + "2018": { + "comparecimento": 2797, + "votosValidos": 2460, + "votosBranco": 85, + "votosNulo": 97 + }, + "2022": { + "comparecimento": 3229, + "votosValidos": 2950, + "votosBranco": 114, + "votosNulo": 46 + } + }, + "majoritarian2022": { + "president": { + "votes": 2448, + "comparecimento": 3229, + "votosValidos": 3119, + "votosBranco": 38, + "votosNulo": 72 + }, + "governor": { + "votes": 1938, + "comparecimento": 3229, + "votosValidos": 3020, + "votosBranco": 83, + "votosNulo": 126 + } } }, "catu": { @@ -1110,6 +4841,47 @@ "2014": 22257, "2018": 22481, "2022": 27620 + }, + "campoFederalVotesByYear": { + "2014": 6692, + "2018": 7501, + "2022": 4309 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 31876, + "votosValidos": 22257, + "votosBranco": 4485, + "votosNulo": 2601 + }, + "2018": { + "comparecimento": 32750, + "votosValidos": 22481, + "votosBranco": 2220, + "votosNulo": 5263 + }, + "2022": { + "comparecimento": 33398, + "votosValidos": 27620, + "votosBranco": 2208, + "votosNulo": 1950 + } + }, + "majoritarian2022": { + "president": { + "votes": 23703, + "comparecimento": 33398, + "votosValidos": 31182, + "votosBranco": 808, + "votosNulo": 1408 + }, + "governor": { + "votes": 14127, + "comparecimento": 33398, + "votosValidos": 29571, + "votosBranco": 1618, + "votosNulo": 2203 + } } }, "caturama": { @@ -1122,6 +4894,47 @@ "2014": 4037, "2018": 4288, "2022": 4831 + }, + "campoFederalVotesByYear": { + "2014": 146, + "2018": 389, + "2022": 596 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4838, + "votosValidos": 4037, + "votosBranco": 307, + "votosNulo": 138 + }, + "2018": { + "comparecimento": 5399, + "votosValidos": 4288, + "votosBranco": 242, + "votosNulo": 456 + }, + "2022": { + "comparecimento": 5677, + "votosValidos": 4831, + "votosBranco": 345, + "votosNulo": 253 + } + }, + "majoritarian2022": { + "president": { + "votes": 4477, + "comparecimento": 5677, + "votosValidos": 5353, + "votosBranco": 85, + "votosNulo": 239 + }, + "governor": { + "votes": 2332, + "comparecimento": 5677, + "votosValidos": 5186, + "votosBranco": 161, + "votosNulo": 330 + } } }, "central": { @@ -1134,6 +4947,47 @@ "2014": 7924, "2018": 6033, "2022": 9630 + }, + "campoFederalVotesByYear": { + "2014": 2813, + "2018": 1299, + "2022": 1905 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9773, + "votosValidos": 7924, + "votosBranco": 635, + "votosNulo": 398 + }, + "2018": { + "comparecimento": 10049, + "votosValidos": 6033, + "votosBranco": 360, + "votosNulo": 543 + }, + "2022": { + "comparecimento": 10797, + "votosValidos": 9630, + "votosBranco": 455, + "votosNulo": 286 + } + }, + "majoritarian2022": { + "president": { + "votes": 8101, + "comparecimento": 10798, + "votosValidos": 10293, + "votosBranco": 151, + "votosNulo": 354 + }, + "governor": { + "votes": 5913, + "comparecimento": 10797, + "votosValidos": 9970, + "votosBranco": 249, + "votosNulo": 577 + } } }, "chorrocho": { @@ -1146,6 +5000,47 @@ "2014": 5404, "2018": 5913, "2022": 6563 + }, + "campoFederalVotesByYear": { + "2014": 539, + "2018": 1112, + "2022": 826 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6762, + "votosValidos": 5404, + "votosBranco": 149, + "votosNulo": 577 + }, + "2018": { + "comparecimento": 6713, + "votosValidos": 5913, + "votosBranco": 103, + "votosNulo": 321 + }, + "2022": { + "comparecimento": 7027, + "votosValidos": 6563, + "votosBranco": 142, + "votosNulo": 109 + } + }, + "majoritarian2022": { + "president": { + "votes": 5651, + "comparecimento": 7033, + "votosValidos": 6750, + "votosBranco": 63, + "votosNulo": 220 + }, + "governor": { + "votes": 4310, + "comparecimento": 7027, + "votosValidos": 6597, + "votosBranco": 87, + "votosNulo": 343 + } } }, "cicero-dantas": { @@ -1158,6 +5053,47 @@ "2014": 14552, "2018": 15758, "2022": 18242 + }, + "campoFederalVotesByYear": { + "2014": 1903, + "2018": 3483, + "2022": 1860 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18264, + "votosValidos": 14552, + "votosBranco": 1608, + "votosNulo": 599 + }, + "2018": { + "comparecimento": 18796, + "votosValidos": 15758, + "votosBranco": 842, + "votosNulo": 1093 + }, + "2022": { + "comparecimento": 20222, + "votosValidos": 18242, + "votosBranco": 762, + "votosNulo": 444 + } + }, + "majoritarian2022": { + "president": { + "votes": 14472, + "comparecimento": 20227, + "votosValidos": 19280, + "votosBranco": 278, + "votosNulo": 669 + }, + "governor": { + "votes": 11474, + "comparecimento": 20222, + "votosValidos": 18567, + "votosBranco": 581, + "votosNulo": 1074 + } } }, "cipo": { @@ -1170,6 +5106,47 @@ "2014": 8292, "2018": 8340, "2022": 9761 + }, + "campoFederalVotesByYear": { + "2014": 3062, + "2018": 2694, + "2022": 1680 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9685, + "votosValidos": 8292, + "votosBranco": 369, + "votosNulo": 354 + }, + "2018": { + "comparecimento": 9867, + "votosValidos": 8340, + "votosBranco": 262, + "votosNulo": 606 + }, + "2022": { + "comparecimento": 10710, + "votosValidos": 9761, + "votosBranco": 210, + "votosNulo": 295 + } + }, + "majoritarian2022": { + "president": { + "votes": 6813, + "comparecimento": 10712, + "votosValidos": 10173, + "votosBranco": 98, + "votosNulo": 441 + }, + "governor": { + "votes": 6060, + "comparecimento": 10710, + "votosValidos": 9917, + "votosBranco": 153, + "votosNulo": 636 + } } }, "coaraci": { @@ -1182,6 +5159,47 @@ "2014": 9894, "2018": 9713, "2022": 10926 + }, + "campoFederalVotesByYear": { + "2014": 4572, + "2018": 1979, + "2022": 1805 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12157, + "votosValidos": 9894, + "votosBranco": 656, + "votosNulo": 488 + }, + "2018": { + "comparecimento": 11709, + "votosValidos": 9713, + "votosBranco": 336, + "votosNulo": 832 + }, + "2022": { + "comparecimento": 12047, + "votosValidos": 10926, + "votosBranco": 346, + "votosNulo": 345 + } + }, + "majoritarian2022": { + "president": { + "votes": 7483, + "comparecimento": 12047, + "votosValidos": 11450, + "votosBranco": 137, + "votosNulo": 460 + }, + "governor": { + "votes": 6150, + "comparecimento": 12047, + "votosValidos": 11135, + "votosBranco": 247, + "votosNulo": 665 + } } }, "cocos": { @@ -1194,6 +5212,47 @@ "2014": 8338, "2018": 9285, "2022": 11103 + }, + "campoFederalVotesByYear": { + "2014": 631, + "2018": 286, + "2022": 1537 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9880, + "votosValidos": 8338, + "votosBranco": 429, + "votosNulo": 210 + }, + "2018": { + "comparecimento": 11426, + "votosValidos": 9285, + "votosBranco": 300, + "votosNulo": 375 + }, + "2022": { + "comparecimento": 12100, + "votosValidos": 11103, + "votosBranco": 359, + "votosNulo": 226 + } + }, + "majoritarian2022": { + "president": { + "votes": 7878, + "comparecimento": 12100, + "votosValidos": 11622, + "votosBranco": 125, + "votosNulo": 353 + }, + "governor": { + "votes": 6672, + "comparecimento": 12100, + "votosValidos": 11286, + "votosBranco": 269, + "votosNulo": 544 + } } }, "conceicao-da-feira": { @@ -1206,6 +5265,47 @@ "2014": 9351, "2018": 11023, "2022": 12375 + }, + "campoFederalVotesByYear": { + "2014": 3596, + "2018": 3352, + "2022": 1784 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12356, + "votosValidos": 9351, + "votosBranco": 1275, + "votosNulo": 747 + }, + "2018": { + "comparecimento": 13906, + "votosValidos": 11023, + "votosBranco": 622, + "votosNulo": 1394 + }, + "2022": { + "comparecimento": 14354, + "votosValidos": 12375, + "votosBranco": 719, + "votosNulo": 788 + } + }, + "majoritarian2022": { + "president": { + "votes": 10569, + "comparecimento": 14354, + "votosValidos": 13574, + "votosBranco": 227, + "votosNulo": 553 + }, + "governor": { + "votes": 7839, + "comparecimento": 14354, + "votosValidos": 13055, + "votosBranco": 460, + "votosNulo": 838 + } } }, "conceicao-do-almeida": { @@ -1218,6 +5318,47 @@ "2014": 8994, "2018": 8510, "2022": 10376 + }, + "campoFederalVotesByYear": { + "2014": 6454, + "2018": 1795, + "2022": 1261 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11083, + "votosValidos": 8994, + "votosBranco": 794, + "votosNulo": 436 + }, + "2018": { + "comparecimento": 11106, + "votosValidos": 8510, + "votosBranco": 492, + "votosNulo": 1256 + }, + "2022": { + "comparecimento": 12113, + "votosValidos": 10376, + "votosBranco": 659, + "votosNulo": 623 + } + }, + "majoritarian2022": { + "president": { + "votes": 9457, + "comparecimento": 12113, + "votosValidos": 11541, + "votosBranco": 148, + "votosNulo": 424 + }, + "governor": { + "votes": 7153, + "comparecimento": 12113, + "votosValidos": 11200, + "votosBranco": 274, + "votosNulo": 639 + } } }, "conceicao-do-coite": { @@ -1230,6 +5371,47 @@ "2014": 33567, "2018": 32634, "2022": 38386 + }, + "campoFederalVotesByYear": { + "2014": 16308, + "2018": 15218, + "2022": 13781 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 39866, + "votosValidos": 33567, + "votosBranco": 2400, + "votosNulo": 1258 + }, + "2018": { + "comparecimento": 41055, + "votosValidos": 32634, + "votosBranco": 1673, + "votosNulo": 4342 + }, + "2022": { + "comparecimento": 44255, + "votosValidos": 38386, + "votosBranco": 2278, + "votosNulo": 2037 + } + }, + "majoritarian2022": { + "president": { + "votes": 26448, + "comparecimento": 44257, + "votosValidos": 41975, + "votosBranco": 755, + "votosNulo": 1527 + }, + "governor": { + "votes": 19627, + "comparecimento": 44255, + "votosValidos": 41039, + "votosBranco": 1100, + "votosNulo": 2113 + } } }, "conceicao-do-jacuipe": { @@ -1242,6 +5424,47 @@ "2014": 14187, "2018": 14148, "2022": 17638 + }, + "campoFederalVotesByYear": { + "2014": 908, + "2018": 1780, + "2022": 3019 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18133, + "votosValidos": 14187, + "votosBranco": 1686, + "votosNulo": 1084 + }, + "2018": { + "comparecimento": 19400, + "votosValidos": 14148, + "votosBranco": 1039, + "votosNulo": 2980 + }, + "2022": { + "comparecimento": 21622, + "votosValidos": 17638, + "votosBranco": 1730, + "votosNulo": 1360 + } + }, + "majoritarian2022": { + "president": { + "votes": 14526, + "comparecimento": 21622, + "votosValidos": 20551, + "votosBranco": 363, + "votosNulo": 708 + }, + "governor": { + "votes": 7148, + "comparecimento": 21622, + "votosValidos": 19729, + "votosBranco": 752, + "votosNulo": 1140 + } } }, "conde": { @@ -1254,6 +5477,47 @@ "2014": 9137, "2018": 10213, "2022": 12569 + }, + "campoFederalVotesByYear": { + "2014": 574, + "2018": 2301, + "2022": 3219 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11865, + "votosValidos": 9137, + "votosBranco": 789, + "votosNulo": 910 + }, + "2018": { + "comparecimento": 12675, + "votosValidos": 10213, + "votosBranco": 423, + "votosNulo": 955 + }, + "2022": { + "comparecimento": 14252, + "votosValidos": 12569, + "votosBranco": 551, + "votosNulo": 469 + } + }, + "majoritarian2022": { + "president": { + "votes": 10418, + "comparecimento": 14254, + "votosValidos": 13566, + "votosBranco": 168, + "votosNulo": 520 + }, + "governor": { + "votes": 5667, + "comparecimento": 14252, + "votosValidos": 13143, + "votosBranco": 343, + "votosNulo": 766 + } } }, "condeuba": { @@ -1266,6 +5530,47 @@ "2014": 8310, "2018": 8086, "2022": 9923 + }, + "campoFederalVotesByYear": { + "2014": 4823, + "2018": 4754, + "2022": 3207 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10121, + "votosValidos": 8310, + "votosBranco": 567, + "votosNulo": 330 + }, + "2018": { + "comparecimento": 10388, + "votosValidos": 8086, + "votosBranco": 400, + "votosNulo": 1114 + }, + "2022": { + "comparecimento": 11304, + "votosValidos": 9923, + "votosBranco": 548, + "votosNulo": 439 + } + }, + "majoritarian2022": { + "president": { + "votes": 7264, + "comparecimento": 11305, + "votosValidos": 10634, + "votosBranco": 164, + "votosNulo": 507 + }, + "governor": { + "votes": 6138, + "comparecimento": 11304, + "votosValidos": 10217, + "votosBranco": 330, + "votosNulo": 757 + } } }, "contendas-do-sincora": { @@ -1278,6 +5583,47 @@ "2014": 0, "2018": 2549, "2022": 3097 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 190, + "2022": 135 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 3044, + "votosValidos": 2549, + "votosBranco": 89, + "votosNulo": 214 + }, + "2022": { + "comparecimento": 3453, + "votosValidos": 3097, + "votosBranco": 137, + "votosNulo": 93 + } + }, + "majoritarian2022": { + "president": { + "votes": 2475, + "comparecimento": 3453, + "votosValidos": 3293, + "votosBranco": 52, + "votosNulo": 108 + }, + "governor": { + "votes": 1608, + "comparecimento": 3453, + "votosValidos": 3210, + "votosBranco": 73, + "votosNulo": 169 + } } }, "coracao-de-maria": { @@ -1290,6 +5636,47 @@ "2014": 12481, "2018": 11836, "2022": 14422 + }, + "campoFederalVotesByYear": { + "2014": 6127, + "2018": 3548, + "2022": 1659 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15941, + "votosValidos": 12481, + "votosBranco": 1373, + "votosNulo": 771 + }, + "2018": { + "comparecimento": 16416, + "votosValidos": 11836, + "votosBranco": 869, + "votosNulo": 2246 + }, + "2022": { + "comparecimento": 17675, + "votosValidos": 14422, + "votosBranco": 1300, + "votosNulo": 1212 + } + }, + "majoritarian2022": { + "president": { + "votes": 13554, + "comparecimento": 17675, + "votosValidos": 16780, + "votosBranco": 233, + "votosNulo": 662 + }, + "governor": { + "votes": 9649, + "comparecimento": 17675, + "votosValidos": 15874, + "votosBranco": 578, + "votosNulo": 1223 + } } }, "cordeiros": { @@ -1302,6 +5689,47 @@ "2014": 3734, "2018": 3859, "2022": 4707 + }, + "campoFederalVotesByYear": { + "2014": 1890, + "2018": 2379, + "2022": 2312 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4509, + "votosValidos": 3734, + "votosBranco": 158, + "votosNulo": 144 + }, + "2018": { + "comparecimento": 4759, + "votosValidos": 3859, + "votosBranco": 135, + "votosNulo": 368 + }, + "2022": { + "comparecimento": 5200, + "votosValidos": 4707, + "votosBranco": 129, + "votosNulo": 124 + } + }, + "majoritarian2022": { + "president": { + "votes": 3144, + "comparecimento": 5201, + "votosValidos": 4904, + "votosBranco": 60, + "votosNulo": 237 + }, + "governor": { + "votes": 2569, + "comparecimento": 5200, + "votosValidos": 4769, + "votosBranco": 78, + "votosNulo": 353 + } } }, "coribe": { @@ -1314,6 +5742,47 @@ "2014": 7798, "2018": 7380, "2022": 8769 + }, + "campoFederalVotesByYear": { + "2014": 203, + "2018": 773, + "2022": 1303 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8815, + "votosValidos": 7798, + "votosBranco": 270, + "votosNulo": 159 + }, + "2018": { + "comparecimento": 8955, + "votosValidos": 7380, + "votosBranco": 265, + "votosNulo": 457 + }, + "2022": { + "comparecimento": 9614, + "votosValidos": 8769, + "votosBranco": 288, + "votosNulo": 217 + } + }, + "majoritarian2022": { + "president": { + "votes": 6845, + "comparecimento": 9616, + "votosValidos": 9198, + "votosBranco": 110, + "votosNulo": 308 + }, + "governor": { + "votes": 4808, + "comparecimento": 9614, + "votosValidos": 8962, + "votosBranco": 200, + "votosNulo": 452 + } } }, "coronel-joao-sa": { @@ -1326,6 +5795,47 @@ "2014": 0, "2018": 8705, "2022": 10040 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 4309, + "2022": 1223 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 10008, + "votosValidos": 8705, + "votosBranco": 278, + "votosNulo": 428 + }, + "2022": { + "comparecimento": 11353, + "votosValidos": 10040, + "votosBranco": 544, + "votosNulo": 356 + } + }, + "majoritarian2022": { + "president": { + "votes": 8511, + "comparecimento": 11353, + "votosValidos": 10789, + "votosBranco": 125, + "votosNulo": 439 + }, + "governor": { + "votes": 6162, + "comparecimento": 11353, + "votosValidos": 10424, + "votosBranco": 251, + "votosNulo": 678 + } } }, "correntina": { @@ -1338,6 +5848,47 @@ "2014": 14828, "2018": 14208, "2022": 18223 + }, + "campoFederalVotesByYear": { + "2014": 1513, + "2018": 5337, + "2022": 7172 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18233, + "votosValidos": 14828, + "votosBranco": 932, + "votosNulo": 889 + }, + "2018": { + "comparecimento": 18833, + "votosValidos": 14208, + "votosBranco": 826, + "votosNulo": 1956 + }, + "2022": { + "comparecimento": 20861, + "votosValidos": 18223, + "votosBranco": 827, + "votosNulo": 837 + } + }, + "majoritarian2022": { + "president": { + "votes": 14605, + "comparecimento": 20863, + "votosValidos": 19772, + "votosBranco": 266, + "votosNulo": 825 + }, + "governor": { + "votes": 10717, + "comparecimento": 20861, + "votosValidos": 18778, + "votosBranco": 655, + "votosNulo": 1427 + } } }, "cotegipe": { @@ -1350,6 +5901,47 @@ "2014": 6075, "2018": 6712, "2022": 8406 + }, + "campoFederalVotesByYear": { + "2014": 394, + "2018": 563, + "2022": 402 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7703, + "votosValidos": 6075, + "votosBranco": 458, + "votosNulo": 405 + }, + "2018": { + "comparecimento": 8189, + "votosValidos": 6712, + "votosBranco": 214, + "votosNulo": 284 + }, + "2022": { + "comparecimento": 8986, + "votosValidos": 8406, + "votosBranco": 182, + "votosNulo": 103 + } + }, + "majoritarian2022": { + "president": { + "votes": 7011, + "comparecimento": 8986, + "votosValidos": 8765, + "votosBranco": 55, + "votosNulo": 166 + }, + "governor": { + "votes": 4503, + "comparecimento": 8986, + "votosValidos": 8546, + "votosBranco": 135, + "votosNulo": 305 + } } }, "cravolandia": { @@ -1362,6 +5954,47 @@ "2014": 0, "2018": 2289, "2022": 2790 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 550, + "2022": 158 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 3002, + "votosValidos": 2289, + "votosBranco": 167, + "votosNulo": 323 + }, + "2022": { + "comparecimento": 3161, + "votosValidos": 2790, + "votosBranco": 129, + "votosNulo": 129 + } + }, + "majoritarian2022": { + "president": { + "votes": 2376, + "comparecimento": 3161, + "votosValidos": 2917, + "votosBranco": 65, + "votosNulo": 179 + }, + "governor": { + "votes": 1906, + "comparecimento": 3161, + "votosValidos": 2770, + "votosBranco": 127, + "votosNulo": 264 + } } }, "crisopolis": { @@ -1374,6 +6007,47 @@ "2014": 9011, "2018": 9944, "2022": 11170 + }, + "campoFederalVotesByYear": { + "2014": 1879, + "2018": 4725, + "2022": 577 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10763, + "votosValidos": 9011, + "votosBranco": 634, + "votosNulo": 292 + }, + "2018": { + "comparecimento": 11436, + "votosValidos": 9944, + "votosBranco": 322, + "votosNulo": 488 + }, + "2022": { + "comparecimento": 12271, + "votosValidos": 11170, + "votosBranco": 364, + "votosNulo": 314 + } + }, + "majoritarian2022": { + "president": { + "votes": 9712, + "comparecimento": 12271, + "votosValidos": 11631, + "votosBranco": 137, + "votosNulo": 503 + }, + "governor": { + "votes": 7428, + "comparecimento": 12271, + "votosValidos": 11293, + "votosBranco": 231, + "votosNulo": 747 + } } }, "cristopolis": { @@ -1386,6 +6060,47 @@ "2014": 0, "2018": 7475, "2022": 8692 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 587, + "2022": 240 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8883, + "votosValidos": 7475, + "votosBranco": 303, + "votosNulo": 409 + }, + "2022": { + "comparecimento": 9604, + "votosValidos": 8692, + "votosBranco": 323, + "votosNulo": 180 + } + }, + "majoritarian2022": { + "president": { + "votes": 6615, + "comparecimento": 9604, + "votosValidos": 9146, + "votosBranco": 123, + "votosNulo": 335 + }, + "governor": { + "votes": 4672, + "comparecimento": 9604, + "votosValidos": 8769, + "votosBranco": 275, + "votosNulo": 560 + } } }, "cruz-das-almas": { @@ -1398,6 +6113,47 @@ "2014": 28187, "2018": 30531, "2022": 34709 + }, + "campoFederalVotesByYear": { + "2014": 10458, + "2018": 9121, + "2022": 9617 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 35385, + "votosValidos": 28187, + "votosBranco": 3124, + "votosNulo": 1807 + }, + "2018": { + "comparecimento": 38588, + "votosValidos": 30531, + "votosBranco": 1583, + "votosNulo": 3977 + }, + "2022": { + "comparecimento": 40152, + "votosValidos": 34709, + "votosBranco": 2458, + "votosNulo": 1734 + } + }, + "majoritarian2022": { + "president": { + "votes": 25821, + "comparecimento": 40153, + "votosValidos": 38429, + "votosBranco": 629, + "votosNulo": 1095 + }, + "governor": { + "votes": 16758, + "comparecimento": 40152, + "votosValidos": 37362, + "votosBranco": 1119, + "votosNulo": 1668 + } } }, "curaca": { @@ -1410,6 +6166,47 @@ "2014": 15497, "2018": 10768, "2022": 19210 + }, + "campoFederalVotesByYear": { + "2014": 5931, + "2018": 1798, + "2022": 1690 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18644, + "votosValidos": 15497, + "votosBranco": 660, + "votosNulo": 482 + }, + "2018": { + "comparecimento": 18993, + "votosValidos": 10768, + "votosBranco": 465, + "votosNulo": 6543 + }, + "2022": { + "comparecimento": 20869, + "votosValidos": 19210, + "votosBranco": 443, + "votosNulo": 427 + } + }, + "majoritarian2022": { + "president": { + "votes": 15857, + "comparecimento": 20886, + "votosValidos": 20116, + "votosBranco": 164, + "votosNulo": 606 + }, + "governor": { + "votes": 12315, + "comparecimento": 20869, + "votosValidos": 19478, + "votosBranco": 362, + "votosNulo": 1029 + } } }, "dario-meira": { @@ -1422,6 +6219,47 @@ "2014": 4595, "2018": 4808, "2022": 5432 + }, + "campoFederalVotesByYear": { + "2014": 1034, + "2018": 717, + "2022": 880 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5764, + "votosValidos": 4595, + "votosBranco": 210, + "votosNulo": 155 + }, + "2018": { + "comparecimento": 5749, + "votosValidos": 4808, + "votosBranco": 136, + "votosNulo": 287 + }, + "2022": { + "comparecimento": 6028, + "votosValidos": 5432, + "votosBranco": 153, + "votosNulo": 137 + } + }, + "majoritarian2022": { + "president": { + "votes": 4307, + "comparecimento": 6028, + "votosValidos": 5702, + "votosBranco": 79, + "votosNulo": 247 + }, + "governor": { + "votes": 2789, + "comparecimento": 6028, + "votosValidos": 5566, + "votosBranco": 96, + "votosNulo": 366 + } } }, "dias-d-avila": { @@ -1434,6 +6272,47 @@ "2014": 26751, "2018": 28223, "2022": 34540 + }, + "campoFederalVotesByYear": { + "2014": 7839, + "2018": 6448, + "2022": 7528 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 34754, + "votosValidos": 26751, + "votosBranco": 3398, + "votosNulo": 2105 + }, + "2018": { + "comparecimento": 39326, + "votosValidos": 28223, + "votosBranco": 2106, + "votosNulo": 4888 + }, + "2022": { + "comparecimento": 42236, + "votosValidos": 34540, + "votosBranco": 3360, + "votosNulo": 2702 + } + }, + "majoritarian2022": { + "president": { + "votes": 28630, + "comparecimento": 42236, + "votosValidos": 39739, + "votosBranco": 812, + "votosNulo": 1685 + }, + "governor": { + "votes": 16201, + "comparecimento": 42236, + "votosValidos": 38191, + "votosBranco": 1517, + "votosNulo": 2523 + } } }, "dom-basilio": { @@ -1446,6 +6325,47 @@ "2014": 5835, "2018": 6242, "2022": 7743 + }, + "campoFederalVotesByYear": { + "2014": 1068, + "2018": 963, + "2022": 3069 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7552, + "votosValidos": 5835, + "votosBranco": 905, + "votosNulo": 191 + }, + "2018": { + "comparecimento": 7795, + "votosValidos": 6242, + "votosBranco": 527, + "votosNulo": 614 + }, + "2022": { + "comparecimento": 8778, + "votosValidos": 7743, + "votosBranco": 482, + "votosNulo": 237 + } + }, + "majoritarian2022": { + "president": { + "votes": 7163, + "comparecimento": 8778, + "votosValidos": 8397, + "votosBranco": 123, + "votosNulo": 258 + }, + "governor": { + "votes": 6075, + "comparecimento": 8778, + "votosValidos": 8056, + "votosBranco": 273, + "votosNulo": 449 + } } }, "dom-macedo-costa": { @@ -1458,6 +6378,47 @@ "2014": 0, "2018": 2573, "2022": 3296 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1258, + "2022": 1590 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 3283, + "votosValidos": 2573, + "votosBranco": 74, + "votosNulo": 396 + }, + "2022": { + "comparecimento": 3679, + "votosValidos": 3296, + "votosBranco": 125, + "votosNulo": 142 + } + }, + "majoritarian2022": { + "president": { + "votes": 2505, + "comparecimento": 3679, + "votosValidos": 3503, + "votosBranco": 47, + "votosNulo": 129 + }, + "governor": { + "votes": 1811, + "comparecimento": 3679, + "votosValidos": 3464, + "votosBranco": 55, + "votosNulo": 160 + } } }, "elisio-medrado": { @@ -1470,6 +6431,47 @@ "2014": 4460, "2018": 4096, "2022": 5159 + }, + "campoFederalVotesByYear": { + "2014": 2197, + "2018": 636, + "2022": 551 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5517, + "votosValidos": 4460, + "votosBranco": 365, + "votosNulo": 183 + }, + "2018": { + "comparecimento": 5381, + "votosValidos": 4096, + "votosBranco": 184, + "votosNulo": 680 + }, + "2022": { + "comparecimento": 5899, + "votosValidos": 5159, + "votosBranco": 276, + "votosNulo": 298 + } + }, + "majoritarian2022": { + "president": { + "votes": 4017, + "comparecimento": 5899, + "votosValidos": 5525, + "votosBranco": 109, + "votosNulo": 265 + }, + "governor": { + "votes": 3175, + "comparecimento": 5899, + "votosValidos": 5284, + "votosBranco": 178, + "votosNulo": 437 + } } }, "encruzilhada": { @@ -1482,6 +6484,47 @@ "2014": 8460, "2018": 9043, "2022": 10465 + }, + "campoFederalVotesByYear": { + "2014": 4744, + "2018": 4506, + "2022": 1011 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10265, + "votosValidos": 8460, + "votosBranco": 361, + "votosNulo": 367 + }, + "2018": { + "comparecimento": 10785, + "votosValidos": 9043, + "votosBranco": 293, + "votosNulo": 637 + }, + "2022": { + "comparecimento": 11698, + "votosValidos": 10465, + "votosBranco": 289, + "votosNulo": 302 + } + }, + "majoritarian2022": { + "president": { + "votes": 7979, + "comparecimento": 11698, + "votosValidos": 11052, + "votosBranco": 94, + "votosNulo": 552 + }, + "governor": { + "votes": 7389, + "comparecimento": 11698, + "votosValidos": 10494, + "votosBranco": 283, + "votosNulo": 921 + } } }, "entre-rios": { @@ -1494,6 +6537,47 @@ "2014": 16115, "2018": 16934, "2022": 19433 + }, + "campoFederalVotesByYear": { + "2014": 2388, + "2018": 5150, + "2022": 5709 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 21170, + "votosValidos": 16115, + "votosBranco": 2172, + "votosNulo": 1285 + }, + "2018": { + "comparecimento": 23107, + "votosValidos": 16934, + "votosBranco": 1333, + "votosNulo": 2954 + }, + "2022": { + "comparecimento": 23830, + "votosValidos": 19433, + "votosBranco": 1689, + "votosNulo": 1514 + } + }, + "majoritarian2022": { + "president": { + "votes": 17300, + "comparecimento": 23831, + "votosValidos": 22445, + "votosBranco": 415, + "votosNulo": 971 + }, + "governor": { + "votes": 12355, + "comparecimento": 23830, + "votosValidos": 21398, + "votosBranco": 874, + "votosNulo": 1556 + } } }, "erico-cardoso": { @@ -1506,6 +6590,47 @@ "2014": 4671, "2018": 4241, "2022": 5628 + }, + "campoFederalVotesByYear": { + "2014": 99, + "2018": 244, + "2022": 257 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5657, + "votosValidos": 4671, + "votosBranco": 299, + "votosNulo": 137 + }, + "2018": { + "comparecimento": 5527, + "votosValidos": 4241, + "votosBranco": 370, + "votosNulo": 487 + }, + "2022": { + "comparecimento": 6392, + "votosValidos": 5628, + "votosBranco": 234, + "votosNulo": 138 + } + }, + "majoritarian2022": { + "president": { + "votes": 4619, + "comparecimento": 6392, + "votosValidos": 5942, + "votosBranco": 96, + "votosNulo": 354 + }, + "governor": { + "votes": 3471, + "comparecimento": 6392, + "votosValidos": 5781, + "votosBranco": 145, + "votosNulo": 466 + } } }, "esplanada": { @@ -1518,6 +6643,47 @@ "2014": 13259, "2018": 14666, "2022": 17308 + }, + "campoFederalVotesByYear": { + "2014": 2560, + "2018": 4385, + "2022": 3414 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 17620, + "votosValidos": 13259, + "votosBranco": 1865, + "votosNulo": 936 + }, + "2018": { + "comparecimento": 18788, + "votosValidos": 14666, + "votosBranco": 972, + "votosNulo": 1971 + }, + "2022": { + "comparecimento": 20629, + "votosValidos": 17308, + "votosBranco": 1354, + "votosNulo": 1105 + } + }, + "majoritarian2022": { + "president": { + "votes": 15155, + "comparecimento": 20632, + "votosValidos": 19584, + "votosBranco": 307, + "votosNulo": 741 + }, + "governor": { + "votes": 10149, + "comparecimento": 20629, + "votosValidos": 18686, + "votosBranco": 688, + "votosNulo": 1255 + } } }, "euclides-da-cunha": { @@ -1530,6 +6696,47 @@ "2014": 26016, "2018": 26081, "2022": 32174 + }, + "campoFederalVotesByYear": { + "2014": 8365, + "2018": 1318, + "2022": 1483 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 30712, + "votosValidos": 26016, + "votosBranco": 1385, + "votosNulo": 1061 + }, + "2018": { + "comparecimento": 31981, + "votosValidos": 26081, + "votosBranco": 890, + "votosNulo": 2765 + }, + "2022": { + "comparecimento": 36031, + "votosValidos": 32174, + "votosBranco": 1279, + "votosNulo": 1013 + } + }, + "majoritarian2022": { + "president": { + "votes": 27893, + "comparecimento": 36041, + "votosValidos": 34631, + "votosBranco": 368, + "votosNulo": 1042 + }, + "governor": { + "votes": 20773, + "comparecimento": 36031, + "votosValidos": 33217, + "votosBranco": 819, + "votosNulo": 1991 + } } }, "eunapolis": { @@ -1542,6 +6749,47 @@ "2014": 42112, "2018": 47764, "2022": 53978 + }, + "campoFederalVotesByYear": { + "2014": 7710, + "2018": 5412, + "2022": 6422 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 53938, + "votosValidos": 42112, + "votosBranco": 4983, + "votosNulo": 2728 + }, + "2018": { + "comparecimento": 62399, + "votosValidos": 47764, + "votosBranco": 2878, + "votosNulo": 6844 + }, + "2022": { + "comparecimento": 63475, + "votosValidos": 53978, + "votosBranco": 3710, + "votosNulo": 2866 + } + }, + "majoritarian2022": { + "president": { + "votes": 31206, + "comparecimento": 63475, + "votosValidos": 60666, + "votosBranco": 784, + "votosNulo": 2025 + }, + "governor": { + "votes": 22405, + "comparecimento": 63475, + "votosValidos": 57819, + "votosBranco": 2156, + "votosNulo": 3490 + } } }, "fatima": { @@ -1554,6 +6802,47 @@ "2014": 8215, "2018": 6529, "2022": 10989 + }, + "campoFederalVotesByYear": { + "2014": 1879, + "2018": 2956, + "2022": 347 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10504, + "votosValidos": 8215, + "votosBranco": 1099, + "votosNulo": 398 + }, + "2018": { + "comparecimento": 11114, + "votosValidos": 6529, + "votosBranco": 478, + "votosNulo": 713 + }, + "2022": { + "comparecimento": 12288, + "votosValidos": 10989, + "votosBranco": 514, + "votosNulo": 318 + } + }, + "majoritarian2022": { + "president": { + "votes": 9803, + "comparecimento": 12289, + "votosValidos": 11763, + "votosBranco": 148, + "votosNulo": 378 + }, + "governor": { + "votes": 7469, + "comparecimento": 12288, + "votosValidos": 11302, + "votosBranco": 294, + "votosNulo": 692 + } } }, "feira-da-mata": { @@ -1566,6 +6855,47 @@ "2014": 3026, "2018": 2992, "2022": 3869 + }, + "campoFederalVotesByYear": { + "2014": 1190, + "2018": 1031, + "2022": 697 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3432, + "votosValidos": 3026, + "votosBranco": 100, + "votosNulo": 52 + }, + "2018": { + "comparecimento": 3571, + "votosValidos": 2992, + "votosBranco": 93, + "votosNulo": 137 + }, + "2022": { + "comparecimento": 4121, + "votosValidos": 3869, + "votosBranco": 93, + "votosNulo": 54 + } + }, + "majoritarian2022": { + "president": { + "votes": 2518, + "comparecimento": 4121, + "votosValidos": 4006, + "votosBranco": 34, + "votosNulo": 81 + }, + "governor": { + "votes": 2452, + "comparecimento": 4121, + "votosValidos": 3875, + "votosBranco": 80, + "votosNulo": 166 + } } }, "feira-de-santana": { @@ -1578,6 +6908,47 @@ "2014": 244006, "2018": 258909, "2022": 301092 + }, + "campoFederalVotesByYear": { + "2014": 35958, + "2018": 70568, + "2022": 86634 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 321005, + "votosValidos": 244006, + "votosBranco": 29168, + "votosNulo": 25773 + }, + "2018": { + "comparecimento": 342202, + "votosValidos": 258909, + "votosBranco": 17253, + "votosNulo": 46449 + }, + "2022": { + "comparecimento": 360733, + "votosValidos": 301092, + "votosBranco": 23168, + "votosNulo": 24494 + } + }, + "majoritarian2022": { + "president": { + "votes": 211813, + "comparecimento": 361210, + "votosValidos": 343287, + "votosBranco": 5228, + "votosNulo": 12695 + }, + "governor": { + "votes": 135134, + "comparecimento": 360733, + "votosValidos": 327847, + "votosBranco": 11991, + "votosNulo": 20852 + } } }, "filadelfia": { @@ -1590,6 +6961,47 @@ "2014": 8152, "2018": 6037, "2022": 10352 + }, + "campoFederalVotesByYear": { + "2014": 3810, + "2018": 2138, + "2022": 1064 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9932, + "votosValidos": 8152, + "votosBranco": 608, + "votosNulo": 299 + }, + "2018": { + "comparecimento": 10347, + "votosValidos": 6037, + "votosBranco": 494, + "votosNulo": 3091 + }, + "2022": { + "comparecimento": 11677, + "votosValidos": 10352, + "votosBranco": 502, + "votosNulo": 307 + } + }, + "majoritarian2022": { + "president": { + "votes": 8322, + "comparecimento": 11677, + "votosValidos": 11192, + "votosBranco": 166, + "votosNulo": 319 + }, + "governor": { + "votes": 5241, + "comparecimento": 11677, + "votosValidos": 10875, + "votosBranco": 265, + "votosNulo": 536 + } } }, "firmino-alves": { @@ -1602,6 +7014,47 @@ "2014": 2594, "2018": 2877, "2022": 3438 + }, + "campoFederalVotesByYear": { + "2014": 1640, + "2018": 78, + "2022": 147 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3073, + "votosValidos": 2594, + "votosBranco": 120, + "votosNulo": 75 + }, + "2018": { + "comparecimento": 3418, + "votosValidos": 2877, + "votosBranco": 87, + "votosNulo": 223 + }, + "2022": { + "comparecimento": 3810, + "votosValidos": 3438, + "votosBranco": 118, + "votosNulo": 113 + } + }, + "majoritarian2022": { + "president": { + "votes": 2440, + "comparecimento": 3810, + "votosValidos": 3613, + "votosBranco": 44, + "votosNulo": 153 + }, + "governor": { + "votes": 1934, + "comparecimento": 3810, + "votosValidos": 3483, + "votosBranco": 76, + "votosNulo": 251 + } } }, "floresta-azul": { @@ -1614,6 +7067,47 @@ "2014": 4193, "2018": 4564, "2022": 5505 + }, + "campoFederalVotesByYear": { + "2014": 675, + "2018": 377, + "2022": 235 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5274, + "votosValidos": 4193, + "votosBranco": 373, + "votosNulo": 239 + }, + "2018": { + "comparecimento": 5440, + "votosValidos": 4564, + "votosBranco": 169, + "votosNulo": 322 + }, + "2022": { + "comparecimento": 6060, + "votosValidos": 5505, + "votosBranco": 166, + "votosNulo": 180 + } + }, + "majoritarian2022": { + "president": { + "votes": 4280, + "comparecimento": 6060, + "votosValidos": 5768, + "votosBranco": 72, + "votosNulo": 220 + }, + "governor": { + "votes": 3867, + "comparecimento": 6060, + "votosValidos": 5626, + "votosBranco": 111, + "votosNulo": 323 + } } }, "formosa-do-rio-preto": { @@ -1626,6 +7120,47 @@ "2014": 10715, "2018": 11183, "2022": 13790 + }, + "campoFederalVotesByYear": { + "2014": 304, + "2018": 356, + "2022": 304 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12374, + "votosValidos": 10715, + "votosBranco": 464, + "votosNulo": 290 + }, + "2018": { + "comparecimento": 13312, + "votosValidos": 11183, + "votosBranco": 476, + "votosNulo": 834 + }, + "2022": { + "comparecimento": 15315, + "votosValidos": 13790, + "votosBranco": 530, + "votosNulo": 362 + } + }, + "majoritarian2022": { + "president": { + "votes": 10304, + "comparecimento": 15317, + "votosValidos": 14737, + "votosBranco": 113, + "votosNulo": 467 + }, + "governor": { + "votes": 6604, + "comparecimento": 15315, + "votosValidos": 14169, + "votosBranco": 369, + "votosNulo": 777 + } } }, "gandu": { @@ -1638,6 +7173,47 @@ "2014": 12412, "2018": 12532, "2022": 16429 + }, + "campoFederalVotesByYear": { + "2014": 5639, + "2018": 2855, + "2022": 1497 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15373, + "votosValidos": 12412, + "votosBranco": 928, + "votosNulo": 712 + }, + "2018": { + "comparecimento": 16532, + "votosValidos": 12532, + "votosBranco": 589, + "votosNulo": 2327 + }, + "2022": { + "comparecimento": 18374, + "votosValidos": 16429, + "votosBranco": 665, + "votosNulo": 609 + } + }, + "majoritarian2022": { + "president": { + "votes": 10590, + "comparecimento": 18375, + "votosValidos": 17394, + "votosBranco": 240, + "votosNulo": 741 + }, + "governor": { + "votes": 8362, + "comparecimento": 18374, + "votosValidos": 17069, + "votosBranco": 295, + "votosNulo": 1008 + } } }, "gaviao": { @@ -1650,6 +7226,47 @@ "2014": 2467, "2018": 2591, "2022": 2975 + }, + "campoFederalVotesByYear": { + "2014": 335, + "2018": 474, + "2022": 674 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3079, + "votosValidos": 2467, + "votosBranco": 151, + "votosNulo": 138 + }, + "2018": { + "comparecimento": 3235, + "votosValidos": 2591, + "votosBranco": 146, + "votosNulo": 227 + }, + "2022": { + "comparecimento": 3420, + "votosValidos": 2975, + "votosBranco": 138, + "votosNulo": 150 + } + }, + "majoritarian2022": { + "president": { + "votes": 2253, + "comparecimento": 3420, + "votosValidos": 3243, + "votosBranco": 50, + "votosNulo": 127 + }, + "governor": { + "votes": 1689, + "comparecimento": 3420, + "votosValidos": 3144, + "votosBranco": 86, + "votosNulo": 190 + } } }, "gentio-do-ouro": { @@ -1662,6 +7279,47 @@ "2014": 0, "2018": 5868, "2022": 7041 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 908, + "2022": 904 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6954, + "votosValidos": 5868, + "votosBranco": 235, + "votosNulo": 337 + }, + "2022": { + "comparecimento": 7805, + "votosValidos": 7041, + "votosBranco": 335, + "votosNulo": 172 + } + }, + "majoritarian2022": { + "president": { + "votes": 6387, + "comparecimento": 7805, + "votosValidos": 7631, + "votosBranco": 60, + "votosNulo": 114 + }, + "governor": { + "votes": 5275, + "comparecimento": 7805, + "votosValidos": 7413, + "votosBranco": 153, + "votosNulo": 239 + } } }, "gloria": { @@ -1674,6 +7332,47 @@ "2014": 7887, "2018": 8010, "2022": 9310 + }, + "campoFederalVotesByYear": { + "2014": 932, + "2018": 1985, + "2022": 2409 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9499, + "votosValidos": 7887, + "votosBranco": 681, + "votosNulo": 279 + }, + "2018": { + "comparecimento": 9924, + "votosValidos": 8010, + "votosBranco": 487, + "votosNulo": 687 + }, + "2022": { + "comparecimento": 10290, + "votosValidos": 9310, + "votosBranco": 403, + "votosNulo": 248 + } + }, + "majoritarian2022": { + "president": { + "votes": 8601, + "comparecimento": 10291, + "votosValidos": 9895, + "votosBranco": 101, + "votosNulo": 295 + }, + "governor": { + "votes": 5257, + "comparecimento": 10290, + "votosValidos": 9378, + "votosBranco": 311, + "votosNulo": 601 + } } }, "gongogi": { @@ -1686,6 +7385,47 @@ "2014": 2835, "2018": 2874, "2022": 3485 + }, + "campoFederalVotesByYear": { + "2014": 1037, + "2018": 1928, + "2022": 846 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3386, + "votosValidos": 2835, + "votosBranco": 78, + "votosNulo": 108 + }, + "2018": { + "comparecimento": 3424, + "votosValidos": 2874, + "votosBranco": 73, + "votosNulo": 209 + }, + "2022": { + "comparecimento": 3773, + "votosValidos": 3485, + "votosBranco": 69, + "votosNulo": 86 + } + }, + "majoritarian2022": { + "president": { + "votes": 2733, + "comparecimento": 3773, + "votosValidos": 3628, + "votosBranco": 23, + "votosNulo": 122 + }, + "governor": { + "votes": 1826, + "comparecimento": 3773, + "votosValidos": 3558, + "votosBranco": 38, + "votosNulo": 177 + } } }, "governador-mangabeira": { @@ -1698,6 +7438,47 @@ "2014": 8969, "2018": 9959, "2022": 12300 + }, + "campoFederalVotesByYear": { + "2014": 3876, + "2018": 4336, + "2022": 4271 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11611, + "votosValidos": 8969, + "votosBranco": 1180, + "votosNulo": 531 + }, + "2018": { + "comparecimento": 12652, + "votosValidos": 9959, + "votosBranco": 587, + "votosNulo": 1164 + }, + "2022": { + "comparecimento": 14142, + "votosValidos": 12300, + "votosBranco": 731, + "votosNulo": 509 + } + }, + "majoritarian2022": { + "president": { + "votes": 10550, + "comparecimento": 14142, + "votosValidos": 13508, + "votosBranco": 192, + "votosNulo": 442 + }, + "governor": { + "votes": 6235, + "comparecimento": 14142, + "votosValidos": 13272, + "votosBranco": 250, + "votosNulo": 620 + } } }, "guajeru": { @@ -1710,6 +7491,47 @@ "2014": 4060, "2018": 3864, "2022": 4518 + }, + "campoFederalVotesByYear": { + "2014": 2434, + "2018": 2587, + "2022": 1519 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4655, + "votosValidos": 4060, + "votosBranco": 127, + "votosNulo": 118 + }, + "2018": { + "comparecimento": 4644, + "votosValidos": 3864, + "votosBranco": 140, + "votosNulo": 301 + }, + "2022": { + "comparecimento": 4924, + "votosValidos": 4518, + "votosBranco": 82, + "votosNulo": 121 + } + }, + "majoritarian2022": { + "president": { + "votes": 4004, + "comparecimento": 4924, + "votosValidos": 4681, + "votosBranco": 41, + "votosNulo": 202 + }, + "governor": { + "votes": 3528, + "comparecimento": 4924, + "votosValidos": 4544, + "votosBranco": 68, + "votosNulo": 312 + } } }, "guanambi": { @@ -1722,6 +7544,47 @@ "2014": 37372, "2018": 42094, "2022": 48285 + }, + "campoFederalVotesByYear": { + "2014": 16969, + "2018": 2925, + "2022": 3227 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 46847, + "votosValidos": 37372, + "votosBranco": 3421, + "votosNulo": 2417 + }, + "2018": { + "comparecimento": 51636, + "votosValidos": 42094, + "votosBranco": 1828, + "votosNulo": 4517 + }, + "2022": { + "comparecimento": 54544, + "votosValidos": 48285, + "votosBranco": 2341, + "votosNulo": 2349 + } + }, + "majoritarian2022": { + "president": { + "votes": 33200, + "comparecimento": 54544, + "votosValidos": 51530, + "votosBranco": 764, + "votosNulo": 2250 + }, + "governor": { + "votes": 27198, + "comparecimento": 54544, + "votosValidos": 49090, + "votosBranco": 1821, + "votosNulo": 3631 + } } }, "guaratinga": { @@ -1734,6 +7597,47 @@ "2014": 8928, "2018": 8383, "2022": 10093 + }, + "campoFederalVotesByYear": { + "2014": 3339, + "2018": 2911, + "2022": 3496 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10900, + "votosValidos": 8928, + "votosBranco": 503, + "votosNulo": 407 + }, + "2018": { + "comparecimento": 10625, + "votosValidos": 8383, + "votosBranco": 319, + "votosNulo": 857 + }, + "2022": { + "comparecimento": 11504, + "votosValidos": 10093, + "votosBranco": 343, + "votosNulo": 348 + } + }, + "majoritarian2022": { + "president": { + "votes": 7396, + "comparecimento": 11504, + "votosValidos": 10856, + "votosBranco": 127, + "votosNulo": 521 + }, + "governor": { + "votes": 5534, + "comparecimento": 11504, + "votosValidos": 10519, + "votosBranco": 234, + "votosNulo": 751 + } } }, "heliopolis": { @@ -1746,6 +7650,47 @@ "2014": 0, "2018": 7275, "2022": 8690 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 2330, + "2022": 634 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8634, + "votosValidos": 7275, + "votosBranco": 316, + "votosNulo": 458 + }, + "2022": { + "comparecimento": 9432, + "votosValidos": 8690, + "votosBranco": 307, + "votosNulo": 154 + } + }, + "majoritarian2022": { + "president": { + "votes": 7650, + "comparecimento": 9432, + "votosValidos": 9134, + "votosBranco": 85, + "votosNulo": 213 + }, + "governor": { + "votes": 4995, + "comparecimento": 9432, + "votosValidos": 8816, + "votosBranco": 211, + "votosNulo": 405 + } } }, "iacu": { @@ -1758,6 +7703,47 @@ "2014": 10749, "2018": 11381, "2022": 13116 + }, + "campoFederalVotesByYear": { + "2014": 1918, + "2018": 1554, + "2022": 2165 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13180, + "votosValidos": 10749, + "votosBranco": 724, + "votosNulo": 543 + }, + "2018": { + "comparecimento": 14407, + "votosValidos": 11381, + "votosBranco": 505, + "votosNulo": 1281 + }, + "2022": { + "comparecimento": 14934, + "votosValidos": 13116, + "votosBranco": 571, + "votosNulo": 656 + } + }, + "majoritarian2022": { + "president": { + "votes": 11194, + "comparecimento": 14934, + "votosValidos": 14100, + "votosBranco": 151, + "votosNulo": 683 + }, + "governor": { + "votes": 9032, + "comparecimento": 14934, + "votosValidos": 13621, + "votosBranco": 310, + "votosNulo": 1003 + } } }, "ibiassuce": { @@ -1770,6 +7756,47 @@ "2014": 5630, "2018": 5521, "2022": 6320 + }, + "campoFederalVotesByYear": { + "2014": 2163, + "2018": 1585, + "2022": 2060 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6513, + "votosValidos": 5630, + "votosBranco": 170, + "votosNulo": 157 + }, + "2018": { + "comparecimento": 6428, + "votosValidos": 5521, + "votosBranco": 147, + "votosNulo": 349 + }, + "2022": { + "comparecimento": 6886, + "votosValidos": 6320, + "votosBranco": 197, + "votosNulo": 166 + } + }, + "majoritarian2022": { + "president": { + "votes": 4397, + "comparecimento": 6887, + "votosValidos": 6516, + "votosBranco": 99, + "votosNulo": 272 + }, + "governor": { + "votes": 3127, + "comparecimento": 6886, + "votosValidos": 6486, + "votosBranco": 89, + "votosNulo": 309 + } } }, "ibicarai": { @@ -1782,6 +7809,47 @@ "2014": 10679, "2018": 10580, "2022": 12916 + }, + "campoFederalVotesByYear": { + "2014": 5024, + "2018": 4936, + "2022": 1231 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13565, + "votosValidos": 10679, + "votosBranco": 963, + "votosNulo": 575 + }, + "2018": { + "comparecimento": 13328, + "votosValidos": 10580, + "votosBranco": 512, + "votosNulo": 1098 + }, + "2022": { + "comparecimento": 14413, + "votosValidos": 12916, + "votosBranco": 530, + "votosNulo": 413 + } + }, + "majoritarian2022": { + "president": { + "votes": 8693, + "comparecimento": 14414, + "votosValidos": 13805, + "votosBranco": 161, + "votosNulo": 448 + }, + "governor": { + "votes": 5535, + "comparecimento": 14413, + "votosValidos": 13378, + "votosBranco": 281, + "votosNulo": 754 + } } }, "ibicoara": { @@ -1794,6 +7862,47 @@ "2014": 7798, "2018": 7558, "2022": 10665 + }, + "campoFederalVotesByYear": { + "2014": 2829, + "2018": 774, + "2022": 1069 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9662, + "votosValidos": 7798, + "votosBranco": 899, + "votosNulo": 341 + }, + "2018": { + "comparecimento": 10174, + "votosValidos": 7558, + "votosBranco": 572, + "votosNulo": 1457 + }, + "2022": { + "comparecimento": 12442, + "votosValidos": 10665, + "votosBranco": 713, + "votosNulo": 682 + } + }, + "majoritarian2022": { + "president": { + "votes": 7834, + "comparecimento": 12442, + "votosValidos": 11614, + "votosBranco": 195, + "votosNulo": 633 + }, + "governor": { + "votes": 5190, + "comparecimento": 12442, + "votosValidos": 11114, + "votosBranco": 423, + "votosNulo": 904 + } } }, "ibicui": { @@ -1806,6 +7915,47 @@ "2014": 6453, "2018": 6571, "2022": 8105 + }, + "campoFederalVotesByYear": { + "2014": 3165, + "2018": 114, + "2022": 335 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7920, + "votosValidos": 6453, + "votosBranco": 453, + "votosNulo": 258 + }, + "2018": { + "comparecimento": 7828, + "votosValidos": 6571, + "votosBranco": 224, + "votosNulo": 461 + }, + "2022": { + "comparecimento": 9061, + "votosValidos": 8105, + "votosBranco": 286, + "votosNulo": 242 + } + }, + "majoritarian2022": { + "president": { + "votes": 6091, + "comparecimento": 9062, + "votosValidos": 8631, + "votosBranco": 93, + "votosNulo": 338 + }, + "governor": { + "votes": 4968, + "comparecimento": 9061, + "votosValidos": 8351, + "votosBranco": 173, + "votosNulo": 536 + } } }, "ibipeba": { @@ -1818,6 +7968,47 @@ "2014": 7259, "2018": 8465, "2022": 9917 + }, + "campoFederalVotesByYear": { + "2014": 1215, + "2018": 2159, + "2022": 2359 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9350, + "votosValidos": 7259, + "votosBranco": 383, + "votosNulo": 1006 + }, + "2018": { + "comparecimento": 10140, + "votosValidos": 8465, + "votosBranco": 291, + "votosNulo": 575 + }, + "2022": { + "comparecimento": 11001, + "votosValidos": 9917, + "votosBranco": 377, + "votosNulo": 291 + } + }, + "majoritarian2022": { + "president": { + "votes": 8933, + "comparecimento": 11001, + "votosValidos": 10618, + "votosBranco": 108, + "votosNulo": 275 + }, + "governor": { + "votes": 8015, + "comparecimento": 11001, + "votosValidos": 10300, + "votosBranco": 212, + "votosNulo": 489 + } } }, "ibipitanga": { @@ -1830,6 +8021,47 @@ "2014": 6986, "2018": 6856, "2022": 8694 + }, + "campoFederalVotesByYear": { + "2014": 1753, + "2018": 377, + "2022": 464 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8059, + "votosValidos": 6986, + "votosBranco": 395, + "votosNulo": 117 + }, + "2018": { + "comparecimento": 8779, + "votosValidos": 6856, + "votosBranco": 200, + "votosNulo": 638 + }, + "2022": { + "comparecimento": 9556, + "votosValidos": 8694, + "votosBranco": 265, + "votosNulo": 219 + } + }, + "majoritarian2022": { + "president": { + "votes": 6784, + "comparecimento": 9556, + "votosValidos": 9182, + "votosBranco": 99, + "votosNulo": 275 + }, + "governor": { + "votes": 5504, + "comparecimento": 9556, + "votosValidos": 8908, + "votosBranco": 159, + "votosNulo": 489 + } } }, "ibiquera": { @@ -1842,6 +8074,47 @@ "2014": 2010, "2018": 2079, "2022": 2806 + }, + "campoFederalVotesByYear": { + "2014": 232, + "2018": 56, + "2022": 94 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 2356, + "votosValidos": 2010, + "votosBranco": 47, + "votosNulo": 71 + }, + "2018": { + "comparecimento": 2388, + "votosValidos": 2079, + "votosBranco": 44, + "votosNulo": 81 + }, + "2022": { + "comparecimento": 3030, + "votosValidos": 2806, + "votosBranco": 38, + "votosNulo": 62 + } + }, + "majoritarian2022": { + "president": { + "votes": 2371, + "comparecimento": 3030, + "votosValidos": 2877, + "votosBranco": 13, + "votosNulo": 140 + }, + "governor": { + "votes": 1303, + "comparecimento": 3030, + "votosValidos": 2788, + "votosBranco": 24, + "votosNulo": 218 + } } }, "ibirapitanga": { @@ -1854,6 +8127,47 @@ "2014": 8415, "2018": 7427, "2022": 9290 + }, + "campoFederalVotesByYear": { + "2014": 492, + "2018": 1030, + "2022": 730 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10051, + "votosValidos": 8415, + "votosBranco": 358, + "votosNulo": 212 + }, + "2018": { + "comparecimento": 10357, + "votosValidos": 7427, + "votosBranco": 295, + "votosNulo": 1639 + }, + "2022": { + "comparecimento": 10429, + "votosValidos": 9290, + "votosBranco": 277, + "votosNulo": 296 + } + }, + "majoritarian2022": { + "president": { + "votes": 7057, + "comparecimento": 10429, + "votosValidos": 9916, + "votosBranco": 124, + "votosNulo": 389 + }, + "governor": { + "votes": 5536, + "comparecimento": 10429, + "votosValidos": 9626, + "votosBranco": 167, + "votosNulo": 633 + } } }, "ibirapua": { @@ -1866,6 +8180,47 @@ "2014": 3868, "2018": 4071, "2022": 5280 + }, + "campoFederalVotesByYear": { + "2014": 705, + "2018": 870, + "2022": 1257 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4737, + "votosValidos": 3868, + "votosBranco": 278, + "votosNulo": 172 + }, + "2018": { + "comparecimento": 5061, + "votosValidos": 4071, + "votosBranco": 183, + "votosNulo": 394 + }, + "2022": { + "comparecimento": 5883, + "votosValidos": 5280, + "votosBranco": 192, + "votosNulo": 168 + } + }, + "majoritarian2022": { + "president": { + "votes": 2937, + "comparecimento": 5883, + "votosValidos": 5618, + "votosBranco": 55, + "votosNulo": 210 + }, + "governor": { + "votes": 2708, + "comparecimento": 5883, + "votosValidos": 5394, + "votosBranco": 151, + "votosNulo": 338 + } } }, "ibirataia": { @@ -1878,6 +8233,47 @@ "2014": 9098, "2018": 9002, "2022": 10143 + }, + "campoFederalVotesByYear": { + "2014": 549, + "2018": 1922, + "2022": 646 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11120, + "votosValidos": 9098, + "votosBranco": 525, + "votosNulo": 387 + }, + "2018": { + "comparecimento": 11033, + "votosValidos": 9002, + "votosBranco": 374, + "votosNulo": 743 + }, + "2022": { + "comparecimento": 11506, + "votosValidos": 10143, + "votosBranco": 360, + "votosNulo": 346 + } + }, + "majoritarian2022": { + "president": { + "votes": 6742, + "comparecimento": 11506, + "votosValidos": 10816, + "votosBranco": 170, + "votosNulo": 520 + }, + "governor": { + "votes": 4621, + "comparecimento": 11506, + "votosValidos": 10480, + "votosBranco": 242, + "votosNulo": 784 + } } }, "ibitiara": { @@ -1890,6 +8286,47 @@ "2014": 0, "2018": 7130, "2022": 8239 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3587, + "2022": 839 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8692, + "votosValidos": 7130, + "votosBranco": 215, + "votosNulo": 485 + }, + "2022": { + "comparecimento": 9134, + "votosValidos": 8239, + "votosBranco": 269, + "votosNulo": 285 + } + }, + "majoritarian2022": { + "president": { + "votes": 6617, + "comparecimento": 9134, + "votosValidos": 8632, + "votosBranco": 94, + "votosNulo": 408 + }, + "governor": { + "votes": 5166, + "comparecimento": 9134, + "votosValidos": 8353, + "votosBranco": 161, + "votosNulo": 620 + } } }, "ibitita": { @@ -1902,6 +8339,47 @@ "2014": 0, "2018": 9481, "2022": 11478 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 549, + "2022": 464 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 11092, + "votosValidos": 9481, + "votosBranco": 328, + "votosNulo": 519 + }, + "2022": { + "comparecimento": 12575, + "votosValidos": 11478, + "votosBranco": 441, + "votosNulo": 294 + } + }, + "majoritarian2022": { + "president": { + "votes": 9885, + "comparecimento": 12575, + "votosValidos": 12185, + "votosBranco": 112, + "votosNulo": 278 + }, + "governor": { + "votes": 7386, + "comparecimento": 12575, + "votosValidos": 11783, + "votosBranco": 272, + "votosNulo": 520 + } } }, "ibotirama": { @@ -1914,6 +8392,47 @@ "2014": 10018, "2018": 12362, "2022": 15084 + }, + "campoFederalVotesByYear": { + "2014": 2361, + "2018": 5967, + "2022": 6074 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13920, + "votosValidos": 10018, + "votosBranco": 721, + "votosNulo": 1986 + }, + "2018": { + "comparecimento": 14858, + "votosValidos": 12362, + "votosBranco": 498, + "votosNulo": 918 + }, + "2022": { + "comparecimento": 16496, + "votosValidos": 15084, + "votosBranco": 462, + "votosNulo": 345 + } + }, + "majoritarian2022": { + "president": { + "votes": 11020, + "comparecimento": 16498, + "votosValidos": 15915, + "votosBranco": 156, + "votosNulo": 427 + }, + "governor": { + "votes": 9001, + "comparecimento": 16496, + "votosValidos": 15622, + "votosBranco": 224, + "votosNulo": 649 + } } }, "ichu": { @@ -1926,6 +8445,47 @@ "2014": 0, "2018": 3142, "2022": 4374 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1537, + "2022": 1009 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 4422, + "votosValidos": 3142, + "votosBranco": 134, + "votosNulo": 890 + }, + "2022": { + "comparecimento": 4909, + "votosValidos": 4374, + "votosBranco": 139, + "votosNulo": 234 + } + }, + "majoritarian2022": { + "president": { + "votes": 3632, + "comparecimento": 4909, + "votosValidos": 4710, + "votosBranco": 51, + "votosNulo": 148 + }, + "governor": { + "votes": 3125, + "comparecimento": 4909, + "votosValidos": 4611, + "votosBranco": 70, + "votosNulo": 227 + } } }, "igapora": { @@ -1938,6 +8498,47 @@ "2014": 0, "2018": 7302, "2022": 8853 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 491, + "2022": 1353 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 9403, + "votosValidos": 7302, + "votosBranco": 381, + "votosNulo": 1064 + }, + "2022": { + "comparecimento": 10076, + "votosValidos": 8853, + "votosBranco": 390, + "votosNulo": 459 + } + }, + "majoritarian2022": { + "president": { + "votes": 8175, + "comparecimento": 10076, + "votosValidos": 9559, + "votosBranco": 104, + "votosNulo": 413 + }, + "governor": { + "votes": 6587, + "comparecimento": 10076, + "votosValidos": 9183, + "votosBranco": 206, + "votosNulo": 687 + } } }, "igrapiuna": { @@ -1950,6 +8551,47 @@ "2014": 0, "2018": 5365, "2022": 6006 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 2695, + "2022": 1130 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6614, + "votosValidos": 5365, + "votosBranco": 251, + "votosNulo": 401 + }, + "2022": { + "comparecimento": 6816, + "votosValidos": 6006, + "votosBranco": 256, + "votosNulo": 234 + } + }, + "majoritarian2022": { + "president": { + "votes": 4713, + "comparecimento": 6816, + "votosValidos": 6413, + "votosBranco": 114, + "votosNulo": 289 + }, + "governor": { + "votes": 2882, + "comparecimento": 6816, + "votosValidos": 6254, + "votosBranco": 148, + "votosNulo": 414 + } } }, "iguai": { @@ -1962,6 +8604,47 @@ "2014": 10250, "2018": 10598, "2022": 12206 + }, + "campoFederalVotesByYear": { + "2014": 1843, + "2018": 536, + "2022": 674 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12560, + "votosValidos": 10250, + "votosBranco": 476, + "votosNulo": 440 + }, + "2018": { + "comparecimento": 12723, + "votosValidos": 10598, + "votosBranco": 348, + "votosNulo": 821 + }, + "2022": { + "comparecimento": 13768, + "votosValidos": 12206, + "votosBranco": 438, + "votosNulo": 541 + } + }, + "majoritarian2022": { + "president": { + "votes": 8560, + "comparecimento": 13768, + "votosValidos": 12889, + "votosBranco": 175, + "votosNulo": 704 + }, + "governor": { + "votes": 7090, + "comparecimento": 13768, + "votosValidos": 12564, + "votosBranco": 251, + "votosNulo": 953 + } } }, "ilheus": { @@ -1974,6 +8657,47 @@ "2014": 73918, "2018": 72337, "2022": 90290 + }, + "campoFederalVotesByYear": { + "2014": 14047, + "2018": 13228, + "2022": 16661 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 95722, + "votosValidos": 73918, + "votosBranco": 8160, + "votosNulo": 6656 + }, + "2018": { + "comparecimento": 98387, + "votosValidos": 72337, + "votosBranco": 4884, + "votosNulo": 14139 + }, + "2022": { + "comparecimento": 103819, + "votosValidos": 90290, + "votosBranco": 4831, + "votosNulo": 4511 + } + }, + "majoritarian2022": { + "president": { + "votes": 57891, + "comparecimento": 104499, + "votosValidos": 100054, + "votosBranco": 1358, + "votosNulo": 3087 + }, + "governor": { + "votes": 39706, + "comparecimento": 103819, + "votosValidos": 95247, + "votosBranco": 3210, + "votosNulo": 5343 + } } }, "inhambupe": { @@ -1986,6 +8710,47 @@ "2014": 14469, "2018": 14926, "2022": 17808 + }, + "campoFederalVotesByYear": { + "2014": 4402, + "2018": 5983, + "2022": 5391 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 18840, + "votosValidos": 14469, + "votosBranco": 1781, + "votosNulo": 981 + }, + "2018": { + "comparecimento": 19232, + "votosValidos": 14926, + "votosBranco": 986, + "votosNulo": 1927 + }, + "2022": { + "comparecimento": 21208, + "votosValidos": 17808, + "votosBranco": 1356, + "votosNulo": 998 + } + }, + "majoritarian2022": { + "president": { + "votes": 15361, + "comparecimento": 21208, + "votosValidos": 19974, + "votosBranco": 347, + "votosNulo": 887 + }, + "governor": { + "votes": 10078, + "comparecimento": 21208, + "votosValidos": 19162, + "votosBranco": 685, + "votosNulo": 1358 + } } }, "ipecaeta": { @@ -1998,6 +8763,47 @@ "2014": 8014, "2018": 6040, "2022": 10127 + }, + "campoFederalVotesByYear": { + "2014": 747, + "2018": 623, + "2022": 476 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9670, + "votosValidos": 8014, + "votosBranco": 562, + "votosNulo": 231 + }, + "2018": { + "comparecimento": 10789, + "votosValidos": 6040, + "votosBranco": 347, + "votosNulo": 1011 + }, + "2022": { + "comparecimento": 11417, + "votosValidos": 10127, + "votosBranco": 383, + "votosNulo": 443 + } + }, + "majoritarian2022": { + "president": { + "votes": 8782, + "comparecimento": 11417, + "votosValidos": 10872, + "votosBranco": 126, + "votosNulo": 419 + }, + "governor": { + "votes": 7145, + "comparecimento": 11417, + "votosValidos": 10568, + "votosBranco": 189, + "votosNulo": 660 + } } }, "ipiau": { @@ -2010,6 +8816,47 @@ "2014": 17781, "2018": 16849, "2022": 22680 + }, + "campoFederalVotesByYear": { + "2014": 2615, + "2018": 2084, + "2022": 1495 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 22806, + "votosValidos": 17781, + "votosBranco": 1599, + "votosNulo": 1197 + }, + "2018": { + "comparecimento": 22901, + "votosValidos": 16849, + "votosBranco": 960, + "votosNulo": 3690 + }, + "2022": { + "comparecimento": 24793, + "votosValidos": 22680, + "votosBranco": 729, + "votosNulo": 693 + } + }, + "majoritarian2022": { + "president": { + "votes": 15249, + "comparecimento": 24795, + "votosValidos": 23526, + "votosBranco": 331, + "votosNulo": 938 + }, + "governor": { + "votes": 12278, + "comparecimento": 24793, + "votosValidos": 22704, + "votosBranco": 630, + "votosNulo": 1458 + } } }, "ipira": { @@ -2022,6 +8869,47 @@ "2014": 25033, "2018": 26728, "2022": 31420 + }, + "campoFederalVotesByYear": { + "2014": 9035, + "2018": 6789, + "2022": 6563 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 32456, + "votosValidos": 25033, + "votosBranco": 2606, + "votosNulo": 1566 + }, + "2018": { + "comparecimento": 35519, + "votosValidos": 26728, + "votosBranco": 1435, + "votosNulo": 4678 + }, + "2022": { + "comparecimento": 36890, + "votosValidos": 31420, + "votosBranco": 1757, + "votosNulo": 2061 + } + }, + "majoritarian2022": { + "president": { + "votes": 26950, + "comparecimento": 36890, + "votosValidos": 34555, + "votosBranco": 447, + "votosNulo": 1888 + }, + "governor": { + "votes": 20411, + "comparecimento": 36890, + "votosValidos": 33309, + "votosBranco": 829, + "votosNulo": 2749 + } } }, "ipupiara": { @@ -2034,6 +8922,47 @@ "2014": 4808, "2018": 5100, "2022": 6198 + }, + "campoFederalVotesByYear": { + "2014": 1039, + "2018": 1213, + "2022": 182 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5573, + "votosValidos": 4808, + "votosBranco": 220, + "votosNulo": 193 + }, + "2018": { + "comparecimento": 5968, + "votosValidos": 5100, + "votosBranco": 196, + "votosNulo": 315 + }, + "2022": { + "comparecimento": 6774, + "votosValidos": 6198, + "votosBranco": 222, + "votosNulo": 152 + } + }, + "majoritarian2022": { + "president": { + "votes": 4593, + "comparecimento": 6774, + "votosValidos": 6510, + "votosBranco": 75, + "votosNulo": 189 + }, + "governor": { + "votes": 3433, + "comparecimento": 6774, + "votosValidos": 6361, + "votosBranco": 124, + "votosNulo": 289 + } } }, "irajuba": { @@ -2046,6 +8975,47 @@ "2014": 3264, "2018": 3288, "2022": 3671 + }, + "campoFederalVotesByYear": { + "2014": 288, + "2018": 113, + "2022": 167 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3990, + "votosValidos": 3264, + "votosBranco": 186, + "votosNulo": 129 + }, + "2018": { + "comparecimento": 3958, + "votosValidos": 3288, + "votosBranco": 141, + "votosNulo": 225 + }, + "2022": { + "comparecimento": 4130, + "votosValidos": 3671, + "votosBranco": 167, + "votosNulo": 123 + } + }, + "majoritarian2022": { + "president": { + "votes": 3031, + "comparecimento": 4130, + "votosValidos": 3902, + "votosBranco": 54, + "votosNulo": 174 + }, + "governor": { + "votes": 2552, + "comparecimento": 4130, + "votosValidos": 3749, + "votosBranco": 106, + "votosNulo": 275 + } } }, "iramaia": { @@ -2058,6 +9028,47 @@ "2014": 0, "2018": 4972, "2022": 5956 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 2033, + "2022": 1038 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6009, + "votosValidos": 4972, + "votosBranco": 202, + "votosNulo": 375 + }, + "2022": { + "comparecimento": 6687, + "votosValidos": 5956, + "votosBranco": 252, + "votosNulo": 198 + } + }, + "majoritarian2022": { + "president": { + "votes": 4955, + "comparecimento": 6688, + "votosValidos": 6329, + "votosBranco": 101, + "votosNulo": 258 + }, + "governor": { + "votes": 2963, + "comparecimento": 6687, + "votosValidos": 6167, + "votosBranco": 151, + "votosNulo": 369 + } } }, "iraquara": { @@ -2070,6 +9081,47 @@ "2014": 0, "2018": 10512, "2022": 13358 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3848, + "2022": 1073 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 13064, + "votosValidos": 10512, + "votosBranco": 511, + "votosNulo": 1034 + }, + "2022": { + "comparecimento": 15055, + "votosValidos": 13358, + "votosBranco": 722, + "votosNulo": 491 + } + }, + "majoritarian2022": { + "president": { + "votes": 12688, + "comparecimento": 15055, + "votosValidos": 14363, + "votosBranco": 159, + "votosNulo": 533 + }, + "governor": { + "votes": 10682, + "comparecimento": 15055, + "votosValidos": 13901, + "votosBranco": 330, + "votosNulo": 824 + } } }, "irara": { @@ -2082,6 +9134,47 @@ "2014": 13627, "2018": 13363, "2022": 16310 + }, + "campoFederalVotesByYear": { + "2014": 5471, + "2018": 6191, + "2022": 7257 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 17077, + "votosValidos": 13627, + "votosBranco": 1302, + "votosNulo": 749 + }, + "2018": { + "comparecimento": 17655, + "votosValidos": 13363, + "votosBranco": 815, + "votosNulo": 1933 + }, + "2022": { + "comparecimento": 19506, + "votosValidos": 16310, + "votosBranco": 1147, + "votosNulo": 1126 + } + }, + "majoritarian2022": { + "president": { + "votes": 14300, + "comparecimento": 19506, + "votosValidos": 18521, + "votosBranco": 261, + "votosNulo": 724 + }, + "governor": { + "votes": 10059, + "comparecimento": 19506, + "votosValidos": 17998, + "votosBranco": 437, + "votosNulo": 1071 + } } }, "irece": { @@ -2094,6 +9187,47 @@ "2014": 23065, "2018": 28646, "2022": 36432 + }, + "campoFederalVotesByYear": { + "2014": 11280, + "2018": 5855, + "2022": 5231 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 33319, + "votosValidos": 23065, + "votosBranco": 2400, + "votosNulo": 5700 + }, + "2018": { + "comparecimento": 37575, + "votosValidos": 28646, + "votosBranco": 1341, + "votosNulo": 2580 + }, + "2022": { + "comparecimento": 40725, + "votosValidos": 36432, + "votosBranco": 1689, + "votosNulo": 1614 + } + }, + "majoritarian2022": { + "president": { + "votes": 27119, + "comparecimento": 40729, + "votosValidos": 38925, + "votosBranco": 426, + "votosNulo": 1378 + }, + "governor": { + "votes": 21721, + "comparecimento": 40725, + "votosValidos": 37750, + "votosBranco": 957, + "votosNulo": 2014 + } } }, "itabela": { @@ -2106,6 +9240,47 @@ "2014": 11535, "2018": 12056, "2022": 14580 + }, + "campoFederalVotesByYear": { + "2014": 4314, + "2018": 4015, + "2022": 2363 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15163, + "votosValidos": 11535, + "votosBranco": 1560, + "votosNulo": 650 + }, + "2018": { + "comparecimento": 15587, + "votosValidos": 12056, + "votosBranco": 772, + "votosNulo": 1283 + }, + "2022": { + "comparecimento": 16736, + "votosValidos": 14580, + "votosBranco": 818, + "votosNulo": 491 + } + }, + "majoritarian2022": { + "president": { + "votes": 9622, + "comparecimento": 16738, + "votosValidos": 15874, + "votosBranco": 258, + "votosNulo": 606 + }, + "governor": { + "votes": 6817, + "comparecimento": 16736, + "votosValidos": 14997, + "votosBranco": 723, + "votosNulo": 1015 + } } }, "itaberaba": { @@ -2118,6 +9293,47 @@ "2014": 25094, "2018": 25151, "2022": 33592 + }, + "campoFederalVotesByYear": { + "2014": 3512, + "2018": 3861, + "2022": 5924 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 31601, + "votosValidos": 25094, + "votosBranco": 2061, + "votosNulo": 1881 + }, + "2018": { + "comparecimento": 33133, + "votosValidos": 25151, + "votosBranco": 1416, + "votosNulo": 4405 + }, + "2022": { + "comparecimento": 39374, + "votosValidos": 33592, + "votosBranco": 2015, + "votosNulo": 2311 + } + }, + "majoritarian2022": { + "president": { + "votes": 26701, + "comparecimento": 39374, + "votosValidos": 37235, + "votosBranco": 459, + "votosNulo": 1680 + }, + "governor": { + "votes": 18393, + "comparecimento": 39374, + "votosValidos": 35841, + "votosBranco": 955, + "votosNulo": 2572 + } } }, "itabuna": { @@ -2130,6 +9346,47 @@ "2014": 89048, "2018": 89217, "2022": 103067 + }, + "campoFederalVotesByYear": { + "2014": 37917, + "2018": 17390, + "2022": 17637 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 113644, + "votosValidos": 89048, + "votosBranco": 9641, + "votosNulo": 6929 + }, + "2018": { + "comparecimento": 115045, + "votosValidos": 89217, + "votosBranco": 5592, + "votosNulo": 13517 + }, + "2022": { + "comparecimento": 117490, + "votosValidos": 103067, + "votosBranco": 5099, + "votosNulo": 4091 + } + }, + "majoritarian2022": { + "president": { + "votes": 56676, + "comparecimento": 117744, + "votosValidos": 113290, + "votosBranco": 1534, + "votosNulo": 2920 + }, + "governor": { + "votes": 39770, + "comparecimento": 117490, + "votosValidos": 109368, + "votosBranco": 3158, + "votosNulo": 4948 + } } }, "itacare": { @@ -2142,6 +9399,47 @@ "2014": 0, "2018": 8725, "2022": 12510 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1629, + "2022": 3987 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 10752, + "votosValidos": 8725, + "votosBranco": 431, + "votosNulo": 678 + }, + "2022": { + "comparecimento": 14027, + "votosValidos": 12510, + "votosBranco": 553, + "votosNulo": 416 + } + }, + "majoritarian2022": { + "president": { + "votes": 9733, + "comparecimento": 14027, + "votosValidos": 13447, + "votosBranco": 157, + "votosNulo": 423 + }, + "governor": { + "votes": 8440, + "comparecimento": 14027, + "votosValidos": 13053, + "votosBranco": 308, + "votosNulo": 666 + } } }, "itaete": { @@ -2154,6 +9452,47 @@ "2014": 0, "2018": 6295, "2022": 7251 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3610, + "2022": 2939 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 7621, + "votosValidos": 6295, + "votosBranco": 217, + "votosNulo": 376 + }, + "2022": { + "comparecimento": 8236, + "votosValidos": 7251, + "votosBranco": 260, + "votosNulo": 299 + } + }, + "majoritarian2022": { + "president": { + "votes": 5509, + "comparecimento": 8236, + "votosValidos": 7777, + "votosBranco": 95, + "votosNulo": 364 + }, + "governor": { + "votes": 3956, + "comparecimento": 8236, + "votosValidos": 7615, + "votosBranco": 135, + "votosNulo": 486 + } } }, "itagi": { @@ -2166,6 +9505,47 @@ "2014": 6353, "2018": 6078, "2022": 6868 + }, + "campoFederalVotesByYear": { + "2014": 2622, + "2018": 2384, + "2022": 2332 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7506, + "votosValidos": 6353, + "votosBranco": 206, + "votosNulo": 208 + }, + "2018": { + "comparecimento": 7387, + "votosValidos": 6078, + "votosBranco": 136, + "votosNulo": 381 + }, + "2022": { + "comparecimento": 7583, + "votosValidos": 6868, + "votosBranco": 161, + "votosNulo": 182 + } + }, + "majoritarian2022": { + "president": { + "votes": 4861, + "comparecimento": 7583, + "votosValidos": 7146, + "votosBranco": 85, + "votosNulo": 352 + }, + "governor": { + "votes": 3389, + "comparecimento": 7583, + "votosValidos": 6997, + "votosBranco": 95, + "votosNulo": 491 + } } }, "itagiba": { @@ -2178,6 +9558,47 @@ "2014": 7010, "2018": 6654, "2022": 8313 + }, + "campoFederalVotesByYear": { + "2014": 3896, + "2018": 2729, + "2022": 3437 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8712, + "votosValidos": 7010, + "votosBranco": 389, + "votosNulo": 306 + }, + "2018": { + "comparecimento": 8205, + "votosValidos": 6654, + "votosBranco": 247, + "votosNulo": 693 + }, + "2022": { + "comparecimento": 9208, + "votosValidos": 8313, + "votosBranco": 189, + "votosNulo": 305 + } + }, + "majoritarian2022": { + "president": { + "votes": 5867, + "comparecimento": 9208, + "votosValidos": 8769, + "votosBranco": 96, + "votosNulo": 343 + }, + "governor": { + "votes": 5078, + "comparecimento": 9208, + "votosValidos": 8546, + "votosBranco": 123, + "votosNulo": 537 + } } }, "itagimirim": { @@ -2190,6 +9611,47 @@ "2014": 3289, "2018": 3704, "2022": 4023 + }, + "campoFederalVotesByYear": { + "2014": 355, + "2018": 248, + "2022": 2266 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3966, + "votosValidos": 3289, + "votosBranco": 195, + "votosNulo": 164 + }, + "2018": { + "comparecimento": 4485, + "votosValidos": 3704, + "votosBranco": 144, + "votosNulo": 273 + }, + "2022": { + "comparecimento": 4486, + "votosValidos": 4023, + "votosBranco": 104, + "votosNulo": 126 + } + }, + "majoritarian2022": { + "president": { + "votes": 2838, + "comparecimento": 4486, + "votosValidos": 4263, + "votosBranco": 56, + "votosNulo": 167 + }, + "governor": { + "votes": 2200, + "comparecimento": 4486, + "votosValidos": 4096, + "votosBranco": 111, + "votosNulo": 279 + } } }, "itaguacu-da-bahia": { @@ -2202,6 +9664,47 @@ "2014": 6119, "2018": 6010, "2022": 7638 + }, + "campoFederalVotesByYear": { + "2014": 860, + "2018": 573, + "2022": 1348 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7196, + "votosValidos": 6119, + "votosBranco": 221, + "votosNulo": 264 + }, + "2018": { + "comparecimento": 7234, + "votosValidos": 6010, + "votosBranco": 199, + "votosNulo": 215 + }, + "2022": { + "comparecimento": 8341, + "votosValidos": 7638, + "votosBranco": 232, + "votosNulo": 161 + } + }, + "majoritarian2022": { + "president": { + "votes": 6766, + "comparecimento": 8341, + "votosValidos": 8069, + "votosBranco": 56, + "votosNulo": 216 + }, + "governor": { + "votes": 4389, + "comparecimento": 8341, + "votosValidos": 7880, + "votosBranco": 107, + "votosNulo": 352 + } } }, "itaju-do-colonia": { @@ -2214,6 +9717,47 @@ "2014": 2801, "2018": 3165, "2022": 3779 + }, + "campoFederalVotesByYear": { + "2014": 1510, + "2018": 761, + "2022": 497 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3318, + "votosValidos": 2801, + "votosBranco": 82, + "votosNulo": 83 + }, + "2018": { + "comparecimento": 3672, + "votosValidos": 3165, + "votosBranco": 57, + "votosNulo": 185 + }, + "2022": { + "comparecimento": 4072, + "votosValidos": 3779, + "votosBranco": 44, + "votosNulo": 70 + } + }, + "majoritarian2022": { + "president": { + "votes": 2269, + "comparecimento": 4072, + "votosValidos": 3929, + "votosBranco": 23, + "votosNulo": 120 + }, + "governor": { + "votes": 1918, + "comparecimento": 4072, + "votosValidos": 3846, + "votosBranco": 35, + "votosNulo": 191 + } } }, "itajuipe": { @@ -2226,6 +9770,47 @@ "2014": 9867, "2018": 9685, "2022": 11500 + }, + "campoFederalVotesByYear": { + "2014": 4674, + "2018": 2793, + "2022": 2301 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12220, + "votosValidos": 9867, + "votosBranco": 729, + "votosNulo": 496 + }, + "2018": { + "comparecimento": 12230, + "votosValidos": 9685, + "votosBranco": 425, + "votosNulo": 1165 + }, + "2022": { + "comparecimento": 12975, + "votosValidos": 11500, + "votosBranco": 509, + "votosNulo": 454 + } + }, + "majoritarian2022": { + "president": { + "votes": 8235, + "comparecimento": 12975, + "votosValidos": 12358, + "votosBranco": 160, + "votosNulo": 457 + }, + "governor": { + "votes": 6208, + "comparecimento": 12975, + "votosValidos": 11810, + "votosBranco": 380, + "votosNulo": 784 + } } }, "itamaraju": { @@ -2238,6 +9823,47 @@ "2014": 24529, "2018": 26466, "2022": 31944 + }, + "campoFederalVotesByYear": { + "2014": 6959, + "2018": 7291, + "2022": 7232 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 31196, + "votosValidos": 24529, + "votosBranco": 2284, + "votosNulo": 1785 + }, + "2018": { + "comparecimento": 32460, + "votosValidos": 26466, + "votosBranco": 1541, + "votosNulo": 1992 + }, + "2022": { + "comparecimento": 35523, + "votosValidos": 31944, + "votosBranco": 1308, + "votosNulo": 856 + } + }, + "majoritarian2022": { + "president": { + "votes": 16691, + "comparecimento": 35523, + "votosValidos": 34019, + "votosBranco": 447, + "votosNulo": 1057 + }, + "governor": { + "votes": 11059, + "comparecimento": 35523, + "votosValidos": 32882, + "votosBranco": 946, + "votosNulo": 1689 + } } }, "itamari": { @@ -2250,6 +9876,47 @@ "2014": 4004, "2018": 2318, "2022": 4339 + }, + "campoFederalVotesByYear": { + "2014": 424, + "2018": 178, + "2022": 245 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4685, + "votosValidos": 4004, + "votosBranco": 168, + "votosNulo": 141 + }, + "2018": { + "comparecimento": 4620, + "votosValidos": 2318, + "votosBranco": 126, + "votosNulo": 1861 + }, + "2022": { + "comparecimento": 4798, + "votosValidos": 4339, + "votosBranco": 135, + "votosNulo": 161 + } + }, + "majoritarian2022": { + "president": { + "votes": 3080, + "comparecimento": 4798, + "votosValidos": 4539, + "votosBranco": 47, + "votosNulo": 212 + }, + "governor": { + "votes": 2801, + "comparecimento": 4798, + "votosValidos": 4409, + "votosBranco": 69, + "votosNulo": 320 + } } }, "itambe": { @@ -2262,6 +9929,47 @@ "2014": 10948, "2018": 10501, "2022": 13402 + }, + "campoFederalVotesByYear": { + "2014": 867, + "2018": 1336, + "2022": 837 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12575, + "votosValidos": 10948, + "votosBranco": 355, + "votosNulo": 287 + }, + "2018": { + "comparecimento": 12503, + "votosValidos": 10501, + "votosBranco": 316, + "votosNulo": 921 + }, + "2022": { + "comparecimento": 14508, + "votosValidos": 13402, + "votosBranco": 320, + "votosNulo": 298 + } + }, + "majoritarian2022": { + "president": { + "votes": 9489, + "comparecimento": 14510, + "votosValidos": 13819, + "votosBranco": 139, + "votosNulo": 552 + }, + "governor": { + "votes": 6689, + "comparecimento": 14508, + "votosValidos": 13436, + "votosBranco": 256, + "votosNulo": 816 + } } }, "itanagra": { @@ -2274,6 +9982,47 @@ "2014": 2847, "2018": 3483, "2022": 4129 + }, + "campoFederalVotesByYear": { + "2014": 1123, + "2018": 2444, + "2022": 1369 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3400, + "votosValidos": 2847, + "votosBranco": 195, + "votosNulo": 101 + }, + "2018": { + "comparecimento": 4149, + "votosValidos": 3483, + "votosBranco": 130, + "votosNulo": 206 + }, + "2022": { + "comparecimento": 4633, + "votosValidos": 4129, + "votosBranco": 177, + "votosNulo": 135 + } + }, + "majoritarian2022": { + "president": { + "votes": 3575, + "comparecimento": 4633, + "votosValidos": 4458, + "votosBranco": 44, + "votosNulo": 131 + }, + "governor": { + "votes": 2263, + "comparecimento": 4633, + "votosValidos": 4369, + "votosBranco": 70, + "votosNulo": 194 + } } }, "itanhem": { @@ -2286,6 +10035,47 @@ "2014": 9123, "2018": 8824, "2022": 10123 + }, + "campoFederalVotesByYear": { + "2014": 2231, + "2018": 2999, + "2022": 1592 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11258, + "votosValidos": 9123, + "votosBranco": 654, + "votosNulo": 462 + }, + "2018": { + "comparecimento": 10783, + "votosValidos": 8824, + "votosBranco": 332, + "votosNulo": 819 + }, + "2022": { + "comparecimento": 11412, + "votosValidos": 10123, + "votosBranco": 367, + "votosNulo": 366 + } + }, + "majoritarian2022": { + "president": { + "votes": 6718, + "comparecimento": 11412, + "votosValidos": 10797, + "votosBranco": 119, + "votosNulo": 496 + }, + "governor": { + "votes": 5826, + "comparecimento": 11412, + "votosValidos": 10303, + "votosBranco": 329, + "votosNulo": 777 + } } }, "itaparica": { @@ -2298,6 +10088,47 @@ "2014": 8962, "2018": 10982, "2022": 12730 + }, + "campoFederalVotesByYear": { + "2014": 1677, + "2018": 2046, + "2022": 1387 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12201, + "votosValidos": 8962, + "votosBranco": 859, + "votosNulo": 1404 + }, + "2018": { + "comparecimento": 13745, + "votosValidos": 10982, + "votosBranco": 425, + "votosNulo": 1524 + }, + "2022": { + "comparecimento": 14798, + "votosValidos": 12730, + "votosBranco": 674, + "votosNulo": 788 + } + }, + "majoritarian2022": { + "president": { + "votes": 11033, + "comparecimento": 14798, + "votosValidos": 14104, + "votosBranco": 206, + "votosNulo": 488 + }, + "governor": { + "votes": 7007, + "comparecimento": 14798, + "votosValidos": 13795, + "votosBranco": 329, + "votosNulo": 674 + } } }, "itape": { @@ -2310,6 +10141,47 @@ "2014": 4944, "2018": 5251, "2022": 5826 + }, + "campoFederalVotesByYear": { + "2014": 1863, + "2018": 1094, + "2022": 685 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6305, + "votosValidos": 4944, + "votosBranco": 466, + "votosNulo": 309 + }, + "2018": { + "comparecimento": 6636, + "votosValidos": 5251, + "votosBranco": 250, + "votosNulo": 629 + }, + "2022": { + "comparecimento": 6608, + "votosValidos": 5826, + "votosBranco": 267, + "votosNulo": 239 + } + }, + "majoritarian2022": { + "president": { + "votes": 4021, + "comparecimento": 6608, + "votosValidos": 6279, + "votosBranco": 70, + "votosNulo": 259 + }, + "governor": { + "votes": 3186, + "comparecimento": 6608, + "votosValidos": 6059, + "votosBranco": 159, + "votosNulo": 390 + } } }, "itapebi": { @@ -2322,6 +10194,47 @@ "2014": 4262, "2018": 4771, "2022": 5208 + }, + "campoFederalVotesByYear": { + "2014": 644, + "2018": 306, + "2022": 1536 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5273, + "votosValidos": 4262, + "votosBranco": 297, + "votosNulo": 167 + }, + "2018": { + "comparecimento": 5801, + "votosValidos": 4771, + "votosBranco": 135, + "votosNulo": 328 + }, + "2022": { + "comparecimento": 5872, + "votosValidos": 5208, + "votosBranco": 168, + "votosNulo": 157 + } + }, + "majoritarian2022": { + "president": { + "votes": 4103, + "comparecimento": 5872, + "votosValidos": 5607, + "votosBranco": 54, + "votosNulo": 211 + }, + "governor": { + "votes": 3254, + "comparecimento": 5872, + "votosValidos": 5405, + "votosBranco": 123, + "votosNulo": 344 + } } }, "itapetinga": { @@ -2334,6 +10247,47 @@ "2014": 29262, "2018": 27666, "2022": 33415 + }, + "campoFederalVotesByYear": { + "2014": 6114, + "2018": 3482, + "2022": 4073 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 35386, + "votosValidos": 29262, + "votosBranco": 2348, + "votosNulo": 1071 + }, + "2018": { + "comparecimento": 35101, + "votosValidos": 27666, + "votosBranco": 1849, + "votosNulo": 3544 + }, + "2022": { + "comparecimento": 38580, + "votosValidos": 33415, + "votosBranco": 2463, + "votosNulo": 1516 + } + }, + "majoritarian2022": { + "president": { + "votes": 19052, + "comparecimento": 38582, + "votosValidos": 36893, + "votosBranco": 571, + "votosNulo": 1118 + }, + "governor": { + "votes": 10834, + "comparecimento": 38580, + "votosValidos": 35763, + "votosBranco": 1141, + "votosNulo": 1674 + } } }, "itapicuru": { @@ -2346,6 +10300,47 @@ "2014": 12559, "2018": 12856, "2022": 15546 + }, + "campoFederalVotesByYear": { + "2014": 6092, + "2018": 1147, + "2022": 895 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15792, + "votosValidos": 12559, + "votosBranco": 1234, + "votosNulo": 577 + }, + "2018": { + "comparecimento": 15927, + "votosValidos": 12856, + "votosBranco": 759, + "votosNulo": 989 + }, + "2022": { + "comparecimento": 17868, + "votosValidos": 15546, + "votosBranco": 756, + "votosNulo": 679 + } + }, + "majoritarian2022": { + "president": { + "votes": 13715, + "comparecimento": 17869, + "votosValidos": 16770, + "votosBranco": 198, + "votosNulo": 901 + }, + "governor": { + "votes": 10119, + "comparecimento": 17868, + "votosValidos": 16004, + "votosBranco": 502, + "votosNulo": 1360 + } } }, "itapitanga": { @@ -2358,6 +10353,47 @@ "2014": 3677, "2018": 3612, "2022": 4279 + }, + "campoFederalVotesByYear": { + "2014": 1774, + "2018": 2164, + "2022": 898 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4348, + "votosValidos": 3677, + "votosBranco": 143, + "votosNulo": 146 + }, + "2018": { + "comparecimento": 4281, + "votosValidos": 3612, + "votosBranco": 97, + "votosNulo": 266 + }, + "2022": { + "comparecimento": 4656, + "votosValidos": 4279, + "votosBranco": 117, + "votosNulo": 118 + } + }, + "majoritarian2022": { + "president": { + "votes": 3198, + "comparecimento": 4656, + "votosValidos": 4493, + "votosBranco": 27, + "votosNulo": 136 + }, + "governor": { + "votes": 2670, + "comparecimento": 4656, + "votosValidos": 4296, + "votosBranco": 58, + "votosNulo": 301 + } } }, "itaquara": { @@ -2370,6 +10406,47 @@ "2014": 3766, "2018": 3809, "2022": 4407 + }, + "campoFederalVotesByYear": { + "2014": 214, + "2018": 272, + "2022": 122 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4664, + "votosValidos": 3766, + "votosBranco": 287, + "votosNulo": 183 + }, + "2018": { + "comparecimento": 4721, + "votosValidos": 3809, + "votosBranco": 183, + "votosNulo": 344 + }, + "2022": { + "comparecimento": 4950, + "votosValidos": 4407, + "votosBranco": 148, + "votosNulo": 184 + } + }, + "majoritarian2022": { + "president": { + "votes": 3447, + "comparecimento": 4950, + "votosValidos": 4646, + "votosBranco": 74, + "votosNulo": 230 + }, + "governor": { + "votes": 3079, + "comparecimento": 4950, + "votosValidos": 4543, + "votosBranco": 96, + "votosNulo": 311 + } } }, "itarantim": { @@ -2382,6 +10459,47 @@ "2014": 0, "2018": 8314, "2022": 9672 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 955, + "2022": 274 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 10190, + "votosValidos": 8314, + "votosBranco": 301, + "votosNulo": 776 + }, + "2022": { + "comparecimento": 10737, + "votosValidos": 9672, + "votosBranco": 356, + "votosNulo": 342 + } + }, + "majoritarian2022": { + "president": { + "votes": 6164, + "comparecimento": 10737, + "votosValidos": 10241, + "votosBranco": 107, + "votosNulo": 389 + }, + "governor": { + "votes": 4968, + "comparecimento": 10737, + "votosValidos": 9846, + "votosBranco": 253, + "votosNulo": 637 + } } }, "itatim": { @@ -2394,6 +10512,47 @@ "2014": 7744, "2018": 7511, "2022": 9080 + }, + "campoFederalVotesByYear": { + "2014": 268, + "2018": 467, + "2022": 1010 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8797, + "votosValidos": 7744, + "votosBranco": 319, + "votosNulo": 214 + }, + "2018": { + "comparecimento": 9062, + "votosValidos": 7511, + "votosBranco": 265, + "votosNulo": 760 + }, + "2022": { + "comparecimento": 10086, + "votosValidos": 9080, + "votosBranco": 393, + "votosNulo": 368 + } + }, + "majoritarian2022": { + "president": { + "votes": 6727, + "comparecimento": 10086, + "votosValidos": 9570, + "votosBranco": 164, + "votosNulo": 352 + }, + "governor": { + "votes": 3014, + "comparecimento": 10086, + "votosValidos": 9415, + "votosBranco": 224, + "votosNulo": 447 + } } }, "itirucu": { @@ -2406,6 +10565,47 @@ "2014": 5234, "2018": 4893, "2022": 6105 + }, + "campoFederalVotesByYear": { + "2014": 1674, + "2018": 2116, + "2022": 2174 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6607, + "votosValidos": 5234, + "votosBranco": 477, + "votosNulo": 288 + }, + "2018": { + "comparecimento": 6531, + "votosValidos": 4893, + "votosBranco": 299, + "votosNulo": 774 + }, + "2022": { + "comparecimento": 7196, + "votosValidos": 6105, + "votosBranco": 389, + "votosNulo": 393 + } + }, + "majoritarian2022": { + "president": { + "votes": 4863, + "comparecimento": 7196, + "votosValidos": 6770, + "votosBranco": 111, + "votosNulo": 315 + }, + "governor": { + "votes": 3748, + "comparecimento": 7196, + "votosValidos": 6357, + "votosBranco": 273, + "votosNulo": 566 + } } }, "itiuba": { @@ -2418,6 +10618,47 @@ "2014": 15923, "2018": 12883, "2022": 19497 + }, + "campoFederalVotesByYear": { + "2014": 8379, + "2018": 6026, + "2022": 4872 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 19800, + "votosValidos": 15923, + "votosBranco": 1220, + "votosNulo": 916 + }, + "2018": { + "comparecimento": 20342, + "votosValidos": 12883, + "votosBranco": 790, + "votosNulo": 5465 + }, + "2022": { + "comparecimento": 21724, + "votosValidos": 19497, + "votosBranco": 809, + "votosNulo": 575 + } + }, + "majoritarian2022": { + "president": { + "votes": 14896, + "comparecimento": 21725, + "votosValidos": 20766, + "votosBranco": 331, + "votosNulo": 628 + }, + "governor": { + "votes": 11227, + "comparecimento": 21724, + "votosValidos": 20187, + "votosBranco": 544, + "votosNulo": 987 + } } }, "itororo": { @@ -2430,6 +10671,47 @@ "2014": 8688, "2018": 9376, "2022": 11167 + }, + "campoFederalVotesByYear": { + "2014": 1570, + "2018": 569, + "2022": 1753 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10701, + "votosValidos": 8688, + "votosBranco": 537, + "votosNulo": 366 + }, + "2018": { + "comparecimento": 11369, + "votosValidos": 9376, + "votosBranco": 327, + "votosNulo": 761 + }, + "2022": { + "comparecimento": 12562, + "votosValidos": 11167, + "votosBranco": 489, + "votosNulo": 428 + } + }, + "majoritarian2022": { + "president": { + "votes": 7555, + "comparecimento": 12562, + "votosValidos": 11965, + "votosBranco": 128, + "votosNulo": 469 + }, + "governor": { + "votes": 5757, + "comparecimento": 12562, + "votosValidos": 11541, + "votosBranco": 298, + "votosNulo": 723 + } } }, "ituacu": { @@ -2442,6 +10724,47 @@ "2014": 9396, "2018": 8728, "2022": 10703 + }, + "campoFederalVotesByYear": { + "2014": 290, + "2018": 703, + "2022": 702 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11353, + "votosValidos": 9396, + "votosBranco": 642, + "votosNulo": 359 + }, + "2018": { + "comparecimento": 11423, + "votosValidos": 8728, + "votosBranco": 491, + "votosNulo": 1342 + }, + "2022": { + "comparecimento": 12495, + "votosValidos": 10703, + "votosBranco": 573, + "votosNulo": 552 + } + }, + "majoritarian2022": { + "president": { + "votes": 8148, + "comparecimento": 12495, + "votosValidos": 11732, + "votosBranco": 219, + "votosNulo": 544 + }, + "governor": { + "votes": 6186, + "comparecimento": 12495, + "votosValidos": 11313, + "votosBranco": 344, + "votosNulo": 836 + } } }, "itubera": { @@ -2454,6 +10777,47 @@ "2014": 11010, "2018": 10469, "2022": 11847 + }, + "campoFederalVotesByYear": { + "2014": 2216, + "2018": 4656, + "2022": 3139 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13605, + "votosValidos": 11010, + "votosBranco": 817, + "votosNulo": 576 + }, + "2018": { + "comparecimento": 13265, + "votosValidos": 10469, + "votosBranco": 497, + "votosNulo": 1219 + }, + "2022": { + "comparecimento": 13600, + "votosValidos": 11847, + "votosBranco": 651, + "votosNulo": 550 + } + }, + "majoritarian2022": { + "president": { + "votes": 7740, + "comparecimento": 13600, + "votosValidos": 12826, + "votosBranco": 235, + "votosNulo": 539 + }, + "governor": { + "votes": 4111, + "comparecimento": 13600, + "votosValidos": 12453, + "votosBranco": 352, + "votosNulo": 793 + } } }, "iuiu": { @@ -2466,6 +10830,47 @@ "2014": 0, "2018": 5560, "2022": 6277 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1901, + "2022": 2247 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6331, + "votosValidos": 5560, + "votosBranco": 167, + "votosNulo": 203 + }, + "2022": { + "comparecimento": 6763, + "votosValidos": 6277, + "votosBranco": 187, + "votosNulo": 115 + } + }, + "majoritarian2022": { + "president": { + "votes": 5186, + "comparecimento": 6764, + "votosValidos": 6507, + "votosBranco": 67, + "votosNulo": 190 + }, + "governor": { + "votes": 5378, + "comparecimento": 6763, + "votosValidos": 6314, + "votosBranco": 149, + "votosNulo": 300 + } } }, "jaborandi": { @@ -2478,6 +10883,47 @@ "2014": 4623, "2018": 5076, "2022": 6574 + }, + "campoFederalVotesByYear": { + "2014": 375, + "2018": 1099, + "2022": 258 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5608, + "votosValidos": 4623, + "votosBranco": 373, + "votosNulo": 174 + }, + "2018": { + "comparecimento": 6357, + "votosValidos": 5076, + "votosBranco": 318, + "votosNulo": 437 + }, + "2022": { + "comparecimento": 7205, + "votosValidos": 6574, + "votosBranco": 232, + "votosNulo": 208 + } + }, + "majoritarian2022": { + "president": { + "votes": 5184, + "comparecimento": 7205, + "votosValidos": 6890, + "votosBranco": 73, + "votosNulo": 242 + }, + "governor": { + "votes": 4084, + "comparecimento": 7205, + "votosValidos": 6540, + "votosBranco": 245, + "votosNulo": 420 + } } }, "jacaraci": { @@ -2490,6 +10936,47 @@ "2014": 6909, "2018": 6957, "2022": 7927 + }, + "campoFederalVotesByYear": { + "2014": 957, + "2018": 1992, + "2022": 1892 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8129, + "votosValidos": 6909, + "votosBranco": 328, + "votosNulo": 211 + }, + "2018": { + "comparecimento": 8432, + "votosValidos": 6957, + "votosBranco": 276, + "votosNulo": 583 + }, + "2022": { + "comparecimento": 8826, + "votosValidos": 7927, + "votosBranco": 309, + "votosNulo": 239 + } + }, + "majoritarian2022": { + "president": { + "votes": 6682, + "comparecimento": 8828, + "votosValidos": 8430, + "votosBranco": 76, + "votosNulo": 322 + }, + "governor": { + "votes": 6773, + "comparecimento": 8826, + "votosValidos": 8188, + "votosBranco": 150, + "votosNulo": 488 + } } }, "jacobina": { @@ -2502,6 +10989,47 @@ "2014": 32396, "2018": 33576, "2022": 41199 + }, + "campoFederalVotesByYear": { + "2014": 17503, + "2018": 10748, + "2022": 20134 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 42029, + "votosValidos": 32396, + "votosBranco": 2940, + "votosNulo": 2759 + }, + "2018": { + "comparecimento": 44769, + "votosValidos": 33576, + "votosBranco": 2186, + "votosNulo": 5031 + }, + "2022": { + "comparecimento": 47895, + "votosValidos": 41199, + "votosBranco": 2252, + "votosNulo": 2313 + } + }, + "majoritarian2022": { + "president": { + "votes": 32313, + "comparecimento": 47899, + "votosValidos": 45400, + "votosBranco": 589, + "votosNulo": 1910 + }, + "governor": { + "votes": 22337, + "comparecimento": 47895, + "votosValidos": 43799, + "votosBranco": 1260, + "votosNulo": 2835 + } } }, "jaguaquara": { @@ -2514,6 +11042,47 @@ "2014": 19392, "2018": 17660, "2022": 22581 + }, + "campoFederalVotesByYear": { + "2014": 1490, + "2018": 2750, + "2022": 2736 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 24996, + "votosValidos": 19392, + "votosBranco": 1910, + "votosNulo": 1633 + }, + "2018": { + "comparecimento": 25232, + "votosValidos": 17660, + "votosBranco": 1258, + "votosNulo": 4407 + }, + "2022": { + "comparecimento": 26767, + "votosValidos": 22581, + "votosBranco": 1371, + "votosNulo": 1687 + } + }, + "majoritarian2022": { + "president": { + "votes": 17054, + "comparecimento": 26767, + "votosValidos": 25222, + "votosBranco": 356, + "votosNulo": 1189 + }, + "governor": { + "votes": 15081, + "comparecimento": 26767, + "votosValidos": 24121, + "votosBranco": 696, + "votosNulo": 1946 + } } }, "jaguarari": { @@ -2526,6 +11095,47 @@ "2014": 14023, "2018": 11895, "2022": 15154 + }, + "campoFederalVotesByYear": { + "2014": 5927, + "2018": 2701, + "2022": 5887 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 17314, + "votosValidos": 14023, + "votosBranco": 1033, + "votosNulo": 462 + }, + "2018": { + "comparecimento": 17205, + "votosValidos": 11895, + "votosBranco": 795, + "votosNulo": 3371 + }, + "2022": { + "comparecimento": 17607, + "votosValidos": 15154, + "votosBranco": 1015, + "votosNulo": 566 + } + }, + "majoritarian2022": { + "president": { + "votes": 12274, + "comparecimento": 17610, + "votosValidos": 16738, + "votosBranco": 286, + "votosNulo": 586 + }, + "governor": { + "votes": 9006, + "comparecimento": 17607, + "votosValidos": 16166, + "votosBranco": 524, + "votosNulo": 916 + } } }, "jaguaripe": { @@ -2538,6 +11148,47 @@ "2014": 7001, "2018": 8506, "2022": 10524 + }, + "campoFederalVotesByYear": { + "2014": 1323, + "2018": 1044, + "2022": 1414 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9362, + "votosValidos": 7001, + "votosBranco": 603, + "votosNulo": 844 + }, + "2018": { + "comparecimento": 10195, + "votosValidos": 8506, + "votosBranco": 355, + "votosNulo": 607 + }, + "2022": { + "comparecimento": 11930, + "votosValidos": 10524, + "votosBranco": 506, + "votosNulo": 391 + } + }, + "majoritarian2022": { + "president": { + "votes": 8935, + "comparecimento": 11930, + "votosValidos": 11265, + "votosBranco": 238, + "votosNulo": 427 + }, + "governor": { + "votes": 6812, + "comparecimento": 11930, + "votosValidos": 10932, + "votosBranco": 340, + "votosNulo": 657 + } } }, "jandaira": { @@ -2550,6 +11201,47 @@ "2014": 4363, "2018": 4753, "2022": 5751 + }, + "campoFederalVotesByYear": { + "2014": 923, + "2018": 1317, + "2022": 1798 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5692, + "votosValidos": 4363, + "votosBranco": 219, + "votosNulo": 539 + }, + "2018": { + "comparecimento": 5853, + "votosValidos": 4753, + "votosBranco": 165, + "votosNulo": 417 + }, + "2022": { + "comparecimento": 6502, + "votosValidos": 5751, + "votosBranco": 206, + "votosNulo": 277 + } + }, + "majoritarian2022": { + "president": { + "votes": 5061, + "comparecimento": 6503, + "votosValidos": 6218, + "votosBranco": 49, + "votosNulo": 236 + }, + "governor": { + "votes": 2560, + "comparecimento": 6502, + "votosValidos": 6021, + "votosBranco": 118, + "votosNulo": 362 + } } }, "jequie": { @@ -2562,6 +11254,47 @@ "2014": 68276, "2018": 70811, "2022": 82501 + }, + "campoFederalVotesByYear": { + "2014": 6054, + "2018": 9196, + "2022": 9422 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 83494, + "votosValidos": 68276, + "votosBranco": 4851, + "votosNulo": 3711 + }, + "2018": { + "comparecimento": 90369, + "votosValidos": 70811, + "votosBranco": 3508, + "votosNulo": 9889 + }, + "2022": { + "comparecimento": 93720, + "votosValidos": 82501, + "votosBranco": 3960, + "votosNulo": 4485 + } + }, + "majoritarian2022": { + "president": { + "votes": 55276, + "comparecimento": 93874, + "votosValidos": 88962, + "votosBranco": 1355, + "votosNulo": 3557 + }, + "governor": { + "votes": 41765, + "comparecimento": 93720, + "votosValidos": 85520, + "votosBranco": 2657, + "votosNulo": 5538 + } } }, "jeremoabo": { @@ -2574,6 +11307,47 @@ "2014": 16407, "2018": 17206, "2022": 20692 + }, + "campoFederalVotesByYear": { + "2014": 1666, + "2018": 3342, + "2022": 1737 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 19630, + "votosValidos": 16407, + "votosBranco": 806, + "votosNulo": 614 + }, + "2018": { + "comparecimento": 19838, + "votosValidos": 17206, + "votosBranco": 578, + "votosNulo": 812 + }, + "2022": { + "comparecimento": 22645, + "votosValidos": 20692, + "votosBranco": 581, + "votosNulo": 512 + } + }, + "majoritarian2022": { + "president": { + "votes": 17545, + "comparecimento": 22650, + "votosValidos": 21649, + "votosBranco": 160, + "votosNulo": 841 + }, + "governor": { + "votes": 10933, + "comparecimento": 22645, + "votosValidos": 20991, + "votosBranco": 399, + "votosNulo": 1254 + } } }, "jiquirica": { @@ -2586,6 +11360,47 @@ "2014": 0, "2018": 6396, "2022": 7771 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 4054, + "2022": 3792 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 7866, + "votosValidos": 6396, + "votosBranco": 313, + "votosNulo": 462 + }, + "2022": { + "comparecimento": 8723, + "votosValidos": 7771, + "votosBranco": 310, + "votosNulo": 257 + } + }, + "majoritarian2022": { + "president": { + "votes": 6306, + "comparecimento": 8723, + "votosValidos": 8240, + "votosBranco": 187, + "votosNulo": 296 + }, + "governor": { + "votes": 5604, + "comparecimento": 8723, + "votosValidos": 8030, + "votosBranco": 248, + "votosNulo": 445 + } } }, "jitauna": { @@ -2598,6 +11413,47 @@ "2014": 0, "2018": 7158, "2022": 8611 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1147, + "2022": 599 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8792, + "votosValidos": 7158, + "votosBranco": 239, + "votosNulo": 556 + }, + "2022": { + "comparecimento": 9529, + "votosValidos": 8611, + "votosBranco": 236, + "votosNulo": 318 + } + }, + "majoritarian2022": { + "president": { + "votes": 6397, + "comparecimento": 9529, + "votosValidos": 8925, + "votosBranco": 111, + "votosNulo": 493 + }, + "governor": { + "votes": 5714, + "comparecimento": 9529, + "votosValidos": 8717, + "votosBranco": 160, + "votosNulo": 651 + } } }, "joao-dourado": { @@ -2610,6 +11466,47 @@ "2014": 10425, "2018": 11239, "2022": 13515 + }, + "campoFederalVotesByYear": { + "2014": 3812, + "2018": 3064, + "2022": 2596 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12650, + "votosValidos": 10425, + "votosBranco": 612, + "votosNulo": 614 + }, + "2018": { + "comparecimento": 13359, + "votosValidos": 11239, + "votosBranco": 387, + "votosNulo": 711 + }, + "2022": { + "comparecimento": 14814, + "votosValidos": 13515, + "votosBranco": 493, + "votosNulo": 346 + } + }, + "majoritarian2022": { + "president": { + "votes": 9351, + "comparecimento": 14814, + "votosValidos": 14332, + "votosBranco": 122, + "votosNulo": 360 + }, + "governor": { + "votes": 6476, + "comparecimento": 14814, + "votosValidos": 13984, + "votosBranco": 238, + "votosNulo": 592 + } } }, "juazeiro": { @@ -2622,6 +11519,47 @@ "2014": 65174, "2018": 58471, "2022": 114149 + }, + "campoFederalVotesByYear": { + "2014": 20035, + "2018": 9218, + "2022": 13215 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 113751, + "votosValidos": 65174, + "votosBranco": 5979, + "votosNulo": 4401 + }, + "2018": { + "comparecimento": 121875, + "votosValidos": 58471, + "votosBranco": 6241, + "votosNulo": 50615 + }, + "2022": { + "comparecimento": 130688, + "votosValidos": 114149, + "votosBranco": 6947, + "votosNulo": 5136 + } + }, + "majoritarian2022": { + "president": { + "votes": 82560, + "comparecimento": 130947, + "votosValidos": 126502, + "votosBranco": 1497, + "votosNulo": 2948 + }, + "governor": { + "votes": 54864, + "comparecimento": 130688, + "votosValidos": 120185, + "votosBranco": 4595, + "votosNulo": 5896 + } } }, "jucurucu": { @@ -2634,6 +11572,47 @@ "2014": 4853, "2018": 5004, "2022": 6011 + }, + "campoFederalVotesByYear": { + "2014": 733, + "2018": 909, + "2022": 524 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5622, + "votosValidos": 4853, + "votosBranco": 120, + "votosNulo": 135 + }, + "2018": { + "comparecimento": 5716, + "votosValidos": 5004, + "votosBranco": 110, + "votosNulo": 174 + }, + "2022": { + "comparecimento": 6486, + "votosValidos": 6011, + "votosBranco": 118, + "votosNulo": 99 + } + }, + "majoritarian2022": { + "president": { + "votes": 4189, + "comparecimento": 6486, + "votosValidos": 6136, + "votosBranco": 66, + "votosNulo": 284 + }, + "governor": { + "votes": 3042, + "comparecimento": 6486, + "votosValidos": 5970, + "votosBranco": 90, + "votosNulo": 426 + } } }, "jussara": { @@ -2646,6 +11625,47 @@ "2014": 7381, "2018": 5921, "2022": 9614 + }, + "campoFederalVotesByYear": { + "2014": 1331, + "2018": 1099, + "2022": 3010 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8855, + "votosValidos": 7381, + "votosBranco": 358, + "votosNulo": 377 + }, + "2018": { + "comparecimento": 9060, + "votosValidos": 5921, + "votosBranco": 264, + "votosNulo": 351 + }, + "2022": { + "comparecimento": 10552, + "votosValidos": 9614, + "votosBranco": 272, + "votosNulo": 253 + } + }, + "majoritarian2022": { + "president": { + "votes": 8970, + "comparecimento": 10552, + "votosValidos": 10084, + "votosBranco": 72, + "votosNulo": 396 + }, + "governor": { + "votes": 6444, + "comparecimento": 10552, + "votosValidos": 9852, + "votosBranco": 143, + "votosNulo": 557 + } } }, "jussari": { @@ -2658,6 +11678,47 @@ "2014": 0, "2018": 2734, "2022": 3200 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1212, + "2022": 1156 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 3234, + "votosValidos": 2734, + "votosBranco": 53, + "votosNulo": 171 + }, + "2022": { + "comparecimento": 3487, + "votosValidos": 3200, + "votosBranco": 51, + "votosNulo": 74 + } + }, + "majoritarian2022": { + "president": { + "votes": 2119, + "comparecimento": 3487, + "votosValidos": 3343, + "votosBranco": 33, + "votosNulo": 111 + }, + "governor": { + "votes": 1871, + "comparecimento": 3487, + "votosValidos": 3260, + "votosBranco": 45, + "votosNulo": 181 + } } }, "jussiape": { @@ -2670,6 +11731,47 @@ "2014": 4136, "2018": 3868, "2022": 4731 + }, + "campoFederalVotesByYear": { + "2014": 194, + "2018": 189, + "2022": 124 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4834, + "votosValidos": 4136, + "votosBranco": 246, + "votosNulo": 120 + }, + "2018": { + "comparecimento": 4956, + "votosValidos": 3868, + "votosBranco": 192, + "votosNulo": 630 + }, + "2022": { + "comparecimento": 5332, + "votosValidos": 4731, + "votosBranco": 247, + "votosNulo": 200 + } + }, + "majoritarian2022": { + "president": { + "votes": 3764, + "comparecimento": 5332, + "votosValidos": 5006, + "votosBranco": 115, + "votosNulo": 211 + }, + "governor": { + "votes": 2529, + "comparecimento": 5332, + "votosValidos": 4848, + "votosBranco": 177, + "votosNulo": 307 + } } }, "lafaiete-coutinho": { @@ -2682,6 +11784,47 @@ "2014": 0, "2018": 2388, "2022": 3042 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 215, + "2022": 1180 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 3076, + "votosValidos": 2388, + "votosBranco": 108, + "votosNulo": 266 + }, + "2022": { + "comparecimento": 3345, + "votosValidos": 3042, + "votosBranco": 89, + "votosNulo": 91 + } + }, + "majoritarian2022": { + "president": { + "votes": 2497, + "comparecimento": 3346, + "votosValidos": 3144, + "votosBranco": 58, + "votosNulo": 144 + }, + "governor": { + "votes": 2027, + "comparecimento": 3345, + "votosValidos": 3076, + "votosBranco": 62, + "votosNulo": 206 + } } }, "lagoa-real": { @@ -2694,6 +11837,47 @@ "2014": 6129, "2018": 6432, "2022": 7544 + }, + "campoFederalVotesByYear": { + "2014": 784, + "2018": 1790, + "2022": 1937 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7419, + "votosValidos": 6129, + "votosBranco": 259, + "votosNulo": 222 + }, + "2018": { + "comparecimento": 7732, + "votosValidos": 6432, + "votosBranco": 210, + "votosNulo": 462 + }, + "2022": { + "comparecimento": 8356, + "votosValidos": 7544, + "votosBranco": 230, + "votosNulo": 249 + } + }, + "majoritarian2022": { + "president": { + "votes": 6563, + "comparecimento": 8356, + "votosValidos": 7924, + "votosBranco": 77, + "votosNulo": 355 + }, + "governor": { + "votes": 4771, + "comparecimento": 8356, + "votosValidos": 7744, + "votosBranco": 129, + "votosNulo": 483 + } } }, "laje": { @@ -2706,6 +11890,47 @@ "2014": 10934, "2018": 11667, "2022": 13935 + }, + "campoFederalVotesByYear": { + "2014": 5129, + "2018": 4632, + "2022": 4696 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13948, + "votosValidos": 10934, + "votosBranco": 770, + "votosNulo": 637 + }, + "2018": { + "comparecimento": 14638, + "votosValidos": 11667, + "votosBranco": 432, + "votosNulo": 1240 + }, + "2022": { + "comparecimento": 15764, + "votosValidos": 13935, + "votosBranco": 510, + "votosNulo": 568 + } + }, + "majoritarian2022": { + "president": { + "votes": 10847, + "comparecimento": 15764, + "votosValidos": 14925, + "votosBranco": 195, + "votosNulo": 644 + }, + "governor": { + "votes": 8838, + "comparecimento": 15764, + "votosValidos": 14508, + "votosBranco": 301, + "votosNulo": 954 + } } }, "lajedao": { @@ -2718,6 +11943,47 @@ "2014": 2798, "2018": 2933, "2022": 3066 + }, + "campoFederalVotesByYear": { + "2014": 112, + "2018": 356, + "2022": 555 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3281, + "votosValidos": 2798, + "votosBranco": 107, + "votosNulo": 100 + }, + "2018": { + "comparecimento": 3324, + "votosValidos": 2933, + "votosBranco": 74, + "votosNulo": 91 + }, + "2022": { + "comparecimento": 3320, + "votosValidos": 3066, + "votosBranco": 75, + "votosNulo": 55 + } + }, + "majoritarian2022": { + "president": { + "votes": 1890, + "comparecimento": 3321, + "votosValidos": 3186, + "votosBranco": 23, + "votosNulo": 112 + }, + "governor": { + "votes": 1693, + "comparecimento": 3320, + "votosValidos": 3055, + "votosBranco": 79, + "votosNulo": 185 + } } }, "lajedinho": { @@ -2730,6 +11996,47 @@ "2014": 1908, "2018": 2137, "2022": 2513 + }, + "campoFederalVotesByYear": { + "2014": 226, + "2018": 534, + "2022": 441 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 2359, + "votosValidos": 1908, + "votosBranco": 68, + "votosNulo": 59 + }, + "2018": { + "comparecimento": 2486, + "votosValidos": 2137, + "votosBranco": 21, + "votosNulo": 118 + }, + "2022": { + "comparecimento": 2792, + "votosValidos": 2513, + "votosBranco": 52, + "votosNulo": 97 + } + }, + "majoritarian2022": { + "president": { + "votes": 2110, + "comparecimento": 2792, + "votosValidos": 2620, + "votosBranco": 20, + "votosNulo": 152 + }, + "governor": { + "votes": 1722, + "comparecimento": 2792, + "votosValidos": 2543, + "votosBranco": 29, + "votosNulo": 220 + } } }, "lajedo-do-tabocal": { @@ -2742,6 +12049,47 @@ "2014": 3336, "2018": 3448, "2022": 4152 + }, + "campoFederalVotesByYear": { + "2014": 422, + "2018": 694, + "2022": 524 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4253, + "votosValidos": 3336, + "votosBranco": 327, + "votosNulo": 202 + }, + "2018": { + "comparecimento": 4574, + "votosValidos": 3448, + "votosBranco": 223, + "votosNulo": 556 + }, + "2022": { + "comparecimento": 4959, + "votosValidos": 4152, + "votosBranco": 304, + "votosNulo": 314 + } + }, + "majoritarian2022": { + "president": { + "votes": 3716, + "comparecimento": 4959, + "votosValidos": 4668, + "votosBranco": 82, + "votosNulo": 209 + }, + "governor": { + "votes": 3021, + "comparecimento": 4959, + "votosValidos": 4380, + "votosBranco": 196, + "votosNulo": 383 + } } }, "lamarao": { @@ -2754,6 +12102,47 @@ "2014": 3744, "2018": 4232, "2022": 5002 + }, + "campoFederalVotesByYear": { + "2014": 440, + "2018": 2893, + "2022": 3439 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4870, + "votosValidos": 3744, + "votosBranco": 318, + "votosNulo": 257 + }, + "2018": { + "comparecimento": 5369, + "votosValidos": 4232, + "votosBranco": 180, + "votosNulo": 472 + }, + "2022": { + "comparecimento": 6004, + "votosValidos": 5002, + "votosBranco": 294, + "votosNulo": 333 + } + }, + "majoritarian2022": { + "president": { + "votes": 5014, + "comparecimento": 6004, + "votosValidos": 5717, + "votosBranco": 63, + "votosNulo": 224 + }, + "governor": { + "votes": 4091, + "comparecimento": 6004, + "votosValidos": 5518, + "votosBranco": 116, + "votosNulo": 370 + } } }, "lapao": { @@ -2766,6 +12155,47 @@ "2014": 13026, "2018": 14551, "2022": 16952 + }, + "campoFederalVotesByYear": { + "2014": 5136, + "2018": 2957, + "2022": 3107 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15536, + "votosValidos": 13026, + "votosBranco": 662, + "votosNulo": 595 + }, + "2018": { + "comparecimento": 16370, + "votosValidos": 14551, + "votosBranco": 298, + "votosNulo": 523 + }, + "2022": { + "comparecimento": 18317, + "votosValidos": 16952, + "votosBranco": 531, + "votosNulo": 341 + } + }, + "majoritarian2022": { + "president": { + "votes": 13753, + "comparecimento": 18317, + "votosValidos": 17630, + "votosBranco": 161, + "votosNulo": 526 + }, + "governor": { + "votes": 11668, + "comparecimento": 18317, + "votosValidos": 17134, + "votosBranco": 338, + "votosNulo": 844 + } } }, "lauro-de-freitas": { @@ -2778,6 +12208,47 @@ "2014": 68154, "2018": 80031, "2022": 103855 + }, + "campoFederalVotesByYear": { + "2014": 24273, + "2018": 16154, + "2022": 24333 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 91133, + "votosValidos": 68154, + "votosBranco": 8882, + "votosNulo": 7672 + }, + "2018": { + "comparecimento": 104521, + "votosValidos": 80031, + "votosBranco": 5470, + "votosNulo": 12423 + }, + "2022": { + "comparecimento": 123303, + "votosValidos": 103855, + "votosBranco": 7961, + "votosNulo": 7034 + } + }, + "majoritarian2022": { + "president": { + "votes": 74506, + "comparecimento": 123743, + "votosValidos": 117493, + "votosBranco": 1979, + "votosNulo": 4271 + }, + "governor": { + "votes": 46821, + "comparecimento": 123303, + "votosValidos": 113850, + "votosBranco": 3454, + "votosNulo": 5990 + } } }, "lencois": { @@ -2790,6 +12261,47 @@ "2014": 0, "2018": 4318, "2022": 5527 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1007, + "2022": 490 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5433, + "votosValidos": 4318, + "votosBranco": 199, + "votosNulo": 450 + }, + "2022": { + "comparecimento": 6241, + "votosValidos": 5527, + "votosBranco": 201, + "votosNulo": 267 + } + }, + "majoritarian2022": { + "president": { + "votes": 4989, + "comparecimento": 6241, + "votosValidos": 5971, + "votosBranco": 48, + "votosNulo": 222 + }, + "governor": { + "votes": 4247, + "comparecimento": 6241, + "votosValidos": 5764, + "votosBranco": 99, + "votosNulo": 378 + } } }, "licinio-de-almeida": { @@ -2802,6 +12314,47 @@ "2014": 0, "2018": 5984, "2022": 6891 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 4173, + "2022": 459 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 7226, + "votosValidos": 5984, + "votosBranco": 291, + "votosNulo": 477 + }, + "2022": { + "comparecimento": 7833, + "votosValidos": 6891, + "votosBranco": 393, + "votosNulo": 217 + } + }, + "majoritarian2022": { + "president": { + "votes": 5394, + "comparecimento": 7833, + "votosValidos": 7373, + "votosBranco": 133, + "votosNulo": 327 + }, + "governor": { + "votes": 4781, + "comparecimento": 7833, + "votosValidos": 7145, + "votosBranco": 223, + "votosNulo": 465 + } } }, "livramento-de-nossa-senhora": { @@ -2814,6 +12367,47 @@ "2014": 19116, "2018": 19903, "2022": 24702 + }, + "campoFederalVotesByYear": { + "2014": 5229, + "2018": 5916, + "2022": 6649 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 23992, + "votosValidos": 19116, + "votosBranco": 2034, + "votosNulo": 930 + }, + "2018": { + "comparecimento": 25335, + "votosValidos": 19903, + "votosBranco": 1295, + "votosNulo": 2370 + }, + "2022": { + "comparecimento": 28152, + "votosValidos": 24702, + "votosBranco": 1509, + "votosNulo": 920 + } + }, + "majoritarian2022": { + "president": { + "votes": 20337, + "comparecimento": 28152, + "votosValidos": 26880, + "votosBranco": 408, + "votosNulo": 864 + }, + "governor": { + "votes": 15356, + "comparecimento": 28152, + "votosValidos": 25828, + "votosBranco": 914, + "votosNulo": 1410 + } } }, "luis-eduardo-magalhaes": { @@ -2826,6 +12420,47 @@ "2014": 23622, "2018": 32078, "2022": 48216 + }, + "campoFederalVotesByYear": { + "2014": 991, + "2018": 1445, + "2022": 1481 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 30410, + "votosValidos": 23622, + "votosBranco": 3327, + "votosNulo": 1310 + }, + "2018": { + "comparecimento": 41001, + "votosValidos": 32078, + "votosBranco": 2765, + "votosNulo": 3648 + }, + "2022": { + "comparecimento": 55077, + "votosValidos": 48216, + "votosBranco": 3341, + "votosNulo": 1630 + } + }, + "majoritarian2022": { + "president": { + "votes": 22196, + "comparecimento": 55082, + "votosValidos": 53580, + "votosBranco": 574, + "votosNulo": 928 + }, + "governor": { + "votes": 12717, + "comparecimento": 55077, + "votosValidos": 51089, + "votosBranco": 2082, + "votosNulo": 1905 + } } }, "macajuba": { @@ -2838,6 +12473,47 @@ "2014": 4941, "2018": 5287, "2022": 6573 + }, + "campoFederalVotesByYear": { + "2014": 1624, + "2018": 761, + "2022": 454 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6315, + "votosValidos": 4941, + "votosBranco": 262, + "votosNulo": 293 + }, + "2018": { + "comparecimento": 6409, + "votosValidos": 5287, + "votosBranco": 177, + "votosNulo": 413 + }, + "2022": { + "comparecimento": 7326, + "votosValidos": 6573, + "votosBranco": 169, + "votosNulo": 249 + } + }, + "majoritarian2022": { + "president": { + "votes": 5138, + "comparecimento": 7326, + "votosValidos": 6853, + "votosBranco": 80, + "votosNulo": 393 + }, + "governor": { + "votes": 4202, + "comparecimento": 7326, + "votosValidos": 6663, + "votosBranco": 110, + "votosNulo": 553 + } } }, "macarani": { @@ -2850,6 +12526,47 @@ "2014": 7504, "2018": 7092, "2022": 8386 + }, + "campoFederalVotesByYear": { + "2014": 376, + "2018": 519, + "2022": 627 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9326, + "votosValidos": 7504, + "votosBranco": 453, + "votosNulo": 415 + }, + "2018": { + "comparecimento": 9337, + "votosValidos": 7092, + "votosBranco": 397, + "votosNulo": 1078 + }, + "2022": { + "comparecimento": 9731, + "votosValidos": 8386, + "votosBranco": 425, + "votosNulo": 465 + } + }, + "majoritarian2022": { + "president": { + "votes": 5424, + "comparecimento": 9731, + "votosValidos": 9106, + "votosBranco": 104, + "votosNulo": 521 + }, + "governor": { + "votes": 4096, + "comparecimento": 9731, + "votosValidos": 8641, + "votosBranco": 309, + "votosNulo": 781 + } } }, "macaubas": { @@ -2862,6 +12579,47 @@ "2014": 19299, "2018": 18416, "2022": 22190 + }, + "campoFederalVotesByYear": { + "2014": 2752, + "2018": 2761, + "2022": 2657 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 23115, + "votosValidos": 19299, + "votosBranco": 1259, + "votosNulo": 908 + }, + "2018": { + "comparecimento": 23503, + "votosValidos": 18416, + "votosBranco": 835, + "votosNulo": 2670 + }, + "2022": { + "comparecimento": 25523, + "votosValidos": 22190, + "votosBranco": 1037, + "votosNulo": 1224 + } + }, + "majoritarian2022": { + "president": { + "votes": 18848, + "comparecimento": 25523, + "votosValidos": 24208, + "votosBranco": 289, + "votosNulo": 1026 + }, + "governor": { + "votes": 13287, + "comparecimento": 25523, + "votosValidos": 23490, + "votosBranco": 521, + "votosNulo": 1509 + } } }, "macurure": { @@ -2874,6 +12632,47 @@ "2014": 4217, "2018": 3517, "2022": 4929 + }, + "campoFederalVotesByYear": { + "2014": 286, + "2018": 337, + "2022": 545 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4789, + "votosValidos": 4217, + "votosBranco": 116, + "votosNulo": 108 + }, + "2018": { + "comparecimento": 4731, + "votosValidos": 3517, + "votosBranco": 64, + "votosNulo": 864 + }, + "2022": { + "comparecimento": 5255, + "votosValidos": 4929, + "votosBranco": 65, + "votosNulo": 73 + } + }, + "majoritarian2022": { + "president": { + "votes": 4209, + "comparecimento": 5264, + "votosValidos": 5059, + "votosBranco": 47, + "votosNulo": 158 + }, + "governor": { + "votes": 3557, + "comparecimento": 5255, + "votosValidos": 4909, + "votosBranco": 58, + "votosNulo": 288 + } } }, "madre-de-deus": { @@ -2886,6 +12685,47 @@ "2014": 8832, "2018": 10936, "2022": 11693 + }, + "campoFederalVotesByYear": { + "2014": 1196, + "2018": 1964, + "2022": 1841 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11286, + "votosValidos": 8832, + "votosBranco": 970, + "votosNulo": 898 + }, + "2018": { + "comparecimento": 12722, + "votosValidos": 10936, + "votosBranco": 368, + "votosNulo": 958 + }, + "2022": { + "comparecimento": 13199, + "votosValidos": 11693, + "votosBranco": 604, + "votosNulo": 596 + } + }, + "majoritarian2022": { + "president": { + "votes": 9982, + "comparecimento": 13199, + "votosValidos": 12747, + "votosBranco": 126, + "votosNulo": 326 + }, + "governor": { + "votes": 6416, + "comparecimento": 13199, + "votosValidos": 12435, + "votosBranco": 287, + "votosNulo": 476 + } } }, "maetinga": { @@ -2898,6 +12738,47 @@ "2014": 0, "2018": 3616, "2022": 4300 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1962, + "2022": 956 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 4239, + "votosValidos": 3616, + "votosBranco": 99, + "votosNulo": 244 + }, + "2022": { + "comparecimento": 4773, + "votosValidos": 4300, + "votosBranco": 114, + "votosNulo": 169 + } + }, + "majoritarian2022": { + "president": { + "votes": 3395, + "comparecimento": 4773, + "votosValidos": 4481, + "votosBranco": 45, + "votosNulo": 247 + }, + "governor": { + "votes": 2603, + "comparecimento": 4773, + "votosValidos": 4319, + "votosBranco": 89, + "votosNulo": 365 + } } }, "maiquinique": { @@ -2910,6 +12791,47 @@ "2014": 4417, "2018": 4167, "2022": 5193 + }, + "campoFederalVotesByYear": { + "2014": 99, + "2018": 169, + "2022": 1348 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5175, + "votosValidos": 4417, + "votosBranco": 162, + "votosNulo": 148 + }, + "2018": { + "comparecimento": 5226, + "votosValidos": 4167, + "votosBranco": 175, + "votosNulo": 488 + }, + "2022": { + "comparecimento": 5763, + "votosValidos": 5193, + "votosBranco": 164, + "votosNulo": 150 + } + }, + "majoritarian2022": { + "president": { + "votes": 3295, + "comparecimento": 5763, + "votosValidos": 5431, + "votosBranco": 57, + "votosNulo": 275 + }, + "governor": { + "votes": 2279, + "comparecimento": 5763, + "votosValidos": 5268, + "votosBranco": 97, + "votosNulo": 397 + } } }, "mairi": { @@ -2922,6 +12844,47 @@ "2014": 7634, "2018": 7784, "2022": 9204 + }, + "campoFederalVotesByYear": { + "2014": 3043, + "2018": 4634, + "2022": 4585 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9847, + "votosValidos": 7634, + "votosBranco": 679, + "votosNulo": 511 + }, + "2018": { + "comparecimento": 9965, + "votosValidos": 7784, + "votosBranco": 409, + "votosNulo": 953 + }, + "2022": { + "comparecimento": 10657, + "votosValidos": 9204, + "votosBranco": 430, + "votosNulo": 449 + } + }, + "majoritarian2022": { + "president": { + "votes": 7524, + "comparecimento": 10658, + "votosValidos": 9976, + "votosBranco": 174, + "votosNulo": 508 + }, + "governor": { + "votes": 5803, + "comparecimento": 10657, + "votosValidos": 9629, + "votosBranco": 270, + "votosNulo": 758 + } } }, "malhada": { @@ -2934,6 +12897,47 @@ "2014": 7415, "2018": 8018, "2022": 9722 + }, + "campoFederalVotesByYear": { + "2014": 3788, + "2018": 2616, + "2022": 1188 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9114, + "votosValidos": 7415, + "votosBranco": 312, + "votosNulo": 579 + }, + "2018": { + "comparecimento": 9456, + "votosValidos": 8018, + "votosBranco": 290, + "votosNulo": 361 + }, + "2022": { + "comparecimento": 10533, + "votosValidos": 9722, + "votosBranco": 350, + "votosNulo": 190 + } + }, + "majoritarian2022": { + "president": { + "votes": 7190, + "comparecimento": 10534, + "votosValidos": 10131, + "votosBranco": 133, + "votosNulo": 270 + }, + "governor": { + "votes": 6280, + "comparecimento": 10533, + "votosValidos": 9774, + "votosBranco": 289, + "votosNulo": 470 + } } }, "malhada-de-pedras": { @@ -2946,6 +12950,47 @@ "2014": 4771, "2018": 4929, "2022": 5779 + }, + "campoFederalVotesByYear": { + "2014": 2708, + "2018": 2401, + "2022": 3545 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5426, + "votosValidos": 4771, + "votosBranco": 197, + "votosNulo": 91 + }, + "2018": { + "comparecimento": 5682, + "votosValidos": 4929, + "votosBranco": 170, + "votosNulo": 289 + }, + "2022": { + "comparecimento": 6279, + "votosValidos": 5779, + "votosBranco": 169, + "votosNulo": 117 + } + }, + "majoritarian2022": { + "president": { + "votes": 4332, + "comparecimento": 6279, + "votosValidos": 5989, + "votosBranco": 68, + "votosNulo": 222 + }, + "governor": { + "votes": 3895, + "comparecimento": 6279, + "votosValidos": 5865, + "votosBranco": 115, + "votosNulo": 299 + } } }, "manoel-vitorino": { @@ -2958,6 +13003,47 @@ "2014": 7227, "2018": 7876, "2022": 9004 + }, + "campoFederalVotesByYear": { + "2014": 325, + "2018": 3163, + "2022": 988 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8336, + "votosValidos": 7227, + "votosBranco": 276, + "votosNulo": 180 + }, + "2018": { + "comparecimento": 9543, + "votosValidos": 7876, + "votosBranco": 288, + "votosNulo": 586 + }, + "2022": { + "comparecimento": 9919, + "votosValidos": 9004, + "votosBranco": 273, + "votosNulo": 216 + } + }, + "majoritarian2022": { + "president": { + "votes": 7707, + "comparecimento": 9919, + "votosValidos": 9526, + "votosBranco": 82, + "votosNulo": 311 + }, + "governor": { + "votes": 7005, + "comparecimento": 9919, + "votosValidos": 9252, + "votosBranco": 174, + "votosNulo": 493 + } } }, "mansidao": { @@ -2970,6 +13056,47 @@ "2014": 4874, "2018": 5595, "2022": 6709 + }, + "campoFederalVotesByYear": { + "2014": 402, + "2018": 629, + "2022": 651 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5766, + "votosValidos": 4874, + "votosBranco": 218, + "votosNulo": 179 + }, + "2018": { + "comparecimento": 6220, + "votosValidos": 5595, + "votosBranco": 79, + "votosNulo": 101 + }, + "2022": { + "comparecimento": 7082, + "votosValidos": 6709, + "votosBranco": 61, + "votosNulo": 67 + } + }, + "majoritarian2022": { + "president": { + "votes": 5517, + "comparecimento": 7082, + "votosValidos": 6878, + "votosBranco": 44, + "votosNulo": 160 + }, + "governor": { + "votes": 3526, + "comparecimento": 7082, + "votosValidos": 6725, + "votosBranco": 83, + "votosNulo": 274 + } } }, "maracas": { @@ -2982,6 +13109,47 @@ "2014": 10826, "2018": 11372, "2022": 13602 + }, + "campoFederalVotesByYear": { + "2014": 3101, + "2018": 3680, + "2022": 3990 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13824, + "votosValidos": 10826, + "votosBranco": 970, + "votosNulo": 748 + }, + "2018": { + "comparecimento": 15004, + "votosValidos": 11372, + "votosBranco": 773, + "votosNulo": 1681 + }, + "2022": { + "comparecimento": 16297, + "votosValidos": 13602, + "votosBranco": 1161, + "votosNulo": 843 + } + }, + "majoritarian2022": { + "president": { + "votes": 11856, + "comparecimento": 16297, + "votosValidos": 15504, + "votosBranco": 244, + "votosNulo": 549 + }, + "governor": { + "votes": 8047, + "comparecimento": 16297, + "votosValidos": 14870, + "votosBranco": 467, + "votosNulo": 959 + } } }, "maragogipe": { @@ -2994,6 +13162,47 @@ "2014": 0, "2018": 19400, "2022": 24471 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 2835, + "2022": 2546 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 25216, + "votosValidos": 19400, + "votosBranco": 764, + "votosNulo": 1492 + }, + "2022": { + "comparecimento": 27802, + "votosValidos": 24471, + "votosBranco": 1087, + "votosNulo": 939 + } + }, + "majoritarian2022": { + "president": { + "votes": 21245, + "comparecimento": 27802, + "votosValidos": 26699, + "votosBranco": 311, + "votosNulo": 792 + }, + "governor": { + "votes": 13419, + "comparecimento": 27802, + "votosValidos": 26150, + "votosBranco": 490, + "votosNulo": 1162 + } } }, "marau": { @@ -3006,6 +13215,47 @@ "2014": 0, "2018": 7520, "2022": 9907 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 695, + "2022": 2084 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8941, + "votosValidos": 7520, + "votosBranco": 231, + "votosNulo": 568 + }, + "2022": { + "comparecimento": 11125, + "votosValidos": 9907, + "votosBranco": 370, + "votosNulo": 365 + } + }, + "majoritarian2022": { + "president": { + "votes": 7976, + "comparecimento": 11125, + "votosValidos": 10553, + "votosBranco": 140, + "votosNulo": 432 + }, + "governor": { + "votes": 4740, + "comparecimento": 11125, + "votosValidos": 10262, + "votosBranco": 234, + "votosNulo": 628 + } } }, "marcionilio-souza": { @@ -3018,6 +13268,47 @@ "2014": 4291, "2018": 4384, "2022": 5227 + }, + "campoFederalVotesByYear": { + "2014": 3093, + "2018": 2373, + "2022": 661 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5183, + "votosValidos": 4291, + "votosBranco": 219, + "votosNulo": 168 + }, + "2018": { + "comparecimento": 5415, + "votosValidos": 4384, + "votosBranco": 185, + "votosNulo": 330 + }, + "2022": { + "comparecimento": 5759, + "votosValidos": 5227, + "votosBranco": 163, + "votosNulo": 152 + } + }, + "majoritarian2022": { + "president": { + "votes": 4252, + "comparecimento": 5759, + "votosValidos": 5385, + "votosBranco": 64, + "votosNulo": 310 + }, + "governor": { + "votes": 3726, + "comparecimento": 5759, + "votosValidos": 5203, + "votosBranco": 90, + "votosNulo": 466 + } } }, "mascote": { @@ -3030,6 +13321,47 @@ "2014": 5196, "2018": 5081, "2022": 6189 + }, + "campoFederalVotesByYear": { + "2014": 2429, + "2018": 897, + "2022": 3758 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6171, + "votosValidos": 5196, + "votosBranco": 186, + "votosNulo": 167 + }, + "2018": { + "comparecimento": 6201, + "votosValidos": 5081, + "votosBranco": 150, + "votosNulo": 348 + }, + "2022": { + "comparecimento": 6906, + "votosValidos": 6189, + "votosBranco": 168, + "votosNulo": 145 + } + }, + "majoritarian2022": { + "president": { + "votes": 4796, + "comparecimento": 6906, + "votosValidos": 6644, + "votosBranco": 56, + "votosNulo": 206 + }, + "governor": { + "votes": 4183, + "comparecimento": 6906, + "votosValidos": 6434, + "votosBranco": 102, + "votosNulo": 369 + } } }, "mata-de-sao-joao": { @@ -3042,6 +13374,47 @@ "2014": 22026, "2018": 22752, "2022": 27562 + }, + "campoFederalVotesByYear": { + "2014": 2103, + "2018": 3930, + "2022": 11728 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 27095, + "votosValidos": 22026, + "votosBranco": 2165, + "votosNulo": 1218 + }, + "2018": { + "comparecimento": 31360, + "votosValidos": 22752, + "votosBranco": 1896, + "votosNulo": 4182 + }, + "2022": { + "comparecimento": 32473, + "votosValidos": 27562, + "votosBranco": 2039, + "votosNulo": 1715 + } + }, + "majoritarian2022": { + "president": { + "votes": 23148, + "comparecimento": 32473, + "votosValidos": 30560, + "votosBranco": 624, + "votosNulo": 1289 + }, + "governor": { + "votes": 15421, + "comparecimento": 32473, + "votosValidos": 29346, + "votosBranco": 1221, + "votosNulo": 1906 + } } }, "matina": { @@ -3054,6 +13427,47 @@ "2014": 5099, "2018": 5578, "2022": 6836 + }, + "campoFederalVotesByYear": { + "2014": 1491, + "2018": 901, + "2022": 357 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6359, + "votosValidos": 5099, + "votosBranco": 411, + "votosNulo": 213 + }, + "2018": { + "comparecimento": 6824, + "votosValidos": 5578, + "votosBranco": 260, + "votosNulo": 340 + }, + "2022": { + "comparecimento": 7622, + "votosValidos": 6836, + "votosBranco": 272, + "votosNulo": 205 + } + }, + "majoritarian2022": { + "president": { + "votes": 6273, + "comparecimento": 7622, + "votosValidos": 7171, + "votosBranco": 88, + "votosNulo": 363 + }, + "governor": { + "votes": 5006, + "comparecimento": 7622, + "votosValidos": 6923, + "votosBranco": 182, + "votosNulo": 517 + } } }, "medeiros-neto": { @@ -3066,6 +13480,47 @@ "2014": 10743, "2018": 10669, "2022": 12912 + }, + "campoFederalVotesByYear": { + "2014": 718, + "2018": 2142, + "2022": 2437 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13250, + "votosValidos": 10743, + "votosBranco": 647, + "votosNulo": 722 + }, + "2018": { + "comparecimento": 13296, + "votosValidos": 10669, + "votosBranco": 379, + "votosNulo": 1307 + }, + "2022": { + "comparecimento": 14593, + "votosValidos": 12912, + "votosBranco": 446, + "votosNulo": 505 + } + }, + "majoritarian2022": { + "president": { + "votes": 8215, + "comparecimento": 14594, + "votosValidos": 13845, + "votosBranco": 149, + "votosNulo": 600 + }, + "governor": { + "votes": 7126, + "comparecimento": 14593, + "votosValidos": 13162, + "votosBranco": 416, + "votosNulo": 1013 + } } }, "miguel-calmon": { @@ -3078,6 +13533,47 @@ "2014": 11693, "2018": 12251, "2022": 14018 + }, + "campoFederalVotesByYear": { + "2014": 5099, + "2018": 2006, + "2022": 2159 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 14744, + "votosValidos": 11693, + "votosBranco": 633, + "votosNulo": 828 + }, + "2018": { + "comparecimento": 15159, + "votosValidos": 12251, + "votosBranco": 430, + "votosNulo": 1272 + }, + "2022": { + "comparecimento": 16065, + "votosValidos": 14018, + "votosBranco": 506, + "votosNulo": 687 + } + }, + "majoritarian2022": { + "president": { + "votes": 10530, + "comparecimento": 16065, + "votosValidos": 15191, + "votosBranco": 160, + "votosNulo": 714 + }, + "governor": { + "votes": 8114, + "comparecimento": 16065, + "votosValidos": 14764, + "votosBranco": 259, + "votosNulo": 1039 + } } }, "milagres": { @@ -3090,6 +13586,47 @@ "2014": 5853, "2018": 5543, "2022": 6456 + }, + "campoFederalVotesByYear": { + "2014": 338, + "2018": 754, + "2022": 846 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6827, + "votosValidos": 5853, + "votosBranco": 226, + "votosNulo": 179 + }, + "2018": { + "comparecimento": 6480, + "votosValidos": 5543, + "votosBranco": 162, + "votosNulo": 423 + }, + "2022": { + "comparecimento": 7163, + "votosValidos": 6456, + "votosBranco": 208, + "votosNulo": 287 + } + }, + "majoritarian2022": { + "president": { + "votes": 5078, + "comparecimento": 7163, + "votosValidos": 6838, + "votosBranco": 59, + "votosNulo": 266 + }, + "governor": { + "votes": 2691, + "comparecimento": 7163, + "votosValidos": 6554, + "votosBranco": 130, + "votosNulo": 479 + } } }, "mirangaba": { @@ -3102,6 +13639,47 @@ "2014": 7102, "2018": 7426, "2022": 8874 + }, + "campoFederalVotesByYear": { + "2014": 3155, + "2018": 4058, + "2022": 991 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8539, + "votosValidos": 7102, + "votosBranco": 296, + "votosNulo": 285 + }, + "2018": { + "comparecimento": 8905, + "votosValidos": 7426, + "votosBranco": 207, + "votosNulo": 508 + }, + "2022": { + "comparecimento": 9734, + "votosValidos": 8874, + "votosBranco": 219, + "votosNulo": 196 + } + }, + "majoritarian2022": { + "president": { + "votes": 7212, + "comparecimento": 9734, + "votosValidos": 9277, + "votosBranco": 100, + "votosNulo": 357 + }, + "governor": { + "votes": 5010, + "comparecimento": 9734, + "votosValidos": 9041, + "votosBranco": 145, + "votosNulo": 548 + } } }, "mirante": { @@ -3114,6 +13692,47 @@ "2014": 4194, "2018": 4695, "2022": 5561 + }, + "campoFederalVotesByYear": { + "2014": 1953, + "2018": 2472, + "2022": 1628 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5030, + "votosValidos": 4194, + "votosBranco": 181, + "votosNulo": 106 + }, + "2018": { + "comparecimento": 5327, + "votosValidos": 4695, + "votosBranco": 101, + "votosNulo": 162 + }, + "2022": { + "comparecimento": 6103, + "votosValidos": 5561, + "votosBranco": 153, + "votosNulo": 118 + } + }, + "majoritarian2022": { + "president": { + "votes": 4593, + "comparecimento": 6103, + "votosValidos": 5827, + "votosBranco": 58, + "votosNulo": 218 + }, + "governor": { + "votes": 4157, + "comparecimento": 6103, + "votosValidos": 5669, + "votosBranco": 84, + "votosNulo": 349 + } } }, "monte-santo": { @@ -3126,6 +13745,47 @@ "2014": 23608, "2018": 24103, "2022": 29585 + }, + "campoFederalVotesByYear": { + "2014": 3668, + "2018": 7642, + "2022": 5511 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 28981, + "votosValidos": 23608, + "votosBranco": 1571, + "votosNulo": 844 + }, + "2018": { + "comparecimento": 30186, + "votosValidos": 24103, + "votosBranco": 978, + "votosNulo": 2751 + }, + "2022": { + "comparecimento": 32430, + "votosValidos": 29585, + "votosBranco": 877, + "votosNulo": 657 + } + }, + "majoritarian2022": { + "president": { + "votes": 26669, + "comparecimento": 32432, + "votosValidos": 30988, + "votosBranco": 291, + "votosNulo": 1153 + }, + "governor": { + "votes": 22313, + "comparecimento": 32430, + "votosValidos": 30204, + "votosBranco": 524, + "votosNulo": 1701 + } } }, "morpara": { @@ -3138,6 +13798,47 @@ "2014": 3909, "2018": 4495, "2022": 5369 + }, + "campoFederalVotesByYear": { + "2014": 2220, + "2018": 2456, + "2022": 2854 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5094, + "votosValidos": 3909, + "votosBranco": 123, + "votosNulo": 552 + }, + "2018": { + "comparecimento": 5201, + "votosValidos": 4495, + "votosBranco": 117, + "votosNulo": 164 + }, + "2022": { + "comparecimento": 5902, + "votosValidos": 5369, + "votosBranco": 119, + "votosNulo": 96 + } + }, + "majoritarian2022": { + "president": { + "votes": 4139, + "comparecimento": 5903, + "votosValidos": 5662, + "votosBranco": 54, + "votosNulo": 187 + }, + "governor": { + "votes": 3583, + "comparecimento": 5902, + "votosValidos": 5559, + "votosBranco": 73, + "votosNulo": 270 + } } }, "morro-do-chapeu": { @@ -3150,6 +13851,47 @@ "2014": 14850, "2018": 13945, "2022": 18185 + }, + "campoFederalVotesByYear": { + "2014": 1860, + "2018": 2306, + "2022": 2578 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 17564, + "votosValidos": 14850, + "votosBranco": 593, + "votosNulo": 676 + }, + "2018": { + "comparecimento": 18388, + "votosValidos": 13945, + "votosBranco": 528, + "votosNulo": 1310 + }, + "2022": { + "comparecimento": 20480, + "votosValidos": 18185, + "votosBranco": 722, + "votosNulo": 745 + } + }, + "majoritarian2022": { + "president": { + "votes": 14845, + "comparecimento": 20482, + "votosValidos": 19492, + "votosBranco": 246, + "votosNulo": 744 + }, + "governor": { + "votes": 8967, + "comparecimento": 20480, + "votosValidos": 18927, + "votosBranco": 398, + "votosNulo": 1154 + } } }, "mortugaba": { @@ -3162,6 +13904,47 @@ "2014": 5719, "2018": 5627, "2022": 6415 + }, + "campoFederalVotesByYear": { + "2014": 1450, + "2018": 2386, + "2022": 3295 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6628, + "votosValidos": 5719, + "votosBranco": 193, + "votosNulo": 152 + }, + "2018": { + "comparecimento": 6752, + "votosValidos": 5627, + "votosBranco": 154, + "votosNulo": 468 + }, + "2022": { + "comparecimento": 7027, + "votosValidos": 6415, + "votosBranco": 157, + "votosNulo": 189 + } + }, + "majoritarian2022": { + "president": { + "votes": 4080, + "comparecimento": 7027, + "votosValidos": 6702, + "votosBranco": 61, + "votosNulo": 264 + }, + "governor": { + "votes": 3567, + "comparecimento": 7027, + "votosValidos": 6447, + "votosBranco": 117, + "votosNulo": 463 + } } }, "mucuge": { @@ -3174,6 +13957,47 @@ "2014": 5145, "2018": 5236, "2022": 6852 + }, + "campoFederalVotesByYear": { + "2014": 1454, + "2018": 750, + "2022": 1007 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6539, + "votosValidos": 5145, + "votosBranco": 448, + "votosNulo": 285 + }, + "2018": { + "comparecimento": 6875, + "votosValidos": 5236, + "votosBranco": 294, + "votosNulo": 817 + }, + "2022": { + "comparecimento": 7887, + "votosValidos": 6852, + "votosBranco": 371, + "votosNulo": 348 + } + }, + "majoritarian2022": { + "president": { + "votes": 5054, + "comparecimento": 7887, + "votosValidos": 7381, + "votosBranco": 119, + "votosNulo": 387 + }, + "governor": { + "votes": 2914, + "comparecimento": 7887, + "votosValidos": 7220, + "votosBranco": 170, + "votosNulo": 497 + } } }, "mucuri": { @@ -3186,6 +14010,47 @@ "2014": 14555, "2018": 14324, "2022": 18390 + }, + "campoFederalVotesByYear": { + "2014": 2391, + "2018": 4744, + "2022": 2883 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 17956, + "votosValidos": 14555, + "votosBranco": 1473, + "votosNulo": 650 + }, + "2018": { + "comparecimento": 18443, + "votosValidos": 14324, + "votosBranco": 1195, + "votosNulo": 1728 + }, + "2022": { + "comparecimento": 21201, + "votosValidos": 18390, + "votosBranco": 1169, + "votosNulo": 652 + } + }, + "majoritarian2022": { + "president": { + "votes": 11160, + "comparecimento": 21205, + "votosValidos": 20369, + "votosBranco": 268, + "votosNulo": 568 + }, + "governor": { + "votes": 6687, + "comparecimento": 21201, + "votosValidos": 19178, + "votosBranco": 911, + "votosNulo": 1109 + } } }, "mulungu-do-morro": { @@ -3198,6 +14063,47 @@ "2014": 5807, "2018": 6542, "2022": 7834 + }, + "campoFederalVotesByYear": { + "2014": 2152, + "2018": 2375, + "2022": 402 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6618, + "votosValidos": 5807, + "votosBranco": 272, + "votosNulo": 109 + }, + "2018": { + "comparecimento": 7861, + "votosValidos": 6542, + "votosBranco": 234, + "votosNulo": 527 + }, + "2022": { + "comparecimento": 8570, + "votosValidos": 7834, + "votosBranco": 309, + "votosNulo": 173 + } + }, + "majoritarian2022": { + "president": { + "votes": 7141, + "comparecimento": 8570, + "votosValidos": 8243, + "votosBranco": 87, + "votosNulo": 240 + }, + "governor": { + "votes": 5293, + "comparecimento": 8570, + "votosValidos": 8004, + "votosBranco": 168, + "votosNulo": 398 + } } }, "mundo-novo": { @@ -3210,6 +14116,47 @@ "2014": 8495, "2018": 8737, "2022": 10137 + }, + "campoFederalVotesByYear": { + "2014": 2643, + "2018": 597, + "2022": 699 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10578, + "votosValidos": 8495, + "votosBranco": 524, + "votosNulo": 464 + }, + "2018": { + "comparecimento": 10806, + "votosValidos": 8737, + "votosBranco": 333, + "votosNulo": 779 + }, + "2022": { + "comparecimento": 11532, + "votosValidos": 10137, + "votosBranco": 396, + "votosNulo": 464 + } + }, + "majoritarian2022": { + "president": { + "votes": 8409, + "comparecimento": 11534, + "votosValidos": 10798, + "votosBranco": 144, + "votosNulo": 592 + }, + "governor": { + "votes": 5056, + "comparecimento": 11532, + "votosValidos": 10477, + "votosBranco": 213, + "votosNulo": 839 + } } }, "muniz-ferreira": { @@ -3222,6 +14169,47 @@ "2014": 0, "2018": 4744, "2022": 5749 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 743, + "2022": 747 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5893, + "votosValidos": 4744, + "votosBranco": 156, + "votosNulo": 540 + }, + "2022": { + "comparecimento": 6499, + "votosValidos": 5749, + "votosBranco": 236, + "votosNulo": 259 + } + }, + "majoritarian2022": { + "president": { + "votes": 4795, + "comparecimento": 6499, + "votosValidos": 6202, + "votosBranco": 57, + "votosNulo": 240 + }, + "governor": { + "votes": 3583, + "comparecimento": 6499, + "votosValidos": 6034, + "votosBranco": 109, + "votosNulo": 356 + } } }, "muquem-de-sao-francisco": { @@ -3234,6 +14222,47 @@ "2014": 0, "2018": 5444, "2022": 6978 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1733, + "2022": 3035 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 6636, + "votosValidos": 5444, + "votosBranco": 119, + "votosNulo": 213 + }, + "2022": { + "comparecimento": 7410, + "votosValidos": 6978, + "votosBranco": 110, + "votosNulo": 87 + } + }, + "majoritarian2022": { + "president": { + "votes": 5581, + "comparecimento": 7410, + "votosValidos": 7219, + "votosBranco": 42, + "votosNulo": 149 + }, + "governor": { + "votes": 4371, + "comparecimento": 7410, + "votosValidos": 7064, + "votosBranco": 80, + "votosNulo": 266 + } } }, "muritiba": { @@ -3246,6 +14275,47 @@ "2014": 11889, "2018": 13273, "2022": 14728 + }, + "campoFederalVotesByYear": { + "2014": 5647, + "2018": 1902, + "2022": 2842 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15628, + "votosValidos": 11889, + "votosBranco": 1527, + "votosNulo": 948 + }, + "2018": { + "comparecimento": 17228, + "votosValidos": 13273, + "votosBranco": 879, + "votosNulo": 1924 + }, + "2022": { + "comparecimento": 17960, + "votosValidos": 14728, + "votosBranco": 1355, + "votosNulo": 1109 + } + }, + "majoritarian2022": { + "president": { + "votes": 13585, + "comparecimento": 17961, + "votosValidos": 16959, + "votosBranco": 308, + "votosNulo": 694 + }, + "governor": { + "votes": 7518, + "comparecimento": 17961, + "votosValidos": 16373, + "votosBranco": 569, + "votosNulo": 1016 + } } }, "mutuipe": { @@ -3258,6 +14328,47 @@ "2014": 9813, "2018": 9968, "2022": 12167 + }, + "campoFederalVotesByYear": { + "2014": 4541, + "2018": 4635, + "2022": 4535 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12464, + "votosValidos": 9813, + "votosBranco": 721, + "votosNulo": 698 + }, + "2018": { + "comparecimento": 13111, + "votosValidos": 9968, + "votosBranco": 516, + "votosNulo": 1443 + }, + "2022": { + "comparecimento": 14041, + "votosValidos": 12167, + "votosBranco": 544, + "votosNulo": 741 + } + }, + "majoritarian2022": { + "president": { + "votes": 9398, + "comparecimento": 14041, + "votosValidos": 13120, + "votosBranco": 244, + "votosNulo": 677 + }, + "governor": { + "votes": 7038, + "comparecimento": 14041, + "votosValidos": 12899, + "votosBranco": 272, + "votosNulo": 869 + } } }, "nazare": { @@ -3270,6 +14381,47 @@ "2014": 11477, "2018": 13308, "2022": 15603 + }, + "campoFederalVotesByYear": { + "2014": 2304, + "2018": 2504, + "2022": 2449 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 16422, + "votosValidos": 11477, + "votosBranco": 1409, + "votosNulo": 2106 + }, + "2018": { + "comparecimento": 16855, + "votosValidos": 13308, + "votosBranco": 671, + "votosNulo": 1625 + }, + "2022": { + "comparecimento": 17840, + "votosValidos": 15603, + "votosBranco": 903, + "votosNulo": 687 + } + }, + "majoritarian2022": { + "president": { + "votes": 12977, + "comparecimento": 17840, + "votosValidos": 17107, + "votosBranco": 219, + "votosNulo": 514 + }, + "governor": { + "votes": 8169, + "comparecimento": 17840, + "votosValidos": 16696, + "votosBranco": 360, + "votosNulo": 784 + } } }, "nilo-pecanha": { @@ -3282,6 +14434,47 @@ "2014": 4976, "2018": 5395, "2022": 6546 + }, + "campoFederalVotesByYear": { + "2014": 1971, + "2018": 2241, + "2022": 790 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6329, + "votosValidos": 4976, + "votosBranco": 378, + "votosNulo": 323 + }, + "2018": { + "comparecimento": 6767, + "votosValidos": 5395, + "votosBranco": 278, + "votosNulo": 559 + }, + "2022": { + "comparecimento": 7577, + "votosValidos": 6546, + "votosBranco": 342, + "votosNulo": 385 + } + }, + "majoritarian2022": { + "president": { + "votes": 5160, + "comparecimento": 7577, + "votosValidos": 7054, + "votosBranco": 150, + "votosNulo": 373 + }, + "governor": { + "votes": 2894, + "comparecimento": 7577, + "votosValidos": 6891, + "votosBranco": 207, + "votosNulo": 479 + } } }, "nordestina": { @@ -3294,6 +14487,47 @@ "2014": 5441, "2018": 5734, "2022": 6926 + }, + "campoFederalVotesByYear": { + "2014": 914, + "2018": 2186, + "2022": 839 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6587, + "votosValidos": 5441, + "votosBranco": 311, + "votosNulo": 221 + }, + "2018": { + "comparecimento": 7003, + "votosValidos": 5734, + "votosBranco": 216, + "votosNulo": 531 + }, + "2022": { + "comparecimento": 7822, + "votosValidos": 6926, + "votosBranco": 278, + "votosNulo": 271 + } + }, + "majoritarian2022": { + "president": { + "votes": 5932, + "comparecimento": 7822, + "votosValidos": 7381, + "votosBranco": 94, + "votosNulo": 347 + }, + "governor": { + "votes": 4598, + "comparecimento": 7822, + "votosValidos": 7140, + "votosBranco": 179, + "votosNulo": 503 + } } }, "nova-canaa": { @@ -3306,6 +14540,47 @@ "2014": 7051, "2018": 6630, "2022": 8346 + }, + "campoFederalVotesByYear": { + "2014": 1384, + "2018": 1103, + "2022": 1379 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8684, + "votosValidos": 7051, + "votosBranco": 311, + "votosNulo": 330 + }, + "2018": { + "comparecimento": 8115, + "votosValidos": 6630, + "votosBranco": 205, + "votosNulo": 506 + }, + "2022": { + "comparecimento": 9311, + "votosValidos": 8346, + "votosBranco": 232, + "votosNulo": 252 + } + }, + "majoritarian2022": { + "president": { + "votes": 6842, + "comparecimento": 9311, + "votosValidos": 8819, + "votosBranco": 72, + "votosNulo": 420 + }, + "governor": { + "votes": 6413, + "comparecimento": 9311, + "votosValidos": 8484, + "votosBranco": 136, + "votosNulo": 690 + } } }, "nova-fatima": { @@ -3318,6 +14593,47 @@ "2014": 0, "2018": 4789, "2022": 5397 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1366, + "2022": 971 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5708, + "votosValidos": 4789, + "votosBranco": 168, + "votosNulo": 442 + }, + "2022": { + "comparecimento": 6162, + "votosValidos": 5397, + "votosBranco": 253, + "votosNulo": 262 + } + }, + "majoritarian2022": { + "president": { + "votes": 4316, + "comparecimento": 6162, + "votosValidos": 5812, + "votosBranco": 88, + "votosNulo": 262 + }, + "governor": { + "votes": 3481, + "comparecimento": 6162, + "votosValidos": 5642, + "votosBranco": 114, + "votosNulo": 406 + } } }, "nova-ibia": { @@ -3330,6 +14646,47 @@ "2014": 2984, "2018": 3157, "2022": 3678 + }, + "campoFederalVotesByYear": { + "2014": 1255, + "2018": 192, + "2022": 334 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3735, + "votosValidos": 2984, + "votosBranco": 186, + "votosNulo": 148 + }, + "2018": { + "comparecimento": 3739, + "votosValidos": 3157, + "votosBranco": 104, + "votosNulo": 214 + }, + "2022": { + "comparecimento": 4083, + "votosValidos": 3678, + "votosBranco": 143, + "votosNulo": 121 + } + }, + "majoritarian2022": { + "president": { + "votes": 2504, + "comparecimento": 4083, + "votosValidos": 3888, + "votosBranco": 59, + "votosNulo": 136 + }, + "governor": { + "votes": 1914, + "comparecimento": 4083, + "votosValidos": 3783, + "votosBranco": 85, + "votosNulo": 215 + } } }, "nova-itarana": { @@ -3342,6 +14699,47 @@ "2014": 3188, "2018": 3602, "2022": 4372 + }, + "campoFederalVotesByYear": { + "2014": 179, + "2018": 124, + "2022": 278 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3973, + "votosValidos": 3188, + "votosBranco": 231, + "votosNulo": 103 + }, + "2018": { + "comparecimento": 4201, + "votosValidos": 3602, + "votosBranco": 135, + "votosNulo": 203 + }, + "2022": { + "comparecimento": 5045, + "votosValidos": 4372, + "votosBranco": 255, + "votosNulo": 218 + } + }, + "majoritarian2022": { + "president": { + "votes": 3576, + "comparecimento": 5045, + "votosValidos": 4751, + "votosBranco": 64, + "votosNulo": 230 + }, + "governor": { + "votes": 3021, + "comparecimento": 5045, + "votosValidos": 4556, + "votosBranco": 128, + "votosNulo": 361 + } } }, "nova-redencao": { @@ -3354,6 +14752,47 @@ "2014": 3502, "2018": 3746, "2022": 4366 + }, + "campoFederalVotesByYear": { + "2014": 2482, + "2018": 1644, + "2022": 1809 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4287, + "votosValidos": 3502, + "votosBranco": 145, + "votosNulo": 179 + }, + "2018": { + "comparecimento": 4576, + "votosValidos": 3746, + "votosBranco": 103, + "votosNulo": 287 + }, + "2022": { + "comparecimento": 4899, + "votosValidos": 4366, + "votosBranco": 142, + "votosNulo": 129 + } + }, + "majoritarian2022": { + "president": { + "votes": 4042, + "comparecimento": 4899, + "votosValidos": 4705, + "votosBranco": 45, + "votosNulo": 149 + }, + "governor": { + "votes": 3519, + "comparecimento": 4899, + "votosValidos": 4561, + "votosBranco": 72, + "votosNulo": 266 + } } }, "nova-soure": { @@ -3366,6 +14805,47 @@ "2014": 11290, "2018": 9583, "2022": 14310 + }, + "campoFederalVotesByYear": { + "2014": 2005, + "2018": 3346, + "2022": 1955 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13769, + "votosValidos": 11290, + "votosBranco": 852, + "votosNulo": 555 + }, + "2018": { + "comparecimento": 14516, + "votosValidos": 9583, + "votosBranco": 472, + "votosNulo": 882 + }, + "2022": { + "comparecimento": 15947, + "votosValidos": 14310, + "votosBranco": 464, + "votosNulo": 454 + } + }, + "majoritarian2022": { + "president": { + "votes": 12760, + "comparecimento": 15947, + "votosValidos": 15129, + "votosBranco": 138, + "votosNulo": 680 + }, + "governor": { + "votes": 10328, + "comparecimento": 15947, + "votosValidos": 14715, + "votosBranco": 259, + "votosNulo": 973 + } } }, "nova-vicosa": { @@ -3378,6 +14858,47 @@ "2014": 16003, "2018": 16052, "2022": 20667 + }, + "campoFederalVotesByYear": { + "2014": 1555, + "2018": 2737, + "2022": 2685 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 20037, + "votosValidos": 16003, + "votosBranco": 1509, + "votosNulo": 1070 + }, + "2018": { + "comparecimento": 20327, + "votosValidos": 16052, + "votosBranco": 1219, + "votosNulo": 1714 + }, + "2022": { + "comparecimento": 23273, + "votosValidos": 20667, + "votosBranco": 1057, + "votosNulo": 715 + } + }, + "majoritarian2022": { + "president": { + "votes": 11496, + "comparecimento": 23274, + "votosValidos": 22254, + "votosBranco": 297, + "votosNulo": 723 + }, + "governor": { + "votes": 7100, + "comparecimento": 23273, + "votosValidos": 21129, + "votosBranco": 922, + "votosNulo": 1221 + } } }, "novo-horizonte": { @@ -3390,6 +14911,47 @@ "2014": 0, "2018": 5861, "2022": 6814 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 651, + "2022": 79 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 7107, + "votosValidos": 5861, + "votosBranco": 274, + "votosNulo": 552 + }, + "2022": { + "comparecimento": 7499, + "votosValidos": 6814, + "votosBranco": 249, + "votosNulo": 217 + } + }, + "majoritarian2022": { + "president": { + "votes": 5514, + "comparecimento": 7499, + "votosValidos": 7226, + "votosBranco": 87, + "votosNulo": 186 + }, + "governor": { + "votes": 2445, + "comparecimento": 7499, + "votosValidos": 7034, + "votosBranco": 135, + "votosNulo": 330 + } } }, "novo-triunfo": { @@ -3402,6 +14964,47 @@ "2014": 4507, "2018": 4750, "2022": 5840 + }, + "campoFederalVotesByYear": { + "2014": 1037, + "2018": 1953, + "2022": 107 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5152, + "votosValidos": 4507, + "votosBranco": 124, + "votosNulo": 112 + }, + "2018": { + "comparecimento": 5370, + "votosValidos": 4750, + "votosBranco": 106, + "votosNulo": 179 + }, + "2022": { + "comparecimento": 6230, + "votosValidos": 5840, + "votosBranco": 75, + "votosNulo": 92 + } + }, + "majoritarian2022": { + "president": { + "votes": 4727, + "comparecimento": 6230, + "votosValidos": 5954, + "votosBranco": 37, + "votosNulo": 239 + }, + "governor": { + "votes": 3264, + "comparecimento": 6230, + "votosValidos": 5865, + "votosBranco": 49, + "votosNulo": 316 + } } }, "olindina": { @@ -3414,6 +15017,47 @@ "2014": 10715, "2018": 11248, "2022": 13547 + }, + "campoFederalVotesByYear": { + "2014": 3138, + "2018": 2159, + "2022": 428 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13358, + "votosValidos": 10715, + "votosBranco": 1078, + "votosNulo": 509 + }, + "2018": { + "comparecimento": 13685, + "votosValidos": 11248, + "votosBranco": 629, + "votosNulo": 802 + }, + "2022": { + "comparecimento": 14930, + "votosValidos": 13547, + "votosBranco": 494, + "votosNulo": 385 + } + }, + "majoritarian2022": { + "president": { + "votes": 11800, + "comparecimento": 14931, + "votosValidos": 14249, + "votosBranco": 172, + "votosNulo": 510 + }, + "governor": { + "votes": 9401, + "comparecimento": 14930, + "votosValidos": 13740, + "votosBranco": 326, + "votosNulo": 864 + } } }, "oliveira-dos-brejinhos": { @@ -3426,6 +15070,47 @@ "2014": 9847, "2018": 8672, "2022": 11578 + }, + "campoFederalVotesByYear": { + "2014": 3034, + "2018": 1570, + "2022": 2160 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11802, + "votosValidos": 9847, + "votosBranco": 718, + "votosNulo": 340 + }, + "2018": { + "comparecimento": 12166, + "votosValidos": 8672, + "votosBranco": 430, + "votosNulo": 763 + }, + "2022": { + "comparecimento": 13013, + "votosValidos": 11578, + "votosBranco": 516, + "votosNulo": 391 + } + }, + "majoritarian2022": { + "president": { + "votes": 10094, + "comparecimento": 13013, + "votosValidos": 12455, + "votosBranco": 133, + "votosNulo": 425 + }, + "governor": { + "votes": 8405, + "comparecimento": 13013, + "votosValidos": 12004, + "votosBranco": 310, + "votosNulo": 699 + } } }, "ouricangas": { @@ -3438,6 +15123,47 @@ "2014": 4142, "2018": 4011, "2022": 4691 + }, + "campoFederalVotesByYear": { + "2014": 257, + "2018": 2560, + "2022": 669 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5072, + "votosValidos": 4142, + "votosBranco": 317, + "votosNulo": 209 + }, + "2018": { + "comparecimento": 4971, + "votosValidos": 4011, + "votosBranco": 173, + "votosNulo": 446 + }, + "2022": { + "comparecimento": 5462, + "votosValidos": 4691, + "votosBranco": 214, + "votosNulo": 262 + } + }, + "majoritarian2022": { + "president": { + "votes": 4275, + "comparecimento": 5462, + "votosValidos": 5120, + "votosBranco": 81, + "votosNulo": 261 + }, + "governor": { + "votes": 3218, + "comparecimento": 5462, + "votosValidos": 5009, + "votosBranco": 107, + "votosNulo": 346 + } } }, "ourolandia": { @@ -3450,6 +15176,47 @@ "2014": 7471, "2018": 8156, "2022": 9955 + }, + "campoFederalVotesByYear": { + "2014": 3838, + "2018": 2497, + "2022": 3470 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9024, + "votosValidos": 7471, + "votosBranco": 345, + "votosNulo": 340 + }, + "2018": { + "comparecimento": 9961, + "votosValidos": 8156, + "votosBranco": 225, + "votosNulo": 925 + }, + "2022": { + "comparecimento": 10916, + "votosValidos": 9955, + "votosBranco": 261, + "votosNulo": 259 + } + }, + "majoritarian2022": { + "president": { + "votes": 6429, + "comparecimento": 10917, + "votosValidos": 10465, + "votosBranco": 106, + "votosNulo": 346 + }, + "governor": { + "votes": 4565, + "comparecimento": 10916, + "votosValidos": 10202, + "votosBranco": 195, + "votosNulo": 519 + } } }, "palmas-de-monte-alto": { @@ -3462,6 +15229,47 @@ "2014": 10601, "2018": 11018, "2022": 12665 + }, + "campoFederalVotesByYear": { + "2014": 6979, + "2018": 4613, + "2022": 2555 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12679, + "votosValidos": 10601, + "votosBranco": 432, + "votosNulo": 477 + }, + "2018": { + "comparecimento": 13008, + "votosValidos": 11018, + "votosBranco": 314, + "votosNulo": 638 + }, + "2022": { + "comparecimento": 13932, + "votosValidos": 12665, + "votosBranco": 373, + "votosNulo": 312 + } + }, + "majoritarian2022": { + "president": { + "votes": 11048, + "comparecimento": 13932, + "votosValidos": 13153, + "votosBranco": 145, + "votosNulo": 634 + }, + "governor": { + "votes": 10036, + "comparecimento": 13932, + "votosValidos": 12700, + "votosBranco": 275, + "votosNulo": 957 + } } }, "palmeiras": { @@ -3474,6 +15282,47 @@ "2014": 3813, "2018": 3350, "2022": 5603 + }, + "campoFederalVotesByYear": { + "2014": 1802, + "2018": 1194, + "2022": 1012 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4806, + "votosValidos": 3813, + "votosBranco": 221, + "votosNulo": 242 + }, + "2018": { + "comparecimento": 5200, + "votosValidos": 3350, + "votosBranco": 143, + "votosNulo": 454 + }, + "2022": { + "comparecimento": 6261, + "votosValidos": 5603, + "votosBranco": 168, + "votosNulo": 233 + } + }, + "majoritarian2022": { + "president": { + "votes": 5087, + "comparecimento": 6261, + "votosValidos": 5980, + "votosBranco": 49, + "votosNulo": 232 + }, + "governor": { + "votes": 4099, + "comparecimento": 6261, + "votosValidos": 5831, + "votosBranco": 92, + "votosNulo": 338 + } } }, "paramirim": { @@ -3486,6 +15335,47 @@ "2014": 9226, "2018": 9621, "2022": 11597 + }, + "campoFederalVotesByYear": { + "2014": 1585, + "2018": 911, + "2022": 1574 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11234, + "votosValidos": 9226, + "votosBranco": 844, + "votosNulo": 355 + }, + "2018": { + "comparecimento": 11680, + "votosValidos": 9621, + "votosBranco": 478, + "votosNulo": 841 + }, + "2022": { + "comparecimento": 13285, + "votosValidos": 11597, + "votosBranco": 645, + "votosNulo": 448 + } + }, + "majoritarian2022": { + "president": { + "votes": 9886, + "comparecimento": 13286, + "votosValidos": 12614, + "votosBranco": 202, + "votosNulo": 470 + }, + "governor": { + "votes": 5484, + "comparecimento": 13285, + "votosValidos": 12197, + "votosBranco": 385, + "votosNulo": 701 + } } }, "paratinga": { @@ -3498,6 +15388,47 @@ "2014": 12459, "2018": 13149, "2022": 16923 + }, + "campoFederalVotesByYear": { + "2014": 6542, + "2018": 3048, + "2022": 2007 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15701, + "votosValidos": 12459, + "votosBranco": 765, + "votosNulo": 1216 + }, + "2018": { + "comparecimento": 16853, + "votosValidos": 13149, + "votosBranco": 503, + "votosNulo": 656 + }, + "2022": { + "comparecimento": 18594, + "votosValidos": 16923, + "votosBranco": 528, + "votosNulo": 407 + } + }, + "majoritarian2022": { + "president": { + "votes": 14863, + "comparecimento": 18594, + "votosValidos": 17898, + "votosBranco": 131, + "votosNulo": 565 + }, + "governor": { + "votes": 12474, + "comparecimento": 18594, + "votosValidos": 17334, + "votosBranco": 314, + "votosNulo": 945 + } } }, "paripiranga": { @@ -3510,6 +15441,47 @@ "2014": 12838, "2018": 13200, "2022": 15702 + }, + "campoFederalVotesByYear": { + "2014": 4476, + "2018": 2656, + "2022": 2337 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 16653, + "votosValidos": 12838, + "votosBranco": 1551, + "votosNulo": 778 + }, + "2018": { + "comparecimento": 17320, + "votosValidos": 13200, + "votosBranco": 1133, + "votosNulo": 1626 + }, + "2022": { + "comparecimento": 18244, + "votosValidos": 15702, + "votosBranco": 1088, + "votosNulo": 656 + } + }, + "majoritarian2022": { + "president": { + "votes": 13791, + "comparecimento": 18253, + "votosValidos": 17471, + "votosBranco": 247, + "votosNulo": 535 + }, + "governor": { + "votes": 10601, + "comparecimento": 18244, + "votosValidos": 16581, + "votosBranco": 633, + "votosNulo": 1030 + } } }, "pau-brasil": { @@ -3522,6 +15494,47 @@ "2014": 4407, "2018": 4279, "2022": 5346 + }, + "campoFederalVotesByYear": { + "2014": 3768, + "2018": 1804, + "2022": 2232 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5301, + "votosValidos": 4407, + "votosBranco": 233, + "votosNulo": 150 + }, + "2018": { + "comparecimento": 5265, + "votosValidos": 4279, + "votosBranco": 157, + "votosNulo": 247 + }, + "2022": { + "comparecimento": 5844, + "votosValidos": 5346, + "votosBranco": 123, + "votosNulo": 112 + } + }, + "majoritarian2022": { + "president": { + "votes": 3219, + "comparecimento": 5844, + "votosValidos": 5623, + "votosBranco": 49, + "votosNulo": 172 + }, + "governor": { + "votes": 2662, + "comparecimento": 5844, + "votosValidos": 5522, + "votosBranco": 69, + "votosNulo": 253 + } } }, "paulo-afonso": { @@ -3534,6 +15547,47 @@ "2014": 45403, "2018": 42721, "2022": 55759 + }, + "campoFederalVotesByYear": { + "2014": 14106, + "2018": 9114, + "2022": 15062 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 58448, + "votosValidos": 45403, + "votosBranco": 5963, + "votosNulo": 2871 + }, + "2018": { + "comparecimento": 60525, + "votosValidos": 42721, + "votosBranco": 3811, + "votosNulo": 6923 + }, + "2022": { + "comparecimento": 64926, + "votosValidos": 55759, + "votosBranco": 4043, + "votosNulo": 2652 + } + }, + "majoritarian2022": { + "president": { + "votes": 48382, + "comparecimento": 64933, + "votosValidos": 62575, + "votosBranco": 656, + "votosNulo": 1702 + }, + "governor": { + "votes": 34539, + "comparecimento": 64926, + "votosValidos": 58419, + "votosBranco": 2838, + "votosNulo": 3666 + } } }, "pe-de-serra": { @@ -3546,6 +15600,47 @@ "2014": 6847, "2018": 7018, "2022": 8405 + }, + "campoFederalVotesByYear": { + "2014": 2889, + "2018": 3547, + "2022": 4149 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8240, + "votosValidos": 6847, + "votosBranco": 365, + "votosNulo": 267 + }, + "2018": { + "comparecimento": 8746, + "votosValidos": 7018, + "votosBranco": 314, + "votosNulo": 711 + }, + "2022": { + "comparecimento": 9535, + "votosValidos": 8405, + "votosBranco": 360, + "votosNulo": 329 + } + }, + "majoritarian2022": { + "president": { + "votes": 5988, + "comparecimento": 9535, + "votosValidos": 9067, + "votosBranco": 140, + "votosNulo": 328 + }, + "governor": { + "votes": 4546, + "comparecimento": 9535, + "votosValidos": 8851, + "votosBranco": 171, + "votosNulo": 512 + } } }, "pedrao": { @@ -3558,6 +15653,47 @@ "2014": 0, "2018": 3646, "2022": 4437 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 837, + "2022": 519 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 4517, + "votosValidos": 3646, + "votosBranco": 149, + "votosNulo": 319 + }, + "2022": { + "comparecimento": 5173, + "votosValidos": 4437, + "votosBranco": 274, + "votosNulo": 232 + } + }, + "majoritarian2022": { + "president": { + "votes": 4272, + "comparecimento": 5173, + "votosValidos": 4962, + "votosBranco": 52, + "votosNulo": 159 + }, + "governor": { + "votes": 3194, + "comparecimento": 5173, + "votosValidos": 4796, + "votosBranco": 119, + "votosNulo": 258 + } } }, "pedro-alexandre": { @@ -3570,6 +15706,47 @@ "2014": 5377, "2018": 5853, "2022": 6988 + }, + "campoFederalVotesByYear": { + "2014": 1443, + "2018": 1862, + "2022": 472 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6590, + "votosValidos": 5377, + "votosBranco": 353, + "votosNulo": 202 + }, + "2018": { + "comparecimento": 7015, + "votosValidos": 5853, + "votosBranco": 248, + "votosNulo": 316 + }, + "2022": { + "comparecimento": 7779, + "votosValidos": 6988, + "votosBranco": 283, + "votosNulo": 198 + } + }, + "majoritarian2022": { + "president": { + "votes": 6044, + "comparecimento": 7779, + "votosValidos": 7377, + "votosBranco": 74, + "votosNulo": 328 + }, + "governor": { + "votes": 3355, + "comparecimento": 7779, + "votosValidos": 7039, + "votosBranco": 209, + "votosNulo": 531 + } } }, "piata": { @@ -3582,6 +15759,47 @@ "2014": 8928, "2018": 9111, "2022": 11201 + }, + "campoFederalVotesByYear": { + "2014": 5194, + "2018": 421, + "2022": 751 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10733, + "votosValidos": 8928, + "votosBranco": 495, + "votosNulo": 361 + }, + "2018": { + "comparecimento": 11723, + "votosValidos": 9111, + "votosBranco": 445, + "votosNulo": 1089 + }, + "2022": { + "comparecimento": 12916, + "votosValidos": 11201, + "votosBranco": 553, + "votosNulo": 610 + } + }, + "majoritarian2022": { + "president": { + "votes": 8539, + "comparecimento": 12916, + "votosValidos": 12026, + "votosBranco": 179, + "votosNulo": 711 + }, + "governor": { + "votes": 4162, + "comparecimento": 12916, + "votosValidos": 11750, + "votosBranco": 241, + "votosNulo": 923 + } } }, "pilao-arcado": { @@ -3594,6 +15812,47 @@ "2014": 15045, "2018": 14639, "2022": 19947 + }, + "campoFederalVotesByYear": { + "2014": 6042, + "2018": 4976, + "2022": 4245 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 17668, + "votosValidos": 15045, + "votosBranco": 340, + "votosNulo": 553 + }, + "2018": { + "comparecimento": 19199, + "votosValidos": 14639, + "votosBranco": 233, + "votosNulo": 2849 + }, + "2022": { + "comparecimento": 21461, + "votosValidos": 19947, + "votosBranco": 268, + "votosNulo": 379 + } + }, + "majoritarian2022": { + "president": { + "votes": 17063, + "comparecimento": 21461, + "votosValidos": 20647, + "votosBranco": 149, + "votosNulo": 665 + }, + "governor": { + "votes": 15073, + "comparecimento": 21461, + "votosValidos": 20226, + "votosBranco": 216, + "votosNulo": 1014 + } } }, "pindai": { @@ -3606,6 +15865,47 @@ "2014": 7161, "2018": 7863, "2022": 9451 + }, + "campoFederalVotesByYear": { + "2014": 985, + "2018": 1021, + "2022": 943 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9068, + "votosValidos": 7161, + "votosBranco": 548, + "votosNulo": 397 + }, + "2018": { + "comparecimento": 9705, + "votosValidos": 7863, + "votosBranco": 355, + "votosNulo": 653 + }, + "2022": { + "comparecimento": 10435, + "votosValidos": 9451, + "votosBranco": 368, + "votosNulo": 297 + } + }, + "majoritarian2022": { + "president": { + "votes": 7764, + "comparecimento": 10435, + "votosValidos": 9909, + "votosBranco": 132, + "votosNulo": 394 + }, + "governor": { + "votes": 6773, + "comparecimento": 10435, + "votosValidos": 9478, + "votosBranco": 273, + "votosNulo": 684 + } } }, "pindobacu": { @@ -3618,6 +15918,47 @@ "2014": 0, "2018": 7081, "2022": 11491 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1828, + "2022": 860 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 11065, + "votosValidos": 7081, + "votosBranco": 411, + "votosNulo": 2914 + }, + "2022": { + "comparecimento": 12493, + "votosValidos": 11491, + "votosBranco": 428, + "votosNulo": 239 + } + }, + "majoritarian2022": { + "president": { + "votes": 8299, + "comparecimento": 12493, + "votosValidos": 12035, + "votosBranco": 137, + "votosNulo": 321 + }, + "governor": { + "votes": 7192, + "comparecimento": 12493, + "votosValidos": 11692, + "votosBranco": 279, + "votosNulo": 522 + } } }, "pintadas": { @@ -3630,6 +15971,47 @@ "2014": 4913, "2018": 5357, "2022": 5784 + }, + "campoFederalVotesByYear": { + "2014": 2515, + "2018": 2932, + "2022": 3325 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5852, + "votosValidos": 4913, + "votosBranco": 203, + "votosNulo": 230 + }, + "2018": { + "comparecimento": 6323, + "votosValidos": 5357, + "votosBranco": 170, + "votosNulo": 332 + }, + "2022": { + "comparecimento": 6507, + "votosValidos": 5784, + "votosBranco": 198, + "votosNulo": 203 + } + }, + "majoritarian2022": { + "president": { + "votes": 3893, + "comparecimento": 6507, + "votosValidos": 6164, + "votosBranco": 97, + "votosNulo": 246 + }, + "governor": { + "votes": 3381, + "comparecimento": 6507, + "votosValidos": 6082, + "votosBranco": 108, + "votosNulo": 317 + } } }, "pirai-do-norte": { @@ -3642,6 +16024,47 @@ "2014": 0, "2018": 4128, "2022": 4897 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 586, + "2022": 922 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5059, + "votosValidos": 4128, + "votosBranco": 165, + "votosNulo": 373 + }, + "2022": { + "comparecimento": 5485, + "votosValidos": 4897, + "votosBranco": 148, + "votosNulo": 166 + } + }, + "majoritarian2022": { + "president": { + "votes": 3760, + "comparecimento": 5485, + "votosValidos": 5197, + "votosBranco": 70, + "votosNulo": 218 + }, + "governor": { + "votes": 2594, + "comparecimento": 5485, + "votosValidos": 5054, + "votosBranco": 97, + "votosNulo": 332 + } } }, "piripa": { @@ -3654,6 +16077,47 @@ "2014": 0, "2018": 4884, "2022": 5903 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 836, + "2022": 1661 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5727, + "votosValidos": 4884, + "votosBranco": 125, + "votosNulo": 276 + }, + "2022": { + "comparecimento": 6464, + "votosValidos": 5903, + "votosBranco": 133, + "votosNulo": 129 + } + }, + "majoritarian2022": { + "president": { + "votes": 4667, + "comparecimento": 6465, + "votosValidos": 6177, + "votosBranco": 54, + "votosNulo": 234 + }, + "governor": { + "votes": 3850, + "comparecimento": 6464, + "votosValidos": 6012, + "votosBranco": 84, + "votosNulo": 368 + } } }, "piritiba": { @@ -3666,6 +16130,47 @@ "2014": 7946, "2018": 8189, "2022": 9970 + }, + "campoFederalVotesByYear": { + "2014": 2359, + "2018": 1967, + "2022": 1154 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9795, + "votosValidos": 7946, + "votosBranco": 357, + "votosNulo": 416 + }, + "2018": { + "comparecimento": 10152, + "votosValidos": 8189, + "votosBranco": 247, + "votosNulo": 931 + }, + "2022": { + "comparecimento": 11181, + "votosValidos": 9970, + "votosBranco": 313, + "votosNulo": 455 + } + }, + "majoritarian2022": { + "president": { + "votes": 7816, + "comparecimento": 11181, + "votosValidos": 10602, + "votosBranco": 98, + "votosNulo": 481 + }, + "governor": { + "votes": 5582, + "comparecimento": 11181, + "votosValidos": 10293, + "votosBranco": 174, + "votosNulo": 713 + } } }, "planaltino": { @@ -3678,6 +16183,47 @@ "2014": 3897, "2018": 4076, "2022": 4818 + }, + "campoFederalVotesByYear": { + "2014": 2716, + "2018": 590, + "2022": 665 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4705, + "votosValidos": 3897, + "votosBranco": 258, + "votosNulo": 149 + }, + "2018": { + "comparecimento": 4910, + "votosValidos": 4076, + "votosBranco": 196, + "votosNulo": 288 + }, + "2022": { + "comparecimento": 5418, + "votosValidos": 4818, + "votosBranco": 206, + "votosNulo": 163 + } + }, + "majoritarian2022": { + "president": { + "votes": 4038, + "comparecimento": 5418, + "votosValidos": 5061, + "votosBranco": 108, + "votosNulo": 249 + }, + "governor": { + "votes": 3513, + "comparecimento": 5418, + "votosValidos": 4925, + "votosBranco": 143, + "votosNulo": 350 + } } }, "planalto": { @@ -3690,6 +16236,47 @@ "2014": 11296, "2018": 12026, "2022": 13837 + }, + "campoFederalVotesByYear": { + "2014": 5244, + "2018": 5762, + "2022": 5746 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13622, + "votosValidos": 11296, + "votosBranco": 715, + "votosNulo": 399 + }, + "2018": { + "comparecimento": 14602, + "votosValidos": 12026, + "votosBranco": 522, + "votosNulo": 1206 + }, + "2022": { + "comparecimento": 15616, + "votosValidos": 13837, + "votosBranco": 631, + "votosNulo": 587 + } + }, + "majoritarian2022": { + "president": { + "votes": 10085, + "comparecimento": 15616, + "votosValidos": 14739, + "votosBranco": 227, + "votosNulo": 650 + }, + "governor": { + "votes": 7600, + "comparecimento": 15616, + "votosValidos": 14363, + "votosBranco": 352, + "votosNulo": 901 + } } }, "pocoes": { @@ -3702,6 +16289,47 @@ "2014": 18507, "2018": 19762, "2022": 24539 + }, + "campoFederalVotesByYear": { + "2014": 6231, + "2018": 10768, + "2022": 11716 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 23048, + "votosValidos": 18507, + "votosBranco": 1444, + "votosNulo": 1072 + }, + "2018": { + "comparecimento": 24763, + "votosValidos": 19762, + "votosBranco": 1095, + "votosNulo": 2029 + }, + "2022": { + "comparecimento": 28442, + "votosValidos": 24539, + "votosBranco": 1441, + "votosNulo": 1133 + } + }, + "majoritarian2022": { + "president": { + "votes": 19938, + "comparecimento": 28443, + "votosValidos": 27156, + "votosBranco": 309, + "votosNulo": 978 + }, + "governor": { + "votes": 15180, + "comparecimento": 28442, + "votosValidos": 26117, + "votosBranco": 698, + "votosNulo": 1621 + } } }, "pojuca": { @@ -3714,6 +16342,47 @@ "2014": 14424, "2018": 14474, "2022": 17251 + }, + "campoFederalVotesByYear": { + "2014": 2919, + "2018": 3922, + "2022": 4697 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 20554, + "votosValidos": 14424, + "votosBranco": 3066, + "votosNulo": 1848 + }, + "2018": { + "comparecimento": 21552, + "votosValidos": 14474, + "votosBranco": 1636, + "votosNulo": 3764 + }, + "2022": { + "comparecimento": 22464, + "votosValidos": 17251, + "votosBranco": 2205, + "votosNulo": 1937 + } + }, + "majoritarian2022": { + "president": { + "votes": 15608, + "comparecimento": 22464, + "votosValidos": 20750, + "votosBranco": 659, + "votosNulo": 1055 + }, + "governor": { + "votes": 8859, + "comparecimento": 22464, + "votosValidos": 19633, + "votosBranco": 1162, + "votosNulo": 1666 + } } }, "ponto-novo": { @@ -3726,6 +16395,47 @@ "2014": 0, "2018": 6994, "2022": 9496 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 648, + "2022": 1867 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8888, + "votosValidos": 6994, + "votosBranco": 341, + "votosNulo": 919 + }, + "2022": { + "comparecimento": 10486, + "votosValidos": 9496, + "votosBranco": 326, + "votosNulo": 224 + } + }, + "majoritarian2022": { + "president": { + "votes": 7707, + "comparecimento": 10488, + "votosValidos": 10023, + "votosBranco": 128, + "votosNulo": 337 + }, + "governor": { + "votes": 3590, + "comparecimento": 10486, + "votosValidos": 9876, + "votosBranco": 178, + "votosNulo": 428 + } } }, "porto-seguro": { @@ -3738,6 +16448,47 @@ "2014": 43476, "2018": 50531, "2022": 66164 + }, + "campoFederalVotesByYear": { + "2014": 8433, + "2018": 10028, + "2022": 12664 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 59737, + "votosValidos": 43476, + "votosBranco": 7120, + "votosNulo": 4165 + }, + "2018": { + "comparecimento": 72365, + "votosValidos": 50531, + "votosBranco": 4236, + "votosNulo": 11344 + }, + "2022": { + "comparecimento": 80198, + "votosValidos": 66164, + "votosBranco": 5478, + "votosNulo": 4454 + } + }, + "majoritarian2022": { + "president": { + "votes": 42783, + "comparecimento": 81659, + "votosValidos": 78002, + "votosBranco": 1112, + "votosNulo": 2545 + }, + "governor": { + "votes": 28684, + "comparecimento": 80198, + "votosValidos": 72024, + "votosBranco": 3429, + "votosNulo": 4737 + } } }, "potiragua": { @@ -3750,6 +16501,47 @@ "2014": 0, "2018": 4841, "2022": 5525 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 176, + "2022": 253 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5708, + "votosValidos": 4841, + "votosBranco": 174, + "votosNulo": 286 + }, + "2022": { + "comparecimento": 6047, + "votosValidos": 5525, + "votosBranco": 174, + "votosNulo": 134 + } + }, + "majoritarian2022": { + "president": { + "votes": 3628, + "comparecimento": 6047, + "votosValidos": 5769, + "votosBranco": 54, + "votosNulo": 224 + }, + "governor": { + "votes": 2726, + "comparecimento": 6047, + "votosValidos": 5541, + "votosBranco": 129, + "votosNulo": 377 + } } }, "prado": { @@ -3762,6 +16554,47 @@ "2014": 10996, "2018": 12080, "2022": 15847 + }, + "campoFederalVotesByYear": { + "2014": 1582, + "2018": 4287, + "2022": 7150 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13884, + "votosValidos": 10996, + "votosBranco": 855, + "votosNulo": 885 + }, + "2018": { + "comparecimento": 14580, + "votosValidos": 12080, + "votosBranco": 621, + "votosNulo": 961 + }, + "2022": { + "comparecimento": 17745, + "votosValidos": 15847, + "votosBranco": 691, + "votosNulo": 527 + } + }, + "majoritarian2022": { + "president": { + "votes": 9505, + "comparecimento": 17746, + "votosValidos": 17056, + "votosBranco": 174, + "votosNulo": 516 + }, + "governor": { + "votes": 8614, + "comparecimento": 17745, + "votosValidos": 16425, + "votosBranco": 465, + "votosNulo": 854 + } } }, "presidente-dutra": { @@ -3774,6 +16607,47 @@ "2014": 0, "2018": 7142, "2022": 8941 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1811, + "2022": 3001 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8898, + "votosValidos": 7142, + "votosBranco": 305, + "votosNulo": 500 + }, + "2022": { + "comparecimento": 9732, + "votosValidos": 8941, + "votosBranco": 307, + "votosNulo": 238 + } + }, + "majoritarian2022": { + "president": { + "votes": 8203, + "comparecimento": 9732, + "votosValidos": 9445, + "votosBranco": 64, + "votosNulo": 223 + }, + "governor": { + "votes": 7571, + "comparecimento": 9732, + "votosValidos": 9204, + "votosBranco": 173, + "votosNulo": 355 + } } }, "presidente-janio-quadros": { @@ -3786,6 +16660,47 @@ "2014": 5854, "2018": 6045, "2022": 7019 + }, + "campoFederalVotesByYear": { + "2014": 3393, + "2018": 4182, + "2022": 1417 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6732, + "votosValidos": 5854, + "votosBranco": 147, + "votosNulo": 178 + }, + "2018": { + "comparecimento": 7039, + "votosValidos": 6045, + "votosBranco": 136, + "votosNulo": 309 + }, + "2022": { + "comparecimento": 7804, + "votosValidos": 7019, + "votosBranco": 156, + "votosNulo": 216 + } + }, + "majoritarian2022": { + "president": { + "votes": 5966, + "comparecimento": 7804, + "votosValidos": 7392, + "votosBranco": 53, + "votosNulo": 359 + }, + "governor": { + "votes": 5456, + "comparecimento": 7804, + "votosValidos": 7081, + "votosBranco": 106, + "votosNulo": 617 + } } }, "presidente-tancredo-neves": { @@ -3798,6 +16713,47 @@ "2014": 0, "2018": 11500, "2022": 14779 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1781, + "2022": 2838 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 15134, + "votosValidos": 11500, + "votosBranco": 645, + "votosNulo": 1614 + }, + "2022": { + "comparecimento": 17021, + "votosValidos": 14779, + "votosBranco": 781, + "votosNulo": 690 + } + }, + "majoritarian2022": { + "president": { + "votes": 10984, + "comparecimento": 17021, + "votosValidos": 16041, + "votosBranco": 260, + "votosNulo": 720 + }, + "governor": { + "votes": 6707, + "comparecimento": 17021, + "votosValidos": 15483, + "votosBranco": 400, + "votosNulo": 1138 + } } }, "queimadas": { @@ -3810,6 +16766,47 @@ "2014": 10933, "2018": 11240, "2022": 13815 + }, + "campoFederalVotesByYear": { + "2014": 4920, + "2018": 5850, + "2022": 6283 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13822, + "votosValidos": 10933, + "votosBranco": 952, + "votosNulo": 584 + }, + "2018": { + "comparecimento": 14470, + "votosValidos": 11240, + "votosBranco": 648, + "votosNulo": 1409 + }, + "2022": { + "comparecimento": 15740, + "votosValidos": 13815, + "votosBranco": 639, + "votosNulo": 564 + } + }, + "majoritarian2022": { + "president": { + "votes": 10972, + "comparecimento": 15742, + "votosValidos": 15056, + "votosBranco": 183, + "votosNulo": 503 + }, + "governor": { + "votes": 8738, + "comparecimento": 15740, + "votosValidos": 14633, + "votosBranco": 363, + "votosNulo": 742 + } } }, "quijingue": { @@ -3822,6 +16819,47 @@ "2014": 13186, "2018": 12585, "2022": 15140 + }, + "campoFederalVotesByYear": { + "2014": 5618, + "2018": 2724, + "2022": 1324 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15410, + "votosValidos": 13186, + "votosBranco": 567, + "votosNulo": 353 + }, + "2018": { + "comparecimento": 15553, + "votosValidos": 12585, + "votosBranco": 452, + "votosNulo": 1403 + }, + "2022": { + "comparecimento": 16719, + "votosValidos": 15140, + "votosBranco": 498, + "votosNulo": 389 + } + }, + "majoritarian2022": { + "president": { + "votes": 12759, + "comparecimento": 16719, + "votosValidos": 15947, + "votosBranco": 183, + "votosNulo": 589 + }, + "governor": { + "votes": 10575, + "comparecimento": 16719, + "votosValidos": 15578, + "votosBranco": 284, + "votosNulo": 857 + } } }, "quixabeira": { @@ -3834,6 +16872,47 @@ "2014": 4534, "2018": 4914, "2022": 5965 + }, + "campoFederalVotesByYear": { + "2014": 2387, + "2018": 2351, + "2022": 1399 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5607, + "votosValidos": 4534, + "votosBranco": 360, + "votosNulo": 182 + }, + "2018": { + "comparecimento": 5967, + "votosValidos": 4914, + "votosBranco": 252, + "votosNulo": 392 + }, + "2022": { + "comparecimento": 6758, + "votosValidos": 5965, + "votosBranco": 289, + "votosNulo": 212 + } + }, + "majoritarian2022": { + "president": { + "votes": 3968, + "comparecimento": 6758, + "votosValidos": 6360, + "votosBranco": 138, + "votosNulo": 260 + }, + "governor": { + "votes": 3089, + "comparecimento": 6758, + "votosValidos": 6314, + "votosBranco": 153, + "votosNulo": 291 + } } }, "rafael-jambeiro": { @@ -3846,6 +16925,47 @@ "2014": 9985, "2018": 9794, "2022": 11937 + }, + "campoFederalVotesByYear": { + "2014": 4219, + "2018": 5196, + "2022": 5670 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12226, + "votosValidos": 9985, + "votosBranco": 534, + "votosNulo": 389 + }, + "2018": { + "comparecimento": 12385, + "votosValidos": 9794, + "votosBranco": 336, + "votosNulo": 1014 + }, + "2022": { + "comparecimento": 13789, + "votosValidos": 11937, + "votosBranco": 468, + "votosNulo": 578 + } + }, + "majoritarian2022": { + "president": { + "votes": 9704, + "comparecimento": 13789, + "votosValidos": 12962, + "votosBranco": 198, + "votosNulo": 629 + }, + "governor": { + "votes": 7539, + "comparecimento": 13789, + "votosValidos": 12737, + "votosBranco": 248, + "votosNulo": 803 + } } }, "remanso": { @@ -3858,6 +16978,47 @@ "2014": 17973, "2018": 12431, "2022": 22376 + }, + "campoFederalVotesByYear": { + "2014": 12312, + "2018": 4775, + "2022": 8745 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 21750, + "votosValidos": 17973, + "votosBranco": 891, + "votosNulo": 837 + }, + "2018": { + "comparecimento": 22214, + "votosValidos": 12431, + "votosBranco": 600, + "votosNulo": 7557 + }, + "2022": { + "comparecimento": 24785, + "votosValidos": 22376, + "votosBranco": 583, + "votosNulo": 717 + } + }, + "majoritarian2022": { + "president": { + "votes": 19164, + "comparecimento": 24787, + "votosValidos": 23721, + "votosBranco": 208, + "votosNulo": 858 + }, + "governor": { + "votes": 15877, + "comparecimento": 24785, + "votosValidos": 22915, + "votosBranco": 412, + "votosNulo": 1458 + } } }, "retirolandia": { @@ -3870,6 +17031,47 @@ "2014": 0, "2018": 7935, "2022": 9080 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1463, + "2022": 3642 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 9280, + "votosValidos": 7935, + "votosBranco": 264, + "votosNulo": 611 + }, + "2022": { + "comparecimento": 10203, + "votosValidos": 9080, + "votosBranco": 352, + "votosNulo": 398 + } + }, + "majoritarian2022": { + "president": { + "votes": 7564, + "comparecimento": 10203, + "votosValidos": 9713, + "votosBranco": 150, + "votosNulo": 340 + }, + "governor": { + "votes": 5955, + "comparecimento": 10203, + "votosValidos": 9414, + "votosBranco": 237, + "votosNulo": 551 + } } }, "riachao-das-neves": { @@ -3882,6 +17084,47 @@ "2014": 10296, "2018": 11452, "2022": 13363 + }, + "campoFederalVotesByYear": { + "2014": 1100, + "2018": 2248, + "2022": 374 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13234, + "votosValidos": 10296, + "votosBranco": 548, + "votosNulo": 1008 + }, + "2018": { + "comparecimento": 13625, + "votosValidos": 11452, + "votosBranco": 366, + "votosNulo": 598 + }, + "2022": { + "comparecimento": 14829, + "votosValidos": 13363, + "votosBranco": 402, + "votosNulo": 335 + } + }, + "majoritarian2022": { + "president": { + "votes": 10976, + "comparecimento": 14829, + "votosValidos": 14228, + "votosBranco": 126, + "votosNulo": 475 + }, + "governor": { + "votes": 8065, + "comparecimento": 14829, + "votosValidos": 13604, + "votosBranco": 344, + "votosNulo": 880 + } } }, "riachao-do-jacuipe": { @@ -3894,6 +17137,47 @@ "2014": 15779, "2018": 16741, "2022": 19750 + }, + "campoFederalVotesByYear": { + "2014": 3825, + "2018": 3225, + "2022": 5165 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 20310, + "votosValidos": 15779, + "votosBranco": 1554, + "votosNulo": 1307 + }, + "2018": { + "comparecimento": 21347, + "votosValidos": 16741, + "votosBranco": 1001, + "votosNulo": 2154 + }, + "2022": { + "comparecimento": 22887, + "votosValidos": 19750, + "votosBranco": 1161, + "votosNulo": 1020 + } + }, + "majoritarian2022": { + "president": { + "votes": 17622, + "comparecimento": 22887, + "votosValidos": 21957, + "votosBranco": 269, + "votosNulo": 661 + }, + "governor": { + "votes": 13150, + "comparecimento": 22887, + "votosValidos": 21205, + "votosBranco": 493, + "votosNulo": 1189 + } } }, "riacho-de-santana": { @@ -3906,6 +17190,47 @@ "2014": 13715, "2018": 13133, "2022": 15876 + }, + "campoFederalVotesByYear": { + "2014": 4135, + "2018": 5849, + "2022": 4660 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 17159, + "votosValidos": 13715, + "votosBranco": 1309, + "votosNulo": 675 + }, + "2018": { + "comparecimento": 17739, + "votosValidos": 13133, + "votosBranco": 1110, + "votosNulo": 1794 + }, + "2022": { + "comparecimento": 18557, + "votosValidos": 15876, + "votosBranco": 1197, + "votosNulo": 726 + } + }, + "majoritarian2022": { + "president": { + "votes": 14802, + "comparecimento": 18559, + "votosValidos": 17662, + "votosBranco": 261, + "votosNulo": 636 + }, + "governor": { + "votes": 12720, + "comparecimento": 18557, + "votosValidos": 16615, + "votosBranco": 751, + "votosNulo": 1191 + } } }, "ribeira-do-amparo": { @@ -3918,6 +17243,47 @@ "2014": 6690, "2018": 4632, "2022": 8468 + }, + "campoFederalVotesByYear": { + "2014": 5441, + "2018": 185, + "2022": 288 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8074, + "votosValidos": 6690, + "votosBranco": 350, + "votosNulo": 299 + }, + "2018": { + "comparecimento": 8543, + "votosValidos": 4632, + "votosBranco": 307, + "votosNulo": 422 + }, + "2022": { + "comparecimento": 9311, + "votosValidos": 8468, + "votosBranco": 217, + "votosNulo": 180 + } + }, + "majoritarian2022": { + "president": { + "votes": 7075, + "comparecimento": 9311, + "votosValidos": 8797, + "votosBranco": 105, + "votosNulo": 409 + }, + "governor": { + "votes": 4555, + "comparecimento": 9311, + "votosValidos": 8490, + "votosBranco": 181, + "votosNulo": 638 + } } }, "ribeira-do-pombal": { @@ -3930,6 +17296,47 @@ "2014": 23624, "2018": 25918, "2022": 31603 + }, + "campoFederalVotesByYear": { + "2014": 1700, + "2018": 1968, + "2022": 1091 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 27957, + "votosValidos": 23624, + "votosBranco": 1535, + "votosNulo": 744 + }, + "2018": { + "comparecimento": 31214, + "votosValidos": 25918, + "votosBranco": 1292, + "votosNulo": 1865 + }, + "2022": { + "comparecimento": 33819, + "votosValidos": 31603, + "votosBranco": 694, + "votosNulo": 599 + } + }, + "majoritarian2022": { + "president": { + "votes": 24152, + "comparecimento": 33822, + "votosValidos": 32413, + "votosBranco": 408, + "votosNulo": 1001 + }, + "governor": { + "votes": 19218, + "comparecimento": 33819, + "votosValidos": 31140, + "votosBranco": 911, + "votosNulo": 1765 + } } }, "ribeirao-do-largo": { @@ -3942,6 +17349,47 @@ "2014": 4703, "2018": 4946, "2022": 5649 + }, + "campoFederalVotesByYear": { + "2014": 2097, + "2018": 2777, + "2022": 3373 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5549, + "votosValidos": 4703, + "votosBranco": 166, + "votosNulo": 163 + }, + "2018": { + "comparecimento": 5808, + "votosValidos": 4946, + "votosBranco": 138, + "votosNulo": 298 + }, + "2022": { + "comparecimento": 6193, + "votosValidos": 5649, + "votosBranco": 147, + "votosNulo": 129 + } + }, + "majoritarian2022": { + "president": { + "votes": 4371, + "comparecimento": 6194, + "votosValidos": 5913, + "votosBranco": 76, + "votosNulo": 205 + }, + "governor": { + "votes": 3871, + "comparecimento": 6193, + "votosValidos": 5750, + "votosBranco": 112, + "votosNulo": 330 + } } }, "rio-de-contas": { @@ -3954,6 +17402,47 @@ "2014": 7127, "2018": 7091, "2022": 8579 + }, + "campoFederalVotesByYear": { + "2014": 401, + "2018": 540, + "2022": 718 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8536, + "votosValidos": 7127, + "votosBranco": 401, + "votosNulo": 272 + }, + "2018": { + "comparecimento": 8808, + "votosValidos": 7091, + "votosBranco": 394, + "votosNulo": 705 + }, + "2022": { + "comparecimento": 9631, + "votosValidos": 8579, + "votosBranco": 368, + "votosNulo": 307 + } + }, + "majoritarian2022": { + "president": { + "votes": 6786, + "comparecimento": 9631, + "votosValidos": 9129, + "votosBranco": 140, + "votosNulo": 362 + }, + "governor": { + "votes": 3921, + "comparecimento": 9631, + "votosValidos": 8836, + "votosBranco": 220, + "votosNulo": 573 + } } }, "rio-do-antonio": { @@ -3966,6 +17455,47 @@ "2014": 6213, "2018": 6268, "2022": 7591 + }, + "campoFederalVotesByYear": { + "2014": 2258, + "2018": 2890, + "2022": 4871 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7669, + "votosValidos": 6213, + "votosBranco": 298, + "votosNulo": 271 + }, + "2018": { + "comparecimento": 7783, + "votosValidos": 6268, + "votosBranco": 236, + "votosNulo": 541 + }, + "2022": { + "comparecimento": 8522, + "votosValidos": 7591, + "votosBranco": 262, + "votosNulo": 267 + } + }, + "majoritarian2022": { + "president": { + "votes": 6416, + "comparecimento": 8522, + "votosValidos": 8087, + "votosBranco": 86, + "votosNulo": 349 + }, + "governor": { + "votes": 5974, + "comparecimento": 8522, + "votosValidos": 7812, + "votosBranco": 150, + "votosNulo": 560 + } } }, "rio-do-pires": { @@ -3978,6 +17508,47 @@ "2014": 5573, "2018": 5471, "2022": 6093 + }, + "campoFederalVotesByYear": { + "2014": 603, + "2018": 1118, + "2022": 1047 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6514, + "votosValidos": 5573, + "votosBranco": 268, + "votosNulo": 147 + }, + "2018": { + "comparecimento": 6327, + "votosValidos": 5471, + "votosBranco": 142, + "votosNulo": 359 + }, + "2022": { + "comparecimento": 6639, + "votosValidos": 6093, + "votosBranco": 198, + "votosNulo": 121 + } + }, + "majoritarian2022": { + "president": { + "votes": 4915, + "comparecimento": 6639, + "votosValidos": 6293, + "votosBranco": 82, + "votosNulo": 264 + }, + "governor": { + "votes": 4239, + "comparecimento": 6639, + "votosValidos": 6167, + "votosBranco": 127, + "votosNulo": 345 + } } }, "rio-real": { @@ -3990,6 +17561,47 @@ "2014": 16772, "2018": 16763, "2022": 19304 + }, + "campoFederalVotesByYear": { + "2014": 6118, + "2018": 1009, + "2022": 1333 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 20634, + "votosValidos": 16772, + "votosBranco": 1728, + "votosNulo": 699 + }, + "2018": { + "comparecimento": 21196, + "votosValidos": 16763, + "votosBranco": 1236, + "votosNulo": 1782 + }, + "2022": { + "comparecimento": 22259, + "votosValidos": 19304, + "votosBranco": 1320, + "votosNulo": 779 + } + }, + "majoritarian2022": { + "president": { + "votes": 14650, + "comparecimento": 22267, + "votosValidos": 21048, + "votosBranco": 419, + "votosNulo": 800 + }, + "governor": { + "votes": 6186, + "comparecimento": 22259, + "votosValidos": 20046, + "votosBranco": 843, + "votosNulo": 1370 + } } }, "rodelas": { @@ -4002,6 +17614,47 @@ "2014": 4211, "2018": 4399, "2022": 5759 + }, + "campoFederalVotesByYear": { + "2014": 2593, + "2018": 1653, + "2022": 2453 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4787, + "votosValidos": 4211, + "votosBranco": 135, + "votosNulo": 151 + }, + "2018": { + "comparecimento": 5073, + "votosValidos": 4399, + "votosBranco": 65, + "votosNulo": 212 + }, + "2022": { + "comparecimento": 6056, + "votosValidos": 5759, + "votosBranco": 57, + "votosNulo": 115 + } + }, + "majoritarian2022": { + "president": { + "votes": 4823, + "comparecimento": 6057, + "votosValidos": 5903, + "votosBranco": 28, + "votosNulo": 126 + }, + "governor": { + "votes": 3365, + "comparecimento": 6056, + "votosValidos": 5775, + "votosBranco": 71, + "votosNulo": 210 + } } }, "ruy-barbosa": { @@ -4014,6 +17667,47 @@ "2014": 13046, "2018": 12897, "2022": 15476 + }, + "campoFederalVotesByYear": { + "2014": 5232, + "2018": 2800, + "2022": 1475 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 16429, + "votosValidos": 13046, + "votosBranco": 940, + "votosNulo": 803 + }, + "2018": { + "comparecimento": 16325, + "votosValidos": 12897, + "votosBranco": 577, + "votosNulo": 1768 + }, + "2022": { + "comparecimento": 18282, + "votosValidos": 15476, + "votosBranco": 930, + "votosNulo": 1093 + } + }, + "majoritarian2022": { + "president": { + "votes": 12842, + "comparecimento": 18282, + "votosValidos": 17111, + "votosBranco": 216, + "votosNulo": 955 + }, + "governor": { + "votes": 9023, + "comparecimento": 18282, + "votosValidos": 16502, + "votosBranco": 423, + "votosNulo": 1354 + } } }, "salinas-da-margarida": { @@ -4026,6 +17720,47 @@ "2014": 6578, "2018": 7665, "2022": 9650 + }, + "campoFederalVotesByYear": { + "2014": 2489, + "2018": 1460, + "2022": 1644 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9045, + "votosValidos": 6578, + "votosBranco": 815, + "votosNulo": 942 + }, + "2018": { + "comparecimento": 9477, + "votosValidos": 7665, + "votosBranco": 360, + "votosNulo": 839 + }, + "2022": { + "comparecimento": 11277, + "votosValidos": 9650, + "votosBranco": 633, + "votosNulo": 553 + } + }, + "majoritarian2022": { + "president": { + "votes": 8823, + "comparecimento": 11277, + "votosValidos": 10747, + "votosBranco": 173, + "votosNulo": 357 + }, + "governor": { + "votes": 6688, + "comparecimento": 11277, + "votosValidos": 10484, + "votosBranco": 283, + "votosNulo": 508 + } } }, "salvador-ze-1": { @@ -4038,6 +17773,47 @@ "2014": 40230, "2018": 46998, "2022": 53575 + }, + "campoFederalVotesByYear": { + "2014": 9618, + "2018": 12501, + "2022": 15151 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 52969, + "votosValidos": 40230, + "votosBranco": 3909, + "votosNulo": 4999 + }, + "2018": { + "comparecimento": 59759, + "votosValidos": 46998, + "votosBranco": 2706, + "votosNulo": 6578 + }, + "2022": { + "comparecimento": 62489, + "votosValidos": 53575, + "votosBranco": 3282, + "votosNulo": 2982 + } + }, + "majoritarian2022": { + "president": { + "votes": 35706, + "comparecimento": 62744, + "votosValidos": 60772, + "votosBranco": 618, + "votosNulo": 1354 + }, + "governor": { + "votes": 20893, + "comparecimento": 62489, + "votosValidos": 59647, + "votosBranco": 978, + "votosNulo": 1855 + } } }, "salvador-ze-2": { @@ -4050,6 +17826,47 @@ "2014": 45097, "2018": 52198, "2022": 61247 + }, + "campoFederalVotesByYear": { + "2014": 11764, + "2018": 14463, + "2022": 16749 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 65086, + "votosValidos": 45097, + "votosBranco": 6963, + "votosNulo": 8257 + }, + "2018": { + "comparecimento": 72644, + "votosValidos": 52198, + "votosBranco": 4312, + "votosNulo": 11440 + }, + "2022": { + "comparecimento": 74547, + "votosValidos": 61247, + "votosBranco": 4987, + "votosNulo": 5013 + } + }, + "majoritarian2022": { + "president": { + "votes": 49051, + "comparecimento": 75275, + "votosValidos": 71702, + "votosBranco": 1007, + "votosNulo": 2566 + }, + "governor": { + "votes": 27352, + "comparecimento": 74547, + "votosValidos": 69215, + "votosBranco": 1769, + "votosNulo": 3545 + } } }, "salvador-ze-3": { @@ -4062,6 +17879,47 @@ "2014": 36509, "2018": 59100, "2022": 69090 + }, + "campoFederalVotesByYear": { + "2014": 10457, + "2018": 14924, + "2022": 13778 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 57206, + "votosValidos": 36509, + "votosBranco": 7021, + "votosNulo": 9125 + }, + "2018": { + "comparecimento": 90798, + "votosValidos": 59100, + "votosBranco": 6269, + "votosNulo": 18163 + }, + "2022": { + "comparecimento": 91018, + "votosValidos": 69090, + "votosBranco": 7953, + "votosNulo": 9427 + } + }, + "majoritarian2022": { + "president": { + "votes": 60393, + "comparecimento": 91043, + "votosValidos": 84219, + "votosBranco": 1828, + "votosNulo": 4996 + }, + "governor": { + "votes": 31892, + "comparecimento": 91018, + "votosValidos": 81404, + "votosBranco": 2917, + "votosNulo": 6685 + } } }, "salvador-ze-4": { @@ -4074,6 +17932,47 @@ "2014": 58777, "2018": 66335, "2022": 76325 + }, + "campoFederalVotesByYear": { + "2014": 14398, + "2018": 14507, + "2022": 17645 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 87319, + "votosValidos": 58777, + "votosBranco": 11277, + "votosNulo": 10631 + }, + "2018": { + "comparecimento": 98570, + "votosValidos": 66335, + "votosBranco": 6522, + "votosNulo": 17997 + }, + "2022": { + "comparecimento": 100352, + "votosValidos": 76325, + "votosBranco": 8916, + "votosNulo": 9896 + } + }, + "majoritarian2022": { + "president": { + "votes": 64576, + "comparecimento": 100386, + "votosValidos": 91727, + "votosBranco": 2617, + "votosNulo": 6042 + }, + "governor": { + "votes": 34407, + "comparecimento": 100352, + "votosValidos": 88751, + "votosBranco": 3812, + "votosNulo": 7776 + } } }, "salvador-ze-5": { @@ -4086,6 +17985,47 @@ "2014": 47504, "2018": 47818, "2022": 57013 + }, + "campoFederalVotesByYear": { + "2014": 14103, + "2018": 10446, + "2022": 13538 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 70809, + "votosValidos": 47504, + "votosBranco": 8601, + "votosNulo": 9093 + }, + "2018": { + "comparecimento": 69267, + "votosValidos": 47818, + "votosBranco": 4269, + "votosNulo": 11731 + }, + "2022": { + "comparecimento": 71095, + "votosValidos": 57013, + "votosBranco": 5346, + "votosNulo": 5565 + } + }, + "majoritarian2022": { + "president": { + "votes": 46704, + "comparecimento": 71209, + "votosValidos": 67014, + "votosBranco": 1209, + "votosNulo": 2986 + }, + "governor": { + "votes": 25935, + "comparecimento": 71095, + "votosValidos": 65167, + "votosBranco": 1966, + "votosNulo": 3951 + } } }, "salvador-ze-6": { @@ -4098,6 +18038,47 @@ "2014": 44546, "2018": 56268, "2022": 64496 + }, + "campoFederalVotesByYear": { + "2014": 12737, + "2018": 13960, + "2022": 15780 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 65817, + "votosValidos": 44546, + "votosBranco": 7084, + "votosNulo": 9055 + }, + "2018": { + "comparecimento": 78060, + "votosValidos": 56268, + "votosBranco": 4570, + "votosNulo": 12148 + }, + "2022": { + "comparecimento": 79572, + "votosValidos": 64496, + "votosBranco": 5535, + "votosNulo": 5789 + } + }, + "majoritarian2022": { + "president": { + "votes": 49220, + "comparecimento": 79766, + "votosValidos": 75855, + "votosBranco": 1112, + "votosNulo": 2799 + }, + "governor": { + "votes": 26447, + "comparecimento": 79572, + "votosValidos": 74093, + "votosBranco": 1758, + "votosNulo": 3699 + } } }, "salvador-ze-7": { @@ -4110,6 +18091,47 @@ "2014": 36232, "2018": 53374, "2022": 63799 + }, + "campoFederalVotesByYear": { + "2014": 10588, + "2018": 13804, + "2022": 16176 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 53108, + "votosValidos": 36232, + "votosBranco": 5201, + "votosNulo": 7086 + }, + "2018": { + "comparecimento": 74428, + "votosValidos": 53374, + "votosBranco": 4115, + "votosNulo": 11836 + }, + "2022": { + "comparecimento": 77593, + "votosValidos": 63799, + "votosBranco": 4844, + "votosNulo": 5437 + } + }, + "majoritarian2022": { + "president": { + "votes": 48663, + "comparecimento": 77636, + "votosValidos": 73879, + "votosBranco": 1103, + "votosNulo": 2654 + }, + "governor": { + "votes": 26871, + "comparecimento": 77593, + "votosValidos": 72274, + "votosBranco": 1697, + "votosNulo": 3606 + } } }, "salvador-ze-8": { @@ -4122,6 +18144,47 @@ "2014": 76786, "2018": 57230, "2022": 67371 + }, + "campoFederalVotesByYear": { + "2014": 21920, + "2018": 12309, + "2022": 13002 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 117916, + "votosValidos": 76786, + "votosBranco": 16014, + "votosNulo": 16141 + }, + "2018": { + "comparecimento": 85455, + "votosValidos": 57230, + "votosBranco": 5754, + "votosNulo": 15673 + }, + "2022": { + "comparecimento": 87276, + "votosValidos": 67371, + "votosBranco": 7641, + "votosNulo": 8088 + } + }, + "majoritarian2022": { + "president": { + "votes": 55842, + "comparecimento": 87285, + "votosValidos": 80498, + "votosBranco": 1953, + "votosNulo": 4834 + }, + "governor": { + "votes": 29153, + "comparecimento": 87276, + "votosValidos": 78004, + "votosBranco": 2930, + "votosNulo": 6323 + } } }, "salvador-ze-9": { @@ -4134,6 +18197,47 @@ "2014": 42287, "2018": 51621, "2022": 60344 + }, + "campoFederalVotesByYear": { + "2014": 10542, + "2018": 11411, + "2022": 12699 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 65266, + "votosValidos": 42287, + "votosBranco": 7928, + "votosNulo": 10150 + }, + "2018": { + "comparecimento": 79160, + "votosValidos": 51621, + "votosBranco": 5310, + "votosNulo": 16553 + }, + "2022": { + "comparecimento": 79818, + "votosValidos": 60344, + "votosBranco": 7040, + "votosNulo": 8460 + } + }, + "majoritarian2022": { + "president": { + "votes": 49063, + "comparecimento": 79848, + "votosValidos": 73722, + "votosBranco": 1726, + "votosNulo": 4400 + }, + "governor": { + "votes": 24032, + "comparecimento": 79818, + "votosValidos": 71696, + "votosBranco": 2531, + "votosNulo": 5546 + } } }, "salvador-ze-10": { @@ -4146,6 +18250,47 @@ "2014": 75970, "2018": 82372, "2022": 95719 + }, + "campoFederalVotesByYear": { + "2014": 20277, + "2018": 19856, + "2022": 28625 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 107228, + "votosValidos": 75970, + "votosBranco": 11264, + "votosNulo": 11991 + }, + "2018": { + "comparecimento": 106943, + "votosValidos": 82372, + "votosBranco": 5533, + "votosNulo": 12559 + }, + "2022": { + "comparecimento": 113017, + "votosValidos": 95719, + "votosBranco": 6387, + "votosNulo": 6173 + } + }, + "majoritarian2022": { + "president": { + "votes": 65393, + "comparecimento": 113288, + "votosValidos": 108688, + "votosBranco": 1363, + "votosNulo": 3237 + }, + "governor": { + "votes": 38116, + "comparecimento": 113017, + "votosValidos": 106462, + "votosBranco": 2157, + "votosNulo": 4376 + } } }, "salvador-ze-11": { @@ -4158,6 +18303,47 @@ "2014": 39988, "2018": 63609, "2022": 75491 + }, + "campoFederalVotesByYear": { + "2014": 10819, + "2018": 14016, + "2022": 14547 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 60644, + "votosValidos": 39988, + "votosBranco": 7818, + "votosNulo": 8227 + }, + "2018": { + "comparecimento": 94785, + "votosValidos": 63609, + "votosBranco": 6285, + "votosNulo": 17084 + }, + "2022": { + "comparecimento": 97411, + "votosValidos": 75491, + "votosBranco": 8318, + "votosNulo": 8826 + } + }, + "majoritarian2022": { + "president": { + "votes": 62934, + "comparecimento": 97424, + "votosValidos": 90290, + "votosBranco": 2106, + "votosNulo": 5028 + }, + "governor": { + "votes": 33092, + "comparecimento": 97411, + "votosValidos": 87720, + "votosBranco": 3121, + "votosNulo": 6558 + } } }, "salvador-ze-12": { @@ -4170,6 +18356,47 @@ "2014": 42903, "2018": 65371, "2022": 78414 + }, + "campoFederalVotesByYear": { + "2014": 12377, + "2018": 13041, + "2022": 18881 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 62548, + "votosValidos": 42903, + "votosBranco": 6596, + "votosNulo": 8309 + }, + "2018": { + "comparecimento": 92950, + "votosValidos": 65371, + "votosBranco": 5887, + "votosNulo": 14586 + }, + "2022": { + "comparecimento": 97061, + "votosValidos": 78414, + "votosBranco": 7252, + "votosNulo": 7117 + } + }, + "majoritarian2022": { + "president": { + "votes": 59997, + "comparecimento": 97153, + "votosValidos": 91598, + "votosBranco": 1694, + "votosNulo": 3861 + }, + "governor": { + "votes": 32103, + "comparecimento": 97061, + "votosValidos": 89291, + "votosBranco": 2643, + "votosNulo": 5119 + } } }, "salvador-ze-13": { @@ -4182,6 +18409,47 @@ "2014": 55891, "2018": 67841, "2022": 76839 + }, + "campoFederalVotesByYear": { + "2014": 12477, + "2018": 13436, + "2022": 20122 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 73105, + "votosValidos": 55891, + "votosBranco": 5229, + "votosNulo": 7046 + }, + "2018": { + "comparecimento": 85955, + "votosValidos": 67841, + "votosBranco": 4125, + "votosNulo": 9316 + }, + "2022": { + "comparecimento": 90093, + "votosValidos": 76839, + "votosBranco": 4743, + "votosNulo": 4774 + } + }, + "majoritarian2022": { + "president": { + "votes": 46618, + "comparecimento": 90654, + "votosValidos": 87158, + "votosBranco": 1117, + "votosNulo": 2379 + }, + "governor": { + "votes": 26420, + "comparecimento": 90093, + "votosValidos": 85208, + "votosBranco": 1666, + "votosNulo": 3202 + } } }, "salvador-ze-14": { @@ -4194,6 +18462,47 @@ "2014": 52287, "2018": 60893, "2022": 72988 + }, + "campoFederalVotesByYear": { + "2014": 14320, + "2018": 14457, + "2022": 16438 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 78202, + "votosValidos": 52287, + "votosBranco": 9102, + "votosNulo": 10948 + }, + "2018": { + "comparecimento": 91771, + "votosValidos": 60893, + "votosBranco": 6389, + "votosNulo": 16680 + }, + "2022": { + "comparecimento": 94242, + "votosValidos": 72988, + "votosBranco": 8147, + "votosNulo": 8367 + } + }, + "majoritarian2022": { + "president": { + "votes": 63158, + "comparecimento": 94363, + "votosValidos": 88029, + "votosBranco": 1908, + "votosNulo": 4426 + }, + "governor": { + "votes": 33929, + "comparecimento": 94242, + "votosValidos": 85132, + "votosBranco": 2979, + "votosNulo": 6117 + } } }, "salvador-ze-15": { @@ -4206,6 +18515,47 @@ "2014": 49356, "2018": 47216, "2022": 57956 + }, + "campoFederalVotesByYear": { + "2014": 11863, + "2018": 10957, + "2022": 10264 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 76739, + "votosValidos": 49356, + "votosBranco": 10624, + "votosNulo": 10984 + }, + "2018": { + "comparecimento": 72949, + "votosValidos": 47216, + "votosBranco": 4918, + "votosNulo": 14949 + }, + "2022": { + "comparecimento": 74565, + "votosValidos": 57956, + "votosBranco": 5764, + "votosNulo": 7401 + } + }, + "majoritarian2022": { + "president": { + "votes": 47911, + "comparecimento": 74570, + "votosValidos": 68165, + "votosBranco": 1755, + "votosNulo": 4650 + }, + "governor": { + "votes": 24515, + "comparecimento": 74565, + "votosValidos": 65937, + "votosBranco": 2596, + "votosNulo": 6023 + } } }, "salvador-ze-16": { @@ -4218,6 +18568,47 @@ "2014": 65915, "2018": 56490, "2022": 67117 + }, + "campoFederalVotesByYear": { + "2014": 17623, + "2018": 14289, + "2022": 15294 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 100978, + "votosValidos": 65915, + "votosBranco": 13559, + "votosNulo": 13209 + }, + "2018": { + "comparecimento": 81672, + "votosValidos": 56490, + "votosBranco": 5403, + "votosNulo": 13460 + }, + "2022": { + "comparecimento": 84583, + "votosValidos": 67117, + "votosBranco": 6762, + "votosNulo": 6520 + } + }, + "majoritarian2022": { + "president": { + "votes": 55480, + "comparecimento": 84612, + "votosValidos": 79339, + "votosBranco": 1652, + "votosNulo": 3621 + }, + "governor": { + "votes": 30544, + "comparecimento": 84583, + "votosValidos": 77026, + "votosBranco": 2540, + "votosNulo": 5001 + } } }, "salvador-ze-17": { @@ -4230,6 +18621,47 @@ "2014": 58268, "2018": 54490, "2022": 62509 + }, + "campoFederalVotesByYear": { + "2014": 16888, + "2018": 10380, + "2022": 10616 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 89349, + "votosValidos": 58268, + "votosBranco": 12254, + "votosNulo": 11898 + }, + "2018": { + "comparecimento": 83541, + "votosValidos": 54490, + "votosBranco": 5656, + "votosNulo": 16963 + }, + "2022": { + "comparecimento": 85769, + "votosValidos": 62509, + "votosBranco": 7618, + "votosNulo": 9419 + } + }, + "majoritarian2022": { + "president": { + "votes": 53962, + "comparecimento": 85793, + "votosValidos": 77853, + "votosBranco": 2282, + "votosNulo": 5658 + }, + "governor": { + "votes": 26075, + "comparecimento": 85769, + "votosValidos": 75436, + "votosBranco": 3195, + "votosNulo": 7120 + } } }, "salvador-ze-18": { @@ -4242,6 +18674,47 @@ "2014": 44345, "2018": 40880, "2022": 47708 + }, + "campoFederalVotesByYear": { + "2014": 11912, + "2018": 10474, + "2022": 10902 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 68990, + "votosValidos": 44345, + "votosBranco": 8914, + "votosNulo": 10550 + }, + "2018": { + "comparecimento": 63005, + "votosValidos": 40880, + "votosBranco": 3853, + "votosNulo": 13119 + }, + "2022": { + "comparecimento": 63580, + "votosValidos": 47708, + "votosBranco": 5736, + "votosNulo": 6772 + } + }, + "majoritarian2022": { + "president": { + "votes": 41507, + "comparecimento": 63645, + "votosValidos": 59122, + "votosBranco": 1191, + "votosNulo": 3332 + }, + "governor": { + "votes": 21678, + "comparecimento": 63580, + "votosValidos": 57371, + "votosBranco": 1882, + "votosNulo": 4314 + } } }, "salvador-ze-19": { @@ -4254,6 +18727,47 @@ "2014": 73723, "2018": 66051, "2022": 82349 + }, + "campoFederalVotesByYear": { + "2014": 20992, + "2018": 14480, + "2022": 15881 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 109531, + "votosValidos": 73723, + "votosBranco": 14103, + "votosNulo": 13265 + }, + "2018": { + "comparecimento": 97889, + "votosValidos": 66051, + "votosBranco": 6557, + "votosNulo": 17693 + }, + "2022": { + "comparecimento": 103825, + "votosValidos": 82349, + "votosBranco": 7982, + "votosNulo": 8667 + } + }, + "majoritarian2022": { + "president": { + "votes": 66550, + "comparecimento": 103920, + "votosValidos": 97079, + "votosBranco": 1992, + "votosNulo": 4849 + }, + "governor": { + "votes": 34077, + "comparecimento": 103825, + "votosValidos": 94552, + "votosBranco": 2937, + "votosNulo": 6319 + } } }, "santa-barbara": { @@ -4266,6 +18780,47 @@ "2014": 10892, "2018": 11059, "2022": 14059 + }, + "campoFederalVotesByYear": { + "2014": 3491, + "2018": 5415, + "2022": 4034 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13632, + "votosValidos": 10892, + "votosBranco": 904, + "votosNulo": 563 + }, + "2018": { + "comparecimento": 14135, + "votosValidos": 11059, + "votosBranco": 435, + "votosNulo": 1064 + }, + "2022": { + "comparecimento": 15824, + "votosValidos": 14059, + "votosBranco": 549, + "votosNulo": 586 + } + }, + "majoritarian2022": { + "president": { + "votes": 11958, + "comparecimento": 15826, + "votosValidos": 15184, + "votosBranco": 158, + "votosNulo": 484 + }, + "governor": { + "votes": 9741, + "comparecimento": 15824, + "votosValidos": 14751, + "votosBranco": 303, + "votosNulo": 770 + } } }, "santa-brigida": { @@ -4278,6 +18833,47 @@ "2014": 0, "2018": 7071, "2022": 8129 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 4748, + "2022": 4021 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8583, + "votosValidos": 7071, + "votosBranco": 291, + "votosNulo": 375 + }, + "2022": { + "comparecimento": 9043, + "votosValidos": 8129, + "votosBranco": 254, + "votosNulo": 250 + } + }, + "majoritarian2022": { + "president": { + "votes": 7219, + "comparecimento": 9045, + "votosValidos": 8613, + "votosBranco": 79, + "votosNulo": 353 + }, + "governor": { + "votes": 5622, + "comparecimento": 9043, + "votosValidos": 8297, + "votosBranco": 190, + "votosNulo": 555 + } } }, "santa-cruz-cabralia": { @@ -4290,6 +18886,47 @@ "2014": 0, "2018": 10593, "2022": 14012 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 2296, + "2022": 2976 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 14281, + "votosValidos": 10593, + "votosBranco": 695, + "votosNulo": 1862 + }, + "2022": { + "comparecimento": 16506, + "votosValidos": 14012, + "votosBranco": 965, + "votosNulo": 806 + } + }, + "majoritarian2022": { + "president": { + "votes": 9605, + "comparecimento": 16507, + "votosValidos": 15733, + "votosBranco": 234, + "votosNulo": 540 + }, + "governor": { + "votes": 7751, + "comparecimento": 16506, + "votosValidos": 14739, + "votosBranco": 715, + "votosNulo": 1050 + } } }, "santa-cruz-da-vitoria": { @@ -4302,6 +18939,47 @@ "2014": 2327, "2018": 2321, "2022": 3090 + }, + "campoFederalVotesByYear": { + "2014": 419, + "2018": 196, + "2022": 818 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 2944, + "votosValidos": 2327, + "votosBranco": 163, + "votosNulo": 106 + }, + "2018": { + "comparecimento": 2885, + "votosValidos": 2321, + "votosBranco": 80, + "votosNulo": 231 + }, + "2022": { + "comparecimento": 3401, + "votosValidos": 3090, + "votosBranco": 64, + "votosNulo": 97 + } + }, + "majoritarian2022": { + "president": { + "votes": 2005, + "comparecimento": 3401, + "votosValidos": 3234, + "votosBranco": 21, + "votosNulo": 146 + }, + "governor": { + "votes": 1185, + "comparecimento": 3401, + "votosValidos": 3142, + "votosBranco": 47, + "votosNulo": 212 + } } }, "santa-ines": { @@ -4314,6 +18992,47 @@ "2014": 0, "2018": 4936, "2022": 5333 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3907, + "2022": 3650 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5814, + "votosValidos": 4936, + "votosBranco": 168, + "votosNulo": 266 + }, + "2022": { + "comparecimento": 6073, + "votosValidos": 5333, + "votosBranco": 259, + "votosNulo": 207 + } + }, + "majoritarian2022": { + "president": { + "votes": 4772, + "comparecimento": 6073, + "votosValidos": 5754, + "votosBranco": 96, + "votosNulo": 223 + }, + "governor": { + "votes": 4213, + "comparecimento": 6073, + "votosValidos": 5598, + "votosBranco": 171, + "votosNulo": 304 + } } }, "santa-luzia": { @@ -4326,6 +19045,47 @@ "2014": 4409, "2018": 4711, "2022": 5811 + }, + "campoFederalVotesByYear": { + "2014": 1080, + "2018": 230, + "2022": 249 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5419, + "votosValidos": 4409, + "votosBranco": 184, + "votosNulo": 159 + }, + "2018": { + "comparecimento": 5594, + "votosValidos": 4711, + "votosBranco": 129, + "votosNulo": 276 + }, + "2022": { + "comparecimento": 6412, + "votosValidos": 5811, + "votosBranco": 120, + "votosNulo": 169 + } + }, + "majoritarian2022": { + "president": { + "votes": 4055, + "comparecimento": 6412, + "votosValidos": 6088, + "votosBranco": 56, + "votosNulo": 268 + }, + "governor": { + "votes": 2297, + "comparecimento": 6412, + "votosValidos": 5961, + "votosBranco": 65, + "votosNulo": 386 + } } }, "santa-maria-da-vitoria": { @@ -4338,6 +19098,47 @@ "2014": 17606, "2018": 16197, "2022": 21423 + }, + "campoFederalVotesByYear": { + "2014": 5195, + "2018": 2859, + "2022": 5136 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 21938, + "votosValidos": 17606, + "votosBranco": 1377, + "votosNulo": 1058 + }, + "2018": { + "comparecimento": 21613, + "votosValidos": 16197, + "votosBranco": 889, + "votosNulo": 1979 + }, + "2022": { + "comparecimento": 24147, + "votosValidos": 21423, + "votosBranco": 941, + "votosNulo": 903 + } + }, + "majoritarian2022": { + "president": { + "votes": 16489, + "comparecimento": 24151, + "votosValidos": 23017, + "votosBranco": 257, + "votosNulo": 877 + }, + "governor": { + "votes": 11420, + "comparecimento": 24147, + "votosValidos": 22069, + "votosBranco": 609, + "votosNulo": 1467 + } } }, "santa-rita-de-cassia": { @@ -4350,6 +19151,47 @@ "2014": 12405, "2018": 12547, "2022": 15313 + }, + "campoFederalVotesByYear": { + "2014": 1529, + "2018": 1836, + "2022": 2112 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15481, + "votosValidos": 12405, + "votosBranco": 1084, + "votosNulo": 658 + }, + "2018": { + "comparecimento": 15885, + "votosValidos": 12547, + "votosBranco": 908, + "votosNulo": 901 + }, + "2022": { + "comparecimento": 17264, + "votosValidos": 15313, + "votosBranco": 830, + "votosNulo": 391 + } + }, + "majoritarian2022": { + "president": { + "votes": 12689, + "comparecimento": 17264, + "votosValidos": 16515, + "votosBranco": 216, + "votosNulo": 533 + }, + "governor": { + "votes": 10004, + "comparecimento": 17264, + "votosValidos": 15695, + "votosBranco": 616, + "votosNulo": 952 + } } }, "santa-teresinha": { @@ -4362,6 +19204,47 @@ "2014": 4718, "2018": 4782, "2022": 6076 + }, + "campoFederalVotesByYear": { + "2014": 2131, + "2018": 2773, + "2022": 1386 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6110, + "votosValidos": 4718, + "votosBranco": 426, + "votosNulo": 320 + }, + "2018": { + "comparecimento": 6257, + "votosValidos": 4782, + "votosBranco": 236, + "votosNulo": 671 + }, + "2022": { + "comparecimento": 7022, + "votosValidos": 6076, + "votosBranco": 296, + "votosNulo": 362 + } + }, + "majoritarian2022": { + "president": { + "votes": 5242, + "comparecimento": 7022, + "votosValidos": 6633, + "votosBranco": 96, + "votosNulo": 293 + }, + "governor": { + "votes": 4052, + "comparecimento": 7022, + "votosValidos": 6361, + "votosBranco": 186, + "votosNulo": 475 + } } }, "santaluz": { @@ -4374,6 +19257,47 @@ "2014": 18028, "2018": 18912, "2022": 21843 + }, + "campoFederalVotesByYear": { + "2014": 3138, + "2018": 2813, + "2022": 3990 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 22009, + "votosValidos": 18028, + "votosBranco": 1417, + "votosNulo": 938 + }, + "2018": { + "comparecimento": 22987, + "votosValidos": 18912, + "votosBranco": 731, + "votosNulo": 1986 + }, + "2022": { + "comparecimento": 25090, + "votosValidos": 21843, + "votosBranco": 1127, + "votosNulo": 1220 + } + }, + "majoritarian2022": { + "president": { + "votes": 17348, + "comparecimento": 25091, + "votosValidos": 23721, + "votosBranco": 341, + "votosNulo": 1029 + }, + "governor": { + "votes": 11892, + "comparecimento": 25090, + "votosValidos": 22848, + "votosBranco": 649, + "votosNulo": 1587 + } } }, "santana": { @@ -4386,6 +19310,47 @@ "2014": 11828, "2018": 12110, "2022": 14635 + }, + "campoFederalVotesByYear": { + "2014": 3783, + "2018": 2726, + "2022": 2676 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 14549, + "votosValidos": 11828, + "votosBranco": 881, + "votosNulo": 625 + }, + "2018": { + "comparecimento": 15006, + "votosValidos": 12110, + "votosBranco": 594, + "votosNulo": 1299 + }, + "2022": { + "comparecimento": 16377, + "votosValidos": 14635, + "votosBranco": 606, + "votosNulo": 548 + } + }, + "majoritarian2022": { + "president": { + "votes": 11374, + "comparecimento": 16377, + "votosValidos": 15614, + "votosBranco": 161, + "votosNulo": 602 + }, + "governor": { + "votes": 10294, + "comparecimento": 16377, + "votosValidos": 15020, + "votosBranco": 372, + "votosNulo": 985 + } } }, "santanopolis": { @@ -4398,6 +19363,47 @@ "2014": 5196, "2018": 5113, "2022": 6242 + }, + "campoFederalVotesByYear": { + "2014": 771, + "2018": 2297, + "2022": 597 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6525, + "votosValidos": 5196, + "votosBranco": 520, + "votosNulo": 256 + }, + "2018": { + "comparecimento": 6352, + "votosValidos": 5113, + "votosBranco": 290, + "votosNulo": 477 + }, + "2022": { + "comparecimento": 7258, + "votosValidos": 6242, + "votosBranco": 403, + "votosNulo": 324 + } + }, + "majoritarian2022": { + "president": { + "votes": 5558, + "comparecimento": 7258, + "votosValidos": 6831, + "votosBranco": 143, + "votosNulo": 284 + }, + "governor": { + "votes": 4075, + "comparecimento": 7258, + "votosValidos": 6679, + "votosBranco": 192, + "votosNulo": 386 + } } }, "santo-amaro": { @@ -4410,6 +19416,47 @@ "2014": 26524, "2018": 28074, "2022": 32345 + }, + "campoFederalVotesByYear": { + "2014": 8514, + "2018": 3553, + "2022": 3419 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 36404, + "votosValidos": 26524, + "votosBranco": 3620, + "votosNulo": 2883 + }, + "2018": { + "comparecimento": 36767, + "votosValidos": 28074, + "votosBranco": 1880, + "votosNulo": 4147 + }, + "2022": { + "comparecimento": 39040, + "votosValidos": 32345, + "votosBranco": 2690, + "votosNulo": 2446 + } + }, + "majoritarian2022": { + "president": { + "votes": 30223, + "comparecimento": 39040, + "votosValidos": 37085, + "votosBranco": 635, + "votosNulo": 1320 + }, + "governor": { + "votes": 19107, + "comparecimento": 39040, + "votosValidos": 35679, + "votosBranco": 1304, + "votosNulo": 2052 + } } }, "santo-antonio-de-jesus": { @@ -4422,6 +19469,47 @@ "2014": 37702, "2018": 36438, "2022": 51564 + }, + "campoFederalVotesByYear": { + "2014": 17189, + "2018": 7620, + "2022": 9626 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 49852, + "votosValidos": 37702, + "votosBranco": 4428, + "votosNulo": 4060 + }, + "2018": { + "comparecimento": 55760, + "votosValidos": 36438, + "votosBranco": 2738, + "votosNulo": 12801 + }, + "2022": { + "comparecimento": 61172, + "votosValidos": 51564, + "votosBranco": 3621, + "votosNulo": 4113 + } + }, + "majoritarian2022": { + "president": { + "votes": 38286, + "comparecimento": 61172, + "votosValidos": 58131, + "votosBranco": 796, + "votosNulo": 2245 + }, + "governor": { + "votes": 22435, + "comparecimento": 61172, + "votosValidos": 55825, + "votosBranco": 1776, + "votosNulo": 3568 + } } }, "santo-estevao": { @@ -4434,6 +19522,47 @@ "2014": 20501, "2018": 13734, "2022": 25940 + }, + "campoFederalVotesByYear": { + "2014": 9247, + "2018": 4498, + "2022": 11031 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 26139, + "votosValidos": 20501, + "votosBranco": 2246, + "votosNulo": 1233 + }, + "2018": { + "comparecimento": 29792, + "votosValidos": 13734, + "votosBranco": 1205, + "votosNulo": 3877 + }, + "2022": { + "comparecimento": 31036, + "votosValidos": 25940, + "votosBranco": 1945, + "votosNulo": 1810 + } + }, + "majoritarian2022": { + "president": { + "votes": 24204, + "comparecimento": 31036, + "votosValidos": 29517, + "votosBranco": 385, + "votosNulo": 1134 + }, + "governor": { + "votes": 17609, + "comparecimento": 31036, + "votosValidos": 28297, + "votosBranco": 854, + "votosNulo": 1883 + } } }, "sao-desiderio": { @@ -4446,6 +19575,47 @@ "2014": 12304, "2018": 13485, "2022": 18527 + }, + "campoFederalVotesByYear": { + "2014": 2966, + "2018": 1082, + "2022": 1904 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15315, + "votosValidos": 12304, + "votosBranco": 939, + "votosNulo": 558 + }, + "2018": { + "comparecimento": 17464, + "votosValidos": 13485, + "votosBranco": 492, + "votosNulo": 815 + }, + "2022": { + "comparecimento": 20249, + "votosValidos": 18527, + "votosBranco": 596, + "votosNulo": 363 + } + }, + "majoritarian2022": { + "president": { + "votes": 13454, + "comparecimento": 20250, + "votosValidos": 19560, + "votosBranco": 179, + "votosNulo": 511 + }, + "governor": { + "votes": 6863, + "comparecimento": 20249, + "votosValidos": 18914, + "votosBranco": 499, + "votosNulo": 835 + } } }, "sao-domingos": { @@ -4458,6 +19628,47 @@ "2014": 4621, "2018": 5169, "2022": 5993 + }, + "campoFederalVotesByYear": { + "2014": 2361, + "2018": 2488, + "2022": 2713 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5588, + "votosValidos": 4621, + "votosBranco": 263, + "votosNulo": 189 + }, + "2018": { + "comparecimento": 5925, + "votosValidos": 5169, + "votosBranco": 116, + "votosNulo": 287 + }, + "2022": { + "comparecimento": 6562, + "votosValidos": 5993, + "votosBranco": 211, + "votosNulo": 174 + } + }, + "majoritarian2022": { + "president": { + "votes": 4522, + "comparecimento": 6562, + "votosValidos": 6290, + "votosBranco": 81, + "votosNulo": 191 + }, + "governor": { + "votes": 3271, + "comparecimento": 6562, + "votosValidos": 6159, + "votosBranco": 125, + "votosNulo": 278 + } } }, "sao-felipe": { @@ -4470,6 +19681,47 @@ "2014": 10146, "2018": 10404, "2022": 12149 + }, + "campoFederalVotesByYear": { + "2014": 4932, + "2018": 2894, + "2022": 1927 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12669, + "votosValidos": 10146, + "votosBranco": 981, + "votosNulo": 488 + }, + "2018": { + "comparecimento": 12893, + "votosValidos": 10404, + "votosBranco": 524, + "votosNulo": 1137 + }, + "2022": { + "comparecimento": 13980, + "votosValidos": 12149, + "votosBranco": 791, + "votosNulo": 525 + } + }, + "majoritarian2022": { + "president": { + "votes": 10025, + "comparecimento": 13980, + "votosValidos": 13374, + "votosBranco": 207, + "votosNulo": 399 + }, + "governor": { + "votes": 6848, + "comparecimento": 13980, + "votosValidos": 13068, + "votosBranco": 315, + "votosNulo": 596 + } } }, "sao-felix": { @@ -4482,6 +19734,47 @@ "2014": 6547, "2018": 6542, "2022": 7121 + }, + "campoFederalVotesByYear": { + "2014": 923, + "2018": 1229, + "2022": 982 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8198, + "votosValidos": 6547, + "votosBranco": 632, + "votosNulo": 373 + }, + "2018": { + "comparecimento": 8165, + "votosValidos": 6542, + "votosBranco": 309, + "votosNulo": 752 + }, + "2022": { + "comparecimento": 8438, + "votosValidos": 7121, + "votosBranco": 522, + "votosNulo": 411 + } + }, + "majoritarian2022": { + "president": { + "votes": 6545, + "comparecimento": 8438, + "votosValidos": 8074, + "votosBranco": 137, + "votosNulo": 227 + }, + "governor": { + "votes": 3543, + "comparecimento": 8438, + "votosValidos": 7864, + "votosBranco": 194, + "votosNulo": 380 + } } }, "sao-felix-do-coribe": { @@ -4494,6 +19787,47 @@ "2014": 6785, "2018": 6361, "2022": 8960 + }, + "campoFederalVotesByYear": { + "2014": 960, + "2018": 681, + "2022": 1111 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8187, + "votosValidos": 6785, + "votosBranco": 467, + "votosNulo": 321 + }, + "2018": { + "comparecimento": 8522, + "votosValidos": 6361, + "votosBranco": 301, + "votosNulo": 882 + }, + "2022": { + "comparecimento": 10128, + "votosValidos": 8960, + "votosBranco": 407, + "votosNulo": 434 + } + }, + "majoritarian2022": { + "president": { + "votes": 6077, + "comparecimento": 10128, + "votosValidos": 9633, + "votosBranco": 102, + "votosNulo": 393 + }, + "governor": { + "votes": 3919, + "comparecimento": 10128, + "votosValidos": 9208, + "votosBranco": 283, + "votosNulo": 637 + } } }, "sao-francisco-do-conde": { @@ -4506,6 +19840,47 @@ "2014": 18381, "2018": 22136, "2022": 22584 + }, + "campoFederalVotesByYear": { + "2014": 4690, + "2018": 5307, + "2022": 5269 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 24253, + "votosValidos": 18381, + "votosBranco": 2645, + "votosNulo": 1609 + }, + "2018": { + "comparecimento": 26841, + "votosValidos": 22136, + "votosBranco": 893, + "votosNulo": 2161 + }, + "2022": { + "comparecimento": 26835, + "votosValidos": 22584, + "votosBranco": 1879, + "votosNulo": 1486 + } + }, + "majoritarian2022": { + "president": { + "votes": 20955, + "comparecimento": 26836, + "votosValidos": 25656, + "votosBranco": 388, + "votosNulo": 792 + }, + "governor": { + "votes": 12359, + "comparecimento": 26835, + "votosValidos": 24664, + "votosBranco": 821, + "votosNulo": 1345 + } } }, "sao-gabriel": { @@ -4518,6 +19893,47 @@ "2014": 9704, "2018": 9811, "2022": 11980 + }, + "campoFederalVotesByYear": { + "2014": 1993, + "2018": 1563, + "2022": 3129 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11990, + "votosValidos": 9704, + "votosBranco": 744, + "votosNulo": 628 + }, + "2018": { + "comparecimento": 12417, + "votosValidos": 9811, + "votosBranco": 398, + "votosNulo": 551 + }, + "2022": { + "comparecimento": 13200, + "votosValidos": 11980, + "votosBranco": 495, + "votosNulo": 311 + } + }, + "majoritarian2022": { + "president": { + "votes": 10943, + "comparecimento": 13200, + "votosValidos": 12718, + "votosBranco": 114, + "votosNulo": 368 + }, + "governor": { + "votes": 7610, + "comparecimento": 13200, + "votosValidos": 12344, + "votosBranco": 284, + "votosNulo": 572 + } } }, "sao-goncalo-dos-campos": { @@ -4530,6 +19946,47 @@ "2014": 15059, "2018": 18007, "2022": 19561 + }, + "campoFederalVotesByYear": { + "2014": 3160, + "2018": 3207, + "2022": 4435 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 20311, + "votosValidos": 15059, + "votosBranco": 2279, + "votosNulo": 1345 + }, + "2018": { + "comparecimento": 23570, + "votosValidos": 18007, + "votosBranco": 1141, + "votosNulo": 2970 + }, + "2022": { + "comparecimento": 24328, + "votosValidos": 19561, + "votosBranco": 2084, + "votosNulo": 1723 + } + }, + "majoritarian2022": { + "president": { + "votes": 18343, + "comparecimento": 24328, + "votosValidos": 23187, + "votosBranco": 340, + "votosNulo": 801 + }, + "governor": { + "votes": 11701, + "comparecimento": 24328, + "votosValidos": 22016, + "votosBranco": 877, + "votosNulo": 1433 + } } }, "sao-jose-da-vitoria": { @@ -4542,6 +19999,47 @@ "2014": 3014, "2018": 2719, "2022": 3439 + }, + "campoFederalVotesByYear": { + "2014": 1544, + "2018": 903, + "2022": 932 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 3542, + "votosValidos": 3014, + "votosBranco": 127, + "votosNulo": 105 + }, + "2018": { + "comparecimento": 3397, + "votosValidos": 2719, + "votosBranco": 91, + "votosNulo": 249 + }, + "2022": { + "comparecimento": 3783, + "votosValidos": 3439, + "votosBranco": 99, + "votosNulo": 97 + } + }, + "majoritarian2022": { + "president": { + "votes": 2139, + "comparecimento": 3783, + "votosValidos": 3630, + "votosBranco": 45, + "votosNulo": 108 + }, + "governor": { + "votes": 1602, + "comparecimento": 3783, + "votosValidos": 3526, + "votosBranco": 71, + "votosNulo": 185 + } } }, "sao-jose-do-jacuipe": { @@ -4554,6 +20052,47 @@ "2014": 4337, "2018": 4553, "2022": 5711 + }, + "campoFederalVotesByYear": { + "2014": 2256, + "2018": 846, + "2022": 1178 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5542, + "votosValidos": 4337, + "votosBranco": 397, + "votosNulo": 269 + }, + "2018": { + "comparecimento": 5842, + "votosValidos": 4553, + "votosBranco": 241, + "votosNulo": 548 + }, + "2022": { + "comparecimento": 6585, + "votosValidos": 5711, + "votosBranco": 309, + "votosNulo": 257 + } + }, + "majoritarian2022": { + "president": { + "votes": 4611, + "comparecimento": 6585, + "votosValidos": 6126, + "votosBranco": 134, + "votosNulo": 325 + }, + "governor": { + "votes": 3549, + "comparecimento": 6585, + "votosValidos": 5914, + "votosBranco": 186, + "votosNulo": 485 + } } }, "sao-miguel-das-matas": { @@ -4566,6 +20105,47 @@ "2014": 5655, "2018": 5750, "2022": 6996 + }, + "campoFederalVotesByYear": { + "2014": 326, + "2018": 767, + "2022": 717 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6726, + "votosValidos": 5655, + "votosBranco": 285, + "votosNulo": 187 + }, + "2018": { + "comparecimento": 6937, + "votosValidos": 5750, + "votosBranco": 158, + "votosNulo": 578 + }, + "2022": { + "comparecimento": 7710, + "votosValidos": 6996, + "votosBranco": 215, + "votosNulo": 273 + } + }, + "majoritarian2022": { + "president": { + "votes": 5649, + "comparecimento": 7710, + "votosValidos": 7382, + "votosBranco": 69, + "votosNulo": 259 + }, + "governor": { + "votes": 4065, + "comparecimento": 7710, + "votosValidos": 7235, + "votosBranco": 118, + "votosNulo": 356 + } } }, "sao-sebastiao-do-passe": { @@ -4578,6 +20158,47 @@ "2014": 18748, "2018": 21593, "2022": 23546 + }, + "campoFederalVotesByYear": { + "2014": 8043, + "2018": 5376, + "2022": 3375 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 25697, + "votosValidos": 18748, + "votosBranco": 3000, + "votosNulo": 1743 + }, + "2018": { + "comparecimento": 27645, + "votosValidos": 21593, + "votosBranco": 1215, + "votosNulo": 2714 + }, + "2022": { + "comparecimento": 27876, + "votosValidos": 23546, + "votosBranco": 1654, + "votosNulo": 1422 + } + }, + "majoritarian2022": { + "president": { + "votes": 22275, + "comparecimento": 27876, + "votosValidos": 26615, + "votosBranco": 338, + "votosNulo": 923 + }, + "governor": { + "votes": 13932, + "comparecimento": 27876, + "votosValidos": 25579, + "votosBranco": 764, + "votosNulo": 1532 + } } }, "sapeacu": { @@ -4590,6 +20211,47 @@ "2014": 0, "2018": 8787, "2022": 10797 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1189, + "2022": 935 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 11728, + "votosValidos": 8787, + "votosBranco": 557, + "votosNulo": 1379 + }, + "2022": { + "comparecimento": 12736, + "votosValidos": 10797, + "votosBranco": 861, + "votosNulo": 646 + } + }, + "majoritarian2022": { + "president": { + "votes": 9300, + "comparecimento": 12736, + "votosValidos": 12096, + "votosBranco": 199, + "votosNulo": 441 + }, + "governor": { + "votes": 4835, + "comparecimento": 12736, + "votosValidos": 11805, + "votosBranco": 286, + "votosNulo": 645 + } } }, "satiro-dias": { @@ -4602,6 +20264,47 @@ "2014": 7748, "2018": 7819, "2022": 9025 + }, + "campoFederalVotesByYear": { + "2014": 537, + "2018": 3894, + "2022": 683 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9029, + "votosValidos": 7748, + "votosBranco": 400, + "votosNulo": 251 + }, + "2018": { + "comparecimento": 9425, + "votosValidos": 7819, + "votosBranco": 349, + "votosNulo": 664 + }, + "2022": { + "comparecimento": 10339, + "votosValidos": 9025, + "votosBranco": 410, + "votosNulo": 423 + } + }, + "majoritarian2022": { + "president": { + "votes": 7526, + "comparecimento": 10339, + "votosValidos": 9788, + "votosBranco": 137, + "votosNulo": 414 + }, + "governor": { + "votes": 5774, + "comparecimento": 10339, + "votosValidos": 9513, + "votosBranco": 222, + "votosNulo": 604 + } } }, "saubara": { @@ -4614,6 +20317,47 @@ "2014": 5260, "2018": 7550, "2022": 8833 + }, + "campoFederalVotesByYear": { + "2014": 2811, + "2018": 1715, + "2022": 1136 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8552, + "votosValidos": 5260, + "votosBranco": 573, + "votosNulo": 2138 + }, + "2018": { + "comparecimento": 8874, + "votosValidos": 7550, + "votosBranco": 376, + "votosNulo": 528 + }, + "2022": { + "comparecimento": 9973, + "votosValidos": 8833, + "votosBranco": 530, + "votosNulo": 357 + } + }, + "majoritarian2022": { + "president": { + "votes": 7339, + "comparecimento": 9973, + "votosValidos": 9502, + "votosBranco": 152, + "votosNulo": 319 + }, + "governor": { + "votes": 4682, + "comparecimento": 9973, + "votosValidos": 9364, + "votosBranco": 209, + "votosNulo": 400 + } } }, "saude": { @@ -4626,6 +20370,47 @@ "2014": 4543, "2018": 4617, "2022": 6057 + }, + "campoFederalVotesByYear": { + "2014": 2433, + "2018": 528, + "2022": 242 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 5997, + "votosValidos": 4543, + "votosBranco": 474, + "votosNulo": 376 + }, + "2018": { + "comparecimento": 6264, + "votosValidos": 4617, + "votosBranco": 266, + "votosNulo": 923 + }, + "2022": { + "comparecimento": 6865, + "votosValidos": 6057, + "votosBranco": 230, + "votosNulo": 245 + } + }, + "majoritarian2022": { + "president": { + "votes": 4932, + "comparecimento": 6866, + "votosValidos": 6504, + "votosBranco": 76, + "votosNulo": 286 + }, + "governor": { + "votes": 3759, + "comparecimento": 6865, + "votosValidos": 6314, + "votosBranco": 110, + "votosNulo": 440 + } } }, "seabra": { @@ -4638,6 +20423,47 @@ "2014": 17448, "2018": 18738, "2022": 24145 + }, + "campoFederalVotesByYear": { + "2014": 7462, + "2018": 6741, + "2022": 7567 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 22849, + "votosValidos": 17448, + "votosBranco": 1835, + "votosNulo": 1815 + }, + "2018": { + "comparecimento": 25940, + "votosValidos": 18738, + "votosBranco": 1053, + "votosNulo": 3105 + }, + "2022": { + "comparecimento": 27991, + "votosValidos": 24145, + "votosBranco": 1445, + "votosNulo": 1468 + } + }, + "majoritarian2022": { + "president": { + "votes": 22505, + "comparecimento": 27991, + "votosValidos": 26839, + "votosBranco": 280, + "votosNulo": 872 + }, + "governor": { + "votes": 17363, + "comparecimento": 27991, + "votosValidos": 25992, + "votosBranco": 548, + "votosNulo": 1448 + } } }, "sebastiao-laranjeiras": { @@ -4650,6 +20476,47 @@ "2014": 4247, "2018": 4347, "2022": 5153 + }, + "campoFederalVotesByYear": { + "2014": 736, + "2018": 196, + "2022": 136 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4963, + "votosValidos": 4247, + "votosBranco": 225, + "votosNulo": 109 + }, + "2018": { + "comparecimento": 5199, + "votosValidos": 4347, + "votosBranco": 179, + "votosNulo": 321 + }, + "2022": { + "comparecimento": 5607, + "votosValidos": 5153, + "votosBranco": 141, + "votosNulo": 124 + } + }, + "majoritarian2022": { + "president": { + "votes": 3931, + "comparecimento": 5607, + "votosValidos": 5309, + "votosBranco": 66, + "votosNulo": 232 + }, + "governor": { + "votes": 3669, + "comparecimento": 5607, + "votosValidos": 5097, + "votosBranco": 125, + "votosNulo": 385 + } } }, "senhor-do-bonfim": { @@ -4662,6 +20529,47 @@ "2014": 29927, "2018": 26268, "2022": 35482 + }, + "campoFederalVotesByYear": { + "2014": 11349, + "2018": 9476, + "2022": 10528 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 37816, + "votosValidos": 29927, + "votosBranco": 2856, + "votosNulo": 2048 + }, + "2018": { + "comparecimento": 39437, + "votosValidos": 26268, + "votosBranco": 2254, + "votosNulo": 8075 + }, + "2022": { + "comparecimento": 41726, + "votosValidos": 35482, + "votosBranco": 2340, + "votosNulo": 2051 + } + }, + "majoritarian2022": { + "president": { + "votes": 25238, + "comparecimento": 41727, + "votosValidos": 39573, + "votosBranco": 703, + "votosNulo": 1451 + }, + "governor": { + "votes": 17115, + "comparecimento": 41726, + "votosValidos": 38619, + "votosBranco": 1072, + "votosNulo": 2032 + } } }, "sento-se": { @@ -4674,6 +20582,47 @@ "2014": 16005, "2018": 11627, "2022": 21088 + }, + "campoFederalVotesByYear": { + "2014": 3094, + "2018": 2391, + "2022": 2013 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 19597, + "votosValidos": 16005, + "votosBranco": 820, + "votosNulo": 1171 + }, + "2018": { + "comparecimento": 20772, + "votosValidos": 11627, + "votosBranco": 577, + "votosNulo": 7262 + }, + "2022": { + "comparecimento": 22900, + "votosValidos": 21088, + "votosBranco": 610, + "votosNulo": 400 + } + }, + "majoritarian2022": { + "president": { + "votes": 16270, + "comparecimento": 22910, + "votosValidos": 22189, + "votosBranco": 214, + "votosNulo": 507 + }, + "governor": { + "votes": 13426, + "comparecimento": 22900, + "votosValidos": 21642, + "votosBranco": 400, + "votosNulo": 858 + } } }, "serra-do-ramalho": { @@ -4686,6 +20635,47 @@ "2014": 12583, "2018": 13669, "2022": 17959 + }, + "campoFederalVotesByYear": { + "2014": 5171, + "2018": 1614, + "2022": 1319 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 15896, + "votosValidos": 12583, + "votosBranco": 885, + "votosNulo": 823 + }, + "2018": { + "comparecimento": 16548, + "votosValidos": 13669, + "votosBranco": 431, + "votosNulo": 783 + }, + "2022": { + "comparecimento": 19552, + "votosValidos": 17959, + "votosBranco": 471, + "votosNulo": 422 + } + }, + "majoritarian2022": { + "president": { + "votes": 14191, + "comparecimento": 19553, + "votosValidos": 18732, + "votosBranco": 201, + "votosNulo": 620 + }, + "governor": { + "votes": 9343, + "comparecimento": 19552, + "votosValidos": 18318, + "votosBranco": 284, + "votosNulo": 949 + } } }, "serra-dourada": { @@ -4698,6 +20688,47 @@ "2014": 9143, "2018": 8626, "2022": 10280 + }, + "campoFederalVotesByYear": { + "2014": 5151, + "2018": 4249, + "2022": 5004 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10591, + "votosValidos": 9143, + "votosBranco": 435, + "votosNulo": 219 + }, + "2018": { + "comparecimento": 10568, + "votosValidos": 8626, + "votosBranco": 338, + "votosNulo": 461 + }, + "2022": { + "comparecimento": 11291, + "votosValidos": 10280, + "votosBranco": 345, + "votosNulo": 233 + } + }, + "majoritarian2022": { + "president": { + "votes": 6970, + "comparecimento": 11298, + "votosValidos": 10802, + "votosBranco": 138, + "votosNulo": 358 + }, + "governor": { + "votes": 6101, + "comparecimento": 11291, + "votosValidos": 10614, + "votosBranco": 217, + "votosNulo": 459 + } } }, "serra-preta": { @@ -4710,6 +20741,47 @@ "2014": 0, "2018": 0, "2022": 11989 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 0, + "2022": 3820 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2022": { + "comparecimento": 13542, + "votosValidos": 11989, + "votosBranco": 515, + "votosNulo": 482 + } + }, + "majoritarian2022": { + "president": { + "votes": 10663, + "comparecimento": 13542, + "votosValidos": 12937, + "votosBranco": 159, + "votosNulo": 446 + }, + "governor": { + "votes": 7766, + "comparecimento": 13542, + "votosValidos": 12555, + "votosBranco": 280, + "votosNulo": 707 + } } }, "serrinha": { @@ -4722,6 +20794,47 @@ "2014": 33178, "2018": 35509, "2022": 42844 + }, + "campoFederalVotesByYear": { + "2014": 9956, + "2018": 11609, + "2022": 8976 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 43993, + "votosValidos": 33178, + "votosBranco": 2880, + "votosNulo": 4190 + }, + "2018": { + "comparecimento": 47811, + "votosValidos": 35509, + "votosBranco": 1677, + "votosNulo": 7399 + }, + "2022": { + "comparecimento": 51235, + "votosValidos": 42844, + "votosBranco": 2488, + "votosNulo": 3956 + } + }, + "majoritarian2022": { + "president": { + "votes": 35341, + "comparecimento": 51236, + "votosValidos": 48318, + "votosBranco": 640, + "votosNulo": 2278 + }, + "governor": { + "votes": 24801, + "comparecimento": 51235, + "votosValidos": 46084, + "votosBranco": 1393, + "votosNulo": 3751 + } } }, "serrolandia": { @@ -4734,6 +20847,47 @@ "2014": 0, "2018": 6378, "2022": 7490 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3938, + "2022": 3613 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 7765, + "votosValidos": 6378, + "votosBranco": 226, + "votosNulo": 637 + }, + "2022": { + "comparecimento": 8361, + "votosValidos": 7490, + "votosBranco": 175, + "votosNulo": 312 + } + }, + "majoritarian2022": { + "president": { + "votes": 5486, + "comparecimento": 8361, + "votosValidos": 7819, + "votosBranco": 96, + "votosNulo": 446 + }, + "governor": { + "votes": 4334, + "comparecimento": 8361, + "votosValidos": 7617, + "votosBranco": 156, + "votosNulo": 588 + } } }, "simoes-filho": { @@ -4746,6 +20900,47 @@ "2014": 45685, "2018": 45160, "2022": 58245 + }, + "campoFederalVotesByYear": { + "2014": 16741, + "2018": 3857, + "2022": 8826 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 63094, + "votosValidos": 45685, + "votosBranco": 7149, + "votosNulo": 4855 + }, + "2018": { + "comparecimento": 64201, + "votosValidos": 45160, + "votosBranco": 3775, + "votosNulo": 7628 + }, + "2022": { + "comparecimento": 70532, + "votosValidos": 58245, + "votosBranco": 4937, + "votosNulo": 4076 + } + }, + "majoritarian2022": { + "president": { + "votes": 46408, + "comparecimento": 70532, + "votosValidos": 66750, + "votosBranco": 1220, + "votosNulo": 2562 + }, + "governor": { + "votes": 27425, + "comparecimento": 70532, + "votosValidos": 64322, + "votosBranco": 2403, + "votosNulo": 3801 + } } }, "sitio-do-mato": { @@ -4758,6 +20953,47 @@ "2014": 4481, "2018": 5269, "2022": 7753 + }, + "campoFederalVotesByYear": { + "2014": 833, + "2018": 335, + "2022": 1103 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6774, + "votosValidos": 4481, + "votosBranco": 183, + "votosNulo": 1571 + }, + "2018": { + "comparecimento": 6854, + "votosValidos": 5269, + "votosBranco": 200, + "votosNulo": 229 + }, + "2022": { + "comparecimento": 8334, + "votosValidos": 7753, + "votosBranco": 196, + "votosNulo": 111 + } + }, + "majoritarian2022": { + "president": { + "votes": 6112, + "comparecimento": 8334, + "votosValidos": 8085, + "votosBranco": 70, + "votosNulo": 179 + }, + "governor": { + "votes": 4820, + "comparecimento": 8334, + "votosValidos": 7898, + "votosBranco": 145, + "votosNulo": 290 + } } }, "sitio-do-quinto": { @@ -4770,6 +21006,47 @@ "2014": 5605, "2018": 5890, "2022": 7005 + }, + "campoFederalVotesByYear": { + "2014": 446, + "2018": 1765, + "2022": 180 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6755, + "votosValidos": 5605, + "votosBranco": 349, + "votosNulo": 167 + }, + "2018": { + "comparecimento": 6834, + "votosValidos": 5890, + "votosBranco": 182, + "votosNulo": 360 + }, + "2022": { + "comparecimento": 7667, + "votosValidos": 7005, + "votosBranco": 197, + "votosNulo": 169 + } + }, + "majoritarian2022": { + "president": { + "votes": 5885, + "comparecimento": 7668, + "votosValidos": 7304, + "votosBranco": 59, + "votosNulo": 305 + }, + "governor": { + "votes": 4544, + "comparecimento": 7667, + "votosValidos": 7044, + "votosBranco": 130, + "votosNulo": 493 + } } }, "sobradinho": { @@ -4782,6 +21059,47 @@ "2014": 10462, "2018": 10571, "2022": 13973 + }, + "campoFederalVotesByYear": { + "2014": 4388, + "2018": 3719, + "2022": 2867 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 13748, + "votosValidos": 10462, + "votosBranco": 952, + "votosNulo": 975 + }, + "2018": { + "comparecimento": 14162, + "votosValidos": 10571, + "votosBranco": 556, + "votosNulo": 2219 + }, + "2022": { + "comparecimento": 15564, + "votosValidos": 13973, + "votosBranco": 583, + "votosNulo": 494 + } + }, + "majoritarian2022": { + "president": { + "votes": 11323, + "comparecimento": 15566, + "votosValidos": 15055, + "votosBranco": 149, + "votosNulo": 362 + }, + "governor": { + "votes": 10122, + "comparecimento": 15564, + "votosValidos": 14186, + "votosBranco": 536, + "votosNulo": 841 + } } }, "souto-soares": { @@ -4794,6 +21112,47 @@ "2014": 7619, "2018": 8857, "2022": 10263 + }, + "campoFederalVotesByYear": { + "2014": 3736, + "2018": 5513, + "2022": 4437 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8945, + "votosValidos": 7619, + "votosBranco": 526, + "votosNulo": 244 + }, + "2018": { + "comparecimento": 10102, + "votosValidos": 8857, + "votosBranco": 260, + "votosNulo": 506 + }, + "2022": { + "comparecimento": 11161, + "votosValidos": 10263, + "votosBranco": 352, + "votosNulo": 248 + } + }, + "majoritarian2022": { + "president": { + "votes": 9615, + "comparecimento": 11161, + "votosValidos": 10896, + "votosBranco": 96, + "votosNulo": 169 + }, + "governor": { + "votes": 7405, + "comparecimento": 11161, + "votosValidos": 10662, + "votosBranco": 197, + "votosNulo": 302 + } } }, "tabocas-do-brejo-velho": { @@ -4806,6 +21165,47 @@ "2014": 5526, "2018": 4468, "2022": 7305 + }, + "campoFederalVotesByYear": { + "2014": 1453, + "2018": 874, + "2022": 1250 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6894, + "votosValidos": 5526, + "votosBranco": 594, + "votosNulo": 207 + }, + "2018": { + "comparecimento": 7247, + "votosValidos": 4468, + "votosBranco": 400, + "votosNulo": 409 + }, + "2022": { + "comparecimento": 8055, + "votosValidos": 7305, + "votosBranco": 277, + "votosNulo": 167 + } + }, + "majoritarian2022": { + "president": { + "votes": 6137, + "comparecimento": 8055, + "votosValidos": 7744, + "votosBranco": 88, + "votosNulo": 223 + }, + "governor": { + "votes": 5218, + "comparecimento": 8055, + "votosValidos": 7488, + "votosBranco": 172, + "votosNulo": 393 + } } }, "tanhacu": { @@ -4818,6 +21218,47 @@ "2014": 0, "2018": 10990, "2022": 12645 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3811, + "2022": 4719 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 13446, + "votosValidos": 10990, + "votosBranco": 406, + "votosNulo": 1233 + }, + "2022": { + "comparecimento": 14431, + "votosValidos": 12645, + "votosBranco": 552, + "votosNulo": 529 + } + }, + "majoritarian2022": { + "president": { + "votes": 10333, + "comparecimento": 14431, + "votosValidos": 13796, + "votosBranco": 168, + "votosNulo": 467 + }, + "governor": { + "votes": 7582, + "comparecimento": 14431, + "votosValidos": 13406, + "votosBranco": 301, + "votosNulo": 724 + } } }, "tanque-novo": { @@ -4830,6 +21271,47 @@ "2014": 0, "2018": 7879, "2022": 10444 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3168, + "2022": 1304 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 9858, + "votosValidos": 7879, + "votosBranco": 559, + "votosNulo": 847 + }, + "2022": { + "comparecimento": 11523, + "votosValidos": 10444, + "votosBranco": 490, + "votosNulo": 283 + } + }, + "majoritarian2022": { + "president": { + "votes": 8987, + "comparecimento": 11523, + "votosValidos": 10901, + "votosBranco": 170, + "votosNulo": 452 + }, + "governor": { + "votes": 8278, + "comparecimento": 11523, + "votosValidos": 10437, + "votosBranco": 351, + "votosNulo": 734 + } } }, "tanquinho": { @@ -4842,6 +21324,47 @@ "2014": 0, "2018": 4900, "2022": 5556 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 2088, + "2022": 2758 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 5856, + "votosValidos": 4900, + "votosBranco": 161, + "votosNulo": 336 + }, + "2022": { + "comparecimento": 6123, + "votosValidos": 5556, + "votosBranco": 182, + "votosNulo": 145 + } + }, + "majoritarian2022": { + "president": { + "votes": 4621, + "comparecimento": 6123, + "votosValidos": 5920, + "votosBranco": 50, + "votosNulo": 153 + }, + "governor": { + "votes": 3803, + "comparecimento": 6123, + "votosValidos": 5814, + "votosBranco": 85, + "votosNulo": 224 + } } }, "taperoa": { @@ -4854,6 +21377,47 @@ "2014": 6924, "2018": 7955, "2022": 9763 + }, + "campoFederalVotesByYear": { + "2014": 4117, + "2018": 845, + "2022": 677 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9332, + "votosValidos": 6924, + "votosBranco": 436, + "votosNulo": 980 + }, + "2018": { + "comparecimento": 9681, + "votosValidos": 7955, + "votosBranco": 297, + "votosNulo": 746 + }, + "2022": { + "comparecimento": 11062, + "votosValidos": 9763, + "votosBranco": 416, + "votosNulo": 420 + } + }, + "majoritarian2022": { + "president": { + "votes": 7785, + "comparecimento": 11062, + "votosValidos": 10374, + "votosBranco": 166, + "votosNulo": 522 + }, + "governor": { + "votes": 5402, + "comparecimento": 11062, + "votosValidos": 10148, + "votosBranco": 220, + "votosNulo": 694 + } } }, "tapiramuta": { @@ -4866,6 +21430,47 @@ "2014": 6011, "2018": 6194, "2022": 7444 + }, + "campoFederalVotesByYear": { + "2014": 329, + "2018": 234, + "2022": 191 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7078, + "votosValidos": 6011, + "votosBranco": 233, + "votosNulo": 278 + }, + "2018": { + "comparecimento": 7496, + "votosValidos": 6194, + "votosBranco": 205, + "votosNulo": 651 + }, + "2022": { + "comparecimento": 8368, + "votosValidos": 7444, + "votosBranco": 236, + "votosNulo": 390 + } + }, + "majoritarian2022": { + "president": { + "votes": 6230, + "comparecimento": 8369, + "votosValidos": 7695, + "votosBranco": 103, + "votosNulo": 571 + }, + "governor": { + "votes": 4228, + "comparecimento": 8368, + "votosValidos": 7477, + "votosBranco": 163, + "votosNulo": 728 + } } }, "teixeira-de-freitas": { @@ -4878,6 +21483,47 @@ "2014": 51870, "2018": 58189, "2022": 70270 + }, + "campoFederalVotesByYear": { + "2014": 14232, + "2018": 12187, + "2022": 10578 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 70468, + "votosValidos": 51870, + "votosBranco": 8356, + "votosNulo": 5197 + }, + "2018": { + "comparecimento": 75249, + "votosValidos": 58189, + "votosBranco": 4502, + "votosNulo": 7785 + }, + "2022": { + "comparecimento": 81693, + "votosValidos": 70270, + "votosBranco": 4749, + "votosNulo": 3389 + } + }, + "majoritarian2022": { + "president": { + "votes": 38327, + "comparecimento": 81993, + "votosValidos": 78522, + "votosBranco": 1052, + "votosNulo": 2419 + }, + "governor": { + "votes": 26827, + "comparecimento": 81693, + "votosValidos": 74403, + "votosBranco": 3070, + "votosNulo": 4211 + } } }, "teodoro-sampaio": { @@ -4890,6 +21536,47 @@ "2014": 0, "2018": 4087, "2022": 4694 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 546, + "2022": 1795 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 4995, + "votosValidos": 4087, + "votosBranco": 171, + "votosNulo": 411 + }, + "2022": { + "comparecimento": 5554, + "votosValidos": 4694, + "votosBranco": 265, + "votosNulo": 298 + } + }, + "majoritarian2022": { + "president": { + "votes": 4580, + "comparecimento": 5554, + "votosValidos": 5285, + "votosBranco": 59, + "votosNulo": 210 + }, + "governor": { + "votes": 3514, + "comparecimento": 5554, + "votosValidos": 5130, + "votosBranco": 110, + "votosNulo": 314 + } } }, "teofilandia": { @@ -4902,6 +21589,47 @@ "2014": 9315, "2018": 9882, "2022": 11964 + }, + "campoFederalVotesByYear": { + "2014": 3701, + "2018": 2753, + "2022": 2306 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12053, + "votosValidos": 9315, + "votosBranco": 850, + "votosNulo": 655 + }, + "2018": { + "comparecimento": 12268, + "votosValidos": 9882, + "votosBranco": 381, + "votosNulo": 1145 + }, + "2022": { + "comparecimento": 13622, + "votosValidos": 11964, + "votosBranco": 474, + "votosNulo": 638 + } + }, + "majoritarian2022": { + "president": { + "votes": 10962, + "comparecimento": 13622, + "votosValidos": 13001, + "votosBranco": 122, + "votosNulo": 499 + }, + "governor": { + "votes": 8327, + "comparecimento": 13622, + "votosValidos": 12503, + "votosBranco": 281, + "votosNulo": 838 + } } }, "teolandia": { @@ -4914,6 +21642,47 @@ "2014": 0, "2018": 6424, "2022": 7875 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1636, + "2022": 732 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 8048, + "votosValidos": 6424, + "votosBranco": 267, + "votosNulo": 619 + }, + "2022": { + "comparecimento": 8981, + "votosValidos": 7875, + "votosBranco": 350, + "votosNulo": 357 + } + }, + "majoritarian2022": { + "president": { + "votes": 6489, + "comparecimento": 8981, + "votosValidos": 8518, + "votosBranco": 100, + "votosNulo": 363 + }, + "governor": { + "votes": 5212, + "comparecimento": 8981, + "votosValidos": 8221, + "votosBranco": 179, + "votosNulo": 581 + } } }, "terra-nova": { @@ -4926,6 +21695,47 @@ "2014": 0, "2018": 6117, "2022": 6743 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1070, + "2022": 1667 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 7851, + "votosValidos": 6117, + "votosBranco": 270, + "votosNulo": 973 + }, + "2022": { + "comparecimento": 8228, + "votosValidos": 6743, + "votosBranco": 494, + "votosNulo": 631 + } + }, + "majoritarian2022": { + "president": { + "votes": 6246, + "comparecimento": 8228, + "votosValidos": 7775, + "votosBranco": 113, + "votosNulo": 340 + }, + "governor": { + "votes": 3912, + "comparecimento": 8228, + "votosValidos": 7456, + "votosBranco": 226, + "votosNulo": 546 + } } }, "tremedal": { @@ -4938,6 +21748,47 @@ "2014": 8413, "2018": 8492, "2022": 10157 + }, + "campoFederalVotesByYear": { + "2014": 2731, + "2018": 1440, + "2022": 2260 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10334, + "votosValidos": 8413, + "votosBranco": 416, + "votosNulo": 313 + }, + "2018": { + "comparecimento": 10271, + "votosValidos": 8492, + "votosBranco": 303, + "votosNulo": 522 + }, + "2022": { + "comparecimento": 11252, + "votosValidos": 10157, + "votosBranco": 286, + "votosNulo": 260 + } + }, + "majoritarian2022": { + "president": { + "votes": 8156, + "comparecimento": 11252, + "votosValidos": 10641, + "votosBranco": 101, + "votosNulo": 510 + }, + "governor": { + "votes": 5058, + "comparecimento": 11252, + "votosValidos": 10393, + "votosBranco": 164, + "votosNulo": 694 + } } }, "tucano": { @@ -4950,6 +21801,47 @@ "2014": 20854, "2018": 21734, "2022": 28950 + }, + "campoFederalVotesByYear": { + "2014": 7817, + "2018": 5938, + "2022": 1067 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 26391, + "votosValidos": 20854, + "votosBranco": 2006, + "votosNulo": 1170 + }, + "2018": { + "comparecimento": 28927, + "votosValidos": 21734, + "votosBranco": 1176, + "votosNulo": 3717 + }, + "2022": { + "comparecimento": 31477, + "votosValidos": 28950, + "votosBranco": 800, + "votosNulo": 780 + } + }, + "majoritarian2022": { + "president": { + "votes": 23420, + "comparecimento": 31478, + "votosValidos": 30103, + "votosBranco": 327, + "votosNulo": 1048 + }, + "governor": { + "votes": 18556, + "comparecimento": 31477, + "votosValidos": 28774, + "votosBranco": 750, + "votosNulo": 1952 + } } }, "uaua": { @@ -4962,6 +21854,47 @@ "2014": 12067, "2018": 9929, "2022": 14910 + }, + "campoFederalVotesByYear": { + "2014": 3948, + "2018": 1633, + "2022": 1779 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 14992, + "votosValidos": 12067, + "votosBranco": 1079, + "votosNulo": 575 + }, + "2018": { + "comparecimento": 15363, + "votosValidos": 9929, + "votosBranco": 682, + "votosNulo": 3761 + }, + "2022": { + "comparecimento": 17109, + "votosValidos": 14910, + "votosBranco": 800, + "votosNulo": 698 + } + }, + "majoritarian2022": { + "president": { + "votes": 13638, + "comparecimento": 17117, + "votosValidos": 16399, + "votosBranco": 174, + "votosNulo": 544 + }, + "governor": { + "votes": 11546, + "comparecimento": 17109, + "votosValidos": 15671, + "votosBranco": 482, + "votosNulo": 955 + } } }, "ubaira": { @@ -4974,6 +21907,47 @@ "2014": 9217, "2018": 9414, "2022": 10877 + }, + "campoFederalVotesByYear": { + "2014": 2803, + "2018": 3777, + "2022": 1750 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 11338, + "votosValidos": 9217, + "votosBranco": 588, + "votosNulo": 406 + }, + "2018": { + "comparecimento": 11817, + "votosValidos": 9414, + "votosBranco": 377, + "votosNulo": 1221 + }, + "2022": { + "comparecimento": 12410, + "votosValidos": 10877, + "votosBranco": 486, + "votosNulo": 579 + } + }, + "majoritarian2022": { + "president": { + "votes": 8187, + "comparecimento": 12410, + "votosValidos": 11701, + "votosBranco": 192, + "votosNulo": 517 + }, + "governor": { + "votes": 6696, + "comparecimento": 12410, + "votosValidos": 11312, + "votosBranco": 286, + "votosNulo": 812 + } } }, "ubaitaba": { @@ -4986,6 +21960,47 @@ "2014": 8064, "2018": 8437, "2022": 9542 + }, + "campoFederalVotesByYear": { + "2014": 2063, + "2018": 3383, + "2022": 2023 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10199, + "votosValidos": 8064, + "votosBranco": 481, + "votosNulo": 555 + }, + "2018": { + "comparecimento": 10378, + "votosValidos": 8437, + "votosBranco": 335, + "votosNulo": 876 + }, + "2022": { + "comparecimento": 10649, + "votosValidos": 9542, + "votosBranco": 318, + "votosNulo": 304 + } + }, + "majoritarian2022": { + "president": { + "votes": 6278, + "comparecimento": 10649, + "votosValidos": 10213, + "votosBranco": 102, + "votosNulo": 334 + }, + "governor": { + "votes": 4535, + "comparecimento": 10649, + "votosValidos": 9841, + "votosBranco": 216, + "votosNulo": 589 + } } }, "ubata": { @@ -4998,6 +22013,47 @@ "2014": 7231, "2018": 7503, "2022": 8235 + }, + "campoFederalVotesByYear": { + "2014": 1205, + "2018": 1945, + "2022": 3007 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9097, + "votosValidos": 7231, + "votosBranco": 552, + "votosNulo": 465 + }, + "2018": { + "comparecimento": 9195, + "votosValidos": 7503, + "votosBranco": 280, + "votosNulo": 769 + }, + "2022": { + "comparecimento": 9279, + "votosValidos": 8235, + "votosBranco": 363, + "votosNulo": 306 + } + }, + "majoritarian2022": { + "president": { + "votes": 5618, + "comparecimento": 9279, + "votosValidos": 8825, + "votosBranco": 112, + "votosNulo": 342 + }, + "governor": { + "votes": 4104, + "comparecimento": 9279, + "votosValidos": 8622, + "votosBranco": 146, + "votosNulo": 511 + } } }, "uibai": { @@ -5010,6 +22066,47 @@ "2014": 6833, "2018": 7558, "2022": 8714 + }, + "campoFederalVotesByYear": { + "2014": 5930, + "2018": 3231, + "2022": 2706 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8284, + "votosValidos": 6833, + "votosBranco": 436, + "votosNulo": 396 + }, + "2018": { + "comparecimento": 8889, + "votosValidos": 7558, + "votosBranco": 306, + "votosNulo": 398 + }, + "2022": { + "comparecimento": 9766, + "votosValidos": 8714, + "votosBranco": 364, + "votosNulo": 270 + } + }, + "majoritarian2022": { + "president": { + "votes": 7339, + "comparecimento": 9766, + "votosValidos": 9349, + "votosBranco": 105, + "votosNulo": 312 + }, + "governor": { + "votes": 5897, + "comparecimento": 9766, + "votosValidos": 9011, + "votosBranco": 242, + "votosNulo": 511 + } } }, "umburanas": { @@ -5022,6 +22119,47 @@ "2014": 6569, "2018": 6318, "2022": 8093 + }, + "campoFederalVotesByYear": { + "2014": 1081, + "2018": 2063, + "2022": 2351 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7433, + "votosValidos": 6569, + "votosBranco": 193, + "votosNulo": 152 + }, + "2018": { + "comparecimento": 8230, + "votosValidos": 6318, + "votosBranco": 227, + "votosNulo": 997 + }, + "2022": { + "comparecimento": 8918, + "votosValidos": 8093, + "votosBranco": 260, + "votosNulo": 212 + } + }, + "majoritarian2022": { + "president": { + "votes": 5932, + "comparecimento": 8918, + "votosValidos": 8478, + "votosBranco": 98, + "votosNulo": 342 + }, + "governor": { + "votes": 4253, + "comparecimento": 8918, + "votosValidos": 8253, + "votosBranco": 159, + "votosNulo": 506 + } } }, "una": { @@ -5034,6 +22172,47 @@ "2014": 8061, "2018": 8877, "2022": 10688 + }, + "campoFederalVotesByYear": { + "2014": 3078, + "2018": 2141, + "2022": 1529 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 10355, + "votosValidos": 8061, + "votosBranco": 630, + "votosNulo": 500 + }, + "2018": { + "comparecimento": 11363, + "votosValidos": 8877, + "votosBranco": 379, + "votosNulo": 1041 + }, + "2022": { + "comparecimento": 11870, + "votosValidos": 10688, + "votosBranco": 331, + "votosNulo": 341 + } + }, + "majoritarian2022": { + "president": { + "votes": 6485, + "comparecimento": 11870, + "votosValidos": 11225, + "votosBranco": 152, + "votosNulo": 493 + }, + "governor": { + "votes": 3632, + "comparecimento": 11870, + "votosValidos": 10857, + "votosBranco": 243, + "votosNulo": 769 + } } }, "urandi": { @@ -5046,6 +22225,47 @@ "2014": 7057, "2018": 7623, "2022": 9357 + }, + "campoFederalVotesByYear": { + "2014": 939, + "2018": 1597, + "2022": 970 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 8890, + "votosValidos": 7057, + "votosBranco": 711, + "votosNulo": 273 + }, + "2018": { + "comparecimento": 9306, + "votosValidos": 7623, + "votosBranco": 375, + "votosNulo": 543 + }, + "2022": { + "comparecimento": 10225, + "votosValidos": 9357, + "votosBranco": 357, + "votosNulo": 189 + } + }, + "majoritarian2022": { + "president": { + "votes": 7707, + "comparecimento": 10226, + "votosValidos": 9742, + "votosBranco": 141, + "votosNulo": 343 + }, + "governor": { + "votes": 7083, + "comparecimento": 10225, + "votosValidos": 9357, + "votosBranco": 294, + "votosNulo": 574 + } } }, "urucuca": { @@ -5058,6 +22278,47 @@ "2014": 10455, "2018": 10005, "2022": 12307 + }, + "campoFederalVotesByYear": { + "2014": 4266, + "2018": 4104, + "2022": 2950 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 12641, + "votosValidos": 10455, + "votosBranco": 490, + "votosNulo": 501 + }, + "2018": { + "comparecimento": 12412, + "votosValidos": 10005, + "votosBranco": 361, + "votosNulo": 938 + }, + "2022": { + "comparecimento": 13818, + "votosValidos": 12307, + "votosBranco": 377, + "votosNulo": 450 + } + }, + "majoritarian2022": { + "president": { + "votes": 7916, + "comparecimento": 13818, + "votosValidos": 13175, + "votosBranco": 132, + "votosNulo": 511 + }, + "governor": { + "votes": 5590, + "comparecimento": 13818, + "votosValidos": 12792, + "votosBranco": 232, + "votosNulo": 792 + } } }, "utinga": { @@ -5070,6 +22331,47 @@ "2014": 7553, "2018": 7570, "2022": 8685 + }, + "campoFederalVotesByYear": { + "2014": 1195, + "2018": 4311, + "2022": 912 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 9032, + "votosValidos": 7553, + "votosBranco": 390, + "votosNulo": 312 + }, + "2018": { + "comparecimento": 9319, + "votosValidos": 7570, + "votosBranco": 377, + "votosNulo": 796 + }, + "2022": { + "comparecimento": 9777, + "votosValidos": 8685, + "votosBranco": 329, + "votosNulo": 388 + } + }, + "majoritarian2022": { + "president": { + "votes": 7225, + "comparecimento": 9777, + "votosValidos": 9341, + "votosBranco": 75, + "votosNulo": 361 + }, + "governor": { + "votes": 3880, + "comparecimento": 9777, + "votosValidos": 8941, + "votosBranco": 192, + "votosNulo": 643 + } } }, "valenca": { @@ -5082,6 +22384,47 @@ "2014": 31793, "2018": 38277, "2022": 41788 + }, + "campoFederalVotesByYear": { + "2014": 12069, + "2018": 4986, + "2022": 5822 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 45804, + "votosValidos": 31793, + "votosBranco": 4858, + "votosNulo": 4746 + }, + "2018": { + "comparecimento": 50703, + "votosValidos": 38277, + "votosBranco": 2423, + "votosNulo": 6739 + }, + "2022": { + "comparecimento": 51386, + "votosValidos": 41788, + "votosBranco": 3473, + "votosNulo": 3648 + } + }, + "majoritarian2022": { + "president": { + "votes": 31207, + "comparecimento": 51388, + "votosValidos": 47726, + "votosBranco": 1100, + "votosNulo": 2562 + }, + "governor": { + "votes": 18529, + "comparecimento": 51386, + "votosValidos": 45893, + "votosBranco": 1858, + "votosNulo": 3632 + } } }, "valente": { @@ -5094,6 +22437,47 @@ "2014": 12220, "2018": 13055, "2022": 14249 + }, + "campoFederalVotesByYear": { + "2014": 5490, + "2018": 2491, + "2022": 4330 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 14921, + "votosValidos": 12220, + "votosBranco": 813, + "votosNulo": 731 + }, + "2018": { + "comparecimento": 15700, + "votosValidos": 13055, + "votosBranco": 437, + "votosNulo": 1446 + }, + "2022": { + "comparecimento": 16434, + "votosValidos": 14249, + "votosBranco": 772, + "votosNulo": 877 + } + }, + "majoritarian2022": { + "president": { + "votes": 9990, + "comparecimento": 16434, + "votosValidos": 15498, + "votosBranco": 299, + "votosNulo": 637 + }, + "governor": { + "votes": 6850, + "comparecimento": 16434, + "votosValidos": 15093, + "votosBranco": 432, + "votosNulo": 909 + } } }, "varzea-da-roca": { @@ -5106,6 +22490,47 @@ "2014": 5978, "2018": 6210, "2022": 7188 + }, + "campoFederalVotesByYear": { + "2014": 2473, + "2018": 2919, + "2022": 3745 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7570, + "votosValidos": 5978, + "votosBranco": 581, + "votosNulo": 325 + }, + "2018": { + "comparecimento": 7871, + "votosValidos": 6210, + "votosBranco": 398, + "votosNulo": 686 + }, + "2022": { + "comparecimento": 8396, + "votosValidos": 7188, + "votosBranco": 432, + "votosNulo": 372 + } + }, + "majoritarian2022": { + "president": { + "votes": 5830, + "comparecimento": 8396, + "votosValidos": 7702, + "votosBranco": 204, + "votosNulo": 490 + }, + "governor": { + "votes": 4893, + "comparecimento": 8396, + "votosValidos": 7413, + "votosBranco": 290, + "votosNulo": 692 + } } }, "varzea-do-poco": { @@ -5118,6 +22543,47 @@ "2014": 0, "2018": 3828, "2022": 4763 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 1976, + "2022": 2390 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 4799, + "votosValidos": 3828, + "votosBranco": 193, + "votosNulo": 456 + }, + "2022": { + "comparecimento": 5401, + "votosValidos": 4763, + "votosBranco": 202, + "votosNulo": 207 + } + }, + "majoritarian2022": { + "president": { + "votes": 3717, + "comparecimento": 5402, + "votosValidos": 5155, + "votosBranco": 66, + "votosNulo": 181 + }, + "governor": { + "votes": 2810, + "comparecimento": 5401, + "votosValidos": 4961, + "votosBranco": 126, + "votosNulo": 314 + } } }, "varzea-nova": { @@ -5130,6 +22596,47 @@ "2014": 4959, "2018": 5206, "2022": 7019 + }, + "campoFederalVotesByYear": { + "2014": 1954, + "2018": 1581, + "2022": 2808 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6287, + "votosValidos": 4959, + "votosBranco": 370, + "votosNulo": 294 + }, + "2018": { + "comparecimento": 6784, + "votosValidos": 5206, + "votosBranco": 328, + "votosNulo": 612 + }, + "2022": { + "comparecimento": 8070, + "votosValidos": 7019, + "votosBranco": 301, + "votosNulo": 369 + } + }, + "majoritarian2022": { + "president": { + "votes": 5571, + "comparecimento": 8070, + "votosValidos": 7617, + "votosBranco": 105, + "votosNulo": 348 + }, + "governor": { + "votes": 3808, + "comparecimento": 8070, + "votosValidos": 7379, + "votosBranco": 168, + "votosNulo": 523 + } } }, "varzedo": { @@ -5142,6 +22649,47 @@ "2014": 5028, "2018": 5398, "2022": 6635 + }, + "campoFederalVotesByYear": { + "2014": 2601, + "2018": 1640, + "2022": 338 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 6010, + "votosValidos": 5028, + "votosBranco": 240, + "votosNulo": 201 + }, + "2018": { + "comparecimento": 6493, + "votosValidos": 5398, + "votosBranco": 126, + "votosNulo": 521 + }, + "2022": { + "comparecimento": 7219, + "votosValidos": 6635, + "votosBranco": 181, + "votosNulo": 223 + } + }, + "majoritarian2022": { + "president": { + "votes": 5045, + "comparecimento": 7219, + "votosValidos": 6952, + "votosBranco": 58, + "votosNulo": 209 + }, + "governor": { + "votes": 3499, + "comparecimento": 7219, + "votosValidos": 6781, + "votosBranco": 90, + "votosNulo": 348 + } } }, "vera-cruz": { @@ -5154,6 +22702,47 @@ "2014": 16295, "2018": 20100, "2022": 22951 + }, + "campoFederalVotesByYear": { + "2014": 5872, + "2018": 6863, + "2022": 5358 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 22233, + "votosValidos": 16295, + "votosBranco": 1923, + "votosNulo": 2277 + }, + "2018": { + "comparecimento": 25279, + "votosValidos": 20100, + "votosBranco": 1076, + "votosNulo": 2441 + }, + "2022": { + "comparecimento": 26973, + "votosValidos": 22951, + "votosBranco": 1609, + "votosNulo": 1285 + } + }, + "majoritarian2022": { + "president": { + "votes": 19474, + "comparecimento": 26973, + "votosValidos": 25764, + "votosBranco": 412, + "votosNulo": 797 + }, + "governor": { + "votes": 12428, + "comparecimento": 26973, + "votosValidos": 25175, + "votosBranco": 674, + "votosNulo": 1123 + } } }, "vereda": { @@ -5166,6 +22755,47 @@ "2014": 3698, "2018": 3852, "2022": 4585 + }, + "campoFederalVotesByYear": { + "2014": 974, + "2018": 457, + "2022": 1335 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4405, + "votosValidos": 3698, + "votosBranco": 146, + "votosNulo": 113 + }, + "2018": { + "comparecimento": 4376, + "votosValidos": 3852, + "votosBranco": 82, + "votosNulo": 132 + }, + "2022": { + "comparecimento": 4987, + "votosValidos": 4585, + "votosBranco": 109, + "votosNulo": 70 + } + }, + "majoritarian2022": { + "president": { + "votes": 3198, + "comparecimento": 4987, + "votosValidos": 4776, + "votosBranco": 43, + "votosNulo": 168 + }, + "governor": { + "votes": 2977, + "comparecimento": 4987, + "votosValidos": 4687, + "votosBranco": 62, + "votosNulo": 238 + } } }, "vitoria-da-conquista": { @@ -5178,6 +22808,47 @@ "2014": 138841, "2018": 146430, "2022": 178574 + }, + "campoFederalVotesByYear": { + "2014": 55460, + "2018": 51948, + "2022": 67512 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 177366, + "votosValidos": 138841, + "votosBranco": 14985, + "votosNulo": 9919 + }, + "2018": { + "comparecimento": 189787, + "votosValidos": 146430, + "votosBranco": 9818, + "votosNulo": 22509 + }, + "2022": { + "comparecimento": 211323, + "votosValidos": 178574, + "votosBranco": 13509, + "votosNulo": 10633 + } + }, + "majoritarian2022": { + "president": { + "votes": 111892, + "comparecimento": 211850, + "votosValidos": 201970, + "votosBranco": 2996, + "votosNulo": 6884 + }, + "governor": { + "votes": 74023, + "comparecimento": 211323, + "votosValidos": 195010, + "votosBranco": 5784, + "votosNulo": 10502 + } } }, "wagner": { @@ -5190,6 +22861,47 @@ "2014": 4036, "2018": 3943, "2022": 4718 + }, + "campoFederalVotesByYear": { + "2014": 309, + "2018": 2257, + "2022": 2053 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 4691, + "votosValidos": 4036, + "votosBranco": 176, + "votosNulo": 115 + }, + "2018": { + "comparecimento": 4947, + "votosValidos": 3943, + "votosBranco": 162, + "votosNulo": 413 + }, + "2022": { + "comparecimento": 5318, + "votosValidos": 4718, + "votosBranco": 209, + "votosNulo": 176 + } + }, + "majoritarian2022": { + "president": { + "votes": 3884, + "comparecimento": 5318, + "votosValidos": 5062, + "votosBranco": 58, + "votosNulo": 198 + }, + "governor": { + "votes": 2903, + "comparecimento": 5318, + "votosValidos": 4921, + "votosBranco": 105, + "votosNulo": 292 + } } }, "wanderley": { @@ -5202,6 +22914,47 @@ "2014": 5733, "2018": 5858, "2022": 7922 + }, + "campoFederalVotesByYear": { + "2014": 1019, + "2018": 646, + "2022": 561 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 7348, + "votosValidos": 5733, + "votosBranco": 339, + "votosNulo": 526 + }, + "2018": { + "comparecimento": 7801, + "votosValidos": 5858, + "votosBranco": 166, + "votosNulo": 252 + }, + "2022": { + "comparecimento": 8461, + "votosValidos": 7922, + "votosBranco": 152, + "votosNulo": 130 + } + }, + "majoritarian2022": { + "president": { + "votes": 5814, + "comparecimento": 8461, + "votosValidos": 8232, + "votosBranco": 64, + "votosNulo": 165 + }, + "governor": { + "votes": 5451, + "comparecimento": 8461, + "votosValidos": 7998, + "votosBranco": 125, + "votosNulo": 338 + } } }, "wenceslau-guimaraes": { @@ -5214,6 +22967,47 @@ "2014": 0, "2018": 9848, "2022": 11628 + }, + "campoFederalVotesByYear": { + "2014": 0, + "2018": 3088, + "2022": 1996 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 0, + "votosValidos": 0, + "votosBranco": 0, + "votosNulo": 0 + }, + "2018": { + "comparecimento": 11860, + "votosValidos": 9848, + "votosBranco": 307, + "votosNulo": 611 + }, + "2022": { + "comparecimento": 12655, + "votosValidos": 11628, + "votosBranco": 281, + "votosNulo": 245 + } + }, + "majoritarian2022": { + "president": { + "votes": 8412, + "comparecimento": 12656, + "votosValidos": 12100, + "votosBranco": 133, + "votosNulo": 423 + }, + "governor": { + "votes": 5504, + "comparecimento": 12655, + "votosValidos": 11859, + "votosBranco": 168, + "votosNulo": 628 + } } }, "xique-xique": { @@ -5226,6 +23020,47 @@ "2014": 18120, "2018": 20629, "2022": 23857 + }, + "campoFederalVotesByYear": { + "2014": 2941, + "2018": 2354, + "2022": 6359 + }, + "federalTallyByYear": { + "2014": { + "comparecimento": 24018, + "votosValidos": 18120, + "votosBranco": 856, + "votosNulo": 2976 + }, + "2018": { + "comparecimento": 25089, + "votosValidos": 20629, + "votosBranco": 786, + "votosNulo": 1486 + }, + "2022": { + "comparecimento": 26973, + "votosValidos": 23857, + "votosBranco": 1086, + "votosNulo": 699 + } + }, + "majoritarian2022": { + "president": { + "votes": 19828, + "comparecimento": 26975, + "votosValidos": 25741, + "votosBranco": 248, + "votosNulo": 986 + }, + "governor": { + "votes": 13498, + "comparecimento": 26973, + "votosValidos": 25148, + "votosBranco": 440, + "votosNulo": 1385 + } } } } diff --git a/src/lib/electionResults.ts b/src/lib/electionResults.ts index bcac89e7..1e9115cb 100644 --- a/src/lib/electionResults.ts +++ b/src/lib/electionResults.ts @@ -138,7 +138,8 @@ const bahiaMunicipalityByKey = new Map( /** * Known TSE NM_MUNICIPIO spellings that diverge from the SEPLAN/SECULT canonical - * names in bahiaTerritories (2022 open-data files). Keys are normalizeMunicipalityKey outputs. + * names in bahiaTerritories (seen across 2014/2018/2022 open-data files). Keys + * are normalizeMunicipalityKey outputs. */ const TSE_MUNICIPALITY_ALIASES: Readonly> = { // TSE: CAMACÃ → canonical Camacan @@ -149,6 +150,8 @@ const TSE_MUNICIPALITY_ALIASES: Readonly> = { 'MUQUEM DO SAO FRANCISCO': 'Muquém de São Francisco', // TSE: SANTA TEREZINHA → Santa Teresinha 'SANTA TEREZINHA': 'Santa Teresinha', + // TSE 2018 votacao_candidato_munzona: QUINJINGUE (typo) → canonical Quijingue + QUINJINGUE: 'Quijingue', } for (const [aliasKey, canonical] of Object.entries(TSE_MUNICIPALITY_ALIASES)) { diff --git a/src/lib/electionResultsBuild.ts b/src/lib/electionResultsBuild.ts index 47801fba..69260bd0 100644 --- a/src/lib/electionResultsBuild.ts +++ b/src/lib/electionResultsBuild.ts @@ -13,6 +13,8 @@ import { import { applyStateVoteTotals, dedupeCandidates, + mergeDuplicateTallyRows, + mergeDuplicateVoteRows, parseCandidateVoteRow, parseConsultaCandRow, parseDetalheApuracaoRow, @@ -21,6 +23,17 @@ import { const ALL_OFFICES = new Set(ELECTION_OFFICES) export const FEDERAL_ONLY_OFFICES = new Set([FEDERAL_DEPUTY_OFFICE]) +/** + * Historical seed scope (2014/2018): federal deputy (E2 trend series) plus + * presidente/governador (E8 majoritarian baseline — same rationale as the + * 2022 full-ticket import, just for the two prior cycles). Excludes + * deputado_estadual: no consumer needs the state-assembly race historically. + */ +export const HISTORICAL_BASELINE_OFFICES = new Set([ + FEDERAL_DEPUTY_OFFICE, + 'presidente', + 'governador', +]) const STATE_OFFICES = new Set([ 'governador', 'deputado_federal', @@ -78,11 +91,16 @@ export const buildElectionResultsFromCsvRows = (args: { offices.has('deputado_estadual') const unknownMunicipalities = new Set() - const votes = collectParsed(args.voteRows, year, unknownMunicipalities, (row) => - parseCandidateVoteRow(row, { stateFilter: 'BA', offices }), + // Dedupe TSE's "voto em trânsito" split rows — see mergeDuplicateVoteRows's doc. + const votes = mergeDuplicateVoteRows( + collectParsed(args.voteRows, year, unknownMunicipalities, (row) => + parseCandidateVoteRow(row, { stateFilter: 'BA', offices }), + ), ) - const tallies = collectParsed(args.tallyRows, year, unknownMunicipalities, (row) => - parseDetalheApuracaoRow(row, { stateFilter: 'BA', offices }), + const tallies = mergeDuplicateTallyRows( + collectParsed(args.tallyRows, year, unknownMunicipalities, (row) => + parseDetalheApuracaoRow(row, { stateFilter: 'BA', offices }), + ), ) const candidatesRaw: ElectionCandidateRow[] = [] diff --git a/src/lib/electionResultsParse.ts b/src/lib/electionResultsParse.ts index ce171761..fe099d71 100644 --- a/src/lib/electionResultsParse.ts +++ b/src/lib/electionResultsParse.ts @@ -15,6 +15,70 @@ import { } from '@/lib/electionResults' import { computeIdentityKey } from '@/lib/electionCandidateIdentity' +/** + * Merges rows sharing the same `keyFn` key via `combine`, preserving first-seen + * order. Shared by `mergeDuplicateVoteRows`/`mergeDuplicateTallyRows` below — + * both fold TSE's "voto em trânsito" split rows (see their docs) and differ + * only in the key and how colliding rows combine. + */ +const mergeByKey = ( + rows: readonly T[], + keyFn: (row: T) => string, + combine: (existing: T, row: T) => T, +): T[] => { + const merged = new Map() + for (const row of rows) { + const key = keyFn(row) + const existing = merged.get(key) + merged.set(key, existing ? combine(existing, row) : row) + } + return [...merged.values()] +} + +const voteRowKey = (row: CandidateVoteRow): string => + `${row.year}|${row.office}|${row.turn}|${row.state}|${row.cityCode}|${row.zoneNumber}|${row.candidateNumber}|${row.voteType}` + +/** + * TSE's presidente data (the only office open to "voto em trânsito" — voting + * away from your registered zone, national ballot only) records the trânsito + * ballots as a SEPARATE row sharing the same (year, office, turn, state, + * cityCode, zoneNumber, candidateNumber, voteType) key as the regular row — + * colliding with `ElectionCandidateVote`'s unique index, which doesn't track + * the untracked ST_VOTO_EM_TRANSITO flag. Both rows are additive (distinct + * electorates, same candidate/zone), so sum `votes` instead of dropping + * either. Observed in a handful of 2014 BA zones; absent in 2018/2022 — a + * no-op when there is nothing to merge. + */ +export const mergeDuplicateVoteRows = (rows: readonly CandidateVoteRow[]): CandidateVoteRow[] => + mergeByKey(rows, voteRowKey, (existing, row) => ({ ...existing, votes: existing.votes + row.votes })) + +const tallyRowKey = (row: TseDetalheApuracaoRow): string => + `${row.year}|${row.office}|${row.turn}|${row.state}|${row.cityCode}|${row.zoneNumber}` + +const SUMMABLE_TALLY_FIELDS = [ + 'aptos', + 'comparecimento', + 'abstencoes', + 'votosValidos', + 'votosNominaisValidos', + 'votosLegenda', + 'votosBranco', + 'votosNulo', + 'votosAnulados', +] as const satisfies ReadonlyArray + +/** Same trânsito-split merge as `mergeDuplicateVoteRows`, for tally rows (sums every count field). */ +export const mergeDuplicateTallyRows = ( + rows: readonly TseDetalheApuracaoRow[], +): TseDetalheApuracaoRow[] => + mergeByKey(rows, tallyRowKey, (existing, row) => { + const summed = { ...existing } + for (const field of SUMMABLE_TALLY_FIELDS) { + summed[field] = existing[field] + row[field] + } + return summed + }) + export type TseCsvRow = Record const cell = (row: TseCsvRow, key: string): string => row[key] ?? '' diff --git a/src/migrations/20260724_180000_add_campaign_goals_global.ts b/src/migrations/20260724_180000_add_campaign_goals_global.ts new file mode 100644 index 00000000..8f87bd3e --- /dev/null +++ b/src/migrations/20260724_180000_add_campaign_goals_global.ts @@ -0,0 +1,38 @@ +import { MigrateDownArgs, MigrateUpArgs, sql } from '@payloadcms/db-postgres' + +/** + * Adds the `campaignGoals` global (E8 "conta da cadeira" — state-level vote + * goal + margin used to decompose a per-municipality suggested goal). + * + * Hand-written rather than `migrate:create`-generated: the committed snapshot + * chain has no `.json` for the last several migrations (2026-07-23/24 — + * `add_vote_estimate_scenarios`, `remodel_municipalities`, + * `add_state_deputy`, `reconcile_municipality_remodel`, + * `drop_municipality_vote_goals`, `contact_phone_optional` all shipped + * hand-written SQL without regenerating the drizzle-kit snapshot), so the + * schema differ has no accurate "before" state for `municipality`/`contact` + * and asks to disambiguate unrelated historical renames. This migration only + * adds a brand-new table, so it's written directly following the pattern of + * `20260719_054706_add_privacy_policy_global` (idempotent guard is + * unnecessary — Payload never lets two migrations with the same name run + * twice, and the table cannot already exist). + */ +export async function up({ db }: MigrateUpArgs): Promise { + await db.execute(sql` + CREATE TABLE "campaign_goals" ( + "id" serial PRIMARY KEY NOT NULL, + "state_goal" numeric NOT NULL, + "margin" numeric, + "base_year" numeric, + "note" varchar, + "updated_at" timestamp(3) with time zone, + "created_at" timestamp(3) with time zone + ); + `) +} + +export async function down({ db }: MigrateDownArgs): Promise { + await db.execute(sql` + DROP TABLE "campaign_goals" CASCADE; + `) +} diff --git a/src/migrations/index.ts b/src/migrations/index.ts index af8ba9ae..f5993e48 100644 --- a/src/migrations/index.ts +++ b/src/migrations/index.ts @@ -26,6 +26,7 @@ import * as migration_20260723_202000_reconcile_municipality_remodel from './202 import * as migration_20260724_133600_drop_municipality_vote_goals from './20260724_133600_drop_municipality_vote_goals' import * as migration_20260724_175500_contact_phone_optional from './20260724_175500_contact_phone_optional' import * as migration_20260724_180000_add_campaign_foundation_records from './20260724_180000_add_campaign_foundation_records' +import * as migration_20260724_180000_add_campaign_goals_global from './20260724_180000_add_campaign_goals_global' export const migrations = [ { @@ -168,4 +169,9 @@ export const migrations = [ down: migration_20260724_180000_add_campaign_foundation_records.down, name: '20260724_180000_add_campaign_foundation_records', }, + { + up: migration_20260724_180000_add_campaign_goals_global.up, + down: migration_20260724_180000_add_campaign_goals_global.down, + name: '20260724_180000_add_campaign_goals_global', + }, ] diff --git a/src/payload-types.ts b/src/payload-types.ts index 3e189006..e49b1a0e 100644 --- a/src/payload-types.ts +++ b/src/payload-types.ts @@ -145,12 +145,14 @@ export interface Config { home: Home; metadata: Metadatum; 'privacy-policy': PrivacyPolicy; + campaignGoals: CampaignGoal; }; globalsSelect: { 'site-settings': SiteSettingsSelect | SiteSettingsSelect; home: HomeSelect | HomeSelect; metadata: MetadataSelect | MetadataSelect; 'privacy-policy': PrivacyPolicySelect | PrivacyPolicySelect; + campaignGoals: CampaignGoalsSelect | CampaignGoalsSelect; }; locale: null; widgets: { @@ -2043,6 +2045,31 @@ export interface PrivacyPolicy { updatedAt?: string | null; createdAt?: string | null; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "campaignGoals". + */ +export interface CampaignGoal { + id: number; + /** + * Piso decidido pela coordenação geral. A meta por município (E8) é decomposta proporcionalmente ao teto do campo projetado a partir deste valor. + */ + stateGoal: number; + /** + * Margem de segurança sobre a meta estadual, para leitura da mesa (não altera a decomposição). + */ + margin?: number | null; + /** + * Ano-base considerado pela coordenação ao fixar a meta estadual (contexto, não usado em cálculo). + */ + baseYear?: number | null; + /** + * Contexto livre sobre a decisão da meta (ex.: data e instância que decidiu). + */ + note?: string | null; + updatedAt?: string | null; + createdAt?: string | null; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "site-settings_select". @@ -2115,6 +2142,19 @@ export interface PrivacyPolicySelect { createdAt?: T; globalType?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "campaignGoals_select". + */ +export interface CampaignGoalsSelect { + stateGoal?: T; + margin?: T; + baseYear?: T; + note?: T; + updatedAt?: T; + createdAt?: T; + globalType?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "collections_widget". diff --git a/src/payload.config.ts b/src/payload.config.ts index f853f2cd..dc48d9b2 100644 --- a/src/payload.config.ts +++ b/src/payload.config.ts @@ -34,6 +34,7 @@ import { SupporterImportBatch } from './collections/SupporterImportBatch' import { Tag } from './collections/Tag' import { Users } from './collections/Users' import { VotePledge } from './collections/VotePledge' +import { CampaignGoals } from './globals/CampaignGoals' import { HomePage } from './globals/HomePage' import { Metadata } from './globals/Metadata' import { PrivacyPolicy } from './globals/PrivacyPolicy' @@ -108,7 +109,7 @@ export default buildConfig({ Post, Tag, ], - globals: [SiteSettings, HomePage, Metadata, PrivacyPolicy], + globals: [SiteSettings, HomePage, Metadata, PrivacyPolicy, CampaignGoals], editor: lexicalEditor(), secret: process.env.PAYLOAD_SECRET || '', typescript: { diff --git a/src/utilities/campaignDashboardData.ts b/src/utilities/campaignDashboardData.ts index 58937e13..da9b933a 100644 --- a/src/utilities/campaignDashboardData.ts +++ b/src/utilities/campaignDashboardData.ts @@ -2,6 +2,8 @@ import type { Payload } from 'payload' import type { CampaignUser, VotePledge } from '@/payload-types' import { loadMunicipalityScope } from '@/utilities/campaignMunicipalityScope' +import type { MunicipalityGoalCoverage } from '@/utilities/goalCoverage' +import { loadMunicipalityGoalCoverageBundle } from '@/utilities/municipalityGoalAccount' import { relationshipId, requireRelationshipId } from '@/utilities/relationship' import type { VoteEstimateScenario } from '@/utilities/voteEstimate' import { rollupMunicipalityStaffVotes } from '@/utilities/votePledgeData' @@ -16,6 +18,8 @@ export type StaffDashboardView = { declaredVotesTotal: number pledgeCount: number missingEstimateCount: number + /** E8 "conta da cadeira" — meta × comprometido, cenário central (dashboard não tem seletor de cenário). */ + goalCoverage: MunicipalityGoalCoverage missingEstimates: Array<{ pledgeID: number municipalityName: string @@ -108,6 +112,13 @@ export const getCampaignDashboardData = async ( const rollup = rollupMunicipalityStaffVotes(municipalities.docs, pledgeAggregates) const { staffVoteTotalByScenario, declaredVotesTotal, pledgeCount, missingEstimateCount } = rollup + const goalCoverageBundle = await loadMunicipalityGoalCoverageBundle( + payload, + user, + municipalities.docs, + pledgeAggregates, + ) + const leadershipIDs = [ ...new Set( missingEstimatePledges.docs.map((pledge) => requireRelationshipId(pledge.leadership)), @@ -141,6 +152,7 @@ export const getCampaignDashboardData = async ( declaredVotesTotal, pledgeCount, missingEstimateCount, + goalCoverage: goalCoverageBundle.aggregateByScenario.central, missingEstimates: missingEstimatePledges.docs.map((pledge) => { const municipality = municipalityById.get(requireRelationshipId(pledge.municipality)) const leadership = leadershipsById.get(requireRelationshipId(pledge.leadership)) diff --git a/src/utilities/campaignGoals.ts b/src/utilities/campaignGoals.ts new file mode 100644 index 00000000..f05caf3e --- /dev/null +++ b/src/utilities/campaignGoals.ts @@ -0,0 +1,37 @@ +import 'server-only' + +import { cache } from 'react' + +import type { Payload } from 'payload' + +import type { CampaignGoal, CampaignUser, User } from '@/payload-types' + +type CampaignGoalsReader = CampaignUser | User + +/** + * Request-scoped read of the `campaignGoals` global (E8 "conta da cadeira" — + * state-level vote goal + margin, decomposed into a per-municipality + * suggested goal by `municipalityPotential.ts`). Degrau 1 da caching ladder + * (React `cache()` per-request dedup): the global changes rarely and every + * page that shows coverage needs the same value once per request. + * + * No `unstable_cache`/tag layer on top: `/campanha` is dynamic with + * per-request auth, so a cross-request cache would need its own + * invalidation path for no read-latency benefit (see the global's own + * comment on why it skips the `revalidateGlobal` hook). + * + * Access is enforced explicitly (not delegated to `payload.findGlobal`'s + * default admin bypass): pass `user` + `overrideAccess: false` so leaders and + * unauthenticated CLI-less callers hit the global's own `access.read` and get + * denied, matching the Local API security pattern used everywhere else in + * this codebase. + */ +export const loadCampaignGoals = cache( + async (payload: Payload, user: CampaignGoalsReader): Promise => + payload.findGlobal({ + slug: 'campaignGoals', + depth: 0, + user, + overrideAccess: false, + }), +) diff --git a/src/utilities/goalCoverage.ts b/src/utilities/goalCoverage.ts new file mode 100644 index 00000000..cfecca68 --- /dev/null +++ b/src/utilities/goalCoverage.ts @@ -0,0 +1,136 @@ +import { formatElectionNumber } from '@/lib/electionInsights' +import type { MunicipalityPledgeAggregate } from '@/utilities/votePledgeData' +import { + getVoteEstimateForScenario, + VOTE_ESTIMATE_SCENARIOS, + type VoteEstimateScenario, + type VoteEstimateScenarioFields, +} from '@/utilities/voteEstimate' + +/** + * E8 "conta da cadeira" — coverage of the goal by auditable pledges. + * + * Semantics locked this session (see the E8 plan's audit finding #2): + * - **meta** = `expectedVotes[cenário] ?? suggestedGoal` — the mesa's own + * expectation when set (`Municipality.expectedVotes`), falling back to the + * goal decomposed from the state goal (`municipalityPotential.ts`). + * - **comprometido** = `aggregate.effectiveByScenario[cenário]` — the pledge + * aggregate ONLY (`estimated[S] ?? declared`, summed over `votePledge` + * rows). It is deliberately **not** `resolveMunicipalityStaffVoteTotal`, + * which lets `expectedVotes` override the pledge sum — using that here + * would report 100% coverage everywhere the projection-sheet import (E4R) + * set an expectation without a single pledge behind it. + * + * Coverage answers "how much of what the mesa expects is backed by an + * auditable commitment", not "did the mesa fill in a number". + */ +export type MunicipalityGoalCoverage = { + goal: number + committed: number + /** committed / goal, or null when goal is zero/negative (avoids a misleading Infinity/NaN). */ + coverageRatio: number | null + /** goal − committed; negative means the municipality is over-committed relative to its goal. */ + deficit: number +} + +/** Read-only zero coverage — never mutate; use for view models outside the staff scope. */ +const emptyMunicipalityGoalCoverage: Readonly = { + goal: 0, + committed: 0, + coverageRatio: null, + deficit: 0, +} + +/** All three scenarios pointing at the same zero coverage (never mutate). */ +export const createEmptyGoalCoverageByScenario = (): Record< + VoteEstimateScenario, + MunicipalityGoalCoverage +> => { + const byScenario = {} as Record + for (const scenario of VOTE_ESTIMATE_SCENARIOS) byScenario[scenario] = emptyMunicipalityGoalCoverage + return byScenario +} + +/** Coverage for one municipality, one scenario. */ +export const computeGoalCoverage = ( + expectedVotes: VoteEstimateScenarioFields | null | undefined, + suggestedGoal: number, + pledgeAggregate: MunicipalityPledgeAggregate, + scenario: VoteEstimateScenario, +): MunicipalityGoalCoverage => { + const goal = getVoteEstimateForScenario(expectedVotes, scenario) ?? suggestedGoal + const committed = pledgeAggregate.effectiveByScenario[scenario] + const coverageRatio = goal > 0 ? committed / goal : null + const deficit = goal - committed + return { goal, committed, coverageRatio, deficit } +} + +/** Coverage for one municipality, all three scenarios (mirrors `staffVoteTotalByScenario`). */ +export const computeGoalCoverageByScenario = ( + expectedVotes: VoteEstimateScenarioFields | null | undefined, + suggestedGoal: number, + pledgeAggregate: MunicipalityPledgeAggregate, +): Record => { + const coverageByScenario = {} as Record + for (const scenario of VOTE_ESTIMATE_SCENARIOS) { + coverageByScenario[scenario] = computeGoalCoverage( + expectedVotes, + suggestedGoal, + pledgeAggregate, + scenario, + ) + } + return coverageByScenario +} + +/** Sums a list of per-municipality coverages into one aggregate (dashboard/overview total). */ +export const aggregateGoalCoverage = ( + entries: ReadonlyArray, +): MunicipalityGoalCoverage => { + const goal = entries.reduce((sum, entry) => sum + entry.goal, 0) + const committed = entries.reduce((sum, entry) => sum + entry.committed, 0) + const coverageRatio = goal > 0 ? committed / goal : null + const deficit = goal - committed + return { goal, committed, coverageRatio, deficit } +} + +/** + * Generic ratio→percent label, e.g. for `MunicipalityPotential`'s + * `captureRate2022`/`intraFieldShareByYear` diagnostics on the goal-account + * card — shared here so those and `coverageRatio` don't each round/format + * independently. + */ +export const formatRatioAsPercentLabel = (ratio: number | null): string => + ratio == null ? '—' : `${Math.round(ratio * 100)}%` + +/** `coverageRatio` as a rounded percent string, or "—" when the goal is zero/unknown. */ +export const formatGoalCoverageRatioLabel = (coverage: MunicipalityGoalCoverage): string => + formatRatioAsPercentLabel(coverage.coverageRatio) + +/** `coverageRatio` clamped to [0, 100] for a `Progress` bar, or `undefined` when unknown. */ +export const goalCoverageProgressPercent = (coverage: MunicipalityGoalCoverage): number | undefined => + coverage.coverageRatio == null ? undefined : Math.min(100, Math.round(coverage.coverageRatio * 100)) + +/** UI copy for `deficit`: how many votes are missing (or exceeded) relative to the goal. */ +export const formatGoalCoverageDeficitLabel = (coverage: MunicipalityGoalCoverage): string => { + if (coverage.goal <= 0) return 'Sem meta definida' + if (coverage.deficit > 0) { + return `Faltam ${formatElectionNumber(coverage.deficit)} votos para a meta` + } + if (coverage.deficit < 0) { + return `${formatElectionNumber(Math.abs(coverage.deficit))} acima da meta` + } + return 'Meta coberta' +} + +/** + * `-1.234`/`+300`-style short form of `deficit` for dense table cells — pair + * with `formatGoalCoverageDeficitLabel` as a `title` tooltip (same pattern as + * `StaffMunicipalityVotesDisplay`'s "Nas lideranças" subline). + */ +export const formatGoalCoverageDeficitShortLabel = (coverage: MunicipalityGoalCoverage): string => { + if (coverage.goal <= 0) return '—' + if (coverage.deficit === 0) return '0' + const sign = coverage.deficit > 0 ? '−' : '+' + return `${sign}${formatElectionNumber(Math.abs(coverage.deficit))}` +} diff --git a/src/utilities/municipalityElectoralBaseline.ts b/src/utilities/municipalityElectoralBaseline.ts index bc0b2491..f552a9a5 100644 --- a/src/utilities/municipalityElectoralBaseline.ts +++ b/src/utilities/municipalityElectoralBaseline.ts @@ -2,11 +2,15 @@ import configPromise from '@payload-config' import { unstable_cache } from 'next/cache' import { getPayload, type Payload } from 'payload' +import type { FederalBaselineTallyCell } from '@/lib/bahiaElectionAggregates' +import { isCampoParty } from '@/lib/campoParties' import { BASELINE_TICKET_2022, ELECTION_YEAR_2022, FEDERAL_DEPUTY_OFFICE, HISTORICAL_SERIES_YEARS, + type ElectionOffice, + type ElectionTurn, } from '@/lib/electionResults' import type { CampaignUser, User } from '@/payload-types' import { assertCanReadElectionData } from '@/utilities/campaignAccess' @@ -265,11 +269,21 @@ export const loadValidVotesByCityZone = async ( return validVotes } -/** cityCode:zone → votes map for one candidate/year (municipality-level slicing). */ +/** + * cityCode:zone → votes map for one candidate/year (municipality-level + * slicing). Defaults to deputado-federal T1 for the existing map/E2 callers; + * E8's "teto do campo" passes `office`/`turn` explicitly to slice + * presidente/governador instead. + */ export const loadCandidateVotesByCityZone = async ( payload: Payload, user: ElectionReader, - { year, candidateNumber }: { year: number; candidateNumber: number }, + { + year, + candidateNumber, + office = FEDERAL_DEPUTY_OFFICE, + turn = '1', + }: { year: number; candidateNumber: number; office?: ElectionOffice; turn?: ElectionTurn }, ): Promise> => { assertCanReadElectionData(user) @@ -278,8 +292,8 @@ export const loadCandidateVotesByCityZone = async ( where: { and: [ { year: { equals: year } }, - { office: { equals: FEDERAL_DEPUTY_OFFICE } }, - { turn: { equals: '1' } }, + { office: { equals: office } }, + { turn: { equals: turn } }, { voteType: { equals: 'nominal' } }, { candidateNumber: { equals: candidateNumber } }, ], @@ -298,3 +312,117 @@ export const loadCandidateVotesByCityZone = async ( } return votes } + +/** + * cityCode:zone → sum of nominal deputado-federal T1 votes for every + * candidate whose party is in the curated `campoParties.ts` field for that + * year (E8 "share intracampo" denominator — CLI/build-time use only, this + * scans the whole statewide slice for the office). + */ +export const loadCampoFederalVotesByCityZone = async ( + payload: Payload, + user: ElectionReader, + { year }: { year: number }, +): Promise> => { + assertCanReadElectionData(user) + + const result = await payload.find({ + collection: 'electionCandidateVote', + where: { + and: [ + { year: { equals: year } }, + { office: { equals: FEDERAL_DEPUTY_OFFICE } }, + { turn: { equals: '1' } }, + { voteType: { equals: 'nominal' } }, + ], + }, + depth: 0, + limit: 0, + pagination: false, + select: { cityCode: true, zoneNumber: true, party: true, votes: true }, + overrideAccess: true, + }) + + const votes = new Map() + for (const row of result.docs) { + if (!isCampoParty(row.party, year)) continue + const key = `${row.cityCode}:${row.zoneNumber}` + votes.set(key, (votes.get(key) ?? 0) + (row.votes ?? 0)) + } + return votes +} + +/** Turnout/valid/blank/null tally cell — same shape the committed artifact stores per year. */ +export type OfficeTallyCell = FederalBaselineTallyCell + +/** + * cityCode:zone → turnout/valid/blank/null tally for one office×year×turn + * (used for the roll-off diagnostic: DF tally vs. majoritarian tally in the + * same cell — CLI/build-time use only). + */ +export const loadOfficeTallyByCityZone = async ( + payload: Payload, + user: ElectionReader, + { year, office, turn }: { year: number; office: ElectionOffice; turn: ElectionTurn }, +): Promise> => { + assertCanReadElectionData(user) + + const result = await payload.find({ + collection: 'electionTally', + where: { + and: [{ year: { equals: year } }, { office: { equals: office } }, { turn: { equals: turn } }], + }, + depth: 0, + limit: 0, + pagination: false, + select: { + cityCode: true, + zoneNumber: true, + comparecimento: true, + votosValidos: true, + votosBranco: true, + votosNulo: true, + }, + overrideAccess: true, + }) + + const tally = new Map() + for (const row of result.docs) { + const key = `${row.cityCode}:${row.zoneNumber}` + const current = tally.get(key) ?? { + comparecimento: 0, + votosValidos: 0, + votosBranco: 0, + votosNulo: 0, + } + tally.set(key, { + comparecimento: current.comparecimento + (row.comparecimento ?? 0), + votosValidos: current.votosValidos + (row.votosValidos ?? 0), + votosBranco: current.votosBranco + (row.votosBranco ?? 0), + votosNulo: current.votosNulo + (row.votosNulo ?? 0), + }) + } + return tally +} + +/** Sums an `OfficeTallyCell` map over a municipality's cityCode×zones. */ +export const sumOfficeTallyForGeography = ( + tallyByCityZone: Map, + geography: MunicipalityElectionGeography, +): OfficeTallyCell => { + const total: OfficeTallyCell = { + comparecimento: 0, + votosValidos: 0, + votosBranco: 0, + votosNulo: 0, + } + for (const zone of geography.zones) { + const cell = tallyByCityZone.get(`${geography.cityCode}:${zone}`) + if (!cell) continue + total.comparecimento += cell.comparecimento + total.votosValidos += cell.votosValidos + total.votosBranco += cell.votosBranco + total.votosNulo += cell.votosNulo + } + return total +} diff --git a/src/utilities/municipalityGoalAccount.ts b/src/utilities/municipalityGoalAccount.ts new file mode 100644 index 00000000..4b4e769b --- /dev/null +++ b/src/utilities/municipalityGoalAccount.ts @@ -0,0 +1,130 @@ +import 'server-only' + +import { cache } from 'react' + +import type { Payload } from 'payload' + +import type { CampaignUser, User } from '@/payload-types' +import { loadCampaignGoals } from '@/utilities/campaignGoals' +import { + aggregateGoalCoverage, + computeGoalCoverage, + computeGoalCoverageByScenario, + type MunicipalityGoalCoverage, +} from '@/utilities/goalCoverage' +import { + computeMunicipalityPotential, + computeStatewideGoalDecomposition, + type MunicipalityPotential, +} from '@/utilities/municipalityPotential' +import { + DEFAULT_VOTE_ESTIMATE_SCENARIO, + VOTE_ESTIMATE_SCENARIOS, + type VoteEstimateScenarioFields, + type VoteEstimateScenario, +} from '@/utilities/voteEstimate' +import { + emptyMunicipalityPledgeAggregate, + type MunicipalityPledgeAggregate, +} from '@/utilities/votePledgeData' + +type GoalAccountReader = CampaignUser | User + +/** + * E8 "conta da cadeira" — request-scoped statewide goal decomposition + * (`campaignGoals` global + `computeStatewideGoalDecomposition`), degrau 1 da + * caching ladder. Every surface (dashboard, list overview, list rows, + * detail card) needs the SAME decomposition — `suggestedGoal` for one + * município is only meaningful relative to the full 435-slug ceiling total, + * so this always runs over the whole catalog, never a filtered scope, and is + * `cache()`-deduplicated so dashboard + list + detail don't each recompute it + * on requests that touch more than one. + */ +const loadGoalDecompositionCached = cache( + async (payload: Payload, user: GoalAccountReader) => { + const goals = await loadCampaignGoals(payload, user) + return computeStatewideGoalDecomposition(goals) + }, +) + +export type MunicipalityGoalCoverageBundle = { + coverageByMunicipalityID: Map> + /** Sum of every municipality's coverage in `municipalities`, per scenario (dashboard/overview metric). */ + aggregateByScenario: Record +} + +/** + * Per-scenario goal coverage for a scope of municipalities (dashboard total, + * or the list's filtered overview) plus the per-municipality breakdown the + * list rows pick a scenario from client-side — mirrors + * `rollupMunicipalityStaffVotes`'s "compute all 3 scenarios server-side, pick + * client-side" shape. + */ +export const loadMunicipalityGoalCoverageBundle = async ( + payload: Payload, + user: GoalAccountReader, + municipalities: ReadonlyArray<{ + id: number + slug: string + expectedVotes?: VoteEstimateScenarioFields | null + }>, + pledgeAggregates: Map, +): Promise => { + const { suggestedGoalBySlug } = await loadGoalDecompositionCached(payload, user) + + const coverageByMunicipalityID = new Map< + number, + Record + >() + for (const municipality of municipalities) { + const pledgeAggregate = + pledgeAggregates.get(municipality.id) ?? emptyMunicipalityPledgeAggregate + const suggestedGoal = suggestedGoalBySlug.get(municipality.slug) ?? 0 + coverageByMunicipalityID.set( + municipality.id, + computeGoalCoverageByScenario(municipality.expectedVotes, suggestedGoal, pledgeAggregate), + ) + } + + const coverages = [...coverageByMunicipalityID.values()] + const aggregateByScenario = {} as Record + for (const scenario of VOTE_ESTIMATE_SCENARIOS) { + aggregateByScenario[scenario] = aggregateGoalCoverage( + coverages.map((coverageByScenario) => coverageByScenario[scenario]), + ) + } + + return { coverageByMunicipalityID, aggregateByScenario } +} + +export type MunicipalityGoalAccount = { + suggestedGoal: number + /** Fixed to the `central` scenario — the detail page has no scenario selector. */ + goalCoverage: MunicipalityGoalCoverage + potential: MunicipalityPotential +} + +/** + * One município's full "conta da cadeira": suggested goal, coverage (central + * scenario), and the diagnostic potential block (teto do campo, captura, + * share intracampo, roll-off) — the detail page's "Conta da cadeira" card. + */ +export const loadMunicipalityGoalAccount = async ( + payload: Payload, + user: GoalAccountReader, + municipality: { slug: string; expectedVotes?: VoteEstimateScenarioFields | null }, + pledgeAggregate: MunicipalityPledgeAggregate, +): Promise => { + const { suggestedGoalBySlug, potentialBySlug } = await loadGoalDecompositionCached(payload, user) + const suggestedGoal = suggestedGoalBySlug.get(municipality.slug) ?? 0 + const goalCoverage = computeGoalCoverage( + municipality.expectedVotes, + suggestedGoal, + pledgeAggregate, + DEFAULT_VOTE_ESTIMATE_SCENARIO, + ) + const potential = + potentialBySlug.get(municipality.slug) ?? computeMunicipalityPotential(municipality.slug) + + return { suggestedGoal, goalCoverage, potential } +} diff --git a/src/utilities/municipalityPageData.ts b/src/utilities/municipalityPageData.ts index d1ab4f95..c837572c 100644 --- a/src/utilities/municipalityPageData.ts +++ b/src/utilities/municipalityPageData.ts @@ -10,6 +10,8 @@ import { import type { CampaignUser, Municipality } from '@/payload-types' import { isCampaignLeader, isCampaignStaff } from '@/utilities/campaignAccess' import { loadMunicipalityScope } from '@/utilities/campaignMunicipalityScope' +import type { MunicipalityGoalCoverage } from '@/utilities/goalCoverage' +import { loadMunicipalityGoalCoverageBundle } from '@/utilities/municipalityGoalAccount' import { buildMunicipalityListWhere, municipalityPageSize, @@ -48,6 +50,8 @@ export type MunicipalityListOverviewData = { pledgeCount: number missingEstimateCount: number withAdvisorCount: number + /** E8 "conta da cadeira" — meta × comprometido do escopo filtrado, por cenário. */ + goalCoverageByScenario: Record } export type MunicipalityListPageBundle = { @@ -171,10 +175,21 @@ export const loadMunicipalityListPageBundle = async ( let overview: MunicipalityListOverviewData | null = null let pledgeAggregates = new Map() + let goalCoverageByMunicipalityID = new Map< + number, + Record + >() if (staffScope && staffScope.municipalities.length > 0) { pledgeAggregates = staffScope.pledgeAggregates const rollup = rollupMunicipalityStaffVotes(staffScope.municipalities, pledgeAggregates) + const goalCoverageBundle = await loadMunicipalityGoalCoverageBundle( + payload, + user, + staffScope.municipalities, + pledgeAggregates, + ) + goalCoverageByMunicipalityID = goalCoverageBundle.coverageByMunicipalityID overview = { municipalityCount: staffScope.municipalities.length, staffVoteTotalByScenario: { ...rollup.staffVoteTotalByScenario }, @@ -183,6 +198,7 @@ export const loadMunicipalityListPageBundle = async ( withAdvisorCount: staffScope.municipalities.filter( (municipality) => (municipality.advisors ?? []).length > 0, ).length, + goalCoverageByScenario: goalCoverageBundle.aggregateByScenario, } } @@ -214,6 +230,7 @@ export const loadMunicipalityListPageBundle = async ( municipality, isStaff ? pledgeAggregates.get(municipality.id) : undefined, ranks.get(municipality.slug) ?? null, + isStaff ? goalCoverageByMunicipalityID.get(municipality.id) : undefined, ), ), totalDocs, diff --git a/src/utilities/municipalityPotential.ts b/src/utilities/municipalityPotential.ts new file mode 100644 index 00000000..c057873b --- /dev/null +++ b/src/utilities/municipalityPotential.ts @@ -0,0 +1,255 @@ +import { + getMunicipalityFederalBaseline, + type MunicipalityFederalBaseline, +} from '@/lib/bahiaElectionAggregates' +import { + ELECTION_YEAR_2014, + ELECTION_YEAR_2018, + ELECTION_YEAR_2022, + HISTORICAL_SERIES_YEARS, +} from '@/lib/electionResults' +import { municipalityCatalog } from '@/lib/municipalityCatalog' +import type { BahiaIdentityTerritory } from '@/lib/bahiaTerritories' +import type { CampaignGoal } from '@/payload-types' + +/** + * E8 "conta da cadeira" — derived electoral potential per municipality, built + * entirely from the committed `bahia-federal-baseline.json` artifact (no DB + * reads: pure functions over `getMunicipalityFederalBaseline`). Every + * projection here is a documented, fixed formula — never a fitted model (see + * the E8 plan's "rabbit holes vigiados": projection turning into a model). + */ + +/** + * Projected 2026 valid votes: weighted average of 2014/2018/2022 federal T1 + * valid votes, weighting 2022 double (closer election, more predictive of + * turnout composition). Documented as a fixed formula, not a forecast: + * `(v2014 + v2018 + 2×v2022) / 4`. + */ +export const projectedValidVotes = (baseline: MunicipalityFederalBaseline): number => { + const v2014 = baseline.validVotesByYear[String(ELECTION_YEAR_2014)] ?? 0 + const v2018 = baseline.validVotesByYear[String(ELECTION_YEAR_2018)] ?? 0 + const v2022 = baseline.validVotesByYear[String(ELECTION_YEAR_2022)] ?? 0 + return (v2014 + v2018 + 2 * v2022) / 4 +} + +/** + * "Teto do campo" (field ceiling): 2022 T1 votes for the presidential + * candidate of the field (#13) — a majoritarian race attracts far more of + * the field's total vote than the fragmented federal-deputy quotient race, + * so it stands in for "how many votes could the field plausibly get here". + * Primary reading only (governador is a secondary cross-check surfaced by the + * artifact, not blended in — assumption flagged for product validation in + * the E8 plan). 2022-only by design — see `bahiaElectionAggregates.ts` for + * why the committed artifact doesn't cut 2014/2018 majoritária too. + */ +export const fieldCeiling = (baseline: MunicipalityFederalBaseline): number => + baseline.majoritarian2022?.president.votes ?? 0 + +/** + * `fieldCeiling` scaled by the same turnout-growth factor used for + * `projectedValidVotes` (projected ÷ observed 2022 valid votes), since the + * ceiling itself has only one observed data point (2022). Falls back to the + * unscaled ceiling when 2022 valid votes are unknown (avoids a divide-by-zero + * blow-up rather than silently zeroing the projection). + */ +export const projectedFieldCeiling = (baseline: MunicipalityFederalBaseline): number => { + const ceiling2022 = fieldCeiling(baseline) + const validVotes2022 = baseline.validVotesByYear[String(ELECTION_YEAR_2022)] ?? 0 + if (validVotes2022 <= 0) return ceiling2022 + return ceiling2022 * (projectedValidVotes(baseline) / validVotes2022) +} + +/** + * Capture rate (diagnostic only, not a decomposition input): share of the + * 2022 field ceiling that Solla's own candidacy actually captured. `null` + * when the ceiling is unknown/zero rather than a misleading 0. + */ +export const captureRate = (baseline: MunicipalityFederalBaseline): number | null => { + const ceiling = fieldCeiling(baseline) + if (ceiling <= 0) return null + const votes2022 = baseline.votesByYear[String(ELECTION_YEAR_2022)] ?? 0 + return votes2022 / ceiling +} + +/** + * Intra-field share (diagnostic only): of the curated field's federal-deputy + * nominal votes (`campoFederalVotesByYear`, `campoParties.ts`) in a given + * year, what share went to Solla specifically. Available for all three + * historical years (unlike `fieldCeiling`, which is majoritarian and + * 2022-only). `null` when the field polled zero that year. + */ +export const intraFieldShare = (baseline: MunicipalityFederalBaseline, year: number): number | null => { + const campo = baseline.campoFederalVotesByYear[String(year)] ?? 0 + if (campo <= 0) return null + const votes = baseline.votesByYear[String(year)] ?? 0 + return votes / campo +} + +export type RollOff = { + /** (brancos+nulos DF) − (brancos+nulos majoritária), in votes. */ + votes: number + /** `votes` as a share of the federal-deputy T1 turnout, or null if turnout is unknown. */ + percentOfTurnout: number | null +} + +/** + * Roll-off (diagnostic only): the DF race always shows more blank/null votes + * than the majoritarian race in the same turnout — this is the gap, in votes + * and as a share of comparecimento. 2022-only, same artifact limitation as + * `fieldCeiling` above; `null` when either tally is missing for the slug. + */ +export const rollOff = (baseline: MunicipalityFederalBaseline): RollOff | null => { + const majoritarian = baseline.majoritarian2022?.president + const federalTally = baseline.federalTallyByYear[String(ELECTION_YEAR_2022)] + if (!majoritarian || !federalTally) return null + + const dfBlankNull = federalTally.votosBranco + federalTally.votosNulo + const majoritarianBlankNull = majoritarian.votosBranco + majoritarian.votosNulo + const votes = dfBlankNull - majoritarianBlankNull + const percentOfTurnout = federalTally.comparecimento > 0 ? votes / federalTally.comparecimento : null + + return { votes, percentOfTurnout } +} + +export type MunicipalityPotential = { + slug: string + projectedValidVotes: number + fieldCeiling2022: number + projectedFieldCeiling: number + captureRate2022: number | null + intraFieldShareByYear: Record + rollOff2022: RollOff | null +} + +/** Assembles every derived metric above for one catalog municipality slug. */ +export const computeMunicipalityPotential = (slug: string): MunicipalityPotential => { + const baseline = getMunicipalityFederalBaseline(slug) + const intraFieldShareByYear: Record = {} + for (const year of HISTORICAL_SERIES_YEARS) { + intraFieldShareByYear[year] = intraFieldShare(baseline, year) + } + + return { + slug, + projectedValidVotes: projectedValidVotes(baseline), + fieldCeiling2022: fieldCeiling(baseline), + projectedFieldCeiling: projectedFieldCeiling(baseline), + captureRate2022: captureRate(baseline), + intraFieldShareByYear, + rollOff2022: rollOff(baseline), + } +} + +/** `computeMunicipalityPotential` for every catalog municipality (435 slugs). */ +export const computeAllMunicipalityPotentials = (): MunicipalityPotential[] => + municipalityCatalog.map((entry) => computeMunicipalityPotential(entry.slug)) + +/** + * Decomposes the state goal proportionally to each municipality's projected + * field ceiling — `suggestedGoal_i = stateGoal × projectedFieldCeiling_i / Σ + * projectedFieldCeiling` — NOT a composite formula folding in capture rate or + * intra-field share (those stay diagnostic columns; see the E8 plan's + * "rabbit holes vigiados"). `margin` on the `campaignGoals` global is + * informational for the table (a safety reading for the coordination), it + * does not change the decomposed value. + * + * Falls back to an even split when every ceiling is zero/unknown (e.g. an + * empty potentials list slice) rather than producing `NaN` suggested goals. + */ +export const decomposeStateGoal = ( + potentials: ReadonlyArray>, + goals: Pick, +): Map => { + const stateGoal = goals.stateGoal + const totalCeiling = potentials.reduce((sum, entry) => sum + entry.projectedFieldCeiling, 0) + const suggestedGoalBySlug = new Map() + + if (totalCeiling <= 0) { + const even = potentials.length > 0 ? stateGoal / potentials.length : 0 + for (const entry of potentials) suggestedGoalBySlug.set(entry.slug, even) + return suggestedGoalBySlug + } + + for (const entry of potentials) { + suggestedGoalBySlug.set(entry.slug, stateGoal * (entry.projectedFieldCeiling / totalCeiling)) + } + return suggestedGoalBySlug +} + +export type TerritorySanityWarning = { + region: BahiaIdentityTerritory + suggestedGoalTotal: number + projectedValidVotesTotal: number + /** suggestedGoalTotal / projectedValidVotesTotal — > 1 means the decomposed goal exceeds the projected electorate. */ + ratio: number +} + +/** + * Sanity check (never blocking, per the plan): flags identity territories + * (TI) where the decomposed suggested goals, summed, exceed the projected + * valid-vote electorate of that territory — a signal that the decomposition + * needs a human look (state goal too high, or ceilings skewed), never a + * thrown error. Callers surface `warnAboveRatio` as an `CampaignInfoHint`, + * not a validation failure. + */ +export const sanityCheckSuggestedGoalsByTerritory = ( + entries: ReadonlyArray<{ + region: BahiaIdentityTerritory + suggestedGoal: number + projectedValidVotes: number + }>, + { warnAboveRatio = 1 }: { warnAboveRatio?: number } = {}, +): TerritorySanityWarning[] => { + const totalsByRegion = new Map< + BahiaIdentityTerritory, + { suggestedGoalTotal: number; projectedValidVotesTotal: number } + >() + + for (const entry of entries) { + const current = totalsByRegion.get(entry.region) ?? { + suggestedGoalTotal: 0, + projectedValidVotesTotal: 0, + } + current.suggestedGoalTotal += entry.suggestedGoal + current.projectedValidVotesTotal += entry.projectedValidVotes + totalsByRegion.set(entry.region, current) + } + + const warnings: TerritorySanityWarning[] = [] + for (const [region, totals] of totalsByRegion) { + if (totals.projectedValidVotesTotal <= 0) continue + const ratio = totals.suggestedGoalTotal / totals.projectedValidVotesTotal + if (ratio > warnAboveRatio) { + warnings.push({ region, ...totals, ratio }) + } + } + return warnings +} + +/** + * Convenience end-to-end: computes every municipality's potential and + * decomposes the state goal — the single entry point the dashboard/list/ + * detail loaders need (`municipalityGoalAccount.ts`), keyed by slug for O(1) + * per-municipality lookup instead of a linear scan. + * + * Deliberately does NOT run `sanityCheckSuggestedGoalsByTerritory` here: no + * caller surfaces `TerritorySanityWarning`s yet (deferred to E12's TI layer + * — see the E8 plan), so computing them on every dashboard/list/detail + * request would be pure wasted work. Callers that need the check once E12 + * lands can build the same `{ region, suggestedGoal, projectedValidVotes }` + * entries from `potentialBySlug` + `municipalityCatalog` and call it + * directly — it stays exported and unit-tested for that. + */ +export const computeStatewideGoalDecomposition = ( + goals: Pick, +): { + potentialBySlug: Map + suggestedGoalBySlug: Map +} => { + const potentials = computeAllMunicipalityPotentials() + const suggestedGoalBySlug = decomposeStateGoal(potentials, goals) + const potentialBySlug = new Map(potentials.map((potential) => [potential.slug, potential])) + + return { potentialBySlug, suggestedGoalBySlug } +} diff --git a/src/utilities/municipalityViewModels.ts b/src/utilities/municipalityViewModels.ts index cc1e28eb..fc9b66d8 100644 --- a/src/utilities/municipalityViewModels.ts +++ b/src/utilities/municipalityViewModels.ts @@ -3,11 +3,13 @@ import type { Payload } from 'payload' import type { MunicipalityVoteRankEntry } from '@/lib/municipalityVoteRank' import type { CampaignUser, Municipality } from '@/payload-types' import { eligibleCampaignStaffWhere } from '@/utilities/campaignAccess' +import { createEmptyGoalCoverageByScenario, type MunicipalityGoalCoverage } from '@/utilities/goalCoverage' import type { PoliticalTrendStatus } from '@/utilities/municipalityUi' import { relationshipId } from '@/utilities/relationship' import type { StateDeputySummary } from '@/utilities/stateDeputyData' import { toVoteEstimateScenarioViewModel, + type VoteEstimateScenario, type VoteEstimateScenarioViewModel, } from '@/utilities/voteEstimate' import type { MunicipalityPledgeAggregate } from '@/utilities/votePledgeData' @@ -55,12 +57,15 @@ export type MunicipalityListViewModel = { politicalTrendNote: string | null pledges: MunicipalityPledgeAggregate votePosition2022: MunicipalityVoteRankEntry | null + /** E8 "conta da cadeira" — meta × comprometido por cenário; null fora da staff view. */ + goalCoverageByScenario: Record } export const toMunicipalityListViewModel = ( municipality: Municipality, pledges: MunicipalityPledgeAggregate | undefined, votePosition2022: MunicipalityListViewModel['votePosition2022'], + goalCoverageByScenario?: Record, ): MunicipalityListViewModel => ({ id: municipality.id, name: municipality.name, @@ -78,6 +83,7 @@ export const toMunicipalityListViewModel = ( politicalTrendNote: municipality.politicalTrend?.note ?? null, pledges: pledges ?? createEmptyMunicipalityPledgeAggregate(), votePosition2022, + goalCoverageByScenario: goalCoverageByScenario ?? createEmptyGoalCoverageByScenario(), }) export type MunicipalityAdvisorSummary = { diff --git a/tests/e2e/campaignMunicipalities.e2e.spec.ts b/tests/e2e/campaignMunicipalities.e2e.spec.ts index 10125874..44743b42 100644 --- a/tests/e2e/campaignMunicipalities.e2e.spec.ts +++ b/tests/e2e/campaignMunicipalities.e2e.spec.ts @@ -100,7 +100,15 @@ test.describe('Municípios — jornadas por papel', () => { await expect(page.getByText('Votos estimados atualizados.')).toBeVisible() await page.goto(`${campaign.baseURL}/campanha/municipios/${municipality.slug}`) - await expect(page.getByText('5.000')).toBeVisible() + // "Conta da cadeira" (E8) shows the saved scenario values through + // `MunicipalityListExpectedVotesControl` — a compact edit-in-place + // control whose only always-visible digits are the active scenario + // (`central`, "3.000" here). The full pessimistic/central/optimistic + // trio only becomes plain page text via its screen-reader summary + // (visually a hover-only preview otherwise), so assert against that + // unique, unambiguous string rather than a bare "5.000" substring — + // that also matches the (opacity-0 but DOM-visible) hover-preview span. + await expect(page.getByText('Otimista: 5.000')).toBeVisible() await expect(page.getByText(`Assessoria: ${advisor.name}`)).toBeVisible() }) diff --git a/tests/int/campaignGoalsAccess.int.spec.ts b/tests/int/campaignGoalsAccess.int.spec.ts new file mode 100644 index 00000000..1fdf7cf0 --- /dev/null +++ b/tests/int/campaignGoalsAccess.int.spec.ts @@ -0,0 +1,111 @@ +// @vitest-environment node + +import type { Payload } from 'payload' +import { getPayload } from 'payload' +import { beforeAll, describe, expect, it } from 'vitest' + +import config from '@/payload.config' +import { loadCampaignGoals } from '@/utilities/campaignGoals' + +import { installCampaignFixtures } from '../helpers/campaignFixtures' + +let payload: Payload +const campaignFixtures = installCampaignFixtures({ + getPayload: () => payload, + setPayload: (nextPayload) => { + payload = nextPayload + }, +}) + +/** + * Pins the `campaignGoals` global access matrix (E8): a `campaignUser` JWT + * reaches `/api/globals/*` directly, so — like the election-data collections — + * the deny for leaders and anonymous requests has to be explicit rather than + * inherited from Payload's "any authenticated user" default. + */ +describe('campaignGoals global access', () => { + beforeAll(async () => { + payload = await getPayload({ config: await config }) + }) + + it('denies anonymous read', async () => { + await expect( + payload.findGlobal({ slug: 'campaignGoals', overrideAccess: false }), + ).rejects.toThrow(/permissão|not allowed/i) + }) + + it('denies a leader read', async () => { + const fixtures = campaignFixtures() + const leader = await fixtures.createCampaignUser('leader') + + await expect( + payload.findGlobal({ + slug: 'campaignGoals', + user: leader, + overrideAccess: false, + }), + ).rejects.toThrow(/permissão|not allowed/i) + }) + + it('lets an advisor read but not write', async () => { + const fixtures = campaignFixtures() + const advisor = await fixtures.createCampaignUser('advisor') + + await expect( + payload.findGlobal({ slug: 'campaignGoals', user: advisor, overrideAccess: false }), + ).resolves.toMatchObject({ stateGoal: expect.any(Number) }) + + await expect( + payload.updateGlobal({ + slug: 'campaignGoals', + data: { stateGoal: 160_000 }, + user: advisor, + overrideAccess: false, + }), + ).rejects.toThrow(/permissão|not allowed/i) + }) + + it.each(['coordinator', 'candidate'] as const)( + 'lets a %s read and write', + async (role) => { + const fixtures = campaignFixtures() + const staff = await fixtures.createCampaignUser(role) + + const updated = await payload.updateGlobal({ + slug: 'campaignGoals', + data: { stateGoal: 155_000, margin: 5 }, + user: staff, + overrideAccess: false, + }) + expect(updated.stateGoal).toBe(155_000) + + await expect( + payload.findGlobal({ slug: 'campaignGoals', user: staff, overrideAccess: false }), + ).resolves.toMatchObject({ stateGoal: 155_000, margin: 5 }) + }, + ) + + it('lets a payload admin read and write', async () => { + const fixtures = campaignFixtures() + const admin = await fixtures.createAdminUser() + + const updated = await payload.updateGlobal({ + slug: 'campaignGoals', + data: { stateGoal: 150_000 }, + user: admin, + overrideAccess: false, + }) + expect(updated.stateGoal).toBe(150_000) + }) + + it('loadCampaignGoals resolves for staff and denies a leader', async () => { + const fixtures = campaignFixtures() + const coordinator = await fixtures.createCampaignUser('coordinator') + const leader = await fixtures.createCampaignUser('leader') + + await expect(loadCampaignGoals(payload, coordinator)).resolves.toMatchObject({ + stateGoal: expect.any(Number), + }) + await expect(loadCampaignGoals(payload, leader)).rejects.toThrow(/permissão|not allowed/i) + }) +}) diff --git a/tests/unit/bahiaElectionAggregates.unit.spec.ts b/tests/unit/bahiaElectionAggregates.unit.spec.ts index 8dac24bd..6d2603fc 100644 --- a/tests/unit/bahiaElectionAggregates.unit.spec.ts +++ b/tests/unit/bahiaElectionAggregates.unit.spec.ts @@ -1,3 +1,6 @@ +import { statSync } from 'node:fs' +import { join } from 'node:path' + import { describe, expect, it } from 'vitest' import { @@ -5,9 +8,14 @@ import { federalBaselineMunicipalitySlugs, getMunicipalityFederalBaseline, } from '@/lib/bahiaElectionAggregates' -import { BASELINE_TICKET_2022, HISTORICAL_SERIES_YEARS } from '@/lib/electionResults' +import { BASELINE_TICKET_2022, ELECTION_YEAR_2022, HISTORICAL_SERIES_YEARS } from '@/lib/electionResults' import { municipalityCatalog } from '@/lib/municipalityCatalog' +const ARTIFACT_PATH = join( + process.cwd(), + 'src/lib/electionAggregates/bahia-federal-baseline.json', +) + /** * Pins the committed election-aggregate artifact to the municipality catalog. * If either changes shape (new remodel, new TSE scope), regenerate with @@ -54,5 +62,58 @@ describe('election aggregates artifact', () => { const baseline = getMunicipalityFederalBaseline('nao-existe') expect(baseline.votesByYear).toEqual({}) expect(baseline.validVotesByYear).toEqual({}) + expect(baseline.campoFederalVotesByYear).toEqual({}) + expect(baseline.federalTallyByYear).toEqual({}) + expect(baseline.majoritarian2022).toBeUndefined() + }) + + it('has campo federal votes + federal tally for every historical year (v2 fields)', () => { + for (const year of HISTORICAL_SERIES_YEARS) { + let campoTotal = 0 + let tallyComparecimentoTotal = 0 + for (const slug of federalBaselineMunicipalitySlugs()) { + const baseline = getMunicipalityFederalBaseline(slug) + const campo = baseline.campoFederalVotesByYear[String(year)] + const tally = baseline.federalTallyByYear[String(year)] + expect(campo).toBeTypeOf('number') + expect(campo).toBeGreaterThanOrEqual(0) + expect(tally).toBeDefined() + expect(tally.comparecimento).toBeGreaterThanOrEqual(0) + expect(tally.votosValidos).toBeGreaterThanOrEqual(0) + campoTotal += campo ?? 0 + tallyComparecimentoTotal += tally?.comparecimento ?? 0 + } + // The campo (PT + core-left partners) always outpolls Solla alone, and + // turnout always dwarfs any single candidate's nominal votes. + expect(campoTotal).toBeGreaterThan(10_000) + expect(tallyComparecimentoTotal).toBeGreaterThan(campoTotal) + } + }) + + it('has 2022 majoritarian (presidente/governador #13) votes+tally for every municipality', () => { + let presidentTotal = 0 + for (const slug of federalBaselineMunicipalitySlugs()) { + const baseline = getMunicipalityFederalBaseline(slug) + const majoritarian = baseline.majoritarian2022 + expect(majoritarian).toBeDefined() + if (!majoritarian) continue + expect(majoritarian.president.votes).toBeGreaterThanOrEqual(0) + expect(majoritarian.governor.votes).toBeGreaterThanOrEqual(0) + expect(majoritarian.president.comparecimento).toBeGreaterThanOrEqual(majoritarian.president.votes) + presidentTotal += majoritarian.president.votes + } + expect(presidentTotal).toBeGreaterThan(10_000) + // Sanity: the 2022 majoritarian slice must not silently regress to a + // different election year (only 2022 is seeded/expected here). + expect(HISTORICAL_SERIES_YEARS).toContain(ELECTION_YEAR_2022) + }) + + it('stays under the committed artifact byte budget', () => { + const { size } = statSync(ARTIFACT_PATH) + // v1 (votes + valid votes only) was ~96 KB; v2 adds campo votes, federal + // tally and the 2022 majoritarian slice, measured at ~522 KB — budget + // with headroom, not a precise pin, so future fields don't require + // touching this test. + expect(size).toBeLessThan(700 * 1024) }) }) diff --git a/tests/unit/campaignComponents.unit.spec.ts b/tests/unit/campaignComponents.unit.spec.ts index 19025d72..0cdfc888 100644 --- a/tests/unit/campaignComponents.unit.spec.ts +++ b/tests/unit/campaignComponents.unit.spec.ts @@ -14,11 +14,13 @@ import { Progress } from '@/components/ui/Progress' import { Toggle } from '@/components/ui/Toggle' import { ToggleGroup, ToggleGroupItem } from '@/components/ui/ToggleGroup' import type { CampaignFormActionState } from '@/utilities/campaignFormActionError' -import { stub } from '../helpers/stub' +import { createEmptyGoalCoverageByScenario } from '@/utilities/goalCoverage' import type { MunicipalityAdvisorSummary, MunicipalityListViewModel } from '@/utilities/municipalityViewModels' import { toVoteEstimateScenarioViewModel } from '@/utilities/voteEstimate' import { createEmptyMunicipalityPledgeAggregate } from '@/utilities/votePledgeData' +import { stub } from '../helpers/stub' + vi.mock('next/navigation', () => ({ useRouter: () => ({ replace: vi.fn(), @@ -171,6 +173,11 @@ describe('campaign visual foundation', () => { share: 0.031, totalUnits: 435, }, + goalCoverageByScenario: { + pessimistic: { goal: 1500, committed: 1200, coverageRatio: 0.8, deficit: 300 }, + central: { goal: 1500, committed: 1200, coverageRatio: 0.8, deficit: 300 }, + optimistic: { goal: 1500, committed: 1200, coverageRatio: 0.8, deficit: 300 }, + }, }, { id: 2, @@ -189,6 +196,7 @@ describe('campaign visual foundation', () => { politicalTrendNote: null, pledges: createEmptyMunicipalityPledgeAggregate(), votePosition2022: null, + goalCoverageByScenario: createEmptyGoalCoverageByScenario(), }, ] @@ -210,6 +218,9 @@ describe('campaign visual foundation', () => { expect(html).toContain('Coberta') expect(html).toContain('Sem assessor') expect(html).toContain('Tendência') + expect(html).toContain('Cobertura da meta') + expect(html).toContain('80%') + expect(html).toContain('Faltam 300 votos para a meta') }) it('hides leadership coverage subline when pledges only have declared votes', () => { @@ -238,6 +249,7 @@ describe('campaign visual foundation', () => { missingEstimateCount: 1, }, votePosition2022: null, + goalCoverageByScenario: createEmptyGoalCoverageByScenario(), }, ], advisorNamesById: new Map(), @@ -272,6 +284,7 @@ describe('campaign visual foundation', () => { politicalTrendNote: null, pledges: createEmptyMunicipalityPledgeAggregate(), votePosition2022: null, + goalCoverageByScenario: createEmptyGoalCoverageByScenario(), }, ], advisorNamesById: new Map(), diff --git a/tests/unit/campoParties.unit.spec.ts b/tests/unit/campoParties.unit.spec.ts new file mode 100644 index 00000000..8dbb5e49 --- /dev/null +++ b/tests/unit/campoParties.unit.spec.ts @@ -0,0 +1,71 @@ +// @vitest-environment node + +import { describe, expect, it } from 'vitest' + +import { + CAMPO_ELECTION_YEARS, + campoPartiesForYear, + isCampoElectionYear, + isCampoParty, +} from '@/lib/campoParties' +import { partySpectrum } from '@/lib/electionPartySpectrum' + +/** + * Guards against `campoParties.ts` drifting into a second, unvalidated party + * classifier: every curated "campo" party must also land in the `esquerda` + * bucket of `electionPartySpectrum.ts` (the Bolognesi et al. expert survey). + * The reverse is not required — see the file header for sourcing per year. + */ +describe('campoParties', () => { + it('every curated party is in the esquerda spectrum bucket, for every year', () => { + for (const year of CAMPO_ELECTION_YEARS) { + for (const party of campoPartiesForYear(year)) { + expect(partySpectrum(party)).toBe('esquerda') + } + } + }) + + it('covers 2014, 2018, 2022 and 2026', () => { + expect(new Set(CAMPO_ELECTION_YEARS)).toEqual(new Set([2014, 2018, 2022, 2026])) + }) + + it('includes PT and PC do B (PCDOB) across every curated year', () => { + for (const year of CAMPO_ELECTION_YEARS) { + expect(isCampoParty('PT', year)).toBe(true) + expect(isCampoParty('PC do B', year)).toBe(true) + } + }) + + it('resolves 2022/2026 to the FE Brasil federation (PT/PC do B/PV)', () => { + for (const year of [2022, 2026] as const) { + expect(new Set(campoPartiesForYear(year))).toEqual(new Set(['PT', 'PCDOB', 'PV'])) + } + }) + + it('excludes opportunistic centrão allies that shared the same raw TSE coalition', () => { + // Solla's own 2014 coalition ("MAIS MUDANÇAS, NOVAS CONQUISTAS") and 2018 + // coalition ("FRENTE DO TRABALHO POR TODA BAHIA") also included these + // parties — deliberately excluded because they are not in the political + // field (confirmed direita/centro in electionPartySpectrum). + expect(isCampoParty('PP', 2014)).toBe(false) + expect(isCampoParty('PR', 2014)).toBe(false) + expect(isCampoParty('PSD', 2014)).toBe(false) + expect(isCampoParty('PTB', 2014)).toBe(false) + expect(isCampoParty('PODE', 2018)).toBe(false) + expect(isCampoParty('PP', 2018)).toBe(false) + expect(isCampoParty('PR', 2018)).toBe(false) + expect(isCampoParty('PSD', 2018)).toBe(false) + }) + + it('excludes PSB from the 2022 federal field (ran its own deputado-federal slate)', () => { + expect(isCampoParty('PSB', 2022)).toBe(false) + }) + + it('normalizes siglas and fails closed on unknown years/parties', () => { + expect(isCampoParty('pt', 2022)).toBe(true) + expect(isCampoParty(null, 2022)).toBe(false) + expect(isCampoParty('PT', 2015)).toBe(false) + expect(isCampoElectionYear(2015)).toBe(false) + expect(campoPartiesForYear(2015)).toEqual([]) + }) +}) diff --git a/tests/unit/electionResults.unit.spec.ts b/tests/unit/electionResults.unit.spec.ts index 23c8af22..75daba05 100644 --- a/tests/unit/electionResults.unit.spec.ts +++ b/tests/unit/electionResults.unit.spec.ts @@ -17,6 +17,8 @@ import { } from '@/lib/electionResults' import { loadTseFixtureResults, loadTseFixtureResultsForYear, TSE_FIXTURE_EXPECTED } from '../helpers/tseFixtures' import { FEDERAL_ONLY_OFFICES } from '@/lib/electionResultsBuild' +import { mergeDuplicateTallyRows, mergeDuplicateVoteRows } from '@/lib/electionResultsParse' +import type { CandidateVoteRow, TseDetalheApuracaoRow } from '@/lib/electionResults' describe('electionResults municipality mapping', () => { it('resolves every canonical Bahia municipality through itself', () => { @@ -167,3 +169,87 @@ describe('electionResults fixture parse + winners', () => { expect(built.votes.every((row) => row.year === 2018)).toBe(true) }) }) + +describe('electionResults "voto em trânsito" merge (2014 presidente duplicate rows)', () => { + const baseVote: CandidateVoteRow = { + year: 2014, + office: 'presidente', + turn: '1', + state: 'BA', + cityCode: '99999', + cityName: 'Feira de Santana', + zoneNumber: 154, + candidateNumber: 13, + candidateName: 'DILMA', + coalition: null, + party: 'PT', + voteType: 'nominal', + votes: 100, + } + + it('sums votes for rows sharing the same scope/zone/candidate key (the trânsito split)', () => { + const merged = mergeDuplicateVoteRows([baseVote, { ...baseVote, votes: 40 }]) + + expect(merged).toHaveLength(1) + expect(merged[0].votes).toBe(140) + }) + + it('keeps rows with a different key separate (no false merge across zones/candidates)', () => { + const otherZone = { ...baseVote, zoneNumber: 155, votes: 10 } + const otherCandidate = { ...baseVote, candidateNumber: 45, votes: 20 } + + const merged = mergeDuplicateVoteRows([baseVote, otherZone, otherCandidate]) + + expect(merged).toHaveLength(3) + expect(merged.reduce((sum, row) => sum + row.votes, 0)).toBe(130) + }) + + it('is a no-op when there is nothing to merge (2018/2022 shape)', () => { + const rows = [baseVote, { ...baseVote, zoneNumber: 1 }] + expect(mergeDuplicateVoteRows(rows)).toEqual(rows) + }) + + const baseTally: TseDetalheApuracaoRow = { + year: 2014, + office: 'presidente', + turn: '1', + state: 'BA', + cityCode: '99999', + cityName: 'Feira de Santana', + zoneNumber: 154, + aptos: 300, + comparecimento: 200, + abstencoes: 100, + votosValidos: 180, + votosNominaisValidos: 175, + votosLegenda: 5, + votosBranco: 10, + votosNulo: 10, + votosAnulados: 0, + } + + it('sums every count field for duplicate tally rows sharing the same scope key', () => { + const merged = mergeDuplicateTallyRows([ + baseTally, + { ...baseTally, aptos: 50, comparecimento: 40, abstencoes: 10, votosValidos: 35, votosNominaisValidos: 33, votosLegenda: 2, votosBranco: 3, votosNulo: 2, votosAnulados: 0 }, + ]) + + expect(merged).toHaveLength(1) + expect(merged[0]).toMatchObject({ + aptos: 350, + comparecimento: 240, + abstencoes: 110, + votosValidos: 215, + votosNominaisValidos: 208, + votosLegenda: 7, + votosBranco: 13, + votosNulo: 12, + votosAnulados: 0, + }) + }) + + it('is a no-op when zones differ', () => { + const rows = [baseTally, { ...baseTally, zoneNumber: 155 }] + expect(mergeDuplicateTallyRows(rows)).toEqual(rows) + }) +}) diff --git a/tests/unit/goalCoverage.unit.spec.ts b/tests/unit/goalCoverage.unit.spec.ts new file mode 100644 index 00000000..54b7e90a --- /dev/null +++ b/tests/unit/goalCoverage.unit.spec.ts @@ -0,0 +1,93 @@ +import { describe, expect, it } from 'vitest' + +import { + aggregateGoalCoverage, + computeGoalCoverage, + computeGoalCoverageByScenario, +} from '@/utilities/goalCoverage' +import { createEmptyMunicipalityPledgeAggregate } from '@/utilities/votePledgeData' + +/** + * Fixes the meta×comprometido semantics locked in the E8 plan audit: a + * municipality can have `expectedVotes` filled by the E4R projection-sheet + * import with ZERO pledges behind it — coverage must report that gap, not + * 100% (which is what `resolveMunicipalityStaffVoteTotal`'s override + * behavior would give if reused here). + */ +describe('computeGoalCoverage', () => { + it('meta = expectedVotes[cenário] when set; comprometido = pledge aggregate only (never the override)', () => { + // Feira de Santana-style case: mesa expects 3000 (E4R sheet, cenário média), + // but only 1200 is backed by declared/estimated pledges. + const aggregate = createEmptyMunicipalityPledgeAggregate() + aggregate.effectiveByScenario.central = 1200 + + const coverage = computeGoalCoverage({ central: 3000 }, 5000, aggregate, 'central') + + expect(coverage.goal).toBe(3000) // NOT 100% — expectedVotes wins over suggestedGoal, not over pledges + expect(coverage.committed).toBe(1200) + expect(coverage.coverageRatio).toBeCloseTo(0.4, 6) + expect(coverage.deficit).toBe(1800) + }) + + it('falls back to suggestedGoal when expectedVotes is unset for that scenario', () => { + const aggregate = createEmptyMunicipalityPledgeAggregate() + aggregate.effectiveByScenario.central = 400 + + const coverage = computeGoalCoverage(null, 1000, aggregate, 'central') + expect(coverage.goal).toBe(1000) + expect(coverage.committed).toBe(400) + expect(coverage.coverageRatio).toBeCloseTo(0.4, 6) + }) + + it('coverageRatio is null (not Infinity/NaN) when goal is zero', () => { + const aggregate = createEmptyMunicipalityPledgeAggregate() + const coverage = computeGoalCoverage(null, 0, aggregate, 'central') + expect(coverage.coverageRatio).toBeNull() + expect(coverage.deficit).toBe(0) + }) + + it('deficit is negative when the municipality is over-committed relative to its goal', () => { + const aggregate = createEmptyMunicipalityPledgeAggregate() + aggregate.effectiveByScenario.central = 1500 + const coverage = computeGoalCoverage(null, 1000, aggregate, 'central') + expect(coverage.deficit).toBe(-500) + expect(coverage.coverageRatio).toBeCloseTo(1.5, 6) + }) + + it('reads each scenario independently (mirrors staffVoteTotalByScenario)', () => { + const aggregate = createEmptyMunicipalityPledgeAggregate() + aggregate.effectiveByScenario.pessimistic = 100 + aggregate.effectiveByScenario.central = 200 + aggregate.effectiveByScenario.optimistic = 300 + + const byScenario = computeGoalCoverageByScenario( + { pessimistic: 500, optimistic: 900 }, + 600, // suggestedGoal fallback used only for 'central' (unset in expectedVotes) + aggregate, + ) + + expect(byScenario.pessimistic.goal).toBe(500) + expect(byScenario.pessimistic.committed).toBe(100) + expect(byScenario.central.goal).toBe(600) // falls back to suggestedGoal + expect(byScenario.central.committed).toBe(200) + expect(byScenario.optimistic.goal).toBe(900) + expect(byScenario.optimistic.committed).toBe(300) + }) +}) + +describe('aggregateGoalCoverage', () => { + it('sums goal and committed across municipalities and recomputes the ratio', () => { + const aggregate = aggregateGoalCoverage([ + { goal: 3000, committed: 1200, coverageRatio: 0.4, deficit: 1800 }, + { goal: 1000, committed: 1000, coverageRatio: 1, deficit: 0 }, + ]) + expect(aggregate.goal).toBe(4000) + expect(aggregate.committed).toBe(2200) + expect(aggregate.coverageRatio).toBeCloseTo(0.55, 6) + expect(aggregate.deficit).toBe(1800) + }) + + it('returns coverageRatio null for an empty list (zero goal)', () => { + expect(aggregateGoalCoverage([]).coverageRatio).toBeNull() + }) +}) diff --git a/tests/unit/municipalityPotential.unit.spec.ts b/tests/unit/municipalityPotential.unit.spec.ts new file mode 100644 index 00000000..6e8bb874 --- /dev/null +++ b/tests/unit/municipalityPotential.unit.spec.ts @@ -0,0 +1,224 @@ +import { describe, expect, it } from 'vitest' + +import type { MunicipalityFederalBaseline } from '@/lib/bahiaElectionAggregates' +import type { BahiaIdentityTerritory } from '@/lib/bahiaTerritories' +import { + captureRate, + decomposeStateGoal, + fieldCeiling, + intraFieldShare, + projectedFieldCeiling, + projectedValidVotes, + rollOff, + sanityCheckSuggestedGoalsByTerritory, + type MunicipalityPotential, +} from '@/utilities/municipalityPotential' + +const baseline = (overrides: Partial = {}): MunicipalityFederalBaseline => ({ + votesByYear: {}, + validVotesByYear: {}, + campoFederalVotesByYear: {}, + federalTallyByYear: {}, + ...overrides, +}) + +describe('projectedValidVotes', () => { + it('weights 2022 double: (v2014 + v2018 + 2×v2022) / 4', () => { + const b = baseline({ validVotesByYear: { '2014': 1000, '2018': 2000, '2022': 3000 } }) + // (1000 + 2000 + 2*3000) / 4 = 9000 / 4 = 2250 + expect(projectedValidVotes(b)).toBe(2250) + }) + + it('treats missing years as zero', () => { + const b = baseline({ validVotesByYear: { '2022': 4000 } }) + expect(projectedValidVotes(b)).toBe(2000) + }) +}) + +describe('fieldCeiling / projectedFieldCeiling', () => { + it('reads the 2022 president #13 votes as the primary ceiling', () => { + const b = baseline({ + majoritarian2022: { + president: { votes: 5000, comparecimento: 8000, votosValidos: 7500, votosBranco: 300, votosNulo: 200 }, + governor: { votes: 5500, comparecimento: 8000, votosValidos: 7500, votosBranco: 300, votosNulo: 200 }, + }, + }) + expect(fieldCeiling(b)).toBe(5000) + }) + + it('is 0 when no majoritarian data is seeded for the slug', () => { + expect(fieldCeiling(baseline())).toBe(0) + }) + + it('scales the ceiling by the projected/observed 2022 valid-vote ratio', () => { + const b = baseline({ + validVotesByYear: { '2014': 4000, '2018': 6000, '2022': 8000 }, + majoritarian2022: { + president: { votes: 5000, comparecimento: 9000, votosValidos: 8500, votosBranco: 300, votosNulo: 200 }, + governor: { votes: 5200, comparecimento: 9000, votosValidos: 8500, votosBranco: 300, votosNulo: 200 }, + }, + }) + // projected = (4000 + 6000 + 2*8000) / 4 = 6500; ratio = 6500/8000 = 0.8125 + expect(projectedFieldCeiling(b)).toBeCloseTo(5000 * 0.8125, 6) + }) + + it('falls back to the unscaled ceiling when 2022 valid votes are unknown', () => { + const b = baseline({ + majoritarian2022: { + president: { votes: 5000, comparecimento: 9000, votosValidos: 8500, votosBranco: 300, votosNulo: 200 }, + governor: { votes: 5200, comparecimento: 9000, votosValidos: 8500, votosBranco: 300, votosNulo: 200 }, + }, + }) + expect(projectedFieldCeiling(b)).toBe(5000) + }) +}) + +describe('captureRate', () => { + it('is Solla 2022 votes over the 2022 field ceiling', () => { + const b = baseline({ + votesByYear: { '2022': 1000 }, + majoritarian2022: { + president: { votes: 5000, comparecimento: 9000, votosValidos: 8500, votosBranco: 300, votosNulo: 200 }, + governor: { votes: 5200, comparecimento: 9000, votosValidos: 8500, votosBranco: 300, votosNulo: 200 }, + }, + }) + expect(captureRate(b)).toBeCloseTo(0.2, 6) + }) + + it('is null when the ceiling is unknown', () => { + expect(captureRate(baseline({ votesByYear: { '2022': 1000 } }))).toBeNull() + }) +}) + +describe('intraFieldShare', () => { + it('is Solla votes over the curated campo federal votes, per year', () => { + const b = baseline({ + votesByYear: { '2018': 800 }, + campoFederalVotesByYear: { '2018': 2000 }, + }) + expect(intraFieldShare(b, 2018)).toBeCloseTo(0.4, 6) + }) + + it('is null when the field polled zero that year', () => { + expect(intraFieldShare(baseline(), 2018)).toBeNull() + }) +}) + +describe('rollOff', () => { + it('is (brancos+nulos DF) − (brancos+nulos majoritária), with percent of turnout', () => { + const b = baseline({ + federalTallyByYear: { + '2022': { comparecimento: 10_000, votosValidos: 9000, votosBranco: 600, votosNulo: 400 }, + }, + majoritarian2022: { + president: { votes: 5000, comparecimento: 10_000, votosValidos: 9600, votosBranco: 250, votosNulo: 150 }, + governor: { votes: 5200, comparecimento: 10_000, votosValidos: 9600, votosBranco: 250, votosNulo: 150 }, + }, + }) + // DF blank+null = 1000; majoritarian blank+null = 400; roll-off = 600 + const result = rollOff(b) + expect(result).not.toBeNull() + expect(result?.votes).toBe(600) + expect(result?.percentOfTurnout).toBeCloseTo(0.06, 6) + }) + + it('is null (2022-only diagnostic) when the majoritarian tally is missing', () => { + const b = baseline({ + federalTallyByYear: { + '2022': { comparecimento: 10_000, votosValidos: 9000, votosBranco: 600, votosNulo: 400 }, + }, + }) + expect(rollOff(b)).toBeNull() + }) + + it('is null for years without a seeded federal tally (2014/2018)', () => { + expect(rollOff(baseline())).toBeNull() + }) +}) + +describe('decomposeStateGoal', () => { + it('splits the state goal proportionally to projectedFieldCeiling, summing back to it', () => { + const potentials = [ + { slug: 'a', projectedFieldCeiling: 1000 }, + { slug: 'b', projectedFieldCeiling: 3000 }, + { slug: 'c', projectedFieldCeiling: 6000 }, + ] + const suggested = decomposeStateGoal(potentials, { stateGoal: 150_000 }) + + expect(suggested.get('a')).toBeCloseTo(15_000, 6) + expect(suggested.get('b')).toBeCloseTo(45_000, 6) + expect(suggested.get('c')).toBeCloseTo(90_000, 6) + + const total = [...suggested.values()].reduce((sum, value) => sum + value, 0) + expect(total).toBeCloseTo(150_000, 6) + }) + + it('falls back to an even split when every ceiling is zero (never NaN)', () => { + const potentials = [ + { slug: 'a', projectedFieldCeiling: 0 }, + { slug: 'b', projectedFieldCeiling: 0 }, + ] + const suggested = decomposeStateGoal(potentials, { stateGoal: 100_000 }) + expect(suggested.get('a')).toBe(50_000) + expect(suggested.get('b')).toBe(50_000) + }) + + it('returns an empty map for an empty potentials list', () => { + expect(decomposeStateGoal([], { stateGoal: 150_000 }).size).toBe(0) + }) +}) + +describe('sanityCheckSuggestedGoalsByTerritory', () => { + const region = 'Litoral Sul' as BahiaIdentityTerritory + const otherRegion = 'Chapada Diamantina' as BahiaIdentityTerritory + + it('never blocks — always returns an array, even when nothing is out of range', () => { + const warnings = sanityCheckSuggestedGoalsByTerritory([ + { region, suggestedGoal: 5000, projectedValidVotes: 20_000 }, + ]) + expect(warnings).toEqual([]) + }) + + it('flags a territory whose decomposed goal total exceeds its projected electorate', () => { + const warnings = sanityCheckSuggestedGoalsByTerritory([ + { region, suggestedGoal: 15_000, projectedValidVotes: 10_000 }, + { region: otherRegion, suggestedGoal: 4_000, projectedValidVotes: 10_000 }, + ]) + expect(warnings).toHaveLength(1) + expect(warnings[0]?.region).toBe(region) + expect(warnings[0]?.ratio).toBeCloseTo(1.5, 6) + }) + + it('ignores territories with no projected electorate (avoids a divide-by-zero false positive)', () => { + const warnings = sanityCheckSuggestedGoalsByTerritory([ + { region, suggestedGoal: 1000, projectedValidVotes: 0 }, + ]) + expect(warnings).toEqual([]) + }) +}) + +describe('computeMunicipalityPotential / computeAllMunicipalityPotentials (real artifact)', () => { + it('returns a well-shaped potential for a real catalog slug and a zeroed one for an unknown slug', async () => { + const { computeMunicipalityPotential } = await import('@/utilities/municipalityPotential') + const { municipalityCatalog } = await import('@/lib/municipalityCatalog') + + const realSlug = municipalityCatalog[0]!.slug + const real: MunicipalityPotential = computeMunicipalityPotential(realSlug) + expect(real.slug).toBe(realSlug) + expect(real.projectedValidVotes).toBeGreaterThanOrEqual(0) + expect(real.projectedFieldCeiling).toBeGreaterThanOrEqual(0) + + const unknown = computeMunicipalityPotential('nao-existe') + expect(unknown.projectedValidVotes).toBe(0) + expect(unknown.fieldCeiling2022).toBe(0) + expect(unknown.rollOff2022).toBeNull() + }) + + it('computeAllMunicipalityPotentials covers exactly the municipality catalog', async () => { + const { computeAllMunicipalityPotentials } = await import('@/utilities/municipalityPotential') + const { municipalityCatalog } = await import('@/lib/municipalityCatalog') + + const potentials = computeAllMunicipalityPotentials() + expect(potentials).toHaveLength(municipalityCatalog.length) + }) +})