diff --git a/Dockerfile b/Dockerfile index fd27699..431ad09 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,7 +31,8 @@ COPY --from=builder /app/dist ./dist COPY prisma.config.ts ./ COPY prisma ./prisma COPY scripts ./scripts +COPY data ./data EXPOSE 8000 -CMD ["sh", "-c", ". /app/scripts/load-vault-env.sh && npx prisma migrate deploy && node dist/index.js"] +CMD ["sh", "-c", ". /app/scripts/load-vault-env.sh && npx prisma migrate deploy && npm run seed:reference && node dist/index.js"] diff --git a/data/africa_products.csv b/data/africa_products.csv new file mode 100644 index 0000000..89baefb --- /dev/null +++ b/data/africa_products.csv @@ -0,0 +1,17 @@ +product,hs6,label,note +Cocoa Beans,180100,"Cocoa beans; whole or broken, raw or roasted", +Shea Butter,151590,Fixed vegetable fats and oils; other (often used for shea butter),best-fit; shea butter not explicit in HS text +Cashew Nuts,080131,"Cashew nuts, fresh or dried, in shell", +Cashew Nuts,080132,"Cashew nuts, fresh or dried, shelled", +Palm Oil,151110,"Palm oil and its fractions, crude", +Palm Oil,151190,"Palm oil and its fractions, other than crude", +Coffee Beans,090111,Coffee; not roasted or decaffeinated, +Coffee Beans,090112,"Coffee; decaffeinated, not roasted", +Sesame Seeds,120740,"Sesamum seeds, whether or not broken", +Cotton,520100,Cotton; not carded or combed, +Maize,100590,"Maize (corn), other than seed", +Maize,100510,"Maize (corn), seed", +Sorghum,100700,Grain sorghum, +Natural Rubber,400110,"Natural rubber latex, in primary forms", +Natural Rubber,400122,Technically specified natural rubber (TSNR), +Natural Rubber,400129,"Natural rubber, other than latex/TSNR/smoked sheets", diff --git a/data/africa_suppliers.json b/data/africa_suppliers.json new file mode 100644 index 0000000..49147ed --- /dev/null +++ b/data/africa_suppliers.json @@ -0,0 +1,320 @@ +[ + { + "lei": "8945006MNLG7IEZZP361", + "name": "TCHIN LAIT", + "countryCode": "DZ", + "city": "BEJAIA" + }, + { + "lei": "894500MUZEAR4S9VUF19", + "name": "Fundo de Pensões da ANPG", + "countryCode": "AO", + "city": "Luanda" + }, + { + "lei": "254900FAFYBRYHYVQK50", + "name": "BENIN SUKUK", + "countryCode": "BJ", + "city": "Cotonou" + }, + { + "lei": "254900AMO5ZG20K1RC67", + "name": "The Genoril Family Foundation Trust", + "countryCode": "BW", + "city": "Gaborone" + }, + { + "lei": "2549006CD5SKSN5P3R39", + "name": "Coris Holding", + "countryCode": "BF", + "city": "Ouagadougou" + }, + { + "lei": "2138005FD9MF6EWMPQ38", + "name": "FINBANK S.A", + "countryCode": "BI", + "city": "BUJUMBURA" + }, + { + "lei": "894500K8QR1WMIRPTI48", + "name": "Banco Interatlântico, SA", + "countryCode": "CV", + "city": "Santiago" + }, + { + "lei": "2549004XTX9UX53WO914", + "name": "KAPPA PAY CAMEROON S.A", + "countryCode": "CM", + "city": "Douala" + }, + { + "lei": "213800EV35S633NZGJ73", + "name": "INTERIM IMPEX LTD", + "countryCode": "CF", + "city": "BELIZE CITY" + }, + { + "lei": "254900CLP4QJ5K9IQZ60", + "name": "FONDATION SAINT LUC", + "countryCode": "TD", + "city": "N'Djamena" + }, + { + "lei": "9845007F980D99B5B843", + "name": "Office de radio et télévision des Comores", + "countryCode": "KM", + "city": "Hahaia" + }, + { + "lei": "254900QFQHP2H1A18H13", + "name": "SOFIBANQUE SA", + "countryCode": "CD", + "city": "Kinshasa" + }, + { + "lei": "894500L731TNWUALQL85", + "name": "Suisse Capital Bank", + "countryCode": "CG", + "city": "kinshasa" + }, + { + "lei": "2549002ZE6ZX3NJ24F25", + "name": "NSIA BANQUE COTE D'IVOIRE", + "countryCode": "CI", + "city": "ABIDJAN" + }, + { + "lei": "213800AQZACUB1GRIO16", + "name": "INTERNATIONAL INVESTMENT BANK (DJIBOUTI) SA", + "countryCode": "DJ", + "city": "DJIBOUTI" + }, + { + "lei": "894500LXVN8OVSBU5Z07", + "name": "ORASCOM DEVELOPMENT EGYPT S.A.E.", + "countryCode": "EG", + "city": "Cairo" + }, + { + "lei": "8945006B93MEG50VOY83", + "name": "NOMEX SA", + "countryCode": "GQ", + "city": "MALABO" + }, + { + "lei": "213800QPN8GIV3HE7Y16", + "name": "OLD MUTUAL LIFE ASSURANCE COMPANY (ESWATINI) LIMITED", + "countryCode": "SZ", + "city": "MBABANE" + }, + { + "lei": "254900ODL6T3024W7T26", + "name": "Sahal Microfinance Institution S.C.", + "countryCode": "ET", + "city": "Jigjiga" + }, + { + "lei": "8945008IV1TVEZK9ZE10", + "name": "BATI INVEST DES TRAVAUX PUBLICS", + "countryCode": "GA", + "city": "LIBREVILLE" + }, + { + "lei": "254900UML6VPSEXUL552", + "name": "Sunu Pesa Company Ltd", + "countryCode": "GM", + "city": "BANJUL" + }, + { + "lei": "894500A44URWYLDKDZ48", + "name": "Quality Insurance PLC", + "countryCode": "GH", + "city": "Accra" + }, + { + "lei": "254900EGRWJ18XJTG823", + "name": "Diama Bank SA", + "countryCode": "GN", + "city": "Conakry" + }, + { + "lei": "5493000AUJHJ637VBW34", + "name": "MYA GB SA", + "countryCode": "GW", + "city": "BISSAU" + }, + { + "lei": "254900HMCSYV1XUOLH30", + "name": "GULF AFRICAN BANK LIMITED", + "countryCode": "KE", + "city": "NAIROBI" + }, + { + "lei": "549300OSGF21ECPL5U94", + "name": "PUBLIC OFFICERS' DEFINED CONTRIBUTION PENSION FUND", + "countryCode": "LS", + "city": "MASERU" + }, + { + "lei": "213800KIDQUEU39CA834", + "name": "DRAKE II INVESTMENT CORP.", + "countryCode": "LR", + "city": "MONROVIA" + }, + { + "lei": "254900SW9BNEN3IW0606", + "name": "Alsanam International Company for the Import of Transport Means and Their Accessories LLC", + "countryCode": "LY", + "city": "Tripoli" + }, + { + "lei": "254900R1V61IGBAHBH58", + "name": "ACEP Madagascar S.A", + "countryCode": "MG", + "city": "Antananarivo" + }, + { + "lei": "254900M75MKKXRG8UJ24", + "name": "General Alliance Insruance Limited", + "countryCode": "MW", + "city": "Blantyre" + }, + { + "lei": "2549004OGQDW7Z0YJK76", + "name": "APS SARL", + "countryCode": "ML", + "city": "Bamako" + }, + { + "lei": "2549003R3WIEWCSWMQ96", + "name": "CLEAR ECOLO CLEANER-SARL", + "countryCode": "MR", + "city": "Nouakchott" + }, + { + "lei": "984500UF141X3980DB32", + "name": "Schroders Capital Private Equity Asia Mauritius X Limited", + "countryCode": "MU", + "city": "TRIANON" + }, + { + "lei": "254900EXH5CAH7F1M005", + "name": "Amazon Data Services Morocco S.A.R.L.", + "countryCode": "MA", + "city": "Rabat" + }, + { + "lei": "254900LEOSX6Y17RPE51", + "name": "ACCESS BANK MOZAMBIQUE, SA", + "countryCode": "MZ", + "city": "Maputo" + }, + { + "lei": "254900G8YMA6ZH4G8R09", + "name": "Namibia Power Corporation (Proprietary) Limited", + "countryCode": "NA", + "city": "Windhoek" + }, + { + "lei": "2549004LW4WH2ME3K171", + "name": "MDT SECURITE", + "countryCode": "NE", + "city": "Niamey" + }, + { + "lei": "984500AF636E5F6B5D95", + "name": "CHIRON INDUSTRIES INTERNATIONAL LIMITED", + "countryCode": "NG", + "city": "Ikeja" + }, + { + "lei": "254900ZPUOPS6SOW2639", + "name": "AMAZON DATA SERVICES RWANDA LIMITED", + "countryCode": "RW", + "city": "Kigali" + }, + { + "lei": "254900BV6GST7KYEKK92", + "name": "GTI Bank Sarl", + "countryCode": "ST", + "city": "AGUA GRANDE" + }, + { + "lei": "9845000AF5YF96CAD954", + "name": "PHOENIX SENEGAL", + "countryCode": "SN", + "city": "DAKAR" + }, + { + "lei": "213800T7QXLMXOPGNH26", + "name": "ALLIANCE MARKETING GROUP INC.", + "countryCode": "SC", + "city": "MAHE" + }, + { + "lei": "254900S70K55I24R6A40", + "name": "BLOOM BANK AFRICA SIERRA LEONE LIMITED", + "countryCode": "SL", + "city": "FREETOWN" + }, + { + "lei": "213800JAG5A5QL1PA391", + "name": "SOMALIA REPUBLIC WIDOWS AND ORPHANS PENSION FUND", + "countryCode": "SO", + "city": "MOGADISHU" + }, + { + "lei": "213800UE2YQO9NQDF884", + "name": "TEREBINTH TOTAL RETURN FUND EN COMMANDITE PARTNERSHIP", + "countryCode": "ZA", + "city": "BELLVILLE" + }, + { + "lei": "894500TQ3YLYPWW51276", + "name": "Charter One Bank", + "countryCode": "SS", + "city": "Juba" + }, + { + "lei": "254900MWS2H21N14TX74", + "name": "مكتب الإيثار للإستخدام الخارجي", + "countryCode": "SD", + "city": "Khartoum" + }, + { + "lei": "9845003EADEAAB51B135", + "name": "FLAMINGO COMPANY LIMITED", + "countryCode": "TZ", + "city": "Kinondoni" + }, + { + "lei": "254900R6Y1CBT4SMXO83", + "name": "ODS - CONSEIL", + "countryCode": "TG", + "city": "Lome" + }, + { + "lei": "4117KJVBXU8AY69N0912", + "name": "Delta Express Line", + "countryCode": "TN", + "city": "Rades" + }, + { + "lei": "984500864K9557746371", + "name": "Brewfinity Uganda Limited", + "countryCode": "UG", + "city": "KAMPALA" + }, + { + "lei": "9845000A7DCXBD946O23", + "name": "VISAKA MINING AND MINERALS ZAMBIA LIMITED", + "countryCode": "ZM", + "city": "LUSAKA" + }, + { + "lei": "254900X407BUVRO26U77", + "name": "Delta Gold Zimbabwe (Private) Limited", + "countryCode": "ZW", + "city": "Harare" + } +] diff --git a/data/unlocode_africa_road_terminals.csv b/data/unlocode_africa_road_terminals.csv new file mode 100644 index 0000000..8101fb5 --- /dev/null +++ b/data/unlocode_africa_road_terminals.csv @@ -0,0 +1,1381 @@ +code,name,country,latitude,longitude,function,subdivision +AOBEL,Belas,AO,-8.916667,13.166667,--3-----,LUA +AOMDZ,Maquela Do Zombo,AO,-6.066667,15.1,--3-----,UIG +AOMTL,Matala,AO,-14.733333,15.033333,--3-----,HUI +AOMOS,Mocamedes,AO,-15.166667,12.15,--3-----, +AONQI,Nóqui,AO,-5.85,13.433333,123-----, +AOSTC,Santa Clara,AO,-7.366667,14.733333,--3--6--,UIG +AOVNA,Viana,AO,-8.9,13.366667,--3-----,LUA +BFBER,Bérégadougou,BF,10.766667,-4.75,-23-----, +BFBRO,Boromo,BF,11.75,-2.933333,--3-----,BAL +BFBUS,Bousse,BF,12.65,-1.883333,--3-----,OUB +BFHOU,Houndé,BF,11.5,-3.516667,--3-----,TUI +BFKOS,Kossodo,BF,12.416667,-1.466667,--3-----, +BFKOU,Koudougou,BF,12.233333,-2.366667,-23-----, +BFKOR,Kourouma,BF,11.616667,-4.8,--3-----, +BFMAN,Mana,BF,11.866667,-3.366667,--3-----,BAL +BFNAT,Natougou,BF,12.616667,1.683333,--3-----,TAP +BFORO,Orodara,BF,10.983333,-4.916667,--3-----,KEN +BFPEN,Péni,BF,10.95,-4.483333,--3-----,HOU +BFPOU,Poura,BF,10.65,-3.083333,--3-----, +BFSAP,Saponé,BF,12.1,-1.55,--3-----,BAZ +BFTEM,Tema,BF,13.083333,-1.783333,--3-----,PAS +BFWON,Wona (Ouona),BF,11.966667,-3.416667,--3-----,TUI +BFYKP,Yako,BF,12.966667,-2.266667,--3-----,PAS +BFLIG,Yaramoko,BF,11.8,-3.283333,--3-----,MOU +BFZIG,Ziga,BF,12.616667,-0.816667,--3-----, +BFOB2,Ziniaré,BF,12.583333,-1.3,1-3-----,OUB +BIBBZ,Bubanza,BI,-3.083333,29.383333,--3-----,BB +BIBRR,Bururi,BI,-3.95,29.616667,--3-----,BR +BICKZ,Cankuzo,BI,-3.216667,30.55,--3-----,CA +BICBK,Cibitoke,BI,-3.333333,29.366667,1-3-----,BM +BIKKB,Karuzi,BI,-3.1,30.15,--3-----,KR +BIKYZ,Kayanza,BI,-2.916667,29.616667,--3-----,KY +BIMMB,Makamba,BI,-4.133333,29.8,--3-----,MA +BIMUR,Muramvya,BI,-3.266667,29.616667,--3-----,MU +BIMYG,Muyinga,BI,-2.833333,30.333333,--3-----,MY +BIMWM,Mwaro,BI,-3.516667,29.7,--3-----,MU +BINGZ,Ngozi,BI,-2.9,29.816667,--3-----,NG +BIRUM,Rumonge,BI,-3.966667,29.433333,--3-----,RM +BIRUT,Rutana,BI,-3.916667,30.0,--3-----,RT +BIRUY,Ruyigi,BI,-3.466667,30.233333,--3-----,RY +BJAMV,Abomey-Calavi,BJ,6.45,2.35,--3-----,AQ +BJAGT,Agbanta,BJ,6.616667,2.45,--3-----, +BJBOH,Bohicon,BJ,7.2,2.066667,-23-----, +BJDDJ,Djidja,BJ,7.333333,1.933333,--3-----,ZO +BJGLA,Glazoué,BJ,7.966667,2.3,-23-----, +BJLKS,Lokossa,BJ,6.633333,1.716667,--3-----,MO +BJDA3,Ndali,BJ,9.85,2.716667,--3-----,BO +BJOIH,Ouidah,BJ,6.366667,2.083333,--3-----,AQ +BJPTN,Porto-Novo,BJ,6.483333,2.616667,123-----,OU +BJTAN,Tanguiéta,BJ,10.616667,1.266667,--3-----, +BWFRW,Francistown,BW,-21.166667,27.516667,-234-6--,NE +BWGBE,Gaborone,BW,-24.666667,25.916667,--3456--, +BWLET,Letlhakane,BW,-21.416667,25.583333,--3-----, +BWMAH,Mahalapye,BW,-23.1,26.833333,123-----, +BWMGS,Mogoditshane,BW,-24.616667,25.85,--3-----,KW +BWPAL,Palapye,BW,-22.566667,27.133333,-23-----, +BWRSA,Ramotswa,BW,-24.866667,25.816667,-23-----, +BWSER,Serowe,BW,-22.383333,26.7,--3-----, +CDANG,Ango,CD,4.016667,25.866667,--3-----, +CDARU,Aru,CD,2.866667,30.833333,--3-----,OR +CDBNW,Banana,CD,6.016667,12.4,1-3-----, +CDBUT,Butembo,CD,0.15,29.283333,--3-----,NK +CDKSI,Kasindi,CD,0.5,29.683333,--3-----,NK +CDKPU,Kipushi,CD,-11.75,27.233333,-23-----, +CDLKS,Likasi,CD,-10.983333,26.733333,-23-----,KA +CDMGH,Mahagi,CD,2.3,30.983333,--3-----,OR +CDMKL,Makala,CD,2.816667,24.716667,123-----, +CDMWG,Mwadingusha,CD,-10.75,27.233333,--34----,KA +CDNYN,Nyunzu,CD,-5.95,28.016667,--3-----,TA +CDRR3,Patra,CD,-4.716667,11.95,--3-----,BC +CDSKA,Sakania,CD,-12.75,28.55,-23-----,KA +CDTNK,Tenke,CD,-11.366667,26.7,--3-----,KA +CDWAL,Walikale,CD,-1.4,28.05,--3-----,NK +CDWAT,Watsa,CD,3.05,29.533333,--3-----,OR +CFBOG,Bogoto,CF,4.95,17.05,--3-----, +CFMKI,Mboki,CF,5.316667,25.966667,--345---,HM +CFTOG,Togo,CF,5.5,21.716667,1234----, +CGMBI,Mbinda,CG,-2.1,12.866667,-23-----, +CGMOS,Mossaka,CG,-1.216667,16.8,1-3-----, +CGFTX,Owando Apt,CG,-0.966667,16.0,--34----, +CGOYO,Oyo,CG,1.0,15.9,1-3-----, +CIADZ,Adzopé,CI,6.1,-3.85,--3-----, +CIAGB,Agboville,CI,5.933333,-4.216667,-23-----, +CIASS,Assinie-Mafia,CI,5.116667,-3.283333,1-3-----, +CIBAO,Baobab Terminal,CI,4.95,-4.55,1-3-----, +CIBGV,Bingerville,CI,5.35,-3.9,--3-----,01 +CIBON,Bonoua,CI,5.266667,-3.6,--3-----, +CIDAB,Dabou,CI,5.316667,-4.366667,1-3-----, +CIDJB,Djibi,CI,5.45,-3.983333,--3-----,01 +CIFRE,Fresco,CI,5.083333,-5.566667,1-3-----, +CIGGN,Gagnoa,CI,6.133333,-5.933333,--34----, +CIGLU,Grand Lahou,CI,5.133333,-5.016667,1-3-----, +CIGUI,Guiembé,CI,9.233333,-5.716667,-23-----,SV +CIGGO,Guiglo,CI,6.533333,-7.483333,--34----, +CIKOU,Koumassi,CI,5.283333,-3.966667,--3-----,01 +CINKL,Nakala,CI,8.466667,-4.266667,--3-----, +CISPY,San-Pédro,CI,4.733333,-6.616667,1-34----,09 +CISGL,Séguéla,CI,7.95,-6.666667,--3-----, +CISFR,Sinfra,CI,6.616667,-5.916667,--3-----, +CITIA,Tiassalé,CI,5.883333,-4.816667,--3-----, +CIYGN,Yopougon,CI,5.333333,-4.066667,--3-----,01 +CIYOA,Yopougon-Attie,CI,5.35,-4.066667,--3-----,16 +CMBEL,Bélabo,CM,4.933333,13.3,-23-----,ES +CMBNB,Bonabéri,CM,4.083333,9.65,--3-----,LT +CMEBT,Ebomé Terminal,CM,2.8,9.816667,-23-----, +CMEDA,Edéa,CM,3.766667,10.116667,-23-----, +CMGOU,Garoua,CM,9.3,13.4,1-34----,NO +CMGRB,Garoua Boulaï,CM,5.883333,14.55,--3-5---,ES +CMLIM,Limbe,CM,4.016667,9.216667,123-----, +CMMBA,Mbalmayo,CM,3.516667,11.5,--3-----,CE +CMMGA,Meiganga,CM,6.516667,14.3,--3-----,AD +CMMOU,Moudi Terminal,CM,4.116667,8.483333,1-3-----, +CMNDP,Ndop,CM,6.0,10.416667,--3-----,NW +CMNGE,Ngaoundéré,CM,7.316667,13.583333,-23-----,AD +CMNKS,Nkongsamba,CM,4.933333,9.933333,-234----, +CMVIC,Victoria,CM,4.0,9.183333,--3-----,SW +CVASS,Assomada,CV,15.1,-23.683333,--3-----,CA +CVMIN,Mindelo,CV,16.883333,-25.0,1-3-----,SV +CVPOI,Porto Inglez,CV,15.133333,-23.216667,--3-----,MA +CV4SM,Santiago,CV,15.133333,-23.533333,--3-----,MA +DJDMJ,Damerjog,DJ,11.483333,43.183333,1-3-----,AR +DJPOD,Djibouti,DJ,11.583333,43.133333,123-----,DJ +DJDCT,Doraleh Container Terminal,DJ,11.6,44.6,1-3-----,DJ +DJMHI,Musha,DJ,11.333333,43.016667,--34----, +DZQBP,Ain Beida,DZ,31.933333,6.583333,--3-----,04 +DZA8L,Ain Benian,DZ,36.8,2.916667,--3-----,42 +DZADA,Aïn Defla,DZ,36.266667,1.966667,--3-----,44 +DZQEH,'Ain El Hadjar,DZ,34.766667,1.5,--3-----, +DZQIM,Ain M'Lila,DZ,36.033333,6.566667,--3-----,04 +DZTCT,Ain Temouchent,DZ,35.283333,-1.133333,--3-----, +DZATT,Ain Touta,DZ,35.366667,5.883333,--3-----,05 +DZAZO,Aïn Zaouia,DZ,36.533333,3.883333,--3-----,15 +DZALG,Alger (Algiers),DZ,36.75,3.05,123456--,16 +DZAZW,Arzew,DZ,35.866667,-0.316667,123-----, +DZZZA,Azazga,DZ,36.75,4.366667,--3-----,15 +DZEZZ,Bab Ezzouar,DZ,36.716667,3.183333,--3-----,16 +DZBRK,Baraki,DZ,36.666667,3.083333,--3-----,42 +DZZZB,Barika,DZ,35.383333,5.383333,--3-----,05 +DZQBT,Bettioua,DZ,35.8,-0.25,--3-----,31 +DZD2H,Bir Mourad Rais,DZ,36.733333,3.033333,--3-----,16 +DZBIM,Bir Mourad Raïs,DZ,36.733333,3.033333,--3-----,42 +DZG2H,Birkhadem,DZ,36.716667,3.05,--3-----,16 +DZBIR,Birtouta,DZ,36.65,3.0,--3-----,42 +DZBOR,Bordj Bou Arreridj,DZ,36.066667,4.766667,-23--6--,34 +DZBEK,Bordj El Kiffan,DZ,36.733333,3.183333,--3-----,16 +DZBOM,Bordj Menaïel,DZ,36.733333,3.7,-23-----, +DZZAB,Bou Kadir,DZ,36.066667,1.116667,--3-----,02 +DZQFD,Boufarik,DZ,36.55,2.866667,--3-----,09 +DZBNN,Bouinan,DZ,36.516667,2.983333,--3-----,09 +DZQBZ,Bouira,DZ,36.383333,3.9,--3-----, +DZBOU,Boumerdas,DZ,36.766667,3.466667,--3-----,35 +DZCAN,Canastel,DZ,35.75,-0.55,--3-----,31 +DZCEA,Cheghoum-el-Aid,DZ,36.15,6.15,--3-----,43 +DZF4U,Cheraga,DZ,36.766667,2.95,--3-----,16 +DZCHE,Cherchell,DZ,36.6,2.2,1-3-----, +DZCTN,Chetouane,DZ,34.916667,-1.283333,--3-----,13 +DZCLF,Chlef,DZ,36.15,1.333333,--3--6--,02 +DZCOL,Collo,DZ,37.016667,6.55,1-3-----, +DZDEB,Dar el Beïda,DZ,36.7,3.2,--3-----,16 +DZDEL,Dellys,DZ,36.916667,3.883333,1-3-----, +DZQDJ,Djelfa,DZ,34.666667,3.25,--3-----,17 +DZDEM,Draa el Mizan,DZ,36.533333,3.816667,--3-----, +DZDRA,Draria,DZ,36.733333,3.0,--3-----,42 +DZQAS,Ech Cheliff,DZ,36.216667,1.333333,--3-----, +DZZAE,El Eulma,DZ,36.15,5.683333,--3-----,19 +DZQLK,El Kala,DZ,36.75,8.433333,--3-----,36 +DZORX,El Kerma,DZ,35.6,-0.566667,--3-----,31 +DZEMD,El Madania,DZ,36.75,3.066667,--3-----,16 +DZELM,El Milia,DZ,36.366667,6.583333,--3-----,25 +DZGHA,Ghardaïa,DZ,32.483333,3.666667,1-34----, +DZGHZ,Ghazaouet,DZ,35.1,-1.85,123-----,13 +DZQGE,Guelma,DZ,36.466667,7.433333,--3-----,24 +DZHAE,Hammedi,DZ,36.666667,3.266667,--3-----,35 +DZHME,Hassi Messaoud,DZ,31.666667,6.133333,--34----, +DZRME,Hassi R'Mel,DZ,32.916667,3.266667,--3-----,03 +DZINA,I-N-Amenas,DZ,28.05,9.55,--3--6--,33 +DZQKJ,Kenchela,DZ,35.45,7.133333,--3-----,40 +DZKHM,Khemis Miliana,DZ,36.25,2.2,-23-----, +DZKHE,Kherrata,DZ,36.483333,5.266667,1-3-----, +DZKOB,Kouba,DZ,36.716667,3.083333,--3--6--,16 +DZANI,L'Arbaa Naït Irathen,DZ,36.633333,4.183333,--3-----, +DZQMG,Maghnia,DZ,34.85,-1.716667,--3-----,13 +DZMSR,Mansoûra,DZ,34.85,-1.333333,--3-----,13 +DZQED,Medea,DZ,36.266667,2.75,--3-----,26 +DZMEF,Meftah,DZ,36.616667,3.216667,--3-----,16 +DZMIL,Mila,DZ,36.45,6.25,--3-----,43 +DZMHA,Mohammadia,DZ,36.733333,3.133333,--3-----,16 +DZQMW,Mohammadia,DZ,35.583333,0.683333,--3-----,29 +DZZZS,M'sila,DZ,35.7,4.55,--3-----,28 +DZOTL,Oued Tlélat,DZ,35.55,-0.45,--3-----,31 +DZOYA,Ouled Yaïch,DZ,35.833333,1.0,--3-----,09 +DZQMH,Oum El Bouaghi,DZ,35.883333,7.116667,--3-----,04 +DZQQU,Qued Rhiou,DZ,35.966667,0.916667,--3-----,48 +DZQOZ,Qued Zenati,DZ,36.333333,7.166667,--3-----,25 +DZREG,Reghaia,DZ,36.733333,3.333333,--3-----,35 +DZQZN,Relizane,DZ,35.75,0.616667,--3-----,48 +DZRMC,Remchi,DZ,35.05,-1.416667,--3-----,13 +DZQDZ,Saïda,DZ,34.833333,1.5,--3-----,20 +DZSBY,Salah Bey,DZ,35.85,5.283333,--3-----,16 +DZSAO,Saoula,DZ,36.7,3.016667,--3-----,42 +DZQDT,Sedrata,DZ,36.133333,7.516667,--3-----,41 +DZSET,Sétif,DZ,36.183333,5.4,-23-----, +DZSBA,Sidi Bel Abbes,DZ,35.183333,-0.633333,--3--6--, +DZQIL,Sig,DZ,35.533333,-0.183333,--3-----,31 +DZSKK,Skikda,DZ,36.866667,6.9,--34----,21 +DZQSK,Souk Ahras,DZ,36.283333,7.95,--3-----,41 +DZBO7,Sour El Ghozlane,DZ,36.15,3.683333,--3-----,10 +DZTAH,Taher,DZ,36.766667,5.883333,--3-----, +DZTIZ,Tizi Ouzou,DZ,36.716667,4.05,--3-----,01 +DZTLM,Tlemcen,DZ,34.866667,-1.3,1234-6--,13 +EGTRC,10th of Ramadan City,EG,30.3,31.75,--3--6--, +EGSOC,6th October,EG,29.816667,31.05,--3--6--,GZ +EGAGN,Abu Ghosoun,EG,24.45,35.2,1-3-----, +EGADA,Al Adabiyah,EG,29.866667,32.466667,123-----, +EGYYU,Al Fayyum,EG,29.3,30.833333,--3-----, +EGAGZ,Al Jizah (Giza),EG,30.0,31.216667,--3-----,GZ +EGALM,Al Mansurah,EG,31.033333,31.366667,-23-----,DK +EGQEM,Al Manzilah,EG,31.15,31.933333,--3-----,DK +EGELK,Al Qantarah El Sharqiyya,EG,30.85,32.3,--3-----,SIN +EGAQU,Al Qusayr,EG,26.1,34.283333,1-3-----,BA +EGALA,Almazah,EG,30.083333,31.35,--3-----,C +EG6HB,An Nubariyah,EG,30.65,30.066667,--3-----,BH +EGSUZ,As Suways (Suez),EG,29.966667,32.516667,1-3-----,SUZ +EGAST,Asyut,EG,27.183333,31.183333,-23-----,AST +EGQZZ,Az Zaqaziq,EG,30.583333,31.5,--3-----,SHR +EGBNH,Banha,EG,30.45,31.183333,--3--6--,MNF +EGBBS,Bilbays,EG,30.416667,31.566667,--3-----,SHR +EGHBE,Burj al Arab,EG,30.9,29.55,--34-6--, +EGDOM,Dome Marina,EG,29.433333,32.483333,1-3-----,SUZ +EGDAM,Dumyat (Damietta),EG,31.416667,31.816667,1234----, +EGQEK,El Mahalla El Kobra,EG,30.983333,31.166667,--3-----,GH +EGMSR,El Mansoura,EG,31.05,31.383333,--3-----,DK +EGGUA,El-Guna (El Gouna),EG,27.383333,33.666667,1-3-----,BA +EGIYM,Faiyum,EG,29.3,30.833333,--3-----,FYM +EGGAL,Galala Marina,EG,29.466667,32.433333,1-3-----,SUZ +EGQGX,Gerga,EG,26.55,32.466667,--3-----, +EGQHW,Helwan,EG,29.85,31.333333,--3-----, +EGIKU,Idku,EG,31.3,30.3,123-----, +EGIYB,Itay Al Barud,EG,30.883333,30.65,--3-----,BH +EGISA,Izbat Sidi Ali Murghib,EG,31.083333,29.866667,--3-----,ALX +EGKEZ,Kafr az Zayyat,EG,30.816667,30.8,--3-----,GH +EGMAL,Mallawi,EG,27.716667,30.833333,--3-----,MN +EGEPP,Marsa Egyptian Propylene & Polypropylene,EG,31.3,32.15,1-3-----,PTS +EGOPT,Marsa Oriental Petrochemicals,EG,29.683333,32.35,1-3-----,SUZ +EGQFM,Meet Ghamr,EG,30.716667,31.25,--3-----,DK +EGQAH,Nasr City,EG,30.05,31.366667,--3-----,C +EGNUB,Nubaria,EG,30.65,30.033333,--3-----, +EGBRO,Obour,EG,30.2,31.45,--3-----,KB +EGODP,October Dry Port,EG,29.816667,30.666667,-23--6--,GZ +EGGLB,Port Ghalib,EG,25.533333,34.633333,1-3-----,BA +EGPSE,Port Said East,EG,31.216667,32.35,123--6--,SUZ +EGPSW,Port Said West,EG,31.25,32.283333,--3-----,SUZ +EGMEA,Porto Marina El Alamein,EG,30.816667,28.983333,1-3-----,MT +EGPRA,Rashid,EG,31.4,30.4,--3-----,BH +EGSAD,Sadat City,EG,30.366667,30.5,--3--6--,BH +EGSKR,Sakr Koreish,EG,31.3,31.133333,--3-----, +EGSAL,Sallum,EG,31.566667,25.15,-23-----, +EGQUH,Shebin Al Kawm,EG,30.55,31.0,--3-----,MNF +EGSBY,Soma Bay Marina,EG,26.85,33.983333,1-3-----,BA +EGTAN,Tanta,EG,30.766667,30.983333,-23-----,GH +ERASM,Asmara,ER,15.333333,38.933333,-2345---,MA +ERASA,Assab,ER,13.0,42.733333,1-34----,DK +ERMSW,Massawa (Mitsiwa),ER,15.6,39.45,1234----,SK +ETALK,Assella,ET,7.95,39.133333,--3-----,OR +ETBED,Bedele,ET,8.45,36.35,--3-----,OR +ETDAD,Dolo Odo,ET,4.183333,42.066667,--3-----,SO +ETDKM,Dukem,ET,8.8,38.9,--3-----,OR +ETGIB,Gibe,ET,7.75,37.183333,--3-----,OR +ETGZA,Giza,ET,13.683333,39.5,--3-----,TI +ETHAR,Harar,ET,9.3,42.116667,--3-----,HA +ETHRT,Hartishek,ET,9.15,43.35,--3-----,SO +ETHOG,Holeta Genet,ET,9.05,38.5,--3-----,OR +ETJIJ,Jijiga,ET,9.35,42.8,--3-----, +ETKOA,Kombolcha,ET,11.083333,39.733333,--3-----,AM +ETMEK,Mekele,ET,13.483333,39.466667,--3-----,TI +ETNZR,Nazret,ET,8.55,39.266667,--3-----, +ETW8N,Nefas Mewch'a,ET,11.733333,38.466667,--3-----,AM +ETPGN,Pugnido,ET,7.633333,34.25,--3-----,GA +ETSEB,Sebeta,ET,8.916667,38.616667,--3-----,OR +ETS3M,Semera,ET,11.783333,41.0,--3-----,AF +ETS7O,Shashemene,ET,7.2,38.6,--3-----,OR +ETSRE,Shire,ET,14.133333,38.4,--3-----,TI +ETSOD,Sodo,ET,8.583333,35.816667,--3-----, +GABEL,Belleville,GA,0.033333,11.033333,--3-----, +GAKOU,Koulamoutou,GA,-1.116667,12.5,--34----, +GALTL,Lastoursville,GA,-0.816667,12.7,--34----,7 +GAMVX,Minvoul,GA,2.15,12.116667,--34----,9 +GAMVE,Mvengué,GA,-1.65,13.383333,--3-----, +GANKA,Nkan,GA,0.7,9.633333,--34----,1 +GANGI,Owendo,GA,0.283333,9.5,-23-----,1 +GAWNE,Wora Na Ye,GA,-2.35,9.333333,--34----, +GHABK,Abeka,GH,5.6,-0.233333,--3-----,AA +GHABO,Abor,GH,6.05,0.866667,--3-----,TV +GHASB,Akosombo,GH,6.3,0.5,--3-----,EP +GHASA,Asamankese,GH,5.866667,-0.666667,--3-----, +GHBEN,Benin,GH,5.6,-1.0,--3-----,CP +GHBKM,Berekum,GH,7.45,-2.566667,--3-----, +GHBOG,Bogoso,GH,5.566667,-2.016667,--3-----,WP +GHNPU,Buipe,GH,8.783333,-1.533333,--3-----,NP +GHEJU,Ejura,GH,7.366667,-1.366667,--3-----, +GHHOV,Ho,GH,6.6,0.466667,--3-----,TV +GHKSA,Kasoa,GH,5.516667,-0.466667,--3-----,CP +GHKOF,Koforidua,GH,6.083333,-0.25,-23-----, +GHKGO,Konongo,GH,6.616667,-1.2,--3-----, +GHKPA,Kpandu,GH,7.0,0.283333,--3-----, +GHKPE,Kpetoe,GH,6.55,0.683333,--3-----, +GHKAI,Kumasi,GH,6.683333,-1.616667,--3-----,AH +GHKMU,Kumawu,GH,6.9,-1.266667,--3-----, +GHKYB,Kyebi,GH,6.166667,-0.55,-23-----,EP +GHLAW,Lawra,GH,10.65,-2.866667,--3-----,UW +GHLEG,Legon,GH,5.65,-0.2,--3-----, +GHMAD,Madina,GH,5.683333,-0.166667,--3-----,AA +GHNAV,Navrongo,GH,10.883333,-0.25,--3-----,UE +GHNSA,Nsawam,GH,5.8,-0.35,-23-----, +GHOBU,Obuasi,GH,6.2,-1.666667,-23-----, +GHODA,Oda,GH,5.916667,-6.5,--3-----, +GHODK,Odorko,GH,5.583333,-0.266667,--3-----,AA +GHSOM,Somanya,GH,6.1,-0.166667,--3-----,EP +GHTWA,Tarkwa,GH,5.3,-1.983333,--3-----,AH +GHT8G,Techiman,GH,7.583333,-1.933333,--3-----,BA +GHTSH,Teshie,GH,5.583333,-0.1,-23-----,AA +GHWA2,Wa,GH,10.066667,-2.5,--3-----,UW +GHWWL,Walewale,GH,10.35,-0.8,--3-----,NP +GHWEI,Weija,GH,5.566667,-0.333333,--3-----,AA +GMFKD,Faji Kunda,GM,13.416667,-16.666667,--3-----,B +GMKFG,Kanifing,GM,13.433333,-16.666667,--3-----,B +GMKAR,Karanai,GM,13.216667,-16.15,--3-----, +GMYDM,Yundum,GM,13.333333,-16.666667,--3-----,W +GNBEL,Bel-Air,GN,10.233333,-14.466667,1-3-----,BF +GNBEY,Beyla,GN,8.683333,-8.633333,--3-----,BE +GNBFA,Boffa,GN,10.183333,-14.033333,1-3-----,BF +GNCOY,Coyah,GN,9.7,-13.35,--3-----,CO +GNDAB,Dabola,GN,10.733333,-11.116667,--3-----,DB +GNDPL,Dapilon,GN,10.85,-14.5,1-3-----,BK +GNDIN,Dinguiraye,GN,11.283333,-10.716667,--3-----,DI +GNPMT,Dougoula,GN,10.75,-14.55,123-----,BK +GNDKA,Dubreka,GN,9.783333,-13.5,1-3-----,DU +GNFRM,Farmoreya,GN,9.266667,-13.033333,--3-----,FO +GNFOR,Forecariah,GN,9.433333,-13.083333,--3-----,FO +GNGAO,Gaoual,GN,11.75,-13.2,--3-----,GA +GNGUE,Gueckedou,GN,80.566667,-10.133333,--3-----,GU +GNKGB,Kagbélen,GN,9.716667,-13.516667,--3-----,DU +GNKMC,Kamsar,GN,10.666667,-14.583333,1234-6--,BK +GNKTG,Katougouma,GN,0.05,-14.45,1-3-----,BK +GNKER,Kerouane,GN,9.266667,-9.016667,--3-----,KE +GNKDA,Kindia,GN,10.05,-12.85,-23-----,KD +GNKIN,Kiniéro,GN,10.4,-9.75,--3-----,KO +GNKOU,Koubia,GN,10.066667,-13.633333,--3-----,KB +GNKRS,Kouroussa,GN,10.65,-9.883333,--3-----,KO +GNLEL,Lélouma,GN,11.433333,-12.683333,--3-----,LE +GNLOL,Lola,GN,7.8,-8.533333,--3-----,LO +GNMLI,Mali,GN,12.05,-12.3,--3-----,ML +GNMMO,Mamou,GN,10.366667,-12.083333,--3-----,MM +GNMDN,Mandiana,GN,10.633333,-8.7,--3-----,MD +GNPIT,Pita,GN,11.05,-12.4,--3-----,PI +GNSBL,Sambailo,GN,12.583333,-13.366667,--34----,KN +GNSGD,Sangarédi,GN,11.1,-13.816667,-23--6--,BK +GNTEL,Télimélé,GN,10.9,-13.033333,--3-----,TE +GNTOU,Tougué,GN,11.45,-11.666667,--3-----,TO +GNYOM,Yomou,GN,7.566667,-9.266667,--3-----,YO +GQKNT,Ebebiyín,GQ,2.15,11.316667,-23-----,KN +GQGEM,Mongomeyen,GQ,1.7,11.016667,--34----,WN +GQMON,Mongomo,GQ,1.616667,11.3,--3-----,WN +GQABU,San Antonio de Palé,GQ,-1.4,5.6,--3-----,AN +GWOXB,Bissau,GW,11.85,-15.583333,1-345---,BS +GWBOL,Bolama,GW,11.583333,-15.466667,1-3-----, +GWBQE,Bubaque,GW,11.283333,-15.833333,1-34----, +GWCAC,Cacheu,GW,12.266667,-16.15,1-3-----,CA +KEARI,Athi River,KE,-1.45,36.983333,--3-----,22 +KEBUS,Busia,KE,0.466667,34.1,--3-----,04 +KEDDB,Dadaab,KE,0.05,40.316667,--3-----,07 +KEGIL,Gilgil,KE,-0.216667,36.266667,--3-----,31 +KEISL,Isiolo,KE,0.35,37.583333,--3-----,09 +KEKAJ,Kajiado,KE,-1.833333,36.783333,--3-----, +KEKAK,Kakamega,KE,0.266667,34.733333,--3-----, +KEKKM,Kakuma,KE,3.716667,34.866667,--3-----,10 +KEKAP,Kapsowar,KE,0.983333,35.566667,--3-----, +KEKIA,Kiambu,KE,-1.166667,36.833333,--3-----,13 +KEKLF,Kilifi,KE,-3.633333,39.85,--3-----,14 +KEKIT,Kitui,KE,-1.366667,38.016667,--3-----,18 +KELIM,Limuru,KE,-1.1,36.65,--3-----,13 +KELRV,Lokichar,KE,2.383333,35.65,--3-----,14 +KEMAC,Machakos,KE,-1.516667,37.266667,--3-----,22 +KEMAL,Malaba,KE,0.616667,34.266667,-23-----, +KEMER,Meru,KE,0.5,37.65,--3-----,26 +KEMUH,Muhoroni,KE,-0.15,35.183333,--3-----,17 +KEMWI,Mwingi,KE,-0.933333,38.066667,--3--6--,18 +KENAR,Narok,KE,-1.066667,35.85,--3-----, +KESMN,Shimoni,KE,-4.65,39.383333,1-3-----,19 +KESOT,Sotik,KE,-0.666667,35.1,--3-----, +KETHK,Thika,KE,-1.033333,37.083333,--3-----, +KEWEB,Webuye,KE,0.616667,34.766667,--3-----,03 +KMAJN,Anjouan Apt,KM,-12.25,44.416667,1-34----,A +KMDZA,Dzaoudzi,KM,-12.783333,45.283333,--3-----,M +KMNWA,Mohéli Apt,KM,-12.25,43.75,--34----,M +KMMUT,"Mutsamudu, Anjouan",KM,-12.15,44.383333,1-3-----,A +LRHBL,Harbel,LR,6.266667,-10.333333,--3-----,MO +LRHAR,Harper,LR,4.366667,-7.716667,1-3-----,MY +LRMLW,Monrovia,LR,6.3,-10.8,1-345---,MO +LRROB,Roberts International Airport,LR,6.233333,-10.35,--34----,MO +LRSAG,Sagleipie,LR,6.95,-8.833333,--3-----,NI +LRZWD,Zwedru,LR,6.066667,-8.116667,--3-----,GG +LSBUT,Butha-Buthe,LS,-28.783333,28.233333,-234----,B +LSMPS,Maputsoe,LS,-28.883333,27.9,-23-----, +LYABS,Abu Salim,LY,32.85,13.166667,--3-----,TB +LYQGG,Ajdabiya,LY,30.75,20.216667,--3-----,WA +LYKHO,Al Khums,LY,32.65,14.266667,1-3-----, +LYQEC,Al Marj,LY,32.5,20.816667,--3-----,MJ +LYQZT,Awbari (Ubari),LY,23.566667,12.816667,--3-----, +LYAZT,Az Zintan,LY,31.933333,12.233333,--3-----,JG +LYQBL,Bani Walid,LY,34.766667,13.966667,--3-----,MI +LYELK,El Choms,LY,32.65,14.266667,1-3-----, +LYHUQ,Houn,LY,29.5,15.5,--34----, +LYJAZ,Janzur,LY,32.816667,13.0,--3-----,ZA +LYMBR,Marsá Al Burayqah,LY,30.383333,19.6,--3-----, +LYMEL,Mellitah (Qasr Ahmed),LY,32.6,15.35,123-----,MI +LYMIS,Misratah,LY,32.366667,15.083333,--3-----,MI +LYSEB,Sebha,LY,27.033333,14.433333,--34----, +MAMTH,Ain Beni Mathar,MA,34.0,-2.016667,--3-----,OUJ +MAASE,Aïn Sebaa,MA,33.6,-7.533333,-23-----,CAS +MABAH,Ait Baha,MA,29.55,-8.966667,--3-----,TIZ +MAAKH,Akhfennir,MA,28.083333,-12.05,--3-----,TAF +MAAAR,Al Aaroui,MA,35.0,-3.016667,--3-----,NAD +MAAMZ,Amizmiz,MA,31.216667,-8.25,--3-----,HAO +MAANZ,Anza,MA,30.45,-9.65,1-3-----,AGD +MAAZL,Azilal,MA,31.966667,-6.566667,--3-----,05 +MABES,Ben Slimane,MA,33.6,-71.183333,--3-----,BES +MABEN,Benguerir,MA,32.233333,-7.95,--3-----,KES +MAG2K,Biougra,MA,30.016667,-9.05,--3-----,AGD +MABJJ,Bir Jdid,MA,33.366667,-7.983333,--3-----,JDI +MABFK,Boufakrane,MA,33.75,-5.483333,--3-----,MEK +MABUJ,Boujdour,MA,26.133333,-14.483333,1-3-----,BOD +MABUL,Boulaouane,MA,32.866667,-8.05,--3-----,JDI +MABOS,Bouskoura,MA,33.433333,-7.633333,-23-----,AGD +MA4DM,Dar Bou Azza,MA,33.75,-5.4,--3-----,MEK +MAELG,El Gara,MA,33.266667,-7.233333,--3-----,SET +MAELH,El Hajeb,MA,33.7,-5.366667,--3-----,MEK +MAELJ,El Jadida,MA,33.25,-8.5,1-3-----,JDI +MAELL,El Jouam'a,MA,35.65,-5.666667,--3-----,TET +MAESS,Essaouira,MA,31.416667,-9.5,1-3-----,ESI +MAGMS,Gmassa,MA,31.4,-8.4,--3-----,MAR +MAGUE,Guercif,MA,34.233333,-3.366667,--3-----,TAZ +MAHAB,Habib,MA,30.9,-6.85,--3-----,OUA +MAHDS,Had Soualem,MA,33.416667,-7.833333,--3-----,CAS +MAIFR,Ifrane,MA,33.516667,-5.1,--3-----,IFR +MAIMZ,Imouzzer Kandar,MA,33.733333,-5.016667,--3-----,SEF +MAJER,Jerada,MA,34.3,-2.166667,--3-----,JRA +MAKHF,Khenifra,MA,32.933333,-5.666667,--3-----,KHN +MAZZ4,Ksar el Kebir,MA,35.0,-5.9,--3-----,LAR +MAKSS,Ksar es Sghir,MA,35.833333,-5.55,--3-----,FAH +MALIF,Lisasfa,MA,32.65,-7.5,--3-----,SET +MARAK,Marrakech,MA,31.633333,-8.0,-234----, +MAMTT,Martil,MA,35.6,-5.266667,--3-----,TET +MAMEK,Meknès,MA,33.9,-5.55,--3-----, +MAMEL,Melloussa,MA,35.733333,-5.616667,--3-----,TNG +MAMDT,Midelt,MA,32.666667,-4.733333,--3-----,KHN +MAMBS,Moulay Bou Selham,MA,34.866667,-6.283333,--3-----,KEN +MAOUZ,Oued Zem,MA,32.85,-6.55,--3-----,KHO +MAT4R,Oulad Teima,MA,30.4,-9.2,--3-----,TAR +MAOSA,Ouled Salah,MA,34.766667,-2.15,--3-----,OUJ +MAMRC,Ourika,MA,30.716667,-6.55,--3--6--,OUA +MARNA,Roches Noires,MA,33.6,-7.566667,1-3-----,MOH +MASGD,Sebt Guerdane,MA,29.65,-7.95,--3-----,TAR +MASFF,Sefrou,MA,33.816667,-4.816667,--3--6--,FES +MASDB,Sidi Bennour,MA,32.65,-8.416667,--3--6--,JDI +MASID,Sidi Bibi,MA,30.216667,-9.533333,--3-----,13 +MASRH,Sidi Rahal,MA,32.5,-8.35,--3-----,JDI +MA6KS,Sidi Slimane,MA,34.25,-5.916667,--3-----,KEN +MASEL,Slimane,MA,32.066667,-8.1,--3-----,KES +MASSO,Souk Sebt des Oulad Nemâa,MA,32.3,-6.7,--3-----,BEM +MATAF,Tafraout,MA,29.716667,-8.966667,--3-----,TIZ +MATAL,Talsint,MA,32.533333,-3.45,--3-----,FIG +MATRE,Tardane,MA,35.366667,-5.6,--3-----,LAR +MATAR,Taroudannt,MA,30.466667,-8.85,--3-----,TAR +MATRD,Taroudant,MA,30.466667,-8.866667,--34-6--,TAR +MATAT,Tata,MA,29.733333,-7.966667,--3-----,TAR +MATHI,Tinerhir,MA,31.5,-5.516667,--3-----,OUA +MATIN,Tinghir,MA,31.516667,-5.533333,--3-----,TIN +MA8FT,Tit Mellil,MA,33.55,-7.466667,--3-----,MED +MATZI,Tiznit,MA,29.716667,-9.716667,--3-----,TIZ +MATZU,Tou Zikou,MA,30.166667,-9.516667,--3-----,AGD +MAYSS,Youssoufia,MA,32.25,-8.516667,--3-----,SAF +MGAMS,Amboasary Sud,MG,-25.033333,46.383333,-23-----,U +MGAMV,Ambovombe,MG,-25.166667,46.083333,--3-----,U +MGNOS,Nosy-Be,MG,-13.333333,48.25,1-34----, +MGTAN,Tanjombato,MG,-18.95,47.533333,--3-----,T +MGTLN,Taolagnaro,MG,-25.016667,46.966667,--3-----, +MGTSM,Tsiombe,MG,-25.3,45.483333,--3-----,U +MLAMB,Ambidédi,ML,14.583333,-11.783333,--3-----, +MLBGD,Baguinéda,ML,12.6,-7.766667,--3-----,2 +MLBAI,Banangoroni,ML,13.683333,-6.383333,--3-----,4 +MLBGI,Bougouni,ML,11.4,-7.483333,--3-----, +MLDKB,Dialakorobougou,ML,12.8,-7.416667,-23-----,2 +MLDIO,Dioila,ML,12.483333,-6.8,--3-----, +MLKDL,Kadiolo,ML,10.55,-5.766667,--3-----,3 +MLKAM,Kamalé,ML,12.383333,-8.266667,--3-----,2 +MLKAT,Kati,ML,12.733333,-8.066667,--3-----,2 +MLKBG,Katibougou,ML,12.916667,-7.516667,--3-----,2 +MLKOR,Korouma,ML,13.483333,-11.433333,--3--6--, +MLKOU,Koumantou,ML,11.416667,-6.833333,--3-----, +MLMAH,Mahana,ML,16.183333,-6.7,--3-----, +MLMAI,Mahina,ML,13.3,-10.65,--3-----, +MLMBG,Manabougou,ML,12.766667,-7.683333,--3-----,2 +MLMOR,Morila,ML,12.2,-6.633333,--3-----, +MLNDE,Ndébougou,ML,14.366667,-5.983333,--3-----, +MLNEG,Négala,ML,12.866667,-8.45,--3-----,2 +MLNIO,Niono,ML,14.25,-6.0,--3-----, +MLSLA,Sadiola,ML,13.883333,-11.7,--3-----, +MLSAN,San,ML,13.283333,-4.883333,--3-----, +MLSZU,Ségou,ML,13.45,-6.266667,--34----, +MLSEV,Sévaré,ML,14.533333,-4.1,--3-----, +MLSIK,Sikasso,ML,11.316667,-5.666667,--3-----, +MLTOU,Touana,ML,13.633333,-7.483333,--3-----, +MLYAT,Yatéla,ML,14.1,-11.766667,--3-----, +MRBSK,Bassiknou,MR,15.85,-5.933333,--3-----,01 +MRKBI,Kobenni,MR,15.816667,-9.366667,--3-----,02 +MRROS,Rosso,MR,16.5,-15.916667,1-3----B, +MRTIN,Tintane,MR,16.4,-10.166667,--3-----,02 +MUANL,Arsenal,MU,-20.1,57.533333,--3-----,PA +MUBTB,Baie-du-Tombeau,MU,-20.1,57.5,--3-----,PA +MUBEB,Beau Bassin,MU,-20.216667,57.45,--3-----,PW +MUBPL,Beau Plan,MU,-20.083333,57.566667,--3-----,PA +MUBVN,Beau Vallon,MU,-20.35,57.683333,--3-----,GP +MUBEL,Bel Air,MU,-20.25,57.733333,--3-----,FL +MUBOR,Bel Ombre,MU,-20.5,57.4,--3-----,SA +MUBLM,Belle Mare,MU,-20.183333,57.766667,--3-----,FL +MUBRE,Belle Rose,MU,-20.25,57.716667,--3-----,QB +MUCPX,Cap Malheureux,MU,-19.983333,57.6,--3-----,RR +MUCSS,Cassis,MU,-20.15,57.466667,--3-----,PL +MUCDF,Centre de Flacq,MU,-20.2,57.716667,--3-----,FL +MUCHL,Chamarel,MU,-20.416667,57.383333,--3-----,SA +MUCGR,Chemin Grenier,MU,-20.483333,57.45,--3-----,SA +MUCMD,Coromandel,MU,-20.166667,57.45,--3-----,BR +MUFLF,Flic en Flac,MU,-20.266667,57.35,--3-----,BL +MUFSD,Forest Side,MU,-20.316667,57.516667,--3-----,PW +MUGOO,Goodlands,MU,-20.033333,57.633333,--3-----,RR +MUGBA,Grand Baie,MU,-20.0,57.566667,--3-----,PA +MUGRN,Grand River North West,MU,-20.166667,57.466667,--3-----,PL +MUGRS,Grande Rivière Sud Est,MU,-20.283333,57.766667,--3-----,FL +MUGBS,Gros Bois,MU,-20.433333,57.6,--3-----,GP +MULME,La Mivoie,MU,-20.333333,57.35,--3-----,RR +MUMAH,Mahébourg,MU,-20.4,57.683333,--3-----, +MUMAP,Mapou,MU,-20.016667,57.566667,--3-----,RR +MUMOK,Moka,MU,-20.216667,57.483333,--3-----,MO +MUMSA,Morcellemont Saint André,MU,-20.066667,57.55,--3-----,PU +MUGPO,Nouvelle France,MU,-20.366667,57.55,--3-----,GP +MUPAI,Pailles,MU,-20.183333,57.466667,--3-----,PW +MUPMR,Palmar,MU,-20.216667,57.766667,--3-----,FL +MUPAM,Pamplemousses,MU,-20.1,57.566667,--3-----,PA +MUPYY,Pereybèré,MU,-19.983333,57.583333,--3-----,RR +MUPRI,Petite Rivière,MU,-20.183333,57.433333,--3-----,BL +MUPTN,Piton,MU,-20.083333,57.616667,--3-----,RR +MUPMG,Plaine Magnien,MU,-20.416667,57.65,--3-----,GP +MUPAC,Pointe aux Canonniers,MU,-20.0,57.55,--3-----,PA +MUPSB,Pointe aux Sables,MU,-20.15,57.45,--3-----,PU +MUPEY,Pointe d’Esny,MU,-20.416667,57.716667,--3-----,GP +MUPMA,Port Mathurin,MU,-19.683333,63.416667,1-3-----, +MUPDF,Poste de Flacq,MU,-20.15,57.716667,--3-----,FL +MUQML,Quartier Militaire,MU,-20.233333,57.583333,--3-----,MO +MUQBE,Quatre Bornes,MU,-20.25,57.466667,--3-----,PW +MURCT,Richeterre,MU,-20.116667,57.5,--3-----,FL +MURDR,Rivière du Rempart,MU,-20.1,57.683333,--3-----,FL +MUBLR,Rivière Noire,MU,-20.35,57.35,--3-----,BL +MUMRB,Roches Brunes,MU,-20.216667,57.45,--3-----,PW +MURNE,Roches Noire,MU,-20.1,57.7,--3-----,RR +MURSH,Rose Hill,MU,-20.233333,57.466667,--3-----,BR +MUSAU,Saint Aubin,MU,-20.483333,57.55,--3-----,SA +MUSTP,Saint Pierre,MU,-20.216667,57.516667,--3-----,MO +MUSLC,Souillac,MU,-20.516667,57.516667,--3-----,SA +MUSRM,Surinam,MU,-20.5,57.5,--3-----,SA +MUTRE,Terre Rouge,MU,-20.116667,57.516667,--3-----,PA +MUTLT,Triolet,MU,-20.05,57.533333,--3-----,PA +MUTAB,Trou aux Biches,MU,-20.033333,57.533333,--3-----,PA +MUTDD,Trou d'eau Douce,MU,-20.233333,57.766667,--3-----,FL +MUTYK,Tyack,MU,-20.466667,57.55,--3-----,SA +MUVAC,Vacoas,MU,-20.283333,57.466667,--3-----,PW +MUVER,Verdun,MU,-20.216667,57.533333,--3-----,MO +MWCLM,Chilomoni,MW,-15.783333,34.983333,--3-----,BL +MWCPK,Chipoka,MW,-14.0,34.516667,1-3--6--,SA +MWCTP,Chitipa,MW,-9.716667,33.266667,--3-----,CT +MWLUZ,Luchenza,MW,-16.016667,35.3,--3-----,TH +MWMU7,Mulanje,MW,-16.033333,35.5,--3-----,MU +MWMZI,Mzimba,MW,-11.9,33.6,--3-----,MZ +MWNTH,Ntcheu,MW,-14.816667,34.633333,--3-----,NU +MWTHY,Thyolo,MW,-16.066667,35.133333,1-3-----, +MZAEN,António Enes,MZ,-16.216667,39.9,--3-----,N +MZBOA,Boane,MZ,-26.033333,32.316667,--3-----,L +MZCHA,Chicamba Real,MZ,-19.183333,33.15,--3-----,B +MZCHI,Chiúre,MZ,-13.366667,39.766667,--3-----,P +MZCHO,Chokwé,MZ,-24.533333,32.983333,-23-----,G +MZCOR,Coropoa,MZ,-16.533333,39.683333,1-3-----,N +MZINS,Inhassoro,MZ,-21.533333,35.2,--3-----,I +MZMCA,Manica,MZ,-18.933333,32.866667,--3-----,B +MZMVI,Mavuzi,MZ,-19.516667,33.433333,--3-----,B +MZMAX,Maxixe,MZ,-23.85,35.333333,--3-----,I +MZMZB,Mocímboa da Praia,MZ,-11.333333,40.35,1-34----,P +MZMOS,Mossuril,MZ,-14.966667,40.65,--3-----,N +MZM7E,Muecate,MZ,-14.883333,39.616667,--3-----,N +MZMZN,Nacaroa,MZ,-14.366667,39.916667,--3-----,N +MZZBZ,Zambezia,MZ,-12.9,39.7,--3--6--,P +NAVFG,Ariamsvlei,NA,-28.116667,19.816667,--3-----,KA +NAHTN,Henties Bay (Hentiesbaai),NA,-22.116667,14.283333,--3-----,ER +NAKRB,Karibib,NA,-21.933333,15.85,--3-----, +NAKAT,Katima Mulilo,NA,-17.5,24.266667,--3-----,CA +NAWOR,Noordoewer,NA,-28.75,17.616667,--3-5---,KA +NAOMA,Omaruru,NA,-21.433333,15.933333,--3-----,ER +NAONG,Ongwediva,NA,-17.766667,15.75,--3-----,ON +NAOVO,Oshivelo,NA,-18.616667,17.166667,--3-----,OT +NAOTP,Otavi,NA,-19.65,17.333333,--3-----,OD +NAOUT,Outjo,NA,-20.116667,16.15,--3-----,KU +NAUIS,Uis,NA,-21.216667,14.85,--3-----,ER +NEDIF,Diffa,NE,13.3,12.6,--3-----,2 +NEDOG,Dogodountchi,NE,13.633333,4.033333,--3-----, +NEDSS,Dosso,NE,13.05,3.2,--3-----, +NEGLM,Galmi,NE,13.966667,5.683333,--3-----,5 +NEMAD,Madaoua,NE,14.083333,6.433333,--3-----,5 +NEMAL,Malbaza,NE,13.933333,5.516667,--3-----,5 +NEOUN,Ouna,NE,12.166667,3.15,--3-----,3 +NETAG,Tagáza,NE,13.55,7.283333,--3-----,4 +NETCH,Tchirozerine,NE,17.1,7.816667,--3-----,1 +NETIL,Tillabéri,NE,14.2,1.45,--3-----,6 +NETAW,Tyawa,NE,13.5,1.283333,--3-----,6 +NGQAX,Aba,NG,5.116667,7.366667,--3-----,AB +NGAKA,Abeokuta,NG,7.15,3.333333,--3-----, +NGAGB,Agbara,NG,6.516667,3.1,--3-----,LA +NGAGG,Agege,NG,6.616667,3.316667,--3-----,LA +NGQJK,Ajaokuta,NG,7.566667,6.666667,--3-----,KO +NGASH,Alimosho,NG,6.6,3.283333,--3-----,LA +NGAMI,Amaruru Ikeduru,NG,5.583333,7.183333,--3-----, +NGANW,Amuwo,NG,6.466667,3.283333,--3-----,LA +NGASO,Asokoro,NG,9.05,7.516667,--3-----,FC +NGQCT,Bacita,NG,9.083333,4.95,--3-----,KW +NGBAM,Bama,NG,11.516667,13.683333,--3-----,BO +NGDMS,Damasak,NG,13.1,12.5,--3-----,BO +NGDKW,Dikwa,NG,12.033333,13.916667,--3-----,BO +NGEBM,Ebute Metta,NG,6.483333,3.383333,--3-----,LA +NGFLM,Falomo,NG,6.45,3.433333,1-3-----,LA +NGGRK,Garki,NG,9.0,7.5,--3-----,FC +NGQUS,Gusau,NG,12.166667,6.666667,--3-----,ZA +NGGWZ,Gwoza,NG,11.083333,13.683333,--3-----,BO +NGIBF,Ibafo,NG,6.75,3.416667,--3-----,OG +NGLKK,Ibeju - Lekki,NG,6.433333,4.0,1-3-----,LA +NGIGB,Igboho,NG,8.833333,3.75,--3-----,OY +NGIKE,Ikeja,NG,6.583333,3.333333,--34----,LA +NGIKO,Ikorodu,NG,6.6,3.516667,--3-----, +NGQIK,Ikoyi,NG,6.45,3.433333,--3-----,LA +NGILA,Ilesha,NG,7.616667,4.733333,--3-----, +NGISL,Isolo,NG,6.516667,3.316667,--3-----,LA +NGJGN,Jagana,NG,12.2,10.5,--3-----,BA +NGKAL,Kaltungo,NG,9.816667,11.3,--3-----, +NGKRU,Karu,NG,10.633333,6.65,--3-----,KD +NGKTU,Ketu,NG,6.633333,3.883333,--3-----,LA +NGKIR,Kirikakiri,NG,4.333333,6.25,1-3-----, +NGKIK,Kirikiri,NG,6.433333,3.3,--3-----,LA +NGLAG,Lagos,NG,6.45,3.383333,--3-----,LA +NGOGL,Ljebu Ode,NG,6.816667,3.916667,--3-----,OG +NGMYD,Maryland,NG,6.566667,3.366667,--3-----,LA +NGIMI,Mbieri,NG,5.583333,7.05,--3-----,IM +NGNNW,Nnewi,NG,6.016667,6.916667,--3-----,AN +NGNSU,Nsukka,NG,6.85,7.383333,--3-----, +NGGBA,Ogba,NG,6.05,6.116667,--3-----,ED +NGOGB,Ogbomosho,NG,8.116667,4.233333,--3-----, +NGOGH,Oghara,NG,5.583333,6.1,--3-----,DE +NGOJO,Ojo,NG,7.816667,4.433333,--3-----,KW +NGJTA,Ojota,NG,6.583333,3.366667,--3-----,LA +NGO7W,Okwe,NG,5.783333,7.216667,--3-----,IM +NGONI,Onitsha,NG,6.15,6.766667,--3-----, +NGONN,Onne,NG,4.716667,7.15,1-3-----,RI +NGOGS,Osogbo,NG,7.766667,4.566667,-23-----,OS +NGOGG,Ota,NG,6.683333,3.216667,--3-----,OG +NGOWE,Owerri,NG,5.483333,7.016667,--3-----, +NGRAN,Rann,NG,12.283333,14.466667,--3-----,BO +NGSOT,Sango Otta,NG,6.7,3.233333,1-3-----,LA +NGQSL,Suru-Lere,NG,6.5,3.35,--3-----,LA +NGUMU,Umuahia,NG,5.533333,7.483333,--3-----,AB +NGQUO,Uyo,NG,5.05,7.933333,--3-----,AK +NGVIC,Victoria Island,NG,6.416667,3.4,--3-----,LA +NGQYB,Yaba,NG,6.5,3.383333,--3-----,LA +RWBGA,Bugarama,RW,-2.7,29.0,--3-----,04 +RWCYU,Cyangugu,RW,-2.483333,28.883333,--3-----,04 +RWGTA,Gatuna,RW,-1.433333,30.016667,--3-----,03 +RWGSO,Gishoma,RW,-2.6,28.933333,--3-----,04 +RWHUY,Huye,RW,-2.566667,29.7,--3-----,05 +RWKYZ,Kayonza,RW,-1.933333,30.516667,--3-----,02 +RWNSA,Nyagatare,RW,-1.283333,30.316667,1-3-----,02 +RWNYA,Nyamata,RW,-2.2,30.15,--3-----,02 +RWNYZ,Nyanza,RW,-2.35,29.75,--3-----,05 +RWRIL,Rilima,RW,-2.15,30.216667,--3-----, +RWRUO,Rusumo,RW,-2.266667,30.7,--3-----,02 +SCVIC,Victoria,SC,-4.616667,55.45,1-3-----,22 +SDABY,Abyei,SD,9.6,28.433333,--3-----,KS +SDSRA,Ar Rank,SD,11.75,32.8,--3-----, +SDBTE,Omdurman,SD,15.633333,32.433333,--3-----,KH +SDRAB,Rabak,SD,13.15,32.733333,--3--6--, +SDSSD,Sawakin,SD,19.1,37.316667,--3-----, +SDYEI,Yei,SD,4.083333,30.666667,--3-----, +SDZLX,Zalingei,SD,12.9,23.483333,--34----,DW +SLHGS,Hastings Apt/Freetown,SL,8.366667,-13.133333,--34----,W +SLKSY,Kissy,SL,8.466667,-13.183333,1-3--6--,W +SLWYE,Yengema Apt,SL,8.616667,-11.05,--34----,E +SNDSS,Blaise Diagne International Airport,SN,14.633333,-17.083333,--34----,TH +SNDAG,Dagana,SN,16.5,-15.5,--3-----, +SNDUR,Diourbel,SN,14.65,-16.383333,--3-----,DB +SNKAH,Kahone,SN,14.15,-16.033333,--3-----,FK +SNKKY,Kayar,SN,14.916667,-17.116667,--3-----,TH +SNKID,Kidira,SN,14.4,-12.25,--3-----,TC +SNLOU,Louga,SN,15.6,-16.233333,--3-----, +SNMGS,Madina Gounass,SN,13.133333,-13.75,--3-----,KD +SNMBO,Mbour,SN,14.416667,-16.95,--3-----, +SNRQ2,Rufisque,SN,14.7,-17.266667,--3-----,DK +SNSKN,Sokone,SN,13.883333,-16.366667,--3-----,FK +SNTBN,Taïba Ndiaye,SN,15.05,-16.883333,--3-----,TH +SNTHI,Thiès,SN,14.8,-16.933333,-23-----, +SNTOU,Touba,SN,14.85,-15.883333,--3-----,DB +SNYDK,Yof,SN,14.75,-17.466667,--3-----,DK +SODH9,Dhoobleey,SO,2.5,42.316667,--3-----,JH +SODOW,Doolow,SO,4.166667,42.083333,--3-----,GE +SOELM,El Maan,SO,2.166667,45.6,1-3-----, +SOGAA,Gaalkacyo,SO,6.783333,47.433333,--3-----,MU +SOGRC,Garacad,SO,6.933333,49.316667,1-3-----,MU +SOGHR,Giohar,SO,2.766667,45.516667,1-3-----, +SSAWE,Aweil,SS,8.766667,27.383333,--3-----,BN +SSBEN,Bentiu Town,SS,9.266667,29.783333,--3-----,UY +SSBOM,Boma,SS,6.166667,34.466667,--3-----,JG +SSBOR,Bor,SS,7.666667,33.633333,--3-----,JG +SSJUB,Juba,SS,4.85,31.616667,--34----,EC +SSKAJ,Kajo Keji,SS,3.833333,31.65,--3-----,EC +SSKYA,Kaya,SS,3.55,30.866667,--3-----,EC +SSMAK,Malakal,SS,9.533333,31.65,--34----,NU +SSNIM,Nimule,SS,3.6,32.05,--3-----,EE +SSRAG,Raga,SS,8.45,25.666667,--3-----,BW +SSRBK,Rumbek,SS,6.8,29.7,--3-----,LK +SSRUM,Rumbek,SS,6.8,29.683333,--3-----,LK +SSTON,Tonj,SS,7.266667,28.75,--3-----,WR +SSTOR,Torit,SS,4.4,32.566667,--3-----,EE +SSWAP,Warrap,SS,8.0,28.85,--3-----,WR +SSWUU,Wau,SS,7.7,28.0,--34----,BW +SSYAM,Yambio,SS,4.566667,28.383333,--3-----,EW +SSYID,Yida,SS,10.1,30.083333,--34----,UY +SZLHH,Lomahasha,SZ,-25.983333,32.0,--3-----,LU +SZMLY,Mahlanya,SZ,-26.5,31.283333,--3-----,MA +SZMAL,Malkerns,SZ,-26.566667,31.183333,1-3-----,LU +SZMHU,Mhlume,SZ,26.033333,31.85,--3-----,LU +SZNHL,Nhlangano,SZ,-27.116667,31.2,1-3-----, +SZ7DS,Sidvokodvo,SZ,-26.616667,31.45,1-3-----,MA +SZSIM,Simunye,SZ,-26.2,31.916667,--3-----,LU +SZSPH,Siphofaneni,SZ,-26.683333,31.683333,-23-----,LU +SZUBO,Ubombo,SZ,-27.566667,32.083333,--3-----, +TDAJR,Amdjarass,TD,16.05,22.833333,--3-----,EE +TDBAD,Badila,TD,8.35,16.283333,--3-----,LR +TDBGA,Baga Sola,TD,13.533333,14.3,--3-----,LC +TDBND,Banda,TD,9.15,18.366667,--3-----, +TDBNB,Bitkine,TD,11.966667,18.2,--3-----,GR +TDDOB,Doba,TD,8.633333,16.833333,--3-----,MC +TDGAY,Gaya,TD,13.9,15.5,--3-----,KA +TDGOR,Gore,TD,7.916667,16.633333,--3-----,LR +TDGZB,Goz Beida,TD,12.216667,21.4,--34----,SI +TDGRD,Guereda,TD,14.516667,22.083333,--3-----,WF +TDIRI,Iriba,TD,15.116667,22.25,--3-----,WF +TDKEL,Kélo,TD,9.316667,15.8,--3-----,TA +TDKME,Komé,TD,8.45,16.7,-23-----, +TDKOU,Koumara,TD,7.95,15.5,--3-----, +TDKMR,Koumra,TD,8.9,17.55,--3-----, +TDKMC,Kyabé,TD,9.45,18.95,--34----,MC +TDLER,Léré,TD,9.65,14.216667,--3-----,MO +TDMGR,Mangara,TD,8.983333,18.083333,--3-----,MC +TD2GR,Mongo,TD,12.183333,18.7,--3-----,GR +TDMOU,Moussoro,TD,13.65,16.483333,--3-----,KA +TGAKP,Atakpamé,TG,7.533333,1.133333,--3-----,P +TGDPG,Dapaong,TG,10.85,0.2,--3-5---, +TGKAN,Kanté,TG,9.95,1.033333,--3-----, +TGKON,Konpiéna,TG,10.966667,0.65,--3-----, +TNAKO,Akouda,TN,35.866667,10.566667,--3-----,51 +TNHMM,Al Hammamat,TN,36.4,10.616667,123--6--, +TNAMN,Al Manarah,TN,35.7,10.783333,--3-----,52 +TNTZE,Al Marsá,TN,36.883333,10.333333,123--6--,11 +TNAQY,Al Qasrayn,TN,35.166667,8.833333,-23-----, +TNAQR,Al Qayrawan,TN,35.666667,10.083333,--3-----, +TNBEJ,Béja,TN,36.733333,9.183333,-23-----, +TNBAR,Ben Arous,TN,36.75,10.216667,--3-----,13 +TNN4T,Beni Khalled,TN,36.65,10.6,--3-----,21 +TNBNA,Bin Arous,TN,36.75,10.316667,--3-----, +TNBIR,Bir Mcherga,TN,36.516667,9.95,--3-----,22 +TNBJC,Borj Cedria,TN,36.7,10.4,1-3-----,21 +TNBEB,Borj el Bey,TN,36.033333,10.3,--3-----,51 +TNB8N,Bou Argoub,TN,36.533333,10.55,--3-----,21 +TNBOF,Bou Ficha,TN,36.3,10.45,--3-----,51 +TNTZB,Bu Mirdas,TN,35.45,10.733333,--3--6--,53 +TNB6Q,Bu Urqub,TN,36.533333,10.55,--3-----,21 +TNCAR,Carthage,TN,36.85,10.316667,--3-----,11 +TNCHA,Chaouat,TN,36.866667,9.95,--3-----, +TNCHB,Chebba,TN,35.233333,11.1,1-3-----,53 +TNEFS,El Fahs,TN,36.366667,9.9,--3-----,22 +TNEHS,El Fahs,TN,36.366667,9.9,-23-----,22 +TNE2H,El Hamma,TN,33.9,9.8,--3-----,81 +TNMOU,El Mourouj,TN,36.666667,10.15,--3-----,13 +TNEFA,Enfida,TN,36.133333,10.366667,--3-----,51 +TNE8M,Essouassi,TN,35.333333,10.533333,--3-----,53 +TNEZA,Ez Zahra,TN,36.75,10.316667,--3-----,11 +TNFOA,Fouchana,TN,36.683333,10.166667,--3-----,13 +TNGML,Grombalia,TN,36.6,10.5,-23-----,21 +TNHAM,Hammamet,TN,36.4,10.616667,--3-----,21 +TNHML,Hammam-Lif,TN,36.716667,10.333333,--3-----,13 +TNJEM,Jammal,TN,35.633333,10.75,--3-----, +TNJ8T,Jebel Jelloud,TN,36.766667,10.2,--3-----,11 +TNJUL,Jundubah,TN,36.5,8.766667,--3-----, +TNKSS,Kasserine,TN,35.166667,8.816667,--3-----,42 +TNKON,Kondar,TN,35.916667,10.3,--3-----,51 +TNKSH,Ksar Hellal,TN,35.65,10.9,--3-----,52 +TNKEF,Ksour Essaf,TN,35.416667,10.983333,--3-----,53 +TNL8T,La Marsa,TN,36.866667,10.316667,--3-----,11 +TNMOH,La Mohammedia,TN,36.666667,10.15,--3-----,11 +TNLMG,La Mornaghia,TN,36.75,10.016667,--3-----,11 +TNLBO,Le Bardo,TN,36.8,10.133333,--3-----,11 +TNLEK,Le Kef,TN,36.166667,8.7,--3-----,33 +TNMDN,Madanin,TN,33.35,10.483333,--3-----, +TNMAD,Mahdia,TN,35.5,11.05,123-----,53 +TNMAH,Mahires,TN,34.533333,10.5,-23-----, +TNMAJ,Majaz al Bab,TN,36.65,9.616667,--3-----,31 +TNMAN,Manouba,TN,36.8,10.1,--3-----,11 +TNMGR,Mégrine,TN,36.766667,10.233333,--3-----,13 +TNMEG,Mégrine-Lescure,TN,36.766667,10.2,--3-----, +TNMZ5,Menzel Farsi,TN,35.533333,10.866667,--3-----,52 +TNMEA,Mesjed Aissa,TN,35.716667,10.716667,--3-----,52 +TNMET,Metlaoui,TN,34.316667,8.4,--3-----,71 +TNMOR,Mornag,TN,36.683333,10.016667,--3-----,11 +TNSSN,Nassene,TN,36.7,10.233333,--3-----,13 +TNQHL,Qasr Hallal,TN,35.633333,10.883333,--3-----,52 +TNKEL,Qulaybiyah,TN,36.85,11.1,--3-----, +TNRDS,Radès,TN,36.766667,10.266667,123-----,11 +TNSJM,Sejoumi,TN,36.75,10.116667,--3-----, +TNSBZ,Sidi Bu Zayd,TN,35.033333,9.483333,--3-----, +TNSLI,Siliana,TN,36.083333,9.366667,--3-----,34 +TNQSG,Sloughia,TN,36.583333,9.516667,--3-----, +TNSLN,Soliman,TN,36.683333,10.483333,1-3-----,21 +TNTBL,Tabulbah,TN,35.65,10.966667,--3-----,52 +TNTZK,Tazarka,TN,36.55,10.833333,--3-----,21 +TNTBB,Tebourba,TN,36.833333,9.833333,-23-----,12 +TNU3T,Utique,TN,37.05,10.066667,--3-----,23 +TNTZA,Zaghouan,TN,36.4,10.15,--3--6--,22 +TNZRZ,Zarzis,TN,33.5,11.116667,1-3-----,82 +TZBAB,Babati,TZ,-4.216667,35.75,--3-----,26 +TZBHO,Biharamulo,TZ,-2.616667,31.3,--3-----,05 +TZDAR,Dar es Salaam,TZ,-6.8,39.283333,12345---, +TZIKW,Ikwiriri,TZ,-7.983333,39.016667,1-3-----, +TZISK,Isaka,TZ,-3.866667,32.933333,--3-----, +TZKBG,Kabanga,TZ,-2.633333,30.466667,--3-----,05 +TZKHM,Kahama,TZ,-3.816667,32.583333,--3-----, +TZKSL,Kasulu,TZ,-4.566667,30.1,-23-----,08 +TZKIB,Kibaha,TZ,-6.766667,38.916667,--3--6--,19 +TZKDT,Kidatu,TZ,-7.7,36.95,--3-----,16 +TZKSS,Kisesa,TZ,-3.083333,34.15,--3-----,22 +TZKIT,Kitagata,TZ,-4.3,30.483333,--3-----,08 +TZKRG,Korogwe,TZ,-5.15,38.483333,--3-----, +TZKUR,Kurasini,TZ,-6.85,39.283333,--3-----,02 +TZMBK,Makumbako,TZ,-8.85,34.833333,--3-----,29 +TZMGK,Malagarasi,TZ,-5.1,30.833333,--3-----,08 +TZMRN,Marungu,TZ,-3.616667,38.716667,--3-----,08 +TZMKM,Mikumi,TZ,-7.4,36.983333,--3-----,16 +TZMLB,Mlimba,TZ,-8.8,35.8,--3-----,16 +TZMRG,Morogoro,TZ,-6.816667,37.65,--3-----, +TZMSH,Moshi,TZ,-3.35,37.333333,--3--6--,09 +TZMPA,Mpanda,TZ,-6.35,31.066667,--34----,28 +TZMTK,Mutukula,TZ,-1.0,31.4,--3-----,05 +TZNZG,Nzega,TZ,-3.616667,33.933333,--3-----, +TZSAJ,Sanya Juu,TZ,-3.183333,37.066667,--3-----,09 +TZSHI,Shirati,TZ,-1.133333,33.983333,--3-----,13 +TZSGD,Singida,TZ,-4.816667,34.75,--3-----,23 +TZYOB,Yombo,TZ,-6.583333,38.833333,--3-----,19 +UGGAB,Gaba,UG,0.1,32.916667,--3-----, +UGKMU,Kamuli,UG,0.933333,33.116667,--3-----,205 +UGKPK,Kapeeka,UG,0.683333,32.25,--3-----,116 +UGKIS,Kisubi,UG,0.116667,32.516667,--3-5---,106 +UGKGM,Kitgum,UG,3.283333,32.866667,--3-----, +UGKOB,Koboko,UG,3.416667,30.966667,--3-----, +UGKTD,Kotido,UG,2.966667,34.116667,--3-----,306 +UGLUG,Lugazi,UG,0.383333,32.916667,--3-----, +UGLUW,Luwero,UG,0.833333,32.466667,--3-----,104 +UG4MM,Manafwa,UG,1.016667,34.35,--3-----,221 +UGMPW,Mpondwe,UG,0.9,29.75,--3-----,406 +UGMUK,Mukono,UG,0.35,32.75,-23-----,108 +UGNKU,Nkumba,UG,0.833333,32.5,--3-----,106 +UGPB2,Pabbo,UG,3.0,32.133333,--3-----,319 +UGPKE,Pakelle,UG,3.366667,31.866667,--3-----, +UGRAK,Rakai,UG,-0.716667,31.483333,--3-----,110 +ZAANL,Addington,ZA,-29.85,31.033333,--3-----,KZN +ZAADO,Addo,ZA,-33.566667,25.683333,--3-----,EC +ZAAET,Aeroton,ZA,-26.25,27.966667,--3-----,GP +ZAABT,Alberton,ZA,-26.25,28.116667,--3-----, +ZAAGP,Algoapark,ZA,-33.9,25.566667,--3-----,EC +ZAALI,Alice,ZA,-32.783333,26.833333,--3-----,EC +ZAAWN,Aliwal North,ZA,-30.7,26.7,--3-----,KZN +ZAALR,Alrode,ZA,-26.283333,28.133333,--3-----, +ZAAMZ,Amanzimtoti,ZA,-30.083333,30.85,--3-----, +ZAAMU,Amatikulu,ZA,-29.05,31.533333,--3-----,KZN +ZAAME,Amersfoort,ZA,-27.016667,29.866667,--3-----,MP +ZAASG,Assagay,ZA,-29.783333,30.733333,--3-----,KZN +ZAATN,Athlone,ZA,-33.966667,18.5,--3--6--,WC +ZAATL,Atlantis,ZA,-33.55,18.466667,--3-----, +ZAAUG,Augrabies,ZA,-28.65,20.416667,--3-----,NC +ZABA4,Balfour,ZA,26.65,28.583333,--3-----,MP +ZABAL,Ballito Bay,ZA,-29.533333,31.216667,-23-----,KZN +ZABAR,Barrydale,ZA,-33.883333,20.716667,--3-----,WC +ZABHD,Bayhead,ZA,-29.883333,30.966667,-23-----,KZN +ZABNF,Baynesfield,ZA,-29.766667,30.35,--3-----, +ZABEA,Beaconsfield,ZA,-28.75,24.766667,--3-----,NC +ZABEW,Beaufort West,ZA,-32.35,22.566667,--3-----, +ZABDF,Bedford,ZA,-32.683333,26.083333,--3-----,EC +ZABFV,Bedfordview,ZA,-26.166667,28.15,-23-----,GP +ZABKN,Bellair,ZA,-29.883333,30.95,--3-----,KZN +ZABEL,Bellville,ZA,-33.916667,18.65,--3-----, +ZABNI,Benoni,ZA,-26.166667,28.3,--3-----, +ZABNL,Berea,ZA,-29.933333,31.0,--3-----,KZN +ZABVL,Bergville,ZA,-28.733333,29.366667,--3--6--, +ZABRL,Berlin,ZA,-32.866667,27.566667,--3-----, +ZABED,Bethelsdorp,ZA,-33.883333,25.5,--3-----,EC +ZABTH,Bethlehem,ZA,-28.216667,28.3,--3-----, +ZABTY,Betty's Bay,ZA,-34.366667,18.933333,--3-----,WC +ZABFN,Bloemfontein,ZA,-29.133333,26.2,-2345---,FS +ZABWB,Bluewater Bay,ZA,-33.85,25.466667,--3-----,EC +ZABOC,Bochum,ZA,-23.283333,29.116667,--3-----,NC +ZABKP,Bokpoort,ZA,-32.783333,28.0,--3-----,EC +ZABOK,Boksburg,ZA,-26.183333,28.25,--3-----, +ZABNN,Bonnievale,ZA,-33.933333,20.1,--3-----,WC +ZABTA,Botha's Hill,ZA,-29.716667,30.733333,--3-----,KZN +ZABTV,Bothaville,ZA,-27.383333,26.616667,--3-----, +ZABOT,BotrivIer,ZA,-34.216667,19.2,--3-----, +ZABTS,Botshabelo,ZA,-26.833333,27.85,--3--6--,FS +ZABGH,Boughton,ZA,-29.6,30.316667,--3-----,KZN +ZABRM,Bramley,ZA,-26.116667,28.066667,--3-----,GP +ZABRV,Breërivier,ZA,-33.533333,19.216667,--3-----,WC +ZABRT,Brits,ZA,-25.616667,27.766667,--3-----, +ZABDS,Broederstroom,ZA,-25.8,27.866667,--3-----,MP +ZABHT,Bronkhorstspruit,ZA,-25.816667,28.733333,-23-----,GP +ZABMA,Bruma,ZA,-26.166667,28.1,--3-----, +ZABSN,Bryanston,ZA,-26.05,28.033333,--3-----,GP +ZABLW,Bulwer,ZA,-29.8,29.75,--3-----,KZN +ZABRR,Burgersdorp,ZA,-30.983333,26.316667,--3-----,EC +ZABUR,Burgersfort,ZA,-24.666667,30.316667,--3-----,LP +ZACAD,Caledon,ZA,-34.216667,19.416667,--3-----,WC +ZACZP,Calitzdorp,ZA,-33.533333,21.683333,--3-----,WC +ZACMN,Camperdown,ZA,-29.716667,30.516667,--3-----, +ZACPB,Camps Bay,ZA,-33.95,18.383333,--3-----,WC +ZACAS,Cape Agulhas,ZA,-34.833333,20.0,--3-----,WC +ZACSF,Cape St. Francis,ZA,-34.183333,24.833333,--3-----,EC +ZACPT,Cape Town,ZA,-33.916667,18.416667,12345---,WC +ZAZAT,Capital Park,ZA,-25.733333,28.2,-23--6--,GT +ZACTV,Carletonville,ZA,-26.366667,27.4,--3-----,GP +ZACAT,Cato Ridge,ZA,-29.716667,30.583333,--3-----, +ZACCT,Century City,ZA,-33.883333,18.5,--3-----,WC +ZACRS,Ceres,ZA,-33.35,19.3,--3-----, +ZACTH,Chatsworth,ZA,-29.9,30.883333,--3-----,KZN +ZACHP,Chloorkop,ZA,-28.05,28.2,--3-----, +ZACHR,Christiana,ZA,-27.916667,25.166667,--3-----,NC +ZACIT,Citrusdal,ZA,-32.583333,19.0,--3-----,WC +ZACLV,Clayville,ZA,-25.95,28.216667,--3-----,GP +ZACGN,Congella,ZA,-29.866667,31.0,-23-----,KZN +ZASBY,Cordon's Bay,ZA,-34.166667,18.866667,--3-----,WC +ZACOT,Cotswold,ZA,-33.933333,25.533333,--3-----,EC +ZACRM,Cramond,ZA,-29.4,30.416667,--3-----,KZN +ZACNA,Cullinan,ZA,-25.666667,28.516667,-23-----,GP +ZADON,Dalton,ZA,-29.316667,30.616667,--3-----, +ZADAN,Danielskuil,ZA,-28.183333,23.533333,--3-----,NC +ZADNH,Dannhauser,ZA,-28.0,30.05,--3-----,KZN +ZADAR,Darling,ZA,-33.383333,18.383333,--3-----,WC +ZADSS,Dassenberg,ZA,-33.533333,18.55,--3--6--,WC +ZADAC,De Aar,ZA,-30.65,24.016667,--3-----,NC +ZADEA,Deal Party,ZA,-33.9,25.633333,--3-----, +ZADLM,Delmas,ZA,-26.133333,28.666667,--3-----, +ZADNV,Deneysville,ZA,-26.883333,28.1,--3-----,FS +ZADES,Despatch,ZA,-33.8,25.466667,--3-----,EC +ZADIU,Dimbaza,ZA,-32.816667,27.216667,--3-----, +ZADOU,Douglas,ZA,-29.066667,23.766667,--3-----,NC +ZADFS,Duff's Road,ZA,-29.75,31.0,--3-----,KZN +ZADCV,Duncanville/Vereeniging,ZA,-26.65,27.933333,-23-----, +ZADND,Dundee,ZA,-28.166667,30.216667,--3-----,KZN +ZADNN,Dunnottar,ZA,-26.333333,28.4,--3-----, +ZADUN,Dunswart/Boksburg,ZA,-26.2,28.266667,-23-----, +ZADUR,Durban,ZA,-29.85,31.016667,12345---,KZN +ZAB6D,Durban North,ZA,-29.8,31.033333,--3-----,KZN +ZADVI,Durbanville,ZA,-33.816667,18.65,--3-----, +ZADWA,Dwaalboom,ZA,-24.716667,26.816667,--3-----,LP +ZADZA,Dzanani,ZA,-22.883333,30.166667,--3-----,LP +ZAEGL,Edenglen,ZA,-26.133333,28.15,--3-----,GP +ZAEDE,Edenvale,ZA,-26.116667,28.15,--3-----, +ZAEDM,Edgemead,ZA,-33.883333,18.533333,--3-----,WC +ZAEEK,Eendekuil,ZA,-32.683333,18.883333,--3-----,WC +ZAEER,Eersterivier,ZA,-34.016667,18.7,--3-----,WC +ZAEPK,Elarduspark,ZA,-22.833333,28.3,--3-----,GP +ZAEDK,Eldoradopark,ZA,-26.3,27.9,--3-----, +ZAELG,Elgin,ZA,-27.733333,32.033333,--3-----, +ZAELT,Elliot,ZA,-31.333333,27.85,--3-----,EC +ZAELB,Elsburg,ZA,-26.233333,28.2,--3-----,GP +ZAESB,Elsenburg,ZA,-33.85,18.833333,--3-----,WC +ZAEPP,Epping,ZA,-33.916667,18.55,--3-----,WC +ZAERM,Ermelo,ZA,-26.533333,29.983333,-23-5---,MP +ZAEHW,Eshowe,ZA,-28.883333,31.466667,--3-----, +ZAEST,Estcourt,ZA,-29.0,29.883333,--3-----, +ZAEZK,Ezakheni,ZA,28.6,29.916667,--3-----,KZN +ZAFVW,Fairview,ZA,-34.0,24.116667,--3-----,EC +ZAFAU,Faure,ZA,-34.033333,18.733333,--3-----,WC +ZAFGF,Flagstaff,ZA,-31.083333,29.483333,--3-----,EC +ZAFCH,Fochville,ZA,-26.483333,27.483333,--3-----,NW +ZAFBE,Fort Beaufort,ZA,-32.766667,26.616667,--3-----, +ZAOFG,Fouriesburg,ZA,-28.616667,28.216667,--3-----,FS +ZAFRH,Franschhoek,ZA,-33.916667,19.133333,--3-----,WC +ZAFFE,Fresnaye,ZA,-33.916667,18.383333,--3-----,WC +ZAGAA,Gansbaai,ZA,-34.583333,19.35,--3-----,WC +ZAGAR,Gardens,ZA,-33.933333,18.4,--3-----,WC +ZAGNL,Gillitts,ZA,-29.8,30.8,--3-----,KZN +ZAGIV,Gingindlovu,ZA,-29.016667,31.583333,--3-----, +ZAGAY,Glenashley,ZA,-29.75,31.05,--3-----,KZN +ZAGLC,Glencoe,ZA,-28.183333,30.15,--3-----,KZN +ZAGLH,Glenhurd,ZA,-33.95,25.566667,--3-----,EC +ZAGLE,Golela,ZA,-27.316667,31.866667,--3-----,MP +ZAGON,Gonubie,ZA,-32.933333,28.016667,--3-----,EC +ZAGBY,Gordon's Bay,ZA,-34.166667,18.866667,--3-----,WC +ZAGRW,Graafwater,ZA,-32.25,19.0,--3-----, +ZAGRB,Grabouw,ZA,-34.15,19.0,--3-----, +ZAGPT,Green Point,ZA,-33.916667,18.4,--3-----,WC +ZAGRA,Greenacres,ZA,-32.666667,27.8,--3-----,EC +ZAGEB,Greenbushes,ZA,-33.933333,25.416667,--3-----,EC +ZAGSI,Greenside,ZA,-25.0,28.716667,--3-----,GP +ZAGRP,Greenwood Park,ZA,-29.783333,31.016667,--3-----,KZN +ZAGYT,Greyton,ZA,-34.05,19.616667,--3-----,WC +ZAGRY,Greytown,ZA,-29.05,30.583333,--3-----, +ZAGRV,Greyville,ZA,-29.833333,31.0,--3-----,KZN +ZAGBU,Groenbult,ZA,-23.583333,29.933333,--3-----,EC +ZABRA,Groot-Brakrivier,ZA,-34.033333,22.216667,--3-----,WC +ZAGTV,Grootvlei,ZA,26.766667,28.483333,--3-----,MP +ZAGLU,Guguletu,ZA,-33.983333,18.566667,--3-----,WC +ZAHNB,Haenertsburg,ZA,-23.933333,29.95,--3-----,LP +ZAHAL,Halfway House,ZA,-25.966667,28.1,--3-----, +ZAHSL,Hammanskraal,ZA,-25.4,28.25,--3-----, +ZAHMM,Hammarsdale,ZA,-29.783333,30.633333,--3-----, +ZAHNK,Hankey,ZA,-33.833333,24.883333,--3-----,EC +ZAHOK,Hanover Park,ZA,-33.983333,18.533333,--3-----,WC +ZAHAD,Harding,ZA,-30.583333,29.883333,--3-----,KZN +ZAHAT,Hartbeesfontein,ZA,-26.766667,26.416667,--3-----,NW +ZAHBP,Hartbeespoort,ZA,-25.733333,27.883333,--3-----,MP +ZAHTF,Hatfield,ZA,-25.733333,28.216667,--3-----,GP +ZAHAI,Hattingspruit,ZA,-28.083333,30.133333,--3-----,KZN +ZAHEL,Helderberg,ZA,-34.033333,18.833333,--3-----,WC +ZAHNP,Hennopspark,ZA,-25.833333,28.166667,--3-----,GT +ZAHBA,Herbertsdale,ZA,-34.016667,21.766667,--3-----,WC +ZAHDL,Heriotdale/Johannesburg,ZA,-26.2,28.116667,-23-----, +ZAHMB,Hermannsburg,ZA,-29.016667,30.766667,--3-----,KZN +ZAHXR,Hexrivier,ZA,-33.483333,19.583333,-23--6--,WC +ZAHIL,Hillcrest,ZA,-29.75,30.75,--3-----, +ZAHOO,Hoopstad,ZA,-27.833333,25.916667,--3-----,FS +ZAHPF,Hopefield,ZA,-33.066667,18.35,--3-----,WC +ZAHPT,Hopetown,ZA,-29.616667,24.083333,--3-----,NC +ZAHST,Houghton Estate,ZA,-26.15,28.05,--3-----,GP +ZAHOW,Howick,ZA,-29.483333,30.216667,--3-----, +ZAHGT,Huguenot,ZA,-31.083333,26.6,--3-----, +ZAHUM,Humewood,ZA,-33.966667,25.633333,--3-----,EC +ZAIMP,Impendle,ZA,-29.6,29.866667,--3-----,KZN +ZAIDW,Indwe,ZA,-31.466667,27.333333,--3-----,EC +ZAISD,Isando,ZA,-26.133333,28.2,--3-----, +ZAISP,Isipingo Beach,ZA,-29.983333,30.95,--3-----,KZN +ZAISB,Isithebe,ZA,-29.1,31.416667,-23-----, +ZAIXO,Ixopo,ZA,-30.15,30.083333,--3-----,KZN +ZAJEF,Jeffreys Bay,ZA,-34.05,24.916667,--3-----, +ZAJNB,Johannesburg,ZA,-26.2,28.083333,-2345---,GP +ZAJBT,Joubertina,ZA,-33.816667,23.85,--3-----,EC +ZAKPM,Kaapmuiden,ZA,-25.516667,31.3,--3-----, +ZAKAK,Kakamas,ZA,-28.75,20.633333,--3-----,NC +ZAKLD,Kanoneiland,ZA,-28.65,21.083333,--3-----,NC +ZAKDW,Kareedouw,ZA,-33.95,24.283333,--3-----,EC +ZAKTU,Kathu,ZA,-27.7,23.5,--3-----,NC +ZAKEI,Keimoes,ZA,-28.7,20.966667,--3-----,NC +ZAKLV,Kelvin,ZA,-26.95,29.25,--3-----, +ZAKHT,Kenhardt,ZA,-29.333333,21.15,--3-----,NC +ZAKEN,Kenmore,ZA,-31.183333,28.133333,--3--6--,EC +ZAKEW,Kew,ZA,-26.116667,28.1,--3-----, +ZAKKA,Khayelitsha,ZA,-34.05,18.666667,--3-----,WC +ZAKHU,Khuma,ZA,-26.85,26.866667,--3-----,NW +ZAKDB,Kidd's Beach,ZA,-33.133333,27.683333,--3-----, +ZAKWT,King William's Town,ZA,-32.866667,27.383333,--3-----, +ZAKIR,Kirkwood,ZA,-33.4,25.416667,--3-----,EC +ZAKSR,Klaserie,ZA,-24.55,31.033333,--3-----,LP +ZAKLA,Klawer,ZA,-31.766667,18.6,-23-----,WC +ZAKMD,Kleinmond,ZA,-34.35,19.033333,--3-----,WC +ZAKLI,Kliprivier,ZA,-26.583333,28.016667,--3-----,GP +ZAKNY,Knysna,ZA,-34.033333,23.066667,--3-----,WC +ZAKOB,Koeberg,ZA,-29.766667,21.15,--3-----, +ZAKIG,Koiingnaas,ZA,-30.2,17.283333,--34----,NC +ZAKMG,Komga,ZA,-32.583333,27.9,--3-----,EC +ZAKOM,Kommetjie,ZA,-34.133333,18.316667,1-3-----,WC +ZAKRB,Koringberg,ZA,-33.033333,18.666667,--3-----,WC +ZAKTN,Korsten,ZA,-33.916667,25.566667,--3--6--,EC +ZAKRK,Kragga Kamma,ZA,-31.333333,24.116667,--3-----,NC +ZAKRI,Kriel,ZA,-26.266667,29.233333,--3--6--,MP +ZAKRO,Kroonstad,ZA,-27.65,27.233333,--3-----,FS +ZAKUI,Kuils River,ZA,-33.916667,18.683333,--3-----, +ZAKDZ,Kwadukuza,ZA,-29.333333,31.283333,--3-----,KZN +ZAKWF,Kwaggafontein,ZA,-25.283333,28.95,--3-----,FS +ZAKWM,Kwamashu,ZA,-29.75,30.983333,-23-----,KZN +ZALUC,La Lucia,ZA,-29.75,31.066667,--3--6--,KZN +ZALAM,La Mercy,ZA,-29.633333,31.133333,--3-----,KZN +ZALAD,Ladismith,ZA,-33.483333,21.266667,-23-----,WC +ZALAB,Ladybrand,ZA,-29.2,27.45,--3-----,FS +ZALKD,Lakeside,ZA,-34.083333,18.45,--3-----,WC +ZAL7A,Langebaan,ZA,-33.1,18.033333,--3-----,WC +ZALDE,Lansdowne,ZA,-33.983333,18.483333,-23-----, +ZAHLE,Lephalale,ZA,-23.666667,27.75,--3-----,LP +ZALER,Lerato,ZA,-29.566667,21.516667,1-3-----,NC +ZALEB,Levubu,ZA,-23.083333,30.283333,--3-----,NC +ZALIC,Lichtenburg,ZA,-26.15,26.166667,--3-----,NW +ZALDG,Lidgetton,ZA,-29.45,30.1,--3-----,KZN +ZALIM,Limpopo,ZA,-24.0,29.5,--3-----,LP +ZALOR,Lorraine,ZA,-33.966667,25.5,--3-----,EC +ZAALH,Lothair,ZA,-26.383333,30.433333,--3--6--,MP +ZALTZ,Lutzville,ZA,-31.55,18.35,--3-----,WC +ZALYD,Lydenburg,ZA,-25.1,30.45,--3-----,MP +ZAMD3,Madantsane,ZA,-32.95,27.766667,1-3-----,EC +ZAMGL,Magaliesburg,ZA,-25.983333,27.55,--3-----, +ZAMAS,Maidstone,ZA,-29.55,31.133333,--3-----, +ZAMNI,Mandeni,ZA,-29.15,31.4,--3-----,KZN +ZAMND,Mandileni,ZA,-30.8,28.683333,--3-----, +ZAMAH,Marble Hall,ZA,-24.95,29.3,-23-----,MP +ZAMRC,Marchand,ZA,-28.716667,20.5,--3-----,NC +ZAMRH,Mariannhill,ZA,-29.85,30.833333,--3-----,KZN +ZAMST,Marshalltown,ZA,-26.2,28.083333,--3-----,GP +ZAMDL,Martindale,ZA,-31.666667,26.55,--3-----,EC +ZAMSU,Maseru,ZA,-26.416667,22.9,--3--6--,NW +ZAMAT,Matroosfontein,ZA,-33.933333,18.583333,--3-----,WC +ZAMGR,McGregor,ZA,-33.95,19.833333,--3-----,WC +ZAAS3,Mdantsane,ZA,-32.95,27.766667,--3-----,EC +ZAMEM,Memel,ZA,-27.683333,29.566667,--3-----,FS +ZAMPA,Menlo Park,ZA,-25.766667,28.3,-23-----,GP +ZAMBK,Merebank,ZA,29.966667,30.966667,--3-----, +ZAMRV,Merrivale,ZA,-29.516667,30.233333,--3-----,KZN +ZAMEY,Meyerton,ZA,-26.566667,28.0,--3-----, +ZAMDB,Middelburg,ZA,-25.766667,29.466667,--3-----, +ZAMID,Middelkraal,ZA,-33.233333,19.1,--3-----,FS +ZAMRD,Midrand,ZA,-26.0,28.1,--3-----, +ZAMDV,Midvaal,ZA,-26.566667,28.616667,--3-----,GP +ZAMTP,Mitchells Plain,ZA,-34.05,18.616667,--3-----,WC +ZAMOB,Mobeni,ZA,-29.95,30.95,-23-----,KZN +ZAMOD,Modimolle,ZA,-24.7,28.4,--3-----,LP +ZAMON,Montagu,ZA,-33.783333,20.1,--3-----,WC +ZAMOO,Mooi River,ZA,-29.183333,30.0,--3-----,KZN +ZAMOR,Moorreesburg,ZA,-34.5,18.666667,--3-----,WC +ZAMGZ,Morgenzon,ZA,-26.733333,29.616667,--3-----,MP +ZAMSE,Morningside,ZA,-29.816667,31.016667,--3-----,KZN +ZAMPL,Mount Pleasant,ZA,-34.0,25.533333,--3-----,EC +ZAMBY,Mowbray,ZA,-33.933333,18.466667,--3-----,WC +ZAMTZ,Mtunzini,ZA,-28.95,31.75,--3-----,KZN +ZAMTW,Mtwalume,ZA,-30.483333,30.633333,--3-----,KZN +ZAMUL,Muldersdrif,ZA,26.033333,27.85,--3-----,GT +ZAMGE,Musgrave,ZA,-29.85,31.0,--3-----,KZN +ZANPR,Napier,ZA,-34.466667,19.9,--3-----,WC +ZANAL,Natala,ZA,-30.75,29.216667,--3-----,EC +ZANDB,Ndabeni,ZA,-26.933333,32.016667,--3-----,KZN +ZANNB,Ndabeni,ZA,-33.916667,18.483333,--3-----,WC +ZANEA,Neave,ZA,-33.916667,25.583333,--3-----, +ZANGG,New Germany,ZA,-29.8,30.883333,1-3--6--,NL +ZALWD,Newlands,ZA,-33.966667,18.45,--3-----,WC +ZANGW,Ngodwana,ZA,-25.566667,30.666667,--3-----,MP +ZANCC,Noblesfontein,ZA,-31.783333,23.166667,--3-----,NC +ZANON,Nongoma,ZA,-27.9,31.65,--3-----,KZN +ZANDW,Noordheuwel,ZA,-26.083333,27.783333,--3-----,GP +ZANOO,Noordhoek,ZA,-34.1,18.366667,--3-----,WC +ZANCF,Northcliff,ZA,-26.133333,27.95,-23-----,GP +ZANTD,Northdene,ZA,-29.866667,30.883333,--3-----,KZN +ZANYB,Nyimba,ZA,-14.55,30.833333,--3-----,EC +ZANYL,Nylstroom,ZA,-24.683333,28.4,-23-----, +ZAODS,Odendaalsrus,ZA,-27.866667,26.683333,--3-----,FS +ZAOGS,Ogies,ZA,-26.05,29.066667,--3-----,MP +ZAOLI,Olifantsfontein,ZA,-25.95,28.216667,--3-----, +ZAOUS,Onrus,ZA,-34.4,19.183333,--3-----,WC +ZAOTT,Ottawa,ZA,-29.666667,31.033333,--3-----,KZN +ZARPT,Overport,ZA,29.833333,31.0,--3-----, +ZAPNL,Paardeneiland,ZA,-33.916667,18.466667,1-3-----, +ZAPAA,Paarl,ZA,-33.716667,18.95,--3-----, +ZAPKR,Park Rynie,ZA,-30.316667,30.733333,--3-----,KZN +ZAPRW,Parow,ZA,-33.883333,18.616667,--3-----, +ZAPLP,Paulpietersburg,ZA,-27.416667,30.816667,--3-----,KZN +ZAPLD,Pelindaba,ZA,-29.0,24.0,--3--6--,NC +ZAPHD,Philadelphia,ZA,-33.666667,18.583333,--3-----,WC +ZAPH4,Philippi,ZA,-34.016667,18.55,--3-----,WC +ZAPHU,Phuthaditjhaba,ZA,-28.516667,28.8,--3-----, +ZAPRF,Piet Retief,ZA,-27.0,30.8,-23-5---,MP +ZAPIK,Piketberg,ZA,-32.9,18.733333,-23-----,WC +ZAPIB,Pilanesberg,ZA,-25.25,27.1,--3-----,NW +ZAPLS,Plessislaer,ZA,-29.633333,30.35,--3-----,KZN +ZAPTD,Plumstead,ZA,-34.016667,18.466667,--3-----,WC +ZAPOF,Pofadder,ZA,-29.133333,19.383333,--3-----,NC +ZAPON,Pongola,ZA,-27.366667,31.6,--3-----,KZN +ZAPED,Port Edward,ZA,-31.05,30.216667,1-3-56--, +ZAJOH,Port Saint John's,ZA,-31.633333,29.533333,1-34----,EC +ZAZCK,Port Shepstone,ZA,-30.75,30.45,--3-----,KZN +ZAPOR,Porterville,ZA,-33.0,18.983333,-23-----,WC +ZAPMB,Postmasburg,ZA,-28.316667,23.066667,--3-----,NC +ZAPRY,Pretoria,ZA,-25.7,28.216667,-23456--,GP +ZAPAT,Prince Albert,ZA,-33.216667,22.033333,--3-----,WC +ZAPUT,Putfontein,ZA,-26.116667,28.4,--3-----,GP +ZAQBG,Queensburgh,ZA,-29.866667,30.933333,--3-----,KZN +ZAQGN,Quigney,ZA,-33.016667,27.9,--3-----,EC +ZAQWA,QwaQwa,ZA,-28.516667,28.816667,--3-----,FS +ZARGE,Ramsgate,ZA,-30.9,30.333333,--3-----,KZN +ZARDB,Randburg,ZA,-26.083333,27.966667,--3-----, +ZARFT,Randfontein,ZA,-26.15,27.7,--3-----, +ZARAN,Randjesfontein,ZA,-25.95,28.133333,--3-----,GP +ZARTD,Ratanda,ZA,-26.55,28.333333,--3-----,GP +ZARAW,Rawsonville,ZA,-33.683333,19.316667,--3--6--,WC +ZARHL,Red Hill,ZA,-29.766667,31.016667,--3-----,KZN +ZARDH,Redhouse,ZA,-33.833333,25.583333,--3-----,EC +ZARTZ,Reitz,ZA,-27.8,28.433333,--3-----,GP +ZARVH,Reservoir Hills,ZA,-29.8,30.933333,-23-----,KZN +ZARTT,Retreat,ZA,-31.916667,26.966667,--3-----,NL +ZAREU,Reunion,ZA,-29.966667,30.933333,--3-----,KZN +ZARHS,Rhodes,ZA,-30.783333,27.95,--3-----,EC +ZARCM,Richmond,ZA,-29.866667,30.266667,--3-----,KZN +ZARKL,Riebeek-Kasteel,ZA,-33.383333,18.9,--3-----,WC +ZARDL,Riversdale,ZA,-34.1,21.266667,--3-----,WC +ZARVA,Rivonia,ZA,-26.05,28.05,--3-----,GP +ZASHM,Robertsham,ZA,26.25,28.016667,1-3-----,EC +ZARBT,Robertville,ZA,-26.85,28.95,--3--6--, +ZARDP,Roodepoort,ZA,-26.133333,27.866667,--3-----, +ZARSH,Rossburgh,ZA,-29.9,30.966667,--3-----,KZN +ZAROS,Rosslyn,ZA,-25.616667,28.083333,--3-----,GP +ZARDW,Rust De Winter,ZA,-25.2,28.6,--3-----,LP +ZARSB,Rustenburg,ZA,-25.65,27.233333,--3-----,NW +ZARUS,"Rustenburg, Thabazimbi",ZA,-24.916667,27.15,--3-----,LP +ZAZAC,Saint Albans,ZA,-33.916667,25.35,--3-----,EC +ZASFB,Saint Francis Bay,ZA,-34.183333,24.85,--3-----, +ZAZER,Saint Helena Bay,ZA,-32.766667,18.033333,--3-----,WC +ZASDT,Sandton,ZA,-26.066667,28.066667,--3-----, +ZASAS,Sasolburg,ZA,-26.816667,27.833333,--3-----, +ZASCT,Scottburgh,ZA,-30.266667,30.75,--3-----, +ZASVW,Sea View,ZA,-29.9,30.966667,--3-----,KZN +ZAZE4,Sezela,ZA,-30.416667,30.683333,1-3-----,KZN +ZASKR,Shaka's Rock,ZA,-29.5,31.216667,--3-----,FS +ZASHR,Shaka's Rock,ZA,-29.5,31.216667,--3-----,KZN +ZASHS,Shakaskraal,ZA,-29.433333,31.216667,--3-----, +ZASTN,Silverton,ZA,25.716667,28.283333,--3-----, +ZASMN,Simon's Town,ZA,-34.183333,18.433333,1-3-----,WC +ZASLW,Sir Lowry's Pass Village,ZA,-34.116667,18.9,--3-----,WC +ZASLU,Slurry,ZA,-25.816667,25.85,--3-----,NW +ZASOM,Somerset West,ZA,-34.066667,18.833333,--3-----, +ZASD7,Southdale,ZA,-26.233333,28.016667,--3-----,GP +ZASPO,Southport,ZA,-30.683333,30.5,--3-----,KZN +ZASPA,Sparks,ZA,-29.833333,30.983333,--3-----,KZN +ZASTC,Standerton,ZA,-26.95,29.25,--3-----,MP +ZASFD,Stanford,ZA,-34.433333,19.45,--3-----,WC +ZASGR,Stanger,ZA,-29.333333,31.283333,--3-----, +ZASTP,Steelpoort,ZA,-24.716667,30.2,--3-----,MP +ZASNG,Steenberg,ZA,-34.066667,18.466667,--3-----,WC +ZASLB,Stellenberg,ZA,-33.866667,18.65,--3--6--,WC +ZASTH,Stellenbosch,ZA,-33.916667,18.85,--3-----, +ZASBI,Stilbaai,ZA,-34.366667,21.416667,--3-----,WC +ZASFT,Stilfontein,ZA,-26.833333,26.766667,--3-----,GP +ZASTD,Strand,ZA,-34.116667,18.833333,123-----,WC +ZASTU,Stutterheim,ZA,-32.55,27.416667,--3-----, +ZASPL,Suider-Paarl,ZA,-33.766667,18.95,--3-----,WC +ZASYD,Sunnyridge,ZA,-33.033333,27.85,--3-----,EC +ZASWK,Swartklip,ZA,-24.933333,27.15,--3-----,LP +ZASWS,Swartkops,ZA,-33.85,25.583333,--3-----,EC +ZASWG,Swartruggens,ZA,-25.65,26.7,--3-----,NW +ZASDH,Sydenham,ZA,-33.916667,25.6,--3-----,EC +ZATVW,Table View,ZA,-33.816667,18.483333,--3-----,WC +ZATMB,Tembisa,ZA,-26.0,28.2,--3-----,GP +ZATNT,Tongaat,ZA,-29.566667,31.116667,--3-----, +ZATWR,Touws River,ZA,-33.333333,20.033333,--3-----,WC +ZATDD,Trichardt,ZA,-26.483333,29.233333,--3-----,MP +ZATUL,Tulbagh,ZA,-33.266667,19.133333,--3-----,WC +ZAULC,Ulco,ZA,-28.316667,24.216667,--3-----,NC +ZAUMB,Umbogintwini,ZA,-30.016667,30.916667,-23-----,KZN +ZAUDI,Umdloti,ZA,-29.65,31.116667,--3-----,KZN +ZAUHL,Umhlali,ZA,-29.766667,312.316667,--3-----,KZN +ZAUMR,Umhlanga Rocks,ZA,-29.716667,31.083333,-23-----,KZN +ZAUMH,Umhlatuzana,ZA,-29.883333,31.0,--3-----,KZN +ZAUMK,Umkomaas,ZA,-30.183333,30.783333,--3-----, +ZAULZ,Umlazi,ZA,-29.966667,30.883333,--3-----,KZN +ZAUZK,Umzimkulu,ZA,-30.266667,29.933333,--3-----,KZN +ZAUMZ,Umzinto,ZA,-30.3,30.666667,--3-----, +ZAUTR,Utrecht,ZA,-27.65,30.333333,--3-----,KZN +ZAVAL,Vaal,ZA,-26.766667,27.933333,--3-----, +ZALMP,Vaalwater,ZA,-24.283333,28.1,--3-----,LP +ZAVDP,Vanderbijlpark,ZA,-26.683333,27.816667,--3-----, +ZAVLD,Velddrif,ZA,-32.783333,18.166667,--3-----,WC +ZAFVS,Ventersburg,ZA,-28.083333,27.133333,--3-----,FS +ZAVEN,Ventersdorp,ZA,-26.316667,26.816667,--3-----,NW +ZAVGG,Vereeniging,ZA,-26.65,27.966667,--3-----, +ZAVRG,Vereeniging,ZA,-31.516667,26.183333,--3-----, +ZAVER,Vergenoeg,ZA,-28.733333,24.75,--3-----,GP +ZAVRM,Vermont,ZA,-34.416667,19.15,--3-----,WC +ZAVEU,Verulam,ZA,-29.633333,31.05,--3-----, +ZAVXD,Viljoensdrif,ZA,-26.716667,27.9,--3-----, +ZAVIR,Virginia,ZA,-28.116667,26.9,--3-----,FS +ZAVOL,Volksrust,ZA,-27.366667,29.883333,--3-----,MP +ZAVDB,Vredenburg,ZA,-32.9,17.983333,--3-----,WC +ZAWDV,Wadeville,ZA,-26.25,28.183333,--3-----, +ZAWLM,Walmer,ZA,-33.983333,25.583333,--3-----,EC +ZAWAM,Warmbaths,ZA,-24.883333,28.283333,--3-----,LP +ZAWRB,Warner Beach,ZA,-30.083333,30.866667,--3-----,KZN +ZAWFL,Water Fall,ZA,-30.4,29.333333,--3-----,KZN +ZAWKG,Waterkloof Glen,ZA,-25.783333,28.266667,--3-----,GP +ZAWLT,Wellington,ZA,-33.633333,18.983333,--3-----, +ZAWNW,Wentworth,ZA,-29.916667,31.0,--3-----,KZN +ZAWBN,West Bank,ZA,-33.033333,27.9,--3-----,EC +ZAWES,Westering,ZA,-33.933333,25.466667,--3-----,EC +ZAU7S,Westlake,ZA,-34.083333,18.433333,--3-----,WC +ZAWRD,Westridge,ZA,-29.85,30.983333,--3-----,KZN +ZAWHR,White River,ZA,-25.316667,31.016667,--3-----, +ZAWDM,Windermere,ZA,-33.916667,-18.516667,--3-----,WC +ZAWML,Windmeul,ZA,-33.65,18.916667,--3-----,WC +ZAWIT,Witbank,ZA,-25.85,29.2,--3-----, +ZAWFD,Witfield,ZA,-26.183333,28.2,-23-----,GP +ZAWOL,Wolmaransstad,ZA,-27.2,25.966667,--3-----,NW +ZAWSY,Wolseley,ZA,-33.416667,19.2,--3-----,WC +ZAWOR,Worcester,ZA,-33.633333,19.433333,--3-----, +ZAWNB,Wynberg,ZA,-33.983333,18.45,--3-----, +ZAWYN,Wynberg,ZA,-28.133333,26.166667,--3-----,GT +ZAYFT,Yzerfontein,ZA,-33.333333,18.166667,--3-----,WC +ZAZEB,Zebediela,ZA,-24.283333,29.233333,--3-----, +ZMBMA,Bwana Mkubwa,ZM,-13.033333,28.7,--3-----,08 +ZMCHI,Chililabombwe,ZM,-12.366667,27.833333,--3-----,08 +ZMCHU,Chirundu,ZM,-16.05,28.833333,--3-----,07 +ZMCHM,Chisamba,ZM,-14.983333,28.383333,--3-----,02 +ZMCGE,Chongwe,ZM,-15.35,28.7,--3-----,09 +ZMCHZ,Chozi,ZM,-9.283333,32.333333,--3-----, +ZMIKA,Isoka,ZM,-10.133333,32.633333,--3-----,05 +ZMKSH,Kalulishi,ZM,-12.833333,28.083333,--3--6--,08 +ZMKNH,Kansanshi,ZM,-12.1,26.433333,--3-----,06 +ZMKAM,Kapiri Mposhi,ZM,-13.966667,28.666667,--3-----, +ZMKAT,Katete,ZM,-11.216667,33.15,--3-----,03 +ZMKTM,Katima Mulilo,ZM,-17.466667,24.216667,--3-----,01 +ZMKWB,Kawambwa,ZM,-9.783333,29.083333,--3-----,04 +ZMKZG,Kazungula,ZM,-17.783333,25.266667,--3-----,07 +ZMLWA,Lumwana,ZM,-11.833333,25.133333,--3-----,06 +ZMLUZ,Lundazi,ZM,-12.283333,33.166667,--3-----, +ZMMAK,Makeni,ZM,-24.25,172.833333,--3-----, +ZMMAL,Maluba,ZM,-11.083333,31.966667,--3-----,05 +ZMMTB,Matumbo,ZM,-10.966667,32.016667,--3-----,05 +ZMMKU,Mkushi,ZM,-13.616667,29.4,--3-----,02 +ZMMZE,Monze,ZM,-16.266667,27.483333,--3-----, +ZMMPK,Mpika,ZM,-11.833333,31.45,--3-----, +ZMMPO,Mpongwe,ZM,-13.533333,28.15,--3-----,08 +ZMMPU,Mpulungu,ZM,-8.75,31.1,--3-----, +ZMMWM,Mwami,ZM,-13.816667,32.766667,--3-----,03 +ZMNKD,Nakonde,ZM,-9.333333,32.766667,--3-----,05 +ZMYMB,Nyimba,ZM,-14.55,30.833333,--3-----,03 +ZMRGY,Ridgeway,ZM,-15.45,28.316667,--3-----,09 +ZMTDM,Tunduma,ZM,-9.3,32.766667,--3-----, +ZMZMA,Zimba,ZM,-17.316667,26.2,--3-----,07 +ZWBBG,Beitbridge,ZW,-22.216667,30.0,--3-----, +ZWBGV,Belgravia,ZW,-17.8,31.033333,--3-----,HA +ZWBIN,Bindura,ZW,-17.3,31.316667,--3-----, +ZWZ45,Chinhoyi,ZW,-17.366667,30.2,--3-----,MW +ZWCHI,Chiredzi,ZW,-21.05,31.666667,-23-----, +ZWCGW,Chitungwiza,ZW,-18.0,31.05,--3-----,HA +ZWDW3,Darwendale,ZW,-17.716667,30.55,--3-----,MW +ZWGDE,Glendale,ZW,-17.35,31.05,--3-----,MC +ZWGTS,Graniteside,ZW,-17.85,31.05,--3-----,HA +ZWGUI,Guruve,ZW,-16.65,30.7,--3-----,MC +ZWGTU,Gutu,ZW,-19.65,31.166667,--3-----,MV +ZWGWE,Gweru,ZW,-19.45,29.816667,--34----,MI +ZWHUI,Hauna,ZW,-18.483333,32.833333,--3-----,MA +ZWHDL,Headlands,ZW,-18.283333,32.033333,--3-----, +ZWKDM,Kadoma,ZW,-18.316667,29.9,--3-----, +ZWLI4,Lalapansi,ZW,-19.333333,30.183333,--3-----,MI +ZWMAP,Mapanzure,ZW,-20.383333,30.85,--3-----,MV +ZWMAD,Marondera,ZW,-18.183333,31.55,--3-----, +ZWMZW,Mazowe,ZW,-17.516667,30.966667,--3-----,MC +ZWMGU,Mhangura,ZW,-16.9,30.15,--3-----,MW +ZWMPK,Milton Park,ZW,-17.8,31.016667,--3-----,HA +ZWMSA,Msasa,ZW,-17.833333,31.1,--3-----,HA +ZWNBD,Nembudziya,ZW,-17.683333,29.016667,--3-----,MI +ZWNGE,Ngezi,ZW,-20.566667,30.4,--3-----,MI +ZWZMW,Selous,ZW,-18.083333,30.45,--3-----,MW +ZWVM8,Shamva,ZW,-17.3,31.566667,--3-----,MC +ZWSGW,Shurugwi,ZW,-19.666667,30.0,--3-----,MI +ZWSTH,Southerton,ZW,-17.85,31.016667,--3-----, +ZWTHJ,Thompson Junction,ZW,-18.0,26.433333,-23-----, +ZWZMZ,Zimbabwe,ZW,-20.266667,30.916667,1-3-----,MV +ZWZVS,Zvishavane,ZW,-20.333333,30.033333,--3-----,MI +STTMS,Sao Tome Island,ST,0.3472,6.7375,1-------, diff --git a/package.json b/package.json index fc1c1b6..5289833 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "dev": "tsx watch src/index.ts", "build": "prisma generate && tsc", "start": "prisma migrate deploy && node dist/index.js", - "seed:demo": "tsx scripts/seed-demo.ts" + "seed:demo": "tsx scripts/seed-demo.ts", + "seed:reference": "tsx scripts/seed-reference.ts" }, "dependencies": { "@fastify/cors": "^11.2.0", diff --git a/scripts/seed-reference.ts b/scripts/seed-reference.ts new file mode 100644 index 0000000..cd2dbe5 --- /dev/null +++ b/scripts/seed-reference.ts @@ -0,0 +1,187 @@ +import { createHash } from 'node:crypto' +import { readFileSync } from 'node:fs' +import { Prisma } from '@prisma/client' +import { prisma } from '../dist/db.js' + +type SupplierSeed = { + lei: string + name: string + countryCode: string + city: string +} + +type HubSeed = { + code: string + name: string + countryCode: string +} + +type ProductSeed = { + name: string + hsCodes: string[] + label: string +} + +const countryNames = new Intl.DisplayNames(['en'], { type: 'region' }) +const productImages = [ + 'https://images.unsplash.com/photo-1625246333195-78d9c38ad449?auto=format&fit=crop&w=900&q=80', + 'https://images.unsplash.com/photo-1574323347407-f5e1ad6d020b?auto=format&fit=crop&w=900&q=80', + 'https://images.unsplash.com/photo-1592924357228-91a4daadcfea?auto=format&fit=crop&w=900&q=80', +] + +function parseCsvLine(line: string): string[] { + const fields: string[] = [] + let field = '' + let quoted = false + for (let index = 0; index < line.length; index += 1) { + const character = line[index] + if (character === '"') { + if (quoted && line[index + 1] === '"') { + field += '"' + index += 1 + } else { + quoted = !quoted + } + } else if (character === ',' && !quoted) { + fields.push(field) + field = '' + } else { + field += character + } + } + if (quoted) throw new Error(`Unclosed CSV quote: ${line}`) + fields.push(field) + return fields +} + +function stableUuid(namespace: string, value: string): string { + const hex = createHash('sha256').update(`${namespace}:${value}`).digest('hex') + return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-4${hex.slice(13, 16)}-8${hex.slice(17, 20)}-${hex.slice(20, 32)}` +} + +function normalize(value: string): string { + return value.normalize('NFKD').replace(/[^a-zA-Z0-9]/g, '').toLowerCase() +} + +function readSuppliers(): SupplierSeed[] { + const value = JSON.parse( + readFileSync(new URL('../data/africa_suppliers.json', import.meta.url), 'utf8'), + ) as SupplierSeed[] + for (const supplier of value) { + if (!supplier.lei || !supplier.name || supplier.countryCode.length !== 2) { + throw new Error(`Invalid Africa supplier reference: ${JSON.stringify(supplier)}`) + } + } + return value +} + +function readHubs(): HubSeed[] { + const csv = readFileSync( + new URL('../data/unlocode_africa_road_terminals.csv', import.meta.url), + 'utf8', + ) + return csv.trim().split(/\r?\n/).slice(1).map((line) => { + const [code, name, countryCode] = parseCsvLine(line) + if (!code || !name || countryCode.length !== 2) throw new Error(`Invalid hub reference: ${line}`) + return { code, name, countryCode } + }) +} + +function readProducts(): ProductSeed[] { + const csv = readFileSync(new URL('../data/africa_products.csv', import.meta.url), 'utf8') + const grouped = new Map() + for (const line of csv.trim().split(/\r?\n/).slice(1)) { + const [name, hsCode, label] = parseCsvLine(line) + if (!name || !/^\d{6}$/.test(hsCode) || !label) throw new Error(`Invalid product reference: ${line}`) + const current = grouped.get(name) + if (current === undefined) grouped.set(name, { name, hsCodes: [hsCode], label }) + else current.hsCodes.push(hsCode) + } + return [...grouped.values()] +} + +function supplierHub(supplier: SupplierSeed, hubs: HubSeed[]): HubSeed { + const countryHubs = hubs.filter((hub) => hub.countryCode === supplier.countryCode) + if (countryHubs.length === 0) throw new Error(`No Africa hub for ${supplier.countryCode}`) + const city = normalize(supplier.city) + const cityHub = city.length > 0 + ? countryHubs.find((hub) => normalize(hub.name).includes(city) || city.includes(normalize(hub.name))) + : undefined + return cityHub ?? countryHubs[0] +} + +const suppliers = readSuppliers() +const hubs = readHubs() +const products = readProducts() + +for (const [index, product] of products.entries()) { + const uuid = stableUuid('africa-product', product.name) + const data = { + sku: `HS-${product.hsCodes[0]}`, + name: product.name, + categoryName: 'African commodities', + unit: 'ton', + imageUrl: productImages[index % productImages.length], + description: `${product.label}. HS codes: ${product.hsCodes.join(', ')}.`, + isActive: true, + } + await prisma.product.upsert({ where: { uuid }, create: { uuid, ...data }, update: data }) +} + +for (const supplier of suppliers) { + const uuid = stableUuid('africa-supplier', supplier.lei) + const country = countryNames.of(supplier.countryCode) + if (country === undefined) throw new Error(`Unknown country code: ${supplier.countryCode}`) + const data = { + teamUuid: null, + name: supplier.name, + description: `African supplier reference from GLEIF (${supplier.lei}), ${supplier.city}.`, + country, + countryCode: supplier.countryCode, + logoUrl: `https://ui-avatars.com/api/?name=${encodeURIComponent(supplier.name)}&background=0B6BFF&color=fff&bold=true`, + isVerified: false, + isActive: true, + } + await prisma.supplier.upsert({ where: { uuid }, create: { uuid, ...data }, update: data }) +} + +const storedProducts = await prisma.product.findMany({ + where: { uuid: { in: products.map((product) => stableUuid('africa-product', product.name)) } }, + orderBy: { name: 'asc' }, +}) +const storedSuppliers = await prisma.supplier.findMany({ + where: { uuid: { in: suppliers.map((supplier) => stableUuid('africa-supplier', supplier.lei)) } }, + orderBy: { name: 'asc' }, +}) + +let quoteCount = 0 +for (const [supplierIndex, supplier] of suppliers.entries()) { + const storedSupplier = storedSuppliers.find((item) => item.uuid === stableUuid('africa-supplier', supplier.lei)) + if (storedSupplier === undefined) throw new Error(`Seeded supplier is missing: ${supplier.lei}`) + const hub = supplierHub(supplier, hubs) + for (let productOffset = 0; productOffset < 2; productOffset += 1) { + const productSeed = products[(supplierIndex * 2 + productOffset) % products.length] + const storedProduct = storedProducts.find((item) => item.uuid === stableUuid('africa-product', productSeed.name)) + if (storedProduct === undefined) throw new Error(`Seeded product is missing: ${productSeed.name}`) + const uuid = stableUuid('africa-quote', `${supplier.lei}:${productSeed.name}`) + const data = { + supplierId: storedSupplier.id, + productId: storedProduct.id, + status: 'active', + quantity: new Prisma.Decimal(250 + (supplierIndex % 12) * 50 + productOffset * 25), + unit: storedProduct.unit, + pricePerUnit: new Prisma.Decimal(700 + (supplierIndex % 10) * 65 + productOffset * 40), + currency: 'USD', + incotermsCode: productOffset === 0 ? 'FOB' : 'DAP', + originPointUuid: `africa-${hub.code.toLowerCase()}`, + originName: hub.name, + validUntil: new Date('2028-12-31'), + notes: 'Africa reference catalog', + } + await prisma.quote.upsert({ where: { uuid }, create: { uuid, ...data }, update: data }) + quoteCount += 1 + } +} + +console.log(`Seeded Africa exchange reference data: suppliers ${suppliers.length}, products ${products.length}, quotes ${quoteCount}`) +await prisma.$disconnect()