Skip to main content

cf_colo_hint/
generated.rs

1// This file is auto-generated by codegen.py
2// Do not edit manually - changes will be overwritten
3
4use core::fmt;
5
6/// Durable Objects location hint.
7///
8/// These are the supported regions for Durable Objects location hints.
9/// Note: Location hints are best-effort and not guaranteed.
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11#[non_exhaustive]
12pub enum LocationHint {
13    /// Africa
14    Afr,
15    /// Asia-Pacific
16    Apac,
17    /// Eastern Europe
18    EEur,
19    /// Eastern North America
20    ENam,
21    /// Middle East
22    Me,
23    /// Oceania
24    Oc,
25    /// South America
26    Sam,
27    /// Western Europe
28    WEur,
29    /// Western North America
30    WNam,
31}
32
33impl LocationHint {
34    /// Returns the location hint code as used in the Cloudflare API.
35    #[inline]
36    pub const fn as_str(&self) -> &'static str {
37        match self {
38            Self::Afr => "afr",
39            Self::Apac => "apac",
40            Self::EEur => "eeur",
41            Self::ENam => "enam",
42            Self::Me => "me",
43            Self::Oc => "oc",
44            Self::Sam => "sam",
45            Self::WEur => "weur",
46            Self::WNam => "wnam",
47        }
48    }
49
50    /// Returns the human-readable name of the location.
51    #[inline]
52    pub const fn name(&self) -> &'static str {
53        match self {
54            Self::Afr => "Africa",
55            Self::Apac => "Asia-Pacific",
56            Self::EEur => "Eastern Europe",
57            Self::ENam => "Eastern North America",
58            Self::Me => "Middle East",
59            Self::Oc => "Oceania",
60            Self::Sam => "South America",
61            Self::WEur => "Western Europe",
62            Self::WNam => "Western North America",
63        }
64    }
65
66    /// Returns all location hints.
67    pub const ALL: &'static [LocationHint] = &[
68        Self::Afr,
69        Self::Apac,
70        Self::EEur,
71        Self::ENam,
72        Self::Me,
73        Self::Oc,
74        Self::Sam,
75        Self::WEur,
76        Self::WNam,
77    ];
78
79    /// Parse a location hint from its string code.
80    pub fn parse(s: &str) -> Option<Self> {
81        match s {
82            "afr" => Some(Self::Afr),
83            "apac" => Some(Self::Apac),
84            "eeur" => Some(Self::EEur),
85            "enam" => Some(Self::ENam),
86            "me" => Some(Self::Me),
87            "oc" => Some(Self::Oc),
88            "sam" => Some(Self::Sam),
89            "weur" => Some(Self::WEur),
90            "wnam" => Some(Self::WNam),
91            _ => None,
92        }
93    }
94}
95
96impl fmt::Display for LocationHint {
97    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
98        f.write_str(self.as_str())
99    }
100}
101
102/// Cloudflare data center (colo) identifier.
103///
104/// Each variant represents a Cloudflare edge location.
105#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
106#[non_exhaustive]
107pub enum Colo {
108    /// Annaba, Algeria
109    AAE,
110    /// Abidjan, Ivory Coast
111    ABJ,
112    /// Albuquerque, NM, United States
113    ABQ,
114    /// Accra, Ghana
115    ACC,
116    /// Xingyi, China
117    ACX,
118    /// Izmir, Turkey
119    ADB,
120    /// Addis Ababa, Ethiopia
121    ADD,
122    /// Adelaide, SA, Australia
123    ADL,
124    /// Agra, India
125    AGR,
126    /// Auckland, New Zealand
127    AKL,
128    /// Aktobe, Kazakhstan
129    AKX,
130    /// Almaty, Kazakhstan
131    ALA,
132    /// Algiers, Algeria
133    ALG,
134    /// Ahmedabad, India
135    AMD,
136    /// Amman, Jordan
137    AMM,
138    /// Amsterdam, Netherlands
139    AMS,
140    /// Anchorage, AK, United States
141    ANC,
142    /// Arica, Chile
143    ARI,
144    /// Stockholm, Sweden
145    ARN,
146    /// Aracatuba, Brazil
147    ARU,
148    /// Yamoussoukro, Ivory Coast
149    ASK,
150    /// Asunción, Paraguay
151    ASU,
152    /// Athens, Greece
153    ATH,
154    /// Atlanta, GA, United States
155    ATL,
156    /// Austin, TX, United States
157    AUS,
158    /// Manama, Bahrain
159    BAH,
160    /// Barranquilla, Colombia
161    BAQ,
162    /// Barcelona, Spain
163    BCN,
164    /// Belgrade, Serbia
165    BEG,
166    /// Belém, Brazil
167    BEL,
168    /// Beirut, Lebanon
169    BEY,
170    /// Bridgetown, Barbados
171    BGI,
172    /// Bangor, ME, United States
173    BGR,
174    /// Baghdad, Iraq
175    BGW,
176    /// Beihai, China
177    BHY,
178    /// Bangkok, Thailand
179    BKK,
180    /// Bangalore, India
181    BLR,
182    /// Nashville, United States
183    BNA,
184    /// Brisbane, QLD, Australia
185    BNE,
186    /// Blumenau, Brazil
187    BNU,
188    /// Bordeaux, France
189    BOD,
190    /// Bogota, Colombia
191    BOG,
192    /// Mumbai, India
193    BOM,
194    /// Boston, MA, United States
195    BOS,
196    /// Brussels, Belgium
197    BRU,
198    /// Brasilia, Brazil
199    BSB,
200    /// Basra, Iraq
201    BSR,
202    /// Bratislava, Slovakia
203    BTS,
204    /// Budapest, Hungary
205    BUD,
206    /// Buffalo, NY, United States
207    BUF,
208    /// Bandar Seri Begawan, Brunei
209    BWN,
210    /// Cairo, Egypt
211    CAI,
212    /// Guangzhou, China
213    CAN,
214    /// Campos dos Goytacazes, Brazil
215    CAW,
216    /// Canberra, ACT, Australia
217    CBR,
218    /// Concepción, Chile
219    CCP,
220    /// Kolkata, India
221    CCU,
222    /// Paris, France
223    CDG,
224    /// Cebu, Philippines
225    CEB,
226    /// Cacador, Brazil
227    CFC,
228    /// Cuiaba, Brazil
229    CGB,
230    /// Changde, China
231    CGD,
232    /// Jakarta, Indonesia
233    CGK,
234    /// Zhengzhou, China
235    CGO,
236    /// Chittagong, Bangladesh
237    CGP,
238    /// Cagayan de Oro, Philippines
239    CGY,
240    /// Christchurch, New Zealand
241    CHC,
242    /// Coimbatore, India
243    CJB,
244    /// Chongqing, China
245    CKG,
246    /// Cleveland, OH, United States
247    CLE,
248    /// Cali, Colombia
249    CLO,
250    /// Charlotte, NC, United States
251    CLT,
252    /// Colombo, Sri Lanka
253    CMB,
254    /// Columbus, OH, United States
255    CMH,
256    /// Belo Horizonte, Brazil
257    CNF,
258    /// Cloud Network Interconnect (CNI)
259    CNI,
260    /// Kannur, India
261    CNN,
262    /// Chiang Mai, Thailand
263    CNX,
264    /// Kochi, India
265    COK,
266    /// Córdoba, Argentina
267    COR,
268    /// Copenhagen, Denmark
269    CPH,
270    /// Cape Town, South Africa
271    CPT,
272    /// Tarlac City, Philippines
273    CRK,
274    /// Changsha, China
275    CSX,
276    /// Chengdu, China
277    CTU,
278    /// Curitiba, Brazil
279    CWB,
280    /// Constantine, Algeria
281    CZL,
282    /// Changzhou, China
283    CZX,
284    /// Dhaka, Bangladesh
285    DAC,
286    /// Da Nang, Vietnam
287    DAD,
288    /// Dar es Salaam, Tanzania
289    DAR,
290    /// New Delhi, India
291    DEL,
292    /// Denver, CO, United States
293    DEN,
294    /// Digital Experience Monitoring (DEX)
295    DEX,
296    /// Dallas, TX, United States
297    DFW,
298    /// Dakar, Senegal
299    DKR,
300    /// Dalian, China
301    DLC,
302    /// Data Loss Prevention (DLP)
303    DLP,
304    /// Moscow, Russia
305    DME,
306    /// Dammam, Saudi Arabia
307    DMM,
308    /// Doha, Qatar
309    DOH,
310    /// Denpasar, Indonesia
311    DPS,
312    /// Detroit, MI, United States
313    DTW,
314    /// Dublin, Ireland
315    DUB,
316    /// Durban, South Africa
317    DUR,
318    /// Düsseldorf, Germany
319    DUS,
320    /// Dubai, United Arab Emirates
321    DXB,
322    /// Kampala, Uganda
323    EBB,
324    /// Erbil, Iraq
325    EBL,
326    /// Yerevan, Armenia
327    EVN,
328    /// Newark, NJ, United States
329    EWR,
330    /// Buenos Aires, Argentina
331    EZE,
332    /// Rome, Italy
333    FCO,
334    /// Kinshasa, DR Congo
335    FIH,
336    /// Florianopolis, Brazil
337    FLN,
338    /// Fuzhou, China
339    FOC,
340    /// Fortaleza, Brazil
341    FOR,
342    /// Frankfurt, Germany
343    FRA,
344    /// Bishkek, Kyrgyzstan
345    FRU,
346    /// Sioux Falls, SD, United States
347    FSD,
348    /// Fukuoka, Japan
349    FUK,
350    /// Foshan, China
351    FUO,
352    /// Gaborone, Botswana
353    GBE,
354    /// Guadalajara, Mexico
355    GDL,
356    /// Georgetown, Guyana
357    GEO,
358    /// Rio de Janeiro, Brazil
359    GIG,
360    /// St. George's, Grenada
361    GND,
362    /// Gothenburg, Sweden
363    GOT,
364    /// São Paulo, Brazil
365    GRU,
366    /// Guatemala City, Guatemala
367    GUA,
368    /// Hagatna, Guam
369    GUM,
370    /// Geneva, Switzerland
371    GVA,
372    /// Baku, Azerbaijan
373    GYD,
374    /// Guayaquil, Ecuador
375    GYE,
376    /// Goiania, Brazil
377    GYN,
378    /// Chengmai, China
379    HAK,
380    /// Hamburg, Germany
381    HAM,
382    /// Hanoi, Vietnam
383    HAN,
384    /// Hobart, Australia
385    HBA,
386    /// Helsinki, Finland
387    HEL,
388    /// Haifa, Israel
389    HFA,
390    /// Shaoxing, China
391    HGH,
392    /// Hong Kong
393    HKG,
394    /// Honolulu, HI, United States
395    HNL,
396    /// Harare, Zimbabwe
397    HRE,
398    /// Hyderabad, India
399    HYD,
400    /// Taizhou, China
401    HYN,
402    /// Ashburn, VA, United States
403    IAD,
404    /// Houston, TX, United States
405    IAH,
406    /// Seoul, South Korea
407    ICN,
408    /// Indianapolis, IN, United States
409    IND,
410    /// Islamabad, Pakistan
411    ISB,
412    /// Istanbul, Turkey
413    IST,
414    /// Sulaymaniyah, Iraq
415    ISU,
416    /// Chandigarh, India
417    IXC,
418    /// Jacksonville, FL, United States
419    JAX,
420    /// Juazeiro do Norte, Brazil
421    JDO,
422    /// Jeddah, Saudi Arabia
423    JED,
424    /// Johor Bahru, Malaysia - (JHB)
425    JHB,
426    /// Djibouti, Djibouti
427    JIB,
428    /// Johannesburg, South Africa
429    JNB,
430    /// Yogyakarta, Indonesia
431    JOG,
432    /// Joinville, Brazil
433    JOI,
434    /// Jiaxing, China
435    JXG,
436    /// Kyiv, Ukraine
437    KBP,
438    /// Kuching, Malaysia
439    KCH,
440    /// Reykjavík, Iceland
441    KEF,
442    /// Kigali, Rwanda
443    KGL,
444    /// Kaohsiung City, Taiwan
445    KHH,
446    /// Karachi, Pakistan
447    KHI,
448    /// Nanchang, China
449    KHN,
450    /// Kingston, Jamaica
451    KIN,
452    /// Chișinău, Moldova
453    KIV,
454    /// Osaka, Japan
455    KIX,
456    /// Krasnoyarsk, Russia
457    KJA,
458    /// Kunming, China
459    KMG,
460    /// Kanpur, India
461    KNU,
462    /// Kathmandu, Nepal
463    KTM,
464    /// Kuala Lumpur, Malaysia
465    KUL,
466    /// Guiyang, China
467    KWE,
468    /// Kuwait City, Kuwait
469    KWI,
470    /// Luanda, Angola
471    LAD,
472    /// Las Vegas, NV, United States
473    LAS,
474    /// Los Angeles, CA, United States
475    LAX,
476    /// Nicosia, Cyprus
477    LCA,
478    /// Saint Petersburg, Russia
479    LED,
480    /// Lahore, Pakistan
481    LHE,
482    /// London, United Kingdom
483    LHR,
484    /// Lima, Peru
485    LIM,
486    /// Lisbon, Portugal
487    LIS,
488    /// Astara, Azerbaijan
489    LLK,
490    /// Lilongwe, Malawi
491    LLW,
492    /// Lagos, Nigeria
493    LOS,
494    /// La Paz, Bolivia
495    LPB,
496    /// Lusaka, Zambia
497    LUN,
498    /// Luxembourg City, Luxembourg
499    LUX,
500    /// Lyon, France
501    LYS,
502    /// Chennai, India
503    MAA,
504    /// Madrid, Spain
505    MAD,
506    /// Manchester, United Kingdom
507    MAN,
508    /// Manaus, Brazil
509    MAO,
510    /// Mombasa, Kenya
511    MBA,
512    /// Kansas City, MO, United States
513    MCI,
514    /// Muscat, Oman
515    MCT,
516    /// Medellín, Colombia
517    MDE,
518    /// Melbourne, VIC, Australia
519    MEL,
520    /// Memphis, TN, United States
521    MEM,
522    /// Mexico City, Mexico
523    MEX,
524    /// Macau
525    MFM,
526    /// Miami, FL, United States
527    MIA,
528    /// Valletta, Malta
529    MLA,
530    /// Male, Maldives
531    MLE,
532    /// Malang, Indonesia
533    MLG,
534    /// Manila, Philippines
535    MNL,
536    /// Maputo, Mozambique
537    MPM,
538    /// Marseille, France
539    MRS,
540    /// Port Louis, Mauritius
541    MRU,
542    /// Minneapolis, MN, United States
543    MSP,
544    /// Minsk, Belarus
545    MSQ,
546    /// Munich, Germany
547    MUC,
548    /// Milan, Italy
549    MXP,
550    /// Nagpur, India
551    NAG,
552    /// Nairobi, Kenya
553    NBO,
554    /// Najaf, Iraq
555    NJF,
556    /// Noumea, New Caledonia
557    NOU,
558    /// Neuquen, Argentina
559    NQN,
560    /// Astana, Kazakhstan
561    NQZ,
562    /// Tokyo, Japan
563    NRT,
564    /// Timbo, Brazil
565    NVT,
566    /// Naha, Japan
567    OKA,
568    /// Oklahoma City, OK, United States
569    OKC,
570    /// Omaha, NE, United States
571    OMA,
572    /// Chicago, IL, United States
573    ORD,
574    /// Norfolk, VA, United States
575    ORF,
576    /// Oran, Algeria
577    ORN,
578    /// Oslo, Norway
579    OSL,
580    /// Bucharest, Romania
581    OTP,
582    /// Ouagadougou, Burkina Faso
583    OUA,
584    /// Patna, India
585    PAT,
586    /// Thimphu, Bhutan
587    PBH,
588    /// Paramaribo, Suriname
589    PBM,
590    /// Portland, OR, United States
591    PDX,
592    /// Perth, WA, Australia
593    PER,
594    /// Philadelphia, United States
595    PHL,
596    /// Phoenix, AZ, United States
597    PHX,
598    /// Pittsburgh, PA, United States
599    PIT,
600    /// Langfang, China
601    PKX,
602    /// Palermo, Italy
603    PMO,
604    /// Palmas, Brazil
605    PMW,
606    /// Phnom Penh, Cambodia
607    PNH,
608    /// Porto Alegre, Brazil
609    POA,
610    /// Port of Spain, Trinidad and Tobago
611    POS,
612    /// Tahiti, French Polynesia
613    PPT,
614    /// Prague, Czech Republic
615    PRG,
616    /// Panama City, Panama
617    PTY,
618    /// Queretaro, MX, Mexico
619    QRO,
620    /// Americana, Brazil
621    QWJ,
622    /// Ribeirao Preto, Brazil
623    RAO,
624    /// Durham, NC, United States
625    RDU,
626    /// Recife, Brazil
627    REC,
628    /// Richmond, VA, United States
629    RIC,
630    /// Riga, Latvia
631    RIX,
632    /// Riyadh, Saudi Arabia
633    RUH,
634    /// Saint-Denis, Réunion
635    RUN,
636    /// San Diego, CA, United States
637    SAN,
638    /// San Pedro Sula, Honduras
639    SAP,
640    /// San Antonio, TX, United States
641    SAT,
642    /// Santiago, Chile
643    SCL,
644    /// Santo Domingo, Dominican Republic
645    SDQ,
646    /// Seattle, WA, United States
647    SEA,
648    /// San Francisco, CA, United States
649    SFO,
650    /// Ho Chi Minh City, Vietnam
651    SGN,
652    /// Shanghai, China
653    SHA,
654    /// Singapore, Singapore
655    SIN,
656    /// San Jose, CA, United States
657    SJC,
658    /// São José dos Campos, Brazil
659    SJK,
660    /// San José, Costa Rica
661    SJO,
662    /// São José do Rio Preto, Brazil
663    SJP,
664    /// San Juan, Puerto Rico
665    SJU,
666    /// Shijiazhuang, China
667    SJW,
668    /// Thessaloniki, Greece
669    SKG,
670    /// Skopje, North Macedonia
671    SKP,
672    /// Salt Lake City, UT, United States
673    SLC,
674    /// Sacramento, CA, United States
675    SMF,
676    /// Sorocaba, Brazil
677    SOD,
678    /// Sofia, Bulgaria
679    SOF,
680    /// Salvador, Brazil
681    SSA,
682    /// Santiago de los Caballeros, Dominican Republic
683    STI,
684    /// St. Louis, MO, United States
685    STL,
686    /// Stuttgart, Germany
687    STR,
688    /// Suva, Fiji
689    SUV,
690    /// Sydney, NSW, Australia
691    SYD,
692    /// Shenzhen, China
693    SZX,
694    /// Qingdao, China
695    TAO,
696    /// Tbilisi, Georgia
697    TBS,
698    /// Tongren, China
699    TEN,
700    /// Tegucigalpa, Honduras
701    TGU,
702    /// Tirana, Albania
703    TIA,
704    /// Tallahassee, FL, United States
705    TLH,
706    /// Tallinn, Estonia
707    TLL,
708    /// Tel Aviv, Israel
709    TLV,
710    /// Zibo, China
711    TNA,
712    /// Antananarivo, Madagascar
713    TNR,
714    /// Tampa, FL, United States
715    TPA,
716    /// Taipei
717    TPE,
718    /// Tunis, Tunisia
719    TUN,
720    /// Berlin, Germany
721    TXL,
722    /// Yangquan, China
723    TYN,
724    /// Uberlandia, Brazil
725    UDI,
726    /// Quito, Ecuador
727    UIO,
728    /// Ulaanbaatar, Mongolia
729    ULN,
730    /// Surat Thani, Thailand
731    URT,
732    /// Campinas, Brazil
733    VCP,
734    /// Vienna, Austria
735    VIE,
736    /// Vitoria, Brazil
737    VIX,
738    /// Vilnius, Lithuania
739    VNO,
740    /// Vientiane, Laos
741    VTE,
742    /// Warsaw, Poland
743    WAW,
744    /// Windhoek, Namibia
745    WDH,
746    /// Wellington, New Zealand
747    WLG,
748    /// Wroclaw, Poland
749    WRO,
750    /// Chapeco, Brazil
751    XAP,
752    /// Xiangyang, China
753    XFN,
754    /// Baoji, China
755    XIY,
756    /// Nasiriyah, Iraq
757    XNH,
758    /// Halifax, Canada
759    YHZ,
760    /// Ottawa, Canada
761    YOW,
762    /// Montréal, QC, Canada
763    YUL,
764    /// Vancouver, BC, Canada
765    YVR,
766    /// Winnipeg, MB, Canada
767    YWG,
768    /// Saskatoon, SK, Canada
769    YXE,
770    /// Calgary, AB, Canada
771    YYC,
772    /// Toronto, ON, Canada
773    YYZ,
774    /// Zagreb, Croatia
775    ZAG,
776    /// Ramallah
777    ZDM,
778    /// Zurich, Switzerland
779    ZRH,
780}
781
782impl Colo {
783    /// Returns the 3-letter IATA code for this colo.
784    #[inline]
785    pub const fn code(&self) -> &'static str {
786        match self {
787            Self::AAE => "AAE",
788            Self::ABJ => "ABJ",
789            Self::ABQ => "ABQ",
790            Self::ACC => "ACC",
791            Self::ACX => "ACX",
792            Self::ADB => "ADB",
793            Self::ADD => "ADD",
794            Self::ADL => "ADL",
795            Self::AGR => "AGR",
796            Self::AKL => "AKL",
797            Self::AKX => "AKX",
798            Self::ALA => "ALA",
799            Self::ALG => "ALG",
800            Self::AMD => "AMD",
801            Self::AMM => "AMM",
802            Self::AMS => "AMS",
803            Self::ANC => "ANC",
804            Self::ARI => "ARI",
805            Self::ARN => "ARN",
806            Self::ARU => "ARU",
807            Self::ASK => "ASK",
808            Self::ASU => "ASU",
809            Self::ATH => "ATH",
810            Self::ATL => "ATL",
811            Self::AUS => "AUS",
812            Self::BAH => "BAH",
813            Self::BAQ => "BAQ",
814            Self::BCN => "BCN",
815            Self::BEG => "BEG",
816            Self::BEL => "BEL",
817            Self::BEY => "BEY",
818            Self::BGI => "BGI",
819            Self::BGR => "BGR",
820            Self::BGW => "BGW",
821            Self::BHY => "BHY",
822            Self::BKK => "BKK",
823            Self::BLR => "BLR",
824            Self::BNA => "BNA",
825            Self::BNE => "BNE",
826            Self::BNU => "BNU",
827            Self::BOD => "BOD",
828            Self::BOG => "BOG",
829            Self::BOM => "BOM",
830            Self::BOS => "BOS",
831            Self::BRU => "BRU",
832            Self::BSB => "BSB",
833            Self::BSR => "BSR",
834            Self::BTS => "BTS",
835            Self::BUD => "BUD",
836            Self::BUF => "BUF",
837            Self::BWN => "BWN",
838            Self::CAI => "CAI",
839            Self::CAN => "CAN",
840            Self::CAW => "CAW",
841            Self::CBR => "CBR",
842            Self::CCP => "CCP",
843            Self::CCU => "CCU",
844            Self::CDG => "CDG",
845            Self::CEB => "CEB",
846            Self::CFC => "CFC",
847            Self::CGB => "CGB",
848            Self::CGD => "CGD",
849            Self::CGK => "CGK",
850            Self::CGO => "CGO",
851            Self::CGP => "CGP",
852            Self::CGY => "CGY",
853            Self::CHC => "CHC",
854            Self::CJB => "CJB",
855            Self::CKG => "CKG",
856            Self::CLE => "CLE",
857            Self::CLO => "CLO",
858            Self::CLT => "CLT",
859            Self::CMB => "CMB",
860            Self::CMH => "CMH",
861            Self::CNF => "CNF",
862            Self::CNI => "CNI",
863            Self::CNN => "CNN",
864            Self::CNX => "CNX",
865            Self::COK => "COK",
866            Self::COR => "COR",
867            Self::CPH => "CPH",
868            Self::CPT => "CPT",
869            Self::CRK => "CRK",
870            Self::CSX => "CSX",
871            Self::CTU => "CTU",
872            Self::CWB => "CWB",
873            Self::CZL => "CZL",
874            Self::CZX => "CZX",
875            Self::DAC => "DAC",
876            Self::DAD => "DAD",
877            Self::DAR => "DAR",
878            Self::DEL => "DEL",
879            Self::DEN => "DEN",
880            Self::DEX => "DEX",
881            Self::DFW => "DFW",
882            Self::DKR => "DKR",
883            Self::DLC => "DLC",
884            Self::DLP => "DLP",
885            Self::DME => "DME",
886            Self::DMM => "DMM",
887            Self::DOH => "DOH",
888            Self::DPS => "DPS",
889            Self::DTW => "DTW",
890            Self::DUB => "DUB",
891            Self::DUR => "DUR",
892            Self::DUS => "DUS",
893            Self::DXB => "DXB",
894            Self::EBB => "EBB",
895            Self::EBL => "EBL",
896            Self::EVN => "EVN",
897            Self::EWR => "EWR",
898            Self::EZE => "EZE",
899            Self::FCO => "FCO",
900            Self::FIH => "FIH",
901            Self::FLN => "FLN",
902            Self::FOC => "FOC",
903            Self::FOR => "FOR",
904            Self::FRA => "FRA",
905            Self::FRU => "FRU",
906            Self::FSD => "FSD",
907            Self::FUK => "FUK",
908            Self::FUO => "FUO",
909            Self::GBE => "GBE",
910            Self::GDL => "GDL",
911            Self::GEO => "GEO",
912            Self::GIG => "GIG",
913            Self::GND => "GND",
914            Self::GOT => "GOT",
915            Self::GRU => "GRU",
916            Self::GUA => "GUA",
917            Self::GUM => "GUM",
918            Self::GVA => "GVA",
919            Self::GYD => "GYD",
920            Self::GYE => "GYE",
921            Self::GYN => "GYN",
922            Self::HAK => "HAK",
923            Self::HAM => "HAM",
924            Self::HAN => "HAN",
925            Self::HBA => "HBA",
926            Self::HEL => "HEL",
927            Self::HFA => "HFA",
928            Self::HGH => "HGH",
929            Self::HKG => "HKG",
930            Self::HNL => "HNL",
931            Self::HRE => "HRE",
932            Self::HYD => "HYD",
933            Self::HYN => "HYN",
934            Self::IAD => "IAD",
935            Self::IAH => "IAH",
936            Self::ICN => "ICN",
937            Self::IND => "IND",
938            Self::ISB => "ISB",
939            Self::IST => "IST",
940            Self::ISU => "ISU",
941            Self::IXC => "IXC",
942            Self::JAX => "JAX",
943            Self::JDO => "JDO",
944            Self::JED => "JED",
945            Self::JHB => "JHB",
946            Self::JIB => "JIB",
947            Self::JNB => "JNB",
948            Self::JOG => "JOG",
949            Self::JOI => "JOI",
950            Self::JXG => "JXG",
951            Self::KBP => "KBP",
952            Self::KCH => "KCH",
953            Self::KEF => "KEF",
954            Self::KGL => "KGL",
955            Self::KHH => "KHH",
956            Self::KHI => "KHI",
957            Self::KHN => "KHN",
958            Self::KIN => "KIN",
959            Self::KIV => "KIV",
960            Self::KIX => "KIX",
961            Self::KJA => "KJA",
962            Self::KMG => "KMG",
963            Self::KNU => "KNU",
964            Self::KTM => "KTM",
965            Self::KUL => "KUL",
966            Self::KWE => "KWE",
967            Self::KWI => "KWI",
968            Self::LAD => "LAD",
969            Self::LAS => "LAS",
970            Self::LAX => "LAX",
971            Self::LCA => "LCA",
972            Self::LED => "LED",
973            Self::LHE => "LHE",
974            Self::LHR => "LHR",
975            Self::LIM => "LIM",
976            Self::LIS => "LIS",
977            Self::LLK => "LLK",
978            Self::LLW => "LLW",
979            Self::LOS => "LOS",
980            Self::LPB => "LPB",
981            Self::LUN => "LUN",
982            Self::LUX => "LUX",
983            Self::LYS => "LYS",
984            Self::MAA => "MAA",
985            Self::MAD => "MAD",
986            Self::MAN => "MAN",
987            Self::MAO => "MAO",
988            Self::MBA => "MBA",
989            Self::MCI => "MCI",
990            Self::MCT => "MCT",
991            Self::MDE => "MDE",
992            Self::MEL => "MEL",
993            Self::MEM => "MEM",
994            Self::MEX => "MEX",
995            Self::MFM => "MFM",
996            Self::MIA => "MIA",
997            Self::MLA => "MLA",
998            Self::MLE => "MLE",
999            Self::MLG => "MLG",
1000            Self::MNL => "MNL",
1001            Self::MPM => "MPM",
1002            Self::MRS => "MRS",
1003            Self::MRU => "MRU",
1004            Self::MSP => "MSP",
1005            Self::MSQ => "MSQ",
1006            Self::MUC => "MUC",
1007            Self::MXP => "MXP",
1008            Self::NAG => "NAG",
1009            Self::NBO => "NBO",
1010            Self::NJF => "NJF",
1011            Self::NOU => "NOU",
1012            Self::NQN => "NQN",
1013            Self::NQZ => "NQZ",
1014            Self::NRT => "NRT",
1015            Self::NVT => "NVT",
1016            Self::OKA => "OKA",
1017            Self::OKC => "OKC",
1018            Self::OMA => "OMA",
1019            Self::ORD => "ORD",
1020            Self::ORF => "ORF",
1021            Self::ORN => "ORN",
1022            Self::OSL => "OSL",
1023            Self::OTP => "OTP",
1024            Self::OUA => "OUA",
1025            Self::PAT => "PAT",
1026            Self::PBH => "PBH",
1027            Self::PBM => "PBM",
1028            Self::PDX => "PDX",
1029            Self::PER => "PER",
1030            Self::PHL => "PHL",
1031            Self::PHX => "PHX",
1032            Self::PIT => "PIT",
1033            Self::PKX => "PKX",
1034            Self::PMO => "PMO",
1035            Self::PMW => "PMW",
1036            Self::PNH => "PNH",
1037            Self::POA => "POA",
1038            Self::POS => "POS",
1039            Self::PPT => "PPT",
1040            Self::PRG => "PRG",
1041            Self::PTY => "PTY",
1042            Self::QRO => "QRO",
1043            Self::QWJ => "QWJ",
1044            Self::RAO => "RAO",
1045            Self::RDU => "RDU",
1046            Self::REC => "REC",
1047            Self::RIC => "RIC",
1048            Self::RIX => "RIX",
1049            Self::RUH => "RUH",
1050            Self::RUN => "RUN",
1051            Self::SAN => "SAN",
1052            Self::SAP => "SAP",
1053            Self::SAT => "SAT",
1054            Self::SCL => "SCL",
1055            Self::SDQ => "SDQ",
1056            Self::SEA => "SEA",
1057            Self::SFO => "SFO",
1058            Self::SGN => "SGN",
1059            Self::SHA => "SHA",
1060            Self::SIN => "SIN",
1061            Self::SJC => "SJC",
1062            Self::SJK => "SJK",
1063            Self::SJO => "SJO",
1064            Self::SJP => "SJP",
1065            Self::SJU => "SJU",
1066            Self::SJW => "SJW",
1067            Self::SKG => "SKG",
1068            Self::SKP => "SKP",
1069            Self::SLC => "SLC",
1070            Self::SMF => "SMF",
1071            Self::SOD => "SOD",
1072            Self::SOF => "SOF",
1073            Self::SSA => "SSA",
1074            Self::STI => "STI",
1075            Self::STL => "STL",
1076            Self::STR => "STR",
1077            Self::SUV => "SUV",
1078            Self::SYD => "SYD",
1079            Self::SZX => "SZX",
1080            Self::TAO => "TAO",
1081            Self::TBS => "TBS",
1082            Self::TEN => "TEN",
1083            Self::TGU => "TGU",
1084            Self::TIA => "TIA",
1085            Self::TLH => "TLH",
1086            Self::TLL => "TLL",
1087            Self::TLV => "TLV",
1088            Self::TNA => "TNA",
1089            Self::TNR => "TNR",
1090            Self::TPA => "TPA",
1091            Self::TPE => "TPE",
1092            Self::TUN => "TUN",
1093            Self::TXL => "TXL",
1094            Self::TYN => "TYN",
1095            Self::UDI => "UDI",
1096            Self::UIO => "UIO",
1097            Self::ULN => "ULN",
1098            Self::URT => "URT",
1099            Self::VCP => "VCP",
1100            Self::VIE => "VIE",
1101            Self::VIX => "VIX",
1102            Self::VNO => "VNO",
1103            Self::VTE => "VTE",
1104            Self::WAW => "WAW",
1105            Self::WDH => "WDH",
1106            Self::WLG => "WLG",
1107            Self::WRO => "WRO",
1108            Self::XAP => "XAP",
1109            Self::XFN => "XFN",
1110            Self::XIY => "XIY",
1111            Self::XNH => "XNH",
1112            Self::YHZ => "YHZ",
1113            Self::YOW => "YOW",
1114            Self::YUL => "YUL",
1115            Self::YVR => "YVR",
1116            Self::YWG => "YWG",
1117            Self::YXE => "YXE",
1118            Self::YYC => "YYC",
1119            Self::YYZ => "YYZ",
1120            Self::ZAG => "ZAG",
1121            Self::ZDM => "ZDM",
1122            Self::ZRH => "ZRH",
1123        }
1124    }
1125
1126    /// Returns the human-readable name of this colo.
1127    #[inline]
1128    pub const fn name(&self) -> &'static str {
1129        match self {
1130            Self::AAE => "Annaba, Algeria",
1131            Self::ABJ => "Abidjan, Ivory Coast",
1132            Self::ABQ => "Albuquerque, NM, United States",
1133            Self::ACC => "Accra, Ghana",
1134            Self::ACX => "Xingyi, China",
1135            Self::ADB => "Izmir, Turkey",
1136            Self::ADD => "Addis Ababa, Ethiopia",
1137            Self::ADL => "Adelaide, SA, Australia",
1138            Self::AGR => "Agra, India",
1139            Self::AKL => "Auckland, New Zealand",
1140            Self::AKX => "Aktobe, Kazakhstan",
1141            Self::ALA => "Almaty, Kazakhstan",
1142            Self::ALG => "Algiers, Algeria",
1143            Self::AMD => "Ahmedabad, India",
1144            Self::AMM => "Amman, Jordan",
1145            Self::AMS => "Amsterdam, Netherlands",
1146            Self::ANC => "Anchorage, AK, United States",
1147            Self::ARI => "Arica, Chile",
1148            Self::ARN => "Stockholm, Sweden",
1149            Self::ARU => "Aracatuba, Brazil",
1150            Self::ASK => "Yamoussoukro, Ivory Coast",
1151            Self::ASU => "Asunción, Paraguay",
1152            Self::ATH => "Athens, Greece",
1153            Self::ATL => "Atlanta, GA, United States",
1154            Self::AUS => "Austin, TX, United States",
1155            Self::BAH => "Manama, Bahrain",
1156            Self::BAQ => "Barranquilla, Colombia",
1157            Self::BCN => "Barcelona, Spain",
1158            Self::BEG => "Belgrade, Serbia",
1159            Self::BEL => "Belém, Brazil",
1160            Self::BEY => "Beirut, Lebanon",
1161            Self::BGI => "Bridgetown, Barbados",
1162            Self::BGR => "Bangor, ME, United States",
1163            Self::BGW => "Baghdad, Iraq",
1164            Self::BHY => "Beihai, China",
1165            Self::BKK => "Bangkok, Thailand",
1166            Self::BLR => "Bangalore, India",
1167            Self::BNA => "Nashville, United States",
1168            Self::BNE => "Brisbane, QLD, Australia",
1169            Self::BNU => "Blumenau, Brazil",
1170            Self::BOD => "Bordeaux, France",
1171            Self::BOG => "Bogota, Colombia",
1172            Self::BOM => "Mumbai, India",
1173            Self::BOS => "Boston, MA, United States",
1174            Self::BRU => "Brussels, Belgium",
1175            Self::BSB => "Brasilia, Brazil",
1176            Self::BSR => "Basra, Iraq",
1177            Self::BTS => "Bratislava, Slovakia",
1178            Self::BUD => "Budapest, Hungary",
1179            Self::BUF => "Buffalo, NY, United States",
1180            Self::BWN => "Bandar Seri Begawan, Brunei",
1181            Self::CAI => "Cairo, Egypt",
1182            Self::CAN => "Guangzhou, China",
1183            Self::CAW => "Campos dos Goytacazes, Brazil",
1184            Self::CBR => "Canberra, ACT, Australia",
1185            Self::CCP => "Concepción, Chile",
1186            Self::CCU => "Kolkata, India",
1187            Self::CDG => "Paris, France",
1188            Self::CEB => "Cebu, Philippines",
1189            Self::CFC => "Cacador, Brazil",
1190            Self::CGB => "Cuiaba, Brazil",
1191            Self::CGD => "Changde, China",
1192            Self::CGK => "Jakarta, Indonesia",
1193            Self::CGO => "Zhengzhou, China",
1194            Self::CGP => "Chittagong, Bangladesh",
1195            Self::CGY => "Cagayan de Oro, Philippines",
1196            Self::CHC => "Christchurch, New Zealand",
1197            Self::CJB => "Coimbatore, India",
1198            Self::CKG => "Chongqing, China",
1199            Self::CLE => "Cleveland, OH, United States",
1200            Self::CLO => "Cali, Colombia",
1201            Self::CLT => "Charlotte, NC, United States",
1202            Self::CMB => "Colombo, Sri Lanka",
1203            Self::CMH => "Columbus, OH, United States",
1204            Self::CNF => "Belo Horizonte, Brazil",
1205            Self::CNI => "Cloud Network Interconnect (CNI)",
1206            Self::CNN => "Kannur, India",
1207            Self::CNX => "Chiang Mai, Thailand",
1208            Self::COK => "Kochi, India",
1209            Self::COR => "Córdoba, Argentina",
1210            Self::CPH => "Copenhagen, Denmark",
1211            Self::CPT => "Cape Town, South Africa",
1212            Self::CRK => "Tarlac City, Philippines",
1213            Self::CSX => "Changsha, China",
1214            Self::CTU => "Chengdu, China",
1215            Self::CWB => "Curitiba, Brazil",
1216            Self::CZL => "Constantine, Algeria",
1217            Self::CZX => "Changzhou, China",
1218            Self::DAC => "Dhaka, Bangladesh",
1219            Self::DAD => "Da Nang, Vietnam",
1220            Self::DAR => "Dar es Salaam, Tanzania",
1221            Self::DEL => "New Delhi, India",
1222            Self::DEN => "Denver, CO, United States",
1223            Self::DEX => "Digital Experience Monitoring (DEX)",
1224            Self::DFW => "Dallas, TX, United States",
1225            Self::DKR => "Dakar, Senegal",
1226            Self::DLC => "Dalian, China",
1227            Self::DLP => "Data Loss Prevention (DLP)",
1228            Self::DME => "Moscow, Russia",
1229            Self::DMM => "Dammam, Saudi Arabia",
1230            Self::DOH => "Doha, Qatar",
1231            Self::DPS => "Denpasar, Indonesia",
1232            Self::DTW => "Detroit, MI, United States",
1233            Self::DUB => "Dublin, Ireland",
1234            Self::DUR => "Durban, South Africa",
1235            Self::DUS => "Düsseldorf, Germany",
1236            Self::DXB => "Dubai, United Arab Emirates",
1237            Self::EBB => "Kampala, Uganda",
1238            Self::EBL => "Erbil, Iraq",
1239            Self::EVN => "Yerevan, Armenia",
1240            Self::EWR => "Newark, NJ, United States",
1241            Self::EZE => "Buenos Aires, Argentina",
1242            Self::FCO => "Rome, Italy",
1243            Self::FIH => "Kinshasa, DR Congo",
1244            Self::FLN => "Florianopolis, Brazil",
1245            Self::FOC => "Fuzhou, China",
1246            Self::FOR => "Fortaleza, Brazil",
1247            Self::FRA => "Frankfurt, Germany",
1248            Self::FRU => "Bishkek, Kyrgyzstan",
1249            Self::FSD => "Sioux Falls, SD, United States",
1250            Self::FUK => "Fukuoka, Japan",
1251            Self::FUO => "Foshan, China",
1252            Self::GBE => "Gaborone, Botswana",
1253            Self::GDL => "Guadalajara, Mexico",
1254            Self::GEO => "Georgetown, Guyana",
1255            Self::GIG => "Rio de Janeiro, Brazil",
1256            Self::GND => "St. George's, Grenada",
1257            Self::GOT => "Gothenburg, Sweden",
1258            Self::GRU => "São Paulo, Brazil",
1259            Self::GUA => "Guatemala City, Guatemala",
1260            Self::GUM => "Hagatna, Guam",
1261            Self::GVA => "Geneva, Switzerland",
1262            Self::GYD => "Baku, Azerbaijan",
1263            Self::GYE => "Guayaquil, Ecuador",
1264            Self::GYN => "Goiania, Brazil",
1265            Self::HAK => "Chengmai, China",
1266            Self::HAM => "Hamburg, Germany",
1267            Self::HAN => "Hanoi, Vietnam",
1268            Self::HBA => "Hobart, Australia",
1269            Self::HEL => "Helsinki, Finland",
1270            Self::HFA => "Haifa, Israel",
1271            Self::HGH => "Shaoxing, China",
1272            Self::HKG => "Hong Kong",
1273            Self::HNL => "Honolulu, HI, United States",
1274            Self::HRE => "Harare, Zimbabwe",
1275            Self::HYD => "Hyderabad, India",
1276            Self::HYN => "Taizhou, China",
1277            Self::IAD => "Ashburn, VA, United States",
1278            Self::IAH => "Houston, TX, United States",
1279            Self::ICN => "Seoul, South Korea",
1280            Self::IND => "Indianapolis, IN, United States",
1281            Self::ISB => "Islamabad, Pakistan",
1282            Self::IST => "Istanbul, Turkey",
1283            Self::ISU => "Sulaymaniyah, Iraq",
1284            Self::IXC => "Chandigarh, India",
1285            Self::JAX => "Jacksonville, FL, United States",
1286            Self::JDO => "Juazeiro do Norte, Brazil",
1287            Self::JED => "Jeddah, Saudi Arabia",
1288            Self::JHB => "Johor Bahru, Malaysia - (JHB)",
1289            Self::JIB => "Djibouti, Djibouti",
1290            Self::JNB => "Johannesburg, South Africa",
1291            Self::JOG => "Yogyakarta, Indonesia",
1292            Self::JOI => "Joinville, Brazil",
1293            Self::JXG => "Jiaxing, China",
1294            Self::KBP => "Kyiv, Ukraine",
1295            Self::KCH => "Kuching, Malaysia",
1296            Self::KEF => "Reykjavík, Iceland",
1297            Self::KGL => "Kigali, Rwanda",
1298            Self::KHH => "Kaohsiung City, Taiwan",
1299            Self::KHI => "Karachi, Pakistan",
1300            Self::KHN => "Nanchang, China",
1301            Self::KIN => "Kingston, Jamaica",
1302            Self::KIV => "Chișinău, Moldova",
1303            Self::KIX => "Osaka, Japan",
1304            Self::KJA => "Krasnoyarsk, Russia",
1305            Self::KMG => "Kunming, China",
1306            Self::KNU => "Kanpur, India",
1307            Self::KTM => "Kathmandu, Nepal",
1308            Self::KUL => "Kuala Lumpur, Malaysia",
1309            Self::KWE => "Guiyang, China",
1310            Self::KWI => "Kuwait City, Kuwait",
1311            Self::LAD => "Luanda, Angola",
1312            Self::LAS => "Las Vegas, NV, United States",
1313            Self::LAX => "Los Angeles, CA, United States",
1314            Self::LCA => "Nicosia, Cyprus",
1315            Self::LED => "Saint Petersburg, Russia",
1316            Self::LHE => "Lahore, Pakistan",
1317            Self::LHR => "London, United Kingdom",
1318            Self::LIM => "Lima, Peru",
1319            Self::LIS => "Lisbon, Portugal",
1320            Self::LLK => "Astara, Azerbaijan",
1321            Self::LLW => "Lilongwe, Malawi",
1322            Self::LOS => "Lagos, Nigeria",
1323            Self::LPB => "La Paz, Bolivia",
1324            Self::LUN => "Lusaka, Zambia",
1325            Self::LUX => "Luxembourg City, Luxembourg",
1326            Self::LYS => "Lyon, France",
1327            Self::MAA => "Chennai, India",
1328            Self::MAD => "Madrid, Spain",
1329            Self::MAN => "Manchester, United Kingdom",
1330            Self::MAO => "Manaus, Brazil",
1331            Self::MBA => "Mombasa, Kenya",
1332            Self::MCI => "Kansas City, MO, United States",
1333            Self::MCT => "Muscat, Oman",
1334            Self::MDE => "Medellín, Colombia",
1335            Self::MEL => "Melbourne, VIC, Australia",
1336            Self::MEM => "Memphis, TN, United States",
1337            Self::MEX => "Mexico City, Mexico",
1338            Self::MFM => "Macau",
1339            Self::MIA => "Miami, FL, United States",
1340            Self::MLA => "Valletta, Malta",
1341            Self::MLE => "Male, Maldives",
1342            Self::MLG => "Malang, Indonesia",
1343            Self::MNL => "Manila, Philippines",
1344            Self::MPM => "Maputo, Mozambique",
1345            Self::MRS => "Marseille, France",
1346            Self::MRU => "Port Louis, Mauritius",
1347            Self::MSP => "Minneapolis, MN, United States",
1348            Self::MSQ => "Minsk, Belarus",
1349            Self::MUC => "Munich, Germany",
1350            Self::MXP => "Milan, Italy",
1351            Self::NAG => "Nagpur, India",
1352            Self::NBO => "Nairobi, Kenya",
1353            Self::NJF => "Najaf, Iraq",
1354            Self::NOU => "Noumea, New Caledonia",
1355            Self::NQN => "Neuquen, Argentina",
1356            Self::NQZ => "Astana, Kazakhstan",
1357            Self::NRT => "Tokyo, Japan",
1358            Self::NVT => "Timbo, Brazil",
1359            Self::OKA => "Naha, Japan",
1360            Self::OKC => "Oklahoma City, OK, United States",
1361            Self::OMA => "Omaha, NE, United States",
1362            Self::ORD => "Chicago, IL, United States",
1363            Self::ORF => "Norfolk, VA, United States",
1364            Self::ORN => "Oran, Algeria",
1365            Self::OSL => "Oslo, Norway",
1366            Self::OTP => "Bucharest, Romania",
1367            Self::OUA => "Ouagadougou, Burkina Faso",
1368            Self::PAT => "Patna, India",
1369            Self::PBH => "Thimphu, Bhutan",
1370            Self::PBM => "Paramaribo, Suriname",
1371            Self::PDX => "Portland, OR, United States",
1372            Self::PER => "Perth, WA, Australia",
1373            Self::PHL => "Philadelphia, United States",
1374            Self::PHX => "Phoenix, AZ, United States",
1375            Self::PIT => "Pittsburgh, PA, United States",
1376            Self::PKX => "Langfang, China",
1377            Self::PMO => "Palermo, Italy",
1378            Self::PMW => "Palmas, Brazil",
1379            Self::PNH => "Phnom Penh, Cambodia",
1380            Self::POA => "Porto Alegre, Brazil",
1381            Self::POS => "Port of Spain, Trinidad and Tobago",
1382            Self::PPT => "Tahiti, French Polynesia",
1383            Self::PRG => "Prague, Czech Republic",
1384            Self::PTY => "Panama City, Panama",
1385            Self::QRO => "Queretaro, MX, Mexico",
1386            Self::QWJ => "Americana, Brazil",
1387            Self::RAO => "Ribeirao Preto, Brazil",
1388            Self::RDU => "Durham, NC, United States",
1389            Self::REC => "Recife, Brazil",
1390            Self::RIC => "Richmond, VA, United States",
1391            Self::RIX => "Riga, Latvia",
1392            Self::RUH => "Riyadh, Saudi Arabia",
1393            Self::RUN => "Saint-Denis, Réunion",
1394            Self::SAN => "San Diego, CA, United States",
1395            Self::SAP => "San Pedro Sula, Honduras",
1396            Self::SAT => "San Antonio, TX, United States",
1397            Self::SCL => "Santiago, Chile",
1398            Self::SDQ => "Santo Domingo, Dominican Republic",
1399            Self::SEA => "Seattle, WA, United States",
1400            Self::SFO => "San Francisco, CA, United States",
1401            Self::SGN => "Ho Chi Minh City, Vietnam",
1402            Self::SHA => "Shanghai, China",
1403            Self::SIN => "Singapore, Singapore",
1404            Self::SJC => "San Jose, CA, United States",
1405            Self::SJK => "São José dos Campos, Brazil",
1406            Self::SJO => "San José, Costa Rica",
1407            Self::SJP => "São José do Rio Preto, Brazil",
1408            Self::SJU => "San Juan, Puerto Rico",
1409            Self::SJW => "Shijiazhuang, China",
1410            Self::SKG => "Thessaloniki, Greece",
1411            Self::SKP => "Skopje, North Macedonia",
1412            Self::SLC => "Salt Lake City, UT, United States",
1413            Self::SMF => "Sacramento, CA, United States",
1414            Self::SOD => "Sorocaba, Brazil",
1415            Self::SOF => "Sofia, Bulgaria",
1416            Self::SSA => "Salvador, Brazil",
1417            Self::STI => "Santiago de los Caballeros, Dominican Republic",
1418            Self::STL => "St. Louis, MO, United States",
1419            Self::STR => "Stuttgart, Germany",
1420            Self::SUV => "Suva, Fiji",
1421            Self::SYD => "Sydney, NSW, Australia",
1422            Self::SZX => "Shenzhen, China",
1423            Self::TAO => "Qingdao, China",
1424            Self::TBS => "Tbilisi, Georgia",
1425            Self::TEN => "Tongren, China",
1426            Self::TGU => "Tegucigalpa, Honduras",
1427            Self::TIA => "Tirana, Albania",
1428            Self::TLH => "Tallahassee, FL, United States",
1429            Self::TLL => "Tallinn, Estonia",
1430            Self::TLV => "Tel Aviv, Israel",
1431            Self::TNA => "Zibo, China",
1432            Self::TNR => "Antananarivo, Madagascar",
1433            Self::TPA => "Tampa, FL, United States",
1434            Self::TPE => "Taipei",
1435            Self::TUN => "Tunis, Tunisia",
1436            Self::TXL => "Berlin, Germany",
1437            Self::TYN => "Yangquan, China",
1438            Self::UDI => "Uberlandia, Brazil",
1439            Self::UIO => "Quito, Ecuador",
1440            Self::ULN => "Ulaanbaatar, Mongolia",
1441            Self::URT => "Surat Thani, Thailand",
1442            Self::VCP => "Campinas, Brazil",
1443            Self::VIE => "Vienna, Austria",
1444            Self::VIX => "Vitoria, Brazil",
1445            Self::VNO => "Vilnius, Lithuania",
1446            Self::VTE => "Vientiane, Laos",
1447            Self::WAW => "Warsaw, Poland",
1448            Self::WDH => "Windhoek, Namibia",
1449            Self::WLG => "Wellington, New Zealand",
1450            Self::WRO => "Wroclaw, Poland",
1451            Self::XAP => "Chapeco, Brazil",
1452            Self::XFN => "Xiangyang, China",
1453            Self::XIY => "Baoji, China",
1454            Self::XNH => "Nasiriyah, Iraq",
1455            Self::YHZ => "Halifax, Canada",
1456            Self::YOW => "Ottawa, Canada",
1457            Self::YUL => "Montréal, QC, Canada",
1458            Self::YVR => "Vancouver, BC, Canada",
1459            Self::YWG => "Winnipeg, MB, Canada",
1460            Self::YXE => "Saskatoon, SK, Canada",
1461            Self::YYC => "Calgary, AB, Canada",
1462            Self::YYZ => "Toronto, ON, Canada",
1463            Self::ZAG => "Zagreb, Croatia",
1464            Self::ZDM => "Ramallah",
1465            Self::ZRH => "Zurich, Switzerland",
1466        }
1467    }
1468
1469    /// Returns the nearest Durable Objects location hint for this colo.
1470    ///
1471    /// This is based on measured latency data and represents the best
1472    /// location hint to use when creating Durable Objects for requests
1473    /// arriving at this colo.
1474    ///
1475    /// Returns `None` if no mapping data is available for this colo.
1476    #[inline]
1477    pub const fn location_hint(&self) -> Option<LocationHint> {
1478        match self {
1479            Self::AAE => Some(LocationHint::Me),
1480            Self::ABJ => None,
1481            Self::ABQ => Some(LocationHint::WNam),
1482            Self::ACC => Some(LocationHint::Afr),
1483            Self::ACX => None,
1484            Self::ADB => Some(LocationHint::Me),
1485            Self::ADD => Some(LocationHint::Afr),
1486            Self::ADL => Some(LocationHint::Oc),
1487            Self::AGR => Some(LocationHint::Apac),
1488            Self::AKL => Some(LocationHint::Oc),
1489            Self::AKX => Some(LocationHint::EEur),
1490            Self::ALA => Some(LocationHint::EEur),
1491            Self::ALG => Some(LocationHint::Afr),
1492            Self::AMD => Some(LocationHint::Apac),
1493            Self::AMM => Some(LocationHint::WEur),
1494            Self::AMS => Some(LocationHint::Afr),
1495            Self::ANC => Some(LocationHint::WNam),
1496            Self::ARI => None,
1497            Self::ARN => Some(LocationHint::EEur),
1498            Self::ARU => None,
1499            Self::ASK => Some(LocationHint::Afr),
1500            Self::ASU => Some(LocationHint::ENam),
1501            Self::ATH => Some(LocationHint::Me),
1502            Self::ATL => Some(LocationHint::Sam),
1503            Self::AUS => Some(LocationHint::WNam),
1504            Self::BAH => Some(LocationHint::Apac),
1505            Self::BAQ => Some(LocationHint::Sam),
1506            Self::BCN => Some(LocationHint::EEur),
1507            Self::BEG => Some(LocationHint::EEur),
1508            Self::BEL => Some(LocationHint::ENam),
1509            Self::BEY => Some(LocationHint::WEur),
1510            Self::BGI => Some(LocationHint::Sam),
1511            Self::BGR => Some(LocationHint::ENam),
1512            Self::BGW => Some(LocationHint::Me),
1513            Self::BHY => None,
1514            Self::BKK => Some(LocationHint::Apac),
1515            Self::BLR => Some(LocationHint::Apac),
1516            Self::BNA => Some(LocationHint::Sam),
1517            Self::BNE => Some(LocationHint::Oc),
1518            Self::BNU => Some(LocationHint::ENam),
1519            Self::BOD => Some(LocationHint::WEur),
1520            Self::BOG => Some(LocationHint::Sam),
1521            Self::BOM => Some(LocationHint::Apac),
1522            Self::BOS => Some(LocationHint::Sam),
1523            Self::BRU => Some(LocationHint::Afr),
1524            Self::BSB => Some(LocationHint::Sam),
1525            Self::BSR => Some(LocationHint::Me),
1526            Self::BTS => Some(LocationHint::Me),
1527            Self::BUD => Some(LocationHint::Me),
1528            Self::BUF => Some(LocationHint::ENam),
1529            Self::BWN => None,
1530            Self::CAI => Some(LocationHint::Afr),
1531            Self::CAN => None,
1532            Self::CAW => None,
1533            Self::CBR => Some(LocationHint::Oc),
1534            Self::CCP => Some(LocationHint::ENam),
1535            Self::CCU => Some(LocationHint::Apac),
1536            Self::CDG => Some(LocationHint::Afr),
1537            Self::CEB => Some(LocationHint::Apac),
1538            Self::CFC => Some(LocationHint::ENam),
1539            Self::CGB => Some(LocationHint::ENam),
1540            Self::CGD => None,
1541            Self::CGK => Some(LocationHint::Apac),
1542            Self::CGO => None,
1543            Self::CGP => Some(LocationHint::Apac),
1544            Self::CGY => Some(LocationHint::Apac),
1545            Self::CHC => Some(LocationHint::Oc),
1546            Self::CJB => Some(LocationHint::Apac),
1547            Self::CKG => None,
1548            Self::CLE => Some(LocationHint::ENam),
1549            Self::CLO => Some(LocationHint::ENam),
1550            Self::CLT => None,
1551            Self::CMB => Some(LocationHint::Oc),
1552            Self::CMH => Some(LocationHint::ENam),
1553            Self::CNF => Some(LocationHint::Sam),
1554            Self::CNI => None,
1555            Self::CNN => Some(LocationHint::Apac),
1556            Self::CNX => Some(LocationHint::Apac),
1557            Self::COK => None,
1558            Self::COR => Some(LocationHint::ENam),
1559            Self::CPH => Some(LocationHint::Afr),
1560            Self::CPT => Some(LocationHint::Afr),
1561            Self::CRK => Some(LocationHint::Apac),
1562            Self::CSX => None,
1563            Self::CTU => None,
1564            Self::CWB => Some(LocationHint::ENam),
1565            Self::CZL => Some(LocationHint::Afr),
1566            Self::CZX => None,
1567            Self::DAC => Some(LocationHint::Apac),
1568            Self::DAD => Some(LocationHint::Apac),
1569            Self::DAR => Some(LocationHint::WEur),
1570            Self::DEL => Some(LocationHint::Apac),
1571            Self::DEN => Some(LocationHint::WNam),
1572            Self::DEX => None,
1573            Self::DFW => Some(LocationHint::WNam),
1574            Self::DKR => Some(LocationHint::Afr),
1575            Self::DLC => None,
1576            Self::DLP => None,
1577            Self::DME => Some(LocationHint::Me),
1578            Self::DMM => Some(LocationHint::WEur),
1579            Self::DOH => Some(LocationHint::EEur),
1580            Self::DPS => Some(LocationHint::Apac),
1581            Self::DTW => Some(LocationHint::ENam),
1582            Self::DUB => Some(LocationHint::Afr),
1583            Self::DUR => Some(LocationHint::WEur),
1584            Self::DUS => Some(LocationHint::Afr),
1585            Self::DXB => Some(LocationHint::Apac),
1586            Self::EBB => Some(LocationHint::WEur),
1587            Self::EBL => Some(LocationHint::Me),
1588            Self::EVN => Some(LocationHint::WEur),
1589            Self::EWR => Some(LocationHint::Sam),
1590            Self::EZE => Some(LocationHint::ENam),
1591            Self::FCO => Some(LocationHint::EEur),
1592            Self::FIH => None,
1593            Self::FLN => Some(LocationHint::Sam),
1594            Self::FOC => None,
1595            Self::FOR => Some(LocationHint::Sam),
1596            Self::FRA => Some(LocationHint::Me),
1597            Self::FRU => Some(LocationHint::EEur),
1598            Self::FSD => Some(LocationHint::Sam),
1599            Self::FUK => Some(LocationHint::Apac),
1600            Self::FUO => None,
1601            Self::GBE => Some(LocationHint::WEur),
1602            Self::GDL => Some(LocationHint::ENam),
1603            Self::GEO => Some(LocationHint::Sam),
1604            Self::GIG => Some(LocationHint::Sam),
1605            Self::GND => Some(LocationHint::Sam),
1606            Self::GOT => Some(LocationHint::WEur),
1607            Self::GRU => Some(LocationHint::Sam),
1608            Self::GUA => Some(LocationHint::ENam),
1609            Self::GUM => Some(LocationHint::WNam),
1610            Self::GVA => Some(LocationHint::EEur),
1611            Self::GYD => Some(LocationHint::Afr),
1612            Self::GYE => Some(LocationHint::Sam),
1613            Self::GYN => Some(LocationHint::Sam),
1614            Self::HAK => None,
1615            Self::HAM => Some(LocationHint::Me),
1616            Self::HAN => Some(LocationHint::Apac),
1617            Self::HBA => Some(LocationHint::Oc),
1618            Self::HEL => Some(LocationHint::EEur),
1619            Self::HFA => Some(LocationHint::Afr),
1620            Self::HGH => None,
1621            Self::HKG => Some(LocationHint::Apac),
1622            Self::HNL => Some(LocationHint::WNam),
1623            Self::HRE => Some(LocationHint::Afr),
1624            Self::HYD => Some(LocationHint::Apac),
1625            Self::HYN => None,
1626            Self::IAD => Some(LocationHint::ENam),
1627            Self::IAH => Some(LocationHint::ENam),
1628            Self::ICN => Some(LocationHint::Apac),
1629            Self::IND => Some(LocationHint::Sam),
1630            Self::ISB => Some(LocationHint::Apac),
1631            Self::IST => Some(LocationHint::Me),
1632            Self::ISU => Some(LocationHint::Me),
1633            Self::IXC => Some(LocationHint::Apac),
1634            Self::JAX => Some(LocationHint::Sam),
1635            Self::JDO => Some(LocationHint::ENam),
1636            Self::JED => Some(LocationHint::Afr),
1637            Self::JHB => None,
1638            Self::JIB => Some(LocationHint::Afr),
1639            Self::JNB => Some(LocationHint::WEur),
1640            Self::JOG => Some(LocationHint::Apac),
1641            Self::JOI => Some(LocationHint::Sam),
1642            Self::JXG => None,
1643            Self::KBP => Some(LocationHint::Me),
1644            Self::KCH => Some(LocationHint::Apac),
1645            Self::KEF => Some(LocationHint::Afr),
1646            Self::KGL => None,
1647            Self::KHH => Some(LocationHint::Apac),
1648            Self::KHI => Some(LocationHint::Apac),
1649            Self::KHN => None,
1650            Self::KIN => Some(LocationHint::Sam),
1651            Self::KIV => Some(LocationHint::EEur),
1652            Self::KIX => Some(LocationHint::Apac),
1653            Self::KJA => Some(LocationHint::Me),
1654            Self::KMG => None,
1655            Self::KNU => Some(LocationHint::Apac),
1656            Self::KTM => Some(LocationHint::Apac),
1657            Self::KUL => Some(LocationHint::Apac),
1658            Self::KWE => None,
1659            Self::KWI => Some(LocationHint::Afr),
1660            Self::LAD => Some(LocationHint::Afr),
1661            Self::LAS => Some(LocationHint::WNam),
1662            Self::LAX => Some(LocationHint::WNam),
1663            Self::LCA => Some(LocationHint::WEur),
1664            Self::LED => Some(LocationHint::Me),
1665            Self::LHE => Some(LocationHint::Apac),
1666            Self::LHR => Some(LocationHint::Afr),
1667            Self::LIM => Some(LocationHint::Sam),
1668            Self::LIS => Some(LocationHint::Afr),
1669            Self::LLK => Some(LocationHint::Afr),
1670            Self::LLW => None,
1671            Self::LOS => Some(LocationHint::Afr),
1672            Self::LPB => None,
1673            Self::LUN => Some(LocationHint::WEur),
1674            Self::LUX => Some(LocationHint::Afr),
1675            Self::LYS => Some(LocationHint::WEur),
1676            Self::MAA => Some(LocationHint::Apac),
1677            Self::MAD => Some(LocationHint::WEur),
1678            Self::MAN => Some(LocationHint::Afr),
1679            Self::MAO => Some(LocationHint::Sam),
1680            Self::MBA => Some(LocationHint::Me),
1681            Self::MCI => Some(LocationHint::Sam),
1682            Self::MCT => Some(LocationHint::Apac),
1683            Self::MDE => Some(LocationHint::ENam),
1684            Self::MEL => Some(LocationHint::Oc),
1685            Self::MEM => Some(LocationHint::ENam),
1686            Self::MEX => Some(LocationHint::WNam),
1687            Self::MFM => Some(LocationHint::Apac),
1688            Self::MIA => Some(LocationHint::Sam),
1689            Self::MLA => Some(LocationHint::WEur),
1690            Self::MLE => Some(LocationHint::WEur),
1691            Self::MLG => Some(LocationHint::Apac),
1692            Self::MNL => Some(LocationHint::Apac),
1693            Self::MPM => Some(LocationHint::WEur),
1694            Self::MRS => Some(LocationHint::Afr),
1695            Self::MRU => Some(LocationHint::Apac),
1696            Self::MSP => Some(LocationHint::ENam),
1697            Self::MSQ => Some(LocationHint::WEur),
1698            Self::MUC => Some(LocationHint::EEur),
1699            Self::MXP => Some(LocationHint::EEur),
1700            Self::NAG => Some(LocationHint::Apac),
1701            Self::NBO => Some(LocationHint::Me),
1702            Self::NJF => Some(LocationHint::EEur),
1703            Self::NOU => Some(LocationHint::Oc),
1704            Self::NQN => Some(LocationHint::ENam),
1705            Self::NQZ => None,
1706            Self::NRT => Some(LocationHint::Apac),
1707            Self::NVT => Some(LocationHint::ENam),
1708            Self::OKA => None,
1709            Self::OKC => Some(LocationHint::Sam),
1710            Self::OMA => Some(LocationHint::WNam),
1711            Self::ORD => Some(LocationHint::ENam),
1712            Self::ORF => None,
1713            Self::ORN => Some(LocationHint::Afr),
1714            Self::OSL => Some(LocationHint::EEur),
1715            Self::OTP => Some(LocationHint::Me),
1716            Self::OUA => None,
1717            Self::PAT => Some(LocationHint::Apac),
1718            Self::PBH => Some(LocationHint::Apac),
1719            Self::PBM => Some(LocationHint::Sam),
1720            Self::PDX => Some(LocationHint::WNam),
1721            Self::PER => Some(LocationHint::Oc),
1722            Self::PHL => Some(LocationHint::ENam),
1723            Self::PHX => Some(LocationHint::WNam),
1724            Self::PIT => Some(LocationHint::Sam),
1725            Self::PKX => None,
1726            Self::PMO => Some(LocationHint::EEur),
1727            Self::PMW => Some(LocationHint::ENam),
1728            Self::PNH => Some(LocationHint::Apac),
1729            Self::POA => Some(LocationHint::WEur),
1730            Self::POS => Some(LocationHint::ENam),
1731            Self::PPT => Some(LocationHint::WNam),
1732            Self::PRG => Some(LocationHint::EEur),
1733            Self::PTY => Some(LocationHint::ENam),
1734            Self::QRO => Some(LocationHint::Sam),
1735            Self::QWJ => Some(LocationHint::ENam),
1736            Self::RAO => Some(LocationHint::Sam),
1737            Self::RDU => Some(LocationHint::Sam),
1738            Self::REC => Some(LocationHint::ENam),
1739            Self::RIC => Some(LocationHint::ENam),
1740            Self::RIX => Some(LocationHint::Me),
1741            Self::RUH => Some(LocationHint::EEur),
1742            Self::RUN => Some(LocationHint::WEur),
1743            Self::SAN => Some(LocationHint::WNam),
1744            Self::SAP => Some(LocationHint::ENam),
1745            Self::SAT => Some(LocationHint::WNam),
1746            Self::SCL => Some(LocationHint::Sam),
1747            Self::SDQ => Some(LocationHint::Sam),
1748            Self::SEA => Some(LocationHint::WNam),
1749            Self::SFO => None,
1750            Self::SGN => Some(LocationHint::Apac),
1751            Self::SHA => None,
1752            Self::SIN => Some(LocationHint::Apac),
1753            Self::SJC => Some(LocationHint::WNam),
1754            Self::SJK => Some(LocationHint::Sam),
1755            Self::SJO => Some(LocationHint::Sam),
1756            Self::SJP => Some(LocationHint::ENam),
1757            Self::SJU => Some(LocationHint::Sam),
1758            Self::SJW => None,
1759            Self::SKG => Some(LocationHint::Me),
1760            Self::SKP => None,
1761            Self::SLC => Some(LocationHint::WNam),
1762            Self::SMF => Some(LocationHint::WNam),
1763            Self::SOD => Some(LocationHint::Sam),
1764            Self::SOF => Some(LocationHint::Me),
1765            Self::SSA => Some(LocationHint::WEur),
1766            Self::STI => Some(LocationHint::Sam),
1767            Self::STL => Some(LocationHint::Sam),
1768            Self::STR => Some(LocationHint::WEur),
1769            Self::SUV => Some(LocationHint::Oc),
1770            Self::SYD => Some(LocationHint::Oc),
1771            Self::SZX => None,
1772            Self::TAO => None,
1773            Self::TBS => Some(LocationHint::Me),
1774            Self::TEN => None,
1775            Self::TGU => Some(LocationHint::Sam),
1776            Self::TIA => Some(LocationHint::Me),
1777            Self::TLH => Some(LocationHint::Sam),
1778            Self::TLL => Some(LocationHint::EEur),
1779            Self::TLV => Some(LocationHint::EEur),
1780            Self::TNA => None,
1781            Self::TNR => Some(LocationHint::WEur),
1782            Self::TPA => Some(LocationHint::ENam),
1783            Self::TPE => Some(LocationHint::Apac),
1784            Self::TUN => Some(LocationHint::WEur),
1785            Self::TXL => Some(LocationHint::WEur),
1786            Self::TYN => None,
1787            Self::UDI => Some(LocationHint::Sam),
1788            Self::UIO => Some(LocationHint::Sam),
1789            Self::ULN => Some(LocationHint::EEur),
1790            Self::URT => Some(LocationHint::Apac),
1791            Self::VCP => Some(LocationHint::Sam),
1792            Self::VIE => Some(LocationHint::Me),
1793            Self::VIX => None,
1794            Self::VNO => Some(LocationHint::Me),
1795            Self::VTE => Some(LocationHint::Apac),
1796            Self::WAW => Some(LocationHint::Me),
1797            Self::WDH => Some(LocationHint::WEur),
1798            Self::WLG => None,
1799            Self::WRO => Some(LocationHint::Me),
1800            Self::XAP => None,
1801            Self::XFN => None,
1802            Self::XIY => None,
1803            Self::XNH => Some(LocationHint::Me),
1804            Self::YHZ => Some(LocationHint::Sam),
1805            Self::YOW => Some(LocationHint::ENam),
1806            Self::YUL => Some(LocationHint::Sam),
1807            Self::YVR => Some(LocationHint::WNam),
1808            Self::YWG => Some(LocationHint::ENam),
1809            Self::YXE => Some(LocationHint::WNam),
1810            Self::YYC => Some(LocationHint::WNam),
1811            Self::YYZ => Some(LocationHint::ENam),
1812            Self::ZAG => Some(LocationHint::EEur),
1813            Self::ZDM => Some(LocationHint::WEur),
1814            Self::ZRH => Some(LocationHint::Me),
1815        }
1816    }
1817
1818    /// Parse a colo from its 3-letter code.
1819    pub fn from_code(code: &str) -> Option<Self> {
1820        match code {
1821            "AAE" => Some(Self::AAE),
1822            "ABJ" => Some(Self::ABJ),
1823            "ABQ" => Some(Self::ABQ),
1824            "ACC" => Some(Self::ACC),
1825            "ACX" => Some(Self::ACX),
1826            "ADB" => Some(Self::ADB),
1827            "ADD" => Some(Self::ADD),
1828            "ADL" => Some(Self::ADL),
1829            "AGR" => Some(Self::AGR),
1830            "AKL" => Some(Self::AKL),
1831            "AKX" => Some(Self::AKX),
1832            "ALA" => Some(Self::ALA),
1833            "ALG" => Some(Self::ALG),
1834            "AMD" => Some(Self::AMD),
1835            "AMM" => Some(Self::AMM),
1836            "AMS" => Some(Self::AMS),
1837            "ANC" => Some(Self::ANC),
1838            "ARI" => Some(Self::ARI),
1839            "ARN" => Some(Self::ARN),
1840            "ARU" => Some(Self::ARU),
1841            "ASK" => Some(Self::ASK),
1842            "ASU" => Some(Self::ASU),
1843            "ATH" => Some(Self::ATH),
1844            "ATL" => Some(Self::ATL),
1845            "AUS" => Some(Self::AUS),
1846            "BAH" => Some(Self::BAH),
1847            "BAQ" => Some(Self::BAQ),
1848            "BCN" => Some(Self::BCN),
1849            "BEG" => Some(Self::BEG),
1850            "BEL" => Some(Self::BEL),
1851            "BEY" => Some(Self::BEY),
1852            "BGI" => Some(Self::BGI),
1853            "BGR" => Some(Self::BGR),
1854            "BGW" => Some(Self::BGW),
1855            "BHY" => Some(Self::BHY),
1856            "BKK" => Some(Self::BKK),
1857            "BLR" => Some(Self::BLR),
1858            "BNA" => Some(Self::BNA),
1859            "BNE" => Some(Self::BNE),
1860            "BNU" => Some(Self::BNU),
1861            "BOD" => Some(Self::BOD),
1862            "BOG" => Some(Self::BOG),
1863            "BOM" => Some(Self::BOM),
1864            "BOS" => Some(Self::BOS),
1865            "BRU" => Some(Self::BRU),
1866            "BSB" => Some(Self::BSB),
1867            "BSR" => Some(Self::BSR),
1868            "BTS" => Some(Self::BTS),
1869            "BUD" => Some(Self::BUD),
1870            "BUF" => Some(Self::BUF),
1871            "BWN" => Some(Self::BWN),
1872            "CAI" => Some(Self::CAI),
1873            "CAN" => Some(Self::CAN),
1874            "CAW" => Some(Self::CAW),
1875            "CBR" => Some(Self::CBR),
1876            "CCP" => Some(Self::CCP),
1877            "CCU" => Some(Self::CCU),
1878            "CDG" => Some(Self::CDG),
1879            "CEB" => Some(Self::CEB),
1880            "CFC" => Some(Self::CFC),
1881            "CGB" => Some(Self::CGB),
1882            "CGD" => Some(Self::CGD),
1883            "CGK" => Some(Self::CGK),
1884            "CGO" => Some(Self::CGO),
1885            "CGP" => Some(Self::CGP),
1886            "CGY" => Some(Self::CGY),
1887            "CHC" => Some(Self::CHC),
1888            "CJB" => Some(Self::CJB),
1889            "CKG" => Some(Self::CKG),
1890            "CLE" => Some(Self::CLE),
1891            "CLO" => Some(Self::CLO),
1892            "CLT" => Some(Self::CLT),
1893            "CMB" => Some(Self::CMB),
1894            "CMH" => Some(Self::CMH),
1895            "CNF" => Some(Self::CNF),
1896            "CNI" => Some(Self::CNI),
1897            "CNN" => Some(Self::CNN),
1898            "CNX" => Some(Self::CNX),
1899            "COK" => Some(Self::COK),
1900            "COR" => Some(Self::COR),
1901            "CPH" => Some(Self::CPH),
1902            "CPT" => Some(Self::CPT),
1903            "CRK" => Some(Self::CRK),
1904            "CSX" => Some(Self::CSX),
1905            "CTU" => Some(Self::CTU),
1906            "CWB" => Some(Self::CWB),
1907            "CZL" => Some(Self::CZL),
1908            "CZX" => Some(Self::CZX),
1909            "DAC" => Some(Self::DAC),
1910            "DAD" => Some(Self::DAD),
1911            "DAR" => Some(Self::DAR),
1912            "DEL" => Some(Self::DEL),
1913            "DEN" => Some(Self::DEN),
1914            "DEX" => Some(Self::DEX),
1915            "DFW" => Some(Self::DFW),
1916            "DKR" => Some(Self::DKR),
1917            "DLC" => Some(Self::DLC),
1918            "DLP" => Some(Self::DLP),
1919            "DME" => Some(Self::DME),
1920            "DMM" => Some(Self::DMM),
1921            "DOH" => Some(Self::DOH),
1922            "DPS" => Some(Self::DPS),
1923            "DTW" => Some(Self::DTW),
1924            "DUB" => Some(Self::DUB),
1925            "DUR" => Some(Self::DUR),
1926            "DUS" => Some(Self::DUS),
1927            "DXB" => Some(Self::DXB),
1928            "EBB" => Some(Self::EBB),
1929            "EBL" => Some(Self::EBL),
1930            "EVN" => Some(Self::EVN),
1931            "EWR" => Some(Self::EWR),
1932            "EZE" => Some(Self::EZE),
1933            "FCO" => Some(Self::FCO),
1934            "FIH" => Some(Self::FIH),
1935            "FLN" => Some(Self::FLN),
1936            "FOC" => Some(Self::FOC),
1937            "FOR" => Some(Self::FOR),
1938            "FRA" => Some(Self::FRA),
1939            "FRU" => Some(Self::FRU),
1940            "FSD" => Some(Self::FSD),
1941            "FUK" => Some(Self::FUK),
1942            "FUO" => Some(Self::FUO),
1943            "GBE" => Some(Self::GBE),
1944            "GDL" => Some(Self::GDL),
1945            "GEO" => Some(Self::GEO),
1946            "GIG" => Some(Self::GIG),
1947            "GND" => Some(Self::GND),
1948            "GOT" => Some(Self::GOT),
1949            "GRU" => Some(Self::GRU),
1950            "GUA" => Some(Self::GUA),
1951            "GUM" => Some(Self::GUM),
1952            "GVA" => Some(Self::GVA),
1953            "GYD" => Some(Self::GYD),
1954            "GYE" => Some(Self::GYE),
1955            "GYN" => Some(Self::GYN),
1956            "HAK" => Some(Self::HAK),
1957            "HAM" => Some(Self::HAM),
1958            "HAN" => Some(Self::HAN),
1959            "HBA" => Some(Self::HBA),
1960            "HEL" => Some(Self::HEL),
1961            "HFA" => Some(Self::HFA),
1962            "HGH" => Some(Self::HGH),
1963            "HKG" => Some(Self::HKG),
1964            "HNL" => Some(Self::HNL),
1965            "HRE" => Some(Self::HRE),
1966            "HYD" => Some(Self::HYD),
1967            "HYN" => Some(Self::HYN),
1968            "IAD" => Some(Self::IAD),
1969            "IAH" => Some(Self::IAH),
1970            "ICN" => Some(Self::ICN),
1971            "IND" => Some(Self::IND),
1972            "ISB" => Some(Self::ISB),
1973            "IST" => Some(Self::IST),
1974            "ISU" => Some(Self::ISU),
1975            "IXC" => Some(Self::IXC),
1976            "JAX" => Some(Self::JAX),
1977            "JDO" => Some(Self::JDO),
1978            "JED" => Some(Self::JED),
1979            "JHB" => Some(Self::JHB),
1980            "JIB" => Some(Self::JIB),
1981            "JNB" => Some(Self::JNB),
1982            "JOG" => Some(Self::JOG),
1983            "JOI" => Some(Self::JOI),
1984            "JXG" => Some(Self::JXG),
1985            "KBP" => Some(Self::KBP),
1986            "KCH" => Some(Self::KCH),
1987            "KEF" => Some(Self::KEF),
1988            "KGL" => Some(Self::KGL),
1989            "KHH" => Some(Self::KHH),
1990            "KHI" => Some(Self::KHI),
1991            "KHN" => Some(Self::KHN),
1992            "KIN" => Some(Self::KIN),
1993            "KIV" => Some(Self::KIV),
1994            "KIX" => Some(Self::KIX),
1995            "KJA" => Some(Self::KJA),
1996            "KMG" => Some(Self::KMG),
1997            "KNU" => Some(Self::KNU),
1998            "KTM" => Some(Self::KTM),
1999            "KUL" => Some(Self::KUL),
2000            "KWE" => Some(Self::KWE),
2001            "KWI" => Some(Self::KWI),
2002            "LAD" => Some(Self::LAD),
2003            "LAS" => Some(Self::LAS),
2004            "LAX" => Some(Self::LAX),
2005            "LCA" => Some(Self::LCA),
2006            "LED" => Some(Self::LED),
2007            "LHE" => Some(Self::LHE),
2008            "LHR" => Some(Self::LHR),
2009            "LIM" => Some(Self::LIM),
2010            "LIS" => Some(Self::LIS),
2011            "LLK" => Some(Self::LLK),
2012            "LLW" => Some(Self::LLW),
2013            "LOS" => Some(Self::LOS),
2014            "LPB" => Some(Self::LPB),
2015            "LUN" => Some(Self::LUN),
2016            "LUX" => Some(Self::LUX),
2017            "LYS" => Some(Self::LYS),
2018            "MAA" => Some(Self::MAA),
2019            "MAD" => Some(Self::MAD),
2020            "MAN" => Some(Self::MAN),
2021            "MAO" => Some(Self::MAO),
2022            "MBA" => Some(Self::MBA),
2023            "MCI" => Some(Self::MCI),
2024            "MCT" => Some(Self::MCT),
2025            "MDE" => Some(Self::MDE),
2026            "MEL" => Some(Self::MEL),
2027            "MEM" => Some(Self::MEM),
2028            "MEX" => Some(Self::MEX),
2029            "MFM" => Some(Self::MFM),
2030            "MIA" => Some(Self::MIA),
2031            "MLA" => Some(Self::MLA),
2032            "MLE" => Some(Self::MLE),
2033            "MLG" => Some(Self::MLG),
2034            "MNL" => Some(Self::MNL),
2035            "MPM" => Some(Self::MPM),
2036            "MRS" => Some(Self::MRS),
2037            "MRU" => Some(Self::MRU),
2038            "MSP" => Some(Self::MSP),
2039            "MSQ" => Some(Self::MSQ),
2040            "MUC" => Some(Self::MUC),
2041            "MXP" => Some(Self::MXP),
2042            "NAG" => Some(Self::NAG),
2043            "NBO" => Some(Self::NBO),
2044            "NJF" => Some(Self::NJF),
2045            "NOU" => Some(Self::NOU),
2046            "NQN" => Some(Self::NQN),
2047            "NQZ" => Some(Self::NQZ),
2048            "NRT" => Some(Self::NRT),
2049            "NVT" => Some(Self::NVT),
2050            "OKA" => Some(Self::OKA),
2051            "OKC" => Some(Self::OKC),
2052            "OMA" => Some(Self::OMA),
2053            "ORD" => Some(Self::ORD),
2054            "ORF" => Some(Self::ORF),
2055            "ORN" => Some(Self::ORN),
2056            "OSL" => Some(Self::OSL),
2057            "OTP" => Some(Self::OTP),
2058            "OUA" => Some(Self::OUA),
2059            "PAT" => Some(Self::PAT),
2060            "PBH" => Some(Self::PBH),
2061            "PBM" => Some(Self::PBM),
2062            "PDX" => Some(Self::PDX),
2063            "PER" => Some(Self::PER),
2064            "PHL" => Some(Self::PHL),
2065            "PHX" => Some(Self::PHX),
2066            "PIT" => Some(Self::PIT),
2067            "PKX" => Some(Self::PKX),
2068            "PMO" => Some(Self::PMO),
2069            "PMW" => Some(Self::PMW),
2070            "PNH" => Some(Self::PNH),
2071            "POA" => Some(Self::POA),
2072            "POS" => Some(Self::POS),
2073            "PPT" => Some(Self::PPT),
2074            "PRG" => Some(Self::PRG),
2075            "PTY" => Some(Self::PTY),
2076            "QRO" => Some(Self::QRO),
2077            "QWJ" => Some(Self::QWJ),
2078            "RAO" => Some(Self::RAO),
2079            "RDU" => Some(Self::RDU),
2080            "REC" => Some(Self::REC),
2081            "RIC" => Some(Self::RIC),
2082            "RIX" => Some(Self::RIX),
2083            "RUH" => Some(Self::RUH),
2084            "RUN" => Some(Self::RUN),
2085            "SAN" => Some(Self::SAN),
2086            "SAP" => Some(Self::SAP),
2087            "SAT" => Some(Self::SAT),
2088            "SCL" => Some(Self::SCL),
2089            "SDQ" => Some(Self::SDQ),
2090            "SEA" => Some(Self::SEA),
2091            "SFO" => Some(Self::SFO),
2092            "SGN" => Some(Self::SGN),
2093            "SHA" => Some(Self::SHA),
2094            "SIN" => Some(Self::SIN),
2095            "SJC" => Some(Self::SJC),
2096            "SJK" => Some(Self::SJK),
2097            "SJO" => Some(Self::SJO),
2098            "SJP" => Some(Self::SJP),
2099            "SJU" => Some(Self::SJU),
2100            "SJW" => Some(Self::SJW),
2101            "SKG" => Some(Self::SKG),
2102            "SKP" => Some(Self::SKP),
2103            "SLC" => Some(Self::SLC),
2104            "SMF" => Some(Self::SMF),
2105            "SOD" => Some(Self::SOD),
2106            "SOF" => Some(Self::SOF),
2107            "SSA" => Some(Self::SSA),
2108            "STI" => Some(Self::STI),
2109            "STL" => Some(Self::STL),
2110            "STR" => Some(Self::STR),
2111            "SUV" => Some(Self::SUV),
2112            "SYD" => Some(Self::SYD),
2113            "SZX" => Some(Self::SZX),
2114            "TAO" => Some(Self::TAO),
2115            "TBS" => Some(Self::TBS),
2116            "TEN" => Some(Self::TEN),
2117            "TGU" => Some(Self::TGU),
2118            "TIA" => Some(Self::TIA),
2119            "TLH" => Some(Self::TLH),
2120            "TLL" => Some(Self::TLL),
2121            "TLV" => Some(Self::TLV),
2122            "TNA" => Some(Self::TNA),
2123            "TNR" => Some(Self::TNR),
2124            "TPA" => Some(Self::TPA),
2125            "TPE" => Some(Self::TPE),
2126            "TUN" => Some(Self::TUN),
2127            "TXL" => Some(Self::TXL),
2128            "TYN" => Some(Self::TYN),
2129            "UDI" => Some(Self::UDI),
2130            "UIO" => Some(Self::UIO),
2131            "ULN" => Some(Self::ULN),
2132            "URT" => Some(Self::URT),
2133            "VCP" => Some(Self::VCP),
2134            "VIE" => Some(Self::VIE),
2135            "VIX" => Some(Self::VIX),
2136            "VNO" => Some(Self::VNO),
2137            "VTE" => Some(Self::VTE),
2138            "WAW" => Some(Self::WAW),
2139            "WDH" => Some(Self::WDH),
2140            "WLG" => Some(Self::WLG),
2141            "WRO" => Some(Self::WRO),
2142            "XAP" => Some(Self::XAP),
2143            "XFN" => Some(Self::XFN),
2144            "XIY" => Some(Self::XIY),
2145            "XNH" => Some(Self::XNH),
2146            "YHZ" => Some(Self::YHZ),
2147            "YOW" => Some(Self::YOW),
2148            "YUL" => Some(Self::YUL),
2149            "YVR" => Some(Self::YVR),
2150            "YWG" => Some(Self::YWG),
2151            "YXE" => Some(Self::YXE),
2152            "YYC" => Some(Self::YYC),
2153            "YYZ" => Some(Self::YYZ),
2154            "ZAG" => Some(Self::ZAG),
2155            "ZDM" => Some(Self::ZDM),
2156            "ZRH" => Some(Self::ZRH),
2157            _ => None,
2158        }
2159    }
2160
2161    /// Returns all colos.
2162    pub const ALL: &'static [Colo] = &[
2163        Self::AAE,
2164        Self::ABJ,
2165        Self::ABQ,
2166        Self::ACC,
2167        Self::ACX,
2168        Self::ADB,
2169        Self::ADD,
2170        Self::ADL,
2171        Self::AGR,
2172        Self::AKL,
2173        Self::AKX,
2174        Self::ALA,
2175        Self::ALG,
2176        Self::AMD,
2177        Self::AMM,
2178        Self::AMS,
2179        Self::ANC,
2180        Self::ARI,
2181        Self::ARN,
2182        Self::ARU,
2183        Self::ASK,
2184        Self::ASU,
2185        Self::ATH,
2186        Self::ATL,
2187        Self::AUS,
2188        Self::BAH,
2189        Self::BAQ,
2190        Self::BCN,
2191        Self::BEG,
2192        Self::BEL,
2193        Self::BEY,
2194        Self::BGI,
2195        Self::BGR,
2196        Self::BGW,
2197        Self::BHY,
2198        Self::BKK,
2199        Self::BLR,
2200        Self::BNA,
2201        Self::BNE,
2202        Self::BNU,
2203        Self::BOD,
2204        Self::BOG,
2205        Self::BOM,
2206        Self::BOS,
2207        Self::BRU,
2208        Self::BSB,
2209        Self::BSR,
2210        Self::BTS,
2211        Self::BUD,
2212        Self::BUF,
2213        Self::BWN,
2214        Self::CAI,
2215        Self::CAN,
2216        Self::CAW,
2217        Self::CBR,
2218        Self::CCP,
2219        Self::CCU,
2220        Self::CDG,
2221        Self::CEB,
2222        Self::CFC,
2223        Self::CGB,
2224        Self::CGD,
2225        Self::CGK,
2226        Self::CGO,
2227        Self::CGP,
2228        Self::CGY,
2229        Self::CHC,
2230        Self::CJB,
2231        Self::CKG,
2232        Self::CLE,
2233        Self::CLO,
2234        Self::CLT,
2235        Self::CMB,
2236        Self::CMH,
2237        Self::CNF,
2238        Self::CNI,
2239        Self::CNN,
2240        Self::CNX,
2241        Self::COK,
2242        Self::COR,
2243        Self::CPH,
2244        Self::CPT,
2245        Self::CRK,
2246        Self::CSX,
2247        Self::CTU,
2248        Self::CWB,
2249        Self::CZL,
2250        Self::CZX,
2251        Self::DAC,
2252        Self::DAD,
2253        Self::DAR,
2254        Self::DEL,
2255        Self::DEN,
2256        Self::DEX,
2257        Self::DFW,
2258        Self::DKR,
2259        Self::DLC,
2260        Self::DLP,
2261        Self::DME,
2262        Self::DMM,
2263        Self::DOH,
2264        Self::DPS,
2265        Self::DTW,
2266        Self::DUB,
2267        Self::DUR,
2268        Self::DUS,
2269        Self::DXB,
2270        Self::EBB,
2271        Self::EBL,
2272        Self::EVN,
2273        Self::EWR,
2274        Self::EZE,
2275        Self::FCO,
2276        Self::FIH,
2277        Self::FLN,
2278        Self::FOC,
2279        Self::FOR,
2280        Self::FRA,
2281        Self::FRU,
2282        Self::FSD,
2283        Self::FUK,
2284        Self::FUO,
2285        Self::GBE,
2286        Self::GDL,
2287        Self::GEO,
2288        Self::GIG,
2289        Self::GND,
2290        Self::GOT,
2291        Self::GRU,
2292        Self::GUA,
2293        Self::GUM,
2294        Self::GVA,
2295        Self::GYD,
2296        Self::GYE,
2297        Self::GYN,
2298        Self::HAK,
2299        Self::HAM,
2300        Self::HAN,
2301        Self::HBA,
2302        Self::HEL,
2303        Self::HFA,
2304        Self::HGH,
2305        Self::HKG,
2306        Self::HNL,
2307        Self::HRE,
2308        Self::HYD,
2309        Self::HYN,
2310        Self::IAD,
2311        Self::IAH,
2312        Self::ICN,
2313        Self::IND,
2314        Self::ISB,
2315        Self::IST,
2316        Self::ISU,
2317        Self::IXC,
2318        Self::JAX,
2319        Self::JDO,
2320        Self::JED,
2321        Self::JHB,
2322        Self::JIB,
2323        Self::JNB,
2324        Self::JOG,
2325        Self::JOI,
2326        Self::JXG,
2327        Self::KBP,
2328        Self::KCH,
2329        Self::KEF,
2330        Self::KGL,
2331        Self::KHH,
2332        Self::KHI,
2333        Self::KHN,
2334        Self::KIN,
2335        Self::KIV,
2336        Self::KIX,
2337        Self::KJA,
2338        Self::KMG,
2339        Self::KNU,
2340        Self::KTM,
2341        Self::KUL,
2342        Self::KWE,
2343        Self::KWI,
2344        Self::LAD,
2345        Self::LAS,
2346        Self::LAX,
2347        Self::LCA,
2348        Self::LED,
2349        Self::LHE,
2350        Self::LHR,
2351        Self::LIM,
2352        Self::LIS,
2353        Self::LLK,
2354        Self::LLW,
2355        Self::LOS,
2356        Self::LPB,
2357        Self::LUN,
2358        Self::LUX,
2359        Self::LYS,
2360        Self::MAA,
2361        Self::MAD,
2362        Self::MAN,
2363        Self::MAO,
2364        Self::MBA,
2365        Self::MCI,
2366        Self::MCT,
2367        Self::MDE,
2368        Self::MEL,
2369        Self::MEM,
2370        Self::MEX,
2371        Self::MFM,
2372        Self::MIA,
2373        Self::MLA,
2374        Self::MLE,
2375        Self::MLG,
2376        Self::MNL,
2377        Self::MPM,
2378        Self::MRS,
2379        Self::MRU,
2380        Self::MSP,
2381        Self::MSQ,
2382        Self::MUC,
2383        Self::MXP,
2384        Self::NAG,
2385        Self::NBO,
2386        Self::NJF,
2387        Self::NOU,
2388        Self::NQN,
2389        Self::NQZ,
2390        Self::NRT,
2391        Self::NVT,
2392        Self::OKA,
2393        Self::OKC,
2394        Self::OMA,
2395        Self::ORD,
2396        Self::ORF,
2397        Self::ORN,
2398        Self::OSL,
2399        Self::OTP,
2400        Self::OUA,
2401        Self::PAT,
2402        Self::PBH,
2403        Self::PBM,
2404        Self::PDX,
2405        Self::PER,
2406        Self::PHL,
2407        Self::PHX,
2408        Self::PIT,
2409        Self::PKX,
2410        Self::PMO,
2411        Self::PMW,
2412        Self::PNH,
2413        Self::POA,
2414        Self::POS,
2415        Self::PPT,
2416        Self::PRG,
2417        Self::PTY,
2418        Self::QRO,
2419        Self::QWJ,
2420        Self::RAO,
2421        Self::RDU,
2422        Self::REC,
2423        Self::RIC,
2424        Self::RIX,
2425        Self::RUH,
2426        Self::RUN,
2427        Self::SAN,
2428        Self::SAP,
2429        Self::SAT,
2430        Self::SCL,
2431        Self::SDQ,
2432        Self::SEA,
2433        Self::SFO,
2434        Self::SGN,
2435        Self::SHA,
2436        Self::SIN,
2437        Self::SJC,
2438        Self::SJK,
2439        Self::SJO,
2440        Self::SJP,
2441        Self::SJU,
2442        Self::SJW,
2443        Self::SKG,
2444        Self::SKP,
2445        Self::SLC,
2446        Self::SMF,
2447        Self::SOD,
2448        Self::SOF,
2449        Self::SSA,
2450        Self::STI,
2451        Self::STL,
2452        Self::STR,
2453        Self::SUV,
2454        Self::SYD,
2455        Self::SZX,
2456        Self::TAO,
2457        Self::TBS,
2458        Self::TEN,
2459        Self::TGU,
2460        Self::TIA,
2461        Self::TLH,
2462        Self::TLL,
2463        Self::TLV,
2464        Self::TNA,
2465        Self::TNR,
2466        Self::TPA,
2467        Self::TPE,
2468        Self::TUN,
2469        Self::TXL,
2470        Self::TYN,
2471        Self::UDI,
2472        Self::UIO,
2473        Self::ULN,
2474        Self::URT,
2475        Self::VCP,
2476        Self::VIE,
2477        Self::VIX,
2478        Self::VNO,
2479        Self::VTE,
2480        Self::WAW,
2481        Self::WDH,
2482        Self::WLG,
2483        Self::WRO,
2484        Self::XAP,
2485        Self::XFN,
2486        Self::XIY,
2487        Self::XNH,
2488        Self::YHZ,
2489        Self::YOW,
2490        Self::YUL,
2491        Self::YVR,
2492        Self::YWG,
2493        Self::YXE,
2494        Self::YYC,
2495        Self::YYZ,
2496        Self::ZAG,
2497        Self::ZDM,
2498        Self::ZRH,
2499    ];
2500}
2501
2502impl fmt::Display for Colo {
2503    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2504        f.write_str(self.code())
2505    }
2506}