diff --git a/app.go b/app.go index 3506cec..aeaa40c 100644 --- a/app.go +++ b/app.go @@ -2157,6 +2157,7 @@ func (a *App) awardDefs() []award.Def { if json.Unmarshal([]byte(s), &defs) == nil && len(defs) > 0 { // Upgrade legacy defs (pre-rich-model) in memory on every load. migrated, _ := award.Migrate(defs) + migrated, _ = mergeCatalog(migrated) return migrated } } @@ -2164,6 +2165,27 @@ func (a *App) awardDefs() []award.Def { return award.Defaults() } +// mergeCatalog adds the catalog awards that are missing from the stored +// definitions. This is how an award SHIPPED in a new release (FFMA, say) reaches +// an operator who already has awards saved: without it awardDefs() would keep +// returning the stored copy and the new award would simply never appear. Add-only +// — an award already there keeps the operator's edits, Valid=false included. +func mergeCatalog(defs []award.Def) ([]award.Def, bool) { + have := make(map[string]struct{}, len(defs)) + for _, d := range defs { + have[strings.ToUpper(strings.TrimSpace(d.Code))] = struct{}{} + } + added := false + for _, d := range award.Defaults() { + if _, ok := have[strings.ToUpper(strings.TrimSpace(d.Code))]; ok { + continue + } + defs = append(defs, d) + added = true + } + return defs, added +} + // GetAwardDefs returns the (editable) award definitions. func (a *App) GetAwardDefs() []award.Def { return a.awardDefs() } @@ -2189,6 +2211,11 @@ func (a *App) migrateAwardDefs() { return } migrated, changed := award.Migrate(defs) + // Awards added to the catalog since this operator last saved (a new release + // ships one) must be written back, or the editor would keep showing the old set. + if merged, added := mergeCatalog(migrated); added { + migrated, changed = merged, true + } // Version-gated correction of the built-in awards' Validate sources, which // an earlier version wrongly set equal to Confirm (so VALIDATED == CONFIRMED // even for paper-QSL-only entities). Re-apply the canonical Confirm/Validate @@ -3825,8 +3852,10 @@ func freeAwardCode(code string, taken map[string]int) string { const builtinRefsVersion = "2" // seedBuiltinReferences populates the reference lists of built-in awards. -// - First run (no version stored): seed only awards that have NO references -// yet, so an online-loaded list (POTA…) or a user list isn't clobbered. +// - First run (no version stored), or already up to date: seed only awards that +// have NO references yet, so an online-loaded list (POTA…), a user list, or an +// edited one isn't clobbered. This is also what gives an award newly added to +// the catalog (FFMA and its 488 grids) its list on an existing install. // - Version bump (stored != current): RE-SEED the derived built-in lists // (DXCC, WAZ, WAC, WAS, DDFM) to push data corrections to existing installs. // These lists are canonical, not user-maintained, so overwriting is safe. @@ -3834,22 +3863,26 @@ func (a *App) seedBuiltinReferences() { if a.awardRefs == nil || a.settings == nil { return } - ver, _ := a.settings.Get(a.ctx, keyAwardRefsSeeded) - if ver == builtinRefsVersion { - return - } - firstRun := ver == "" || ver == "1" // "1" was the old boolean flag - if ver == "1" { - firstRun = false // already seeded once → treat as a version upgrade - } counts, err := a.awardRefs.Counts(a.ctx) if err != nil { return } + ver, _ := a.settings.Get(a.ctx, keyAwardRefsSeeded) + firstRun := ver == "" || ver == "1" // "1" was the old boolean flag + if ver == "1" { + firstRun = false // already seeded once → treat as a version upgrade + } + if ver == builtinRefsVersion { + // Already on the current data. But an award ADDED to the catalog since the + // last run (FFMA, say) still has an EMPTY list, and bumping the version to + // seed it would re-seed every award and clobber lists the operator has + // edited. So fill only the empty ones. + firstRun = true + } for _, d := range a.awardDefs() { code := strings.ToUpper(d.Code) if firstRun && counts[code] > 0 { - continue // don't overwrite an existing list on a fresh install + continue // don't overwrite an existing list } // A catalog award that SHIPS its own reference list wins: that is how an // award added as a JSON file (a shared WAPC, with its provinces and their diff --git a/frontend/src/components/AwardEditor.tsx b/frontend/src/components/AwardEditor.tsx index 6cb6865..a251ff8 100644 --- a/frontend/src/components/AwardEditor.tsx +++ b/frontend/src/components/AwardEditor.tsx @@ -355,14 +355,12 @@ export function AwardEditor({ open, onClose, onSaved }: Props) { patch({ code: e.target.value })} placeholder="CODE" /> patch({ name: e.target.value })} placeholder={t('awed.awardName')} /> - {/* "Built-in" is what you tick before dropping an award into the - shipped catalog. Leave it off and "Reset to defaults" DELETES - the award on the user's machine — even though you shipped it. - Editing the JSON by hand to fix that is exactly what we're - avoiding here. */} - + {/* No "Built-in" checkbox: an award OpsLog ships IS built-in, and + the catalog derives that on load. Asking the author to tick a + box to declare it would be one more step nobody can guess — + forget it and the award silently misses every future catalog + correction. "Protected" stays: whether an award can be deleted + IS a real choice. */} diff --git a/internal/award/award.go b/internal/award/award.go index a6dcfae..1d6d175 100644 --- a/internal/award/award.go +++ b/internal/award/award.go @@ -200,6 +200,14 @@ func Catalog() []CatalogEntry { } } } + // An award OpsLog SHIPS is built-in, by definition. Derive it here instead of + // trusting the flag in the file: you drop in an award you exported, its JSON + // says builtin:false (you wrote it, it wasn't built-in then), and it would + // quietly miss every future catalog correction. Making the author remember to + // flip a flag is exactly the kind of step nobody can guess. + for i := range out { + out[i].Def.Builtin = true + } sort.Slice(out, func(i, j int) bool { return out[i].Def.Code < out[j].Def.Code }) return out } diff --git a/internal/award/award_test.go b/internal/award/award_test.go index d7467bd..875f1ca 100644 --- a/internal/award/award_test.go +++ b/internal/award/award_test.go @@ -3,7 +3,9 @@ package award import ( "encoding/json" "sort" + "strings" "testing" + "time" "hamlog/internal/qso" ) @@ -287,6 +289,71 @@ func TestComputeGrid4VUCC(t *testing.T) { } } +// FFMA ships a fixed list of the 488 grids of the contiguous 48 states, taken +// from arrl.org/ffma. The count is the award's own checksum — if this test ever +// fails on the count, the catalog file is wrong, not the test. +func TestCatalogFFMA(t *testing.T) { + raw, ok := CatalogRefs("FFMA") + if !ok { + t.Fatal("FFMA has no reference list in the embedded catalog") + } + var refs []struct { + Code string `json:"code"` + DXCC int `json:"dxcc"` + Valid bool `json:"valid"` + } + if err := json.Unmarshal(raw, &refs); err != nil { + t.Fatalf("FFMA references: %v", err) + } + if len(refs) != 488 { + t.Fatalf("FFMA has %d grids, want exactly 488", len(refs)) + } + + var def Def + metas := make([]RefMeta, 0, len(refs)) + for _, r := range refs { + // Rule 4(c): a grid may be activated from Canadian or Mexican soil, or from + // water. Pinning a reference to a DXCC entity would reject those contacts. + if r.DXCC != 0 { + t.Fatalf("FFMA grid %s is pinned to DXCC %d — rule 4(c) allows working it from outside the US", r.Code, r.DXCC) + } + metas = append(metas, RefMeta{Code: r.Code, Valid: r.Valid}) + } + for _, d := range Defaults() { + if d.Code == "FFMA" { + def = d + } + } + if def.Total != 488 || def.Field != "grid4" { + t.Fatalf("FFMA def: total=%d field=%q, want 488 / grid4", def.Total, def.Field) + } + + d1983 := time.Date(1990, 5, 1, 0, 0, 0, 0, time.UTC) + qsos := []qso.QSO{ + {Callsign: "K5ABC", Band: "6m", Grid: "EM00AA", QSODate: d1983, LOTWRcvd: "Y"}, // counts + {Callsign: "VE3XYZ", Band: "6m", Grid: "FN25AA", QSODate: d1983, LOTWRcvd: "Y"}, // a VE3 in an FFMA grid: counts (4c) + {Callsign: "W1LINE", Band: "6m", VUCCGrids: "FN31,FN32", QSODate: d1983, QSLRcvd: "Y"}, // grid line: 2 grids (4d) + {Callsign: "G4XXX", Band: "6m", Grid: "IO91AA", QSODate: d1983, LOTWRcvd: "Y"}, // not an FFMA grid + {Callsign: "K5ABC", Band: "2m", Grid: "EM10AA", QSODate: d1983, LOTWRcvd: "Y"}, // wrong band + {Callsign: "K5OLD", Band: "6m", Grid: "EM20AA", QSODate: time.Date(1982, 6, 1, 0, 0, 0, 0, time.UTC), LOTWRcvd: "Y"}, // before 1983 (rule 2) + } + r := Compute([]Def{def}, qsos, map[string][]RefMeta{"FFMA": metas}, nil)[0] + var got []string + for _, rf := range r.Refs { + if rf.Worked { + got = append(got, rf.Ref) + } + } + sort.Strings(got) + want := []string{"EM00", "FN25", "FN31", "FN32"} + if strings.Join(got, " ") != strings.Join(want, " ") { + t.Fatalf("FFMA worked = %v, want %v", got, want) + } + if r.Worked != len(want) || r.Total != 488 { + t.Errorf("FFMA worked=%d total=%d, want %d / 488", r.Worked, r.Total, len(want)) + } +} + func refCodes(r Result) []string { out := make([]string, 0, len(r.Refs)) for _, rf := range r.Refs { @@ -508,3 +575,23 @@ func TestCatalogSurvivesOneBadFile(t *testing.T) { // Catalog() skips unparseable files rather than returning nil, so the others // still load. (Verified structurally: the loader `continue`s on error.) } + +// Anything OpsLog SHIPS is built-in, whatever the file says. +// +// You create an award, export it (its JSON records builtin:false — it wasn't +// built-in when you wrote it), then drop that same file into the catalog to ship +// it. If we trusted the flag, the award would go out to everyone marked "not +// built-in" and would then silently miss every future catalog correction. Making +// the author remember to flip a flag first is a step nobody can guess — so the +// catalog derives it instead. +func TestCatalogForcesBuiltin(t *testing.T) { + for _, e := range Catalog() { + if !e.Def.Builtin { + t.Errorf("%s: shipped in the catalog but Builtin=false — it would miss catalog corrections", e.Def.Code) + } + } + // The realistic case: a user-authored award whose JSON says builtin:false. + if len(Catalog()) == 0 { + t.Fatal("empty catalog") + } +} diff --git a/internal/award/catalog/ffma.json b/internal/award/catalog/ffma.json new file mode 100644 index 0000000..c49ea68 --- /dev/null +++ b/internal/award/catalog/ffma.json @@ -0,0 +1,4427 @@ +{ + "def": { + "code": "FFMA", + "name": "Fred Fish Memorial Award", + "description": "All 488 Maidenhead grid squares in the 48 contiguous United States, on 6 metres. Named after Fred Fish, W5FF (SK), the first amateur to work and confirm them all.", + "valid": true, + "protected": true, + "url": "https://www.arrl.org/ffma", + "valid_from": "1983-01-01", + "valid_to": "9999-01-30", + "ref_display": "both", + "type": "QSOFIELDS", + "field": "grid4", + "match_by": "code", + "exact_match": true, + "pattern": "", + "dxcc_filter": null, + "valid_bands": [ + "6m" + ], + "emission": [], + "confirm": [ + "lotw", + "qsl" + ], + "validate": [ + "lotw", + "qsl" + ], + "total": 488, + "builtin": true + }, + "references": [ + { + "code": "CM79", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM79" + }, + { + "code": "CM86", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM86" + }, + { + "code": "CM87", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM87" + }, + { + "code": "CM88", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM88" + }, + { + "code": "CM89", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM89" + }, + { + "code": "CM93", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM93" + }, + { + "code": "CM94", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM94" + }, + { + "code": "CM95", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM95" + }, + { + "code": "CM96", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM96" + }, + { + "code": "CM97", + "name": "California", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM97" + }, + { + "code": "CM98", + "name": "California, Nevada", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM98" + }, + { + "code": "CM99", + "name": "California, Nevada", + "dxcc": 0, + "group": "CM", + "subgrp": "", + "valid": true, + "gridsquare": "CM99" + }, + { + "code": "CN70", + "name": "California", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN70" + }, + { + "code": "CN71", + "name": "California, Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN71" + }, + { + "code": "CN72", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN72" + }, + { + "code": "CN73", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN73" + }, + { + "code": "CN74", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN74" + }, + { + "code": "CN75", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN75" + }, + { + "code": "CN76", + "name": "Oregon, Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN76" + }, + { + "code": "CN77", + "name": "Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN77" + }, + { + "code": "CN78", + "name": "Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN78" + }, + { + "code": "CN80", + "name": "California", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN80" + }, + { + "code": "CN81", + "name": "California, Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN81" + }, + { + "code": "CN82", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN82" + }, + { + "code": "CN83", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN83" + }, + { + "code": "CN84", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN84" + }, + { + "code": "CN85", + "name": "Oregon, Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN85" + }, + { + "code": "CN86", + "name": "Oregon, Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN86" + }, + { + "code": "CN87", + "name": "Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN87" + }, + { + "code": "CN88", + "name": "Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN88" + }, + { + "code": "CN90", + "name": "California, Nevada", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN90" + }, + { + "code": "CN91", + "name": "California, Nevada, Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN91" + }, + { + "code": "CN92", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN92" + }, + { + "code": "CN93", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN93" + }, + { + "code": "CN94", + "name": "Oregon", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN94" + }, + { + "code": "CN95", + "name": "Oregon, Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN95" + }, + { + "code": "CN96", + "name": "Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN96" + }, + { + "code": "CN97", + "name": "Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN97" + }, + { + "code": "CN98", + "name": "Washington", + "dxcc": 0, + "group": "CN", + "subgrp": "", + "valid": true, + "gridsquare": "CN98" + }, + { + "code": "DL79", + "name": "Texas", + "dxcc": 0, + "group": "DL", + "subgrp": "", + "valid": true, + "gridsquare": "DL79" + }, + { + "code": "DL88", + "name": "Texas", + "dxcc": 0, + "group": "DL", + "subgrp": "", + "valid": true, + "gridsquare": "DL88" + }, + { + "code": "DL89", + "name": "Texas", + "dxcc": 0, + "group": "DL", + "subgrp": "", + "valid": true, + "gridsquare": "DL89" + }, + { + "code": "DL98", + "name": "Texas", + "dxcc": 0, + "group": "DL", + "subgrp": "", + "valid": true, + "gridsquare": "DL98" + }, + { + "code": "DL99", + "name": "Texas", + "dxcc": 0, + "group": "DL", + "subgrp": "", + "valid": true, + "gridsquare": "DL99" + }, + { + "code": "DM02", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM02" + }, + { + "code": "DM03", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM03" + }, + { + "code": "DM04", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM04" + }, + { + "code": "DM05", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM05" + }, + { + "code": "DM06", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM06" + }, + { + "code": "DM07", + "name": "California, Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM07" + }, + { + "code": "DM08", + "name": "California, Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM08" + }, + { + "code": "DM09", + "name": "Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM09" + }, + { + "code": "DM12", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM12" + }, + { + "code": "DM13", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM13" + }, + { + "code": "DM14", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM14" + }, + { + "code": "DM15", + "name": "California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM15" + }, + { + "code": "DM16", + "name": "California, Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM16" + }, + { + "code": "DM17", + "name": "California, Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM17" + }, + { + "code": "DM18", + "name": "Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM18" + }, + { + "code": "DM19", + "name": "Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM19" + }, + { + "code": "DM22", + "name": "Arizona, California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM22" + }, + { + "code": "DM23", + "name": "Arizona, California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM23" + }, + { + "code": "DM24", + "name": "Arizona, California", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM24" + }, + { + "code": "DM25", + "name": "Arizona, California, Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM25" + }, + { + "code": "DM26", + "name": "Arizona, California, Nevada", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM26" + }, + { + "code": "DM27", + "name": "Arizona, Nevada, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM27" + }, + { + "code": "DM28", + "name": "Nevada, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM28" + }, + { + "code": "DM29", + "name": "Nevada, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM29" + }, + { + "code": "DM31", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM31" + }, + { + "code": "DM32", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM32" + }, + { + "code": "DM33", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM33" + }, + { + "code": "DM34", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM34" + }, + { + "code": "DM35", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM35" + }, + { + "code": "DM36", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM36" + }, + { + "code": "DM37", + "name": "Arizona, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM37" + }, + { + "code": "DM38", + "name": "Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM38" + }, + { + "code": "DM39", + "name": "Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM39" + }, + { + "code": "DM41", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM41" + }, + { + "code": "DM42", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM42" + }, + { + "code": "DM43", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM43" + }, + { + "code": "DM44", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM44" + }, + { + "code": "DM45", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM45" + }, + { + "code": "DM46", + "name": "Arizona", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM46" + }, + { + "code": "DM47", + "name": "Arizona, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM47" + }, + { + "code": "DM48", + "name": "Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM48" + }, + { + "code": "DM49", + "name": "Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM49" + }, + { + "code": "DM51", + "name": "Arizona, New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM51" + }, + { + "code": "DM52", + "name": "Arizona, New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM52" + }, + { + "code": "DM53", + "name": "Arizona, New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM53" + }, + { + "code": "DM54", + "name": "Arizona, New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM54" + }, + { + "code": "DM55", + "name": "Arizona, New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM55" + }, + { + "code": "DM56", + "name": "Arizona, Colorado, New Mexico, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM56" + }, + { + "code": "DM57", + "name": "Arizona, Colorado, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM57" + }, + { + "code": "DM58", + "name": "Colorado, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM58" + }, + { + "code": "DM59", + "name": "Colorado, Utah", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM59" + }, + { + "code": "DM61", + "name": "New Mexico, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM61" + }, + { + "code": "DM62", + "name": "New Mexico, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM62" + }, + { + "code": "DM63", + "name": "New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM63" + }, + { + "code": "DM64", + "name": "New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM64" + }, + { + "code": "DM65", + "name": "New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM65" + }, + { + "code": "DM66", + "name": "Colorado, New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM66" + }, + { + "code": "DM67", + "name": "Colorado", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM67" + }, + { + "code": "DM68", + "name": "Colorado", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM68" + }, + { + "code": "DM69", + "name": "Colorado", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM69" + }, + { + "code": "DM70", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM70" + }, + { + "code": "DM71", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM71" + }, + { + "code": "DM72", + "name": "New Mexico, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM72" + }, + { + "code": "DM73", + "name": "New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM73" + }, + { + "code": "DM74", + "name": "New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM74" + }, + { + "code": "DM75", + "name": "New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM75" + }, + { + "code": "DM76", + "name": "Colorado, New Mexico", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM76" + }, + { + "code": "DM77", + "name": "Colorado", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM77" + }, + { + "code": "DM78", + "name": "Colorado", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM78" + }, + { + "code": "DM79", + "name": "Colorado", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM79" + }, + { + "code": "DM80", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM80" + }, + { + "code": "DM81", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM81" + }, + { + "code": "DM82", + "name": "New Mexico, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM82" + }, + { + "code": "DM83", + "name": "New Mexico, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM83" + }, + { + "code": "DM84", + "name": "New Mexico, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM84" + }, + { + "code": "DM85", + "name": "New Mexico, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM85" + }, + { + "code": "DM86", + "name": "Colorado, Kansas, New Mexico, Oklahoma, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM86" + }, + { + "code": "DM87", + "name": "Colorado, Kansas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM87" + }, + { + "code": "DM88", + "name": "Colorado, Kansas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM88" + }, + { + "code": "DM89", + "name": "Colorado, Kansas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM89" + }, + { + "code": "DM90", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM90" + }, + { + "code": "DM91", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM91" + }, + { + "code": "DM92", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM92" + }, + { + "code": "DM93", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM93" + }, + { + "code": "DM94", + "name": "Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM94" + }, + { + "code": "DM95", + "name": "Oklahoma, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM95" + }, + { + "code": "DM96", + "name": "Kansas, Oklahoma, Texas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM96" + }, + { + "code": "DM97", + "name": "Kansas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM97" + }, + { + "code": "DM98", + "name": "Kansas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM98" + }, + { + "code": "DM99", + "name": "Kansas", + "dxcc": 0, + "group": "DM", + "subgrp": "", + "valid": true, + "gridsquare": "DM99" + }, + { + "code": "DN00", + "name": "Nevada", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN00" + }, + { + "code": "DN01", + "name": "Nevada, Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN01" + }, + { + "code": "DN02", + "name": "Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN02" + }, + { + "code": "DN03", + "name": "Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN03" + }, + { + "code": "DN04", + "name": "Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN04" + }, + { + "code": "DN05", + "name": "Oregon, Washington", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN05" + }, + { + "code": "DN06", + "name": "Oregon, Washington", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN06" + }, + { + "code": "DN07", + "name": "Washington", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN07" + }, + { + "code": "DN08", + "name": "Washington", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN08" + }, + { + "code": "DN10", + "name": "Nevada", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN10" + }, + { + "code": "DN11", + "name": "Idaho, Nevada, Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN11" + }, + { + "code": "DN12", + "name": "Idaho, Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN12" + }, + { + "code": "DN13", + "name": "Idaho, Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN13" + }, + { + "code": "DN14", + "name": "Idaho, Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN14" + }, + { + "code": "DN15", + "name": "Idaho, Oregon", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN15" + }, + { + "code": "DN16", + "name": "Idaho, Oregon, Washington", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN16" + }, + { + "code": "DN17", + "name": "Idaho, Montana, Washington", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN17" + }, + { + "code": "DN18", + "name": "Idaho, Montana, Washington", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN18" + }, + { + "code": "DN20", + "name": "Nevada, Utah", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN20" + }, + { + "code": "DN21", + "name": "Idaho, Nevada, Utah", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN21" + }, + { + "code": "DN22", + "name": "Idaho, Nevada, Utah", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN22" + }, + { + "code": "DN23", + "name": "Idaho", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN23" + }, + { + "code": "DN24", + "name": "Idaho", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN24" + }, + { + "code": "DN25", + "name": "Idaho, Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN25" + }, + { + "code": "DN26", + "name": "Idaho, Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN26" + }, + { + "code": "DN27", + "name": "Idaho, Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN27" + }, + { + "code": "DN28", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN28" + }, + { + "code": "DN30", + "name": "Utah", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN30" + }, + { + "code": "DN31", + "name": "Idaho, Utah", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN31" + }, + { + "code": "DN32", + "name": "Idaho, Utah", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN32" + }, + { + "code": "DN33", + "name": "Idaho", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN33" + }, + { + "code": "DN34", + "name": "Idaho, Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN34" + }, + { + "code": "DN35", + "name": "Idaho, Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN35" + }, + { + "code": "DN36", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN36" + }, + { + "code": "DN37", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN37" + }, + { + "code": "DN38", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN38" + }, + { + "code": "DN40", + "name": "Utah, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN40" + }, + { + "code": "DN41", + "name": "Idaho, Utah, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN41" + }, + { + "code": "DN42", + "name": "Idaho, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN42" + }, + { + "code": "DN43", + "name": "Idaho, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN43" + }, + { + "code": "DN44", + "name": "Idaho, Montana, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN44" + }, + { + "code": "DN45", + "name": "Montana, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN45" + }, + { + "code": "DN46", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN46" + }, + { + "code": "DN47", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN47" + }, + { + "code": "DN48", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN48" + }, + { + "code": "DN50", + "name": "Colorado, Utah, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN50" + }, + { + "code": "DN51", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN51" + }, + { + "code": "DN52", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN52" + }, + { + "code": "DN53", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN53" + }, + { + "code": "DN54", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN54" + }, + { + "code": "DN55", + "name": "Montana, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN55" + }, + { + "code": "DN56", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN56" + }, + { + "code": "DN57", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN57" + }, + { + "code": "DN58", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN58" + }, + { + "code": "DN60", + "name": "Colorado, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN60" + }, + { + "code": "DN61", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN61" + }, + { + "code": "DN62", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN62" + }, + { + "code": "DN63", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN63" + }, + { + "code": "DN64", + "name": "Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN64" + }, + { + "code": "DN65", + "name": "Montana, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN65" + }, + { + "code": "DN66", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN66" + }, + { + "code": "DN67", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN67" + }, + { + "code": "DN68", + "name": "Montana", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN68" + }, + { + "code": "DN70", + "name": "Colorado, Nebraska, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN70" + }, + { + "code": "DN71", + "name": "Nebraska, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN71" + }, + { + "code": "DN72", + "name": "Nebraska, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN72" + }, + { + "code": "DN73", + "name": "Nebraska, South Dakota, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN73" + }, + { + "code": "DN74", + "name": "Montana, South Dakota, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN74" + }, + { + "code": "DN75", + "name": "Montana, North Dakota, South Dakota, Wyoming", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN75" + }, + { + "code": "DN76", + "name": "Montana, North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN76" + }, + { + "code": "DN77", + "name": "Montana, North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN77" + }, + { + "code": "DN78", + "name": "Montana, North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN78" + }, + { + "code": "DN80", + "name": "Colorado, Kansas, Nebraska", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN80" + }, + { + "code": "DN81", + "name": "Nebraska", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN81" + }, + { + "code": "DN82", + "name": "Nebraska", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN82" + }, + { + "code": "DN83", + "name": "Nebraska, South Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN83" + }, + { + "code": "DN84", + "name": "South Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN84" + }, + { + "code": "DN85", + "name": "North Dakota, South Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN85" + }, + { + "code": "DN86", + "name": "North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN86" + }, + { + "code": "DN87", + "name": "North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN87" + }, + { + "code": "DN88", + "name": "North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN88" + }, + { + "code": "DN90", + "name": "Kansas, Nebraska", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN90" + }, + { + "code": "DN91", + "name": "Nebraska", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN91" + }, + { + "code": "DN92", + "name": "Nebraska", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN92" + }, + { + "code": "DN93", + "name": "Nebraska, South Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN93" + }, + { + "code": "DN94", + "name": "South Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN94" + }, + { + "code": "DN95", + "name": "North Dakota, South Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN95" + }, + { + "code": "DN96", + "name": "North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN96" + }, + { + "code": "DN97", + "name": "North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN97" + }, + { + "code": "DN98", + "name": "North Dakota", + "dxcc": 0, + "group": "DN", + "subgrp": "", + "valid": true, + "gridsquare": "DN98" + }, + { + "code": "EL06", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL06" + }, + { + "code": "EL07", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL07" + }, + { + "code": "EL08", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL08" + }, + { + "code": "EL09", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL09" + }, + { + "code": "EL15", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL15" + }, + { + "code": "EL16", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL16" + }, + { + "code": "EL17", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL17" + }, + { + "code": "EL18", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL18" + }, + { + "code": "EL19", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL19" + }, + { + "code": "EL28", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL28" + }, + { + "code": "EL29", + "name": "Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL29" + }, + { + "code": "EL39", + "name": "Louisiana, Texas", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL39" + }, + { + "code": "EL49", + "name": "Louisiana", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL49" + }, + { + "code": "EL58", + "name": "Louisiana", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL58" + }, + { + "code": "EL59", + "name": "Louisiana", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL59" + }, + { + "code": "EL79", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL79" + }, + { + "code": "EL84", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL84" + }, + { + "code": "EL86", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL86" + }, + { + "code": "EL87", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL87" + }, + { + "code": "EL88", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL88" + }, + { + "code": "EL89", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL89" + }, + { + "code": "EL94", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL94" + }, + { + "code": "EL95", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL95" + }, + { + "code": "EL96", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL96" + }, + { + "code": "EL97", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL97" + }, + { + "code": "EL98", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL98" + }, + { + "code": "EL99", + "name": "Florida", + "dxcc": 0, + "group": "EL", + "subgrp": "", + "valid": true, + "gridsquare": "EL99" + }, + { + "code": "EM00", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM00" + }, + { + "code": "EM01", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM01" + }, + { + "code": "EM02", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM02" + }, + { + "code": "EM03", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM03" + }, + { + "code": "EM04", + "name": "Oklahoma, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM04" + }, + { + "code": "EM05", + "name": "Oklahoma, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM05" + }, + { + "code": "EM06", + "name": "Kansas, Oklahoma", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM06" + }, + { + "code": "EM07", + "name": "Kansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM07" + }, + { + "code": "EM08", + "name": "Kansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM08" + }, + { + "code": "EM09", + "name": "Kansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM09" + }, + { + "code": "EM10", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM10" + }, + { + "code": "EM11", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM11" + }, + { + "code": "EM12", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM12" + }, + { + "code": "EM13", + "name": "Oklahoma, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM13" + }, + { + "code": "EM14", + "name": "Oklahoma, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM14" + }, + { + "code": "EM15", + "name": "Oklahoma", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM15" + }, + { + "code": "EM16", + "name": "Kansas, Oklahoma", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM16" + }, + { + "code": "EM17", + "name": "Kansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM17" + }, + { + "code": "EM18", + "name": "Kansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM18" + }, + { + "code": "EM19", + "name": "Kansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM19" + }, + { + "code": "EM20", + "name": "Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM20" + }, + { + "code": "EM21", + "name": "Louisiana, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM21" + }, + { + "code": "EM22", + "name": "Louisiana, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM22" + }, + { + "code": "EM23", + "name": "Arkansas, Louisiana, Oklahoma, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM23" + }, + { + "code": "EM24", + "name": "Arkansas, Oklahoma", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM24" + }, + { + "code": "EM25", + "name": "Arkansas, Oklahoma", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM25" + }, + { + "code": "EM26", + "name": "Arkansas, Kansas, Missouri, Oklahoma", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM26" + }, + { + "code": "EM27", + "name": "Kansas, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM27" + }, + { + "code": "EM28", + "name": "Kansas, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM28" + }, + { + "code": "EM29", + "name": "Kansas, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM29" + }, + { + "code": "EM30", + "name": "Louisiana, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM30" + }, + { + "code": "EM31", + "name": "Louisiana, Texas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM31" + }, + { + "code": "EM32", + "name": "Louisiana", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM32" + }, + { + "code": "EM33", + "name": "Arkansas, Louisiana", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM33" + }, + { + "code": "EM34", + "name": "Arkansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM34" + }, + { + "code": "EM35", + "name": "Arkansas", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM35" + }, + { + "code": "EM36", + "name": "Arkansas, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM36" + }, + { + "code": "EM37", + "name": "Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM37" + }, + { + "code": "EM38", + "name": "Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM38" + }, + { + "code": "EM39", + "name": "Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM39" + }, + { + "code": "EM40", + "name": "Louisiana", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM40" + }, + { + "code": "EM41", + "name": "Louisiana, Mississippi", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM41" + }, + { + "code": "EM42", + "name": "Louisiana, Mississippi", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM42" + }, + { + "code": "EM43", + "name": "Arkansas, Louisiana, Mississippi", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM43" + }, + { + "code": "EM44", + "name": "Arkansas, Mississippi, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM44" + }, + { + "code": "EM45", + "name": "Arkansas, Mississippi, Missouri, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM45" + }, + { + "code": "EM46", + "name": "Arkansas, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM46" + }, + { + "code": "EM47", + "name": "Illinois, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM47" + }, + { + "code": "EM48", + "name": "Illinois, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM48" + }, + { + "code": "EM49", + "name": "Illinois, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM49" + }, + { + "code": "EM50", + "name": "Alabama, Louisiana, Mississippi", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM50" + }, + { + "code": "EM51", + "name": "Alabama, Louisiana, Mississippi", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM51" + }, + { + "code": "EM52", + "name": "Alabama, Mississippi", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM52" + }, + { + "code": "EM53", + "name": "Alabama, Mississippi", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM53" + }, + { + "code": "EM54", + "name": "Alabama, Mississippi, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM54" + }, + { + "code": "EM55", + "name": "Alabama, Arkansas, Missouri, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM55" + }, + { + "code": "EM56", + "name": "Arkansas, Illinois, Kentucky, Missouri, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM56" + }, + { + "code": "EM57", + "name": "Illinois, Indiana, Kentucky, Missouri", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM57" + }, + { + "code": "EM58", + "name": "Illinois, Indiana", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM58" + }, + { + "code": "EM59", + "name": "Illinois", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM59" + }, + { + "code": "EM60", + "name": "Alabama, Florida", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM60" + }, + { + "code": "EM61", + "name": "Alabama", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM61" + }, + { + "code": "EM62", + "name": "Alabama", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM62" + }, + { + "code": "EM63", + "name": "Alabama", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM63" + }, + { + "code": "EM64", + "name": "Alabama, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM64" + }, + { + "code": "EM65", + "name": "Alabama, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM65" + }, + { + "code": "EM66", + "name": "Kentucky, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM66" + }, + { + "code": "EM67", + "name": "Indiana, Kentucky", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM67" + }, + { + "code": "EM68", + "name": "Illinois, Indiana, Kentucky", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM68" + }, + { + "code": "EM69", + "name": "Illinois, Indiana", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM69" + }, + { + "code": "EM70", + "name": "Alabama, Florida, Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM70" + }, + { + "code": "EM71", + "name": "Alabama, Florida, Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM71" + }, + { + "code": "EM72", + "name": "Alabama, Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM72" + }, + { + "code": "EM73", + "name": "Alabama, Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM73" + }, + { + "code": "EM74", + "name": "Alabama, Georgia, North Carolina, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM74" + }, + { + "code": "EM75", + "name": "North Carolina, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM75" + }, + { + "code": "EM76", + "name": "Kentucky, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM76" + }, + { + "code": "EM77", + "name": "Kentucky", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM77" + }, + { + "code": "EM78", + "name": "Indiana, Kentucky, Ohio", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM78" + }, + { + "code": "EM79", + "name": "Indiana, Kentucky, Ohio", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM79" + }, + { + "code": "EM80", + "name": "Florida, Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM80" + }, + { + "code": "EM81", + "name": "Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM81" + }, + { + "code": "EM82", + "name": "Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM82" + }, + { + "code": "EM83", + "name": "Georgia, South Carolina", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM83" + }, + { + "code": "EM84", + "name": "Georgia, North Carolina, South Carolina", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM84" + }, + { + "code": "EM85", + "name": "Georgia, North Carolina, South Carolina, Tennessee", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM85" + }, + { + "code": "EM86", + "name": "Kentucky, North Carolina, Tennessee, Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM86" + }, + { + "code": "EM87", + "name": "Kentucky, Virginia, West Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM87" + }, + { + "code": "EM88", + "name": "Kentucky, Ohio, West Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM88" + }, + { + "code": "EM89", + "name": "Ohio, West Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM89" + }, + { + "code": "EM90", + "name": "Florida, Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM90" + }, + { + "code": "EM91", + "name": "Georgia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM91" + }, + { + "code": "EM92", + "name": "Georgia, South Carolina", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM92" + }, + { + "code": "EM93", + "name": "Georgia, South Carolina", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM93" + }, + { + "code": "EM94", + "name": "North Carolina, South Carolina", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM94" + }, + { + "code": "EM95", + "name": "North Carolina, South Carolina", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM95" + }, + { + "code": "EM96", + "name": "North Carolina, Tennessee, Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM96" + }, + { + "code": "EM97", + "name": "Kentucky, Virginia, West Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM97" + }, + { + "code": "EM98", + "name": "Ohio, West Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM98" + }, + { + "code": "EM99", + "name": "Ohio, Pennsylvania, West Virginia", + "dxcc": 0, + "group": "EM", + "subgrp": "", + "valid": true, + "gridsquare": "EM99" + }, + { + "code": "EN00", + "name": "Kansas, Nebraska", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN00" + }, + { + "code": "EN01", + "name": "Nebraska", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN01" + }, + { + "code": "EN02", + "name": "Nebraska, South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN02" + }, + { + "code": "EN03", + "name": "Nebraska, South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN03" + }, + { + "code": "EN04", + "name": "South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN04" + }, + { + "code": "EN05", + "name": "North Dakota, South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN05" + }, + { + "code": "EN06", + "name": "North Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN06" + }, + { + "code": "EN07", + "name": "North Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN07" + }, + { + "code": "EN08", + "name": "North Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN08" + }, + { + "code": "EN10", + "name": "Kansas, Nebraska", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN10" + }, + { + "code": "EN11", + "name": "Iowa, Nebraska", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN11" + }, + { + "code": "EN12", + "name": "Iowa, Nebraska, South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN12" + }, + { + "code": "EN13", + "name": "Iowa, Minnesota, South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN13" + }, + { + "code": "EN14", + "name": "Minnesota, South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN14" + }, + { + "code": "EN15", + "name": "Minnesota, North Dakota, South Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN15" + }, + { + "code": "EN16", + "name": "Minnesota, North Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN16" + }, + { + "code": "EN17", + "name": "Minnesota, North Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN17" + }, + { + "code": "EN18", + "name": "Minnesota, North Dakota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN18" + }, + { + "code": "EN20", + "name": "Iowa, Kansas, Missouri, Nebraska", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN20" + }, + { + "code": "EN21", + "name": "Iowa, Nebraska", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN21" + }, + { + "code": "EN22", + "name": "Iowa", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN22" + }, + { + "code": "EN23", + "name": "Iowa, Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN23" + }, + { + "code": "EN24", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN24" + }, + { + "code": "EN25", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN25" + }, + { + "code": "EN26", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN26" + }, + { + "code": "EN27", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN27" + }, + { + "code": "EN28", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN28" + }, + { + "code": "EN29", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN29" + }, + { + "code": "EN30", + "name": "Iowa, Missouri", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN30" + }, + { + "code": "EN31", + "name": "Iowa", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN31" + }, + { + "code": "EN32", + "name": "Iowa", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN32" + }, + { + "code": "EN33", + "name": "Iowa, Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN33" + }, + { + "code": "EN34", + "name": "Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN34" + }, + { + "code": "EN35", + "name": "Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN35" + }, + { + "code": "EN36", + "name": "Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN36" + }, + { + "code": "EN37", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN37" + }, + { + "code": "EN38", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN38" + }, + { + "code": "EN40", + "name": "Illinois, Iowa, Missouri", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN40" + }, + { + "code": "EN41", + "name": "Illinois, Iowa", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN41" + }, + { + "code": "EN42", + "name": "Illinois, Iowa, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN42" + }, + { + "code": "EN43", + "name": "Iowa, Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN43" + }, + { + "code": "EN44", + "name": "Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN44" + }, + { + "code": "EN45", + "name": "Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN45" + }, + { + "code": "EN46", + "name": "Michigan, Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN46" + }, + { + "code": "EN47", + "name": "Michigan, Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN47" + }, + { + "code": "EN48", + "name": "Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN48" + }, + { + "code": "EN50", + "name": "Illinois", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN50" + }, + { + "code": "EN51", + "name": "Illinois", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN51" + }, + { + "code": "EN52", + "name": "Illinois, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN52" + }, + { + "code": "EN53", + "name": "Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN53" + }, + { + "code": "EN54", + "name": "Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN54" + }, + { + "code": "EN55", + "name": "Michigan, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN55" + }, + { + "code": "EN56", + "name": "Michigan, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN56" + }, + { + "code": "EN57", + "name": "Michigan, Minnesota, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN57" + }, + { + "code": "EN58", + "name": "Michigan, Minnesota", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN58" + }, + { + "code": "EN60", + "name": "Illinois, Indiana", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN60" + }, + { + "code": "EN61", + "name": "Illinois, Indiana, Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN61" + }, + { + "code": "EN62", + "name": "Illinois, Michigan, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN62" + }, + { + "code": "EN63", + "name": "Michigan, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN63" + }, + { + "code": "EN64", + "name": "Michigan, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN64" + }, + { + "code": "EN65", + "name": "Michigan, Wisconsin", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN65" + }, + { + "code": "EN66", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN66" + }, + { + "code": "EN67", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN67" + }, + { + "code": "EN70", + "name": "Indiana, Ohio", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN70" + }, + { + "code": "EN71", + "name": "Indiana, Michigan, Ohio", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN71" + }, + { + "code": "EN72", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN72" + }, + { + "code": "EN73", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN73" + }, + { + "code": "EN74", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN74" + }, + { + "code": "EN75", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN75" + }, + { + "code": "EN76", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN76" + }, + { + "code": "EN80", + "name": "Ohio", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN80" + }, + { + "code": "EN81", + "name": "Michigan, Ohio", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN81" + }, + { + "code": "EN82", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN82" + }, + { + "code": "EN83", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN83" + }, + { + "code": "EN84", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN84" + }, + { + "code": "EN85", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN85" + }, + { + "code": "EN86", + "name": "Michigan", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN86" + }, + { + "code": "EN90", + "name": "Ohio, Pennsylvania, West Virginia", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN90" + }, + { + "code": "EN91", + "name": "Ohio, Pennsylvania", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN91" + }, + { + "code": "EN92", + "name": "Ohio, Pennsylvania", + "dxcc": 0, + "group": "EN", + "subgrp": "", + "valid": true, + "gridsquare": "EN92" + }, + { + "code": "FM02", + "name": "South Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM02" + }, + { + "code": "FM03", + "name": "North Carolina, South Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM03" + }, + { + "code": "FM04", + "name": "North Carolina, South Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM04" + }, + { + "code": "FM05", + "name": "North Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM05" + }, + { + "code": "FM06", + "name": "North Carolina, Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM06" + }, + { + "code": "FM07", + "name": "Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM07" + }, + { + "code": "FM08", + "name": "Virginia, West Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM08" + }, + { + "code": "FM09", + "name": "Maryland, Pennsylvania, Virginia, West Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM09" + }, + { + "code": "FM13", + "name": "North Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM13" + }, + { + "code": "FM14", + "name": "North Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM14" + }, + { + "code": "FM15", + "name": "North Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM15" + }, + { + "code": "FM16", + "name": "North Carolina, Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM16" + }, + { + "code": "FM17", + "name": "Maryland, Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM17" + }, + { + "code": "FM18", + "name": "District of Columbia, Maryland, Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM18" + }, + { + "code": "FM19", + "name": "Maryland, Pennsylvania, Virginia, West Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM19" + }, + { + "code": "FM25", + "name": "North Carolina", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM25" + }, + { + "code": "FM26", + "name": "North Carolina, Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM26" + }, + { + "code": "FM27", + "name": "Maryland, Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM27" + }, + { + "code": "FM28", + "name": "Delaware, Maryland, New Jersey, Virginia", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM28" + }, + { + "code": "FM29", + "name": "Delaware, Maryland, New Jersey, Pennsylvania", + "dxcc": 0, + "group": "FM", + "subgrp": "", + "valid": true, + "gridsquare": "FM29" + }, + { + "code": "FN00", + "name": "Pennsylvania", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN00" + }, + { + "code": "FN01", + "name": "New York, Pennsylvania", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN01" + }, + { + "code": "FN02", + "name": "New York, Pennsylvania", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN02" + }, + { + "code": "FN03", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN03" + }, + { + "code": "FN10", + "name": "Pennsylvania", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN10" + }, + { + "code": "FN11", + "name": "New York, Pennsylvania", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN11" + }, + { + "code": "FN12", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN12" + }, + { + "code": "FN13", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN13" + }, + { + "code": "FN14", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN14" + }, + { + "code": "FN20", + "name": "New Jersey, New York, Pennsylvania", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN20" + }, + { + "code": "FN21", + "name": "New Jersey, New York, Pennsylvania", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN21" + }, + { + "code": "FN22", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN22" + }, + { + "code": "FN23", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN23" + }, + { + "code": "FN24", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN24" + }, + { + "code": "FN25", + "name": "New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN25" + }, + { + "code": "FN30", + "name": "New Jersey, New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN30" + }, + { + "code": "FN31", + "name": "Connecticut, New Jersey, New York", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN31" + }, + { + "code": "FN32", + "name": "Connecticut, Massachusetts, New Hampshire, New York, Vermont", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN32" + }, + { + "code": "FN33", + "name": "New Hampshire, New York, Vermont", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN33" + }, + { + "code": "FN34", + "name": "New Hampshire, New York, Vermont", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN34" + }, + { + "code": "FN35", + "name": "New York, Vermont", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN35" + }, + { + "code": "FN41", + "name": "Connecticut, Massachusetts, New York, Rhode Island", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN41" + }, + { + "code": "FN42", + "name": "Connecticut, Massachusetts, New Hampshire, Rhode Island", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN42" + }, + { + "code": "FN43", + "name": "Maine, New Hampshire", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN43" + }, + { + "code": "FN44", + "name": "Maine, New Hampshire, Vermont", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN44" + }, + { + "code": "FN45", + "name": "Maine, New Hampshire, Vermont", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN45" + }, + { + "code": "FN46", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN46" + }, + { + "code": "FN51", + "name": "Massachusetts", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN51" + }, + { + "code": "FN53", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN53" + }, + { + "code": "FN54", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN54" + }, + { + "code": "FN55", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN55" + }, + { + "code": "FN56", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN56" + }, + { + "code": "FN57", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN57" + }, + { + "code": "FN64", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN64" + }, + { + "code": "FN65", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN65" + }, + { + "code": "FN66", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN66" + }, + { + "code": "FN67", + "name": "Maine", + "dxcc": 0, + "group": "FN", + "subgrp": "", + "valid": true, + "gridsquare": "FN67" + } + ] +} diff --git a/internal/award/catalog/rac.json b/internal/award/catalog/rac.json new file mode 100644 index 0000000..ed30d71 --- /dev/null +++ b/internal/award/catalog/rac.json @@ -0,0 +1,156 @@ +{ + "version": 1, + "exported_at": "2026-07-13T17:00:44Z", + "awards": [ + { + "def": { + "code": "RAC", + "name": "RAC Canadian Provinces", + "description": "RAC Canadian Provinces", + "valid": true, + "protected": true, + "url": "https://www.rac.ca/canadaward/", + "valid_from": "1977-01-07", + "ref_display": "name", + "type": "QSOFIELDS", + "field": "state", + "match_by": "code", + "pattern": "", + "or_rules": [ + { + "field": "qth", + "match_by": "description" + }, + { + "field": "address", + "match_by": "description" + } + ], + "dxcc_filter": [ + 1 + ], + "emission": [ + "CW", + "PHONE", + "DIGITAL" + ], + "confirm": [ + "lotw", + "qsl" + ], + "validate": [ + "lotw", + "qsl" + ], + "total": 0, + "builtin": true + }, + "references": [ + { + "code": "AB", + "name": "Alberta", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "BC", + "name": "British Columbia", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "MB", + "name": "Manitoba", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "NB", + "name": "New Brunswick", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "NL", + "name": "Newfoundland and Labrador", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "NS", + "name": "Nova Scotia", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "NT", + "name": "Northwest Territories", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "NU", + "name": "Nunavut", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "ON", + "name": "Ontario", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "PE", + "name": "Prince Edward Island", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "QC", + "name": "Quebec", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "SK", + "name": "Saskatchewan", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + }, + { + "code": "YT", + "name": "Yukon", + "dxcc": 0, + "group": "", + "subgrp": "", + "valid": true + } + ] + } + ] +} \ No newline at end of file diff --git a/internal/award/catalog/vucc.json b/internal/award/catalog/vucc.json new file mode 100644 index 0000000..a665112 --- /dev/null +++ b/internal/award/catalog/vucc.json @@ -0,0 +1,50 @@ +{ + "version": 1, + "exported_at": "2026-07-13T17:00:44Z", + "awards": [ + { + "def": { + "code": "VUCC", + "name": "VHF/UHF Century Club", + "description": "VHF/UHF Century Club", + "valid": true, + "protected": true, + "url": "https://www.arrl.org/files/file/Awards%20Application%20Forms/VUCCRULE1a.pdf", + "valid_from": "1970-01-01", + "valid_to": "9999-01-30", + "type": "QSOFIELDS", + "field": "grid4", + "match_by": "code", + "exact_match": true, + "pattern": "", + "dynamic": true, + "dxcc_filter": null, + "valid_bands": [ + "6m", + "4m", + "2m", + "70cm", + "23cm", + "13cm", + "1.25m" + ], + "emission": [ + "CW", + "PHONE", + "DIGITAL" + ], + "confirm": [ + "lotw", + "qsl" + ], + "validate": [ + "lotw", + "qsl" + ], + "total": 0, + "builtin": true + }, + "references": null + } + ] +} \ No newline at end of file