package awardref

// One-IOTA DXCC entities: a table of the entities that ARE a single IOTA group.
//
// WHY IT EXISTS. QRZ.com carries <iota> for an operator who fills it in, and
// most do not. But for a great many entities the island reference follows from
// the entity alone — a station in Ascension Island is on AF-003, there is
// nothing else it could be — and the entity is known for every callsign, from
// cty.dat, without any callbook at all. So the reference can be filled for an
// operator with no QRZ subscription, on a station that has never touched a
// callbook, before the contact is logged.
//
// Only entities that map to EXACTLY ONE reference are here. France is not: a
// French station is usually on the mainland and on no island at all, and
// guessing would put a reference on hundreds of contacts that earn none.
//
// SOURCE: dxcc_matches_one_iota.json from the IOTA programme
// (www.iota-world.org/islands-on-the-air/downloads/), fetched 2026-08-17,
// 99 entities. It changes only when an entity appears or IOTA re-maps one, so
// it is a table here rather than a download: it then works offline, which is
// where a portable station usually is. To refresh, fetch that file again and
// re-emit this map, sorted by entity number.
//
// Entity names are comments only, joined from internal/dxcc for readability.
var iotaByDXCC = map[int]string{
	5:   "EU-002", // Aland Islands
	10:  "AF-002", // Amsterdam & St. Paul Is.
	12:  "NA-022", // Anguilla
	17:  "NA-020", // Aves Island
	20:  "OC-089", // Baker & Howland Islands
	21:  "EU-004", // Balearic Islands
	24:  "AN-002", // Bouvet
	29:  "AF-004", // Canary Islands
	34:  "OC-038", // Chatham Islands
	35:  "OC-002", // Christmas Island
	36:  "NA-011", // Clipperton Island
	37:  "NA-012", // Cocos Island
	38:  "OC-003", // Cocos (Keeling) Islands
	41:  "AF-008", // Crozet Island
	43:  "NA-095", // Desecheo Island
	45:  "EU-001", // Dodecanese
	62:  "NA-021", // Barbados
	64:  "NA-005", // Bermuda
	65:  "NA-023", // British Virgin Islands
	69:  "NA-016", // Cayman Islands
	71:  "SA-004", // Galapagos Islands
	82:  "NA-097", // Jamaica
	84:  "NA-107", // Martinique
	91:  "SA-036", // Aruba
	94:  "NA-100", // Antigua & Barbuda
	95:  "NA-101", // Dominica
	96:  "NA-103", // Montserrat
	97:  "NA-108", // St. Lucia
	99:  "AF-011", // Glorioso Islands
	103: "OC-026", // Guam
	105: "NA-015", // Guantanamo Bay
	106: "EU-114", // Guernsey
	111: "AN-003", // Heard Island
	114: "EU-116", // Isle Of Man
	118: "EU-022", // Jan Mayen
	123: "OC-023", // Johnston Island
	131: "AF-048", // Kerguelen Islands
	133: "OC-039", // Kermadec Islands
	138: "OC-020", // Kure Island
	141: "SA-002", // Falkland Islands
	147: "OC-004", // Lord Howe Island
	153: "AN-005", // Macquarie Island
	157: "OC-031", // Nauru
	159: "AS-013", // Maldives
	161: "SA-007", // Malpelo Island
	165: "AF-049", // Mauritius
	166: "OC-086", // Mariana Islands
	167: "EU-053", // Market Reef
	169: "AF-027", // Mayotte
	171: "OC-072", // Mellish Reef
	174: "OC-030", // Midway Island
	177: "OC-073", // Minami Torishima
	182: "NA-098", // Navassa Island
	188: "OC-040", // Niue
	189: "OC-005", // Norfolk Island
	190: "OC-097", // Samoa
	195: "AF-039", // Annobon Island
	199: "AN-004", // Peter 1 Island
	201: "AF-021", // Pr. Edward & Marion Is.
	205: "AF-003", // Ascension Island
	207: "AF-017", // Rodriguez Island
	211: "NA-063", // Sable Island
	217: "SA-013", // San Felix & San Ambrosio
	222: "EU-018", // Faroe Islands
	238: "AN-008", // South Orkney Islands
	240: "AN-009", // South Sandwich Islands
	241: "AN-010", // South Shetland Islands
	247: "AS-051", // Spratly Islands
	249: "NA-104", // St. Kitts & Nevis
	250: "AF-022", // St. Helena
	252: "NA-094", // St. Paul Island
	253: "SA-014", // St. Peter & St. Paul
	257: "EU-023", // Malta
	270: "OC-048", // Tokelau Islands
	273: "SA-010", // Trindade & Martim Vaz
	276: "AF-031", // Tromelin Island
	277: "NA-032", // St. Pierre & Miquelon
	282: "OC-015", // Tuvalu
	283: "AS-004", // Uk Base Areas On Cyprus
	285: "NA-106", // Us Virgin Islands
	297: "OC-053", // Wake Island
	301: "OC-017", // Western Kiribati
	303: "OC-007", // Willis Island
	381: "AS-019", // Singapore
	411: "AF-007", // Comoros
	453: "AF-016", // Reunion Island
	460: "OC-060", // Rotuma Island
	489: "OC-112", // Conway Reef
	490: "OC-018", // Banaba Island
	505: "AS-110", // Pratas Island
	506: "AS-116", // Scarborough Reef
	509: "OC-027", // Marquesas Islands
	512: "OC-176", // Chesterfield Islands
	513: "OC-182", // Ducie Island
	515: "OC-200", // Swains Island
	516: "NA-146", // St. Barthelemy
	517: "SA-099", // Curacao
	519: "NA-145", // Saba & St. Eustatius
	520: "SA-006", // Bonaire
}

// IOTAForDXCC returns the island reference of a DXCC entity that is a single
// IOTA group, or "" for an entity that holds several islands or none.
func IOTAForDXCC(dxcc int) string { return iotaByDXCC[dxcc] }
