tempest-express-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/context.ts","../src/core/logging.ts","../src/core/enums.ts","../src/exceptions/base.ts","../src/exceptions/http.ts","../src/exceptions/i18n.ts","../src/schemas/base.ts","../src/schemas/pagination.ts","../src/settings/base.ts","../src/db/model.ts","../src/services/base.ts","../src/controllers/base.ts","../src/utils/br.ts","../src/utils/data/brLocations.json","../src/utils/locations.ts","../src/utils/datetime.ts","../src/utils/dict.ts","../src/utils/opaqueToken.ts","../src/utils/password.ts","../src/utils/jwt.ts","../src/utils/throttle.ts","../src/auth/schemas.ts","../src/auth/service.ts","../src/auth/middleware.ts","../src/auth/router.ts","../src/api/handlers.ts","../src/api/openapi.ts","../src/api/docs.ts","../src/api/health.ts","../src/api/server.ts","../src/version.ts"],"names":["AsyncLocalStorage","extendZodWithOpenApi","z","Model","column","sql","createHash","randomBytes","timingSafeEqual","cached","createRouter","randomUUID","ZodError","OpenAPIRegistry","OpenApiGeneratorV31","OpenApiGeneratorV3","express","getAbsoluteFSPath","logger"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Request-scoped context propagation via `AsyncLocalStorage`.\n *\n * Mirrors `tempest_fastapi_sdk.core.context`: a per-request id that any layer\n * (logger, exception handler, service) can read without threading it through\n * every call. The store is populated by the request-id middleware and survives\n * across `await` boundaries within the same request.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\n/** The shape of the per-request store. */\nexport interface RequestContext {\n /** Stable id correlating every log line of a single request. */\n requestId: string;\n}\n\nconst storage = new AsyncLocalStorage<RequestContext>();\n\n/**\n * Run `fn` with `context` bound as the active request context.\n *\n * @param context - The context to bind for the duration of `fn`.\n * @param fn - The function to run within the bound context.\n * @returns Whatever `fn` returns.\n */\nexport function runWithRequestContext<T>(context: RequestContext, fn: () => T): T {\n return storage.run(context, fn);\n}\n\n/**\n * Read the current request id, or `null` when called outside a request.\n *\n * @returns The active request id, or `null`.\n */\nexport function getRequestId(): string | null {\n return storage.getStore()?.requestId ?? null;\n}\n\n/**\n * Overwrite the request id on the active context (no-op outside a request).\n *\n * @param requestId - The id to set.\n */\nexport function setRequestId(requestId: string): void {\n const store = storage.getStore();\n if (store) store.requestId = requestId;\n}\n","/**\n * Structured JSON logging, mirroring `tempest_fastapi_sdk.core.logging`.\n *\n * Emits one JSON object per line to stdout (or stderr for `error`), enriched\n * with the active request id. Server errors (`500`) carry the\n * {@link HTTP_500_MARKER} flag so an external log router can split them into a\n * dedicated `500.log` sink.\n */\n\nimport { getRequestId } from \"@/core/context\";\n\n/** Flag key marking a record as a captured HTTP 500 for sink routing. */\nexport const HTTP_500_MARKER = \"http_500\";\n\n/** Severity levels, ordered from least to most severe. */\nexport type LogLevel = \"debug\" | \"info\" | \"warning\" | \"error\";\n\nconst LEVEL_ORDER: Record<LogLevel, number> = {\n debug: 10,\n info: 20,\n warning: 30,\n error: 40,\n};\n\n/** Free-form structured context merged into the emitted record. */\nexport type LogExtra = Record<string, unknown>;\n\n/** A minimal structured logger writing one JSON line per record. */\nexport class JSONLogger {\n /**\n * @param name - Logger name embedded in every record.\n * @param level - Minimum level to emit; quieter records are dropped.\n */\n constructor(\n private readonly name: string,\n private readonly level: LogLevel = \"info\",\n ) {}\n\n /** Log a debug-level message. */\n debug(message: string, extra?: LogExtra): void {\n this.log(\"debug\", message, extra);\n }\n\n /** Log an info-level message. */\n info(message: string, extra?: LogExtra): void {\n this.log(\"info\", message, extra);\n }\n\n /** Log a warning-level message. */\n warning(message: string, extra?: LogExtra): void {\n this.log(\"warning\", message, extra);\n }\n\n /** Log an error-level message. */\n error(message: string, extra?: LogExtra): void {\n this.log(\"error\", message, extra);\n }\n\n /**\n * Emit a record at `level` when it clears the configured threshold.\n *\n * @param level - The record severity.\n * @param message - The human-readable message.\n * @param extra - Structured context merged into the record.\n */\n log(level: LogLevel, message: string, extra?: LogExtra): void {\n if (LEVEL_ORDER[level] < LEVEL_ORDER[this.level]) return;\n const record: Record<string, unknown> = {\n level,\n logger: this.name,\n message,\n requestId: getRequestId(),\n ...extra,\n };\n const line = JSON.stringify(record);\n if (level === \"error\") process.stderr.write(`${line}\\n`);\n else process.stdout.write(`${line}\\n`);\n }\n}\n\n/**\n * Build a {@link JSONLogger}.\n *\n * @param name - Logger name.\n * @param level - Minimum level to emit (defaults to `info`).\n * @returns A configured logger.\n */\nexport function configureLogging(name: string, level: LogLevel = \"info\"): JSONLogger {\n return new JSONLogger(name, level);\n}\n","/**\n * Enum helpers mirroring `BaseStrEnum` / `BaseIntEnum`.\n *\n * TypeScript has no Python-style `Enum`, so this module offers a factory that\n * turns a plain literal map into a frozen object carrying the same\n * introspection helpers (`values`/`keys`/`choices`/`has`/`from`) the FastAPI\n * SDK exposes. The inferred type is the literal union of the member values, so\n * it stays as strongly typed as a hand-written `as const` map.\n */\n\n/** A member-name → member-value map (string- or number-valued). */\nexport type EnumSpec = Record<string, string | number>;\n\n/** Introspection helpers attached to every built enum. */\nexport interface EnumHelpers<S extends EnumSpec> {\n /** Every member value, in declaration order. */\n values(): Array<S[keyof S]>;\n /** Every member name, in declaration order. */\n keys(): Array<keyof S & string>;\n /** `[value, name]` pairs, e.g. for building `<select>` options. */\n choices(): Array<[S[keyof S], keyof S & string]>;\n /** Whether `value` is the value of some member. */\n hasValue(value: unknown): value is S[keyof S];\n /** Whether `key` is the name of some member. */\n hasKey(key: string): key is keyof S & string;\n /** Resolve a member value from a raw value or member name, else `fallback`. */\n from(value: unknown, fallback?: S[keyof S]): S[keyof S] | undefined;\n}\n\n/** A built enum: the literal member map plus {@link EnumHelpers}. */\nexport type Enum<S extends EnumSpec> = Readonly<S> & EnumHelpers<S>;\n\n/**\n * Build a frozen enum object with introspection helpers from a literal spec.\n *\n * @param spec - The member-name → value map. Pass it inline so TypeScript\n * infers the precise literal union (e.g. `defineEnum({ RED: \"red\" })`).\n * @returns The frozen members merged with {@link EnumHelpers}.\n */\nexport function defineEnum<const S extends EnumSpec>(spec: S): Enum<S> {\n const names = Object.keys(spec) as Array<keyof S & string>;\n const valueSet = new Set<unknown>(names.map((name) => spec[name]));\n\n const helpers: EnumHelpers<S> = {\n values: () => names.map((name) => spec[name]) as Array<S[keyof S]>,\n keys: () => [...names],\n choices: () =>\n names.map((name) => [spec[name], name]) as Array<[S[keyof S], keyof S & string]>,\n hasValue: (value: unknown): value is S[keyof S] => valueSet.has(value),\n hasKey: (key: string): key is keyof S & string => key in spec,\n from: (value: unknown, fallback?: S[keyof S]): S[keyof S] | undefined => {\n if (valueSet.has(value)) return value as S[keyof S];\n if (typeof value === \"string\" && value in spec) return spec[value] as S[keyof S];\n return fallback;\n },\n };\n\n return Object.freeze({ ...spec, ...helpers }) as Enum<S>;\n}\n","/**\n * Base application exception.\n *\n * Mirrors `tempest_fastapi_sdk.exceptions.base.AppException`: a single base any\n * layer can throw, carrying an HTTP status, a stable machine-readable `code`,\n * free-form `details`, optional response `headers`, and localization hooks\n * (`messageKey` / `messageParams`). The exception handler\n * ({@link registerExceptionHandlers}) serializes it to the canonical envelope:\n *\n * ```json\n * { \"detail\": \"<message>\", \"code\": \"<code>\", \"details\": { } }\n * ```\n *\n * Concrete projects either throw a domain subclass (for `instanceof` matching)\n * or the base directly, overriding fields via the constructor options.\n */\n\n/** Free-form structured context attached to the response payload. */\nexport type ExceptionDetails = Record<string, unknown>;\n\n/** Constructor options for {@link AppException} and subclasses. */\nexport interface AppExceptionOptions {\n /** Override the default message; used verbatim as `detail` absent a catalog. */\n message?: string;\n /** Override the default machine-readable code on this instance only. */\n code?: string;\n /** Override the default HTTP status code on this instance only. */\n statusCode?: number;\n /** Structured context merged into the JSON response `details`. */\n details?: ExceptionDetails;\n /** Extra HTTP response headers. */\n headers?: Record<string, string>;\n /** Catalog key used to localize `detail`; falls back to `code`. */\n messageKey?: string;\n /** Values interpolated into the localized message template. */\n messageParams?: Record<string, unknown>;\n}\n\nexport class AppException extends Error {\n /** Default HTTP status code for the class. */\n static statusCode = 500;\n /** Default human-readable message for the class. */\n static message = \"Internal server error\";\n /** Default machine-readable code for the class. */\n static code = \"INTERNAL_SERVER_ERROR\";\n /** Default catalog key for the class (falls back to `code`). */\n static messageKey: string | null = null;\n\n readonly statusCode: number;\n readonly code: string;\n readonly details: ExceptionDetails;\n readonly headers: Record<string, string>;\n readonly messageKey: string | null;\n readonly messageParams: Record<string, unknown>;\n\n /**\n * @param options - Per-instance overrides; omitted fields fall back to the\n * static class defaults.\n */\n constructor(options: AppExceptionOptions = {}) {\n const cls = new.target as typeof AppException;\n super(options.message ?? cls.message);\n this.name = cls.name;\n this.statusCode = options.statusCode ?? cls.statusCode;\n this.code = options.code ?? cls.code;\n this.details = options.details ?? {};\n this.headers = options.headers ?? {};\n this.messageKey = options.messageKey ?? cls.messageKey;\n this.messageParams = options.messageParams ?? {};\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * Concrete HTTP exception subclasses, mirroring the FastAPI SDK hierarchy.\n *\n * Each exists primarily for `instanceof` matching and to carry a sane default\n * status/code/message. Throw them directly or subclass further for domain\n * errors (e.g. `class UserNotFound extends NotFoundException {}`).\n */\n\nimport {\n AppException,\n type AppExceptionOptions,\n type ExceptionDetails,\n} from \"@/exceptions/base\";\n\n/** 409 — a write would violate a uniqueness/integrity rule. */\nexport class ConflictException extends AppException {\n static override statusCode = 409;\n static override message = \"Resource conflict\";\n static override code = \"CONFLICT\";\n}\n\n/** 404 — a single resource could not be located. Never for collections. */\nexport class NotFoundException extends AppException {\n static override statusCode = 404;\n static override message = \"Resource not found\";\n static override code = \"NOT_FOUND\";\n}\n\n/** 401 — the caller is not authenticated. */\nexport class UnauthorizedException extends AppException {\n static override statusCode = 401;\n static override message = \"Unauthorized\";\n static override code = \"UNAUTHORIZED\";\n}\n\n/** 403 — the caller is authenticated but lacks permission. */\nexport class ForbiddenException extends AppException {\n static override statusCode = 403;\n static override message = \"Forbidden\";\n static override code = \"FORBIDDEN\";\n}\n\n/** 422 — input failed a business rule beyond schema validation. */\nexport class ValidationException extends AppException {\n static override statusCode = 422;\n static override message = \"Validation error\";\n static override code = \"VALIDATION_ERROR\";\n}\n\n/** 401 — a JWT failed signature or claim validation. */\nexport class InvalidTokenException extends UnauthorizedException {\n static override message = \"Invalid token\";\n static override code = \"INVALID_TOKEN\";\n}\n\n/** 401 — a JWT's `exp` claim is in the past. */\nexport class ExpiredTokenException extends UnauthorizedException {\n static override message = \"Token expired\";\n static override code = \"TOKEN_EXPIRED\";\n}\n\n/** Options for {@link TooManyRequestsException}, adding a cooldown. */\nexport interface TooManyRequestsOptions extends AppExceptionOptions {\n /** Cooldown in seconds; sets `Retry-After` and `details.retryAfterSeconds`. */\n retryAfterSeconds?: number;\n}\n\n/** 429 — the client exceeded a rate limit or attempt budget. */\nexport class TooManyRequestsException extends AppException {\n static override statusCode = 429;\n static override message = \"Too many requests\";\n static override code = \"TOO_MANY_REQUESTS\";\n\n /**\n * @param options - Standard options plus an optional `retryAfterSeconds`\n * that populates both the `Retry-After` header and `details`.\n */\n constructor(options: TooManyRequestsOptions = {}) {\n const { retryAfterSeconds, details, headers, ...rest } = options;\n const mergedDetails: ExceptionDetails = { ...details };\n const mergedHeaders: Record<string, string> = { ...headers };\n if (retryAfterSeconds !== undefined) {\n mergedDetails.retryAfterSeconds ??= retryAfterSeconds;\n mergedHeaders[\"Retry-After\"] ??= String(retryAfterSeconds);\n }\n super({ ...rest, details: mergedDetails, headers: mergedHeaders });\n }\n}\n","/**\n * Lightweight message localization, mirroring `exceptions.i18n`.\n *\n * A {@link MessageCatalog} maps `code` → `{ locale: template }`. The exception\n * handler negotiates a locale from the request `Accept-Language` header and\n * resolves the exception's `messageKey` (or `code`) into a localized `detail`,\n * interpolating `messageParams` via `{name}` placeholders. A missing\n * translation falls back to the literal message, so partial catalogs are safe.\n */\n\n/** Default locale used when negotiation finds no match. */\nexport const DEFAULT_LOCALE = \"en\";\n\n/** A `code` → (`locale` → template) translation table. */\nexport type CatalogData = Record<string, Record<string, string>>;\n\n/**\n * Parse an `Accept-Language` header into locales ordered by descending `q`.\n *\n * @param header - The raw header value, or `null`/`undefined`.\n * @returns Lower-cased language tags, highest quality first.\n */\nexport function parseAcceptLanguage(header: string | null | undefined): string[] {\n if (!header) return [];\n return header\n .split(\",\")\n .map((part) => {\n const [tag, ...params] = part.trim().split(\";\");\n const q = params\n .map((p) => p.trim())\n .find((p) => p.startsWith(\"q=\"))\n ?.slice(2);\n return { tag: (tag ?? \"\").trim().toLowerCase(), q: q ? Number(q) : 1 };\n })\n .filter((entry) => entry.tag.length > 0 && !Number.isNaN(entry.q))\n .sort((a, b) => b.q - a.q)\n .map((entry) => entry.tag);\n}\n\n/** Interpolate `{name}` placeholders in `template` with `params`. */\nfunction interpolate(template: string, params: Record<string, unknown>): string {\n return template.replace(/\\{(\\w+)\\}/g, (match, key: string) =>\n key in params ? String(params[key]) : match,\n );\n}\n\n/** A localized message catalog keyed by error `code`. */\nexport class MessageCatalog {\n /**\n * @param data - The translation table.\n * @param defaultLocale - Locale used when negotiation matches nothing.\n */\n constructor(\n private readonly data: CatalogData = {},\n private readonly defaultLocale: string = DEFAULT_LOCALE,\n ) {}\n\n /**\n * Pick the best locale for an `Accept-Language` header.\n *\n * Matches exact tags first, then the primary subtag (`pt-br` → `pt`),\n * falling back to `defaultLocale`.\n *\n * @param header - The raw `Accept-Language` value.\n * @param defaultLocale - Override the catalog's default for this call.\n * @returns The negotiated locale tag.\n */\n negotiate(header: string | null | undefined, defaultLocale?: string): string {\n const fallback = defaultLocale ?? this.defaultLocale;\n const available = new Set<string>();\n for (const byLocale of Object.values(this.data)) {\n for (const locale of Object.keys(byLocale)) available.add(locale.toLowerCase());\n }\n for (const tag of parseAcceptLanguage(header)) {\n if (available.has(tag)) return tag;\n const primary = tag.split(\"-\")[0];\n if (primary && available.has(primary)) return primary;\n }\n return fallback;\n }\n\n /**\n * Resolve a localized message for `code` in `locale`.\n *\n * @param code - The catalog key (an exception's `messageKey` or `code`).\n * @param locale - The negotiated locale.\n * @param params - Values interpolated into the template.\n * @returns The localized string, or `null` when no template exists.\n */\n resolve(\n code: string,\n locale: string,\n params: Record<string, unknown> = {},\n ): string | null {\n const byLocale = this.data[code];\n if (!byLocale) return null;\n const template = byLocale[locale] ?? byLocale[this.defaultLocale];\n return template ? interpolate(template, params) : null;\n }\n}\n\n/** Build an empty default catalog. */\nexport function defaultMessageCatalog(): MessageCatalog {\n return new MessageCatalog();\n}\n","/**\n * Zod foundation shared by every DTO, mirroring `schemas.base.BaseSchema`.\n *\n * Pydantic uses class inheritance for shared config; Zod composes instead. This\n * module re-exports a `z` already augmented with `.openapi()` (so every schema\n * can carry OpenAPI metadata) and a {@link toDict} helper matching\n * `BaseSchema.to_dict` (drop nullish, exclude keys, merge extras).\n */\n\nimport { extendZodWithOpenApi } from \"@asteasolutions/zod-to-openapi\";\nimport { z } from \"zod\";\n\n// Augment the shared `z` instance with `.openapi(...)`. Idempotent — calling it\n// more than once across modules is safe.\nextendZodWithOpenApi(z);\n\nexport { z };\n\n/** Options for {@link toDict}. */\nexport interface ToDictOptions {\n /** Field names to drop from the output. */\n exclude?: string[];\n /** Extra entries merged on top (override existing keys). */\n include?: Record<string, unknown>;\n}\n\n/**\n * Serialize a validated object to a plain record, dropping `null`/`undefined`,\n * removing `exclude`d keys and merging `include` on top.\n *\n * @param data - The source object (typically a parsed schema).\n * @param options - Keys to exclude and entries to merge in.\n * @returns The cleaned record.\n */\nexport function toDict(\n data: Record<string, unknown>,\n options: ToDictOptions = {},\n): Record<string, unknown> {\n const exclude = new Set(options.exclude ?? []);\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (exclude.has(key)) continue;\n if (value === null || value === undefined) continue;\n out[key] = value;\n }\n return { ...out, ...(options.include ?? {}) };\n}\n\n/**\n * Response schema fields every ORM record carries (`id`, `isActive`,\n * `createdAt`, `updatedAt`). Mirrors `BaseResponseSchema`. Extend it with\n * `baseResponseSchema.extend({ ... })` to build concrete `*ResponseSchema`s.\n */\nexport const baseResponseSchema = z.object({\n id: z.string().uuid().openapi({ description: \"The unique identifier of the record.\" }),\n isActive: z\n .boolean()\n .openapi({ description: \"Whether the record is active (soft-delete flag).\" }),\n createdAt: z.coerce\n .date()\n .openapi({ description: \"The creation timestamp of the record (UTC).\" }),\n updatedAt: z.coerce\n .date()\n .openapi({ description: \"The last update timestamp of the record (UTC).\" }),\n});\n\n/** The inferred TS type of a {@link baseResponseSchema} payload. */\nexport type BaseResponse = z.infer<typeof baseResponseSchema>;\n","/**\n * Pagination request/response primitives, mirroring `schemas.pagination`.\n *\n * Offset pagination ({@link paginationFilterSchema} / {@link paginationSchema})\n * and cursor pagination ({@link cursorPaginationFilterSchema} /\n * {@link cursorPaginationSchema}). Field names match the `tempest-db-js`\n * `BaseRepository.paginate` arguments so a parsed filter forwards through with\n * no renaming.\n */\n\nimport { type ToDictOptions, toDict, z } from \"@/schemas/base\";\n\n/**\n * Filter schema for offset-paginated list endpoints. Subclass via `.extend`\n * to add domain filters; {@link getConditions} strips the pagination keys.\n */\nexport const paginationFilterSchema = z.object({\n page: z.coerce\n .number()\n .int()\n .min(1)\n .default(1)\n .openapi({ description: \"The page number to retrieve (1-indexed).\" }),\n pageSize: z.coerce\n .number()\n .int()\n .min(1)\n .default(20)\n .openapi({ description: \"The number of items per page.\" }),\n orderBy: z\n .string()\n .optional()\n .openapi({ description: \"Column to order by; defaults to repository default.\" }),\n ascending: z.coerce\n .boolean()\n .default(true)\n .openapi({ description: \"Whether to order results ascending.\" }),\n});\n\n/** The parsed shape of {@link paginationFilterSchema}. */\nexport type PaginationFilter = z.infer<typeof paginationFilterSchema>;\n\nconst PAGINATION_KEYS = [\"page\", \"pageSize\", \"orderBy\", \"ascending\"];\n\n/**\n * Strip pagination/sort keys from a parsed filter, leaving only domain filters.\n *\n * @param filter - The parsed filter object (may carry extra domain fields).\n * @param options - Extra exclude/include passed through to {@link toDict}.\n * @returns The domain-level filter conditions.\n */\nexport function getConditions(\n filter: Record<string, unknown>,\n options: ToDictOptions = {},\n): Record<string, unknown> {\n return toDict(filter, {\n ...options,\n exclude: [...PAGINATION_KEYS, ...(options.exclude ?? [])],\n });\n}\n\n/**\n * The pagination/sort keyword arguments to forward to `BaseRepository.paginate`.\n *\n * @param filter - The parsed pagination filter.\n * @returns `{ page, pageSize, orderBy, ascending }`.\n */\nexport function getPaginationConditions(filter: PaginationFilter): {\n page: number;\n pageSize: number;\n orderBy?: string;\n ascending: boolean;\n} {\n return {\n page: filter.page,\n pageSize: filter.pageSize,\n ...(filter.orderBy !== undefined ? { orderBy: filter.orderBy } : {}),\n ascending: filter.ascending,\n };\n}\n\n/**\n * Build the offset-pagination response envelope for a given item schema.\n *\n * @param item - The zod schema for a single item.\n * @returns A zod object schema `{ items, total, page, pageSize, pages }`.\n */\nexport function paginationSchema<T extends z.ZodTypeAny>(item: T) {\n return z.object({\n items: z.array(item).openapi({ description: \"The items on the current page.\" }),\n total: z\n .number()\n .int()\n .min(0)\n .openapi({ description: \"Total items across all pages.\" }),\n page: z.number().int().min(1).openapi({ description: \"Current page (1-indexed).\" }),\n pageSize: z.number().int().min(1).openapi({ description: \"Items per page.\" }),\n pages: z.number().int().min(0).openapi({ description: \"Total number of pages.\" }),\n });\n}\n\n/** Filter schema for cursor-paginated endpoints. */\nexport const cursorPaginationFilterSchema = z.object({\n cursor: z\n .string()\n .optional()\n .openapi({ description: \"Opaque cursor; omit for the first page.\" }),\n limit: z.coerce\n .number()\n .int()\n .min(1)\n .max(500)\n .default(20)\n .openapi({ description: \"Maximum number of items to return.\" }),\n orderBy: z.string().default(\"createdAt\").openapi({ description: \"Column to sort by.\" }),\n ascending: z.coerce\n .boolean()\n .default(false)\n .openapi({ description: \"Whether to sort ascending (default newest first).\" }),\n});\n\n/** The parsed shape of {@link cursorPaginationFilterSchema}. */\nexport type CursorPaginationFilter = z.infer<typeof cursorPaginationFilterSchema>;\n\n/**\n * Build the cursor-pagination response envelope for a given item schema.\n *\n * @param item - The zod schema for a single item.\n * @returns A zod object schema `{ items, nextCursor, hasMore, limit }`.\n */\nexport function cursorPaginationSchema<T extends z.ZodTypeAny>(item: T) {\n return z.object({\n items: z.array(item).openapi({ description: \"The items on the current page.\" }),\n nextCursor: z\n .string()\n .nullable()\n .openapi({ description: \"Cursor for the next page, or null when exhausted.\" }),\n hasMore: z.boolean().openapi({ description: \"Whether another page is available.\" }),\n limit: z.number().int().min(1).openapi({ description: \"The page size used.\" }),\n });\n}\n\n/**\n * Serialize a cursor payload to an opaque URL-safe base64 string (no padding).\n *\n * @param payload - The cursor state, e.g. `{ id, value }`.\n * @returns The encoded cursor.\n */\nexport function encodeCursor(payload: Record<string, unknown>): string {\n const json = JSON.stringify(payload);\n return Buffer.from(json, \"utf8\").toString(\"base64url\");\n}\n\n/**\n * Decode a cursor produced by {@link encodeCursor}.\n *\n * @param cursor - The opaque cursor string.\n * @returns The decoded payload.\n * @throws {Error} When the cursor is not valid base64 or not a JSON object.\n */\nexport function decodeCursor(cursor: string): Record<string, unknown> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(Buffer.from(cursor, \"base64url\").toString(\"utf8\"));\n } catch (cause) {\n throw new Error(\"Invalid cursor\", { cause });\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n throw new Error(\"Invalid cursor payload\");\n }\n return parsed as Record<string, unknown>;\n}\n","/**\n * Environment-driven settings, mirroring `settings.base.BaseAppSettings`.\n *\n * Pydantic-settings reads env vars into a frozen, validated model. Here a zod\n * schema plays the same role: {@link loadSettings} parses `process.env` (env\n * names are matched case-sensitively, like the FastAPI SDK) and returns a\n * frozen, fully-typed object. Composable fragments ({@link serverSettingsShape}\n * etc.) cover the common server/database/CORS knobs.\n */\n\nimport { z } from \"@/schemas/base\";\n\n/** Server bind/runtime settings. Defaults bind to localhost. */\nexport const serverSettingsShape = {\n HOST: z.string().default(\"127.0.0.1\"),\n PORT: z.coerce.number().int().min(0).max(65535).default(8000),\n DEBUG: z.coerce.boolean().default(false),\n} as const;\n\n/** Database connection settings. */\nexport const databaseSettingsShape = {\n DATABASE_URL: z.string().default(\"sqlite://./app.db\"),\n} as const;\n\n/** CORS settings. `CORS_ORIGINS` is a comma-separated list. */\nexport const corsSettingsShape = {\n CORS_ORIGINS: z\n .string()\n .default(\"*\")\n .transform((value) =>\n value\n .split(\",\")\n .map((origin) => origin.trim())\n .filter((origin) => origin.length > 0),\n ),\n} as const;\n\n/** The combined base settings shape (server + database + CORS). */\nexport const baseAppSettingsShape = {\n ...serverSettingsShape,\n ...databaseSettingsShape,\n ...corsSettingsShape,\n} as const;\n\n/** A zod object built from {@link baseAppSettingsShape}. */\nexport const baseAppSettingsSchema = z.object(baseAppSettingsShape);\n\n/** The parsed shape of {@link baseAppSettingsSchema}. */\nexport type BaseAppSettings = z.infer<typeof baseAppSettingsSchema>;\n\n/**\n * Parse and freeze settings from an environment source.\n *\n * Extend the base shape with project fields:\n *\n * ```ts\n * const settings = loadSettings(\n * z.object({ ...baseAppSettingsShape, JWT_SECRET: z.string() }),\n * );\n * ```\n *\n * @param schema - The settings zod schema.\n * @param env - The environment source (defaults to `process.env`).\n * @returns The validated, frozen settings object.\n * @throws {z.ZodError} When required env vars are missing or malformed.\n */\nexport function loadSettings<S extends z.ZodTypeAny>(\n schema: S,\n env: NodeJS.ProcessEnv = process.env,\n): Readonly<z.infer<S>> {\n return Object.freeze(schema.parse(env));\n}\n","/**\n * Canonical base ORM model + opt-in column mixins, mirroring `db.model` /\n * `db.mixins`.\n *\n * `tempest-db-js` models are declarative classes whose fields are runtime\n * column builders. {@link BaseModel} gives every model the four columns the SDK\n * conventions require — `id` (UUID primary key), `isActive` (soft-delete flag),\n * `createdAt` and `updatedAt` (DB-managed timestamps) — so a concrete model\n * only declares its own domain columns plus a `tablename`.\n *\n * TypeScript has no multiple inheritance, so the \"mixins\" ship as reusable\n * column-builder factories ({@link deletedAtColumn} etc.) you assign as fields,\n * rather than as base classes.\n */\n\nimport { Model, column, sql } from \"tempest-db-js\";\n\n/** Convert `CamelCase` to `snake_case` (e.g. `OrderItem` → `order_item`). */\nfunction toSnakeCase(name: string): string {\n return name.replace(/(?<!^)(?=[A-Z])/g, \"_\").toLowerCase();\n}\n\n/**\n * Derive a conventional table name from a model class name: the trailing\n * `Model` suffix is stripped and the rest snake-cased (`UserModel` → `user`).\n *\n * @param className - The model class name.\n * @returns The derived table name.\n */\nexport function tableNameFor(className: string): string {\n return toSnakeCase(className.replace(/Model$/, \"\"));\n}\n\n/**\n * Abstract base for every model. Concrete models extend it, set a static\n * `tablename`, and declare their own columns:\n *\n * ```ts\n * class UserModel extends BaseModel {\n * static tablename = tableNameFor(\"UserModel\"); // \"user\"\n * email = column.varchar(320).notNull();\n * name = column.text().notNull();\n * }\n * ```\n */\nexport abstract class BaseModel extends Model {\n /** Primary key — a UUID v4 generated on insert. */\n id = column.uuid().primaryKey().default(sql.uuidv4());\n /** Soft-delete flag; `true` means the record is active. */\n isActive = column.boolean().notNull().default(true);\n /** Creation timestamp, set by the database on insert. */\n createdAt = column.datetime().notNull().default(sql.now());\n /** Last-update timestamp, refreshed by the database on every update. */\n updatedAt = column.datetime().notNull().default(sql.now()).onUpdate(sql.now());\n}\n\n/**\n * Soft-delete timestamp column (`deleted_at`). `null` while the row is alive;\n * set when soft-deleted. Pairs with {@link BaseModel.isActive}.\n *\n * @returns A nullable datetime column builder, defaulting to `null`.\n */\nexport function deletedAtColumn() {\n return column.datetime();\n}\n\n/**\n * `created_by` audit column: UUID of the user that created the row.\n *\n * @returns A nullable UUID column builder.\n */\nexport function createdByColumn() {\n return column.uuid();\n}\n\n/**\n * `updated_by` audit column: UUID of the user that last updated the row.\n *\n * @returns A nullable UUID column builder.\n */\nexport function updatedByColumn() {\n return column.uuid();\n}\n","/**\n * Generic async service over a `tempest-db-js` repository.\n *\n * Mirrors `services.base.BaseService`: a thin business-logic layer wrapping a\n * `BaseRepository`. Unlike a pure pass-through, every read method maps the raw\n * ORM row through {@link ResponseMapper} into the response shape routers and\n * controllers consume — that mapping is the layer's reason to exist. Override\n * methods that need orchestration (multi-repository writes, side effects,\n * domain rules); leave the rest.\n */\n\nimport type {\n BaseRepository,\n InferInsert,\n InferModel,\n ModelClass,\n PaginationResult,\n RepositoryPaginationFilter,\n WhereInput,\n} from \"@/db\";\n\n/** Maps a raw ORM row to the response shape (sync or async). */\nexport type ResponseMapper<C extends ModelClass, Resp> = (\n row: InferModel<C>,\n) => Resp | Promise<Resp>;\n\nexport class BaseService<C extends ModelClass, Resp> {\n /**\n * @param repository - The repository to delegate persistence to.\n * @param mapToResponse - Maps a raw row to the response shape.\n */\n constructor(\n protected readonly repository: BaseRepository<C>,\n protected readonly mapToResponse: ResponseMapper<C, Resp>,\n ) {}\n\n /** Map a batch of rows to responses, preserving order. */\n protected mapMany(rows: InferModel<C>[]): Promise<Resp[]> {\n return Promise.all(rows.map((row) => this.mapToResponse(row)));\n }\n\n /**\n * Fetch a single record by primary key and map it.\n *\n * @param id - The primary-key value.\n * @returns The mapped response.\n * @throws {RecordNotFound} When no row matches (404 convention).\n */\n async getById(id: unknown): Promise<Resp> {\n return this.mapToResponse(await this.repository.getById(id));\n }\n\n /**\n * List records matching `filters` (or all), mapped to responses.\n *\n * @param filters - Optional filter conditions.\n * @returns The mapped responses; `[]` when nothing matches.\n */\n async list(filters?: WhereInput<InferModel<C>>): Promise<Resp[]> {\n return this.mapMany(await this.repository.list(filters));\n }\n\n /**\n * Count records matching `filters` (or the whole table).\n *\n * @param filters - Optional filter conditions.\n * @returns The matching row count.\n */\n async count(filters?: WhereInput<InferModel<C>>): Promise<number> {\n return this.repository.count(filters);\n }\n\n /**\n * Insert one record and map the created row.\n *\n * @param data - The insert payload.\n * @returns The mapped, created response.\n */\n async create(data: InferInsert<C>): Promise<Resp> {\n return this.mapToResponse(await this.repository.create(data));\n }\n\n /**\n * Update records matching `filters`.\n *\n * @param filters - Which rows to update.\n * @param set - The partial column values to write.\n * @returns The number of rows affected.\n */\n async update(\n filters: WhereInput<InferModel<C>>,\n set: Partial<InferModel<C>>,\n ): Promise<number> {\n return this.repository.update(filters, set);\n }\n\n /**\n * Delete records matching `filters`.\n *\n * @param filters - Which rows to delete.\n * @returns The number of rows affected.\n */\n async delete(filters: WhereInput<InferModel<C>>): Promise<number> {\n return this.repository.delete(filters);\n }\n\n /**\n * Fetch a page of records with the items mapped to responses.\n *\n * @param filter - Page, size, ordering and filters.\n * @returns The page envelope with mapped items.\n */\n async paginate(\n filter: RepositoryPaginationFilter<InferModel<C>> = {},\n ): Promise<PaginationResult<Resp>> {\n const page = await this.repository.paginate(filter);\n return { ...page, items: await this.mapMany(page.items) };\n }\n}\n","/**\n * Generic controller bridging routers and services.\n *\n * Mirrors `controllers.base.BaseController`. Per the SDK layering\n * (router → controller → service → repository), controllers are an intentional\n * abstraction boundary kept present even when no orchestration is required, so\n * the import graph stays uniform across services. Override a method when one\n * endpoint must call several services or apply cross-cutting policy; otherwise\n * the thin delegations stand in for the boundary.\n */\n\nimport type {\n InferInsert,\n InferModel,\n ModelClass,\n PaginationResult,\n RepositoryPaginationFilter,\n WhereInput,\n} from \"@/db\";\nimport type { BaseService } from \"@/services/base\";\n\nexport class BaseController<C extends ModelClass, Resp> {\n /**\n * @param service - The service the controller delegates to.\n */\n constructor(protected readonly service: BaseService<C, Resp>) {}\n\n /**\n * Fetch one record by primary key.\n *\n * @param id - The primary-key value.\n * @returns The mapped response.\n */\n getById(id: unknown): Promise<Resp> {\n return this.service.getById(id);\n }\n\n /**\n * List records matching `filters`.\n *\n * @param filters - Optional filter conditions.\n * @returns The mapped responses.\n */\n list(filters?: WhereInput<InferModel<C>>): Promise<Resp[]> {\n return this.service.list(filters);\n }\n\n /**\n * Count records matching `filters`.\n *\n * @param filters - Optional filter conditions.\n * @returns The matching row count.\n */\n count(filters?: WhereInput<InferModel<C>>): Promise<number> {\n return this.service.count(filters);\n }\n\n /**\n * Create a record.\n *\n * @param data - The insert payload.\n * @returns The mapped, created response.\n */\n create(data: InferInsert<C>): Promise<Resp> {\n return this.service.create(data);\n }\n\n /**\n * Update records matching `filters`.\n *\n * @param filters - Which rows to update.\n * @param set - The partial column values to write.\n * @returns The number of rows affected.\n */\n update(\n filters: WhereInput<InferModel<C>>,\n set: Partial<InferModel<C>>,\n ): Promise<number> {\n return this.service.update(filters, set);\n }\n\n /**\n * Delete records matching `filters`.\n *\n * @param filters - Which rows to delete.\n * @returns The number of rows affected.\n */\n delete(filters: WhereInput<InferModel<C>>): Promise<number> {\n return this.service.delete(filters);\n }\n\n /**\n * Fetch a page of records.\n *\n * @param filter - Page, size, ordering and filters.\n * @returns The page envelope with mapped items.\n */\n paginate(\n filter: RepositoryPaginationFilter<InferModel<C>> = {},\n ): Promise<PaginationResult<Resp>> {\n return this.service.paginate(filter);\n }\n}\n","/**\n * Brazilian identity/contact helpers, mirroring `utils.regex`.\n *\n * Patterns, validators (format + check digits), normalizers, and ready-to-use\n * Zod field schemas for the fields that show up in almost every BR API: CPF,\n * CNPJ, CEP and phone. Validators accept masked or unmasked input; normalizers\n * strip masks to a canonical digits-only form (and throw on invalid input).\n */\n\nimport { z } from \"@/schemas/base\";\n\n/** Match a CPF in masked (`000.000.000-00`) or raw form. */\nexport const CPF_PATTERN = /^\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}$/;\n/** Match a CNPJ in masked (`00.000.000/0000-00`) or raw form. */\nexport const CNPJ_PATTERN = /^\\d{2}\\.?\\d{3}\\.?\\d{3}\\/?\\d{4}-?\\d{2}$/;\n/** Match a BR phone with optional `+55`, DDD, mask or 9th digit. */\nexport const PHONE_BR_PATTERN = /^(?:\\+?55\\s?)?(?:\\(?\\d{2}\\)?\\s?)?9?\\d{4}[-\\s]?\\d{4}$/;\n/** Match a CEP in masked (`00000-000`) or raw form. */\nexport const CEP_PATTERN = /^\\d{5}-?\\d{3}$/;\n\n/**\n * Strip every non-digit character from `value`.\n *\n * @param value - The raw input (masked CPF, phone, etc.).\n * @returns A string of only the digits in `value`.\n */\nexport function onlyDigits(value: string): string {\n return value.replace(/\\D/g, \"\");\n}\n\n/** Validate the two CPF check digits over an 11-digit string. */\nfunction cpfCheckDigits(digits: string): boolean {\n if (digits.length !== 11 || new Set(digits).size === 1) return false;\n for (const size of [9, 10]) {\n let total = 0;\n for (let i = 0; i < size; i++) total += Number(digits[i]) * (size + 1 - i);\n let check = (total * 10) % 11;\n if (check === 10) check = 0;\n if (check !== Number(digits[size])) return false;\n }\n return true;\n}\n\n/** Validate the two CNPJ check digits over a 14-digit string. */\nfunction cnpjCheckDigits(digits: string): boolean {\n if (digits.length !== 14 || new Set(digits).size === 1) return false;\n const first = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n const second = [6, ...first];\n for (const [size, weights] of [\n [12, first],\n [13, second],\n ] as const) {\n let total = 0;\n for (let i = 0; i < size; i++) total += Number(digits[i]) * (weights[i] ?? 0);\n const rest = total % 11;\n const check = rest < 2 ? 0 : 11 - rest;\n if (check !== Number(digits[size])) return false;\n }\n return true;\n}\n\n/** Whether `value` is a syntactically valid CPF (format + check digits). */\nexport function isValidCpf(value: string): boolean {\n return CPF_PATTERN.test(value) && cpfCheckDigits(onlyDigits(value));\n}\n\n/** Whether `value` is a syntactically valid CNPJ (format + check digits). */\nexport function isValidCnpj(value: string): boolean {\n return CNPJ_PATTERN.test(value) && cnpjCheckDigits(onlyDigits(value));\n}\n\n/** Whether `value` is a valid CPF or CNPJ. */\nexport function isValidCpfCnpj(value: string): boolean {\n const digits = onlyDigits(value);\n if (digits.length === 11) return isValidCpf(value);\n if (digits.length === 14) return isValidCnpj(value);\n return false;\n}\n\n/** Whether `value` looks like a CEP (eight-digit shape; no check digits). */\nexport function isValidCep(value: string): boolean {\n return CEP_PATTERN.test(value);\n}\n\n/** Whether `value` looks like a BR phone (10 or 11 digits, optional `+55`). */\nexport function isValidPhoneBr(value: string): boolean {\n if (!PHONE_BR_PATTERN.test(value)) return false;\n let digits = onlyDigits(value);\n if (digits.startsWith(\"55\") && (digits.length === 12 || digits.length === 13)) {\n digits = digits.slice(2);\n }\n return digits.length === 10 || digits.length === 11;\n}\n\n/** Normalize a CPF to 11 digits, throwing when invalid. */\nexport function normalizeCpf(value: string): string {\n if (!isValidCpf(value)) throw new Error(\"invalid CPF\");\n return onlyDigits(value);\n}\n\n/** Normalize a CNPJ to 14 digits, throwing when invalid. */\nexport function normalizeCnpj(value: string): string {\n if (!isValidCnpj(value)) throw new Error(\"invalid CNPJ\");\n return onlyDigits(value);\n}\n\n/** Normalize a CPF/CNPJ to digits only, throwing when invalid. */\nexport function normalizeCpfCnpj(value: string): string {\n if (!isValidCpfCnpj(value)) throw new Error(\"invalid CPF/CNPJ\");\n return onlyDigits(value);\n}\n\n/** Normalize a CEP to 8 digits, throwing when invalid. */\nexport function normalizeCep(value: string): string {\n if (!isValidCep(value)) throw new Error(\"invalid CEP\");\n return onlyDigits(value);\n}\n\n/** Normalize a BR phone to digits only, throwing when invalid. */\nexport function normalizePhoneBr(value: string): string {\n if (!isValidPhoneBr(value)) throw new Error(\"invalid BR phone\");\n return onlyDigits(value);\n}\n\n/** Zod field: validates a CPF and normalizes it to 11 digits. */\nexport const cpfField = z\n .string()\n .refine(isValidCpf, { message: \"invalid CPF\" })\n .transform(onlyDigits);\n/** Zod field: validates a CNPJ and normalizes it to 14 digits. */\nexport const cnpjField = z\n .string()\n .refine(isValidCnpj, { message: \"invalid CNPJ\" })\n .transform(onlyDigits);\n/** Zod field: accepts either a CPF or a CNPJ, normalized to digits. */\nexport const cpfOrCnpjField = z\n .string()\n .refine(isValidCpfCnpj, { message: \"invalid CPF/CNPJ\" })\n .transform(onlyDigits);\n/** Zod field: validates a CEP and normalizes it to 8 digits. */\nexport const cepField = z\n .string()\n .refine(isValidCep, { message: \"invalid CEP\" })\n .transform(onlyDigits);\n/** Zod field: validates a BR phone and normalizes it to digits. */\nexport const phoneBrField = z\n .string()\n .refine(isValidPhoneBr, { message: \"invalid BR phone\" })\n .transform(onlyDigits);\n","[\n {\n \"uf\": \"AC\",\n \"name\": \"Acre\",\n \"cities\": [\n \"Acrelândia\",\n \"Assis Brasil\",\n \"Brasiléia\",\n \"Bujari\",\n \"Capixaba\",\n \"Cruzeiro do Sul\",\n \"Epitaciolândia\",\n \"Feijó\",\n \"Jordão\",\n \"Mâncio Lima\",\n \"Manoel Urbano\",\n \"Marechal Thaumaturgo\",\n \"Plácido de Castro\",\n \"Porto Acre\",\n \"Porto Walter\",\n \"Rio Branco\",\n \"Rodrigues Alves\",\n \"Santa Rosa do Purus\",\n \"Sena Madureira\",\n \"Senador Guiomard\",\n \"Tarauacá\",\n \"Xapuri\"\n ]\n },\n {\n \"uf\": \"AL\",\n \"name\": \"Alagoas\",\n \"cities\": [\n \"Água Branca\",\n \"Anadia\",\n \"Arapiraca\",\n \"Atalaia\",\n \"Barra de Santo Antônio\",\n \"Barra de São Miguel\",\n \"Batalha\",\n \"Belém\",\n \"Belo Monte\",\n \"Boca da Mata\",\n \"Branquinha\",\n \"Cacimbinhas\",\n \"Cajueiro\",\n \"Campestre\",\n \"Campo Alegre\",\n \"Campo Grande\",\n \"Canapi\",\n \"Capela\",\n \"Carneiros\",\n \"Chã Preta\",\n \"Coité do Nóia\",\n \"Colônia Leopoldina\",\n \"Coqueiro Seco\",\n \"Coruripe\",\n \"Craíbas\",\n \"Delmiro Gouveia\",\n \"Dois Riachos\",\n \"Estrela de Alagoas\",\n \"Feira Grande\",\n \"Feliz Deserto\",\n \"Flexeiras\",\n \"Girau do Ponciano\",\n \"Ibateguara\",\n \"Igaci\",\n \"Igreja Nova\",\n \"Inhapi\",\n \"Jacaré dos Homens\",\n \"Jacuípe\",\n \"Japaratinga\",\n \"Jaramataia\",\n \"Jequiá da Praia\",\n \"Joaquim Gomes\",\n \"Jundiá\",\n \"Junqueiro\",\n \"Lagoa da Canoa\",\n \"Limoeiro de Anadia\",\n \"Maceió\",\n \"Major Isidoro\",\n \"Mar Vermelho\",\n \"Maragogi\",\n \"Maravilha\",\n \"Marechal Deodoro\",\n \"Maribondo\",\n \"Mata Grande\",\n \"Matriz de Camaragibe\",\n \"Messias\",\n \"Minador do Negrão\",\n \"Monteirópolis\",\n \"Murici\",\n \"Novo Lino\",\n \"Olho d'Água das Flores\",\n \"Olho d'Água do Casado\",\n \"Olho d'Água Grande\",\n \"Olivença\",\n \"Ouro Branco\",\n \"Palestina\",\n \"Palmeira dos Índios\",\n \"Pão de Açúcar\",\n \"Pariconha\",\n \"Paripueira\",\n \"Passo de Camaragibe\",\n \"Paulo Jacinto\",\n \"Penedo\",\n \"Piaçabuçu\",\n \"Pilar\",\n \"Pindoba\",\n \"Piranhas\",\n \"Poço das Trincheiras\",\n \"Porto Calvo\",\n \"Porto de Pedras\",\n \"Porto Real do Colégio\",\n \"Quebrangulo\",\n \"Rio Largo\",\n \"Roteiro\",\n \"Santa Luzia do Norte\",\n \"Santana do Ipanema\",\n \"Santana do Mundaú\",\n \"São Brás\",\n \"São José da Laje\",\n \"São José da Tapera\",\n \"São Luís do Quitunde\",\n \"São Miguel dos Campos\",\n \"São Miguel dos Milagres\",\n \"São Sebastião\",\n \"Satuba\",\n \"Senador Rui Palmeira\",\n \"Tanque d'Arca\",\n \"Taquarana\",\n \"Teotônio Vilela\",\n \"Traipu\",\n \"União dos Palmares\",\n \"Viçosa\"\n ]\n },\n {\n \"uf\": \"AM\",\n \"name\": \"Amazonas\",\n \"cities\": [\n \"Alvarães\",\n \"Amaturá\",\n \"Anamã\",\n \"Anori\",\n \"Apuí\",\n \"Atalaia do Norte\",\n \"Autazes\",\n \"Barcelos\",\n \"Barreirinha\",\n \"Benjamin Constant\",\n \"Beruri\",\n \"Boa Vista do Ramos\",\n \"Boca do Acre\",\n \"Borba\",\n \"Caapiranga\",\n \"Canutama\",\n \"Carauari\",\n \"Careiro\",\n \"Careiro da Várzea\",\n \"Coari\",\n \"Codajás\",\n \"Eirunepé\",\n \"Envira\",\n \"Fonte Boa\",\n \"Guajará\",\n \"Humaitá\",\n \"Ipixuna\",\n \"Iranduba\",\n \"Itacoatiara\",\n \"Itamarati\",\n \"Itapiranga\",\n \"Japurá\",\n \"Juruá\",\n \"Jutaí\",\n \"Lábrea\",\n \"Manacapuru\",\n \"Manaquiri\",\n \"Manaus\",\n \"Manicoré\",\n \"Maraã\",\n \"Maués\",\n \"Nhamundá\",\n \"Nova Olinda do Norte\",\n \"Novo Airão\",\n \"Novo Aripuanã\",\n \"Parintins\",\n \"Pauini\",\n \"Presidente Figueiredo\",\n \"Rio Preto da Eva\",\n \"Santa Isabel do Rio Negro\",\n \"Santo Antônio do Içá\",\n \"São Gabriel da Cachoeira\",\n \"São Paulo de Olivença\",\n \"São Sebastião do Uatumã\",\n \"Silves\",\n \"Tabatinga\",\n \"Tapauá\",\n \"Tefé\",\n \"Tonantins\",\n \"Uarini\",\n \"Urucará\",\n \"Urucurituba\"\n ]\n },\n {\n \"uf\": \"AP\",\n \"name\": \"Amapá\",\n \"cities\": [\n \"Amapá\",\n \"Calçoene\",\n \"Cutias\",\n \"Ferreira Gomes\",\n \"Itaubal\",\n \"Laranjal do Jari\",\n \"Macapá\",\n \"Mazagão\",\n \"Oiapoque\",\n \"Pedra Branca do Amapari\",\n \"Porto Grande\",\n \"Pracuúba\",\n \"Santana\",\n \"Serra do Navio\",\n \"Tartarugalzinho\",\n \"Vitória do Jari\"\n ]\n },\n {\n \"uf\": \"BA\",\n \"name\": \"Bahia\",\n \"cities\": [\n \"Abaíra\",\n \"Abaré\",\n \"Acajutiba\",\n \"Adustina\",\n \"Água Fria\",\n \"Aiquara\",\n \"Alagoinhas\",\n \"Alcobaça\",\n \"Almadina\",\n \"Amargosa\",\n \"Amélia Rodrigues\",\n \"América Dourada\",\n \"Anagé\",\n \"Andaraí\",\n \"Andorinha\",\n \"Angical\",\n \"Anguera\",\n \"Antas\",\n \"Antônio Cardoso\",\n \"Antônio Gonçalves\",\n \"Aporá\",\n \"Apuarema\",\n \"Araçás\",\n \"Aracatu\",\n \"Araci\",\n \"Aramari\",\n \"Arataca\",\n \"Aratuípe\",\n \"Aurelino Leal\",\n \"Baianópolis\",\n \"Baixa Grande\",\n \"Banzaê\",\n \"Barra\",\n \"Barra da Estiva\",\n \"Barra do Choça\",\n \"Barra do Mendes\",\n \"Barra do Rocha\",\n \"Barreiras\",\n \"Barro Alto\",\n \"Barro Preto\",\n \"Barrocas\",\n \"Belmonte\",\n \"Belo Campo\",\n \"Biritinga\",\n \"Boa Nova\",\n \"Boa Vista do Tupim\",\n \"Bom Jesus da Lapa\",\n \"Bom Jesus da Serra\",\n \"Boninal\",\n \"Bonito\",\n \"Boquira\",\n \"Botuporã\",\n \"Brejões\",\n \"Brejolândia\",\n \"Brotas de Macaúbas\",\n \"Brumado\",\n \"Buerarema\",\n \"Buritirama\",\n \"Caatiba\",\n \"Cabaceiras do Paraguaçu\",\n \"Cachoeira\",\n \"Caculé\",\n \"Caém\",\n \"Caetanos\",\n \"Caetité\",\n \"Cafarnaum\",\n \"Cairu\",\n \"Caldeirão Grande\",\n \"Camacan\",\n \"Camaçari\",\n \"Camamu\",\n \"Campo Alegre de Lourdes\",\n \"Campo Formoso\",\n \"Canápolis\",\n \"Canarana\",\n \"Canavieiras\",\n \"Candeal\",\n \"Candeias\",\n \"Candiba\",\n \"Cândido Sales\",\n \"Cansanção\",\n \"Canudos\",\n \"Capela do Alto Alegre\",\n \"Capim Grosso\",\n \"Caraíbas\",\n \"Caravelas\",\n \"Cardeal da Silva\",\n \"Carinhanha\",\n \"Casa Nova\",\n \"Castro Alves\",\n \"Catolândia\",\n \"Catu\",\n \"Caturama\",\n \"Central\",\n \"Chorrochó\",\n \"Cícero Dantas\",\n \"Cipó\",\n \"Coaraci\",\n \"Cocos\",\n \"Conceição da Feira\",\n \"Conceição do Almeida\",\n \"Conceição do Coité\",\n \"Conceição do Jacuípe\",\n \"Conde\",\n \"Condeúba\",\n \"Contendas do Sincorá\",\n \"Coração de Maria\",\n \"Cordeiros\",\n \"Coribe\",\n \"Coronel João Sá\",\n \"Correntina\",\n \"Cotegipe\",\n \"Cravolândia\",\n \"Crisópolis\",\n \"Cristópolis\",\n \"Cruz das Almas\",\n \"Curaçá\",\n \"Dário Meira\",\n \"Dias d'Ávila\",\n \"Dom Basílio\",\n \"Dom Macedo Costa\",\n \"Elísio Medrado\",\n \"Encruzilhada\",\n \"Entre Rios\",\n \"Érico Cardoso\",\n \"Esplanada\",\n \"Euclides da Cunha\",\n \"Eunápolis\",\n \"Fátima\",\n \"Feira da Mata\",\n \"Feira de Santana\",\n \"Filadélfia\",\n \"Firmino Alves\",\n \"Floresta Azul\",\n \"Formosa do Rio Preto\",\n \"Gandu\",\n \"Gavião\",\n \"Gentio do Ouro\",\n \"Glória\",\n \"Gongogi\",\n \"Governador Mangabeira\",\n \"Guajeru\",\n \"Guanambi\",\n \"Guaratinga\",\n \"Heliópolis\",\n \"Iaçu\",\n \"Ibiassucê\",\n \"Ibicaraí\",\n \"Ibicoara\",\n \"Ibicuí\",\n \"Ibipeba\",\n \"Ibipitanga\",\n \"Ibiquera\",\n \"Ibirapitanga\",\n \"Ibirapuã\",\n \"Ibirataia\",\n \"Ibitiara\",\n \"Ibititá\",\n \"Ibotirama\",\n \"Ichu\",\n \"Igaporã\",\n \"Igrapiúna\",\n \"Iguaí\",\n \"Ilhéus\",\n \"Inhambupe\",\n \"Ipecaetá\",\n \"Ipiaú\",\n \"Ipirá\",\n \"Ipupiara\",\n \"Irajuba\",\n \"Iramaia\",\n \"Iraquara\",\n \"Irará\",\n \"Irecê\",\n \"Itabela\",\n \"Itaberaba\",\n \"Itabuna\",\n \"Itacaré\",\n \"Itaeté\",\n \"Itagi\",\n \"Itagibá\",\n \"Itagimirim\",\n \"Itaguaçu da Bahia\",\n \"Itaju do Colônia\",\n \"Itajuípe\",\n \"Itamaraju\",\n \"Itamari\",\n \"Itambé\",\n \"Itanagra\",\n \"Itanhém\",\n \"Itaparica\",\n \"Itapé\",\n \"Itapebi\",\n \"Itapetinga\",\n \"Itapicuru\",\n \"Itapitanga\",\n \"Itaquara\",\n \"Itarantim\",\n \"Itatim\",\n \"Itiruçu\",\n \"Itiúba\",\n \"Itororó\",\n \"Ituaçu\",\n \"Ituberá\",\n \"Iuiu\",\n \"Jaborandi\",\n \"Jacaraci\",\n \"Jacobina\",\n \"Jaguaquara\",\n \"Jaguarari\",\n \"Jaguaripe\",\n \"Jandaíra\",\n \"Jequié\",\n \"Jeremoabo\",\n \"Jiquiriçá\",\n \"Jitaúna\",\n \"João Dourado\",\n \"Juazeiro\",\n \"Jucuruçu\",\n \"Jussara\",\n \"Jussari\",\n \"Jussiape\",\n \"Lafaiete Coutinho\",\n \"Lagoa Real\",\n \"Laje\",\n \"Lajedão\",\n \"Lajedinho\",\n \"Lajedo do Tabocal\",\n \"Lamarão\",\n \"Lapão\",\n \"Lauro de Freitas\",\n \"Lençóis\",\n \"Licínio de Almeida\",\n \"Livramento de Nossa Senhora\",\n \"Luís Eduardo Magalhães\",\n \"Macajuba\",\n \"Macarani\",\n \"Macaúbas\",\n \"Macururé\",\n \"Madre de Deus\",\n \"Maetinga\",\n \"Maiquinique\",\n \"Mairi\",\n \"Malhada\",\n \"Malhada de Pedras\",\n \"Manoel Vitorino\",\n \"Mansidão\",\n \"Maracás\",\n \"Maragogipe\",\n \"Maraú\",\n \"Marcionílio Souza\",\n \"Mascote\",\n \"Mata de São João\",\n \"Matina\",\n \"Medeiros Neto\",\n \"Miguel Calmon\",\n \"Milagres\",\n \"Mirangaba\",\n \"Mirante\",\n \"Monte Santo\",\n \"Morpará\",\n \"Morro do Chapéu\",\n \"Mortugaba\",\n \"Mucugê\",\n \"Mucuri\",\n \"Mulungu do Morro\",\n \"Mundo Novo\",\n \"Muniz Ferreira\",\n \"Muquém do São Francisco\",\n \"Muritiba\",\n \"Mutuípe\",\n \"Nazaré\",\n \"Nilo Peçanha\",\n \"Nordestina\",\n \"Nova Canaã\",\n \"Nova Fátima\",\n \"Nova Ibiá\",\n \"Nova Itarana\",\n \"Nova Redenção\",\n \"Nova Soure\",\n \"Nova Viçosa\",\n \"Novo Horizonte\",\n \"Novo Triunfo\",\n \"Olindina\",\n \"Oliveira dos Brejinhos\",\n \"Ouriçangas\",\n \"Ourolândia\",\n \"Palmas de Monte Alto\",\n \"Palmeiras\",\n \"Paramirim\",\n \"Paratinga\",\n \"Paripiranga\",\n \"Pau Brasil\",\n \"Paulo Afonso\",\n \"Pé de Serra\",\n \"Pedrão\",\n \"Pedro Alexandre\",\n \"Piatã\",\n \"Pilão Arcado\",\n \"Pindaí\",\n \"Pindobaçu\",\n \"Pintadas\",\n \"Piraí do Norte\",\n \"Piripá\",\n \"Piritiba\",\n \"Planaltino\",\n \"Planalto\",\n \"Poções\",\n \"Pojuca\",\n \"Ponto Novo\",\n \"Porto Seguro\",\n \"Potiraguá\",\n \"Prado\",\n \"Presidente Dutra\",\n \"Presidente Jânio Quadros\",\n \"Presidente Tancredo Neves\",\n \"Queimadas\",\n \"Quijingue\",\n \"Quixabeira\",\n \"Rafael Jambeiro\",\n \"Remanso\",\n \"Retirolândia\",\n \"Riachão das Neves\",\n \"Riachão do Jacuípe\",\n \"Riacho de Santana\",\n \"Ribeira do Amparo\",\n \"Ribeira do Pombal\",\n \"Ribeirão do Largo\",\n \"Rio de Contas\",\n \"Rio do Antônio\",\n \"Rio do Pires\",\n \"Rio Real\",\n \"Rodelas\",\n \"Ruy Barbosa\",\n \"Salinas da Margarida\",\n \"Salvador\",\n \"Santa Bárbara\",\n \"Santa Brígida\",\n \"Santa Cruz Cabrália\",\n \"Santa Cruz da Vitória\",\n \"Santa Inês\",\n \"Santa Luzia\",\n \"Santa Maria da Vitória\",\n \"Santa Rita de Cássia\",\n \"Santa Terezinha\",\n \"Santaluz\",\n \"Santana\",\n \"Santanópolis\",\n \"Santo Amaro\",\n \"Santo Antônio de Jesus\",\n \"Santo Estêvão\",\n \"São Desidério\",\n \"São Domingos\",\n \"São Felipe\",\n \"São Félix\",\n \"São Félix do Coribe\",\n \"São Francisco do Conde\",\n \"São Gabriel\",\n \"São Gonçalo dos Campos\",\n \"São José da Vitória\",\n \"São José do Jacuípe\",\n \"São Miguel das Matas\",\n \"São Sebastião do Passé\",\n \"Sapeaçu\",\n \"Sátiro Dias\",\n \"Saubara\",\n \"Saúde\",\n \"Seabra\",\n \"Sebastião Laranjeiras\",\n \"Senhor do Bonfim\",\n \"Sento Sé\",\n \"Serra do Ramalho\",\n \"Serra Dourada\",\n \"Serra Preta\",\n \"Serrinha\",\n \"Serrolândia\",\n \"Simões Filho\",\n \"Sítio do Mato\",\n \"Sítio do Quinto\",\n \"Sobradinho\",\n \"Souto Soares\",\n \"Tabocas do Brejo Velho\",\n \"Tanhaçu\",\n \"Tanque Novo\",\n \"Tanquinho\",\n \"Taperoá\",\n \"Tapiramutá\",\n \"Teixeira de Freitas\",\n \"Teodoro Sampaio\",\n \"Teofilândia\",\n \"Teolândia\",\n \"Terra Nova\",\n \"Tremedal\",\n \"Tucano\",\n \"Uauá\",\n \"Ubaíra\",\n \"Ubaitaba\",\n \"Ubatã\",\n \"Uibaí\",\n \"Umburanas\",\n \"Una\",\n \"Urandi\",\n \"Uruçuca\",\n \"Utinga\",\n \"Valença\",\n \"Valente\",\n \"Várzea da Roça\",\n \"Várzea do Poço\",\n \"Várzea Nova\",\n \"Varzedo\",\n \"Vera Cruz\",\n \"Vereda\",\n \"Vitória da Conquista\",\n \"Wagner\",\n \"Wanderley\",\n \"Wenceslau Guimarães\",\n \"Xique-Xique\"\n ]\n },\n {\n \"uf\": \"CE\",\n \"name\": \"Ceará\",\n \"cities\": [\n \"Abaiara\",\n \"Acarape\",\n \"Acaraú\",\n \"Acopiara\",\n \"Aiuaba\",\n \"Alcântaras\",\n \"Altaneira\",\n \"Alto Santo\",\n \"Amontada\",\n \"Antonina do Norte\",\n \"Apuiarés\",\n \"Aquiraz\",\n \"Aracati\",\n \"Aracoiaba\",\n \"Ararendá\",\n \"Araripe\",\n \"Aratuba\",\n \"Arneiroz\",\n \"Assaré\",\n \"Aurora\",\n \"Baixio\",\n \"Banabuiú\",\n \"Barbalha\",\n \"Barreira\",\n \"Barro\",\n \"Barroquinha\",\n \"Baturité\",\n \"Beberibe\",\n \"Bela Cruz\",\n \"Boa Viagem\",\n \"Brejo Santo\",\n \"Camocim\",\n \"Campos Sales\",\n \"Canindé\",\n \"Capistrano\",\n \"Caridade\",\n \"Cariré\",\n \"Caririaçu\",\n \"Cariús\",\n \"Carnaubal\",\n \"Cascavel\",\n \"Catarina\",\n \"Catunda\",\n \"Caucaia\",\n \"Cedro\",\n \"Chaval\",\n \"Choró\",\n \"Chorozinho\",\n \"Coreaú\",\n \"Crateús\",\n \"Crato\",\n \"Croatá\",\n \"Cruz\",\n \"Deputado Irapuan Pinheiro\",\n \"Ereré\",\n \"Eusébio\",\n \"Farias Brito\",\n \"Forquilha\",\n \"Fortaleza\",\n \"Fortim\",\n \"Frecheirinha\",\n \"General Sampaio\",\n \"Graça\",\n \"Granja\",\n \"Granjeiro\",\n \"Groaíras\",\n \"Guaiúba\",\n \"Guaraciaba do Norte\",\n \"Guaramiranga\",\n \"Hidrolândia\",\n \"Horizonte\",\n \"Ibaretama\",\n \"Ibiapina\",\n \"Ibicuitinga\",\n \"Icapuí\",\n \"Icó\",\n \"Iguatu\",\n \"Independência\",\n \"Ipaporanga\",\n \"Ipaumirim\",\n \"Ipu\",\n \"Ipueiras\",\n \"Iracema\",\n \"Irauçuba\",\n \"Itaiçaba\",\n \"Itaitinga\",\n \"Itapajé\",\n \"Itapipoca\",\n \"Itapiúna\",\n \"Itarema\",\n \"Itatira\",\n \"Jaguaretama\",\n \"Jaguaribara\",\n \"Jaguaribe\",\n \"Jaguaruana\",\n \"Jardim\",\n \"Jati\",\n \"Jijoca de Jericoacoara\",\n \"Juazeiro do Norte\",\n \"Jucás\",\n \"Lavras da Mangabeira\",\n \"Limoeiro do Norte\",\n \"Madalena\",\n \"Maracanaú\",\n \"Maranguape\",\n \"Marco\",\n \"Martinópole\",\n \"Massapê\",\n \"Mauriti\",\n \"Meruoca\",\n \"Milagres\",\n \"Milhã\",\n \"Miraíma\",\n \"Missão Velha\",\n \"Mombaça\",\n \"Monsenhor Tabosa\",\n \"Morada Nova\",\n \"Moraújo\",\n \"Morrinhos\",\n \"Mucambo\",\n \"Mulungu\",\n \"Nova Olinda\",\n \"Nova Russas\",\n \"Novo Oriente\",\n \"Ocara\",\n \"Orós\",\n \"Pacajus\",\n \"Pacatuba\",\n \"Pacoti\",\n \"Pacujá\",\n \"Palhano\",\n \"Palmácia\",\n \"Paracuru\",\n \"Paraipaba\",\n \"Parambu\",\n \"Paramoti\",\n \"Pedra Branca\",\n \"Penaforte\",\n \"Pentecoste\",\n \"Pereiro\",\n \"Pindoretama\",\n \"Piquet Carneiro\",\n \"Pires Ferreira\",\n \"Poranga\",\n \"Porteiras\",\n \"Potengi\",\n \"Potiretama\",\n \"Quiterianópolis\",\n \"Quixadá\",\n \"Quixelô\",\n \"Quixeramobim\",\n \"Quixeré\",\n \"Redenção\",\n \"Reriutaba\",\n \"Russas\",\n \"Saboeiro\",\n \"Salitre\",\n \"Santa Quitéria\",\n \"Santana do Acaraú\",\n \"Santana do Cariri\",\n \"São Benedito\",\n \"São Gonçalo do Amarante\",\n \"São João do Jaguaribe\",\n \"São Luís do Curu\",\n \"Senador Pompeu\",\n \"Senador Sá\",\n \"Sobral\",\n \"Solonópole\",\n \"Tabuleiro do Norte\",\n \"Tamboril\",\n \"Tarrafas\",\n \"Tauá\",\n \"Tejuçuoca\",\n \"Tianguá\",\n \"Trairi\",\n \"Tururu\",\n \"Ubajara\",\n \"Umari\",\n \"Umirim\",\n \"Uruburetama\",\n \"Uruoca\",\n \"Varjota\",\n \"Várzea Alegre\",\n \"Viçosa do Ceará\"\n ]\n },\n {\n \"uf\": \"DF\",\n \"name\": \"Distrito Federal\",\n \"cities\": [\n \"Águas Claras\",\n \"Arniqueira\",\n \"Brasília\",\n \"Brazlândia\",\n \"Candangolândia\",\n \"Ceilândia\",\n \"Cruzeiro\",\n \"Estrutural\",\n \"Fercal\",\n \"Gama\",\n \"Guará\",\n \"Itapoã\",\n \"Jardim Botânico\",\n \"Lago Norte\",\n \"Lago Sul\",\n \"Núcleo Bandeirante\",\n \"Octogonal\",\n \"Paranoá\",\n \"Park Way\",\n \"Planaltina\",\n \"Plano Piloto\",\n \"Pôr do Sol\",\n \"Recanto das Emas\",\n \"Riacho Fundo\",\n \"Riacho Fundo II\",\n \"Samambaia\",\n \"Santa Maria\",\n \"São Sebastião\",\n \"SIA\",\n \"Sobradinho\",\n \"Sobradinho II\",\n \"Sol Nascente\",\n \"Sudoeste\",\n \"Taguatinga\",\n \"Varjão\",\n \"Vicente Pires\"\n ]\n },\n {\n \"uf\": \"ES\",\n \"name\": \"Espírito Santo\",\n \"cities\": [\n \"Afonso Cláudio\",\n \"Água Doce do Norte\",\n \"Águia Branca\",\n \"Alegre\",\n \"Alfredo Chaves\",\n \"Alto Rio Novo\",\n \"Anchieta\",\n \"Apiacá\",\n \"Aracruz\",\n \"Atílio Vivácqua\",\n \"Baixo Guandu\",\n \"Barra de São Francisco\",\n \"Boa Esperança\",\n \"Bom Jesus do Norte\",\n \"Brejetuba\",\n \"Cachoeiro de Itapemirim\",\n \"Cariacica\",\n \"Castelo\",\n \"Colatina\",\n \"Conceição da Barra\",\n \"Conceição do Castelo\",\n \"Divino de São Lourenço\",\n \"Domingos Martins\",\n \"Dores do Rio Preto\",\n \"Ecoporanga\",\n \"Fundão\",\n \"Governador Lindenberg\",\n \"Guaçuí\",\n \"Guarapari\",\n \"Ibatiba\",\n \"Ibiraçu\",\n \"Ibitirama\",\n \"Iconha\",\n \"Irupi\",\n \"Itaguaçu\",\n \"Itapemirim\",\n \"Itarana\",\n \"Iúna\",\n \"Jaguaré\",\n \"Jerônimo Monteiro\",\n \"João Neiva\",\n \"Laranja da Terra\",\n \"Linhares\",\n \"Mantenópolis\",\n \"Marataízes\",\n \"Marechal Floriano\",\n \"Marilândia\",\n \"Mimoso do Sul\",\n \"Montanha\",\n \"Mucurici\",\n \"Muniz Freire\",\n \"Muqui\",\n \"Nova Venécia\",\n \"Pancas\",\n \"Pedro Canário\",\n \"Pinheiros\",\n \"Piúma\",\n \"Ponto Belo\",\n \"Presidente Kennedy\",\n \"Rio Bananal\",\n \"Rio Novo do Sul\",\n \"Santa Leopoldina\",\n \"Santa Maria de Jetibá\",\n \"Santa Teresa\",\n \"São Domingos do Norte\",\n \"São Gabriel da Palha\",\n \"São José do Calçado\",\n \"São Mateus\",\n \"São Roque do Canaã\",\n \"Serra\",\n \"Sooretama\",\n \"Vargem Alta\",\n \"Venda Nova do Imigrante\",\n \"Viana\",\n \"Vila Pavão\",\n \"Vila Valério\",\n \"Vila Velha\",\n \"Vitória\"\n ]\n },\n {\n \"uf\": \"GO\",\n \"name\": \"Goiás\",\n \"cities\": [\n \"Abadia de Goiás\",\n \"Abadiânia\",\n \"Acreúna\",\n \"Adelândia\",\n \"Água Fria de Goiás\",\n \"Água Limpa\",\n \"Águas Lindas de Goiás\",\n \"Alexânia\",\n \"Aloândia\",\n \"Alto Horizonte\",\n \"Alto Paraíso de Goiás\",\n \"Alvorada do Norte\",\n \"Amaralina\",\n \"Americano do Brasil\",\n \"Amorinópolis\",\n \"Anápolis\",\n \"Anhanguera\",\n \"Anicuns\",\n \"Aparecida de Goiânia\",\n \"Aparecida do Rio Doce\",\n \"Aporé\",\n \"Araçu\",\n \"Aragarças\",\n \"Aragoiânia\",\n \"Araguapaz\",\n \"Arenópolis\",\n \"Aruanã\",\n \"Aurilândia\",\n \"Avelinópolis\",\n \"Baliza\",\n \"Barro Alto\",\n \"Bela Vista de Goiás\",\n \"Bom Jardim de Goiás\",\n \"Bom Jesus de Goiás\",\n \"Bonfinópolis\",\n \"Bonópolis\",\n \"Brazabrantes\",\n \"Britânia\",\n \"Buriti Alegre\",\n \"Buriti de Goiás\",\n \"Buritinópolis\",\n \"Cabeceiras\",\n \"Cachoeira Alta\",\n \"Cachoeira de Goiás\",\n \"Cachoeira Dourada\",\n \"Caçu\",\n \"Caiapônia\",\n \"Caldas Novas\",\n \"Caldazinha\",\n \"Campestre de Goiás\",\n \"Campinaçu\",\n \"Campinorte\",\n \"Campo Alegre de Goiás\",\n \"Campo Limpo de Goiás\",\n \"Campos Belos\",\n \"Campos Verdes\",\n \"Carmo do Rio Verde\",\n \"Castelândia\",\n \"Catalão\",\n \"Caturaí\",\n \"Cavalcante\",\n \"Ceres\",\n \"Cezarina\",\n \"Chapadão do Céu\",\n \"Cidade Ocidental\",\n \"Cocalzinho de Goiás\",\n \"Colinas do Sul\",\n \"Córrego do Ouro\",\n \"Corumbá de Goiás\",\n \"Corumbaíba\",\n \"Cristalina\",\n \"Cristianópolis\",\n \"Crixás\",\n \"Cromínia\",\n \"Cumari\",\n \"Damianópolis\",\n \"Damolândia\",\n \"Davinópolis\",\n \"Diorama\",\n \"Divinópolis de Goiás\",\n \"Doverlândia\",\n \"Edealina\",\n \"Edéia\",\n \"Estrela do Norte\",\n \"Faina\",\n \"Fazenda Nova\",\n \"Firminópolis\",\n \"Flores de Goiás\",\n \"Formosa\",\n \"Formoso\",\n \"Gameleira de Goiás\",\n \"Goianápolis\",\n \"Goiandira\",\n \"Goianésia\",\n \"Goiânia\",\n \"Goianira\",\n \"Goiás\",\n \"Goiatuba\",\n \"Gouvelândia\",\n \"Guapó\",\n \"Guaraíta\",\n \"Guarani de Goiás\",\n \"Guarinos\",\n \"Heitoraí\",\n \"Hidrolândia\",\n \"Hidrolina\",\n \"Iaciara\",\n \"Inaciolândia\",\n \"Indiara\",\n \"Inhumas\",\n \"Ipameri\",\n \"Ipiranga de Goiás\",\n \"Iporá\",\n \"Israelândia\",\n \"Itaberaí\",\n \"Itaguari\",\n \"Itaguaru\",\n \"Itajá\",\n \"Itapaci\",\n \"Itapirapuã\",\n \"Itapuranga\",\n \"Itarumã\",\n \"Itauçu\",\n \"Itumbiara\",\n \"Ivolândia\",\n \"Jandaia\",\n \"Jaraguá\",\n \"Jataí\",\n \"Jaupaci\",\n \"Jesúpolis\",\n \"Joviânia\",\n \"Jussara\",\n \"Lagoa Santa\",\n \"Leopoldo de Bulhões\",\n \"Luziânia\",\n \"Mairipotaba\",\n \"Mambaí\",\n \"Mara Rosa\",\n \"Marzagão\",\n \"Matrinchã\",\n \"Maurilândia\",\n \"Mimoso de Goiás\",\n \"Minaçu\",\n \"Mineiros\",\n \"Moiporá\",\n \"Monte Alegre de Goiás\",\n \"Montes Claros de Goiás\",\n \"Montividiu\",\n \"Montividiu do Norte\",\n \"Morrinhos\",\n \"Morro Agudo de Goiás\",\n \"Mossâmedes\",\n \"Mozarlândia\",\n \"Mundo Novo\",\n \"Mutunópolis\",\n \"Nazário\",\n \"Nerópolis\",\n \"Niquelândia\",\n \"Nova América\",\n \"Nova Aurora\",\n \"Nova Crixás\",\n \"Nova Glória\",\n \"Nova Iguaçu de Goiás\",\n \"Nova Roma\",\n \"Nova Veneza\",\n \"Novo Brasil\",\n \"Novo Gama\",\n \"Novo Planalto\",\n \"Orizona\",\n \"Ouro Verde de Goiás\",\n \"Ouvidor\",\n \"Padre Bernardo\",\n \"Palestina de Goiás\",\n \"Palmeiras de Goiás\",\n \"Palmelo\",\n \"Palminópolis\",\n \"Panamá\",\n \"Paranaiguara\",\n \"Paraúna\",\n \"Perolândia\",\n \"Petrolina de Goiás\",\n \"Pilar de Goiás\",\n \"Piracanjuba\",\n \"Piranhas\",\n \"Pirenópolis\",\n \"Pires do Rio\",\n \"Planaltina\",\n \"Pontalina\",\n \"Porangatu\",\n \"Porteirão\",\n \"Portelândia\",\n \"Posse\",\n \"Professor Jamil\",\n \"Quirinópolis\",\n \"Rialma\",\n \"Rianápolis\",\n \"Rio Quente\",\n \"Rio Verde\",\n \"Rubiataba\",\n \"Sanclerlândia\",\n \"Santa Bárbara de Goiás\",\n \"Santa Cruz de Goiás\",\n \"Santa Fé de Goiás\",\n \"Santa Helena de Goiás\",\n \"Santa Isabel\",\n \"Santa Rita do Araguaia\",\n \"Santa Rita do Novo Destino\",\n \"Santa Rosa de Goiás\",\n \"Santa Tereza de Goiás\",\n \"Santa Terezinha de Goiás\",\n \"Santo Antônio da Barra\",\n \"Santo Antônio de Goiás\",\n \"Santo Antônio do Descoberto\",\n \"São Domingos\",\n \"São Francisco de Goiás\",\n \"São João d'Aliança\",\n \"São João da Paraúna\",\n \"São Luís de Montes Belos\",\n \"São Luiz do Norte\",\n \"São Miguel do Araguaia\",\n \"São Miguel do Passa Quatro\",\n \"São Patrício\",\n \"São Simão\",\n \"Senador Canedo\",\n \"Serranópolis\",\n \"Silvânia\",\n \"Simolândia\",\n \"Sítio d'Abadia\",\n \"Taquaral de Goiás\",\n \"Teresina de Goiás\",\n \"Terezópolis de Goiás\",\n \"Três Ranchos\",\n \"Trindade\",\n \"Trombas\",\n \"Turvânia\",\n \"Turvelândia\",\n \"Uirapuru\",\n \"Uruaçu\",\n \"Uruana\",\n \"Urutaí\",\n \"Valparaíso de Goiás\",\n \"Varjão\",\n \"Vianópolis\",\n \"Vicentinópolis\",\n \"Vila Boa\",\n \"Vila Propício\"\n ]\n },\n {\n \"uf\": \"MA\",\n \"name\": \"Maranhão\",\n \"cities\": [\n \"Açailândia\",\n \"Afonso Cunha\",\n \"Água Doce do Maranhão\",\n \"Alcântara\",\n \"Aldeias Altas\",\n \"Altamira do Maranhão\",\n \"Alto Alegre do Maranhão\",\n \"Alto Alegre do Pindaré\",\n \"Alto Parnaíba\",\n \"Amapá do Maranhão\",\n \"Amarante do Maranhão\",\n \"Anajatuba\",\n \"Anapurus\",\n \"Apicum-Açu\",\n \"Araguanã\",\n \"Araioses\",\n \"Arame\",\n \"Arari\",\n \"Axixá\",\n \"Bacabal\",\n \"Bacabeira\",\n \"Bacuri\",\n \"Bacurituba\",\n \"Balsas\",\n \"Barão de Grajaú\",\n \"Barra do Corda\",\n \"Barreirinhas\",\n \"Bela Vista do Maranhão\",\n \"Belágua\",\n \"Benedito Leite\",\n \"Bequimão\",\n \"Bernardo do Mearim\",\n \"Boa Vista do Gurupi\",\n \"Bom Jardim\",\n \"Bom Jesus das Selvas\",\n \"Bom Lugar\",\n \"Brejo\",\n \"Brejo de Areia\",\n \"Buriti\",\n \"Buriti Bravo\",\n \"Buriticupu\",\n \"Buritirana\",\n \"Cachoeira Grande\",\n \"Cajapió\",\n \"Cajari\",\n \"Campestre do Maranhão\",\n \"Cândido Mendes\",\n \"Cantanhede\",\n \"Capinzal do Norte\",\n \"Carolina\",\n \"Carutapera\",\n \"Caxias\",\n \"Cedral\",\n \"Central do Maranhão\",\n \"Centro do Guilherme\",\n \"Centro Novo do Maranhão\",\n \"Chapadinha\",\n \"Cidelândia\",\n \"Codó\",\n \"Coelho Neto\",\n \"Colinas\",\n \"Conceição do Lago-Açu\",\n \"Coroatá\",\n \"Cururupu\",\n \"Davinópolis\",\n \"Dom Pedro\",\n \"Duque Bacelar\",\n \"Esperantinópolis\",\n \"Estreito\",\n \"Feira Nova do Maranhão\",\n \"Fernando Falcão\",\n \"Formosa da Serra Negra\",\n \"Fortaleza dos Nogueiras\",\n \"Fortuna\",\n \"Godofredo Viana\",\n \"Gonçalves Dias\",\n \"Governador Archer\",\n \"Governador Edison Lobão\",\n \"Governador Eugênio Barros\",\n \"Governador Luiz Rocha\",\n \"Governador Newton Bello\",\n \"Governador Nunes Freire\",\n \"Graça Aranha\",\n \"Grajaú\",\n \"Guimarães\",\n \"Humberto de Campos\",\n \"Icatu\",\n \"Igarapé do Meio\",\n \"Igarapé Grande\",\n \"Imperatriz\",\n \"Itaipava do Grajaú\",\n \"Itapecuru Mirim\",\n \"Itinga do Maranhão\",\n \"Jatobá\",\n \"Jenipapo dos Vieiras\",\n \"João Lisboa\",\n \"Joselândia\",\n \"Junco do Maranhão\",\n \"Lago da Pedra\",\n \"Lago do Junco\",\n \"Lago dos Rodrigues\",\n \"Lago Verde\",\n \"Lagoa do Mato\",\n \"Lagoa Grande do Maranhão\",\n \"Lajeado Novo\",\n \"Lima Campos\",\n \"Loreto\",\n \"Luís Domingues\",\n \"Magalhães de Almeida\",\n \"Maracaçumé\",\n \"Marajá do Sena\",\n \"Maranhãozinho\",\n \"Mata Roma\",\n \"Matinha\",\n \"Matões\",\n \"Matões do Norte\",\n \"Milagres do Maranhão\",\n \"Mirador\",\n \"Miranda do Norte\",\n \"Mirinzal\",\n \"Monção\",\n \"Montes Altos\",\n \"Morros\",\n \"Nina Rodrigues\",\n \"Nova Colinas\",\n \"Nova Iorque\",\n \"Nova Olinda do Maranhão\",\n \"Olho d'Água das Cunhãs\",\n \"Olinda Nova do Maranhão\",\n \"Paço do Lumiar\",\n \"Palmeirândia\",\n \"Paraibano\",\n \"Parnarama\",\n \"Passagem Franca\",\n \"Pastos Bons\",\n \"Paulino Neves\",\n \"Paulo Ramos\",\n \"Pedreiras\",\n \"Pedro do Rosário\",\n \"Penalva\",\n \"Peri Mirim\",\n \"Peritoró\",\n \"Pindaré-Mirim\",\n \"Pinheiro\",\n \"Pio XII\",\n \"Pirapemas\",\n \"Poção de Pedras\",\n \"Porto Franco\",\n \"Porto Rico do Maranhão\",\n \"Presidente Dutra\",\n \"Presidente Juscelino\",\n \"Presidente Médici\",\n \"Presidente Sarney\",\n \"Presidente Vargas\",\n \"Primeira Cruz\",\n \"Raposa\",\n \"Riachão\",\n \"Ribamar Fiquene\",\n \"Rosário\",\n \"Sambaíba\",\n \"Santa Filomena do Maranhão\",\n \"Santa Helena\",\n \"Santa Inês\",\n \"Santa Luzia\",\n \"Santa Luzia do Paruá\",\n \"Santa Quitéria do Maranhão\",\n \"Santa Rita\",\n \"Santana do Maranhão\",\n \"Santo Amaro do Maranhão\",\n \"Santo Antônio dos Lopes\",\n \"São Benedito do Rio Preto\",\n \"São Bento\",\n \"São Bernardo\",\n \"São Domingos do Azeitão\",\n \"São Domingos do Maranhão\",\n \"São Félix de Balsas\",\n \"São Francisco do Brejão\",\n \"São Francisco do Maranhão\",\n \"São João Batista\",\n \"São João do Carú\",\n \"São João do Paraíso\",\n \"São João do Soter\",\n \"São João dos Patos\",\n \"São José de Ribamar\",\n \"São José dos Basílios\",\n \"São Luís\",\n \"São Luís Gonzaga do Maranhão\",\n \"São Mateus do Maranhão\",\n \"São Pedro da Água Branca\",\n \"São Pedro dos Crentes\",\n \"São Raimundo das Mangabeiras\",\n \"São Raimundo do Doca Bezerra\",\n \"São Roberto\",\n \"São Vicente Ferrer\",\n \"Satubinha\",\n \"Senador Alexandre Costa\",\n \"Senador La Rocque\",\n \"Serrano do Maranhão\",\n \"Sítio Novo\",\n \"Sucupira do Norte\",\n \"Sucupira do Riachão\",\n \"Tasso Fragoso\",\n \"Timbiras\",\n \"Timon\",\n \"Trizidela do Vale\",\n \"Tufilândia\",\n \"Tuntum\",\n \"Turiaçu\",\n \"Turilândia\",\n \"Tutóia\",\n \"Urbano Santos\",\n \"Vargem Grande\",\n \"Viana\",\n \"Vila Nova dos Martírios\",\n \"Vitória do Mearim\",\n \"Vitorino Freire\",\n \"Zé Doca\"\n ]\n },\n {\n \"uf\": \"MG\",\n \"name\": \"Minas Gerais\",\n \"cities\": [\n \"Abadia dos Dourados\",\n \"Abaeté\",\n \"Abre Campo\",\n \"Acaiaca\",\n \"Açucena\",\n \"Água Boa\",\n \"Água Comprida\",\n \"Aguanil\",\n \"Águas Formosas\",\n \"Águas Vermelhas\",\n \"Aimorés\",\n \"Aiuruoca\",\n \"Alagoa\",\n \"Albertina\",\n \"Além Paraíba\",\n \"Alfenas\",\n \"Alfredo Vasconcelos\",\n \"Almenara\",\n \"Alpercata\",\n \"Alpinópolis\",\n \"Alterosa\",\n \"Alto Caparaó\",\n \"Alto Jequitibá\",\n \"Alto Rio Doce\",\n \"Alvarenga\",\n \"Alvinópolis\",\n \"Alvorada de Minas\",\n \"Amparo do Serra\",\n \"Andradas\",\n \"Andrelândia\",\n \"Angelândia\",\n \"Antônio Carlos\",\n \"Antônio Dias\",\n \"Antônio Prado de Minas\",\n \"Araçaí\",\n \"Aracitaba\",\n \"Araçuaí\",\n \"Araguari\",\n \"Arantina\",\n \"Araponga\",\n \"Araporã\",\n \"Arapuá\",\n \"Araújos\",\n \"Araxá\",\n \"Arceburgo\",\n \"Arcos\",\n \"Areado\",\n \"Argirita\",\n \"Aricanduva\",\n \"Arinos\",\n \"Astolfo Dutra\",\n \"Ataléia\",\n \"Augusto de Lima\",\n \"Baependi\",\n \"Baldim\",\n \"Bambuí\",\n \"Bandeira\",\n \"Bandeira do Sul\",\n \"Barão de Cocais\",\n \"Barão do Monte Alto\",\n \"Barbacena\",\n \"Barra Longa\",\n \"Barroso\",\n \"Bela Vista de Minas\",\n \"Belmiro Braga\",\n \"Belo Horizonte\",\n \"Belo Oriente\",\n \"Belo Vale\",\n \"Berilo\",\n \"Berizal\",\n \"Bertópolis\",\n \"Betim\",\n \"Bias Fortes\",\n \"Bicas\",\n \"Biquinhas\",\n \"Boa Esperança\",\n \"Bocaina de Minas\",\n \"Bocaiúva\",\n \"Bom Despacho\",\n \"Bom Jardim de Minas\",\n \"Bom Jesus da Penha\",\n \"Bom Jesus do Amparo\",\n \"Bom Jesus do Galho\",\n \"Bom Repouso\",\n \"Bom Sucesso\",\n \"Bonfim\",\n \"Bonfinópolis de Minas\",\n \"Bonito de Minas\",\n \"Borda da Mata\",\n \"Botelhos\",\n \"Botumirim\",\n \"Brás Pires\",\n \"Brasilândia de Minas\",\n \"Brasília de Minas\",\n \"Braúnas\",\n \"Brazópolis\",\n \"Brumadinho\",\n \"Bueno Brandão\",\n \"Buenópolis\",\n \"Bugre\",\n \"Buritis\",\n \"Buritizeiro\",\n \"Cabeceira Grande\",\n \"Cabo Verde\",\n \"Cachoeira da Prata\",\n \"Cachoeira de Minas\",\n \"Cachoeira de Pajeú\",\n \"Cachoeira Dourada\",\n \"Caetanópolis\",\n \"Caeté\",\n \"Caiana\",\n \"Cajuri\",\n \"Caldas\",\n \"Camacho\",\n \"Camanducaia\",\n \"Cambuí\",\n \"Cambuquira\",\n \"Campanário\",\n \"Campanha\",\n \"Campestre\",\n \"Campina Verde\",\n \"Campo Azul\",\n \"Campo Belo\",\n \"Campo do Meio\",\n \"Campo Florido\",\n \"Campos Altos\",\n \"Campos Gerais\",\n \"Cana Verde\",\n \"Canaã\",\n \"Canápolis\",\n \"Candeias\",\n \"Cantagalo\",\n \"Caparaó\",\n \"Capela Nova\",\n \"Capelinha\",\n \"Capetinga\",\n \"Capim Branco\",\n \"Capinópolis\",\n \"Capitão Andrade\",\n \"Capitão Enéas\",\n \"Capitólio\",\n \"Caputira\",\n \"Caraí\",\n \"Caranaíba\",\n \"Carandaí\",\n \"Carangola\",\n \"Caratinga\",\n \"Carbonita\",\n \"Careaçu\",\n \"Carlos Chagas\",\n \"Carmésia\",\n \"Carmo da Cachoeira\",\n \"Carmo da Mata\",\n \"Carmo de Minas\",\n \"Carmo do Cajuru\",\n \"Carmo do Paranaíba\",\n \"Carmo do Rio Claro\",\n \"Carmópolis de Minas\",\n \"Carneirinho\",\n \"Carrancas\",\n \"Carvalhópolis\",\n \"Carvalhos\",\n \"Casa Grande\",\n \"Cascalho Rico\",\n \"Cássia\",\n \"Cataguases\",\n \"Catas Altas\",\n \"Catas Altas da Noruega\",\n \"Catuji\",\n \"Catuti\",\n \"Caxambu\",\n \"Cedro do Abaeté\",\n \"Central de Minas\",\n \"Centralina\",\n \"Chácara\",\n \"Chalé\",\n \"Chapada do Norte\",\n \"Chapada Gaúcha\",\n \"Chiador\",\n \"Cipotânea\",\n \"Claraval\",\n \"Claro dos Poções\",\n \"Cláudio\",\n \"Coimbra\",\n \"Coluna\",\n \"Comendador Gomes\",\n \"Comercinho\",\n \"Conceição da Aparecida\",\n \"Conceição da Barra de Minas\",\n \"Conceição das Alagoas\",\n \"Conceição das Pedras\",\n \"Conceição de Ipanema\",\n \"Conceição do Mato Dentro\",\n \"Conceição do Pará\",\n \"Conceição do Rio Verde\",\n \"Conceição dos Ouros\",\n \"Cônego Marinho\",\n \"Confins\",\n \"Congonhal\",\n \"Congonhas\",\n \"Congonhas do Norte\",\n \"Conquista\",\n \"Conselheiro Lafaiete\",\n \"Conselheiro Pena\",\n \"Consolação\",\n \"Contagem\",\n \"Coqueiral\",\n \"Coração de Jesus\",\n \"Cordisburgo\",\n \"Cordislândia\",\n \"Corinto\",\n \"Coroaci\",\n \"Coromandel\",\n \"Coronel Fabriciano\",\n \"Coronel Murta\",\n \"Coronel Pacheco\",\n \"Coronel Xavier Chaves\",\n \"Córrego Danta\",\n \"Córrego do Bom Jesus\",\n \"Córrego Fundo\",\n \"Córrego Novo\",\n \"Couto de Magalhães de Minas\",\n \"Crisólita\",\n \"Cristais\",\n \"Cristália\",\n \"Cristiano Otoni\",\n \"Cristina\",\n \"Crucilândia\",\n \"Cruzeiro da Fortaleza\",\n \"Cruzília\",\n \"Cuparaque\",\n \"Curral de Dentro\",\n \"Curvelo\",\n \"Datas\",\n \"Delfim Moreira\",\n \"Delfinópolis\",\n \"Delta\",\n \"Descoberto\",\n \"Desterro de Entre Rios\",\n \"Desterro do Melo\",\n \"Diamantina\",\n \"Diogo de Vasconcelos\",\n \"Dionísio\",\n \"Divinésia\",\n \"Divino\",\n \"Divino das Laranjeiras\",\n \"Divinolândia de Minas\",\n \"Divinópolis\",\n \"Divisa Alegre\",\n \"Divisa Nova\",\n \"Divisópolis\",\n \"Dom Bosco\",\n \"Dom Cavati\",\n \"Dom Joaquim\",\n \"Dom Silvério\",\n \"Dom Viçoso\",\n \"Dona Euzébia\",\n \"Dores de Campos\",\n \"Dores de Guanhães\",\n \"Dores do Indaiá\",\n \"Dores do Turvo\",\n \"Doresópolis\",\n \"Douradoquara\",\n \"Durandé\",\n \"Elói Mendes\",\n \"Engenheiro Caldas\",\n \"Engenheiro Navarro\",\n \"Entre Folhas\",\n \"Entre Rios de Minas\",\n \"Ervália\",\n \"Esmeraldas\",\n \"Espera Feliz\",\n \"Espinosa\",\n \"Espírito Santo do Dourado\",\n \"Estiva\",\n \"Estrela Dalva\",\n \"Estrela do Indaiá\",\n \"Estrela do Sul\",\n \"Eugenópolis\",\n \"Ewbank da Câmara\",\n \"Extrema\",\n \"Fama\",\n \"Faria Lemos\",\n \"Felício dos Santos\",\n \"Felisburgo\",\n \"Felixlândia\",\n \"Fernandes Tourinho\",\n \"Ferros\",\n \"Fervedouro\",\n \"Florestal\",\n \"Formiga\",\n \"Formoso\",\n \"Fortaleza de Minas\",\n \"Fortuna de Minas\",\n \"Francisco Badaró\",\n \"Francisco Dumont\",\n \"Francisco Sá\",\n \"Franciscópolis\",\n \"Frei Gaspar\",\n \"Frei Inocêncio\",\n \"Frei Lagonegro\",\n \"Fronteira\",\n \"Fronteira dos Vales\",\n \"Fruta de Leite\",\n \"Frutal\",\n \"Funilândia\",\n \"Galiléia\",\n \"Gameleiras\",\n \"Glaucilândia\",\n \"Goiabeira\",\n \"Goianá\",\n \"Gonçalves\",\n \"Gonzaga\",\n \"Gouveia\",\n \"Governador Valadares\",\n \"Grão Mogol\",\n \"Grupiara\",\n \"Guanhães\",\n \"Guapé\",\n \"Guaraciaba\",\n \"Guaraciama\",\n \"Guaranésia\",\n \"Guarani\",\n \"Guarará\",\n \"Guarda-Mor\",\n \"Guaxupé\",\n \"Guidoval\",\n \"Guimarânia\",\n \"Guiricema\",\n \"Gurinhatã\",\n \"Heliodora\",\n \"Iapu\",\n \"Ibertioga\",\n \"Ibiá\",\n \"Ibiaí\",\n \"Ibiracatu\",\n \"Ibiraci\",\n \"Ibirité\",\n \"Ibitiúra de Minas\",\n \"Ibituruna\",\n \"Icaraí de Minas\",\n \"Igarapé\",\n \"Igaratinga\",\n \"Iguatama\",\n \"Ijaci\",\n \"Ilicínea\",\n \"Imbé de Minas\",\n \"Inconfidentes\",\n \"Indaiabira\",\n \"Indianópolis\",\n \"Ingaí\",\n \"Inhapim\",\n \"Inhaúma\",\n \"Inimutaba\",\n \"Ipaba\",\n \"Ipanema\",\n \"Ipatinga\",\n \"Ipiaçu\",\n \"Ipuiúna\",\n \"Iraí de Minas\",\n \"Itabira\",\n \"Itabirinha\",\n \"Itabirito\",\n \"Itacambira\",\n \"Itacarambi\",\n \"Itaguara\",\n \"Itaipé\",\n \"Itajubá\",\n \"Itamarandiba\",\n \"Itamarati de Minas\",\n \"Itambacuri\",\n \"Itambé do Mato Dentro\",\n \"Itamogi\",\n \"Itamonte\",\n \"Itanhandu\",\n \"Itanhomi\",\n \"Itaobim\",\n \"Itapagipe\",\n \"Itapecerica\",\n \"Itapeva\",\n \"Itatiaiuçu\",\n \"Itaú de Minas\",\n \"Itaúna\",\n \"Itaverava\",\n \"Itinga\",\n \"Itueta\",\n \"Ituiutaba\",\n \"Itumirim\",\n \"Iturama\",\n \"Itutinga\",\n \"Jaboticatubas\",\n \"Jacinto\",\n \"Jacuí\",\n \"Jacutinga\",\n \"Jaguaraçu\",\n \"Jaíba\",\n \"Jampruca\",\n \"Janaúba\",\n \"Januária\",\n \"Japaraíba\",\n \"Japonvar\",\n \"Jeceaba\",\n \"Jenipapo de Minas\",\n \"Jequeri\",\n \"Jequitaí\",\n \"Jequitibá\",\n \"Jequitinhonha\",\n \"Jesuânia\",\n \"Joaíma\",\n \"Joanésia\",\n \"João Monlevade\",\n \"João Pinheiro\",\n \"Joaquim Felício\",\n \"Jordânia\",\n \"José Gonçalves de Minas\",\n \"José Raydan\",\n \"Josenópolis\",\n \"Juatuba\",\n \"Juiz de Fora\",\n \"Juramento\",\n \"Juruaia\",\n \"Juvenília\",\n \"Ladainha\",\n \"Lagamar\",\n \"Lagoa da Prata\",\n \"Lagoa dos Patos\",\n \"Lagoa Dourada\",\n \"Lagoa Formosa\",\n \"Lagoa Grande\",\n \"Lagoa Santa\",\n \"Lajinha\",\n \"Lambari\",\n \"Lamim\",\n \"Laranjal\",\n \"Lassance\",\n \"Lavras\",\n \"Leandro Ferreira\",\n \"Leme do Prado\",\n \"Leopoldina\",\n \"Liberdade\",\n \"Lima Duarte\",\n \"Limeira do Oeste\",\n \"Lontra\",\n \"Luisburgo\",\n \"Luislândia\",\n \"Luminárias\",\n \"Luz\",\n \"Machacalis\",\n \"Machado\",\n \"Madre de Deus de Minas\",\n \"Malacacheta\",\n \"Mamonas\",\n \"Manga\",\n \"Manhuaçu\",\n \"Manhumirim\",\n \"Mantena\",\n \"Mar de Espanha\",\n \"Maravilhas\",\n \"Maria da Fé\",\n \"Mariana\",\n \"Marilac\",\n \"Mário Campos\",\n \"Maripá de Minas\",\n \"Marliéria\",\n \"Marmelópolis\",\n \"Martinho Campos\",\n \"Martins Soares\",\n \"Mata Verde\",\n \"Materlândia\",\n \"Mateus Leme\",\n \"Mathias Lobato\",\n \"Matias Barbosa\",\n \"Matias Cardoso\",\n \"Matipó\",\n \"Mato Verde\",\n \"Matozinhos\",\n \"Matutina\",\n \"Medeiros\",\n \"Medina\",\n \"Mendes Pimentel\",\n \"Mercês\",\n \"Mesquita\",\n \"Minas Novas\",\n \"Minduri\",\n \"Mirabela\",\n \"Miradouro\",\n \"Miraí\",\n \"Miravânia\",\n \"Moeda\",\n \"Moema\",\n \"Monjolos\",\n \"Monsenhor Paulo\",\n \"Montalvânia\",\n \"Monte Alegre de Minas\",\n \"Monte Azul\",\n \"Monte Belo\",\n \"Monte Carmelo\",\n \"Monte Formoso\",\n \"Monte Santo de Minas\",\n \"Monte Sião\",\n \"Montes Claros\",\n \"Montezuma\",\n \"Morada Nova de Minas\",\n \"Morro da Garça\",\n \"Morro do Pilar\",\n \"Munhoz\",\n \"Muriaé\",\n \"Mutum\",\n \"Muzambinho\",\n \"Nacip Raydan\",\n \"Nanuque\",\n \"Naque\",\n \"Natalândia\",\n \"Natércia\",\n \"Nazareno\",\n \"Nepomuceno\",\n \"Ninheira\",\n \"Nova Belém\",\n \"Nova Era\",\n \"Nova Lima\",\n \"Nova Módica\",\n \"Nova Ponte\",\n \"Nova Porteirinha\",\n \"Nova Resende\",\n \"Nova Serrana\",\n \"Nova União\",\n \"Novo Cruzeiro\",\n \"Novo Oriente de Minas\",\n \"Novorizonte\",\n \"Olaria\",\n \"Olhos-d'Água\",\n \"Olímpio Noronha\",\n \"Oliveira\",\n \"Oliveira Fortes\",\n \"Onça de Pitangui\",\n \"Oratórios\",\n \"Orizânia\",\n \"Ouro Branco\",\n \"Ouro Fino\",\n \"Ouro Preto\",\n \"Ouro Verde de Minas\",\n \"Padre Carvalho\",\n \"Padre Paraíso\",\n \"Pai Pedro\",\n \"Paineiras\",\n \"Pains\",\n \"Paiva\",\n \"Palma\",\n \"Palmópolis\",\n \"Papagaios\",\n \"Pará de Minas\",\n \"Paracatu\",\n \"Paraguaçu\",\n \"Paraisópolis\",\n \"Paraopeba\",\n \"Passa Quatro\",\n \"Passa Tempo\",\n \"Passa Vinte\",\n \"Passabém\",\n \"Passos\",\n \"Patis\",\n \"Patos de Minas\",\n \"Patrocínio\",\n \"Patrocínio do Muriaé\",\n \"Paula Cândido\",\n \"Paulistas\",\n \"Pavão\",\n \"Peçanha\",\n \"Pedra Azul\",\n \"Pedra Bonita\",\n \"Pedra do Anta\",\n \"Pedra do Indaiá\",\n \"Pedra Dourada\",\n \"Pedralva\",\n \"Pedras de Maria da Cruz\",\n \"Pedrinópolis\",\n \"Pedro Leopoldo\",\n \"Pedro Teixeira\",\n \"Pequeri\",\n \"Pequi\",\n \"Perdigão\",\n \"Perdizes\",\n \"Perdões\",\n \"Periquito\",\n \"Pescador\",\n \"Piau\",\n \"Piedade de Caratinga\",\n \"Piedade de Ponte Nova\",\n \"Piedade do Rio Grande\",\n \"Piedade dos Gerais\",\n \"Pimenta\",\n \"Pingo-d'Água\",\n \"Pintópolis\",\n \"Piracema\",\n \"Pirajuba\",\n \"Piranga\",\n \"Piranguçu\",\n \"Piranguinho\",\n \"Pirapetinga\",\n \"Pirapora\",\n \"Piraúba\",\n \"Pitangui\",\n \"Piumhi\",\n \"Planura\",\n \"Poço Fundo\",\n \"Poços de Caldas\",\n \"Pocrane\",\n \"Pompéu\",\n \"Ponte Nova\",\n \"Ponto Chique\",\n \"Ponto dos Volantes\",\n \"Porteirinha\",\n \"Porto Firme\",\n \"Poté\",\n \"Pouso Alegre\",\n \"Pouso Alto\",\n \"Prados\",\n \"Prata\",\n \"Pratápolis\",\n \"Pratinha\",\n \"Presidente Bernardes\",\n \"Presidente Juscelino\",\n \"Presidente Kubitschek\",\n \"Presidente Olegário\",\n \"Prudente de Morais\",\n \"Quartel Geral\",\n \"Queluzito\",\n \"Raposos\",\n \"Raul Soares\",\n \"Recreio\",\n \"Reduto\",\n \"Resende Costa\",\n \"Resplendor\",\n \"Ressaquinha\",\n \"Riachinho\",\n \"Riacho dos Machados\",\n \"Ribeirão das Neves\",\n \"Ribeirão Vermelho\",\n \"Rio Acima\",\n \"Rio Casca\",\n \"Rio do Prado\",\n \"Rio Doce\",\n \"Rio Espera\",\n \"Rio Manso\",\n \"Rio Novo\",\n \"Rio Paranaíba\",\n \"Rio Pardo de Minas\",\n \"Rio Piracicaba\",\n \"Rio Pomba\",\n \"Rio Preto\",\n \"Rio Vermelho\",\n \"Ritápolis\",\n \"Rochedo de Minas\",\n \"Rodeiro\",\n \"Romaria\",\n \"Rosário da Limeira\",\n \"Rubelita\",\n \"Rubim\",\n \"Sabará\",\n \"Sabinópolis\",\n \"Sacramento\",\n \"Salinas\",\n \"Salto da Divisa\",\n \"Santa Bárbara\",\n \"Santa Bárbara do Leste\",\n \"Santa Bárbara do Monte Verde\",\n \"Santa Bárbara do Tugúrio\",\n \"Santa Cruz de Minas\",\n \"Santa Cruz de Salinas\",\n \"Santa Cruz do Escalvado\",\n \"Santa Efigênia de Minas\",\n \"Santa Fé de Minas\",\n \"Santa Helena de Minas\",\n \"Santa Juliana\",\n \"Santa Luzia\",\n \"Santa Margarida\",\n \"Santa Maria de Itabira\",\n \"Santa Maria do Salto\",\n \"Santa Maria do Suaçuí\",\n \"Santa Rita de Caldas\",\n \"Santa Rita de Ibitipoca\",\n \"Santa Rita de Jacutinga\",\n \"Santa Rita de Minas\",\n \"Santa Rita do Itueto\",\n \"Santa Rita do Sapucaí\",\n \"Santa Rosa da Serra\",\n \"Santa Vitória\",\n \"Santana da Vargem\",\n \"Santana de Cataguases\",\n \"Santana de Pirapama\",\n \"Santana do Deserto\",\n \"Santana do Garambéu\",\n \"Santana do Jacaré\",\n \"Santana do Manhuaçu\",\n \"Santana do Paraíso\",\n \"Santana do Riacho\",\n \"Santana dos Montes\",\n \"Santo Antônio do Amparo\",\n \"Santo Antônio do Aventureiro\",\n \"Santo Antônio do Grama\",\n \"Santo Antônio do Itambé\",\n \"Santo Antônio do Jacinto\",\n \"Santo Antônio do Monte\",\n \"Santo Antônio do Retiro\",\n \"Santo Antônio do Rio Abaixo\",\n \"Santo Hipólito\",\n \"Santos Dumont\",\n \"São Bento Abade\",\n \"São Brás do Suaçuí\",\n \"São Domingos das Dores\",\n \"São Domingos do Prata\",\n \"São Félix de Minas\",\n \"São Francisco\",\n \"São Francisco de Paula\",\n \"São Francisco de Sales\",\n \"São Francisco do Glória\",\n \"São Geraldo\",\n \"São Geraldo da Piedade\",\n \"São Geraldo do Baixio\",\n \"São Gonçalo do Abaeté\",\n \"São Gonçalo do Pará\",\n \"São Gonçalo do Rio Abaixo\",\n \"São Gonçalo do Rio Preto\",\n \"São Gonçalo do Sapucaí\",\n \"São Gotardo\",\n \"São João Batista do Glória\",\n \"São João da Lagoa\",\n \"São João da Mata\",\n \"São João da Ponte\",\n \"São João das Missões\",\n \"São João del Rei\",\n \"São João do Manhuaçu\",\n \"São João do Manteninha\",\n \"São João do Oriente\",\n \"São João do Pacuí\",\n \"São João do Paraíso\",\n \"São João Evangelista\",\n \"São João Nepomuceno\",\n \"São Joaquim de Bicas\",\n \"São José da Barra\",\n \"São José da Lapa\",\n \"São José da Safira\",\n \"São José da Varginha\",\n \"São José do Alegre\",\n \"São José do Divino\",\n \"São José do Goiabal\",\n \"São José do Jacuri\",\n \"São José do Mantimento\",\n \"São Lourenço\",\n \"São Miguel do Anta\",\n \"São Pedro da União\",\n \"São Pedro do Suaçuí\",\n \"São Pedro dos Ferros\",\n \"São Romão\",\n \"São Roque de Minas\",\n \"São Sebastião da Bela Vista\",\n \"São Sebastião da Vargem Alegre\",\n \"São Sebastião do Anta\",\n \"São Sebastião do Maranhão\",\n \"São Sebastião do Oeste\",\n \"São Sebastião do Paraíso\",\n \"São Sebastião do Rio Preto\",\n \"São Sebastião do Rio Verde\",\n \"São Tiago\",\n \"São Tomás de Aquino\",\n \"São Tomé das Letras\",\n \"São Vicente de Minas\",\n \"Sapucaí-Mirim\",\n \"Sardoá\",\n \"Sarzedo\",\n \"Sem-Peixe\",\n \"Senador Amaral\",\n \"Senador Cortes\",\n \"Senador Firmino\",\n \"Senador José Bento\",\n \"Senador Modestino Gonçalves\",\n \"Senhora de Oliveira\",\n \"Senhora do Porto\",\n \"Senhora dos Remédios\",\n \"Sericita\",\n \"Seritinga\",\n \"Serra Azul de Minas\",\n \"Serra da Saudade\",\n \"Serra do Salitre\",\n \"Serra dos Aimorés\",\n \"Serrania\",\n \"Serranópolis de Minas\",\n \"Serranos\",\n \"Serro\",\n \"Sete Lagoas\",\n \"Setubinha\",\n \"Silveirânia\",\n \"Silvianópolis\",\n \"Simão Pereira\",\n \"Simonésia\",\n \"Sobrália\",\n \"Soledade de Minas\",\n \"Tabuleiro\",\n \"Taiobeiras\",\n \"Taparuba\",\n \"Tapira\",\n \"Tapiraí\",\n \"Taquaraçu de Minas\",\n \"Tarumirim\",\n \"Teixeiras\",\n \"Teófilo Otoni\",\n \"Timóteo\",\n \"Tiradentes\",\n \"Tiros\",\n \"Tocantins\",\n \"Tocos do Moji\",\n \"Toledo\",\n \"Tombos\",\n \"Três Corações\",\n \"Três Marias\",\n \"Três Pontas\",\n \"Tumiritinga\",\n \"Tupaciguara\",\n \"Turmalina\",\n \"Turvolândia\",\n \"Ubá\",\n \"Ubaí\",\n \"Ubaporanga\",\n \"Uberaba\",\n \"Uberlândia\",\n \"Umburatiba\",\n \"Unaí\",\n \"União de Minas\",\n \"Uruana de Minas\",\n \"Urucânia\",\n \"Urucuia\",\n \"Vargem Alegre\",\n \"Vargem Bonita\",\n \"Vargem Grande do Rio Pardo\",\n \"Varginha\",\n \"Varjão de Minas\",\n \"Várzea da Palma\",\n \"Varzelândia\",\n \"Vazante\",\n \"Verdelândia\",\n \"Veredinha\",\n \"Veríssimo\",\n \"Vermelho Novo\",\n \"Vespasiano\",\n \"Viçosa\",\n \"Vieiras\",\n \"Virgem da Lapa\",\n \"Virgínia\",\n \"Virginópolis\",\n \"Virgolândia\",\n \"Visconde do Rio Branco\",\n \"Volta Grande\",\n \"Wenceslau Braz\"\n ]\n },\n {\n \"uf\": \"MS\",\n \"name\": \"Mato Grosso do Sul\",\n \"cities\": [\n \"Água Clara\",\n \"Alcinópolis\",\n \"Amambai\",\n \"Anastácio\",\n \"Anaurilândia\",\n \"Angélica\",\n \"Antônio João\",\n \"Aparecida do Taboado\",\n \"Aquidauana\",\n \"Aral Moreira\",\n \"Bandeirantes\",\n \"Bataguassu\",\n \"Batayporã\",\n \"Bela Vista\",\n \"Bodoquena\",\n \"Bonito\",\n \"Brasilândia\",\n \"Caarapó\",\n \"Camapuã\",\n \"Campo Grande\",\n \"Caracol\",\n \"Cassilândia\",\n \"Chapadão do Sul\",\n \"Corguinho\",\n \"Coronel Sapucaia\",\n \"Corumbá\",\n \"Costa Rica\",\n \"Coxim\",\n \"Deodápolis\",\n \"Dois Irmãos do Buriti\",\n \"Douradina\",\n \"Dourados\",\n \"Eldorado\",\n \"Fátima do Sul\",\n \"Figueirão\",\n \"Glória de Dourados\",\n \"Guia Lopes da Laguna\",\n \"Iguatemi\",\n \"Inocência\",\n \"Itaporã\",\n \"Itaquiraí\",\n \"Ivinhema\",\n \"Japorã\",\n \"Jaraguari\",\n \"Jardim\",\n \"Jateí\",\n \"Juti\",\n \"Ladário\",\n \"Laguna Carapã\",\n \"Maracaju\",\n \"Miranda\",\n \"Mundo Novo\",\n \"Naviraí\",\n \"Nioaque\",\n \"Nova Alvorada do Sul\",\n \"Nova Andradina\",\n \"Novo Horizonte do Sul\",\n \"Paraíso das Águas\",\n \"Paranaíba\",\n \"Paranhos\",\n \"Pedro Gomes\",\n \"Ponta Porã\",\n \"Porto Murtinho\",\n \"Ribas do Rio Pardo\",\n \"Rio Brilhante\",\n \"Rio Negro\",\n \"Rio Verde de Mato Grosso\",\n \"Rochedo\",\n \"Santa Rita do Pardo\",\n \"São Gabriel do Oeste\",\n \"Selvíria\",\n \"Sete Quedas\",\n \"Sidrolândia\",\n \"Sonora\",\n \"Tacuru\",\n \"Taquarussu\",\n \"Terenos\",\n \"Três Lagoas\",\n \"Vicentina\"\n ]\n },\n {\n \"uf\": \"MT\",\n \"name\": \"Mato Grosso\",\n \"cities\": [\n \"Acorizal\",\n \"Água Boa\",\n \"Alta Floresta\",\n \"Alto Araguaia\",\n \"Alto Boa Vista\",\n \"Alto Garças\",\n \"Alto Paraguai\",\n \"Alto Taquari\",\n \"Apiacás\",\n \"Araguaiana\",\n \"Araguainha\",\n \"Araputanga\",\n \"Arenápolis\",\n \"Aripuanã\",\n \"Barão de Melgaço\",\n \"Barra do Bugres\",\n \"Barra do Garças\",\n \"Boa Esperança do Norte\",\n \"Bom Jesus do Araguaia\",\n \"Brasnorte\",\n \"Cáceres\",\n \"Campinápolis\",\n \"Campo Novo do Parecis\",\n \"Campo Verde\",\n \"Campos de Júlio\",\n \"Canabrava do Norte\",\n \"Canarana\",\n \"Carlinda\",\n \"Castanheira\",\n \"Chapada dos Guimarães\",\n \"Cláudia\",\n \"Cocalinho\",\n \"Colíder\",\n \"Colniza\",\n \"Comodoro\",\n \"Confresa\",\n \"Conquista D'Oeste\",\n \"Cotriguaçu\",\n \"Cuiabá\",\n \"Curvelândia\",\n \"Denise\",\n \"Diamantino\",\n \"Dom Aquino\",\n \"Feliz Natal\",\n \"Figueirópolis D'Oeste\",\n \"Gaúcha do Norte\",\n \"General Carneiro\",\n \"Glória D'Oeste\",\n \"Guarantã do Norte\",\n \"Guiratinga\",\n \"Indiavaí\",\n \"Ipiranga do Norte\",\n \"Itanhangá\",\n \"Itaúba\",\n \"Itiquira\",\n \"Jaciara\",\n \"Jangada\",\n \"Jauru\",\n \"Juara\",\n \"Juína\",\n \"Juruena\",\n \"Juscimeira\",\n \"Lambari D'Oeste\",\n \"Lucas do Rio Verde\",\n \"Luciara\",\n \"Marcelândia\",\n \"Matupá\",\n \"Mirassol d'Oeste\",\n \"Nobres\",\n \"Nortelândia\",\n \"Nossa Senhora do Livramento\",\n \"Nova Bandeirantes\",\n \"Nova Brasilândia\",\n \"Nova Canaã do Norte\",\n \"Nova Guarita\",\n \"Nova Lacerda\",\n \"Nova Marilândia\",\n \"Nova Maringá\",\n \"Nova Monte Verde\",\n \"Nova Mutum\",\n \"Nova Nazaré\",\n \"Nova Olímpia\",\n \"Nova Santa Helena\",\n \"Nova Ubiratã\",\n \"Nova Xavantina\",\n \"Novo Horizonte do Norte\",\n \"Novo Mundo\",\n \"Novo Santo Antônio\",\n \"Novo São Joaquim\",\n \"Paranaíta\",\n \"Paranatinga\",\n \"Pedra Preta\",\n \"Peixoto de Azevedo\",\n \"Planalto da Serra\",\n \"Poconé\",\n \"Pontal do Araguaia\",\n \"Ponte Branca\",\n \"Pontes e Lacerda\",\n \"Porto Alegre do Norte\",\n \"Porto dos Gaúchos\",\n \"Porto Esperidião\",\n \"Porto Estrela\",\n \"Poxoréu\",\n \"Primavera do Leste\",\n \"Querência\",\n \"Reserva do Cabaçal\",\n \"Ribeirão Cascalheira\",\n \"Ribeirãozinho\",\n \"Rio Branco\",\n \"Rondolândia\",\n \"Rondonópolis\",\n \"Rosário Oeste\",\n \"Salto do Céu\",\n \"Santa Carmem\",\n \"Santa Cruz do Xingu\",\n \"Santa Rita do Trivelato\",\n \"Santa Terezinha\",\n \"Santo Afonso\",\n \"Santo Antônio de Leverger\",\n \"Santo Antônio do Leste\",\n \"São Félix do Araguaia\",\n \"São José do Povo\",\n \"São José do Rio Claro\",\n \"São José do Xingu\",\n \"São José dos Quatro Marcos\",\n \"São Pedro da Cipa\",\n \"Sapezal\",\n \"Serra Nova Dourada\",\n \"Sinop\",\n \"Sorriso\",\n \"Tabaporã\",\n \"Tangará da Serra\",\n \"Tapurah\",\n \"Terra Nova do Norte\",\n \"Tesouro\",\n \"Torixoréu\",\n \"União do Sul\",\n \"Vale de São Domingos\",\n \"Várzea Grande\",\n \"Vera\",\n \"Vila Bela da Santíssima Trindade\",\n \"Vila Rica\"\n ]\n },\n {\n \"uf\": \"PA\",\n \"name\": \"Pará\",\n \"cities\": [\n \"Abaetetuba\",\n \"Abel Figueiredo\",\n \"Acará\",\n \"Afuá\",\n \"Água Azul do Norte\",\n \"Alenquer\",\n \"Almeirim\",\n \"Altamira\",\n \"Anajás\",\n \"Ananindeua\",\n \"Anapu\",\n \"Augusto Corrêa\",\n \"Aurora do Pará\",\n \"Aveiro\",\n \"Bagre\",\n \"Baião\",\n \"Bannach\",\n \"Barcarena\",\n \"Belém\",\n \"Belterra\",\n \"Benevides\",\n \"Bom Jesus do Tocantins\",\n \"Bonito\",\n \"Bragança\",\n \"Brasil Novo\",\n \"Brejo Grande do Araguaia\",\n \"Breu Branco\",\n \"Breves\",\n \"Bujaru\",\n \"Cachoeira do Arari\",\n \"Cachoeira do Piriá\",\n \"Cametá\",\n \"Canaã dos Carajás\",\n \"Capanema\",\n \"Capitão Poço\",\n \"Castanhal\",\n \"Chaves\",\n \"Colares\",\n \"Conceição do Araguaia\",\n \"Concórdia do Pará\",\n \"Cumaru do Norte\",\n \"Curionópolis\",\n \"Curralinho\",\n \"Curuá\",\n \"Curuçá\",\n \"Dom Eliseu\",\n \"Eldorado do Carajás\",\n \"Faro\",\n \"Floresta do Araguaia\",\n \"Garrafão do Norte\",\n \"Goianésia do Pará\",\n \"Gurupá\",\n \"Igarapé-Açu\",\n \"Igarapé-Miri\",\n \"Inhangapi\",\n \"Ipixuna do Pará\",\n \"Irituia\",\n \"Itaituba\",\n \"Itupiranga\",\n \"Jacareacanga\",\n \"Jacundá\",\n \"Juruti\",\n \"Limoeiro do Ajuru\",\n \"Mãe do Rio\",\n \"Magalhães Barata\",\n \"Marabá\",\n \"Maracanã\",\n \"Marapanim\",\n \"Marituba\",\n \"Medicilândia\",\n \"Melgaço\",\n \"Mocajuba\",\n \"Moju\",\n \"Mojuí dos Campos\",\n \"Monte Alegre\",\n \"Muaná\",\n \"Nova Esperança do Piriá\",\n \"Nova Ipixuna\",\n \"Nova Timboteua\",\n \"Novo Progresso\",\n \"Novo Repartimento\",\n \"Óbidos\",\n \"Oeiras do Pará\",\n \"Oriximiná\",\n \"Ourém\",\n \"Ourilândia do Norte\",\n \"Pacajá\",\n \"Palestina do Pará\",\n \"Paragominas\",\n \"Parauapebas\",\n \"Pau D'Arco\",\n \"Peixe-Boi\",\n \"Piçarra\",\n \"Placas\",\n \"Ponta de Pedras\",\n \"Portel\",\n \"Porto de Moz\",\n \"Prainha\",\n \"Primavera\",\n \"Quatipuru\",\n \"Redenção\",\n \"Rio Maria\",\n \"Rondon do Pará\",\n \"Rurópolis\",\n \"Salinópolis\",\n \"Salvaterra\",\n \"Santa Bárbara do Pará\",\n \"Santa Cruz do Arari\",\n \"Santa Izabel do Pará\",\n \"Santa Luzia do Pará\",\n \"Santa Maria das Barreiras\",\n \"Santa Maria do Pará\",\n \"Santana do Araguaia\",\n \"Santarém\",\n \"Santarém Novo\",\n \"Santo Antônio do Tauá\",\n \"São Caetano de Odivelas\",\n \"São Domingos do Araguaia\",\n \"São Domingos do Capim\",\n \"São Félix do Xingu\",\n \"São Francisco do Pará\",\n \"São Geraldo do Araguaia\",\n \"São João da Ponta\",\n \"São João de Pirabas\",\n \"São João do Araguaia\",\n \"São Miguel do Guamá\",\n \"São Sebastião da Boa Vista\",\n \"Sapucaia\",\n \"Senador José Porfírio\",\n \"Soure\",\n \"Tailândia\",\n \"Terra Alta\",\n \"Terra Santa\",\n \"Tomé-Açu\",\n \"Tracuateua\",\n \"Trairão\",\n \"Tucumã\",\n \"Tucuruí\",\n \"Ulianópolis\",\n \"Uruará\",\n \"Vigia\",\n \"Viseu\",\n \"Vitória do Xingu\",\n \"Xinguara\"\n ]\n },\n {\n \"uf\": \"PB\",\n \"name\": \"Paraíba\",\n \"cities\": [\n \"Água Branca\",\n \"Aguiar\",\n \"Alagoa Grande\",\n \"Alagoa Nova\",\n \"Alagoinha\",\n \"Alcantil\",\n \"Algodão de Jandaíra\",\n \"Alhandra\",\n \"Amparo\",\n \"Aparecida\",\n \"Araçagi\",\n \"Arara\",\n \"Araruna\",\n \"Areia\",\n \"Areia de Baraúnas\",\n \"Areial\",\n \"Aroeiras\",\n \"Assunção\",\n \"Baía da Traição\",\n \"Bananeiras\",\n \"Baraúna\",\n \"Barra de Santa Rosa\",\n \"Barra de Santana\",\n \"Barra de São Miguel\",\n \"Bayeux\",\n \"Belém\",\n \"Belém do Brejo do Cruz\",\n \"Bernardino Batista\",\n \"Boa Ventura\",\n \"Boa Vista\",\n \"Bom Jesus\",\n \"Bom Sucesso\",\n \"Bonito de Santa Fé\",\n \"Boqueirão\",\n \"Borborema\",\n \"Brejo do Cruz\",\n \"Brejo dos Santos\",\n \"Caaporã\",\n \"Cabaceiras\",\n \"Cabedelo\",\n \"Cachoeira dos Índios\",\n \"Cacimba de Areia\",\n \"Cacimba de Dentro\",\n \"Cacimbas\",\n \"Caiçara\",\n \"Cajazeiras\",\n \"Cajazeirinhas\",\n \"Caldas Brandão\",\n \"Camalaú\",\n \"Campina Grande\",\n \"Capim\",\n \"Caraúbas\",\n \"Carrapateira\",\n \"Casserengue\",\n \"Catingueira\",\n \"Catolé do Rocha\",\n \"Caturité\",\n \"Conceição\",\n \"Condado\",\n \"Conde\",\n \"Congo\",\n \"Coremas\",\n \"Coxixola\",\n \"Cruz do Espírito Santo\",\n \"Cubati\",\n \"Cuité\",\n \"Cuité de Mamanguape\",\n \"Cuitegi\",\n \"Curral de Cima\",\n \"Curral Velho\",\n \"Damião\",\n \"Desterro\",\n \"Diamante\",\n \"Dona Inês\",\n \"Duas Estradas\",\n \"Emas\",\n \"Esperança\",\n \"Fagundes\",\n \"Frei Martinho\",\n \"Gado Bravo\",\n \"Guarabira\",\n \"Gurinhém\",\n \"Gurjão\",\n \"Ibiara\",\n \"Igaracy\",\n \"Imaculada\",\n \"Ingá\",\n \"Itabaiana\",\n \"Itaporanga\",\n \"Itapororoca\",\n \"Itatuba\",\n \"Jacaraú\",\n \"Jericó\",\n \"João Pessoa\",\n \"Joca Claudino\",\n \"Juarez Távora\",\n \"Juazeirinho\",\n \"Junco do Seridó\",\n \"Juripiranga\",\n \"Juru\",\n \"Lagoa\",\n \"Lagoa de Dentro\",\n \"Lagoa Seca\",\n \"Lastro\",\n \"Livramento\",\n \"Logradouro\",\n \"Lucena\",\n \"Mãe d'Água\",\n \"Malta\",\n \"Mamanguape\",\n \"Manaíra\",\n \"Marcação\",\n \"Mari\",\n \"Marizópolis\",\n \"Massaranduba\",\n \"Mataraca\",\n \"Matinhas\",\n \"Mato Grosso\",\n \"Maturéia\",\n \"Mogeiro\",\n \"Montadas\",\n \"Monte Horebe\",\n \"Monteiro\",\n \"Mulungu\",\n \"Natuba\",\n \"Nazarezinho\",\n \"Nova Floresta\",\n \"Nova Olinda\",\n \"Nova Palmeira\",\n \"Olho d'Água\",\n \"Olivedos\",\n \"Ouro Velho\",\n \"Parari\",\n \"Passagem\",\n \"Patos\",\n \"Paulista\",\n \"Pedra Branca\",\n \"Pedra Lavrada\",\n \"Pedras de Fogo\",\n \"Pedro Régis\",\n \"Piancó\",\n \"Picuí\",\n \"Pilar\",\n \"Pilões\",\n \"Pilõezinhos\",\n \"Pirpirituba\",\n \"Pitimbu\",\n \"Pocinhos\",\n \"Poço Dantas\",\n \"Poço de José de Moura\",\n \"Pombal\",\n \"Prata\",\n \"Princesa Isabel\",\n \"Puxinanã\",\n \"Queimadas\",\n \"Quixaba\",\n \"Remígio\",\n \"Riachão\",\n \"Riachão do Bacamarte\",\n \"Riachão do Poço\",\n \"Riacho de Santo Antônio\",\n \"Riacho dos Cavalos\",\n \"Rio Tinto\",\n \"Salgadinho\",\n \"Salgado de São Félix\",\n \"Santa Cecília\",\n \"Santa Cruz\",\n \"Santa Helena\",\n \"Santa Inês\",\n \"Santa Luzia\",\n \"Santa Rita\",\n \"Santa Teresinha\",\n \"Santana de Mangueira\",\n \"Santana dos Garrotes\",\n \"Santo André\",\n \"São Bentinho\",\n \"São Bento\",\n \"São Domingos\",\n \"São Domingos do Cariri\",\n \"São Francisco\",\n \"São João do Cariri\",\n \"São João do Rio do Peixe\",\n \"São João do Tigre\",\n \"São José da Lagoa Tapada\",\n \"São José de Caiana\",\n \"São José de Espinharas\",\n \"São José de Piranhas\",\n \"São José de Princesa\",\n \"São José do Bonfim\",\n \"São José do Brejo do Cruz\",\n \"São José do Sabugi\",\n \"São José dos Cordeiros\",\n \"São José dos Ramos\",\n \"São Mamede\",\n \"São Miguel de Taipu\",\n \"São Sebastião de Lagoa de Roça\",\n \"São Sebastião do Umbuzeiro\",\n \"São Vicente do Seridó\",\n \"Sapé\",\n \"Serra Branca\",\n \"Serra da Raiz\",\n \"Serra Grande\",\n \"Serra Redonda\",\n \"Serraria\",\n \"Sertãozinho\",\n \"Sobrado\",\n \"Solânea\",\n \"Soledade\",\n \"Sossêgo\",\n \"Sousa\",\n \"Sumé\",\n \"Tacima\",\n \"Taperoá\",\n \"Tavares\",\n \"Teixeira\",\n \"Tenório\",\n \"Triunfo\",\n \"Uiraúna\",\n \"Umbuzeiro\",\n \"Várzea\",\n \"Vieirópolis\",\n \"Vista Serrana\",\n \"Zabelê\"\n ]\n },\n {\n \"uf\": \"PE\",\n \"name\": \"Pernambuco\",\n \"cities\": [\n \"Abreu e Lima\",\n \"Afogados da Ingazeira\",\n \"Afrânio\",\n \"Agrestina\",\n \"Água Preta\",\n \"Águas Belas\",\n \"Alagoinha\",\n \"Aliança\",\n \"Altinho\",\n \"Amaraji\",\n \"Angelim\",\n \"Araçoiaba\",\n \"Araripina\",\n \"Arcoverde\",\n \"Barra de Guabiraba\",\n \"Barreiros\",\n \"Belém de Maria\",\n \"Belém do São Francisco\",\n \"Belo Jardim\",\n \"Betânia\",\n \"Bezerros\",\n \"Bodocó\",\n \"Bom Conselho\",\n \"Bom Jardim\",\n \"Bonito\",\n \"Brejão\",\n \"Brejinho\",\n \"Brejo da Madre de Deus\",\n \"Buenos Aires\",\n \"Buíque\",\n \"Cabo de Santo Agostinho\",\n \"Cabrobó\",\n \"Cachoeirinha\",\n \"Caetés\",\n \"Calçado\",\n \"Calumbi\",\n \"Camaragibe\",\n \"Camocim de São Félix\",\n \"Camutanga\",\n \"Canhotinho\",\n \"Capoeiras\",\n \"Carnaíba\",\n \"Carnaubeira da Penha\",\n \"Carpina\",\n \"Caruaru\",\n \"Casinhas\",\n \"Catende\",\n \"Cedro\",\n \"Chã de Alegria\",\n \"Chã Grande\",\n \"Condado\",\n \"Correntes\",\n \"Cortês\",\n \"Cumaru\",\n \"Cupira\",\n \"Custódia\",\n \"Dormentes\",\n \"Escada\",\n \"Exu\",\n \"Feira Nova\",\n \"Fernando de Noronha\",\n \"Ferreiros\",\n \"Flores\",\n \"Floresta\",\n \"Frei Miguelinho\",\n \"Gameleira\",\n \"Garanhuns\",\n \"Glória do Goitá\",\n \"Goiana\",\n \"Granito\",\n \"Gravatá\",\n \"Iati\",\n \"Ibimirim\",\n \"Ibirajuba\",\n \"Igarassu\",\n \"Iguaracy\",\n \"Ilha de Itamaracá\",\n \"Inajá\",\n \"Ingazeira\",\n \"Ipojuca\",\n \"Ipubi\",\n \"Itacuruba\",\n \"Itaíba\",\n \"Itambé\",\n \"Itapetim\",\n \"Itapissuma\",\n \"Itaquitinga\",\n \"Jaboatão dos Guararapes\",\n \"Jaqueira\",\n \"Jataúba\",\n \"Jatobá\",\n \"João Alfredo\",\n \"Joaquim Nabuco\",\n \"Jucati\",\n \"Jupi\",\n \"Jurema\",\n \"Lagoa de Itaenga\",\n \"Lagoa do Carro\",\n \"Lagoa do Ouro\",\n \"Lagoa dos Gatos\",\n \"Lagoa Grande\",\n \"Lajedo\",\n \"Limoeiro\",\n \"Macaparana\",\n \"Machados\",\n \"Manari\",\n \"Maraial\",\n \"Mirandiba\",\n \"Moreilândia\",\n \"Moreno\",\n \"Nazaré da Mata\",\n \"Olinda\",\n \"Orobó\",\n \"Orocó\",\n \"Ouricuri\",\n \"Palmares\",\n \"Palmeirina\",\n \"Panelas\",\n \"Paranatama\",\n \"Parnamirim\",\n \"Passira\",\n \"Paudalho\",\n \"Paulista\",\n \"Pedra\",\n \"Pesqueira\",\n \"Petrolândia\",\n \"Petrolina\",\n \"Poção\",\n \"Pombos\",\n \"Primavera\",\n \"Quipapá\",\n \"Quixaba\",\n \"Recife\",\n \"Riacho das Almas\",\n \"Ribeirão\",\n \"Rio Formoso\",\n \"Sairé\",\n \"Salgadinho\",\n \"Salgueiro\",\n \"Saloá\",\n \"Sanharó\",\n \"Santa Cruz\",\n \"Santa Cruz da Baixa Verde\",\n \"Santa Cruz do Capibaribe\",\n \"Santa Filomena\",\n \"Santa Maria da Boa Vista\",\n \"Santa Maria do Cambucá\",\n \"Santa Terezinha\",\n \"São Benedito do Sul\",\n \"São Bento do Una\",\n \"São Caitano\",\n \"São João\",\n \"São Joaquim do Monte\",\n \"São José da Coroa Grande\",\n \"São José do Belmonte\",\n \"São José do Egito\",\n \"São Lourenço da Mata\",\n \"São Vicente Férrer\",\n \"Serra Talhada\",\n \"Serrita\",\n \"Sertânia\",\n \"Sirinhaém\",\n \"Solidão\",\n \"Surubim\",\n \"Tabira\",\n \"Tacaimbó\",\n \"Tacaratu\",\n \"Tamandaré\",\n \"Taquaritinga do Norte\",\n \"Terezinha\",\n \"Terra Nova\",\n \"Timbaúba\",\n \"Toritama\",\n \"Tracunhaém\",\n \"Trindade\",\n \"Triunfo\",\n \"Tupanatinga\",\n \"Tuparetama\",\n \"Venturosa\",\n \"Verdejante\",\n \"Vertente do Lério\",\n \"Vertentes\",\n \"Vicência\",\n \"Vitória de Santo Antão\",\n \"Xexéu\"\n ]\n },\n {\n \"uf\": \"PI\",\n \"name\": \"Piauí\",\n \"cities\": [\n \"Acauã\",\n \"Agricolândia\",\n \"Água Branca\",\n \"Alagoinha do Piauí\",\n \"Alegrete do Piauí\",\n \"Alto Longá\",\n \"Altos\",\n \"Alvorada do Gurguéia\",\n \"Amarante\",\n \"Angical do Piauí\",\n \"Anísio de Abreu\",\n \"Antônio Almeida\",\n \"Aroazes\",\n \"Aroeiras do Itaim\",\n \"Arraial\",\n \"Assunção do Piauí\",\n \"Avelino Lopes\",\n \"Baixa Grande do Ribeiro\",\n \"Barra D'Alcântara\",\n \"Barras\",\n \"Barreiras do Piauí\",\n \"Barro Duro\",\n \"Batalha\",\n \"Bela Vista do Piauí\",\n \"Belém do Piauí\",\n \"Beneditinos\",\n \"Bertolínia\",\n \"Betânia do Piauí\",\n \"Boa Hora\",\n \"Bocaina\",\n \"Bom Jesus\",\n \"Bom Princípio do Piauí\",\n \"Bonfim do Piauí\",\n \"Boqueirão do Piauí\",\n \"Brasileira\",\n \"Brejo do Piauí\",\n \"Buriti dos Lopes\",\n \"Buriti dos Montes\",\n \"Cabeceiras do Piauí\",\n \"Cajazeiras do Piauí\",\n \"Cajueiro da Praia\",\n \"Caldeirão Grande do Piauí\",\n \"Campinas do Piauí\",\n \"Campo Alegre do Fidalgo\",\n \"Campo Grande do Piauí\",\n \"Campo Largo do Piauí\",\n \"Campo Maior\",\n \"Canavieira\",\n \"Canto do Buriti\",\n \"Capitão de Campos\",\n \"Capitão Gervásio Oliveira\",\n \"Caracol\",\n \"Caraúbas do Piauí\",\n \"Caridade do Piauí\",\n \"Castelo do Piauí\",\n \"Caxingó\",\n \"Cocal\",\n \"Cocal de Telha\",\n \"Cocal dos Alves\",\n \"Coivaras\",\n \"Colônia do Gurguéia\",\n \"Colônia do Piauí\",\n \"Conceição do Canindé\",\n \"Coronel José Dias\",\n \"Corrente\",\n \"Cristalândia do Piauí\",\n \"Cristino Castro\",\n \"Curimatá\",\n \"Currais\",\n \"Curral Novo do Piauí\",\n \"Curralinhos\",\n \"Demerval Lobão\",\n \"Dirceu Arcoverde\",\n \"Dom Expedito Lopes\",\n \"Dom Inocêncio\",\n \"Domingos Mourão\",\n \"Elesbão Veloso\",\n \"Eliseu Martins\",\n \"Esperantina\",\n \"Fartura do Piauí\",\n \"Flores do Piauí\",\n \"Floresta do Piauí\",\n \"Floriano\",\n \"Francinópolis\",\n \"Francisco Ayres\",\n \"Francisco Macedo\",\n \"Francisco Santos\",\n \"Fronteiras\",\n \"Geminiano\",\n \"Gilbués\",\n \"Guadalupe\",\n \"Guaribas\",\n \"Hugo Napoleão\",\n \"Ilha Grande\",\n \"Inhuma\",\n \"Ipiranga do Piauí\",\n \"Isaías Coelho\",\n \"Itainópolis\",\n \"Itaueira\",\n \"Jacobina do Piauí\",\n \"Jaicós\",\n \"Jardim do Mulato\",\n \"Jatobá do Piauí\",\n \"Jerumenha\",\n \"João Costa\",\n \"Joaquim Pires\",\n \"Joca Marques\",\n \"José de Freitas\",\n \"Juazeiro do Piauí\",\n \"Júlio Borges\",\n \"Jurema\",\n \"Lagoa Alegre\",\n \"Lagoa de São Francisco\",\n \"Lagoa do Barro do Piauí\",\n \"Lagoa do Piauí\",\n \"Lagoa do Sítio\",\n \"Lagoinha do Piauí\",\n \"Landri Sales\",\n \"Luís Correia\",\n \"Luzilândia\",\n \"Madeiro\",\n \"Manoel Emídio\",\n \"Marcolândia\",\n \"Marcos Parente\",\n \"Massapê do Piauí\",\n \"Matias Olímpio\",\n \"Miguel Alves\",\n \"Miguel Leão\",\n \"Milton Brandão\",\n \"Monsenhor Gil\",\n \"Monsenhor Hipólito\",\n \"Monte Alegre do Piauí\",\n \"Morro Cabeça no Tempo\",\n \"Morro do Chapéu do Piauí\",\n \"Murici dos Portelas\",\n \"Nazaré do Piauí\",\n \"Nazária\",\n \"Nossa Senhora de Nazaré\",\n \"Nossa Senhora dos Remédios\",\n \"Nova Santa Rita\",\n \"Novo Oriente do Piauí\",\n \"Novo Santo Antônio\",\n \"Oeiras\",\n \"Olho D'Água do Piauí\",\n \"Padre Marcos\",\n \"Paes Landim\",\n \"Pajeú do Piauí\",\n \"Palmeira do Piauí\",\n \"Palmeirais\",\n \"Paquetá\",\n \"Parnaguá\",\n \"Parnaíba\",\n \"Passagem Franca do Piauí\",\n \"Patos do Piauí\",\n \"Pau D'Arco do Piauí\",\n \"Paulistana\",\n \"Pavussu\",\n \"Pedro II\",\n \"Pedro Laurentino\",\n \"Picos\",\n \"Pimenteiras\",\n \"Pio IX\",\n \"Piracuruca\",\n \"Piripiri\",\n \"Porto\",\n \"Porto Alegre do Piauí\",\n \"Prata do Piauí\",\n \"Queimada Nova\",\n \"Redenção do Gurguéia\",\n \"Regeneração\",\n \"Riacho Frio\",\n \"Ribeira do Piauí\",\n \"Ribeiro Gonçalves\",\n \"Rio Grande do Piauí\",\n \"Santa Cruz do Piauí\",\n \"Santa Cruz dos Milagres\",\n \"Santa Filomena\",\n \"Santa Luz\",\n \"Santa Rosa do Piauí\",\n \"Santana do Piauí\",\n \"Santo Antônio de Lisboa\",\n \"Santo Antônio dos Milagres\",\n \"Santo Inácio do Piauí\",\n \"São Braz do Piauí\",\n \"São Félix do Piauí\",\n \"São Francisco de Assis do Piauí\",\n \"São Francisco do Piauí\",\n \"São Gonçalo do Gurguéia\",\n \"São Gonçalo do Piauí\",\n \"São João da Canabrava\",\n \"São João da Fronteira\",\n \"São João da Serra\",\n \"São João da Varjota\",\n \"São João do Arraial\",\n \"São João do Piauí\",\n \"São José do Divino\",\n \"São José do Peixe\",\n \"São José do Piauí\",\n \"São Julião\",\n \"São Lourenço do Piauí\",\n \"São Luis do Piauí\",\n \"São Miguel da Baixa Grande\",\n \"São Miguel do Fidalgo\",\n \"São Miguel do Tapuio\",\n \"São Pedro do Piauí\",\n \"São Raimundo Nonato\",\n \"Sebastião Barros\",\n \"Sebastião Leal\",\n \"Sigefredo Pacheco\",\n \"Simões\",\n \"Simplício Mendes\",\n \"Socorro do Piauí\",\n \"Sussuapara\",\n \"Tamboril do Piauí\",\n \"Tanque do Piauí\",\n \"Teresina\",\n \"União\",\n \"Uruçuí\",\n \"Valença do Piauí\",\n \"Várzea Branca\",\n \"Várzea Grande\",\n \"Vera Mendes\",\n \"Vila Nova do Piauí\",\n \"Wall Ferraz\"\n ]\n },\n {\n \"uf\": \"PR\",\n \"name\": \"Paraná\",\n \"cities\": [\n \"Abatiá\",\n \"Adrianópolis\",\n \"Agudos do Sul\",\n \"Almirante Tamandaré\",\n \"Altamira do Paraná\",\n \"Alto Paraíso\",\n \"Alto Paraná\",\n \"Alto Piquiri\",\n \"Altônia\",\n \"Alvorada do Sul\",\n \"Amaporã\",\n \"Ampére\",\n \"Anahy\",\n \"Andirá\",\n \"Ângulo\",\n \"Antonina\",\n \"Antônio Olinto\",\n \"Apucarana\",\n \"Arapongas\",\n \"Arapoti\",\n \"Arapuã\",\n \"Araruna\",\n \"Araucária\",\n \"Ariranha do Ivaí\",\n \"Assaí\",\n \"Assis Chateaubriand\",\n \"Astorga\",\n \"Atalaia\",\n \"Balsa Nova\",\n \"Bandeirantes\",\n \"Barbosa Ferraz\",\n \"Barra do Jacaré\",\n \"Barracão\",\n \"Bela Vista da Caroba\",\n \"Bela Vista do Paraíso\",\n \"Bituruna\",\n \"Boa Esperança\",\n \"Boa Esperança do Iguaçu\",\n \"Boa Ventura de São Roque\",\n \"Boa Vista da Aparecida\",\n \"Bocaiúva do Sul\",\n \"Bom Jesus do Sul\",\n \"Bom Sucesso\",\n \"Bom Sucesso do Sul\",\n \"Borrazópolis\",\n \"Braganey\",\n \"Brasilândia do Sul\",\n \"Cafeara\",\n \"Cafelândia\",\n \"Cafezal do Sul\",\n \"Califórnia\",\n \"Cambará\",\n \"Cambé\",\n \"Cambira\",\n \"Campina da Lagoa\",\n \"Campina do Simão\",\n \"Campina Grande do Sul\",\n \"Campo Bonito\",\n \"Campo do Tenente\",\n \"Campo Largo\",\n \"Campo Magro\",\n \"Campo Mourão\",\n \"Cândido de Abreu\",\n \"Candói\",\n \"Cantagalo\",\n \"Capanema\",\n \"Capitão Leônidas Marques\",\n \"Carambeí\",\n \"Carlópolis\",\n \"Cascavel\",\n \"Castro\",\n \"Catanduvas\",\n \"Centenário do Sul\",\n \"Cerro Azul\",\n \"Céu Azul\",\n \"Chopinzinho\",\n \"Cianorte\",\n \"Cidade Gaúcha\",\n \"Clevelândia\",\n \"Colombo\",\n \"Colorado\",\n \"Congonhinhas\",\n \"Conselheiro Mairinck\",\n \"Contenda\",\n \"Corbélia\",\n \"Cornélio Procópio\",\n \"Coronel Domingos Soares\",\n \"Coronel Vivida\",\n \"Corumbataí do Sul\",\n \"Cruz Machado\",\n \"Cruzeiro do Iguaçu\",\n \"Cruzeiro do Oeste\",\n \"Cruzeiro do Sul\",\n \"Cruzmaltina\",\n \"Curitiba\",\n \"Curiúva\",\n \"Diamante D'Oeste\",\n \"Diamante do Norte\",\n \"Diamante do Sul\",\n \"Dois Vizinhos\",\n \"Douradina\",\n \"Doutor Camargo\",\n \"Doutor Ulysses\",\n \"Enéas Marques\",\n \"Engenheiro Beltrão\",\n \"Entre Rios do Oeste\",\n \"Esperança Nova\",\n \"Espigão Alto do Iguaçu\",\n \"Farol\",\n \"Faxinal\",\n \"Fazenda Rio Grande\",\n \"Fênix\",\n \"Fernandes Pinheiro\",\n \"Figueira\",\n \"Flor da Serra do Sul\",\n \"Floraí\",\n \"Floresta\",\n \"Florestópolis\",\n \"Flórida\",\n \"Formosa do Oeste\",\n \"Foz do Iguaçu\",\n \"Foz do Jordão\",\n \"Francisco Alves\",\n \"Francisco Beltrão\",\n \"General Carneiro\",\n \"Godoy Moreira\",\n \"Goioerê\",\n \"Goioxim\",\n \"Grandes Rios\",\n \"Guaíra\",\n \"Guairaçá\",\n \"Guamiranga\",\n \"Guapirama\",\n \"Guaporema\",\n \"Guaraci\",\n \"Guaraniaçu\",\n \"Guarapuava\",\n \"Guaraqueçaba\",\n \"Guaratuba\",\n \"Honório Serpa\",\n \"Ibaiti\",\n \"Ibema\",\n \"Ibiporã\",\n \"Icaraíma\",\n \"Iguaraçu\",\n \"Iguatu\",\n \"Imbaú\",\n \"Imbituva\",\n \"Inácio Martins\",\n \"Inajá\",\n \"Indianópolis\",\n \"Ipiranga\",\n \"Iporã\",\n \"Iracema do Oeste\",\n \"Irati\",\n \"Iretama\",\n \"Itaguajé\",\n \"Itaipulândia\",\n \"Itambaracá\",\n \"Itambé\",\n \"Itapejara d'Oeste\",\n \"Itaperuçu\",\n \"Itaúna do Sul\",\n \"Ivaí\",\n \"Ivaiporã\",\n \"Ivaté\",\n \"Ivatuba\",\n \"Jaboti\",\n \"Jacarezinho\",\n \"Jaguapitã\",\n \"Jaguariaíva\",\n \"Jandaia do Sul\",\n \"Janiópolis\",\n \"Japira\",\n \"Japurá\",\n \"Jardim Alegre\",\n \"Jardim Olinda\",\n \"Jataizinho\",\n \"Jesuítas\",\n \"Joaquim Távora\",\n \"Jundiaí do Sul\",\n \"Juranda\",\n \"Jussara\",\n \"Kaloré\",\n \"Lapa\",\n \"Laranjal\",\n \"Laranjeiras do Sul\",\n \"Leópolis\",\n \"Lidianópolis\",\n \"Lindoeste\",\n \"Loanda\",\n \"Lobato\",\n \"Londrina\",\n \"Luiziana\",\n \"Lunardelli\",\n \"Lupionópolis\",\n \"Mallet\",\n \"Mamborê\",\n \"Mandaguaçu\",\n \"Mandaguari\",\n \"Mandirituba\",\n \"Manfrinópolis\",\n \"Mangueirinha\",\n \"Manoel Ribas\",\n \"Marechal Cândido Rondon\",\n \"Maria Helena\",\n \"Marialva\",\n \"Marilândia do Sul\",\n \"Marilena\",\n \"Mariluz\",\n \"Maringá\",\n \"Mariópolis\",\n \"Maripá\",\n \"Marmeleiro\",\n \"Marquinho\",\n \"Marumbi\",\n \"Matelândia\",\n \"Matinhos\",\n \"Mato Rico\",\n \"Mauá da Serra\",\n \"Medianeira\",\n \"Mercedes\",\n \"Mirador\",\n \"Miraselva\",\n \"Missal\",\n \"Moreira Sales\",\n \"Morretes\",\n \"Munhoz de Melo\",\n \"Nossa Senhora das Graças\",\n \"Nova Aliança do Ivaí\",\n \"Nova América da Colina\",\n \"Nova Aurora\",\n \"Nova Cantu\",\n \"Nova Esperança\",\n \"Nova Esperança do Sudoeste\",\n \"Nova Fátima\",\n \"Nova Laranjeiras\",\n \"Nova Londrina\",\n \"Nova Olímpia\",\n \"Nova Prata do Iguaçu\",\n \"Nova Santa Bárbara\",\n \"Nova Santa Rosa\",\n \"Nova Tebas\",\n \"Novo Itacolomi\",\n \"Ortigueira\",\n \"Ourizona\",\n \"Ouro Verde do Oeste\",\n \"Paiçandu\",\n \"Palmas\",\n \"Palmeira\",\n \"Palmital\",\n \"Palotina\",\n \"Paraíso do Norte\",\n \"Paranacity\",\n \"Paranaguá\",\n \"Paranapoema\",\n \"Paranavaí\",\n \"Pato Bragado\",\n \"Pato Branco\",\n \"Paula Freitas\",\n \"Paulo Frontin\",\n \"Peabiru\",\n \"Perobal\",\n \"Pérola\",\n \"Pérola d'Oeste\",\n \"Piên\",\n \"Pinhais\",\n \"Pinhal de São Bento\",\n \"Pinhalão\",\n \"Pinhão\",\n \"Piraí do Sul\",\n \"Piraquara\",\n \"Pitanga\",\n \"Pitangueiras\",\n \"Planaltina do Paraná\",\n \"Planalto\",\n \"Ponta Grossa\",\n \"Pontal do Paraná\",\n \"Porecatu\",\n \"Porto Amazonas\",\n \"Porto Barreiro\",\n \"Porto Rico\",\n \"Porto Vitória\",\n \"Prado Ferreira\",\n \"Pranchita\",\n \"Presidente Castelo Branco\",\n \"Primeiro de Maio\",\n \"Prudentópolis\",\n \"Quarto Centenário\",\n \"Quatiguá\",\n \"Quatro Barras\",\n \"Quatro Pontes\",\n \"Quedas do Iguaçu\",\n \"Querência do Norte\",\n \"Quinta do Sol\",\n \"Quitandinha\",\n \"Ramilândia\",\n \"Rancho Alegre\",\n \"Rancho Alegre D'Oeste\",\n \"Realeza\",\n \"Rebouças\",\n \"Renascença\",\n \"Reserva\",\n \"Reserva do Iguaçu\",\n \"Ribeirão Claro\",\n \"Ribeirão do Pinhal\",\n \"Rio Azul\",\n \"Rio Bom\",\n \"Rio Bonito do Iguaçu\",\n \"Rio Branco do Ivaí\",\n \"Rio Branco do Sul\",\n \"Rio Negro\",\n \"Rolândia\",\n \"Roncador\",\n \"Rondon\",\n \"Rosário do Ivaí\",\n \"Sabáudia\",\n \"Salgado Filho\",\n \"Salto do Itararé\",\n \"Salto do Lontra\",\n \"Santa Amélia\",\n \"Santa Cecília do Pavão\",\n \"Santa Cruz de Monte Castelo\",\n \"Santa Fé\",\n \"Santa Helena\",\n \"Santa Inês\",\n \"Santa Isabel do Ivaí\",\n \"Santa Izabel do Oeste\",\n \"Santa Lúcia\",\n \"Santa Maria do Oeste\",\n \"Santa Mariana\",\n \"Santa Mônica\",\n \"Santa Tereza do Oeste\",\n \"Santa Terezinha de Itaipu\",\n \"Santana do Itararé\",\n \"Santo Antônio da Platina\",\n \"Santo Antônio do Caiuá\",\n \"Santo Antônio do Paraíso\",\n \"Santo Antônio do Sudoeste\",\n \"Santo Inácio\",\n \"São Carlos do Ivaí\",\n \"São Jerônimo da Serra\",\n \"São João\",\n \"São João do Caiuá\",\n \"São João do Ivaí\",\n \"São João do Triunfo\",\n \"São Jorge d'Oeste\",\n \"São Jorge do Ivaí\",\n \"São Jorge do Patrocínio\",\n \"São José da Boa Vista\",\n \"São José das Palmeiras\",\n \"São José dos Pinhais\",\n \"São Manoel do Paraná\",\n \"São Mateus do Sul\",\n \"São Miguel do Iguaçu\",\n \"São Pedro do Iguaçu\",\n \"São Pedro do Ivaí\",\n \"São Pedro do Paraná\",\n \"São Sebastião da Amoreira\",\n \"São Tomé\",\n \"Sapopema\",\n \"Sarandi\",\n \"Saudade do Iguaçu\",\n \"Sengés\",\n \"Serranópolis do Iguaçu\",\n \"Sertaneja\",\n \"Sertanópolis\",\n \"Siqueira Campos\",\n \"Sulina\",\n \"Tamarana\",\n \"Tamboara\",\n \"Tapejara\",\n \"Tapira\",\n \"Teixeira Soares\",\n \"Telêmaco Borba\",\n \"Terra Boa\",\n \"Terra Rica\",\n \"Terra Roxa\",\n \"Tibagi\",\n \"Tijucas do Sul\",\n \"Toledo\",\n \"Tomazina\",\n \"Três Barras do Paraná\",\n \"Tunas do Paraná\",\n \"Tuneiras do Oeste\",\n \"Tupãssi\",\n \"Turvo\",\n \"Ubiratã\",\n \"Umuarama\",\n \"União da Vitória\",\n \"Uniflor\",\n \"Uraí\",\n \"Ventania\",\n \"Vera Cruz do Oeste\",\n \"Verê\",\n \"Virmond\",\n \"Vitorino\",\n \"Wenceslau Braz\",\n \"Xambrê\"\n ]\n },\n {\n \"uf\": \"RJ\",\n \"name\": \"Rio de Janeiro\",\n \"cities\": [\n \"Angra dos Reis\",\n \"Aperibé\",\n \"Araruama\",\n \"Areal\",\n \"Armação dos Búzios\",\n \"Arraial do Cabo\",\n \"Barra do Piraí\",\n \"Barra Mansa\",\n \"Belford Roxo\",\n \"Bom Jardim\",\n \"Bom Jesus do Itabapoana\",\n \"Cabo Frio\",\n \"Cachoeiras de Macacu\",\n \"Cambuci\",\n \"Campos dos Goytacazes\",\n \"Cantagalo\",\n \"Carapebus\",\n \"Cardoso Moreira\",\n \"Carmo\",\n \"Casimiro de Abreu\",\n \"Comendador Levy Gasparian\",\n \"Conceição de Macabu\",\n \"Cordeiro\",\n \"Duas Barras\",\n \"Duque de Caxias\",\n \"Engenheiro Paulo de Frontin\",\n \"Guapimirim\",\n \"Iguaba Grande\",\n \"Itaboraí\",\n \"Itaguaí\",\n \"Italva\",\n \"Itaocara\",\n \"Itaperuna\",\n \"Itatiaia\",\n \"Japeri\",\n \"Laje do Muriaé\",\n \"Macaé\",\n \"Macuco\",\n \"Magé\",\n \"Mangaratiba\",\n \"Maricá\",\n \"Mendes\",\n \"Mesquita\",\n \"Miguel Pereira\",\n \"Miracema\",\n \"Natividade\",\n \"Nilópolis\",\n \"Niterói\",\n \"Nova Friburgo\",\n \"Nova Iguaçu\",\n \"Paracambi\",\n \"Paraíba do Sul\",\n \"Paraty\",\n \"Paty do Alferes\",\n \"Petrópolis\",\n \"Pinheiral\",\n \"Piraí\",\n \"Porciúncula\",\n \"Porto Real\",\n \"Quatis\",\n \"Queimados\",\n \"Quissamã\",\n \"Resende\",\n \"Rio Bonito\",\n \"Rio Claro\",\n \"Rio das Flores\",\n \"Rio das Ostras\",\n \"Rio de Janeiro\",\n \"Santa Maria Madalena\",\n \"Santo Antônio de Pádua\",\n \"São Fidélis\",\n \"São Francisco de Itabapoana\",\n \"São Gonçalo\",\n \"São João da Barra\",\n \"São João de Meriti\",\n \"São José de Ubá\",\n \"São José do Vale do Rio Preto\",\n \"São Pedro da Aldeia\",\n \"São Sebastião do Alto\",\n \"Sapucaia\",\n \"Saquarema\",\n \"Seropédica\",\n \"Silva Jardim\",\n \"Sumidouro\",\n \"Tanguá\",\n \"Teresópolis\",\n \"Trajano de Moraes\",\n \"Três Rios\",\n \"Valença\",\n \"Varre-Sai\",\n \"Vassouras\",\n \"Volta Redonda\"\n ]\n },\n {\n \"uf\": \"RN\",\n \"name\": \"Rio Grande do Norte\",\n \"cities\": [\n \"Acari\",\n \"Afonso Bezerra\",\n \"Água Nova\",\n \"Alexandria\",\n \"Almino Afonso\",\n \"Alto do Rodrigues\",\n \"Angicos\",\n \"Antônio Martins\",\n \"Apodi\",\n \"Areia Branca\",\n \"Arez\",\n \"Assú\",\n \"Baía Formosa\",\n \"Baraúna\",\n \"Barcelona\",\n \"Bento Fernandes\",\n \"Bodó\",\n \"Bom Jesus\",\n \"Brejinho\",\n \"Caiçara do Norte\",\n \"Caiçara do Rio do Vento\",\n \"Caicó\",\n \"Campo Grande\",\n \"Campo Redondo\",\n \"Canguaretama\",\n \"Caraúbas\",\n \"Carnaúba dos Dantas\",\n \"Carnaubais\",\n \"Ceará-Mirim\",\n \"Cerro Corá\",\n \"Coronel Ezequiel\",\n \"Coronel João Pessoa\",\n \"Cruzeta\",\n \"Currais Novos\",\n \"Doutor Severiano\",\n \"Encanto\",\n \"Equador\",\n \"Espírito Santo\",\n \"Extremoz\",\n \"Felipe Guerra\",\n \"Fernando Pedroza\",\n \"Florânia\",\n \"Francisco Dantas\",\n \"Frutuoso Gomes\",\n \"Galinhos\",\n \"Goianinha\",\n \"Governador Dix-Sept Rosado\",\n \"Grossos\",\n \"Guamaré\",\n \"Ielmo Marinho\",\n \"Ipanguaçu\",\n \"Ipueira\",\n \"Itajá\",\n \"Itaú\",\n \"Jaçanã\",\n \"Jandaíra\",\n \"Janduís\",\n \"Januário Cicco\",\n \"Japi\",\n \"Jardim de Angicos\",\n \"Jardim de Piranhas\",\n \"Jardim do Seridó\",\n \"João Câmara\",\n \"João Dias\",\n \"José da Penha\",\n \"Jucurutu\",\n \"Jundiá\",\n \"Lagoa d'Anta\",\n \"Lagoa de Pedras\",\n \"Lagoa de Velhos\",\n \"Lagoa Nova\",\n \"Lagoa Salgada\",\n \"Lajes\",\n \"Lajes Pintadas\",\n \"Lucrécia\",\n \"Luís Gomes\",\n \"Macaíba\",\n \"Macau\",\n \"Major Sales\",\n \"Marcelino Vieira\",\n \"Martins\",\n \"Maxaranguape\",\n \"Messias Targino\",\n \"Montanhas\",\n \"Monte Alegre\",\n \"Monte das Gameleiras\",\n \"Mossoró\",\n \"Natal\",\n \"Nísia Floresta\",\n \"Nova Cruz\",\n \"Olho d'Água do Borges\",\n \"Ouro Branco\",\n \"Paraná\",\n \"Paraú\",\n \"Parazinho\",\n \"Parelhas\",\n \"Parnamirim\",\n \"Passa e Fica\",\n \"Passagem\",\n \"Patu\",\n \"Pau dos Ferros\",\n \"Pedra Grande\",\n \"Pedra Preta\",\n \"Pedro Avelino\",\n \"Pedro Velho\",\n \"Pendências\",\n \"Pilões\",\n \"Poço Branco\",\n \"Portalegre\",\n \"Porto do Mangue\",\n \"Pureza\",\n \"Rafael Fernandes\",\n \"Rafael Godeiro\",\n \"Riacho da Cruz\",\n \"Riacho de Santana\",\n \"Riachuelo\",\n \"Rio do Fogo\",\n \"Rodolfo Fernandes\",\n \"Ruy Barbosa\",\n \"Santa Cruz\",\n \"Santa Maria\",\n \"Santana do Matos\",\n \"Santana do Seridó\",\n \"Santo Antônio\",\n \"São Bento do Norte\",\n \"São Bento do Trairí\",\n \"São Fernando\",\n \"São Francisco do Oeste\",\n \"São Gonçalo do Amarante\",\n \"São João do Sabugi\",\n \"São José de Mipibu\",\n \"São José do Campestre\",\n \"São José do Seridó\",\n \"São Miguel\",\n \"São Miguel do Gostoso\",\n \"São Paulo do Potengi\",\n \"São Pedro\",\n \"São Rafael\",\n \"São Tomé\",\n \"São Vicente\",\n \"Senador Elói de Souza\",\n \"Senador Georgino Avelino\",\n \"Serra Caiada\",\n \"Serra de São Bento\",\n \"Serra do Mel\",\n \"Serra Negra do Norte\",\n \"Serrinha\",\n \"Serrinha dos Pintos\",\n \"Severiano Melo\",\n \"Sítio Novo\",\n \"Taboleiro Grande\",\n \"Taipu\",\n \"Tangará\",\n \"Tenente Ananias\",\n \"Tenente Laurentino Cruz\",\n \"Tibau\",\n \"Tibau do Sul\",\n \"Timbaúba dos Batistas\",\n \"Touros\",\n \"Triunfo Potiguar\",\n \"Umarizal\",\n \"Upanema\",\n \"Várzea\",\n \"Venha-Ver\",\n \"Vera Cruz\",\n \"Viçosa\",\n \"Vila Flor\"\n ]\n },\n {\n \"uf\": \"RO\",\n \"name\": \"Rondônia\",\n \"cities\": [\n \"Alta Floresta D'Oeste\",\n \"Alto Alegre dos Parecis\",\n \"Alto Paraíso\",\n \"Alvorada D'Oeste\",\n \"Ariquemes\",\n \"Buritis\",\n \"Cabixi\",\n \"Cacaulândia\",\n \"Cacoal\",\n \"Campo Novo de Rondônia\",\n \"Candeias do Jamari\",\n \"Castanheiras\",\n \"Cerejeiras\",\n \"Chupinguaia\",\n \"Colorado do Oeste\",\n \"Corumbiara\",\n \"Costa Marques\",\n \"Cujubim\",\n \"Espigão D'Oeste\",\n \"Governador Jorge Teixeira\",\n \"Guajará-Mirim\",\n \"Itapuã do Oeste\",\n \"Jaru\",\n \"Ji-Paraná\",\n \"Machadinho D'Oeste\",\n \"Ministro Andreazza\",\n \"Mirante da Serra\",\n \"Monte Negro\",\n \"Nova Brasilândia D'Oeste\",\n \"Nova Mamoré\",\n \"Nova União\",\n \"Novo Horizonte do Oeste\",\n \"Ouro Preto do Oeste\",\n \"Parecis\",\n \"Pimenta Bueno\",\n \"Pimenteiras do Oeste\",\n \"Porto Velho\",\n \"Presidente Médici\",\n \"Primavera de Rondônia\",\n \"Rio Crespo\",\n \"Rolim de Moura\",\n \"Santa Luzia D'Oeste\",\n \"São Felipe D'Oeste\",\n \"São Francisco do Guaporé\",\n \"São Miguel do Guaporé\",\n \"Seringueiras\",\n \"Teixeirópolis\",\n \"Theobroma\",\n \"Urupá\",\n \"Vale do Anari\",\n \"Vale do Paraíso\",\n \"Vilhena\"\n ]\n },\n {\n \"uf\": \"RR\",\n \"name\": \"Roraima\",\n \"cities\": [\n \"Alto Alegre\",\n \"Amajari\",\n \"Boa Vista\",\n \"Bonfim\",\n \"Cantá\",\n \"Caracaraí\",\n \"Caroebe\",\n \"Iracema\",\n \"Mucajaí\",\n \"Normandia\",\n \"Pacaraima\",\n \"Rorainópolis\",\n \"São João da Baliza\",\n \"São Luiz do Anauá\",\n \"Uiramutã\"\n ]\n },\n {\n \"uf\": \"RS\",\n \"name\": \"Rio Grande do Sul\",\n \"cities\": [\n \"Aceguá\",\n \"Água Santa\",\n \"Agudo\",\n \"Ajuricaba\",\n \"Alecrim\",\n \"Alegrete\",\n \"Alegria\",\n \"Almirante Tamandaré do Sul\",\n \"Alpestre\",\n \"Alto Alegre\",\n \"Alto Feliz\",\n \"Alvorada\",\n \"Amaral Ferrador\",\n \"Ametista do Sul\",\n \"André da Rocha\",\n \"Anta Gorda\",\n \"Antônio Prado\",\n \"Arambaré\",\n \"Araricá\",\n \"Aratiba\",\n \"Arroio do Meio\",\n \"Arroio do Padre\",\n \"Arroio do Sal\",\n \"Arroio do Tigre\",\n \"Arroio dos Ratos\",\n \"Arroio Grande\",\n \"Arvorezinha\",\n \"Augusto Pestana\",\n \"Áurea\",\n \"Bagé\",\n \"Balneário Pinhal\",\n \"Barão\",\n \"Barão de Cotegipe\",\n \"Barão do Triunfo\",\n \"Barra do Guarita\",\n \"Barra do Quaraí\",\n \"Barra do Ribeiro\",\n \"Barra do Rio Azul\",\n \"Barra Funda\",\n \"Barracão\",\n \"Barros Cassal\",\n \"Benjamin Constant do Sul\",\n \"Bento Gonçalves\",\n \"Boa Vista das Missões\",\n \"Boa Vista do Buricá\",\n \"Boa Vista do Cadeado\",\n \"Boa Vista do Incra\",\n \"Boa Vista do Sul\",\n \"Bom Jesus\",\n \"Bom Princípio\",\n \"Bom Progresso\",\n \"Bom Retiro do Sul\",\n \"Boqueirão do Leão\",\n \"Bossoroca\",\n \"Bozano\",\n \"Braga\",\n \"Brochier\",\n \"Butiá\",\n \"Caçapava do Sul\",\n \"Cacequi\",\n \"Cachoeira do Sul\",\n \"Cachoeirinha\",\n \"Cacique Doble\",\n \"Caibaté\",\n \"Caiçara\",\n \"Camaquã\",\n \"Camargo\",\n \"Cambará do Sul\",\n \"Campestre da Serra\",\n \"Campina das Missões\",\n \"Campinas do Sul\",\n \"Campo Bom\",\n \"Campo Novo\",\n \"Campos Borges\",\n \"Candelária\",\n \"Cândido Godói\",\n \"Candiota\",\n \"Canela\",\n \"Canguçu\",\n \"Canoas\",\n \"Canudos do Vale\",\n \"Capão Bonito do Sul\",\n \"Capão da Canoa\",\n \"Capão do Cipó\",\n \"Capão do Leão\",\n \"Capela de Santana\",\n \"Capitão\",\n \"Capivari do Sul\",\n \"Caraá\",\n \"Carazinho\",\n \"Carlos Barbosa\",\n \"Carlos Gomes\",\n \"Casca\",\n \"Caseiros\",\n \"Catuípe\",\n \"Caxias do Sul\",\n \"Centenário\",\n \"Cerrito\",\n \"Cerro Branco\",\n \"Cerro Grande\",\n \"Cerro Grande do Sul\",\n \"Cerro Largo\",\n \"Chapada\",\n \"Charqueadas\",\n \"Charrua\",\n \"Chiapetta\",\n \"Chuí\",\n \"Chuvisca\",\n \"Cidreira\",\n \"Ciríaco\",\n \"Colinas\",\n \"Colorado\",\n \"Condor\",\n \"Constantina\",\n \"Coqueiro Baixo\",\n \"Coqueiros do Sul\",\n \"Coronel Barros\",\n \"Coronel Bicaco\",\n \"Coronel Pilar\",\n \"Cotiporã\",\n \"Coxilha\",\n \"Crissiumal\",\n \"Cristal\",\n \"Cristal do Sul\",\n \"Cruz Alta\",\n \"Cruzaltense\",\n \"Cruzeiro do Sul\",\n \"David Canabarro\",\n \"Derrubadas\",\n \"Dezesseis de Novembro\",\n \"Dilermando de Aguiar\",\n \"Dois Irmãos\",\n \"Dois Irmãos das Missões\",\n \"Dois Lajeados\",\n \"Dom Feliciano\",\n \"Dom Pedrito\",\n \"Dom Pedro de Alcântara\",\n \"Dona Francisca\",\n \"Doutor Maurício Cardoso\",\n \"Doutor Ricardo\",\n \"Eldorado do Sul\",\n \"Encantado\",\n \"Encruzilhada do Sul\",\n \"Engenho Velho\",\n \"Entre Rios do Sul\",\n \"Entre-Ijuís\",\n \"Erebango\",\n \"Erechim\",\n \"Ernestina\",\n \"Erval Grande\",\n \"Erval Seco\",\n \"Esmeralda\",\n \"Esperança do Sul\",\n \"Espumoso\",\n \"Estação\",\n \"Estância Velha\",\n \"Esteio\",\n \"Estrela\",\n \"Estrela Velha\",\n \"Eugênio de Castro\",\n \"Fagundes Varela\",\n \"Farroupilha\",\n \"Faxinal do Soturno\",\n \"Faxinalzinho\",\n \"Fazenda Vilanova\",\n \"Feliz\",\n \"Flores da Cunha\",\n \"Floriano Peixoto\",\n \"Fontoura Xavier\",\n \"Formigueiro\",\n \"Forquetinha\",\n \"Fortaleza dos Valos\",\n \"Frederico Westphalen\",\n \"Garibaldi\",\n \"Garruchos\",\n \"Gaurama\",\n \"General Câmara\",\n \"Gentil\",\n \"Getúlio Vargas\",\n \"Giruá\",\n \"Glorinha\",\n \"Gramado\",\n \"Gramado dos Loureiros\",\n \"Gramado Xavier\",\n \"Gravataí\",\n \"Guabiju\",\n \"Guaíba\",\n \"Guaporé\",\n \"Guarani das Missões\",\n \"Harmonia\",\n \"Herval\",\n \"Herveiras\",\n \"Horizontina\",\n \"Hulha Negra\",\n \"Humaitá\",\n \"Ibarama\",\n \"Ibiaçá\",\n \"Ibiraiaras\",\n \"Ibirapuitã\",\n \"Ibirubá\",\n \"Igrejinha\",\n \"Ijuí\",\n \"Ilópolis\",\n \"Imbé\",\n \"Imigrante\",\n \"Independência\",\n \"Inhacorá\",\n \"Ipê\",\n \"Ipiranga do Sul\",\n \"Iraí\",\n \"Itaara\",\n \"Itacurubi\",\n \"Itapuca\",\n \"Itaqui\",\n \"Itati\",\n \"Itatiba do Sul\",\n \"Ivorá\",\n \"Ivoti\",\n \"Jaboticaba\",\n \"Jacuizinho\",\n \"Jacutinga\",\n \"Jaguarão\",\n \"Jaguari\",\n \"Jaquirana\",\n \"Jari\",\n \"Jóia\",\n \"Júlio de Castilhos\",\n \"Lagoa Bonita do Sul\",\n \"Lagoa dos Três Cantos\",\n \"Lagoa Vermelha\",\n \"Lagoão\",\n \"Lajeado\",\n \"Lajeado do Bugre\",\n \"Lavras do Sul\",\n \"Liberato Salzano\",\n \"Lindolfo Collor\",\n \"Linha Nova\",\n \"Maçambará\",\n \"Machadinho\",\n \"Mampituba\",\n \"Manoel Viana\",\n \"Maquiné\",\n \"Maratá\",\n \"Marau\",\n \"Marcelino Ramos\",\n \"Mariana Pimentel\",\n \"Mariano Moro\",\n \"Marques de Souza\",\n \"Mata\",\n \"Mato Castelhano\",\n \"Mato Leitão\",\n \"Mato Queimado\",\n \"Maximiliano de Almeida\",\n \"Minas do Leão\",\n \"Miraguaí\",\n \"Montauri\",\n \"Monte Alegre dos Campos\",\n \"Monte Belo do Sul\",\n \"Montenegro\",\n \"Mormaço\",\n \"Morrinhos do Sul\",\n \"Morro Redondo\",\n \"Morro Reuter\",\n \"Mostardas\",\n \"Muçum\",\n \"Muitos Capões\",\n \"Muliterno\",\n \"Não-Me-Toque\",\n \"Nicolau Vergueiro\",\n \"Nonoai\",\n \"Nova Alvorada\",\n \"Nova Araçá\",\n \"Nova Bassano\",\n \"Nova Boa Vista\",\n \"Nova Bréscia\",\n \"Nova Candelária\",\n \"Nova Esperança do Sul\",\n \"Nova Hartz\",\n \"Nova Pádua\",\n \"Nova Palma\",\n \"Nova Petrópolis\",\n \"Nova Prata\",\n \"Nova Ramada\",\n \"Nova Roma do Sul\",\n \"Nova Santa Rita\",\n \"Novo Barreiro\",\n \"Novo Cabrais\",\n \"Novo Hamburgo\",\n \"Novo Machado\",\n \"Novo Tiradentes\",\n \"Novo Xingu\",\n \"Osório\",\n \"Paim Filho\",\n \"Palmares do Sul\",\n \"Palmeira das Missões\",\n \"Palmitinho\",\n \"Panambi\",\n \"Pantano Grande\",\n \"Paraí\",\n \"Paraíso do Sul\",\n \"Pareci Novo\",\n \"Parobé\",\n \"Passa Sete\",\n \"Passo do Sobrado\",\n \"Passo Fundo\",\n \"Paulo Bento\",\n \"Paverama\",\n \"Pedras Altas\",\n \"Pedro Osório\",\n \"Pejuçara\",\n \"Pelotas\",\n \"Picada Café\",\n \"Pinhal\",\n \"Pinhal da Serra\",\n \"Pinhal Grande\",\n \"Pinheirinho do Vale\",\n \"Pinheiro Machado\",\n \"Pinto Bandeira\",\n \"Pirapó\",\n \"Piratini\",\n \"Planalto\",\n \"Poço das Antas\",\n \"Pontão\",\n \"Ponte Preta\",\n \"Portão\",\n \"Porto Alegre\",\n \"Porto Lucena\",\n \"Porto Mauá\",\n \"Porto Vera Cruz\",\n \"Porto Xavier\",\n \"Pouso Novo\",\n \"Presidente Lucena\",\n \"Progresso\",\n \"Protásio Alves\",\n \"Putinga\",\n \"Quaraí\",\n \"Quatro Irmãos\",\n \"Quevedos\",\n \"Quinze de Novembro\",\n \"Redentora\",\n \"Relvado\",\n \"Restinga Sêca\",\n \"Rio dos Índios\",\n \"Rio Grande\",\n \"Rio Pardo\",\n \"Riozinho\",\n \"Roca Sales\",\n \"Rodeio Bonito\",\n \"Rolador\",\n \"Rolante\",\n \"Ronda Alta\",\n \"Rondinha\",\n \"Roque Gonzales\",\n \"Rosário do Sul\",\n \"Sagrada Família\",\n \"Saldanha Marinho\",\n \"Salto do Jacuí\",\n \"Salvador das Missões\",\n \"Salvador do Sul\",\n \"Sananduva\",\n \"Sant'Ana do Livramento\",\n \"Santa Bárbara do Sul\",\n \"Santa Cecília do Sul\",\n \"Santa Clara do Sul\",\n \"Santa Cruz do Sul\",\n \"Santa Margarida do Sul\",\n \"Santa Maria\",\n \"Santa Maria do Herval\",\n \"Santa Rosa\",\n \"Santa Tereza\",\n \"Santa Vitória do Palmar\",\n \"Santana da Boa Vista\",\n \"Santiago\",\n \"Santo Ângelo\",\n \"Santo Antônio da Patrulha\",\n \"Santo Antônio das Missões\",\n \"Santo Antônio do Palma\",\n \"Santo Antônio do Planalto\",\n \"Santo Augusto\",\n \"Santo Cristo\",\n \"Santo Expedito do Sul\",\n \"São Borja\",\n \"São Domingos do Sul\",\n \"São Francisco de Assis\",\n \"São Francisco de Paula\",\n \"São Gabriel\",\n \"São Jerônimo\",\n \"São João da Urtiga\",\n \"São João do Polêsine\",\n \"São Jorge\",\n \"São José das Missões\",\n \"São José do Herval\",\n \"São José do Hortêncio\",\n \"São José do Inhacorá\",\n \"São José do Norte\",\n \"São José do Ouro\",\n \"São José do Sul\",\n \"São José dos Ausentes\",\n \"São Leopoldo\",\n \"São Lourenço do Sul\",\n \"São Luiz Gonzaga\",\n \"São Marcos\",\n \"São Martinho\",\n \"São Martinho da Serra\",\n \"São Miguel das Missões\",\n \"São Nicolau\",\n \"São Paulo das Missões\",\n \"São Pedro da Serra\",\n \"São Pedro das Missões\",\n \"São Pedro do Butiá\",\n \"São Pedro do Sul\",\n \"São Sebastião do Caí\",\n \"São Sepé\",\n \"São Valentim\",\n \"São Valentim do Sul\",\n \"São Valério do Sul\",\n \"São Vendelino\",\n \"São Vicente do Sul\",\n \"Sapiranga\",\n \"Sapucaia do Sul\",\n \"Sarandi\",\n \"Seberi\",\n \"Sede Nova\",\n \"Segredo\",\n \"Selbach\",\n \"Senador Salgado Filho\",\n \"Sentinela do Sul\",\n \"Serafina Corrêa\",\n \"Sério\",\n \"Sertão\",\n \"Sertão Santana\",\n \"Sete de Setembro\",\n \"Severiano de Almeida\",\n \"Silveira Martins\",\n \"Sinimbu\",\n \"Sobradinho\",\n \"Soledade\",\n \"Tabaí\",\n \"Tapejara\",\n \"Tapera\",\n \"Tapes\",\n \"Taquara\",\n \"Taquari\",\n \"Taquaruçu do Sul\",\n \"Tavares\",\n \"Tenente Portela\",\n \"Terra de Areia\",\n \"Teutônia\",\n \"Tio Hugo\",\n \"Tiradentes do Sul\",\n \"Toropi\",\n \"Torres\",\n \"Tramandaí\",\n \"Travesseiro\",\n \"Três Arroios\",\n \"Três Cachoeiras\",\n \"Três Coroas\",\n \"Três de Maio\",\n \"Três Forquilhas\",\n \"Três Palmeiras\",\n \"Três Passos\",\n \"Trindade do Sul\",\n \"Triunfo\",\n \"Tucunduva\",\n \"Tunas\",\n \"Tupanci do Sul\",\n \"Tupanciretã\",\n \"Tupandi\",\n \"Tuparendi\",\n \"Turuçu\",\n \"Ubiretama\",\n \"União da Serra\",\n \"Unistalda\",\n \"Uruguaiana\",\n \"Vacaria\",\n \"Vale do Sol\",\n \"Vale Real\",\n \"Vale Verde\",\n \"Vanini\",\n \"Venâncio Aires\",\n \"Vera Cruz\",\n \"Veranópolis\",\n \"Vespasiano Corrêa\",\n \"Viadutos\",\n \"Viamão\",\n \"Vicente Dutra\",\n \"Victor Graeff\",\n \"Vila Flores\",\n \"Vila Lângaro\",\n \"Vila Maria\",\n \"Vila Nova do Sul\",\n \"Vista Alegre\",\n \"Vista Alegre do Prata\",\n \"Vista Gaúcha\",\n \"Vitória das Missões\",\n \"Westfália\",\n \"Xangri-lá\"\n ]\n },\n {\n \"uf\": \"SC\",\n \"name\": \"Santa Catarina\",\n \"cities\": [\n \"Abdon Batista\",\n \"Abelardo Luz\",\n \"Agrolândia\",\n \"Agronômica\",\n \"Água Doce\",\n \"Águas de Chapecó\",\n \"Águas Frias\",\n \"Águas Mornas\",\n \"Alfredo Wagner\",\n \"Alto Bela Vista\",\n \"Anchieta\",\n \"Angelina\",\n \"Anita Garibaldi\",\n \"Anitápolis\",\n \"Antônio Carlos\",\n \"Apiúna\",\n \"Arabutã\",\n \"Araquari\",\n \"Araranguá\",\n \"Armazém\",\n \"Arroio Trinta\",\n \"Arvoredo\",\n \"Ascurra\",\n \"Atalanta\",\n \"Aurora\",\n \"Balneário Arroio do Silva\",\n \"Balneário Barra do Sul\",\n \"Balneário Camboriú\",\n \"Balneário Gaivota\",\n \"Balneário Piçarras\",\n \"Balneário Rincão\",\n \"Bandeirante\",\n \"Barra Bonita\",\n \"Barra Velha\",\n \"Bela Vista do Toldo\",\n \"Belmonte\",\n \"Benedito Novo\",\n \"Biguaçu\",\n \"Blumenau\",\n \"Bocaina do Sul\",\n \"Bom Jardim da Serra\",\n \"Bom Jesus\",\n \"Bom Jesus do Oeste\",\n \"Bom Retiro\",\n \"Bombinhas\",\n \"Botuverá\",\n \"Braço do Norte\",\n \"Braço do Trombudo\",\n \"Brunópolis\",\n \"Brusque\",\n \"Caçador\",\n \"Caibi\",\n \"Calmon\",\n \"Camboriú\",\n \"Campo Alegre\",\n \"Campo Belo do Sul\",\n \"Campo Erê\",\n \"Campos Novos\",\n \"Canelinha\",\n \"Canoinhas\",\n \"Capão Alto\",\n \"Capinzal\",\n \"Capivari de Baixo\",\n \"Catanduvas\",\n \"Caxambu do Sul\",\n \"Celso Ramos\",\n \"Cerro Negro\",\n \"Chapadão do Lageado\",\n \"Chapecó\",\n \"Cocal do Sul\",\n \"Concórdia\",\n \"Cordilheira Alta\",\n \"Coronel Freitas\",\n \"Coronel Martins\",\n \"Correia Pinto\",\n \"Corupá\",\n \"Criciúma\",\n \"Cunha Porã\",\n \"Cunhataí\",\n \"Curitibanos\",\n \"Descanso\",\n \"Dionísio Cerqueira\",\n \"Dona Emma\",\n \"Doutor Pedrinho\",\n \"Entre Rios\",\n \"Ermo\",\n \"Erval Velho\",\n \"Faxinal dos Guedes\",\n \"Flor do Sertão\",\n \"Florianópolis\",\n \"Formosa do Sul\",\n \"Forquilhinha\",\n \"Fraiburgo\",\n \"Frei Rogério\",\n \"Galvão\",\n \"Garopaba\",\n \"Garuva\",\n \"Gaspar\",\n \"Governador Celso Ramos\",\n \"Grão-Pará\",\n \"Gravatal\",\n \"Guabiruba\",\n \"Guaraciaba\",\n \"Guaramirim\",\n \"Guarujá do Sul\",\n \"Guatambú\",\n \"Herval d'Oeste\",\n \"Ibiam\",\n \"Ibicaré\",\n \"Ibirama\",\n \"Içara\",\n \"Ilhota\",\n \"Imaruí\",\n \"Imbituba\",\n \"Imbuia\",\n \"Indaial\",\n \"Iomerê\",\n \"Ipira\",\n \"Iporã do Oeste\",\n \"Ipuaçu\",\n \"Ipumirim\",\n \"Iraceminha\",\n \"Irani\",\n \"Irati\",\n \"Irineópolis\",\n \"Itá\",\n \"Itaiópolis\",\n \"Itajaí\",\n \"Itapema\",\n \"Itapiranga\",\n \"Itapoá\",\n \"Ituporanga\",\n \"Jaborá\",\n \"Jacinto Machado\",\n \"Jaguaruna\",\n \"Jaraguá do Sul\",\n \"Jardinópolis\",\n \"Joaçaba\",\n \"Joinville\",\n \"José Boiteux\",\n \"Jupiá\",\n \"Lacerdópolis\",\n \"Lages\",\n \"Laguna\",\n \"Lajeado Grande\",\n \"Laurentino\",\n \"Lauro Müller\",\n \"Lebon Régis\",\n \"Leoberto Leal\",\n \"Lindóia do Sul\",\n \"Lontras\",\n \"Luiz Alves\",\n \"Luzerna\",\n \"Macieira\",\n \"Mafra\",\n \"Major Gercino\",\n \"Major Vieira\",\n \"Maracajá\",\n \"Maravilha\",\n \"Marema\",\n \"Massaranduba\",\n \"Matos Costa\",\n \"Meleiro\",\n \"Mirim Doce\",\n \"Modelo\",\n \"Mondaí\",\n \"Monte Carlo\",\n \"Monte Castelo\",\n \"Morro da Fumaça\",\n \"Morro Grande\",\n \"Navegantes\",\n \"Nova Erechim\",\n \"Nova Itaberaba\",\n \"Nova Trento\",\n \"Nova Veneza\",\n \"Novo Horizonte\",\n \"Orleans\",\n \"Otacílio Costa\",\n \"Ouro\",\n \"Ouro Verde\",\n \"Paial\",\n \"Painel\",\n \"Palhoça\",\n \"Palma Sola\",\n \"Palmeira\",\n \"Palmitos\",\n \"Papanduva\",\n \"Paraíso\",\n \"Passo de Torres\",\n \"Passos Maia\",\n \"Paulo Lopes\",\n \"Pedras Grandes\",\n \"Penha\",\n \"Peritiba\",\n \"Pescaria Brava\",\n \"Petrolândia\",\n \"Pinhalzinho\",\n \"Pinheiro Preto\",\n \"Piratuba\",\n \"Planalto Alegre\",\n \"Pomerode\",\n \"Ponte Alta\",\n \"Ponte Alta do Norte\",\n \"Ponte Serrada\",\n \"Porto Belo\",\n \"Porto União\",\n \"Pouso Redondo\",\n \"Praia Grande\",\n \"Presidente Castello Branco\",\n \"Presidente Getúlio\",\n \"Presidente Nereu\",\n \"Princesa\",\n \"Quilombo\",\n \"Rancho Queimado\",\n \"Rio das Antas\",\n \"Rio do Campo\",\n \"Rio do Oeste\",\n \"Rio do Sul\",\n \"Rio dos Cedros\",\n \"Rio Fortuna\",\n \"Rio Negrinho\",\n \"Rio Rufino\",\n \"Riqueza\",\n \"Rodeio\",\n \"Romelândia\",\n \"Salete\",\n \"Saltinho\",\n \"Salto Veloso\",\n \"Sangão\",\n \"Santa Cecília\",\n \"Santa Helena\",\n \"Santa Rosa de Lima\",\n \"Santa Rosa do Sul\",\n \"Santa Terezinha\",\n \"Santa Terezinha do Progresso\",\n \"Santiago do Sul\",\n \"Santo Amaro da Imperatriz\",\n \"São Bento do Sul\",\n \"São Bernardino\",\n \"São Bonifácio\",\n \"São Carlos\",\n \"São Cristóvão do Sul\",\n \"São Domingos\",\n \"São Francisco do Sul\",\n \"São João Batista\",\n \"São João do Itaperiú\",\n \"São João do Oeste\",\n \"São João do Sul\",\n \"São Joaquim\",\n \"São José\",\n \"São José do Cedro\",\n \"São José do Cerrito\",\n \"São Lourenço do Oeste\",\n \"São Ludgero\",\n \"São Martinho\",\n \"São Miguel da Boa Vista\",\n \"São Miguel do Oeste\",\n \"São Pedro de Alcântara\",\n \"Saudades\",\n \"Schroeder\",\n \"Seara\",\n \"Serra Alta\",\n \"Siderópolis\",\n \"Sombrio\",\n \"Sul Brasil\",\n \"Taió\",\n \"Tangará\",\n \"Tigrinhos\",\n \"Tijucas\",\n \"Timbé do Sul\",\n \"Timbó\",\n \"Timbó Grande\",\n \"Três Barras\",\n \"Treviso\",\n \"Treze de Maio\",\n \"Treze Tílias\",\n \"Trombudo Central\",\n \"Tubarão\",\n \"Tunápolis\",\n \"Turvo\",\n \"União do Oeste\",\n \"Urubici\",\n \"Urupema\",\n \"Urussanga\",\n \"Vargeão\",\n \"Vargem\",\n \"Vargem Bonita\",\n \"Vidal Ramos\",\n \"Videira\",\n \"Vitor Meireles\",\n \"Witmarsum\",\n \"Xanxerê\",\n \"Xavantina\",\n \"Xaxim\",\n \"Zortéa\"\n ]\n },\n {\n \"uf\": \"SE\",\n \"name\": \"Sergipe\",\n \"cities\": [\n \"Amparo do São Francisco\",\n \"Aquidabã\",\n \"Aracaju\",\n \"Arauá\",\n \"Areia Branca\",\n \"Barra dos Coqueiros\",\n \"Boquim\",\n \"Brejo Grande\",\n \"Campo do Brito\",\n \"Canhoba\",\n \"Canindé de São Francisco\",\n \"Capela\",\n \"Carira\",\n \"Carmópolis\",\n \"Cedro de São João\",\n \"Cristinápolis\",\n \"Cumbe\",\n \"Divina Pastora\",\n \"Estância\",\n \"Feira Nova\",\n \"Frei Paulo\",\n \"Gararu\",\n \"General Maynard\",\n \"Graccho Cardoso\",\n \"Ilha das Flores\",\n \"Indiaroba\",\n \"Itabaiana\",\n \"Itabaianinha\",\n \"Itabi\",\n \"Itaporanga d'Ajuda\",\n \"Japaratuba\",\n \"Japoatã\",\n \"Lagarto\",\n \"Laranjeiras\",\n \"Macambira\",\n \"Malhada dos Bois\",\n \"Malhador\",\n \"Maruim\",\n \"Moita Bonita\",\n \"Monte Alegre de Sergipe\",\n \"Muribeca\",\n \"Neópolis\",\n \"Nossa Senhora Aparecida\",\n \"Nossa Senhora da Glória\",\n \"Nossa Senhora das Dores\",\n \"Nossa Senhora de Lourdes\",\n \"Nossa Senhora do Socorro\",\n \"Pacatuba\",\n \"Pedra Mole\",\n \"Pedrinhas\",\n \"Pinhão\",\n \"Pirambu\",\n \"Poço Redondo\",\n \"Poço Verde\",\n \"Porto da Folha\",\n \"Propriá\",\n \"Riachão do Dantas\",\n \"Riachuelo\",\n \"Ribeirópolis\",\n \"Rosário do Catete\",\n \"Salgado\",\n \"Santa Luzia do Itanhy\",\n \"Santa Rosa de Lima\",\n \"Santana do São Francisco\",\n \"Santo Amaro das Brotas\",\n \"São Cristóvão\",\n \"São Domingos\",\n \"São Francisco\",\n \"São Miguel do Aleixo\",\n \"Simão Dias\",\n \"Siriri\",\n \"Telha\",\n \"Tobias Barreto\",\n \"Tomar do Geru\",\n \"Umbaúba\"\n ]\n },\n {\n \"uf\": \"SP\",\n \"name\": \"São Paulo\",\n \"cities\": [\n \"Adamantina\",\n \"Adolfo\",\n \"Aguaí\",\n \"Águas da Prata\",\n \"Águas de Lindóia\",\n \"Águas de Santa Bárbara\",\n \"Águas de São Pedro\",\n \"Agudos\",\n \"Alambari\",\n \"Alfredo Marcondes\",\n \"Altair\",\n \"Altinópolis\",\n \"Alto Alegre\",\n \"Alumínio\",\n \"Álvares Florence\",\n \"Álvares Machado\",\n \"Álvaro de Carvalho\",\n \"Alvinlândia\",\n \"Americana\",\n \"Américo Brasiliense\",\n \"Américo de Campos\",\n \"Amparo\",\n \"Analândia\",\n \"Andradina\",\n \"Angatuba\",\n \"Anhembi\",\n \"Anhumas\",\n \"Aparecida\",\n \"Aparecida d'Oeste\",\n \"Apiaí\",\n \"Araçariguama\",\n \"Araçatuba\",\n \"Araçoiaba da Serra\",\n \"Aramina\",\n \"Arandu\",\n \"Arapeí\",\n \"Araraquara\",\n \"Araras\",\n \"Arco-Íris\",\n \"Arealva\",\n \"Areias\",\n \"Areiópolis\",\n \"Ariranha\",\n \"Artur Nogueira\",\n \"Arujá\",\n \"Aspásia\",\n \"Assis\",\n \"Atibaia\",\n \"Auriflama\",\n \"Avaí\",\n \"Avanhandava\",\n \"Avaré\",\n \"Bady Bassitt\",\n \"Balbinos\",\n \"Bálsamo\",\n \"Bananal\",\n \"Barão de Antonina\",\n \"Barbosa\",\n \"Bariri\",\n \"Barra Bonita\",\n \"Barra do Chapéu\",\n \"Barra do Turvo\",\n \"Barretos\",\n \"Barrinha\",\n \"Barueri\",\n \"Bastos\",\n \"Batatais\",\n \"Bauru\",\n \"Bebedouro\",\n \"Bento de Abreu\",\n \"Bernardino de Campos\",\n \"Bertioga\",\n \"Bilac\",\n \"Birigui\",\n \"Biritiba Mirim\",\n \"Boa Esperança do Sul\",\n \"Bocaina\",\n \"Bofete\",\n \"Boituva\",\n \"Bom Jesus dos Perdões\",\n \"Bom Sucesso de Itararé\",\n \"Borá\",\n \"Boracéia\",\n \"Borborema\",\n \"Borebi\",\n \"Botucatu\",\n \"Bragança Paulista\",\n \"Braúna\",\n \"Brejo Alegre\",\n \"Brodowski\",\n \"Brotas\",\n \"Buri\",\n \"Buritama\",\n \"Buritizal\",\n \"Cabrália Paulista\",\n \"Cabreúva\",\n \"Caçapava\",\n \"Cachoeira Paulista\",\n \"Caconde\",\n \"Cafelândia\",\n \"Caiabu\",\n \"Caieiras\",\n \"Caiuá\",\n \"Cajamar\",\n \"Cajati\",\n \"Cajobi\",\n \"Cajuru\",\n \"Campina do Monte Alegre\",\n \"Campinas\",\n \"Campo Limpo Paulista\",\n \"Campos do Jordão\",\n \"Campos Novos Paulista\",\n \"Cananéia\",\n \"Canas\",\n \"Cândido Mota\",\n \"Cândido Rodrigues\",\n \"Canitar\",\n \"Capão Bonito\",\n \"Capela do Alto\",\n \"Capivari\",\n \"Caraguatatuba\",\n \"Carapicuíba\",\n \"Cardoso\",\n \"Casa Branca\",\n \"Cássia dos Coqueiros\",\n \"Castilho\",\n \"Catanduva\",\n \"Catiguá\",\n \"Cedral\",\n \"Cerqueira César\",\n \"Cerquilho\",\n \"Cesário Lange\",\n \"Charqueada\",\n \"Chavantes\",\n \"Clementina\",\n \"Colina\",\n \"Colômbia\",\n \"Conchal\",\n \"Conchas\",\n \"Cordeirópolis\",\n \"Coroados\",\n \"Coronel Macedo\",\n \"Corumbataí\",\n \"Cosmópolis\",\n \"Cosmorama\",\n \"Cotia\",\n \"Cravinhos\",\n \"Cristais Paulista\",\n \"Cruzália\",\n \"Cruzeiro\",\n \"Cubatão\",\n \"Cunha\",\n \"Descalvado\",\n \"Diadema\",\n \"Dirce Reis\",\n \"Divinolândia\",\n \"Dobrada\",\n \"Dois Córregos\",\n \"Dolcinópolis\",\n \"Dourado\",\n \"Dracena\",\n \"Duartina\",\n \"Dumont\",\n \"Echaporã\",\n \"Eldorado\",\n \"Elias Fausto\",\n \"Elisiário\",\n \"Embaúba\",\n \"Embu das Artes\",\n \"Embu-Guaçu\",\n \"Emilianópolis\",\n \"Engenheiro Coelho\",\n \"Espírito Santo do Pinhal\",\n \"Espírito Santo do Turvo\",\n \"Estiva Gerbi\",\n \"Estrela d'Oeste\",\n \"Estrela do Norte\",\n \"Euclides da Cunha Paulista\",\n \"Fartura\",\n \"Fernando Prestes\",\n \"Fernandópolis\",\n \"Fernão\",\n \"Ferraz de Vasconcelos\",\n \"Flora Rica\",\n \"Floreal\",\n \"Flórida Paulista\",\n \"Florínea\",\n \"Franca\",\n \"Francisco Morato\",\n \"Franco da Rocha\",\n \"Gabriel Monteiro\",\n \"Gália\",\n \"Garça\",\n \"Gastão Vidigal\",\n \"Gavião Peixoto\",\n \"General Salgado\",\n \"Getulina\",\n \"Glicério\",\n \"Guaiçara\",\n \"Guaimbê\",\n \"Guaíra\",\n \"Guapiaçu\",\n \"Guapiara\",\n \"Guará\",\n \"Guaraçaí\",\n \"Guaraci\",\n \"Guarani d'Oeste\",\n \"Guarantã\",\n \"Guararapes\",\n \"Guararema\",\n \"Guaratinguetá\",\n \"Guareí\",\n \"Guariba\",\n \"Guarujá\",\n \"Guarulhos\",\n \"Guatapará\",\n \"Guzolândia\",\n \"Herculândia\",\n \"Holambra\",\n \"Hortolândia\",\n \"Iacanga\",\n \"Iacri\",\n \"Iaras\",\n \"Ibaté\",\n \"Ibirá\",\n \"Ibirarema\",\n \"Ibitinga\",\n \"Ibiúna\",\n \"Icém\",\n \"Iepê\",\n \"Igaraçu do Tietê\",\n \"Igarapava\",\n \"Igaratá\",\n \"Iguape\",\n \"Ilha Comprida\",\n \"Ilha Solteira\",\n \"Ilhabela\",\n \"Indaiatuba\",\n \"Indiana\",\n \"Indiaporã\",\n \"Inúbia Paulista\",\n \"Ipaussu\",\n \"Iperó\",\n \"Ipeúna\",\n \"Ipiguá\",\n \"Iporanga\",\n \"Ipuã\",\n \"Iracemápolis\",\n \"Irapuã\",\n \"Irapuru\",\n \"Itaberá\",\n \"Itaí\",\n \"Itajobi\",\n \"Itaju\",\n \"Itanhaém\",\n \"Itaoca\",\n \"Itapecerica da Serra\",\n \"Itapetininga\",\n \"Itapeva\",\n \"Itapevi\",\n \"Itapira\",\n \"Itapirapuã Paulista\",\n \"Itápolis\",\n \"Itaporanga\",\n \"Itapuí\",\n \"Itapura\",\n \"Itaquaquecetuba\",\n \"Itararé\",\n \"Itariri\",\n \"Itatiba\",\n \"Itatinga\",\n \"Itirapina\",\n \"Itirapuã\",\n \"Itobi\",\n \"Itu\",\n \"Itupeva\",\n \"Ituverava\",\n \"Jaborandi\",\n \"Jaboticabal\",\n \"Jacareí\",\n \"Jaci\",\n \"Jacupiranga\",\n \"Jaguariúna\",\n \"Jales\",\n \"Jambeiro\",\n \"Jandira\",\n \"Jardinópolis\",\n \"Jarinu\",\n \"Jaú\",\n \"Jeriquara\",\n \"Joanópolis\",\n \"João Ramalho\",\n \"José Bonifácio\",\n \"Júlio Mesquita\",\n \"Jumirim\",\n \"Jundiaí\",\n \"Junqueirópolis\",\n \"Juquiá\",\n \"Juquitiba\",\n \"Lagoinha\",\n \"Laranjal Paulista\",\n \"Lavínia\",\n \"Lavrinhas\",\n \"Leme\",\n \"Lençóis Paulista\",\n \"Limeira\",\n \"Lindóia\",\n \"Lins\",\n \"Lorena\",\n \"Lourdes\",\n \"Louveira\",\n \"Lucélia\",\n \"Lucianópolis\",\n \"Luís Antônio\",\n \"Luiziânia\",\n \"Lupércio\",\n \"Lutécia\",\n \"Macatuba\",\n \"Macaubal\",\n \"Macedônia\",\n \"Magda\",\n \"Mairinque\",\n \"Mairiporã\",\n \"Manduri\",\n \"Marabá Paulista\",\n \"Maracaí\",\n \"Marapoama\",\n \"Mariápolis\",\n \"Marília\",\n \"Marinópolis\",\n \"Martinópolis\",\n \"Matão\",\n \"Mauá\",\n \"Mendonça\",\n \"Meridiano\",\n \"Mesópolis\",\n \"Miguelópolis\",\n \"Mineiros do Tietê\",\n \"Mira Estrela\",\n \"Miracatu\",\n \"Mirandópolis\",\n \"Mirante do Paranapanema\",\n \"Mirassol\",\n \"Mirassolândia\",\n \"Mococa\",\n \"Mogi das Cruzes\",\n \"Mogi Guaçu\",\n \"Mogi Mirim\",\n \"Mombuca\",\n \"Monções\",\n \"Mongaguá\",\n \"Monte Alegre do Sul\",\n \"Monte Alto\",\n \"Monte Aprazível\",\n \"Monte Azul Paulista\",\n \"Monte Castelo\",\n \"Monte Mor\",\n \"Monteiro Lobato\",\n \"Morro Agudo\",\n \"Morungaba\",\n \"Motuca\",\n \"Murutinga do Sul\",\n \"Nantes\",\n \"Narandiba\",\n \"Natividade da Serra\",\n \"Nazaré Paulista\",\n \"Neves Paulista\",\n \"Nhandeara\",\n \"Nipoã\",\n \"Nova Aliança\",\n \"Nova Campina\",\n \"Nova Canaã Paulista\",\n \"Nova Castilho\",\n \"Nova Europa\",\n \"Nova Granada\",\n \"Nova Guataporanga\",\n \"Nova Independência\",\n \"Nova Luzitânia\",\n \"Nova Odessa\",\n \"Novais\",\n \"Novo Horizonte\",\n \"Nuporanga\",\n \"Ocauçu\",\n \"Óleo\",\n \"Olímpia\",\n \"Onda Verde\",\n \"Oriente\",\n \"Orindiúva\",\n \"Orlândia\",\n \"Osasco\",\n \"Oscar Bressane\",\n \"Osvaldo Cruz\",\n \"Ourinhos\",\n \"Ouro Verde\",\n \"Ouroeste\",\n \"Pacaembu\",\n \"Palestina\",\n \"Palmares Paulista\",\n \"Palmeira d'Oeste\",\n \"Palmital\",\n \"Panorama\",\n \"Paraguaçu Paulista\",\n \"Paraibuna\",\n \"Paraíso\",\n \"Paranapanema\",\n \"Paranapuã\",\n \"Parapuã\",\n \"Pardinho\",\n \"Pariquera-Açu\",\n \"Parisi\",\n \"Patrocínio Paulista\",\n \"Paulicéia\",\n \"Paulínia\",\n \"Paulistânia\",\n \"Paulo de Faria\",\n \"Pederneiras\",\n \"Pedra Bela\",\n \"Pedranópolis\",\n \"Pedregulho\",\n \"Pedreira\",\n \"Pedrinhas Paulista\",\n \"Pedro de Toledo\",\n \"Penápolis\",\n \"Pereira Barreto\",\n \"Pereiras\",\n \"Peruíbe\",\n \"Piacatu\",\n \"Piedade\",\n \"Pilar do Sul\",\n \"Pindamonhangaba\",\n \"Pindorama\",\n \"Pinhalzinho\",\n \"Piquerobi\",\n \"Piquete\",\n \"Piracaia\",\n \"Piracicaba\",\n \"Piraju\",\n \"Pirajuí\",\n \"Pirangi\",\n \"Pirapora do Bom Jesus\",\n \"Pirapozinho\",\n \"Pirassununga\",\n \"Piratininga\",\n \"Pitangueiras\",\n \"Planalto\",\n \"Platina\",\n \"Poá\",\n \"Poloni\",\n \"Pompéia\",\n \"Pongaí\",\n \"Pontal\",\n \"Pontalinda\",\n \"Pontes Gestal\",\n \"Populina\",\n \"Porangaba\",\n \"Porto Feliz\",\n \"Porto Ferreira\",\n \"Potim\",\n \"Potirendaba\",\n \"Pracinha\",\n \"Pradópolis\",\n \"Praia Grande\",\n \"Pratânia\",\n \"Presidente Alves\",\n \"Presidente Bernardes\",\n \"Presidente Epitácio\",\n \"Presidente Prudente\",\n \"Presidente Venceslau\",\n \"Promissão\",\n \"Quadra\",\n \"Quatá\",\n \"Queiroz\",\n \"Queluz\",\n \"Quintana\",\n \"Rafard\",\n \"Rancharia\",\n \"Redenção da Serra\",\n \"Regente Feijó\",\n \"Reginópolis\",\n \"Registro\",\n \"Restinga\",\n \"Ribeira\",\n \"Ribeirão Bonito\",\n \"Ribeirão Branco\",\n \"Ribeirão Corrente\",\n \"Ribeirão do Sul\",\n \"Ribeirão dos Índios\",\n \"Ribeirão Grande\",\n \"Ribeirão Pires\",\n \"Ribeirão Preto\",\n \"Rifaina\",\n \"Rincão\",\n \"Rinópolis\",\n \"Rio Claro\",\n \"Rio das Pedras\",\n \"Rio Grande da Serra\",\n \"Riolândia\",\n \"Riversul\",\n \"Rosana\",\n \"Roseira\",\n \"Rubiácea\",\n \"Rubinéia\",\n \"Sabino\",\n \"Sagres\",\n \"Sales\",\n \"Sales Oliveira\",\n \"Salesópolis\",\n \"Salmourão\",\n \"Saltinho\",\n \"Salto\",\n \"Salto de Pirapora\",\n \"Salto Grande\",\n \"Sandovalina\",\n \"Santa Adélia\",\n \"Santa Albertina\",\n \"Santa Bárbara d'Oeste\",\n \"Santa Branca\",\n \"Santa Clara d'Oeste\",\n \"Santa Cruz da Conceição\",\n \"Santa Cruz da Esperança\",\n \"Santa Cruz das Palmeiras\",\n \"Santa Cruz do Rio Pardo\",\n \"Santa Ernestina\",\n \"Santa Fé do Sul\",\n \"Santa Gertrudes\",\n \"Santa Isabel\",\n \"Santa Lúcia\",\n \"Santa Maria da Serra\",\n \"Santa Mercedes\",\n \"Santa Rita d'Oeste\",\n \"Santa Rita do Passa Quatro\",\n \"Santa Rosa de Viterbo\",\n \"Santa Salete\",\n \"Santana da Ponte Pensa\",\n \"Santana de Parnaíba\",\n \"Santo Anastácio\",\n \"Santo André\",\n \"Santo Antônio da Alegria\",\n \"Santo Antônio de Posse\",\n \"Santo Antônio do Aracanguá\",\n \"Santo Antônio do Jardim\",\n \"Santo Antônio do Pinhal\",\n \"Santo Expedito\",\n \"Santópolis do Aguapeí\",\n \"Santos\",\n \"São Bento do Sapucaí\",\n \"São Bernardo do Campo\",\n \"São Caetano do Sul\",\n \"São Carlos\",\n \"São Francisco\",\n \"São João da Boa Vista\",\n \"São João das Duas Pontes\",\n \"São João de Iracema\",\n \"São João do Pau d'Alho\",\n \"São Joaquim da Barra\",\n \"São José da Bela Vista\",\n \"São José do Barreiro\",\n \"São José do Rio Pardo\",\n \"São José do Rio Preto\",\n \"São José dos Campos\",\n \"São Lourenço da Serra\",\n \"São Luiz do Paraitinga\",\n \"São Manuel\",\n \"São Miguel Arcanjo\",\n \"São Paulo\",\n \"São Pedro\",\n \"São Pedro do Turvo\",\n \"São Roque\",\n \"São Sebastião\",\n \"São Sebastião da Grama\",\n \"São Simão\",\n \"São Vicente\",\n \"Sarapuí\",\n \"Sarutaiá\",\n \"Sebastianópolis do Sul\",\n \"Serra Azul\",\n \"Serra Negra\",\n \"Serrana\",\n \"Sertãozinho\",\n \"Sete Barras\",\n \"Severínia\",\n \"Silveiras\",\n \"Socorro\",\n \"Sorocaba\",\n \"Sud Mennucci\",\n \"Sumaré\",\n \"Suzanápolis\",\n \"Suzano\",\n \"Tabapuã\",\n \"Tabatinga\",\n \"Taboão da Serra\",\n \"Taciba\",\n \"Taguaí\",\n \"Taiaçu\",\n \"Taiúva\",\n \"Tambaú\",\n \"Tanabi\",\n \"Tapiraí\",\n \"Tapiratiba\",\n \"Taquaral\",\n \"Taquaritinga\",\n \"Taquarituba\",\n \"Taquarivaí\",\n \"Tarabai\",\n \"Tarumã\",\n \"Tatuí\",\n \"Taubaté\",\n \"Tejupá\",\n \"Teodoro Sampaio\",\n \"Terra Roxa\",\n \"Tietê\",\n \"Timburi\",\n \"Torre de Pedra\",\n \"Torrinha\",\n \"Trabiju\",\n \"Tremembé\",\n \"Três Fronteiras\",\n \"Tuiuti\",\n \"Tupã\",\n \"Tupi Paulista\",\n \"Turiúba\",\n \"Turmalina\",\n \"Ubarana\",\n \"Ubatuba\",\n \"Ubirajara\",\n \"Uchoa\",\n \"União Paulista\",\n \"Urânia\",\n \"Uru\",\n \"Urupês\",\n \"Valentim Gentil\",\n \"Valinhos\",\n \"Valparaíso\",\n \"Vargem\",\n \"Vargem Grande do Sul\",\n \"Vargem Grande Paulista\",\n \"Várzea Paulista\",\n \"Vera Cruz\",\n \"Vinhedo\",\n \"Viradouro\",\n \"Vista Alegre do Alto\",\n \"Vitória Brasil\",\n \"Votorantim\",\n \"Votuporanga\",\n \"Zacarias\"\n ]\n },\n {\n \"uf\": \"TO\",\n \"name\": \"Tocantins\",\n \"cities\": [\n \"Abreulândia\",\n \"Aguiarnópolis\",\n \"Aliança do Tocantins\",\n \"Almas\",\n \"Alvorada\",\n \"Ananás\",\n \"Angico\",\n \"Aparecida do Rio Negro\",\n \"Aragominas\",\n \"Araguacema\",\n \"Araguaçu\",\n \"Araguaína\",\n \"Araguanã\",\n \"Araguatins\",\n \"Arapoema\",\n \"Arraias\",\n \"Augustinópolis\",\n \"Aurora do Tocantins\",\n \"Axixá do Tocantins\",\n \"Babaçulândia\",\n \"Bandeirantes do Tocantins\",\n \"Barra do Ouro\",\n \"Barrolândia\",\n \"Bernardo Sayão\",\n \"Bom Jesus do Tocantins\",\n \"Brasilândia do Tocantins\",\n \"Brejinho de Nazaré\",\n \"Buriti do Tocantins\",\n \"Cachoeirinha\",\n \"Campos Lindos\",\n \"Cariri do Tocantins\",\n \"Carmolândia\",\n \"Carrasco Bonito\",\n \"Caseara\",\n \"Centenário\",\n \"Chapada da Natividade\",\n \"Chapada de Areia\",\n \"Colinas do Tocantins\",\n \"Colméia\",\n \"Combinado\",\n \"Conceição do Tocantins\",\n \"Couto Magalhães\",\n \"Cristalândia\",\n \"Crixás do Tocantins\",\n \"Darcinópolis\",\n \"Dianópolis\",\n \"Divinópolis do Tocantins\",\n \"Dois Irmãos do Tocantins\",\n \"Dueré\",\n \"Esperantina\",\n \"Fátima\",\n \"Figueirópolis\",\n \"Filadélfia\",\n \"Formoso do Araguaia\",\n \"Goianorte\",\n \"Goiatins\",\n \"Guaraí\",\n \"Gurupi\",\n \"Ipueiras\",\n \"Itacajá\",\n \"Itaguatins\",\n \"Itapiratins\",\n \"Itaporã do Tocantins\",\n \"Jaú do Tocantins\",\n \"Juarina\",\n \"Lagoa da Confusão\",\n \"Lagoa do Tocantins\",\n \"Lajeado\",\n \"Lavandeira\",\n \"Lizarda\",\n \"Luzinópolis\",\n \"Marianópolis do Tocantins\",\n \"Mateiros\",\n \"Maurilândia do Tocantins\",\n \"Miracema do Tocantins\",\n \"Miranorte\",\n \"Monte do Carmo\",\n \"Monte Santo do Tocantins\",\n \"Muricilândia\",\n \"Natividade\",\n \"Nazaré\",\n \"Nova Olinda\",\n \"Nova Rosalândia\",\n \"Novo Acordo\",\n \"Novo Alegre\",\n \"Novo Jardim\",\n \"Oliveira de Fátima\",\n \"Palmas\",\n \"Palmeirante\",\n \"Palmeiras do Tocantins\",\n \"Palmeirópolis\",\n \"Paraíso do Tocantins\",\n \"Paranã\",\n \"Pau D'Arco\",\n \"Pedro Afonso\",\n \"Peixe\",\n \"Pequizeiro\",\n \"Pindorama do Tocantins\",\n \"Piraquê\",\n \"Pium\",\n \"Ponte Alta do Bom Jesus\",\n \"Ponte Alta do Tocantins\",\n \"Porto Alegre do Tocantins\",\n \"Porto Nacional\",\n \"Praia Norte\",\n \"Presidente Kennedy\",\n \"Pugmil\",\n \"Recursolândia\",\n \"Riachinho\",\n \"Rio da Conceição\",\n \"Rio dos Bois\",\n \"Rio Sono\",\n \"Sampaio\",\n \"Sandolândia\",\n \"Santa Fé do Araguaia\",\n \"Santa Maria do Tocantins\",\n \"Santa Rita do Tocantins\",\n \"Santa Rosa do Tocantins\",\n \"Santa Tereza do Tocantins\",\n \"Santa Terezinha do Tocantins\",\n \"São Bento do Tocantins\",\n \"São Félix do Tocantins\",\n \"São Miguel do Tocantins\",\n \"São Salvador do Tocantins\",\n \"São Sebastião do Tocantins\",\n \"São Valério\",\n \"Silvanópolis\",\n \"Sítio Novo do Tocantins\",\n \"Sucupira\",\n \"Tabocão\",\n \"Taguatinga\",\n \"Taipas do Tocantins\",\n \"Talismã\",\n \"Tocantínia\",\n \"Tocantinópolis\",\n \"Tupirama\",\n \"Tupiratins\",\n \"Wanderlândia\",\n \"Xambioá\"\n ]\n }\n]\n","/**\n * Brazilian states (UF), regions and municipalities, mirroring\n * `utils.locations`.\n *\n * Ships an offline, dependency-free dataset of every federative unit and its\n * municipalities (bundled at build time), plus query helpers and validators.\n * City lookups are accent- and case-insensitive.\n */\n\nimport { defineEnum } from \"@/core/enums\";\nimport { z } from \"@/schemas/base\";\nimport brLocations from \"@/utils/data/brLocations.json\";\n\n/** The 27 Brazilian federative-unit acronyms. */\nexport const UF = defineEnum({\n AC: \"AC\",\n AL: \"AL\",\n AP: \"AP\",\n AM: \"AM\",\n BA: \"BA\",\n CE: \"CE\",\n DF: \"DF\",\n ES: \"ES\",\n GO: \"GO\",\n MA: \"MA\",\n MT: \"MT\",\n MS: \"MS\",\n MG: \"MG\",\n PA: \"PA\",\n PB: \"PB\",\n PR: \"PR\",\n PE: \"PE\",\n PI: \"PI\",\n RJ: \"RJ\",\n RN: \"RN\",\n RS: \"RS\",\n RO: \"RO\",\n RR: \"RR\",\n SC: \"SC\",\n SP: \"SP\",\n SE: \"SE\",\n TO: \"TO\",\n});\n\n/** A federative-unit acronym. */\nexport type UFValue = ReturnType<typeof UF.values>[number];\n\n/** The five official IBGE macro-regions. */\nexport const Region = defineEnum({\n NORTH: \"Norte\",\n NORTHEAST: \"Nordeste\",\n CENTRAL_WEST: \"Centro-Oeste\",\n SOUTHEAST: \"Sudeste\",\n SOUTH: \"Sul\",\n});\n\n/** A macro-region value. */\nexport type RegionValue = ReturnType<typeof Region.values>[number];\n\n/** Static mapping of every UF to its IBGE macro-region. */\nconst UF_TO_REGION: Record<string, RegionValue> = {\n AC: Region.NORTH,\n AP: Region.NORTH,\n AM: Region.NORTH,\n PA: Region.NORTH,\n RO: Region.NORTH,\n RR: Region.NORTH,\n TO: Region.NORTH,\n AL: Region.NORTHEAST,\n BA: Region.NORTHEAST,\n CE: Region.NORTHEAST,\n MA: Region.NORTHEAST,\n PB: Region.NORTHEAST,\n PE: Region.NORTHEAST,\n PI: Region.NORTHEAST,\n RN: Region.NORTHEAST,\n SE: Region.NORTHEAST,\n DF: Region.CENTRAL_WEST,\n GO: Region.CENTRAL_WEST,\n MS: Region.CENTRAL_WEST,\n MT: Region.CENTRAL_WEST,\n ES: Region.SOUTHEAST,\n MG: Region.SOUTHEAST,\n RJ: Region.SOUTHEAST,\n SP: Region.SOUTHEAST,\n PR: Region.SOUTH,\n RS: Region.SOUTH,\n SC: Region.SOUTH,\n};\n\n/** A Brazilian federative unit and its municipalities. */\nexport interface StateBR {\n /** Federative-unit acronym (e.g. `\"SP\"`). */\n uf: string;\n /** Full state name (e.g. `\"São Paulo\"`). */\n name: string;\n /** The IBGE macro-region the state belongs to. */\n region: RegionValue;\n /** Alphabetically sorted municipality names. */\n cities: string[];\n}\n\nconst RAW = brLocations as Array<{ uf: string; name: string; cities: string[] }>;\n\nconst STATES: StateBR[] = RAW.map((entry) => ({\n uf: entry.uf,\n name: entry.name,\n region: UF_TO_REGION[entry.uf] ?? Region.SOUTHEAST,\n cities: entry.cities,\n}));\n\nconst STATE_BY_UF = new Map(STATES.map((state) => [state.uf, state]));\n\n/** Strip accents and lowercase a string for tolerant comparison. */\nfunction fold(value: string): string {\n return value\n .normalize(\"NFD\")\n .replace(/\\p{Diacritic}/gu, \"\")\n .trim()\n .toLowerCase();\n}\n\n/** All states, ordered by acronym. */\nexport function listStates(): StateBR[] {\n return STATES.map((state) => ({ ...state, cities: [...state.cities] }));\n}\n\n/** The state for a UF acronym (case-insensitive), or `null`. */\nexport function getState(uf: string): StateBR | null {\n const state = STATE_BY_UF.get(uf.toUpperCase());\n return state ? { ...state, cities: [...state.cities] } : null;\n}\n\n/** The municipalities of a UF, or `[]` for an unknown UF. */\nexport function citiesByUf(uf: string): string[] {\n return getState(uf)?.cities ?? [];\n}\n\n/** All states in a macro-region. */\nexport function statesByRegion(region: RegionValue): StateBR[] {\n return listStates().filter((state) => state.region === region);\n}\n\n/** Whether `value` is a known UF acronym (case-insensitive). */\nexport function isValidUf(value: string): boolean {\n return STATE_BY_UF.has(value.toUpperCase());\n}\n\n/** Normalize a UF to its uppercase acronym, throwing when unknown. */\nexport function normalizeUf(value: string): string {\n const upper = value.toUpperCase();\n if (!STATE_BY_UF.has(upper)) throw new Error(\"invalid UF\");\n return upper;\n}\n\n/** Whether `name` is a municipality of `uf` (accent/case-insensitive). */\nexport function isValidCity(name: string, uf: string): boolean {\n const folded = fold(name);\n return citiesByUf(uf).some((city) => fold(city) === folded);\n}\n\n/** Zod field: validates a UF and normalizes it to its uppercase acronym. */\nexport const ufField = z\n .string()\n .refine(isValidUf, { message: \"invalid UF\" })\n .transform((value) => value.toUpperCase());\n","/** Datetime helpers, mirroring `utils.datetime`. */\n\n/**\n * Return the current instant. JavaScript `Date` is always UTC-based internally;\n * serialize with `.toISOString()` for a UTC wire format.\n *\n * @returns The current `Date`.\n */\nexport function utcnow(): Date {\n return new Date();\n}\n\n/**\n * Coerce a value to a `Date`. Accepts a `Date`, an ISO string or an epoch\n * milliseconds number.\n *\n * @param value - The value to normalize.\n * @returns The corresponding `Date`.\n * @throws {Error} When the value cannot be parsed to a valid date.\n */\nexport function toUtc(value: Date | string | number): Date {\n const date = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(date.getTime())) throw new Error(\"invalid date\");\n return date;\n}\n","/** Dictionary helpers, mirroring `utils.dict`. */\n\n/**\n * Filter and extend a record in a single pass: drop `exclude`d keys and merge\n * `include` on top (merged entries win).\n *\n * @param data - The source record.\n * @param exclude - Keys to drop from the output.\n * @param include - Extra entries to merge in.\n * @returns A new record with the requested mutations.\n */\nexport function modifyDict(\n data: Record<string, unknown>,\n exclude: string[] = [],\n include: Record<string, unknown> = {},\n): Record<string, unknown> {\n const excluded = new Set(exclude);\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (!excluded.has(key)) result[key] = value;\n }\n return { ...result, ...include };\n}\n","/**\n * Single-use opaque tokens hashed at rest, mirroring `utils.opaque_token`.\n *\n * For flows where a secret is emailed/SMS'd and later presented back (password\n * reset, email verification, magic links, API keys). The plaintext is shown\n * once; only its SHA-256 digest is stored, so a DB leak exposes no usable\n * tokens. Verification hashes the incoming plaintext and compares in constant\n * time. Pure standard library (`node:crypto`).\n */\n\nimport { createHash, randomBytes, timingSafeEqual } from \"node:crypto\";\n\nconst DEFAULT_NBYTES = 32;\n\n/**\n * Return the SHA-256 hex digest of a token's plaintext.\n *\n * @param plaintext - The token value to hash.\n * @returns A 64-character lowercase hex digest.\n */\nexport function hashOpaqueToken(plaintext: string): string {\n return createHash(\"sha256\").update(plaintext, \"utf8\").digest(\"hex\");\n}\n\n/**\n * Generate a cryptographically random token and its digest.\n *\n * @param nbytes - Entropy in bytes for the URL-safe token (default 32).\n * @returns `{ plaintext, tokenHash }` — show `plaintext` once, store `tokenHash`.\n */\nexport function generateOpaqueToken(nbytes: number = DEFAULT_NBYTES): {\n plaintext: string;\n tokenHash: string;\n} {\n const plaintext = randomBytes(nbytes).toString(\"base64url\");\n return { plaintext, tokenHash: hashOpaqueToken(plaintext) };\n}\n\n/**\n * Constant-time check that `plaintext` hashes to `tokenHash`.\n *\n * @param plaintext - The token submitted by the caller.\n * @param tokenHash - The stored SHA-256 hex digest.\n * @returns `true` when the hashes match.\n */\nexport function verifyOpaqueToken(plaintext: string, tokenHash: string): boolean {\n const computed = Buffer.from(hashOpaqueToken(plaintext), \"hex\");\n const expected = Buffer.from(tokenHash, \"hex\");\n if (computed.length !== expected.length) return false;\n return timingSafeEqual(computed, expected);\n}\n","/**\n * Password hashing backed by bcrypt, mirroring `utils.password.PasswordUtils`.\n *\n * `bcryptjs` is an optional peer dependency, imported lazily so that\n * `import \"tempest-express-sdk\"` keeps working when it is not installed — the\n * clear error is deferred to first use. Methods are async (the idiomatic Node\n * bcrypt surface).\n */\n\ntype BcryptModule = typeof import(\"bcryptjs\");\n\nlet cached: BcryptModule | null = null;\n\n/** Lazily load `bcryptjs`, with a clear install hint when missing. */\nasync function loadBcrypt(): Promise<BcryptModule> {\n if (cached) return cached;\n try {\n const mod = (await import(\"bcryptjs\")) as BcryptModule & { default?: BcryptModule };\n cached = mod.default ?? mod;\n } catch (cause) {\n throw new Error(\n \"PasswordUtils requires the 'bcryptjs' peer dependency. Install with `npm i bcryptjs`.\",\n { cause },\n );\n }\n return cached;\n}\n\n/** Hash and verify passwords using bcrypt. Stateless — construct once, reuse. */\nexport class PasswordUtils {\n /**\n * @param rounds - The bcrypt cost factor. Higher is slower and harder to\n * brute-force. Defaults to 12.\n */\n constructor(private readonly rounds: number = 12) {}\n\n /**\n * Hash a plaintext password.\n *\n * @param plain - The plaintext password.\n * @returns The bcrypt hash, ready to persist.\n */\n async hash(plain: string): Promise<string> {\n const bcrypt = await loadBcrypt();\n const salt = await bcrypt.genSalt(this.rounds);\n return bcrypt.hash(plain, salt);\n }\n\n /**\n * Verify a plaintext password against a stored hash. Returns `false` for\n * malformed hashes rather than throwing.\n *\n * @param plain - The plaintext password to verify.\n * @param hashed - The previously stored bcrypt hash.\n * @returns `true` when the password matches.\n */\n async verify(plain: string, hashed: string): Promise<boolean> {\n try {\n const bcrypt = await loadBcrypt();\n return await bcrypt.compare(plain, hashed);\n } catch {\n return false;\n }\n }\n}\n","/**\n * JWT encode/decode backed by `jsonwebtoken`, mirroring `utils.jwt.JWTUtils`.\n *\n * `jsonwebtoken` is an optional peer dependency, imported lazily so the SDK\n * imports without it; the clear error is deferred to first use. Every token\n * gets `iat`/`exp` automatically; pass `issuer` to add and verify `iss`.\n * Expired/invalid tokens raise the SDK's {@link ExpiredTokenException} /\n * {@link InvalidTokenException}.\n */\n\nimport { ExpiredTokenException, InvalidTokenException } from \"@/exceptions/http\";\n\ntype JwtModule = typeof import(\"jsonwebtoken\");\n\nlet cached: JwtModule | null = null;\n\n/** Lazily load `jsonwebtoken`, with a clear install hint when missing. */\nasync function loadJwt(): Promise<JwtModule> {\n if (cached) return cached;\n try {\n const mod = (await import(\"jsonwebtoken\")) as JwtModule & { default?: JwtModule };\n cached = mod.default ?? mod;\n } catch (cause) {\n throw new Error(\n \"JWTUtils requires the 'jsonwebtoken' peer dependency. Install with `npm i jsonwebtoken`.\",\n { cause },\n );\n }\n return cached;\n}\n\n/** JWT claims — a free-form payload. */\nexport type JwtClaims = Record<string, unknown>;\n\n/** Options for {@link JWTUtils}. */\nexport interface JWTUtilsOptions {\n /** Signing algorithm. Defaults to `HS256`. */\n algorithm?: \"HS256\" | \"HS384\" | \"HS512\" | \"RS256\" | \"ES256\";\n /** Default token lifetime in seconds. Defaults to 3600 (1 hour). */\n defaultTtlSeconds?: number;\n /** Value for the `iss` claim; when set, `decode` verifies it. */\n issuer?: string;\n}\n\n/** Encode and decode JWTs using a shared secret (or asymmetric key). */\nexport class JWTUtils {\n private readonly algorithm: NonNullable<JWTUtilsOptions[\"algorithm\"]>;\n private readonly defaultTtlSeconds: number;\n private readonly issuer: string | undefined;\n\n /**\n * @param secret - The signing key (HMAC secret or private key).\n * @param options - Algorithm, default TTL and optional issuer.\n */\n constructor(\n private readonly secret: string,\n options: JWTUtilsOptions = {},\n ) {\n this.algorithm = options.algorithm ?? \"HS256\";\n this.defaultTtlSeconds = options.defaultTtlSeconds ?? 3600;\n this.issuer = options.issuer;\n }\n\n /**\n * Encode `payload` as a signed JWT.\n *\n * @param payload - Claims to include (typically `{ sub: \"<user-id>\" }`).\n * @param options - Override the default TTL for this call.\n * @returns The compact-serialized JWT.\n */\n async encode(\n payload: JwtClaims,\n options: { ttlSeconds?: number } = {},\n ): Promise<string> {\n const jwt = await loadJwt();\n return jwt.sign(payload, this.secret, {\n algorithm: this.algorithm,\n expiresIn: options.ttlSeconds ?? this.defaultTtlSeconds,\n ...(this.issuer !== undefined ? { issuer: this.issuer } : {}),\n });\n }\n\n /**\n * Decode and verify a JWT.\n *\n * @param token - The token to decode.\n * @returns The decoded claims.\n * @throws {ExpiredTokenException} When `exp` is in the past.\n * @throws {InvalidTokenException} For any other validation failure.\n */\n async decode(token: string): Promise<JwtClaims> {\n const jwt = await loadJwt();\n try {\n const decoded = jwt.verify(token, this.secret, {\n algorithms: [this.algorithm],\n ...(this.issuer !== undefined ? { issuer: this.issuer } : {}),\n });\n return typeof decoded === \"string\" ? { sub: decoded } : (decoded as JwtClaims);\n } catch (error) {\n if (error instanceof jwt.TokenExpiredError) throw new ExpiredTokenException();\n throw new InvalidTokenException();\n }\n }\n\n /**\n * Decode and verify a JWT, returning `null` on failure (soft auth).\n *\n * @param token - The token to decode.\n * @returns The decoded claims, or `null` when invalid/expired.\n */\n async decodeOrNull(token: string): Promise<JwtClaims | null> {\n try {\n return await this.decode(token);\n } catch {\n return null;\n }\n }\n}\n","/**\n * Attempt throttling, mirroring `utils.throttle`.\n *\n * Sliding-window attempt counter for flows that must resist brute force\n * (login, OTP, code verification). The default {@link MemoryThrottleBackend} is\n * process-local; swap in a shared backend (e.g. Redis) for multi-instance\n * deployments by implementing {@link ThrottleBackend}.\n */\n\n/** The outcome of recording or inspecting an attempt. */\nexport interface ThrottleStatus {\n /** Whether the attempt is allowed (budget not yet exhausted). */\n allowed: boolean;\n /** Remaining attempts in the current window (never negative). */\n remaining: number;\n /** Seconds until the window resets (`0` when allowed). */\n retryAfterSeconds: number;\n}\n\n/** Pluggable storage of attempt timestamps per key. */\nexport interface ThrottleBackend {\n /** Record an attempt at `now` (epoch ms) and return timestamps in-window. */\n hit(key: string, windowMs: number, now: number): Promise<number[]>;\n /** Read the in-window attempt timestamps without recording a new one. */\n peek(key: string, windowMs: number, now: number): Promise<number[]>;\n /** Clear all recorded attempts for `key`. */\n reset(key: string): Promise<void>;\n}\n\n/** Process-local {@link ThrottleBackend} backed by a `Map`. */\nexport class MemoryThrottleBackend implements ThrottleBackend {\n private readonly store = new Map<string, number[]>();\n\n private window(key: string, windowMs: number, now: number): number[] {\n const cutoff = now - windowMs;\n const kept = (this.store.get(key) ?? []).filter((ts) => ts > cutoff);\n this.store.set(key, kept);\n return kept;\n }\n\n async hit(key: string, windowMs: number, now: number): Promise<number[]> {\n const kept = this.window(key, windowMs, now);\n kept.push(now);\n this.store.set(key, kept);\n return kept;\n }\n\n async peek(key: string, windowMs: number, now: number): Promise<number[]> {\n return this.window(key, windowMs, now);\n }\n\n async reset(key: string): Promise<void> {\n this.store.delete(key);\n }\n}\n\n/** Options for {@link AttemptThrottle}. */\nexport interface AttemptThrottleOptions {\n /** Maximum attempts allowed within the window. */\n maxAttempts: number;\n /** Sliding-window length in seconds. */\n windowSeconds: number;\n /** Storage backend. Defaults to a {@link MemoryThrottleBackend}. */\n backend?: ThrottleBackend;\n}\n\n/** A sliding-window attempt limiter keyed by an arbitrary string. */\nexport class AttemptThrottle {\n private readonly maxAttempts: number;\n private readonly windowMs: number;\n private readonly backend: ThrottleBackend;\n\n /**\n * @param options - Budget, window and optional backend.\n */\n constructor(options: AttemptThrottleOptions) {\n this.maxAttempts = options.maxAttempts;\n this.windowMs = options.windowSeconds * 1000;\n this.backend = options.backend ?? new MemoryThrottleBackend();\n }\n\n /** Build a status from a set of in-window attempt timestamps. */\n private status(attempts: number[], now: number): ThrottleStatus {\n const allowed = attempts.length <= this.maxAttempts;\n const remaining = Math.max(0, this.maxAttempts - attempts.length);\n let retryAfterSeconds = 0;\n if (!allowed && attempts.length > 0) {\n const oldest = Math.min(...attempts);\n retryAfterSeconds = Math.max(0, Math.ceil((oldest + this.windowMs - now) / 1000));\n }\n return { allowed, remaining, retryAfterSeconds };\n }\n\n /**\n * Inspect the current budget for `key` without recording an attempt.\n *\n * @param key - The throttle key (e.g. `login:<ip>`).\n * @returns The current status.\n */\n async check(key: string): Promise<ThrottleStatus> {\n const now = Date.now();\n return this.status(await this.backend.peek(key, this.windowMs, now), now);\n }\n\n /**\n * Record an attempt for `key` and return the resulting status.\n *\n * @param key - The throttle key.\n * @returns The status after recording the attempt.\n */\n async hit(key: string): Promise<ThrottleStatus> {\n const now = Date.now();\n return this.status(await this.backend.hit(key, this.windowMs, now), now);\n }\n\n /**\n * Clear all recorded attempts for `key` (e.g. after a successful login).\n *\n * @param key - The throttle key.\n */\n async reset(key: string): Promise<void> {\n await this.backend.reset(key);\n }\n}\n","/**\n * Auth DTOs (Zod), mirroring `auth.schemas`.\n *\n * Request/response schemas for the bundled signup/login/refresh flows. All are\n * OpenAPI-registered shapes so they render in Swagger/Redoc when the auth\n * router's paths are registered.\n */\n\nimport { z } from \"@/schemas/base\";\n\n/** Request body for `POST /auth/signup`. */\nexport const signupSchema = z\n .object({\n email: z.string().email().openapi({ description: \"Login identifier (email).\" }),\n password: z\n .string()\n .min(1)\n .openapi({ description: \"Plaintext password (hashed server-side).\" }),\n name: z\n .string()\n .max(120)\n .optional()\n .openapi({ description: \"Optional display name.\" }),\n })\n .openapi(\"Signup\");\n\n/** Request body for `POST /auth/login`. */\nexport const loginSchema = z\n .object({\n email: z.string().email().openapi({ description: \"Login identifier (email).\" }),\n password: z.string().min(1).openapi({ description: \"Plaintext password.\" }),\n })\n .openapi(\"Login\");\n\n/** Request body for `POST /auth/refresh`. */\nexport const refreshSchema = z\n .object({\n refreshToken: z.string().min(1).openapi({ description: \"A valid refresh token.\" }),\n })\n .openapi(\"Refresh\");\n\n/** A signed access/refresh token pair. */\nexport const tokenPairSchema = z\n .object({\n accessToken: z.string().openapi({ description: \"Short-lived bearer access token.\" }),\n refreshToken: z.string().openapi({ description: \"Long-lived refresh token.\" }),\n tokenType: z.literal(\"bearer\").openapi({ description: \"Always 'bearer'.\" }),\n expiresIn: z\n .number()\n .int()\n .openapi({ description: \"Access-token lifetime in seconds.\" }),\n })\n .openapi(\"TokenPair\");\n\n/** Public user projection returned by `GET /auth/me` and signup/login. */\nexport const userPublicSchema = z\n .object({\n id: z.string().openapi({ description: \"User id.\" }),\n email: z.string().email().openapi({ description: \"User email.\" }),\n name: z.string().nullable().openapi({ description: \"Display name, or null.\" }),\n isActive: z.boolean().openapi({ description: \"Whether the account is active.\" }),\n roles: z.array(z.string()).openapi({ description: \"Assigned role names.\" }),\n })\n .openapi(\"UserPublic\");\n\n/** Response body for `POST /auth/signup` and `POST /auth/login`. */\nexport const authResponseSchema = z\n .object({\n user: userPublicSchema,\n tokens: tokenPairSchema,\n })\n .openapi(\"AuthResponse\");\n\nexport type SignupInput = z.infer<typeof signupSchema>;\nexport type LoginInput = z.infer<typeof loginSchema>;\nexport type RefreshInput = z.infer<typeof refreshSchema>;\nexport type TokenPair = z.infer<typeof tokenPairSchema>;\nexport type UserPublic = z.infer<typeof userPublicSchema>;\nexport type AuthResponse = z.infer<typeof authResponseSchema>;\n","/**\n * User authentication service, mirroring `auth.service.UserAuthService`.\n *\n * Orchestrates signup / login / refresh over a pluggable {@link UserStore},\n * {@link PasswordUtils} and {@link JWTUtils}. It is ORM-agnostic — back the\n * store with a `tempest-db-js` repository (or anything else). MFA, email\n * activation and password-reset flows from the FastAPI SDK are not yet ported.\n */\n\nimport type {\n AuthResponse,\n LoginInput,\n SignupInput,\n TokenPair,\n UserPublic,\n} from \"@/auth/schemas\";\nimport {\n ConflictException,\n UnauthorizedException,\n ValidationException,\n} from \"@/exceptions/http\";\nimport type { JWTUtils } from \"@/utils/jwt\";\nimport type { PasswordUtils } from \"@/utils/password\";\n\n/** A persisted user as the auth layer needs to see it. */\nexport interface AuthUser {\n /** Stable user id (string form). */\n id: string;\n /** Login email (lowercased by the service before lookup/create). */\n email: string;\n /** The stored bcrypt password hash. */\n passwordHash: string;\n /** Display name, or `null`. */\n name: string | null;\n /** Whether the account may log in. */\n isActive: boolean;\n /** Assigned role names. */\n roles: string[];\n}\n\n/** Persistence port the service depends on. Implement over any store. */\nexport interface UserStore {\n /** Find a user by (lowercased) email, or `null`. */\n findByEmail(email: string): Promise<AuthUser | null>;\n /** Find a user by id, or `null`. */\n findById(id: string): Promise<AuthUser | null>;\n /** Create a user from validated signup data + a password hash. */\n create(data: {\n email: string;\n passwordHash: string;\n name: string | null;\n }): Promise<AuthUser>;\n}\n\n/** Options for {@link UserAuthService}. */\nexport interface UserAuthServiceOptions {\n /** The user persistence port. */\n store: UserStore;\n /** Password hasher/verifier. */\n password: PasswordUtils;\n /** JWT encoder/decoder used to mint access + refresh tokens. */\n jwt: JWTUtils;\n /** Minimum password length enforced server-side. Default 12. */\n passwordMinLength?: number;\n /** Access-token lifetime in seconds. Default 3600. */\n accessTtlSeconds?: number;\n /** Refresh-token lifetime in seconds. Default 1209600 (14 days). */\n refreshTtlSeconds?: number;\n}\n\n/** Project an {@link AuthUser} to its public shape (no secrets). */\nfunction toPublic(user: AuthUser): UserPublic {\n return {\n id: user.id,\n email: user.email,\n name: user.name,\n isActive: user.isActive,\n roles: user.roles,\n };\n}\n\nexport class UserAuthService {\n private readonly store: UserStore;\n private readonly password: PasswordUtils;\n private readonly jwt: JWTUtils;\n private readonly passwordMinLength: number;\n private readonly accessTtlSeconds: number;\n private readonly refreshTtlSeconds: number;\n\n /**\n * @param options - Store, password/JWT helpers and token policy.\n */\n constructor(options: UserAuthServiceOptions) {\n this.store = options.store;\n this.password = options.password;\n this.jwt = options.jwt;\n this.passwordMinLength = options.passwordMinLength ?? 12;\n this.accessTtlSeconds = options.accessTtlSeconds ?? 3600;\n this.refreshTtlSeconds = options.refreshTtlSeconds ?? 60 * 60 * 24 * 14;\n }\n\n /** Mint a signed access + refresh token pair for `user`. */\n private async issueTokens(user: AuthUser): Promise<TokenPair> {\n const accessToken = await this.jwt.encode(\n { sub: user.id, roles: user.roles, type: \"access\" },\n { ttlSeconds: this.accessTtlSeconds },\n );\n const refreshToken = await this.jwt.encode(\n { sub: user.id, type: \"refresh\" },\n { ttlSeconds: this.refreshTtlSeconds },\n );\n return {\n accessToken,\n refreshToken,\n tokenType: \"bearer\",\n expiresIn: this.accessTtlSeconds,\n };\n }\n\n /**\n * Register a new user and issue tokens.\n *\n * @param data - Validated signup payload.\n * @returns The public user and a fresh token pair.\n * @throws {ValidationException} When the password is too short.\n * @throws {ConflictException} When the email is already registered.\n */\n async signup(data: SignupInput): Promise<AuthResponse> {\n if (data.password.length < this.passwordMinLength) {\n throw new ValidationException({\n message: `Password must be at least ${this.passwordMinLength} characters`,\n details: { minLength: this.passwordMinLength },\n });\n }\n const email = data.email.toLowerCase();\n if (await this.store.findByEmail(email)) {\n throw new ConflictException({ message: \"Email already registered\" });\n }\n const passwordHash = await this.password.hash(data.password);\n const user = await this.store.create({\n email,\n passwordHash,\n name: data.name ?? null,\n });\n return { user: toPublic(user), tokens: await this.issueTokens(user) };\n }\n\n /**\n * Authenticate a user by email + password.\n *\n * @param data - Validated login payload.\n * @returns The public user and a fresh token pair.\n * @throws {UnauthorizedException} On bad credentials or inactive account.\n */\n async login(data: LoginInput): Promise<AuthResponse> {\n const user = await this.store.findByEmail(data.email.toLowerCase());\n const ok = user && (await this.password.verify(data.password, user.passwordHash));\n if (!user || !ok) {\n throw new UnauthorizedException({ message: \"Invalid email or password\" });\n }\n if (!user.isActive) {\n throw new UnauthorizedException({ message: \"Account is inactive\" });\n }\n return { user: toPublic(user), tokens: await this.issueTokens(user) };\n }\n\n /**\n * Exchange a valid refresh token for a new token pair.\n *\n * @param refreshToken - The refresh token from a prior login.\n * @returns The public user and a fresh token pair.\n * @throws {UnauthorizedException} When the token is invalid or not a refresh\n * token, or the user no longer exists / is inactive.\n */\n async refresh(refreshToken: string): Promise<AuthResponse> {\n const claims = await this.jwt.decodeOrNull(refreshToken);\n if (!claims || claims.type !== \"refresh\" || typeof claims.sub !== \"string\") {\n throw new UnauthorizedException({ message: \"Invalid refresh token\" });\n }\n const user = await this.store.findById(claims.sub);\n if (!user || !user.isActive) {\n throw new UnauthorizedException({ message: \"Account is inactive\" });\n }\n return { user: toPublic(user), tokens: await this.issueTokens(user) };\n }\n}\n","/**\n * JWT auth middleware + role guards, mirroring `api.dependencies.auth`.\n *\n * {@link makeJwtAuthMiddleware} decodes a `Bearer` token and attaches the\n * claims to `req.auth`; {@link requireRoles} gates a route on role membership.\n * Failures raise the SDK's {@link UnauthorizedException} / {@link ForbiddenException}\n * so they render as the canonical error envelope.\n */\n\nimport { ForbiddenException, UnauthorizedException } from \"@/exceptions/http\";\nimport type { JWTUtils, JwtClaims } from \"@/utils/jwt\";\nimport type { Request, RequestHandler } from \"express\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace Express {\n /** Decoded JWT claims, populated by {@link makeJwtAuthMiddleware}. */\n interface Request {\n auth?: JwtClaims;\n }\n }\n}\n\n/** Extract a `Bearer` token from the `Authorization` header, or `null`. */\nexport function bearerToken(req: Request): string | null {\n const header = req.header(\"authorization\");\n if (!header) return null;\n const [scheme, token] = header.split(\" \");\n if (scheme?.toLowerCase() !== \"bearer\" || !token) return null;\n return token;\n}\n\n/** Read the decoded claims attached by the auth middleware, or `null`. */\nexport function getAuth(req: Request): JwtClaims | null {\n return req.auth ?? null;\n}\n\n/** Options for {@link makeJwtAuthMiddleware}. */\nexport interface JwtAuthOptions {\n /** When `true` (default), a missing/invalid token rejects with 401. */\n required?: boolean;\n}\n\n/**\n * Build middleware that decodes the bearer token and sets `req.auth`.\n *\n * @param jwt - The JWT helper used to verify tokens.\n * @param options - Whether authentication is required.\n * @returns An Express middleware.\n */\nexport function makeJwtAuthMiddleware(\n jwt: JWTUtils,\n options: JwtAuthOptions = {},\n): RequestHandler {\n const required = options.required ?? true;\n return (req, _res, next) => {\n const token = bearerToken(req);\n if (!token) {\n if (required) {\n next(new UnauthorizedException({ message: \"Missing bearer token\" }));\n return;\n }\n next();\n return;\n }\n jwt\n .decode(token)\n .then((claims) => {\n req.auth = claims;\n next();\n })\n .catch((error: unknown) => {\n if (required) next(error);\n else next();\n });\n };\n}\n\n/**\n * Build middleware that requires the authenticated user to hold at least one\n * of `roles` (read from the `roles` claim). Must run after the auth middleware.\n *\n * @param roles - Acceptable role names.\n * @returns An Express middleware.\n */\nexport function requireRoles(...roles: string[]): RequestHandler {\n return (req, _res, next) => {\n const claims = req.auth;\n if (!claims) {\n next(new UnauthorizedException({ message: \"Not authenticated\" }));\n return;\n }\n const held = Array.isArray(claims.roles) ? (claims.roles as unknown[]) : [];\n if (roles.some((role) => held.includes(role))) {\n next();\n return;\n }\n next(new ForbiddenException({ message: \"Insufficient role\", details: { roles } }));\n };\n}\n","/**\n * Auth router, mirroring `auth.router.make_auth_router`.\n *\n * Wires `POST /auth/signup`, `POST /auth/login`, `POST /auth/refresh` and a\n * guarded `GET /auth/me` to a {@link UserAuthService}. Pass an\n * {@link OpenAPIRegistry} to register the paths so they appear in Swagger/Redoc.\n */\n\nimport type { OpenAPIRegistry } from \"@/api/openapi\";\nimport { getAuth, makeJwtAuthMiddleware } from \"@/auth/middleware\";\nimport {\n authResponseSchema,\n loginSchema,\n refreshSchema,\n signupSchema,\n userPublicSchema,\n} from \"@/auth/schemas\";\nimport type { UserAuthService } from \"@/auth/service\";\nimport { UnauthorizedException } from \"@/exceptions/http\";\nimport type { JWTUtils } from \"@/utils/jwt\";\nimport { type Router, Router as createRouter } from \"express\";\n\n/** Options for {@link makeAuthRouter}. */\nexport interface AuthRouterOptions {\n /** The authentication service handling the flows. */\n service: UserAuthService;\n /** The JWT helper used to guard `GET /auth/me`. */\n jwt: JWTUtils;\n /** Route prefix. Default `/auth`. */\n prefix?: string;\n /** When provided, OpenAPI paths are registered for Swagger/Redoc. */\n registry?: OpenAPIRegistry;\n}\n\n/** Register the auth OpenAPI paths on `registry`. */\nfunction registerPaths(registry: OpenAPIRegistry, prefix: string): void {\n const json = (schema: unknown) => ({\n content: { \"application/json\": { schema: schema as never } },\n });\n registry.registerPath({\n method: \"post\",\n path: `${prefix}/signup`,\n summary: \"Register a new user\",\n request: { body: json(signupSchema) },\n responses: { 201: { description: \"Created\", ...json(authResponseSchema) } },\n });\n registry.registerPath({\n method: \"post\",\n path: `${prefix}/login`,\n summary: \"Authenticate and receive tokens\",\n request: { body: json(loginSchema) },\n responses: { 200: { description: \"OK\", ...json(authResponseSchema) } },\n });\n registry.registerPath({\n method: \"post\",\n path: `${prefix}/refresh`,\n summary: \"Exchange a refresh token for new tokens\",\n request: { body: json(refreshSchema) },\n responses: { 200: { description: \"OK\", ...json(authResponseSchema) } },\n });\n registry.registerPath({\n method: \"get\",\n path: `${prefix}/me`,\n summary: \"Current authenticated user\",\n security: [{ bearerAuth: [] }],\n responses: { 200: { description: \"OK\", ...json(userPublicSchema) } },\n });\n}\n\n/**\n * Build the auth router.\n *\n * @param options - Service, JWT helper, prefix and optional OpenAPI registry.\n * @returns An Express router exposing the auth endpoints.\n */\nexport function makeAuthRouter(options: AuthRouterOptions): Router {\n const { service, jwt, prefix = \"/auth\", registry } = options;\n if (registry) registerPaths(registry, prefix);\n\n const router = createRouter();\n\n router.post(`${prefix}/signup`, async (req, res) => {\n const result = await service.signup(signupSchema.parse(req.body));\n res.status(201).json(result);\n });\n\n router.post(`${prefix}/login`, async (req, res) => {\n res.json(await service.login(loginSchema.parse(req.body)));\n });\n\n router.post(`${prefix}/refresh`, async (req, res) => {\n const { refreshToken } = refreshSchema.parse(req.body);\n res.json(await service.refresh(refreshToken));\n });\n\n router.get(`${prefix}/me`, makeJwtAuthMiddleware(jwt), async (req, res) => {\n const claims = getAuth(req);\n if (!claims || typeof claims.sub !== \"string\") {\n throw new UnauthorizedException({ message: \"Not authenticated\" });\n }\n res.json(claims);\n });\n\n return router;\n}\n","/**\n * Express error handling, mirroring `api.handlers`.\n *\n * Produces the canonical SDK envelope `{ detail, code, details }` for every\n * failure path: {@link AppException} subclasses, Zod validation errors (→ 422),\n * unmatched routes (→ 404) and uncaught errors (→ 500). A {@link MessageCatalog}\n * localizes `detail` from the request `Accept-Language` header. Server errors\n * are logged with the {@link HTTP_500_MARKER} flag for sink routing.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport {\n HTTP_500_MARKER,\n JSONLogger,\n type LogLevel,\n runWithRequestContext,\n} from \"@/core\";\nimport { AppException, type ExceptionDetails } from \"@/exceptions/base\";\nimport { DEFAULT_LOCALE, type MessageCatalog } from \"@/exceptions/i18n\";\nimport type { ErrorRequestHandler, Express, RequestHandler } from \"express\";\nimport { ZodError } from \"zod\";\n\nconst logger = new JSONLogger(\"tempest_express_sdk.api.handlers\");\n\n/** Header carrying the per-request correlation id. */\nexport const REQUEST_ID_HEADER = \"X-Request-ID\";\n\n/**\n * Middleware that establishes a request id and binds the request context.\n *\n * Reuses an inbound `X-Request-ID` when present, otherwise generates one, sets\n * it on the response, and runs the rest of the chain inside\n * {@link runWithRequestContext} so loggers and handlers can read it.\n *\n * @returns The configured middleware.\n */\nexport function requestIdMiddleware(): RequestHandler {\n return (req, res, next) => {\n const inbound = req.header(REQUEST_ID_HEADER);\n const requestId = inbound && inbound.length > 0 ? inbound : randomUUID();\n res.setHeader(REQUEST_ID_HEADER, requestId);\n runWithRequestContext({ requestId }, () => next());\n };\n}\n\n/** Options for {@link makeAppExceptionHandler}. */\nexport interface AppExceptionHandlerOptions {\n /** Catalog used to localize `detail`; `null` keeps the literal message. */\n catalog?: MessageCatalog | null;\n /** Locale used when `Accept-Language` is absent or unmatched. */\n defaultLocale?: string;\n /** Level used for 5xx `AppException` records (4xx always logs at `info`). */\n serverErrorLevel?: LogLevel;\n}\n\n/** Serialize an {@link AppException} to the envelope and write the response. */\nfunction writeAppException(\n res: Parameters<ErrorRequestHandler>[2],\n exc: AppException,\n detail: string,\n): void {\n for (const [name, value] of Object.entries(exc.headers)) res.setHeader(name, value);\n res.status(exc.statusCode).json({\n detail,\n code: exc.code,\n details: exc.details,\n });\n}\n\n/**\n * Build the error middleware for {@link AppException} subclasses.\n *\n * Zod errors are coerced into a 422 envelope (`code: \"VALIDATION_ERROR\"`) with\n * the field issues under `details.issues`. Anything else is passed to `next`.\n *\n * @param options - Localization and logging options.\n * @returns An Express error middleware.\n */\nexport function makeAppExceptionHandler(\n options: AppExceptionHandlerOptions = {},\n): ErrorRequestHandler {\n const {\n catalog = null,\n defaultLocale = DEFAULT_LOCALE,\n serverErrorLevel = \"info\",\n } = options;\n\n return (err, req, res, next) => {\n let exc: AppException;\n if (err instanceof AppException) {\n exc = err;\n } else if (err instanceof ZodError) {\n const details: ExceptionDetails = { issues: err.issues };\n exc = new AppException({\n message: \"Validation error\",\n code: \"VALIDATION_ERROR\",\n statusCode: 422,\n details,\n });\n } else {\n next(err);\n return;\n }\n\n const isServerError = exc.statusCode >= 500;\n logger.log(isServerError ? serverErrorLevel : \"info\", \"AppException handled\", {\n path: req.path,\n method: req.method,\n statusCode: exc.statusCode,\n code: exc.code,\n ...(isServerError ? { [HTTP_500_MARKER]: true, stack: exc.stack } : {}),\n });\n\n let detail = exc.message;\n if (catalog) {\n const locale = catalog.negotiate(req.header(\"accept-language\"), defaultLocale);\n const localized = catalog.resolve(\n exc.messageKey ?? exc.code,\n locale,\n exc.messageParams,\n );\n if (localized !== null) detail = localized;\n }\n writeAppException(res, exc, detail);\n };\n}\n\n/** Options for {@link makeUnhandledExceptionHandler}. */\nexport interface UnhandledExceptionHandlerOptions {\n /** Surface the stack under `details.stack` (development only). */\n includeStack?: boolean;\n /** Level used to log the failure. */\n logLevel?: LogLevel;\n}\n\n/**\n * Build the catch-all error middleware for non-{@link AppException} errors.\n *\n * Logs the failure (flagged with {@link HTTP_500_MARKER}) and returns the\n * canonical 500 envelope. With `includeStack` the stack is added to the body —\n * never enable in production.\n *\n * @param options - Stack-exposure and logging options.\n * @returns An Express error middleware.\n */\nexport function makeUnhandledExceptionHandler(\n options: UnhandledExceptionHandlerOptions = {},\n): ErrorRequestHandler {\n const { includeStack = false, logLevel = \"error\" } = options;\n\n return (err, req, res, _next) => {\n const error = err instanceof Error ? err : new Error(String(err));\n logger.log(logLevel, \"Unhandled exception\", {\n path: req.path,\n method: req.method,\n [HTTP_500_MARKER]: true,\n stack: error.stack,\n });\n const details: ExceptionDetails = includeStack ? { stack: error.stack } : {};\n res.status(500).json({\n detail: \"Internal server error\",\n code: \"INTERNAL_SERVER_ERROR\",\n details,\n });\n };\n}\n\n/**\n * Build the fallback 404 handler for unmatched routes.\n *\n * @returns A request handler emitting the canonical 404 envelope.\n */\nexport function notFoundHandler(): RequestHandler {\n return (req, res) => {\n res.status(404).json({\n detail: `No route for ${req.method} ${req.path}`,\n code: \"NOT_FOUND\",\n details: {},\n });\n };\n}\n\n/** Options for {@link registerExceptionHandlers}. */\nexport interface RegisterExceptionHandlersOptions\n extends AppExceptionHandlerOptions,\n UnhandledExceptionHandlerOptions {\n /** Register the {@link notFoundHandler} for unmatched routes. Default `true`. */\n notFound?: boolean;\n}\n\n/**\n * Register the full error-handling stack on an Express app.\n *\n * Call this AFTER all routers are mounted. Order: 404 fallback (optional) →\n * {@link AppException}/Zod handler → catch-all 500 handler.\n *\n * @param app - The Express application.\n * @param options - Localization, logging and 404 options.\n */\nexport function registerExceptionHandlers(\n app: Express,\n options: RegisterExceptionHandlersOptions = {},\n): void {\n const { notFound = true, includeStack, logLevel, ...appOptions } = options;\n if (notFound) app.use(notFoundHandler());\n app.use(makeAppExceptionHandler(appOptions));\n app.use(\n makeUnhandledExceptionHandler({\n ...(includeStack !== undefined ? { includeStack } : {}),\n ...(logLevel !== undefined ? { logLevel } : {}),\n }),\n );\n}\n","/**\n * OpenAPI document generation from Zod schemas.\n *\n * Thin wrapper over `@asteasolutions/zod-to-openapi`. Register schemas and\n * paths on a {@link OpenAPIRegistry}, then call {@link generateOpenApiDocument}\n * to produce a spec that drives both Swagger UI and Redoc. Because every SDK\n * schema is built from the `.openapi()`-augmented `z`, descriptions, examples\n * and component names flow straight into the document.\n */\n\nimport {\n OpenAPIRegistry,\n OpenApiGeneratorV3,\n OpenApiGeneratorV31,\n} from \"@asteasolutions/zod-to-openapi\";\n\nexport { OpenAPIRegistry };\n\n/** The config object accepted by the generator's `generateDocument`. */\ntype OpenApiDocumentConfig = Parameters<OpenApiGeneratorV3[\"generateDocument\"]>[0];\n\n/** Minimal `info` block for the generated document. */\nexport interface OpenApiInfo {\n /** API title shown in the docs header. */\n title: string;\n /** API version string. */\n version: string;\n /** Optional long description (Markdown supported by the renderers). */\n description?: string;\n}\n\n/** Options for {@link generateOpenApiDocument}. */\nexport interface GenerateOpenApiOptions {\n /** The document `info` block. */\n info: OpenApiInfo;\n /** Server entries (`{ url, description }`). */\n servers?: Array<{ url: string; description?: string }>;\n /** Emit OpenAPI 3.1 instead of 3.0. Default `false` (3.0). */\n v31?: boolean;\n}\n\n/**\n * Create a fresh, empty {@link OpenAPIRegistry}.\n *\n * @returns A registry to register schemas and paths on.\n */\nexport function createOpenApiRegistry(): OpenAPIRegistry {\n return new OpenAPIRegistry();\n}\n\n/**\n * Generate an OpenAPI document from a populated registry.\n *\n * @param registry - The registry holding registered schemas and paths.\n * @param options - The `info` block, optional servers and version flag.\n * @returns The generated OpenAPI document (plain object, JSON-serializable).\n */\nexport function generateOpenApiDocument(\n registry: OpenAPIRegistry,\n options: GenerateOpenApiOptions,\n): Record<string, unknown> {\n const config: OpenApiDocumentConfig = {\n openapi: options.v31 ? \"3.1.0\" : \"3.0.0\",\n info: {\n title: options.info.title,\n version: options.info.version,\n ...(options.info.description !== undefined\n ? { description: options.info.description }\n : {}),\n },\n ...(options.servers !== undefined ? { servers: options.servers } : {}),\n };\n const Generator = options.v31 ? OpenApiGeneratorV31 : OpenApiGeneratorV3;\n const document = new Generator(registry.definitions).generateDocument(config);\n return document as unknown as Record<string, unknown>;\n}\n","/**\n * Native Swagger UI and Redoc mounting from a generated OpenAPI document.\n *\n * Swagger UI is served fully self-contained: its static assets ship with the\n * `swagger-ui-dist` dependency and are mounted locally (no CDN), with a small\n * inline initializer pointing at the spec endpoint. Redoc is served as a single\n * HTML page that loads the Redoc standalone bundle from a CDN (the renderer is\n * ~1 MB and intentionally not vendored); override {@link RedocOptions.scriptUrl}\n * to self-host it.\n */\n\nimport express, { type Express, type RequestHandler } from \"express\";\nimport { getAbsoluteFSPath } from \"swagger-ui-dist\";\n\n/** A JSON-serializable OpenAPI document. */\nexport type OpenApiDocument = Record<string, unknown>;\n\n/**\n * Mount the OpenAPI document as JSON at `path`.\n *\n * @param app - The Express application.\n * @param path - Route to serve the document at (e.g. `/openapi.json`).\n * @param document - The generated OpenAPI document.\n */\nexport function mountOpenApiJson(\n app: Express,\n path: string,\n document: OpenApiDocument,\n): void {\n app.get(path, (_req, res) => {\n res.json(document);\n });\n}\n\n/** Build the Swagger UI bootstrap HTML pointing at `specUrl`. */\nfunction swaggerHtml(specUrl: string, title: string): string {\n return `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${title}</title>\n <link rel=\"stylesheet\" href=\"./assets/swagger-ui.css\" />\n </head>\n <body>\n <div id=\"swagger-ui\"></div>\n <script src=\"./assets/swagger-ui-bundle.js\"></script>\n <script src=\"./assets/swagger-ui-standalone-preset.js\"></script>\n <script>\n window.ui = SwaggerUIBundle({\n url: ${JSON.stringify(specUrl)},\n dom_id: \"#swagger-ui\",\n presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],\n layout: \"StandaloneLayout\",\n });\n </script>\n </body>\n</html>`;\n}\n\n/** Options for {@link mountSwaggerUi}. */\nexport interface SwaggerOptions {\n /** Page title. Default `\"API docs\"`. */\n title?: string;\n}\n\n/**\n * Mount Swagger UI at `path`, reading the spec from `specUrl`.\n *\n * Static assets are served from `${path}/assets` so the page is fully offline.\n *\n * @param app - The Express application.\n * @param path - Mount path for the UI (e.g. `/docs`).\n * @param specUrl - URL the UI fetches the OpenAPI document from.\n * @param options - Page options.\n */\nexport function mountSwaggerUi(\n app: Express,\n path: string,\n specUrl: string,\n options: SwaggerOptions = {},\n): void {\n const title = options.title ?? \"API docs\";\n const assetsPath = `${path.replace(/\\/$/, \"\")}/assets`;\n app.use(assetsPath, express.static(getAbsoluteFSPath()));\n const handler: RequestHandler = (_req, res) => {\n res.type(\"html\").send(swaggerHtml(specUrl, title));\n };\n app.get(path, handler);\n}\n\n/** Options for {@link mountRedoc}. */\nexport interface RedocOptions {\n /** Page title. Default `\"API reference\"`. */\n title?: string;\n /** URL of the Redoc standalone bundle. Defaults to the jsDelivr CDN. */\n scriptUrl?: string;\n}\n\n/** Build the Redoc HTML pointing at `specUrl`. */\nfunction redocHtml(specUrl: string, title: string, scriptUrl: string): string {\n return `<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${title}</title>\n <style>body { margin: 0; padding: 0; }</style>\n </head>\n <body>\n <redoc spec-url=${JSON.stringify(specUrl)}></redoc>\n <script src=${JSON.stringify(scriptUrl)}></script>\n </body>\n</html>`;\n}\n\n/**\n * Mount Redoc at `path`, reading the spec from `specUrl`.\n *\n * @param app - The Express application.\n * @param path - Mount path for Redoc (e.g. `/redoc`).\n * @param specUrl - URL Redoc fetches the OpenAPI document from.\n * @param options - Page and bundle options.\n */\nexport function mountRedoc(\n app: Express,\n path: string,\n specUrl: string,\n options: RedocOptions = {},\n): void {\n const title = options.title ?? \"API reference\";\n const scriptUrl =\n options.scriptUrl ??\n \"https://cdn.jsdelivr.net/npm/redoc@2/bundles/redoc.standalone.js\";\n app.get(path, (_req, res) => {\n res.type(\"html\").send(redocHtml(specUrl, title, scriptUrl));\n });\n}\n","/**\n * Health-check router, mirroring `api.routers.health`.\n *\n * A meta endpoint mounted at the root prefix (not under `/api`). Returns a\n * small JSON status payload and runs any registered async checks, surfacing\n * their pass/fail under `checks` and degrading the HTTP status to 503 when any\n * check fails.\n */\n\nimport { type Router, Router as createRouter } from \"express\";\n\n/** A named async health probe returning `true` when healthy. */\nexport interface HealthCheck {\n /** Probe name, surfaced under `checks`. */\n name: string;\n /** The probe; resolves `true` when the dependency is healthy. */\n check: () => Promise<boolean> | boolean;\n}\n\n/** Options for {@link makeHealthRouter}. */\nexport interface HealthRouterOptions {\n /** Route path within the router. Default `/health`. */\n path?: string;\n /** Optional dependency probes (e.g. database, cache). */\n checks?: HealthCheck[];\n}\n\n/**\n * Build a health-check router.\n *\n * @param options - Path and dependency probes.\n * @returns An Express router exposing the health endpoint.\n */\nexport function makeHealthRouter(options: HealthRouterOptions = {}): Router {\n const path = options.path ?? \"/health\";\n const checks = options.checks ?? [];\n const router = createRouter();\n\n router.get(path, async (_req, res) => {\n const results: Record<string, boolean> = {};\n let healthy = true;\n for (const probe of checks) {\n let ok = false;\n try {\n ok = await probe.check();\n } catch {\n ok = false;\n }\n results[probe.name] = ok;\n if (!ok) healthy = false;\n }\n res.status(healthy ? 200 : 503).json({\n status: healthy ? \"ok\" : \"degraded\",\n checks: results,\n });\n });\n\n return router;\n}\n","/**\n * Application factory and server runner, mirroring `api.app` + `api.server`.\n *\n * {@link createApp} wires the conventional middleware stack (JSON body parsing,\n * request-id propagation, optional CORS), mounts the health endpoint, lets the\n * caller register routers and OpenAPI paths via a `configure` hook, mounts\n * native Swagger UI + Redoc, then registers the error-handling stack last.\n * {@link runServer} starts listening and logs the bound address.\n */\n\nimport type { Server } from \"node:http\";\nimport {\n type OpenApiDocument,\n type RedocOptions,\n type SwaggerOptions,\n mountOpenApiJson,\n mountRedoc,\n mountSwaggerUi,\n} from \"@/api/docs\";\nimport {\n type RegisterExceptionHandlersOptions,\n registerExceptionHandlers,\n requestIdMiddleware,\n} from \"@/api/handlers\";\nimport {\n type HealthCheck,\n type HealthRouterOptions,\n makeHealthRouter,\n} from \"@/api/health\";\nimport {\n type GenerateOpenApiOptions,\n type OpenAPIRegistry,\n generateOpenApiDocument,\n} from \"@/api/openapi\";\nimport { JSONLogger } from \"@/core\";\nimport type { MessageCatalog } from \"@/exceptions/i18n\";\nimport express, { type Express, type RequestHandler } from \"express\";\n\nconst logger = new JSONLogger(\"tempest_express_sdk.api.server\");\n\n/** OpenAPI documentation configuration for {@link createApp}. */\nexport interface CreateAppOpenApi extends GenerateOpenApiOptions {\n /** Registry holding the registered schemas and paths. */\n registry: OpenAPIRegistry;\n /** Route serving the spec JSON. Default `/openapi.json`. */\n jsonPath?: string;\n /** Swagger UI mount path, or `false` to disable. Default `/docs`. */\n swaggerPath?: string | false;\n /** Redoc mount path, or `false` to disable. Default `/redoc`. */\n redocPath?: string | false;\n /** Extra Swagger UI options. */\n swagger?: SwaggerOptions;\n /** Extra Redoc options. */\n redoc?: RedocOptions;\n}\n\n/** Options for {@link createApp}. */\nexport interface CreateAppOptions {\n /** Allowed CORS origins. `\"*\"` or a list; omit/`false` to disable CORS. */\n corsOrigins?: string | string[] | false;\n /** Health endpoint options, or `false` to omit it. Default mounts `/health`. */\n health?: HealthRouterOptions | false;\n /** Hook to mount routers and register OpenAPI paths before the error stack. */\n configure?: (app: Express) => void | Promise<void>;\n /** OpenAPI docs configuration; omit to skip Swagger/Redoc. */\n openapi?: CreateAppOpenApi;\n /** Message catalog for localized error responses. */\n catalog?: MessageCatalog;\n /** Error-handling options forwarded to {@link registerExceptionHandlers}. */\n errorHandling?: Omit<RegisterExceptionHandlersOptions, \"catalog\">;\n /** JSON body size limit (e.g. `\"1mb\"`). Default `\"100kb\"`. */\n jsonLimit?: string;\n}\n\n/** Minimal CORS middleware (no external dependency). */\nfunction corsMiddleware(origins: string | string[]): RequestHandler {\n const allowAll = origins === \"*\";\n const allowList = new Set(Array.isArray(origins) ? origins : [origins]);\n return (req, res, next) => {\n const origin = req.header(\"origin\");\n if (allowAll) {\n res.setHeader(\"Access-Control-Allow-Origin\", \"*\");\n } else if (origin && allowList.has(origin)) {\n res.setHeader(\"Access-Control-Allow-Origin\", origin);\n res.setHeader(\"Vary\", \"Origin\");\n }\n res.setHeader(\"Access-Control-Allow-Methods\", \"GET,POST,PUT,PATCH,DELETE,OPTIONS\");\n res.setHeader(\n \"Access-Control-Allow-Headers\",\n \"Content-Type,Authorization,X-Request-ID\",\n );\n if (req.method === \"OPTIONS\") {\n res.sendStatus(204);\n return;\n }\n next();\n };\n}\n\n/**\n * Build a fully wired Express application.\n *\n * @param options - Middleware, health, OpenAPI docs and error options.\n * @returns The configured Express app, ready to {@link runServer}.\n */\nexport async function createApp(options: CreateAppOptions = {}): Promise<Express> {\n const app = express();\n app.use(express.json({ limit: options.jsonLimit ?? \"100kb\" }));\n app.use(express.urlencoded({ extended: true }));\n app.use(requestIdMiddleware());\n\n if (options.corsOrigins) {\n app.use(corsMiddleware(options.corsOrigins));\n }\n\n if (options.health !== false) {\n app.use(makeHealthRouter(options.health ?? {}));\n }\n\n if (options.configure) await options.configure(app);\n\n if (options.openapi) {\n const { registry, jsonPath, swaggerPath, redocPath, swagger, redoc, ...genOptions } =\n options.openapi;\n const document = generateOpenApiDocument(registry, genOptions) as OpenApiDocument;\n const specPath = jsonPath ?? \"/openapi.json\";\n mountOpenApiJson(app, specPath, document);\n if (swaggerPath !== false) {\n mountSwaggerUi(app, swaggerPath ?? \"/docs\", specPath, swagger ?? {});\n }\n if (redocPath !== false) {\n mountRedoc(app, redocPath ?? \"/redoc\", specPath, redoc ?? {});\n }\n }\n\n registerExceptionHandlers(app, {\n ...options.errorHandling,\n ...(options.catalog !== undefined ? { catalog: options.catalog } : {}),\n });\n\n return app;\n}\n\n/** Options for {@link runServer}. */\nexport interface RunServerOptions {\n /** Bind host. Default `127.0.0.1`. */\n host?: string;\n /** Bind port. Default `8000`. */\n port?: number;\n}\n\n/**\n * Start listening and log the bound address.\n *\n * @param app - The Express application from {@link createApp}.\n * @param options - Host and port.\n * @returns A promise resolving to the live HTTP server once listening.\n */\nexport function runServer(app: Express, options: RunServerOptions = {}): Promise<Server> {\n const host = options.host ?? \"127.0.0.1\";\n const port = options.port ?? 8000;\n return new Promise((resolve) => {\n const server = app.listen(port, host, () => {\n logger.info(\"Server listening\", { host, port });\n resolve(server);\n });\n });\n}\n\n/** Re-export so a `HealthCheck` is reachable from the server module too. */\nexport type { HealthCheck };\n","/** The installed SDK version. Single source of truth for the barrel + CLI. */\nexport const VERSION = \"0.1.0\";\n"]}