From 17b1614af3840c2c74bee181290eb094f8ed4a00 Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Wed, 29 Jul 2020 23:46:38 +0100 Subject: [PATCH] rbn, ve7cc improvements and fixes 1. Add show/rbn command that allows one to see who is online and configured for RBN. See help sh/rbn for details. 2. Fixed issue with set/ve7cc mode adding unwanted newlines to output. 3. Attempted to make the QRG normalisation more "intelligent". This would be sooooooooo much easier if skimmers were calibrated more accurately. 4. Added CTY-3012 prefixes. --- Changes | 7 ++ cmd/show/rbn.pl | 25 ++--- data/cty.dat | 253 +++++++++++++++++++++--------------------- data/prefix_data.pl | 112 +++++++++++-------- data/wpxloc.raw | 2 +- perl/DXCommandmode.pm | 6 +- perl/DXMsg.pm | 2 +- perl/DXProtout.pm | 10 +- perl/RBN.pm | 226 ++++++++++++++++++++++++------------- perl/Spot.pm | 1 + perl/VE7CC.pm | 4 +- perl/cluster.pl | 3 +- 12 files changed, 377 insertions(+), 274 deletions(-) diff --git a/Changes b/Changes index cab29244..69b71f5d 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,10 @@ +29Jul20======================================================================= +1. Add show/rbn command that allows one to see who is online and configured + for RBN. See help sh/rbn for details. +2. Fixed issue with set/ve7cc mode adding unwanted newlines to output. +3. Attempted to make the QRG normalisation more "intelligent". This would be + sooooooooo much easier if skimmers were calibrated more accurately. +4. Added CTY-3012 prefixes. 23Jul20======================================================================= 1. fix Filtering so that it does less of what it was doing badly, thus the perl interpreter to do more of the work. Which means you *should* be diff --git a/cmd/show/rbn.pl b/cmd/show/rbn.pl index e09daca7..2bb8a0ee 100644 --- a/cmd/show/rbn.pl +++ b/cmd/show/rbn.pl @@ -1,19 +1,14 @@ # -# show/node [ | ] +# show/rbn [all|,,,] # -# This command either lists all nodes known about -# or the ones specified on the command line together -# with some information that is relavent to them -# -# This command isn't and never will be compatible with AK1A -# -# A special millenium treat just for G4PDQ -# -# Copyright (c) 2000 Dirk Koopman G1TLH -# +# This command either lists all rbn users known about (sh/rbn all) +# or the ones specified on the command line, If no arguments are present +# then it will list all connected rbn/skimmer users. # +# Copyright (c) 2020 Dirk Koopman G1TLH # + my ($self, $line) = @_; return (1, $self->msg('e5')) unless $self->priv >= 1; @@ -23,7 +18,7 @@ my $count; # search thru the user if (@call == 0) { - @call = map{$_->call} grep {$_->user->call && $_->user->wantrbn} DXChannel::get_all_users(); + @call = sort map{$_->call} grep {$_->user->call && $_->user->wantrbn} DXChannel::get_all_users(); } elsif ($call[0] eq 'ALL') { shift @call; my ($action, $key, $data) = (0,0,0); @@ -47,8 +42,10 @@ foreach my $call (@call) { } ++$count; } -push @l, "" while @l < 5; -push @out, sprintf "%-12s %-12s %-12s %-12s %-12s", @l; +if (@l) { + push @l, "" while @l < 5; + push @out, sprintf "%-12s %-12s %-12s %-12s %-12s", @l; +} return (1, @out, $self->msg('rec', $count)); diff --git a/data/cty.dat b/data/cty.dat index c3d805fe..dd05ec8d 100644 --- a/data/cty.dat +++ b/data/cty.dat @@ -277,11 +277,11 @@ China: 24: 44: AS: 36.00: -102.00: -8.0: BY: BZ8N[43],BZ8O[43],BZ8P[43],BZ8Q[43],BZ8R[43],BZ8S[43],BZ8T[43],BZ8U[43], BZ8V[43],BZ8W[43],BZ8X[43],BZ9A(24)[43],BZ9B(24)[43],BZ9C(24)[43], BZ9D(24)[43],BZ9E(24)[43],BZ9F(24)[43],BZ9S(23)[42],BZ9T(23)[42], - BZ9U(23)[42],BZ9V(23)[42],BZ9W(23)[42],BZ9X(23)[42]; + BZ9U(23)[42],BZ9V(23)[42],BZ9W(23)[42],BZ9X(23)[42],=BG9XD/5; Nauru: 31: 65: OC: -0.52: -166.92: -12.0: C2: C2; Andorra: 14: 27: EU: 42.58: -1.62: -1.0: C3: - C3,=VERSION; + C3; The Gambia: 35: 46: AF: 13.40: 16.38: 0.0: C5: C5; Bahamas: 08: 11: NA: 24.25: 76.00: 5.0: C6: @@ -333,8 +333,7 @@ Comoros: 39: 53: AF: -11.63: -43.30: -3.0: D6: D6; Fed. Rep. of Germany: 14: 28: EU: 51.00: -10.00: -1.0: DL: DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ,DR,Y2,Y3,Y4,Y5,Y6,Y7, - Y8,Y9,=DM19ERZ/BL,=DM19ERZ/BU,=DM19ERZ/HAM,=DM19ERZ/MAF,=DM19ERZ/MF, - =DM19ERZ/MS,=DM19ERZ/VL; + Y8,Y9,=DM19ERZ/BU,=DM19ERZ/MAF; Philippines: 27: 50: OC: 13.00: -122.00: -8.0: DU: 4D,4E,4F,4G,4H,4I,DU,DV,DW,DX,DY,DZ; Eritrea: 37: 48: AF: 15.00: -39.00: -3.0: E3: @@ -350,8 +349,8 @@ Niue: 32: 62: OC: -19.03: 169.85: 11.0: E6: Bosnia-Herzegovina: 15: 28: EU: 44.32: -17.57: -1.0: E7: E7; Spain: 14: 37: EU: 40.37: 4.88: -1.0: EA: - AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH,=EA2EZ/P,=EA3HSD/P,=EA5CC/P,=EA5EZ/P, - =EA5ZD/URE,=EA9HU,=EC5EA/VIC; + AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH,=EA1RCI/RCC,=EA1RCP/NM,=EA2EZ/P, + =EA3HSD/P,=EA5CC/P,=EA5EZ/P,=EA5ZD/URE,=EA9HU; Balearic Islands: 14: 37: EU: 39.60: -2.95: -1.0: EA6: AM6,AN6,AO6,EA6,EB6,EC6,ED6,EE6,EF6,EG6,EH6; Canary Islands: 33: 36: AF: 28.32: 15.85: 0.0: EA8: @@ -394,7 +393,7 @@ New Caledonia: 32: 56: OC: -21.50: -165.50: -11.0: FK: Chesterfield Islands: 30: 56: OC: -19.87: -158.32: -11.0: FK/c: =TX3X; Martinique: 08: 11: NA: 14.70: 61.03: 4.0: FM: - FM,=TO5A,=TO5O,=TO5T,=TO7A; + FM,=TO5A,=TO5T,=TO7A; French Polynesia: 32: 63: OC: -17.65: 149.40: 10.0: FO: FO; Austral Islands: 32: 63: OC: -23.37: 149.48: 10.0: FO/a: @@ -431,8 +430,8 @@ England: 14: 27: EU: 52.77: 1.47: 0.0: G: Isle of Man: 14: 27: EU: 54.20: 4.53: 0.0: GD: 2D,GD,GT,MD,MT; Northern Ireland: 14: 27: EU: 54.73: 6.68: 0.0: GI: - 2I,GI,GN,MI,MN,=2I0NGM/NHS,=GB100RS,=GB1HSC,=GB3NGI,=GB4AFD,=GB4UAS, - =GB5NHS,=GB75VEC,=GB8NHS,=GB9AFD; + 2I,GI,GN,MI,MN,=2I0NGM/NHS,=GB100RS,=GB3NGI,=GB4AFD,=GB4UAS,=GB5AFD, + =GB5BL,=GB5NHS,=GB75VEC,=GB8NHS,=GB9AFD; Jersey: 14: 27: EU: 49.22: 2.18: 0.0: GJ: 2J,GH,GJ,MH,MJ,=GH5DX/NHS; Shetland Islands: 14: 27: EU: 60.50: 1.50: 0.0: *GM/s: @@ -444,15 +443,15 @@ Shetland Islands: 14: 27: EU: 60.50: 1.50: 0.0: *GM/s: =MM0ZRC,=MM1FJM,=MM3VQO,=MM5PSL,=MM5YLO,=MM6BDU,=MM6BZQ,=MM6IKB,=MM6IMB, =MM6MFA,=MM6PTE,=MM6SJK,=MM6YLO,=MM6ZBG,=MM6ZDW,=MM8A,=MS0ZCG,=MS0ZET; Scotland: 14: 27: EU: 56.82: 4.18: 0.0: GM: - 2A,2M,GM,GS,MA,MM,MS,=GB0SLB,=GB2ELH,=GB2FEA,=GB2JCM,=GB2KDR,=GB2OL, - =GB2ROC,=GB3ANG,=GB3LER,=GB3LER/B,=GB4LER,=GB7SRW,=GM0WED/NHS,=GM3YDN/NHS, - =GM4SQM/NHS,=GM4SQN/NHS,=GM6JNJ/NHS,=MM0DHQ/NHS,=MM3AWD/NHS,=MM3DDQ/NHS, - =MM7WAB/NHS; + 2A,2M,GM,GS,MA,MM,MS,=GB0CSL,=GB0TNL,=GB1DHL,=GB1GND,=GB2ELH,=GB2FEA, + =GB2JCM,=GB2KDR,=GB2LBN,=GB2OL,=GB2ROC,=GB3ANG,=GB3LER,=GB3LER/B,=GB4LER, + =GB5CWL,=GB9UL,=GM0WED/NHS,=GM3YDN/NHS,=GM4SQM/NHS,=GM4SQN/NHS, + =GM6JNJ/NHS,=MM0DHQ/NHS,=MM3AWD/NHS,=MM3DDQ/NHS,=MM7WAB/NHS; Guernsey: 14: 27: EU: 49.45: 2.58: 0.0: GU: 2U,GP,GU,MP,MU; Wales: 14: 27: EU: 52.28: 3.73: 0.0: GW: - 2W,GC,GW,MC,MW,=GB0ATM,=GB0GIG,=GB0HMM,=GB0MZX,=GB0WIW,=GB0WMZ,=GB1KEY, - =GB1WIW,=GB2TD,=GB2VK,=GB2WIW,=GB5VEP,=GB6RNLI; + 2W,GC,GW,MC,MW,=GB0ATM,=GB0HMM,=GB0MZX,=GB0WIW,=GB0WMZ,=GB1BPL,=GB1WIW, + =GB2TD,=GB2VK,=GB2WIW; Solomon Islands: 28: 51: OC: -9.00: -160.00: -11.0: H4: H4; Temotu Province: 32: 51: OC: -10.72: -165.80: -11.0: H40: @@ -490,14 +489,13 @@ Vatican City: 15: 28: EU: 41.90: -12.47: -1.0: HV: Saudi Arabia: 21: 39: AS: 24.20: -43.83: -3.0: HZ: 7Z,8Z,HZ; Italy: 15: 28: EU: 42.82: -12.58: -1.0: I: - I,=4U0WFP,=4U25B,=4U5F,=4U9STAYHOME,=IK5TBI/I/CT,=IK8IJN/I/US,=IK8VHP/OA, - =IZ0EUX/I/AZ; + I,=4U0WFP,=4U25B,=4U5F,=4U9STAYHOME,=IK5TBI/I/CT; African Italy: 33: 37: AF: 35.67: -12.67: -1.0: *IG9: IG9,IH9; Sardinia: 15: 28: EU: 40.15: -9.27: -1.0: IS: IM0,IS,IW0U,IW0V,IW0W,IW0X,IW0Y,IW0Z,=II0ICH,=II0IDP,=II0M,=IQ0AG,=IQ0AH, =IQ0AI,=IQ0AK,=IQ0AL,=IQ0AM,=IQ0EH,=IQ0HO,=IQ0ID,=IQ0ID/P,=IQ0JY,=IQ0NU, - =IQ0NU/P,=IQ0NV,=IQ0NV/P,=IQ0OG,=IQ0OH,=IQ0QP,=IQ0SS; + =IQ0NU/P,=IQ0NV,=IQ0NV/P,=IQ0OG,=IQ0QP,=IQ0SS; Sicily: 15: 28: EU: 37.50: -14.00: -1.0: *IT9: IB9,ID9,IE9,IF9,II9,IJ9,IO9,IQ9,IR9,IT9,IU9,IW9,IY9,=IT9YBL/SG; Djibouti: 37: 48: AF: 11.75: -42.35: -3.0: J2: @@ -516,7 +514,7 @@ Japan: 25: 45: AS: 36.40: -138.38: -9.0: JA: 7J,7K,7L,7M,7N,8J,8K,8L,8M,8N,JA,JE,JF,JG,JH,JI,JJ,JK,JL,JM,JN,JO,JP,JQ, JR,JS; Minami Torishima: 27: 90: OC: 24.28: -153.97: -10.0: JD/m: - =JG8NQJ/JD1; + =JG1RHN/JD1,=JG8NQJ/JD1; Ogasawara: 27: 45: AS: 27.05: -142.20: -9.0: JD/o: JD1; Mongolia: 23: 32: AS: 46.77: -102.17: -7.0: JT: @@ -532,93 +530,96 @@ Jordan: 20: 39: AS: 31.18: -36.42: -2.0: JY: United States: 05: 08: NA: 37.53: 91.67: 5.0: K: AA,AB,AC,AD,AE,AF,AG,AI,AJ,AK,K,N,W,=4U1WB(5)[8],=AA0O(5)[8],=AA2IL(3)[6], =AA4DD(4)[8],=AA4Q(3)[6],=AA5JF(5)[8],=AA8R(5)[8],=AB3AI(4)[8], - =AB4B(4)[8],=AB4GG(4)[8],=AB4IQ(4)[8],=AB5OR(4)[8],=AB8RL(5)[8], - =AB8YZ(4)[7],=AC4CA(4)[7],=AC4G(4)[8],=AC4GW(4)[8],=AC6WI(5)[8], - =AC6ZM(4)[8],=AC7AF(4)[7],=AC8Y(5)[8],=AD1C(4)[7],=AD4EB(4)[8], - =AD4TA(4)[8],=AD8J(5)[8],=AE4ED(4)[8],=AE6JV(5)[8],=AE7AP(4)[6], - =AG4W(4)[8],=AH0U(3)[6],=AH2AV(4)[8],=AH2O(5)[8],=AI4DB(4)[8],=AI9K(4)[7], - =AJ4A(4)[8],=AJ4F(4)[7],=AJ7G(5)[8],=AL0A(5)[8],=AL4B(4)[8],=AL7RF(3)[6], + =AB4B(4)[8],=AB4EJ(4)[8],=AB4GG(4)[8],=AB4IQ(4)[8],=AB5OR(4)[8], + =AB8RL(5)[8],=AB8YZ(4)[7],=AC4CA(4)[7],=AC4G(4)[8],=AC4GW(4)[8], + =AC6WI(5)[8],=AC6ZM(4)[8],=AC7AF(4)[7],=AC8Y(5)[8],=AD1C(4)[7], + =AD4EB(4)[8],=AD4TA(4)[8],=AD8J(5)[8],=AE4ED(4)[8],=AE6JV(5)[8], + =AE7AP(4)[6],=AG4W(4)[8],=AH0U(3)[6],=AH2AV(4)[8],=AH2O(5)[8], + =AH6FF(4)[8],=AI4DB(4)[8],=AI9K(4)[7],=AJ4A(4)[8],=AJ4F(4)[7],=AJ7G(5)[8], + =AL0A(5)[8],=AL1VE(3)[6],=AL4B(4)[8],=AL7CR(3)[6],=AL7RF(3)[6], =G8ERJ(5)[8],=K0ACP(4)[8],=K0EJ(4)[8],=K0IP(3)[6],=K0LUZ(5)[8], =K0NW(3)[6],=K0PJ(4)[8],=K0SN(4)[6],=K0TQ(4)[8],=K0ZR(5)[8],=K1DC(4)[8], - =K1DW(4)[7],=K1GU(4)[8],=K1KD(4)[7],=K1LT(4)[8],=K2DSW(4)[7],=K2GMY(3)[6], - =K2KR(4)[7],=K2PM(4)[8],=K2PO(3)[6],=K2RD(3)[6],=K2RP(3)[6],=K2UR(4)[8], - =K2VV(4)[7],=K3DMG(4)[8],=K3EST(3)[6],=K3IE(4)[8],=K3JWI(4)[8], - =K3PA(4)[7],=K3WT(4)[7],=K3WYC(3)[6],=K3YP(4)[8],=K4AB(4)[8],=K4AFE(4)[8], - =K4AMC(4)[8],=K4AVX(4)[8],=K4BX(4)[8],=K4CWW(4)[8],=K4FN(4)[8], + =K1DW(4)[7],=K1GU(4)[8],=K1KD(4)[7],=K1LT(4)[8],=K1OU(4)[8],=K2DRH(4)[7], + =K2DSW(4)[7],=K2GMY(3)[6],=K2KR(4)[7],=K2PM(4)[8],=K2PO(3)[6],=K2RD(3)[6], + =K2UR(4)[8],=K2VV(4)[7],=K3DMG(4)[8],=K3EST(3)[6],=K3IE(4)[8], + =K3JWI(4)[8],=K3PA(4)[7],=K3WT(4)[7],=K3WYC(3)[6],=K3YP(4)[8],=K4AB(4)[8], + =K4AFE(4)[8],=K4AMC(4)[8],=K4BX(4)[8],=K4CWW(4)[8],=K4FN(4)[8], =K4FT(4)[8],=K4IE(4)[8],=K4IU(4)[7],=K4OAQ(4)[8],=K4OWR(4)[8],=K4RO(4)[8], =K4TCG(4)[8],=K4TZ(4)[8],=K4UU(4)[8],=K4WG(4)[8],=K4WI(4)[8],=K4WW(4)[8], =K4XU(3)[6],=K4YJ(4)[8],=K4ZGB(4)[8],=K5EK(5)[8],=K5GDX(4)[8],=K5KG(5)[8], =K5OA(3)[6],=K5VIP(5)[8],=K5ZD(5)[8],=K6BFL(4)[7],=K6XT(4)[7], =K7ABV(4)[6],=K7BV(5)[8],=K7CS(4)[8],=K7DR(4)[8],=K7IA(4)[7],=K7JOE(4)[8], - =K7OM(5)[8],=K7QA(4)[6],=K7SCX(4)[7],=K7SV(5)[8],=K7TD(4)[7],=K7ZYV(4)[8], - =K8AC(5)[8],=K8ARY(5)[8],=K8CN(5)[8],=K8IA(3)[6],=K8JQ(5)[8],=K8LF(5)[8], - =K8LS(4)[7],=K8NYG(5)[8],=K8PO(5)[8],=K8TR(3)[6],=K9CHP(5)[8],=K9DR(4)[7], - =K9DU(4)[7],=K9GWS(5)[8],=K9JF(3)[6],=K9JM(3)[6],=K9OM(5)[8],=K9OZ(4)[7], - =K9RS(5)[8],=K9WA(4)[7],=K9WZB(3)[6],=K9YC(3)[6],=KA3MTT(4)[8], - =KA4BVG(4)[8],=KA4GAV(4)[7],=KA4OTB(4)[8],=KA8HDE(4)[7],=KA8Q(5)[8], - =KA9FOX(4)[7],=KB4QZH(4)[8],=KB7Q(4)[6],=KB9S(4)[7],=KC2LM(4)[7], - =KC4HW(4)[8],=KC4NX(4)[8],=KC4SAW(4)[8],=KC4TEO(4)[8],=KC4WQ(4)[8], - =KC7QY(4)[7],=KC8GCR(5)[8],=KC9K(4)[7],=KD0EE(4)[8],=KD2KW(4)[7], - =KD4EE(4)[8],=KD5DD(4)[8],=KE0L(4)[8],=KE0YI(4)[8],=KE1B(3)[6], - =KE2VB(3)[6],=KE3K(4)[8],=KE4KY(4)[8],=KE8FT(3)[6],=KF4AV(4)[8], - =KF5BA(4)[8],=KF5MU(4)[8],=KG0F(3)[6],=KG4CUY(4)[8],=KG5HVO(4)[8], - =KH2BR(3)[6],=KH2D(5)[8],=KH2GM(5)[8],=KH6CT(5)[8],=KH6DHK(5)[8], - =KH6M(5)[8],=KH6VM(3)[6],=KH6XS(3)[6],=KI6DY(4)[7],=KI6QDH(4)[7], - =KI7ID(4)[7],=KJ4AOM(4)[8],=KJ4IWZ(4)[8],=KJ4M(4)[8],=KJ9C(4)[6], - =KK9A(5)[8],=KK9N(4)[7],=KL0MP(5)[8],=KL2RA(4)[7],=KL4CZ(4)[6], - =KL7HQR(3)[6],=KL7IKV(3)[6],=KL7QW(4)[7],=KL7SK(3)[6],=KM4FO(4)[8], - =KM4JA(4)[8],=KM7W(4)[6],=KN1CBR(4)[7],=KN4DUA(4)[8],=KN8U(5)[8], - =KO8SCA(5)[8],=KO9V(4)[7],=KP3M(5)[8],=KR4F(4)[8],=KS0CW(5)[8], - =KS4X(4)[8],=KS7T(4)[6],=KS9W(4)[7],=KT3M(4)[7],=KT4O(4)[8],=KT4RR(4)[8], - =KU1CW(3)[6],=KU8E(5)[8],=KV4T(4)[8],=KV8S(4)[7],=KW4J(4)[8],=KW7D(4)[7], - =KW7Q(4)[7],=KX2P(4)[7],=KY0Q(4)[8],=KZ1W(3)[6],=KZ4KX(4)[8],=KZ9V(4)[7], - =N0SMX(5)[8],=N1JM(3)[6],=N1XK(4)[7],=N2AU(3)[6],=N2BJ(4)[8],=N2IC(4)[7], - =N2JNR(3)[6],=N2NL(4)[8],=N3BB(4)[7],=N3BUO(4)[7],=N3CI(4)[7],=N3RA(4)[8], - =N3RC(3)[6],=N3ZZ(3)[6],=N4ARO(4)[8],=N4AU(4)[8],=N4BAA(4)[8], - =N4BCB(4)[8],=N4BCD(4)[8],=N4DW(4)[8],=N4HAI(4)[8],=N4KC(4)[8], - =N4KH(4)[8],=N4NA(4)[8],=N4NO(4)[8],=N4OGW(4)[8],=N4QS(4)[8],=N4SL(4)[6], - =N4TZ(4)[8],=N4UC(4)[8],=N4UW(4)[8],=N4VI(4)[7],=N4VV(4)[8],=N4WE(4)[8], - =N4ZY(4)[8],=N4ZZ(4)[8],=N5CR(3)[6],=N5CW(4)[8],=N5DX(5)[8],=N5KO(3)[6], - =N5RP(4)[8],=N5SMQ(5)[8],=N5TB(5)[8],=N5TOO(5)[8],=N5YT(4)[8],=N5ZO(3)[6], - =N6AR(5)[8],=N6DW(5)[8],=N6RSH(4)[7],=N7DR(4)[7],=N7FUL(4)[7],=N7IP(4)[6], - =N7IV(4)[7],=N7MZW(4)[7],=N7NG(4)[7],=N7RCS(5)[8],=N7US(4)[8],=N7WY(4)[7], - =N7ZZ(4)[8],=N8AID(5)[8],=N8GU(5)[8],=N8II(5)[8],=N8NA(5)[8],=N8NN(5)[8], - =N8OO(4)[7],=N8RA(5)[8],=N8WXQ(5)[8],=N9CIQ(4)[7],=N9GB(4)[7], - =N9HDE(4)[7],=N9JF(4)[7],=N9NA(3)[6],=N9NB(5)[8],=N9NC(5)[8],=N9NM(4)[7], - =N9OU(5)[8],=N9RV(4)[6],=N9SB(4)[7],=N9VPV(4)[7],=NA5NN(4)[8],=ND2T(3)[6], - =ND3N(4)[8],=ND4Y(4)[8],=NE8P(5)[8],=NE9U(4)[7],=NF4J(4)[8],=NG7A(4)[7], - =NH6T(4)[8],=NI7R(5)[8],=NJ4P(4)[8],=NJ8J(5)[8],=NJ8M(4)[7],=NK8Q(5)[8], - =NL7CQ(4)[7],=NL7D(3)[6],=NL7QC(4)[7],=NL7XM(5)[8],=NN1N(4)[7], - =NN4NT(4)[8],=NN4SA(4)[8],=NN5O(4)[8],=NN7A(4)[7],=NN7CW(5)[8], - =NN9DD(5)[8],=NO9E(5)[8],=NP2GG(5)[8],=NP3K(5)[8],=NQ6N(4)[8],=NR4L(4)[8], - =NR5W(3)[6],=NR7DX(4)[6],=NS2X(4)[8],=NS4X(4)[8],=NT0K(5)[8],=NW2P(3)[6], - =NW7R(5)[8],=NW8U(5)[8],=NX1P(3)[6],=NY6DX(5)[8],=NZ6T(5)[8],=W0BR(5)[8], - =W0PV(5)[8],=W0RIC(3)[6],=W0ZP(4)[8],=W1GKT(4)[8],=W1NN(4)[8], - =W1PDI(4)[8],=W1PR(3)[6],=W1RH(3)[6],=W1SRD(3)[6],=W2ACY(4)[7], - =W2GS(4)[7],=W2IY(4)[7],=W2VJN(3)[6],=W3CB(4)[8],=W3HDH(4)[8], - =W3HKK(4)[8],=W3NX(3)[6],=W3TB(4)[8],=W4BCG(4)[8],=W4DAN(4)[8], - =W4ER(4)[8],=W4GKM(4)[8],=W4KW(4)[8],=W4LC(4)[8],=W4NBS(4)[8],=W4NI(4)[8], - =W4NNF(4)[8],=W4NZ(4)[8],=W4PF(4)[8],=W4RYW(4)[8],=W4TLK(4)[8], - =W4TTM(4)[8],=W4UT(4)[8],=W5MX(4)[8],=W5NZ(4)[8],=W5UE(4)[8],=W5UJ(3)[6], - =W5VE(5)[8],=W5VS(5)[8],=W6GMT(4)[7],=W6KGP(4)[7],=W6LFB(4)[7], - =W6NWS(5)[8],=W6RLL(3)[7],=W6SFG(5)[8],=W6UB(4)[8],=W6XR(5)[8], - =W7EE(4)[6],=W7HJ(5)[8],=W7II(4)[7],=W7IMP(5)[8],=W7IY(5)[8],=W7KF(4)[6], - =W7RY(4)[7],=W7UT(4)[7],=W8AT(5)[8],=W8FJ(5)[8],=W8FN(5)[8],=W8HAP(5)[8], - =W8HGH(5)[8],=W8LYJ(4)[7],=W8OV(4)[7],=W8TK(3)[6],=W9CF(3)[6],=W9DC(5)[8], - =W9ET(4)[7],=W9FI(3)[6],=W9JA(4)[7],=W9JEF(4)[7],=W9KKN(3)[6], - =W9MAF(4)[7],=W9PL(3)[6],=W9RM(4)[7],=W9RNY(4)[7],=WA0WWW(3)[6], - =WA1FCN(4)[8],=WA1UJU(4)[8],=WA2VYA(4)[7],=WA3C(4)[8],=WA4JA(4)[8], - =WA5POK(4)[8],=WA8KAN(5)[8],=WA8OJR(5)[8],=WA8ZBT(4)[7],=WB2JEP(3)[6], - =WB3JFS(3)[6],=WB4YDY(4)[8],=WB8BPU(5)[8],=WB8YYY(5)[8],=WB9QAF(4)[7], - =WC7S(4)[7],=WE5P(4)[8],=WE6EZ(4)[7],=WF7T(4)[8],=WF9A(5)[8],=WH0AI(4)[7], - =WH6AQ(5)[8],=WH6LE(5)[8],=WH7R(4)[7],=WJ9B(3)[6],=WL7OU(4)[7], - =WM5DX(4)[8],=WN7S(5)[8],=WO7U(4)[7],=WP3ME(5)[8],=WQ5L(4)[8],=WR3O(4)[8], - =WS6K(4)[8],=WS6X(5)[8],=WS7X(5)[8],=WS9M(5)[8],=WT2P(4)[8],=WT8WV(5)[8], - =WU0B(5)[8],=WU9B(3)[6],=WV4P(4)[8],=WV8SW(5)[8],=WW4R(4)[8],=WW5M(4)[8], - =WX4W(4)[8],=WX5S(3)[6],=WY6K(4)[7],=WY7FD(4)[7],=WZ1Y(4)[7],=WZ4F(4)[8], - =WZ7I(5)[8],=WZ8T(3)[6]; + =K7MSO(4)[6],=K7OM(5)[8],=K7QA(4)[6],=K7SCX(4)[7],=K7SV(5)[8],=K7TD(4)[7], + =K7ZYV(4)[8],=K8AC(5)[8],=K8ARY(5)[8],=K8CN(5)[8],=K8IA(3)[6],=K8JQ(5)[8], + =K8LBQ(5)[8],=K8LF(5)[8],=K8LS(4)[7],=K8NYG(5)[8],=K8PO(5)[8],=K8TE(4)[7], + =K8TR(3)[6],=K9CHP(5)[8],=K9DR(4)[7],=K9DU(4)[7],=K9GWS(5)[8],=K9JM(3)[6], + =K9OM(5)[8],=K9OZ(4)[7],=K9RS(5)[8],=K9WA(4)[7],=K9WZB(3)[6],=K9YC(3)[6], + =KA3MTT(4)[8],=KA4BVG(4)[8],=KA4GAV(4)[7],=KA4OTB(4)[8],=KA8HDE(4)[7], + =KA8Q(5)[8],=KA9FOX(4)[7],=KB4QZH(4)[8],=KB7Q(4)[6],=KB9S(4)[7], + =KC2LM(4)[7],=KC4HW(4)[8],=KC4NX(4)[8],=KC4SAW(4)[8],=KC4TEO(4)[8], + =KC4WQ(4)[8],=KC7QY(4)[7],=KC8GCR(5)[8],=KC9K(4)[7],=KD0EE(4)[8], + =KD2KW(4)[7],=KD4EE(4)[8],=KD5DD(4)[8],=KE0L(4)[8],=KE0YI(4)[8], + =KE1B(3)[6],=KE2VB(3)[6],=KE3K(4)[8],=KE4KY(4)[8],=KE8FT(3)[6], + =KF4AV(4)[8],=KF5BA(4)[8],=KF5MU(4)[8],=KG0F(3)[6],=KG4CUY(4)[8], + =KG5HVO(4)[8],=KH2BR(3)[6],=KH2D(5)[8],=KH2GM(5)[8],=KH2PM(5)[8], + =KH6CT(5)[8],=KH6DHK(5)[8],=KH6M(5)[8],=KH6VM(3)[6],=KH6XS(3)[6], + =KI6DY(4)[7],=KI6QDH(4)[7],=KI7ID(4)[7],=KJ4AOM(4)[8],=KJ4IWZ(4)[8], + =KJ4M(4)[8],=KJ9C(4)[6],=KK9A(5)[8],=KK9N(4)[7],=KL0MP(5)[8],=KL2AX(4)[7], + =KL2RA(4)[7],=KL4CZ(4)[6],=KL7DJ(3)[6],=KL7HQR(3)[6],=KL7IKV(3)[6], + =KL7NW(4)[7],=KL7QW(4)[7],=KL7SK(3)[6],=KM4FO(4)[8],=KM4JA(4)[8], + =KM7W(4)[6],=KN1CBR(4)[7],=KN4DUA(4)[8],=KN8U(5)[8],=KO4OL(4)[8], + =KO8SCA(5)[8],=KO9V(4)[7],=KP3M(5)[8],=KP4MD(3)[6],=KR4F(4)[8], + =KS0CW(5)[8],=KS4X(4)[8],=KS7T(4)[6],=KS9W(4)[7],=KT3M(4)[7],=KT4O(4)[8], + =KT4RR(4)[8],=KU1CW(3)[6],=KU8E(5)[8],=KV4T(4)[8],=KV8S(4)[7],=KW4J(4)[8], + =KW7D(4)[7],=KW7Q(4)[7],=KX2P(4)[7],=KY0Q(4)[8],=KZ1W(3)[6],=KZ4KX(4)[8], + =KZ9V(4)[7],=N0SMX(5)[8],=N1JM(3)[6],=N1XK(4)[7],=N2AU(3)[6],=N2BJ(4)[8], + =N2IC(4)[7],=N2JNR(3)[6],=N2NL(4)[8],=N3BB(4)[7],=N3BUO(4)[7],=N3CI(4)[7], + =N3RA(4)[8],=N3RC(3)[6],=N3ZZ(3)[6],=N4ARO(4)[8],=N4AU(4)[8],=N4BAA(4)[8], + =N4BCB(4)[8],=N4BCD(4)[8],=N4DW(4)[8],=N4EL(4)[8],=N4HAI(4)[8], + =N4HID(4)[8],=N4JRG(4)[8],=N4KC(4)[8],=N4KH(4)[8],=N4NA(4)[8],=N4NO(4)[8], + =N4OGW(4)[8],=N4QS(4)[8],=N4SL(4)[6],=N4TZ(4)[8],=N4UC(4)[8],=N4UW(4)[8], + =N4VI(4)[7],=N4VV(4)[8],=N4WE(4)[8],=N4ZY(4)[8],=N4ZZ(4)[8],=N5CR(3)[6], + =N5CW(4)[8],=N5DX(5)[8],=N5KO(3)[6],=N5RP(4)[8],=N5SMQ(5)[8],=N5TB(5)[8], + =N5TOO(5)[8],=N5YT(4)[8],=N5ZO(3)[6],=N6AR(5)[8],=N6DW(5)[8],=N6RSH(4)[7], + =N7DR(4)[7],=N7FUL(4)[7],=N7IP(4)[6],=N7IV(4)[7],=N7MZW(4)[7],=N7NG(4)[7], + =N7RCS(5)[8],=N7US(4)[8],=N7WY(4)[7],=N7ZZ(4)[8],=N8AID(5)[8],=N8II(5)[8], + =N8NA(5)[8],=N8NN(5)[8],=N8OO(4)[7],=N8RA(5)[8],=N8WXQ(5)[8],=N9CIQ(4)[7], + =N9GB(4)[7],=N9HDE(4)[7],=N9JF(4)[7],=N9NA(3)[6],=N9NB(5)[8],=N9NC(5)[8], + =N9NM(4)[7],=N9OU(5)[8],=N9RV(4)[6],=N9SB(4)[7],=N9VPV(4)[7],=NA5NN(4)[8], + =ND2T(3)[6],=ND3N(4)[8],=ND4Y(4)[8],=NE8P(5)[8],=NE9U(4)[7],=NF4J(4)[8], + =NG7A(4)[7],=NH6L(4)[7],=NH6T(4)[8],=NI7R(5)[8],=NJ4P(4)[8],=NJ8J(5)[8], + =NJ8M(4)[7],=NK8Q(5)[8],=NL7CQ(4)[7],=NL7D(3)[6],=NL7QC(4)[7], + =NL7XM(5)[8],=NN1N(4)[7],=NN4NT(4)[8],=NN4SA(4)[8],=NN5O(4)[8], + =NN7A(4)[7],=NN7CW(5)[8],=NN9DD(5)[8],=NO9E(5)[8],=NP2GG(5)[8], + =NP3FB(4)[8],=NP3K(5)[8],=NQ6N(4)[8],=NR4L(4)[8],=NR5W(3)[6],=NR7DX(4)[6], + =NS2X(4)[8],=NS4X(4)[8],=NT0K(5)[8],=NW2P(3)[6],=NW7R(5)[8],=NW8U(5)[8], + =NX1P(3)[6],=NY6DX(5)[8],=NZ6T(5)[8],=NZ7Q(4)[7],=W0BR(5)[8],=W0PV(5)[8], + =W0RIC(3)[6],=W0ZP(4)[8],=W1GKT(4)[8],=W1NN(4)[8],=W1PDI(4)[8], + =W1PR(3)[6],=W1RH(3)[6],=W1SRD(3)[6],=W2ACY(4)[7],=W2GS(4)[7],=W2IY(4)[7], + =W2VJN(3)[6],=W3CB(4)[8],=W3HDH(4)[8],=W3HKK(4)[8],=W3NX(3)[6], + =W3TB(4)[8],=W4BCG(4)[8],=W4DAN(4)[8],=W4ER(4)[8],=W4GKM(4)[8], + =W4KW(4)[8],=W4LC(4)[8],=W4NBS(4)[8],=W4NI(4)[8],=W4NNF(4)[8],=W4NZ(4)[8], + =W4PF(4)[8],=W4RYW(4)[8],=W4TLK(4)[8],=W4TTM(4)[8],=W4UT(4)[8], + =W5MX(4)[8],=W5NZ(4)[8],=W5UE(4)[8],=W5UJ(3)[6],=W5VE(5)[8],=W5VS(5)[8], + =W6GMT(4)[7],=W6KGP(4)[7],=W6LFB(4)[7],=W6NWS(5)[8],=W6RLL(3)[7], + =W6SFG(5)[8],=W6UB(4)[8],=W6XR(5)[8],=W7DXX(4)[7],=W7EE(4)[6],=W7HJ(5)[8], + =W7II(4)[7],=W7IMP(5)[8],=W7IY(5)[8],=W7RY(4)[7],=W7UT(4)[7],=W8AT(5)[8], + =W8FJ(5)[8],=W8FN(5)[8],=W8HAP(5)[8],=W8HGH(5)[8],=W8LYJ(4)[7], + =W8OV(4)[7],=W8TK(3)[6],=W9CF(3)[6],=W9DC(5)[8],=W9ET(4)[7],=W9FI(3)[6], + =W9JA(4)[7],=W9JEF(4)[7],=W9KKN(3)[6],=W9MAF(4)[7],=W9PL(3)[6], + =W9RM(4)[7],=W9RNY(4)[7],=WA0LJM(5)[8],=WA0WWW(3)[6],=WA1FCN(4)[8], + =WA1UJU(4)[8],=WA2VYA(4)[7],=WA3C(4)[8],=WA5POK(4)[8],=WA8KAN(5)[8], + =WA8OJR(5)[8],=WA8ZBT(4)[7],=WB2JEP(3)[6],=WB3JFS(3)[6],=WB4YDY(4)[8], + =WB5WAJ(4)[8],=WB8BPU(5)[8],=WB8YYY(5)[8],=WB9QAF(4)[7],=WC7S(4)[7], + =WE5P(4)[8],=WE6EZ(4)[7],=WF7T(4)[8],=WF9A(5)[8],=WH0AI(4)[7], + =WH6AQ(5)[8],=WH6LE(5)[8],=WH7R(4)[7],=WJ4HCP(4)[8],=WJ9B(3)[6], + =WL7OU(4)[7],=WM5DX(4)[8],=WN7S(5)[8],=WN7Y(4)[7],=WO7U(4)[7], + =WP3ME(5)[8],=WQ5L(4)[8],=WR3O(4)[8],=WS6K(4)[8],=WS6X(5)[8],=WS7X(5)[8], + =WS9M(5)[8],=WT2P(4)[8],=WT7TT(4)[7],=WT8WV(5)[8],=WU0B(5)[8],=WU9B(3)[6], + =WV4P(4)[8],=WV8SW(5)[8],=WW4R(4)[8],=WW5M(4)[8],=WX4W(4)[8],=WX5S(3)[6], + =WY6K(4)[7],=WY7FD(4)[7],=WZ1Y(4)[7],=WZ4F(4)[8],=WZ7I(5)[8],=WZ8T(3)[6]; Guantanamo Bay: 08: 11: NA: 20.00: 75.00: 5.0: KG4: - KG4,=KG4MA,=KG4NE; + KG4,=KG4MA; Mariana Islands: 27: 64: OC: 15.18: -145.72: -10.0: KH0: AH0,KH0,NH0,WH0,=K8RN,=KI5DQL,=NH2B; Baker & Howland Islands: 31: 61: OC: 0.00: 176.00: 12.0: KH1: @@ -632,12 +633,12 @@ Midway Island: 31: 61: OC: 28.20: 177.37: 11.0: KH4: Palmyra & Jarvis Islands: 31: 61: OC: 5.87: 162.07: 11.0: KH5: AH5,KH5,NH5,WH5; Hawaii: 31: 61: OC: 21.12: 157.48: 10.0: KH6: - AH6,AH7,KH6,KH7,NH6,NH7,WH6,WH7,=K2GT,=K4XV,=K6HNL,=K9FD,=KA7BSK,=KB3HXI, + AH6,AH7,KH6,KH7,NH6,NH7,WH6,WH7,=K2GT,=K4XV,=K6HNL,=K9FD,=KB1KAC,=KB3HXI, =KB5OXR,=KB6EGA,=KC2CLQ,=KD0JNO,=KD0OXU,=KD4GVR,=KD7GWI,=KD8LYB,=KE0JSB, - =KE0KIE,=KE5VQB,=KE6MKW,=KE6TIX,=KF4UJC,=KG4CAN,=KG4TZD,=KG5CH,=KG5CNO, - =KG5IVP,=KG7ZJM,=KH0WJ,=KH3AE,=KI7AUZ,=KJ6COM,=KJ6CQT,=KJ6FDF,=KK4RNF, - =KL3JC,=KM6RWE,=KM6UVP,=N0VYO,=N3BQY,=N3GWR,=N4BER,=N7BMD,=NB6R,=ND1A, - =W6QPV,=W7NX,=WA6AW,=WA6CZL,=WA6QDQ,=WB4JTT; + =KE0KIE,=KE5VQB,=KE6MKW,=KE6TIX,=KF4UJC,=KF6OHL,=KG4CAN,=KG4TZD,=KG5CH, + =KG5CNO,=KG5IVP,=KH0WJ,=KH3AE,=KI7AUZ,=KJ6COM,=KJ6CQT,=KJ6FDF,=KK4RNF, + =KK6DWS,=KL3JC,=KM6RWE,=KM6UVP,=N0VYO,=N3BQY,=N3GWR,=N4BER,=NB6R,=ND1A, + =W1ETT,=W6QPV,=W7NX,=WA6AW,=WA6CZL,=WA6QDQ,=WB4JTT; Kure Island: 31: 61: OC: 29.00: 178.00: 10.0: KH7K: AH7K,KH7K,NH7K,WH7K; American Samoa: 32: 62: OC: -14.32: 170.78: 11.0: KH8: @@ -647,13 +648,13 @@ Swains Island: 32: 62: OC: -11.05: 171.25: 11.0: KH8/s: Wake Island: 31: 65: OC: 19.28: -166.63: -12.0: KH9: AH9,KH9,NH9,WH9; Alaska: 01: 01: NA: 61.40: 148.87: 8.0: KL: - AL,KL,NL,WL,=AJ4MY,=K1TMT,=K4PSG,=K5RD,=K7BUF,=K7CAP,=K7VRK,=KA1NCN, - =KB5NOW,=KB5YLG,=KB9THD,=KC0EFL,=KC0GLN,=KC1LVR,=KC5NHL,=KC9IKH,=KD0ONB, - =KD2NPD,=KD5MQC,=KD7OOS,=KD8KQL,=KD9TK,=KE5WGZ,=KE7PXV,=KE7ZXH,=KF3L, - =KF5UBP,=KF7ARC,=KF7FLL,=KF7FLM,=KF7ING,=KF7ITN,=KF7KTH,=KF7WVE,=KG7ZEV, - =KJ4YOY,=KJ6RFQ,=KK6SNS,=KM6YOD,=KN4ENR,=KN4LJD,=KN4RXC,=KO4DHN,=KW4XD, + AL,KL,NL,WL,=AJ4MY,=K1TMT,=K5RD,=K7BUF,=K7CAP,=K7VRK,=KA1NCN,=KB5NOW, + =KB7RWK,=KB9THD,=KC0EFL,=KC0GLN,=KC1LVR,=KC3BWW,=KC5NHL,=KC9IKH,=KC9SXX, + =KD0ONB,=KD2NPD,=KD5MQC,=KD7OOS,=KD8KQL,=KE5WGZ,=KE7PXV,=KE7ZXH,=KF5UBP, + =KF7ARC,=KF7FLL,=KF7FLM,=KF7ING,=KF7ITN,=KF7KTH,=KF7WVE,=KG5DBP,=KG7ZEV, + =KI4FJK,=KJ4YOY,=KJ6RFQ,=KK6SNS,=KM6YOD,=KN4ENR,=KN4LJD,=KN4RXC,=KW4XD, =N6QEK,=N7CGC,=N7DKL,=N7DUD,=NH2LS,=NU9Q,=W0ZEE,=W1JM,=W1LYD,=W3MKG,=W9CG, - =WA1FVJ,=WH6GBB,=WH6GCO,=WW4AL; + =WA1FVJ,=WH6GBB,=WH6GCO; Navassa Island: 08: 11: NA: 18.40: 75.00: 5.0: KP1: KP1,NP1,WP1; US Virgin Islands: 08: 11: NA: 17.73: 64.80: 4.0: KP2: @@ -762,7 +763,8 @@ Argentina: 13: 14: SA: -34.80: 65.92: 3.0: LU: LW4W[16],LW4X[16],LW4Y[16],LW5V[16],LW5W[16],LW5X[16],LW5Y[16],LW6V[16], LW6W[16],LW6X[16],LW6Y[16],LW7V[16],LW7W[16],LW7X[16],LW7Y[16],LW8V[16], LW8W[16],LW8X[16],LW8Y[16],LW9V[16],LW9W[16],LW9X[16],LW9Y[16], - =LU1AW/X[16],=LU1QR/Q,=LU2DVI/H,=LU3HT/H,=LU5QR/Q; + =LU1AW/X[16],=LU1DLF/D,=LU2DVI/H,=LU4AA/H,=LU4AA/K,=LU5QR/Q,=LU5YF/V[16], + =LW3DVN/X[16]; Luxembourg: 14: 27: EU: 50.00: -6.00: -1.0: LX: LX; Lithuania: 15: 29: EU: 55.45: -23.63: -2.0: LY: @@ -874,7 +876,7 @@ San Marino: 15: 28: EU: 43.95: -12.45: -1.0: T7: Palau: 27: 64: OC: 7.45: -134.53: -9.0: T8: T8; Asiatic Turkey: 20: 39: AS: 39.18: -35.65: -2.0: TA: - TA,TB,TC,YM,=TA1BZ/2,=TA1C/2,=TA1D/3,=TA1D/4,=TA1FA/2,=TA1HZ/2; + TA,TB,TC,YM,=TA1BZ/2,=TA1C/2,=TA1CX/2,=TA1D/3,=TA1D/4,=TA1FA/2,=TA1HZ/2; European Turkey: 20: 39: EU: 41.02: -28.97: -2.0: *TA1: TA1,TB1,TC1,YM1,=TA6CQ/1; Iceland: 40: 17: EU: 64.80: 18.73: 0.0: TF: @@ -973,21 +975,22 @@ European Russia: 16: 29: EU: 53.65: -41.37: -4.0: UA: UH4W[30],UH8F(17)[30],UH8G(17)[30],UH8X(17)[20],UH9F(17)[30],UH9G(17)[30], UH9X(17)[20],UI1I(17)[20],UI1N[19],UI1O[19],UI1P[20],UI1Z[19],UI4H[30], UI4I[30],UI4W[30],UI8F(17)[30],UI8G(17)[30],UI8X(17)[20],UI9F(17)[30], - UI9G(17)[30],UI9X(17)[20],=R8FF/7,=RA9UUY/6,=RT9T/3,=RX9KT/6,=R100RK[19], - =R4HAT[29],=R4HC[29],=R4HCE[29],=R4HCZ[29],=R4HD[29],=R4HDC[29], - =R4HDR[29],=R4HL[29],=R4IC[29],=R4ID[29],=R4II[29],=R4IK[29],=R4IM[29], - =R4IN[29],=R4IO[29],=R4IT[29],=R8FF/3,=R8FF/P,=R8MB/1(17)[20],=R8XF/1, - =RA4HL[29],=RA4NCC[30],=RC4HT[29],=RC4I[29],=RJ4I[29],=RJ4P[30], - =RK4HM[29],=RK4P[30],=RM4I[29],=RM4R[30],=RN4HFJ[29],=RN4HIF[29],=RT9K/6, - =RT9T/1,=RU4HD[29],=RU4HP[29],=RU4I[29],=RW4HM[29],=RW4HTK[29],=RW4HW[29], + UI9G(17)[30],UI9X(17)[20],=R7AB/P,=R9JBF/1,=RA9UUY/6,=RT9T/3,=RX9KT/6, + =R100RK[19],=R4HAT[29],=R4HC[29],=R4HCE[29],=R4HCZ[29],=R4HD[29], + =R4HDC[29],=R4HDR[29],=R4HL[29],=R4IC[29],=R4ID[29],=R4II[29],=R4IK[29], + =R4IM[29],=R4IN[29],=R4IO[29],=R4IT[29],=R5QA/1[19],=R8CW/4,=R8FF/3, + =R8FF/P,=R8MB/1(17)[20],=R8XF/1,=R8XF/3,=RA1WS/1(17)[20],=RA4HL[29], + =RA4NCC[30],=RC4HT[29],=RC4I[29],=RJ4I[29],=RJ4P[30],=RK4HM[29],=RK4P[30], + =RM4I[29],=RM4R[30],=RN4HFJ[29],=RN4HIF[29],=RT9K/6,=RT9T/1,=RU4HD[29], + =RU4HP[29],=RU4I[29],=RV1CC/1,=RW4HM[29],=RW4HTK[29],=RW4HW[29], =RW4HZ[29],=RW9WJ/4[30],=UA3LMR/P,=UA4H[29],=UA4HBM[29],=UA4HGL[29], =UA4HIP[29],=UA4HRZ[29],=UA4HY[29],=UA4NF[30],=UA4PN[30],=UA4RF[30], - =UB5O/1[19],=UC4I[29],=UI4I[29]; + =UC4I[29],=UI4I[29]; Kaliningrad: 15: 29: EU: 54.72: -20.52: -3.0: UA2: R2F,R2K,RA2,RC2F,RC2K,RD2F,RD2K,RE2F,RE2K,RF2F,RF2K,RG2F,RG2K,RJ2F,RJ2K, RK2F,RK2K,RL2F,RL2K,RM2F,RM2K,RN2F,RN2K,RO2F,RO2K,RQ2F,RQ2K,RT2F,RT2K, RU2F,RU2K,RV2F,RV2K,RW2F,RW2K,RX2F,RX2K,RY2F,RY2K,RZ2F,RZ2K,U2F,U2K,UA2, - UB2,UC2,UD2,UE2,UF2,UG2,UH2,UI2,=R2MWO,=UB5O/2; + UB2,UC2,UD2,UE2,UF2,UG2,UH2,UI2,=R2MWO; Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: R0,R8(17)[30],R9,RA0,RA8(17)[30],RA9,RC0,RC8(17)[30],RC9,RD0,RD8(17)[30], RD9,RE0,RE8(17)[30],RE9,RF0,RF8(17)[30],RF9,RG0,RG8(17)[30],RG9,RI0, @@ -1106,9 +1109,9 @@ Asiatic Russia: 17: 30: AS: 55.88: -84.08: -7.0: UA9: UI8O(18)[31],UI8P(18)[31],UI8S(16)[30],UI8T(16)[30],UI8U(18)[31], UI8V(18)[31],UI8W(16)[30],UI8Y(18)[31],UI8Z(18)[31],UI9I(18)[31], UI9M(17)[30],UI9P(18)[31],UI9S(16),UI9T(16),UI9V(18)[31],UI9W(16), - =R2ET/9(18)[31],=R8FF/8(17)[30],=R9WCJ/8(17)[30],=RA/UT5IA(19)[23], + =R2ET/9(18)[31],=R8FF/8(17)[30],=R9PS/9(18)[31],=RA/UT5IA(19)[23], =RA0QK/8(17)[30],=RN9S(16),=RT8T(16)[30],=RT9S(16),=RU20RU(17)[30], - =RX9WT/8(17)[30],=UB5O/4(16),=UB5O/9(18)[31],=UD6AOP/0(19)[25]; + =UD6AOP/0(19)[25]; Uzbekistan: 17: 30: AS: 41.40: -63.97: -5.0: UK: UJ,UK,UL,UM; Kazakhstan: 17: 30: AS: 48.17: -65.18: -5.0: UN: @@ -1139,7 +1142,7 @@ Antigua & Barbuda: 08: 11: NA: 17.07: 61.80: 4.0: V2: Belize: 07: 11: NA: 16.97: 88.67: 6.0: V3: V3; St. Kitts & Nevis: 08: 11: NA: 17.37: 62.78: 4.0: V4: - V4; + V4,=VERSION; Namibia: 38: 57: AF: -22.00: -17.00: -1.0: V5: V5; Micronesia: 27: 65: OC: 6.88: -158.20: -10.0: V6: @@ -1153,9 +1156,9 @@ Canada: 05: 09: NA: 44.35: 78.75: 5.0: VE: CI0(2)[4],CI1(1)[2],CI2,CJ2[4],CK2[4],CY1,CY2(2),CZ0(2)[4],CZ1(1)[2],CZ2, VA2[4],VB2[4],VC2[4],VD1,VD2(2),VE2[4],VF0(2)[4],VF1(1)[2],VF2,VG2[4],VO1, VO2(2),VX2[4],VY0(2)[4],VY1(1)[2],VY2,XJ1,XJ2(2),XK0(2)[4],XK1(1)[2],XK2, - XL2[4],XM2[4],XN1,XN2(2),XO0(2)[4],XO1(1)[2],XO2,=VER20200625, + XL2[4],XM2[4],XN1,XN2(2),XO0(2)[4],XO1(1)[2],XO2,=VER20200724, =VA2VVV(2)[4],=VE2CSI(2)[4],=VE2EKA(2)[4],=VE2FK[9],=VE2IDX(2)[4], - =VE2IM(2)[4],=VE2KK[9],=VE8AT(2)[4],=VY0AA(4)[3],=VY0PW(4)[3]; + =VE2IM(2)[4],=VE8AT(2)[4],=VY0AA(4)[3],=VY0PW(4)[3]; Australia: 30: 59: OC: -23.70: -132.33: -10.0: VK: AX,VH,VI,VJ,VK,VL,VM,VN,VZ,AX4[55],VH4[55],VI4[55],VJ4[55],VK4[55], VL4[55],VM4[55],VN4[55],VZ4[55]; diff --git a/data/prefix_data.pl b/data/prefix_data.pl index 8aca3258..d0f3e68a 100644 --- a/data/prefix_data.pl +++ b/data/prefix_data.pl @@ -3633,6 +3633,7 @@ '=AA8R' => '179', '=AB3AI' => '179', '=AB4B' => '179', + '=AB4EJ' => '179', '=AB4GG' => '179', '=AB4IQ' => '179', '=AB5OR' => '179', @@ -3656,6 +3657,7 @@ '=AH0U' => '179', '=AH2AV' => '179', '=AH2O' => '179', + '=AH6FF' => '179', '=AI4DB' => '179', '=AI9K' => '179', '=AJ4A' => '179', @@ -3663,21 +3665,21 @@ '=AJ4MY' => '191,900,902,904,906,908', '=AJ7G' => '179', '=AL0A' => '179', + '=AL1VE' => '179', '=AL4B' => '179', + '=AL7CR' => '179', '=AL7RF' => '179', + '=BG9XD/5' => '73,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468', '=BS7H' => '70', '=C7A' => '981', - '=DM19ERZ/BL' => '95', '=DM19ERZ/BU' => '95', - '=DM19ERZ/HAM' => '95', '=DM19ERZ/MAF' => '95', - '=DM19ERZ/MF' => '95', - '=DM19ERZ/MS' => '95', - '=DM19ERZ/VL' => '95', '=DP0GVN' => '1717,1719,1722,1724,1726,1728,1730,330,343', '=DP1POL' => '1717,1719,1722,1724,1726,1728,1730,330,343', '=E51PT' => '331,1732,1734', '=E51WL' => '331,1732,1734', + '=EA1RCI/RCC' => '102,598,600,602,604,606,608', + '=EA1RCP/NM' => '102,598,600,602,604,606,608', '=EA2EZ/P' => '102,598,600,602,604,606,608', '=EA3HSD/P' => '102,598,600,602,604,606,608', '=EA5CC/P' => '102,598,600,602,604,606,608', @@ -3685,24 +3687,25 @@ '=EA5ZD/URE' => '102,598,600,602,604,606,608', '=EA8VK/URE' => '104,610,612', '=EA9HU' => '102,598,600,602,604,606,608', - '=EC5EA/VIC' => '102,598,600,602,604,606,608', '=FO/F6BCW' => '127', '=G8ERJ' => '179', '=GB0ATM' => '146', - '=GB0GIG' => '146', + '=GB0CSL' => '144,688', '=GB0HMM' => '146', '=GB0MZX' => '146', - '=GB0SLB' => '144,688', + '=GB0TNL' => '144,688', '=GB0WIW' => '146', '=GB0WMZ' => '146', '=GB100RS' => '142', - '=GB1HSC' => '142', - '=GB1KEY' => '146', + '=GB1BPL' => '146', + '=GB1DHL' => '144,688', + '=GB1GND' => '144,688', '=GB1WIW' => '146', '=GB2ELH' => '687', '=GB2FEA' => '144,688', '=GB2JCM' => '144,688', '=GB2KDR' => '144,688', + '=GB2LBN' => '144,688', '=GB2OL' => '144,688', '=GB2ROC' => '144,688', '=GB2TD' => '146', @@ -3715,13 +3718,14 @@ '=GB4AFD' => '142', '=GB4LER' => '687', '=GB4UAS' => '142', + '=GB5AFD' => '142', + '=GB5BL' => '142', + '=GB5CWL' => '144,688', '=GB5NHS' => '142', - '=GB5VEP' => '146', - '=GB6RNLI' => '146', '=GB75VEC' => '142', - '=GB7SRW' => '144,688', '=GB8NHS' => '142', '=GB9AFD' => '142', + '=GB9UL' => '144,688', '=GH5DX/NHS' => '143', '=GM0AVR' => '687', '=GM0CXQ' => '687', @@ -3762,8 +3766,6 @@ '=II0IDP' => '166', '=II0M' => '166', '=IK5TBI/I/CT' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850', - '=IK8IJN/I/US' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850', - '=IK8VHP/OA' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850', '=IQ0AG' => '166', '=IQ0AH' => '166', '=IQ0AI' => '166', @@ -3780,11 +3782,10 @@ '=IQ0NV' => '166', '=IQ0NV/P' => '166', '=IQ0OG' => '166', - '=IQ0OH' => '166', '=IQ0QP' => '166', '=IQ0SS' => '166', '=IT9YBL/SG' => '845', - '=IZ0EUX/I/AZ' => '165,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850', + '=JG1RHN/JD1' => '333', '=JG8NQJ/JD1' => '333', '=JW/LB2PG' => '893', '=K0ACP' => '179', @@ -3801,7 +3802,9 @@ '=K1GU' => '179', '=K1KD' => '179', '=K1LT' => '179', + '=K1OU' => '179', '=K1TMT' => '191,900,902,904,906,908', + '=K2DRH' => '179', '=K2DSW' => '179', '=K2GMY' => '179', '=K2GT' => '186', @@ -3809,7 +3812,6 @@ '=K2PM' => '179', '=K2PO' => '179', '=K2RD' => '179', - '=K2RP' => '179', '=K2UR' => '179', '=K2VV' => '179', '=K3DMG' => '179', @@ -3823,7 +3825,6 @@ '=K4AB' => '179', '=K4AFE' => '179', '=K4AMC' => '179', - '=K4AVX' => '179', '=K4BX' => '179', '=K4CWW' => '179', '=K4FN' => '179', @@ -3832,7 +3833,6 @@ '=K4IU' => '179', '=K4OAQ' => '179', '=K4OWR' => '179', - '=K4PSG' => '191,900,902,904,906,908', '=K4QFS' => '182', '=K4RO' => '179', '=K4TCG' => '179', @@ -3864,6 +3864,7 @@ '=K7DR' => '179', '=K7IA' => '179', '=K7JOE' => '179', + '=K7MSO' => '179', '=K7OM' => '179', '=K7QA' => '179', '=K7SCX' => '179', @@ -3876,11 +3877,13 @@ '=K8CN' => '179', '=K8IA' => '179', '=K8JQ' => '179', + '=K8LBQ' => '179', '=K8LF' => '179', '=K8LS' => '179', '=K8NYG' => '179', '=K8PO' => '179', '=K8RN' => '180', + '=K8TE' => '179', '=K8TR' => '179', '=K9CHP' => '179', '=K9CS/KH8S' => '189', @@ -3888,7 +3891,6 @@ '=K9DU' => '179', '=K9FD' => '186', '=K9GWS' => '179', - '=K9JF' => '179', '=K9JM' => '179', '=K9OM' => '179', '=K9OZ' => '179', @@ -3902,20 +3904,20 @@ '=KA4BVG' => '179', '=KA4GAV' => '179', '=KA4OTB' => '179', - '=KA7BSK' => '186', '=KA8HDE' => '179', '=KA8Q' => '179', '=KA9FOX' => '179', '=KB1CKX' => '194', + '=KB1KAC' => '186', '=KB2BVX' => '194', '=KB3HXI' => '186', '=KB3TTV' => '194', '=KB4QZH' => '179', '=KB5NOW' => '191,900,902,904,906,908', '=KB5OXR' => '186', - '=KB5YLG' => '191,900,902,904,906,908', '=KB6EGA' => '186', '=KB7Q' => '179', + '=KB7RWK' => '191,900,902,904,906,908', '=KB9S' => '179', '=KB9THD' => '191,900,902,904,906,908', '=KC0EFL' => '191,900,902,904,906,908', @@ -3925,6 +3927,7 @@ '=KC2GRZ' => '194', '=KC2LM' => '179', '=KC2TE' => '194', + '=KC3BWW' => '191,900,902,904,906,908', '=KC4AAA' => '1717,1719,1722,1724,1726,1728,1730,330,343', '=KC4AAC' => '1717,1719,1722,1724,1726,1728,1730,330,343', '=KC4HW' => '179', @@ -3940,6 +3943,7 @@ '=KC8GCR' => '179', '=KC9IKH' => '191,900,902,904,906,908', '=KC9K' => '179', + '=KC9SXX' => '191,900,902,904,906,908', '=KD0EE' => '179', '=KD0JNO' => '186', '=KD0ONB' => '191,900,902,904,906,908', @@ -3954,7 +3958,6 @@ '=KD7OOS' => '191,900,902,904,906,908', '=KD8KQL' => '191,900,902,904,906,908', '=KD8LYB' => '186', - '=KD9TK' => '191,900,902,904,906,908', '=KE0JSB' => '186', '=KE0KIE' => '186', '=KE0L' => '179', @@ -3970,7 +3973,6 @@ '=KE7PXV' => '191,900,902,904,906,908', '=KE7ZXH' => '191,900,902,904,906,908', '=KE8FT' => '179', - '=KF3L' => '191,900,902,904,906,908', '=KF4AV' => '179', '=KF4UJC' => '186', '=KF5BA' => '179', @@ -3978,6 +3980,7 @@ '=KF5UBP' => '191,900,902,904,906,908', '=KF5YGN' => '194', '=KF5YGX' => '194', + '=KF6OHL' => '186', '=KF7ARC' => '191,900,902,904,906,908', '=KF7FLL' => '191,900,902,904,906,908', '=KF7FLM' => '191,900,902,904,906,908', @@ -3989,26 +3992,27 @@ '=KG4CAN' => '186', '=KG4CUY' => '179', '=KG4MA' => '1686,1687,1688,1689,1690,1691,1692,1693,334', - '=KG4NE' => '1686,1687,1688,1689,1690,1691,1692,1693,334', '=KG4TZD' => '186', '=KG5CH' => '186', '=KG5CNO' => '186', + '=KG5DBP' => '191,900,902,904,906,908', '=KG5HVO' => '179', '=KG5IVP' => '186', '=KG6DX' => '182', '=KG6JDX' => '182', '=KG7ZEV' => '191,900,902,904,906,908', - '=KG7ZJM' => '186', '=KH0WJ' => '186', '=KH2BR' => '179', '=KH2D' => '179', '=KH2GM' => '179', + '=KH2PM' => '179', '=KH3AE' => '186', '=KH6CT' => '179', '=KH6DHK' => '179', '=KH6M' => '179', '=KH6VM' => '179', '=KH6XS' => '179', + '=KI4FJK' => '191,900,902,904,906,908', '=KI5DQL' => '180', '=KI6DY' => '179', '=KI6QDH' => '179', @@ -4025,15 +4029,19 @@ '=KJ6RFQ' => '191,900,902,904,906,908', '=KJ9C' => '179', '=KK4RNF' => '186', + '=KK6DWS' => '186', '=KK6SNS' => '191,900,902,904,906,908', '=KK9A' => '179', '=KK9N' => '179', '=KL0MP' => '179', + '=KL2AX' => '179', '=KL2RA' => '179', '=KL3JC' => '186', '=KL4CZ' => '179', + '=KL7DJ' => '179', '=KL7HQR' => '179', '=KL7IKV' => '179', + '=KL7NW' => '179', '=KL7QW' => '179', '=KL7SK' => '179', '=KM4FO' => '179', @@ -4049,11 +4057,12 @@ '=KN4LVP' => '182', '=KN4RXC' => '191,900,902,904,906,908', '=KN8U' => '179', - '=KO4DHN' => '191,900,902,904,906,908', + '=KO4OL' => '179', '=KO8SCA' => '179', '=KO9V' => '179', '=KP2Z' => '194', '=KP3M' => '179', + '=KP4MD' => '179', '=KR4F' => '179', '=KS0CW' => '179', '=KS4X' => '179', @@ -4078,10 +4087,13 @@ '=KZ4KX' => '179', '=KZ9V' => '179', '=LU1AW/X' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', - '=LU1QR/Q' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', + '=LU1DLF/D' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', '=LU2DVI/H' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', - '=LU3HT/H' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', + '=LU4AA/H' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', + '=LU4AA/K' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', '=LU5QR/Q' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', + '=LU5YF/V' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', + '=LW3DVN/X' => '197,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962', '=MM0DHQ/NHS' => '144,688', '=MM0LSM' => '687', '=MM0NQY' => '687', @@ -4137,7 +4149,10 @@ '=N4BCD' => '179', '=N4BER' => '186', '=N4DW' => '179', + '=N4EL' => '179', '=N4HAI' => '179', + '=N4HID' => '179', + '=N4JRG' => '179', '=N4KC' => '179', '=N4KH' => '179', '=N4MMT' => '194', @@ -4168,7 +4183,6 @@ '=N6DW' => '179', '=N6QEK' => '191,900,902,904,906,908', '=N6RSH' => '179', - '=N7BMD' => '186', '=N7CGC' => '191,900,902,904,906,908', '=N7DKL' => '191,900,902,904,906,908', '=N7DR' => '179', @@ -4183,7 +4197,6 @@ '=N7WY' => '179', '=N7ZZ' => '179', '=N8AID' => '179', - '=N8GU' => '179', '=N8II' => '179', '=N8NA' => '179', '=N8NN' => '179', @@ -4214,6 +4227,7 @@ '=NG7A' => '179', '=NH2B' => '180', '=NH2LS' => '191,900,902,904,906,908', + '=NH6L' => '179', '=NH6T' => '179', '=NI7R' => '179', '=NJ4P' => '179', @@ -4233,6 +4247,7 @@ '=NN9DD' => '179', '=NO9E' => '179', '=NP2GG' => '179', + '=NP3FB' => '179', '=NP3K' => '179', '=NQ6N' => '179', '=NR4L' => '179', @@ -4248,6 +4263,7 @@ '=NX1P' => '179', '=NY6DX' => '179', '=NZ6T' => '179', + '=NZ7Q' => '179', '=R100RK' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=R2ET/9' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', '=R2MWO' => '264', @@ -4267,15 +4283,20 @@ '=R4IN' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=R4IO' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=R4IT' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', + '=R5QA/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', + '=R7AB/P' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', + '=R8CW/4' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=R8FF/3' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', - '=R8FF/7' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=R8FF/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', '=R8FF/P' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=R8MB/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=R8XF/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', - '=R9WCJ/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', + '=R8XF/3' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', + '=R9JBF/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', + '=R9PS/9' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', '=RA/UT5IA' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', '=RA0QK/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', + '=RA1WS/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RA4HL' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RA4NCC' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RA9UUY/6' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', @@ -4300,18 +4321,19 @@ '=RU4HD' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RU4HP' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RU4I' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', + '=RV1CC/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RW4HM' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RW4HTK' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RW4HW' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RW4HZ' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RW9WJ/4' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=RX9KT/6' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', - '=RX9WT/8' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', '=SV0XAZ' => '240', '=SV2ASP/A' => '238', '=SV2RSG/A' => '238', '=TA1BZ/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188', '=TA1C/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188', + '=TA1CX/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188', '=TA1D/3' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188', '=TA1D/4' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188', '=TA1FA/2' => '249,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188', @@ -4319,7 +4341,6 @@ '=TA6CQ/1' => '1171', '=TO1A' => '139', '=TO5A' => '123', - '=TO5O' => '123', '=TO5T' => '123', '=TO7A' => '123', '=TO8FTDM' => '118', @@ -4336,10 +4357,6 @@ '=UA4NF' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=UA4PN' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=UA4RF' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', - '=UB5O/1' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', - '=UB5O/2' => '264', - '=UB5O/4' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', - '=UB5O/9' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', '=UC4I' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', '=UD6AOP/0' => '265,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379', '=UI4I' => '263,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315', @@ -4349,10 +4366,9 @@ '=VE2FK' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533', '=VE2IDX' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533', '=VE2IM' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533', - '=VE2KK' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533', '=VE8AT' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533', - '=VER20200625' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533', - '=VERSION' => '75', + '=VER20200724' => '276,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533', + '=VERSION' => '271', '=VK0AI' => '336', '=VK0EK' => '335', '=VK3YQS/9' => '338', @@ -4369,6 +4385,7 @@ '=W0RIC' => '179', '=W0ZEE' => '191,900,902,904,906,908', '=W0ZP' => '179', + '=W1ETT' => '186', '=W1GKT' => '179', '=W1JM' => '191,900,902,904,906,908', '=W1LYD' => '191,900,902,904,906,908', @@ -4418,12 +4435,12 @@ '=W6SFG' => '179', '=W6UB' => '179', '=W6XR' => '179', + '=W7DXX' => '179', '=W7EE' => '179', '=W7HJ' => '179', '=W7II' => '179', '=W7IMP' => '179', '=W7IY' => '179', - '=W7KF' => '179', '=W7NX' => '186', '=W7RY' => '179', '=W7UT' => '179', @@ -4447,13 +4464,13 @@ '=W9PL' => '179', '=W9RM' => '179', '=W9RNY' => '179', + '=WA0LJM' => '179', '=WA0WWW' => '179', '=WA1FCN' => '179', '=WA1FVJ' => '191,900,902,904,906,908', '=WA1UJU' => '179', '=WA2VYA' => '179', '=WA3C' => '179', - '=WA4JA' => '179', '=WA5POK' => '179', '=WA6AW' => '186', '=WA6CZL' => '186', @@ -4465,6 +4482,7 @@ '=WB3JFS' => '179', '=WB4JTT' => '186', '=WB4YDY' => '179', + '=WB5WAJ' => '179', '=WB8BPU' => '179', '=WB8YYY' => '179', '=WB9QAF' => '179', @@ -4479,10 +4497,12 @@ '=WH6GCO' => '191,900,902,904,906,908', '=WH6LE' => '179', '=WH7R' => '179', + '=WJ4HCP' => '179', '=WJ9B' => '179', '=WL7OU' => '179', '=WM5DX' => '179', '=WN7S' => '179', + '=WN7Y' => '179', '=WO7U' => '179', '=WP3ME' => '179', '=WQ5L' => '179', @@ -4492,12 +4512,12 @@ '=WS7X' => '179', '=WS9M' => '179', '=WT2P' => '179', + '=WT7TT' => '179', '=WT8WV' => '179', '=WU0B' => '179', '=WU9B' => '179', '=WV4P' => '179', '=WV8SW' => '179', - '=WW4AL' => '191,900,902,904,906,908', '=WW4R' => '179', '=WW5M' => '179', '=WX4W' => '179', diff --git a/data/wpxloc.raw b/data/wpxloc.raw index 23f2dfd1..c56ef30d 100644 --- a/data/wpxloc.raw +++ b/data/wpxloc.raw @@ -1,6 +1,6 @@ ! $Id$ ! -! This file was created by Jim Reisert AD1C on 25 Jun 2020 +! This file was created by Jim Reisert AD1C on 24 Jul 2020 ! See: https://www.country-files.com/dx-cluster/wpxloc/ ! ! Highest DXCC number is 359 ("VERSION" entity) diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index bef5626d..0f452135 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -959,7 +959,7 @@ sub announce $buf = dd(['ann', $to, $target, $text, @_]) } else { $buf = "$to$target de $_[0]: $text"; - $buf =~ s/\%5E/^/g; + #$buf =~ s/\%5E/^/g; $buf .= "\a\a" if $self->{beep}; } $self->local_send($target eq 'WX' ? 'W' : 'N', $buf); @@ -984,7 +984,7 @@ sub chat $buf = dd(['chat', $to, $target, $text, @_]) } else { $buf = "$target de $_[0]: $text"; - $buf =~ s/\%5E/^/g; + #$buf =~ s/\%5E/^/g; $buf .= "\a\a" if $self->{beep}; } $self->local_send('C', $buf); @@ -1070,7 +1070,7 @@ sub dx_spot } else { $buf = $self->format_dx_spot(@_); $buf .= "\a\a" if $self->{beep}; - $buf =~ s/\%5E/^/g; + #$buf =~ s/\%5E/^/g; } $self->local_send('X', $buf); diff --git a/perl/DXMsg.pm b/perl/DXMsg.pm index 38d89bbc..174a98a4 100644 --- a/perl/DXMsg.pm +++ b/perl/DXMsg.pm @@ -216,7 +216,7 @@ sub handle_29 my $ref = get_fwq($fromnode, $stream); if ($ref) { - $_[4] =~ s/\%5E/^/g; + $_[4] =~ s/\%5E/~/g; if (@{$ref->{lines}}) { push @{$ref->{lines}}, $_[4]; } else { diff --git a/perl/DXProtout.pm b/perl/DXProtout.pm index ec2201ce..2e9724e9 100644 --- a/perl/DXProtout.pm +++ b/perl/DXProtout.pm @@ -43,7 +43,7 @@ sub pc10 $origin ||= $main::mycall; $text = unpad($text); $text = ' ' unless $text && length $text > 0; - $text =~ s/\^/%5E/g; + $text =~ s/\^/~/g; return "PC10^$from^$user1^$text^*^$user2^$origin^~"; } @@ -54,7 +54,7 @@ sub pc11 my $hops = get_hops(11); my $t = time; $text = ' ' if !$text; - $text =~ s/\^/%5E/g; + $text =~ s/\^/~/g; return sprintf "PC11^%.1f^$dxcall^%s^%s^$text^$mycall^$main::mycall^$hops^~", $freq, cldate($t), ztime($t); } @@ -65,7 +65,7 @@ sub pc61 my $hops = get_hops(61) || get_hops(11); my $t = time; $text = ' ' if !$text; - $text =~ s/\^/%5E/g; + $text =~ s/\^/~/g; return sprintf "PC61^%.1f^$dxcall^%s^%s^$text^$mycall^$main::mycall^$ipaddr^$hops^~", $freq, cldate($t), ztime($t); } @@ -75,7 +75,7 @@ sub pc12 my ($call, $text, $tonode, $sysop, $wx, $origin) = @_; my $hops = get_hops(12); $text ||= ' '; - $text =~ s/\^/%5E/g; + $text =~ s/\^/~/g; $tonode ||= '*'; $sysop ||= ' '; $wx ||= '0'; @@ -232,7 +232,7 @@ sub pc29 { my ($fromnode, $tonode, $stream, $text) = @_; $text = ' ' unless defined $text && length $text > 0; - $text =~ s/\^/%5E/og; # remove ^ + $text =~ s/\^/~/g; # remove ^ return "PC29^$fromnode^$tonode^$stream^$text^~"; } diff --git a/perl/RBN.pm b/perl/RBN.pm index 8d5db6aa..d9fbe053 100644 --- a/perl/RBN.pm +++ b/perl/RBN.pm @@ -46,15 +46,28 @@ use constant { SOrigin => 4, SZone => 11, }; +use constant { + OQual => 0, + OAvediff => 1, + OSpare => 2, + ODiff => 3, + }; +use constant { + CTime => 0, + CQual => 1, + CData => 2, + }; + + +our $DATA_VERSION = 1; - our @ISA = qw(DXChannel); our $startup_delay = 5*60; # don't send anything out until this timer has expired # this is to allow the feed to "warm up" with duplicates # so that the "big rush" doesn't happen. -our $minspottime = 60*60; # the time between respots of a callsign - if a call is +our $minspottime = 15*60; # the time between respots of a callsign - if a call is # still being spotted (on the same freq) and it has been # spotted before, it's spotted again after this time # until the next minspottime has passed. @@ -73,20 +86,25 @@ my %runtime; # how long each channel has been running our $cachefn = localdata('rbn_cache'); our $cache_valid = 4*60; # The cache file is considered valid if it is not more than this old +our $maxqrgdiff = 10; # the maximum +our $minqual = 2; # the minimum quality we will accept for output + my $json; my $noinrush = 0; # override the inrushpreventor if set sub init { $json = DXJSON->new; - $spots = {}; if (check_cache()) { $noinrush = 1; + } else { + $spots = {VERSION=>$DATA_VERSION}; } if (defined $DB::VERSION) { $noinrush = 1; $json->indent(1); } + } sub new @@ -117,6 +135,7 @@ sub new $self->{showstats} = 0; $self->{pingint} = 0; $self->{nopings} = 0; + $self->{queue} = {}; return $self; } @@ -196,7 +215,7 @@ sub normal # add base RBN - my $tim = $main::systime; + my $now = $main::systime; # parse line dbg "RBN:RAW,$line" if isdbg('rbnraw'); @@ -275,41 +294,64 @@ sub normal # process to just the standard "message passing" which has been shown to be able to sustain over 5000 # per second (limited by the test program's output and network speed, rather than DXSpider's handling). - my $nqrg = nearest(1, $qrg); # normalised to nearest Khz + my $nearest = 1; + my $search = 5; + my $mult = 10; + my $tqrg = $qrg * $mult; + my $nqrg = nearest($nearest, $tqrg); # normalised to nearest Khz # my $nqrg = nearest_even($qrg); # normalised to nearest Khz my $sp = "$call|$nqrg"; # hopefully the skimmers will be calibrated at least this well! - my $spp = sprintf("$call|%d", $nqrg+1); # but, clearly, my hopes are rudely dashed - my $spm = sprintf("$call|%d", $nqrg-1); # in BOTH directions! - # do we have it? - my $spot = $spots->{$sp}; - $spot = $spots->{$spp}, $sp = $spp, dbg(qq{RBN: SPP using $spp for $sp}) if isdbg('rbn') && !$spot && exists $spots->{$spp}; - $spot = $spots->{$spm}, $sp = $spm, dbg(qq{RBN: SPM using $spm for $sp}) if isdbg('rbn') && !$spot && exists $spots->{$spm}; + # find it? + my $cand = $spots->{$sp}; + unless ($cand) { + my ($i, $new); + for ($i = $tqrg; !$cand && $i <= $tqrg+$search; $i += 1) { + $new = "$call|$i"; + $cand = $spots->{$new}, last if exists $spots->{$new}; + } + if ($cand) { + my $diff = $i - $tqrg; + dbg(qq{RBN: QRG Diff using $new (+$diff) for $sp for qrg $qrg}) if (isdbg('rbnqrg') || isdbg('rbn')); + $sp = $new; + } + } + unless ($cand) { + my ($i, $new); + for ($i = $tqrg; !$cand && $i >= $tqrg-$search; $i -= 1) { + $new = "$call|$i"; + $cand = $spots->{$new}, last if exists $spots->{$new}; + } + if ($cand) { + my $diff = $tqrg - $i; + dbg(qq{RBN: QRG Diff using $new (-$diff) for $sp for qrg $qrg}) if (isdbg('rbnqrg') || isdbg('rbn')); + $sp = $new; + } + } - # if we have one and there is only one slot and that slot's time isn't expired for respot then return my $respot = 0; - if ($spot && ref $spot) { - if (@$spot == 1) { - unless ($self->{minspottime} > 0 && $tim - $spot->[0] >= $self->{minspottime}) { - dbg("RBN: key: '$sp' call: $call qrg: $qrg DUPE \@ ". atime(int $spot->[0])) if isdbg('rbn'); + if ($cand && ref $cand) { + if (@$cand <= CData) { + unless ($self->{minspottime} > 0 && $now - $cand->[CTime] >= $self->{minspottime}) { + dbg("RBN: key: '$sp' call: $call qrg: $qrg DUPE \@ ". atime(int $cand->[CTime])) if isdbg('rbn'); return; } - dbg("RBN: key: '$sp' RESPOTTING call: $call qrg: $qrg last seen \@ ". atime(int $spot->[0])) if isdbg('rbn'); - undef $spot; # it's about to be recreated (in one place) + dbg("RBN: key: '$sp' RESPOTTING call: $call qrg: $qrg last seen \@ ". atime(int $cand->[CTime])) if isdbg('rbn'); + $cand->[CTime] = $now; ++$respot; } # otherwise we have a spot being built up at the moment - } elsif ($spot) { - dbg("RBN: key '$sp' = '$spot' not ref"); + } elsif ($cand) { + dbg("RBN: key '$sp' = '$cand' not ref"); return; } # here we either have an existing spot record buildup on the go, or we need to create the first one - unless ($spot) { - $spots->{$sp} = $spot = [$main::systime]; + unless ($cand) { + $spots->{$sp} = $cand = [$now, 0]; dbg("RBN: key: '$sp' call: $call qrg: $qrg NEW" . ($respot ? ' RESPOT' : '')) if isdbg('rbn'); } @@ -320,7 +362,7 @@ sub normal # deal with the unix time my ($hh,$mm) = $t =~ /(\d\d)(\d\d)Z$/; my $utz = $hh*3600 + $mm*60 + $main::systime_daystart; # possible issue with late spot from previous day - $utz -= 86400 if $utz > $tim+3600; # too far ahead, drag it back one day + $utz -= 86400 if $utz > $now+3600; # too far ahead, drag it back one day # create record and add into the buildup my $r = [$origin, nearest(.1, $qrg), $call, $mode, $s, $t, $utz, $respot, $u]; @@ -336,51 +378,12 @@ sub normal } $r->[RSpotData] = \@s; - push @{$self->{queue}}, $sp if @$spot == 1; # queue the KEY (not the record) + ++$self->{queue}->{$sp};# unless @$cand>= CData; # queue the KEY (not the record) dbg("RBN: key: '$sp' ADD RECORD call: $call qrg: $qrg origin: $origin") if isdbg('rbn'); - push @$spot, $r; + push @$cand, $r; - # At this point we run the queue to see if anything can be sent onwards to the punter - my $now = $main::systime; - - # now run the waiting queue which just contains KEYS ($call|$qrg) - foreach $sp (@{$self->{queue}}) { - my $cand = $spots->{$sp}; - unless ($cand && $cand->[0]) { - dbg "RBN Cand " . ($cand ? 'def' : 'undef') . " [0] " . ($cand->[0] ? 'def' : 'undef') . " dwell $dwelltime"; - next; - } - if ($now >= $cand->[0] + $dwelltime ) { - # we have a candidate, create qualitee value(s); - unless (@$cand > 1) { - dbg "RBN: QUEUE key '$sp' MISSING RECORDS " . dd($cand) if isdbg 'rbn'; - shift @{$self->{queue}}; - next; - } - my $savedtime = shift @$cand; # save the start time - my $r = $cand->[0]; - my $quality = @$cand; - $quality = 9 if $quality > 9; - $quality = "Q:$quality"; - if (isdbg('progress')) { - my $s = "RBN: SPOT key: '$sp' = $r->[RCall] on $r->[RQrg] by $r->[ROrigin] \@ $r->[RTime] $quality"; - $s .= " route: $self->{call}"; - dbg($s); - } - - send_dx_spot($self, $quality, $cand); - - # clear out the data and make this now just "spotted", but no further action required until respot time - dbg "RBN: QUEUE key '$sp' cleared" if isdbg 'rbn'; - - $spots->{$sp} = [$savedtime]; - shift @{$self->{queue}}; - } else { - dbg sprintf("RBN: QUEUE key: '$sp' SEND time not yet reached %.1f secs left", $spot->[0] + $dwelltime - $now) if isdbg 'rbnqueue'; - } - } } else { dbg "RBN:DATA,$line" if isdbg('rbn'); } @@ -391,7 +394,7 @@ sub send_dx_spot { my $self = shift; my $quality = shift; - my $spot = shift; + my $cand = shift; ++$self->{norbn}; ++$self->{norbn10}; @@ -399,7 +402,7 @@ sub send_dx_spot # $r = [$origin, $qrg, $call, $mode, $s, $utz, $respot]; - my $mode = $spot->[0]->[3]; # as all the modes will be the same; + my $mode = $cand->[CData]->[RMode]; # as all the modes will be the same; my @dxchan = DXChannel::get_all(); @@ -426,7 +429,7 @@ sub send_dx_spot )) if isdbg('rbnll'); # send one spot to one user out of the ones that we have - $self->dx_spot($dxchan, $quality, $spot) if $want; + $self->dx_spot($dxchan, $quality, $cand) if $want; } } @@ -435,7 +438,7 @@ sub dx_spot my $self = shift; my $dxchan = shift; my $quality = shift; - my $spot = shift; + my $cand = shift; my $call = $dxchan->{call}; @@ -453,14 +456,17 @@ sub dx_spot my $filtered; my $rf = $dxchan->{rbnfilter} || $dxchan->{spotsfilter}; - foreach my $r (@$spot) { + my $comment; + + foreach my $r (@$cand) { # $r = [$origin, $qrg, $call, $mode, $s, $t, $utz, $respot, $qra]; # Spot::prepare($qrg, $call, $utz, $comment, $origin); + next unless ref $r; - my $comment = sprintf "%-3s %2ddB $quality", $r->[RMode], $r->[RStrength]; $respot = 1 if $r->[Respot]; $qra = $r->[RQra] if !$qra && $r->[RQra] && is_qra($r->[RQra]); + $comment = sprintf "%-3s %2ddB $quality", $r->[RMode], $r->[RStrength]; my $s = $r->[RSpotData]; # the prepared spot $s->[SComment] = $comment; # apply new generated comment @@ -507,6 +513,9 @@ sub dx_spot $saver->[SComment] .= '*' if $c > 1; $saver->[SComment] .= '+' if $respot; $saver->[SComment] .= " Z:$z" if $z; + if ($c > 1 && (isdbg('rbnqrg') || isdbg('rbn'))) { + + } dbg("RBN: SENDING to $call spot: $saver->[SCall] qrg: $saver->[SQrg] origin: $saver->[SOrigin] $saver->[SComment]") if isdbg 'rbnll'; if ($dxchan->{ve7cc}) { @@ -539,6 +548,58 @@ sub dx_spot } } +# per second +sub process +{ + foreach my $dxchan (DXChannel::get_all()) { + next unless $dxchan->is_rbn; + + # At this point we run the queue to see if anything can be sent onwards to the punter + my $now = $main::systime; + + # now run the waiting queue which just contains KEYS ($call|$qrg) + foreach my $sp (keys %{$dxchan->{queue}}) { + my $cand = $spots->{$sp}; + unless ($cand && $cand->[CTime]) { + dbg "RBN Cand $sp " . ($cand ? 'def' : 'undef') . " [CTime] " . ($cand->[CTime] ? 'def' : 'undef') . " dwell $dwelltime"; + next; + } + if ($now >= $cand->[CTime] + $dwelltime ) { + # we have a candidate, create qualitee value(s); + unless (@$cand > CData) { + dbg "RBN: QUEUE key '$sp' MISSING RECORDS, IGNORED" . dd($cand) if isdbg 'rbn'; + next; + } + dbg "RBN: QUEUE PROCESSING key: '$sp' $now >= $cand->[CTime]" if isdbg 'rbnqueue'; + my $r = $cand->[CData]; + my $quality = @$cand - CData; + $quality = 9 if $quality > 9; + $cand->[CQual] = $quality if $quality > $cand->[CQual]; + my $squality = "Q:$cand->[CQual]"; + + if ($cand->[CQual] >= $minqual) { + if (isdbg('progress')) { + my $s = "RBN: SPOT key: '$sp' = $r->[RCall] on $r->[RQrg] by $r->[ROrigin] \@ $r->[RTime] $squality route: $dxchan->{call}"; + dbg($s); + } + send_dx_spot($dxchan, $squality, $cand); + } elsif (isdbg('rbn')) { + my $s = "RBN: SPOT IGNORED(Q $cand->[CQual] < $minqual) key: '$sp' = $r->[RCall] on $r->[RQrg] by $r->[ROrigin] \@ $r->[RTime] $squality route: $dxchan->{call}"; + dbg($s); + } + + # clear out the data and make this now just "spotted", but no further action required until respot time + dbg "RBN: QUEUE key '$sp' cleared" if isdbg 'rbn'; + + $spots->{$sp} = [$now, $cand->[CQual]]; + delete $dxchan->{queue}->{$sp}; + } else { + dbg sprintf("RBN: QUEUE key: '$sp' SEND time not yet reached %.1f secs left", $cand->[CTime] + $dwelltime - $now) if isdbg 'rbnqueue'; + } + } + } + +} sub per_minute { @@ -561,8 +622,8 @@ sub per_10_minute { my $count = 0; my $removed = 0; - while (my ($k,$v) = each %{$spots}) { - if ($main::systime - $v->[0] > $minspottime*2) { + while (my ($k,$cand) = each %{$spots}) { + if ($main::systime - $cand->[CTime] > $minspottime*2) { delete $spots->{$k}; ++$removed; } @@ -573,7 +634,8 @@ sub per_10_minute dbg "RBN:STATS spot cache remain: $count removed: $removed"; # if isdbg('rbn'); foreach my $dxchan (DXChannel::get_all()) { next unless $dxchan->is_rbn; - dbg "RBN:STATS 10-minute $dxchan->{call} raw: $dxchan->{noraw10} sent: $dxchan->{norbn10} delivered: $dxchan->{nospot10} users: " . scalar keys %{$dxchan->{nousers10}}; + my $nq = keys %{$dxchan->{queue}}; + dbg "RBN:STATS 10-minute $dxchan->{call} queue: $nq raw: $dxchan->{noraw10} sent: $dxchan->{norbn10} delivered: $dxchan->{nospot10} users: " . scalar keys %{$dxchan->{nousers10}}; $dxchan->{noraw10} = $dxchan->{norbn10} = $dxchan->{nospot10} = 0; $dxchan->{nousers10} = {}; } } @@ -582,7 +644,8 @@ sub per_hour { foreach my $dxchan (DXChannel::get_all()) { next unless $dxchan->is_rbn; - dbg "RBN:STATS hour $dxchan->{call} raw: $dxchan->{norawhour} sent: $dxchan->{norbnhour} delivered: $dxchan->{nospothour} users: " . scalar keys %{$dxchan->{nousershour}}; + my $nq = keys %{$dxchan->{queue}}; + dbg "RBN:STATS hour $dxchan->{call} queue: $nq raw: $dxchan->{norawhour} sent: $dxchan->{norbnhour} delivered: $dxchan->{nospothour} users: " . scalar keys %{$dxchan->{nousershour}}; $dxchan->{norawhour} = $dxchan->{norbnhour} = $dxchan->{nospothour} = 0; $dxchan->{nousershour} = {}; } } @@ -621,9 +684,18 @@ sub check_cache } if ($s) { eval {$spots = $json->decode($s)}; - if ($spots && ref $spots) { - dbg("RBN:check_cache spot cache restored"); - return 1; + if ($spots && ref $spots) { + if (exists $spots->{VERSION} && $spots->{VERSION} == $DATA_VERSION) { + # now clean out anything that is current + while (my ($k, $cand) = each %$spots) { + next unless ref $cand; + if (@$cand > CData) { + $spots->{$k} = [$cand->[CTime], $cand->[CQual]]; + } + } + dbg("RBN:check_cache spot cache restored"); + return 1; + } } } dbg("RBN::checkcache error decoding $@"); diff --git a/perl/Spot.pm b/perl/Spot.pm index 763c60bd..2205cc5b 100644 --- a/perl/Spot.pm +++ b/perl/Spot.pm @@ -331,6 +331,7 @@ sub search my $rec = 0; my $in; while (<$fh>) { + chomp; my @r = split /\^/; ++$rec; if ($dxchan) { diff --git a/perl/VE7CC.pm b/perl/VE7CC.pm index 81a11144..729b91c0 100644 --- a/perl/VE7CC.pm +++ b/perl/VE7CC.pm @@ -47,8 +47,10 @@ sub dx_spot my $loc = $ref->qra || ''; $loc_spotter = substr($loc, 0, 4) if $loc; } + my $text = $_[4]; + $text =~ s/\^/~/g; - return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @_, $spotted_cc, $spotter_cc, $loc_spotted, $loc_spotter); + return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @_[0..3], $text, @_[5..10], $spotted_cc, $spotter_cc, $loc_spotted, $loc_spotter); } 1; diff --git a/perl/cluster.pl b/perl/cluster.pl index a38e5a10..ca70610f 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -773,7 +773,8 @@ sub per_sec DXUser::process(); AGWMsg::process(); DXCron::process(); # do cron jobs - + RBN::process(); + Timer::handler(); DXLog::flushall(); } -- 2.34.1