Adding GridLocator and MyGrid support

pull/47/head
Jean-Marc MEESSEN 4 years ago committed by GitHub
parent 494fbaa987
commit 53bd916d7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -59,6 +59,9 @@ func buildAdif(fullLog []LogLine, isWWFF bool, isSOTA bool) (adifList []string)
if logLine.OMname != "" {
adifLine.WriteString(adifElement("NAME", logLine.OMname))
}
if logLine.GridLoc != "" {
adifLine.WriteString(adifElement("GRIDSQUARE", logLine.GridLoc))
}
if logLine.QSLmsg != "" {
adifLine.WriteString(adifElement("QSLMSG", logLine.QSLmsg))
}
@ -72,7 +75,12 @@ func buildAdif(fullLog []LogLine, isWWFF bool, isSOTA bool) (adifList []string)
adifLine.WriteString(adifElement("SOTA_REF", logLine.SOTA))
}
}
if logLine.Operator != "" {
adifLine.WriteString(adifElement("OPERATOR", logLine.Operator))
}
if logLine.MyGrid != "" {
adifLine.WriteString(adifElement("MY_GRIDSQUARE", logLine.MyGrid))
}
if logLine.Nickname != "" {
adifLine.WriteString(adifElement("APP_EQSL_QTH_NICKNAME", logLine.Nickname))
}

@ -66,6 +66,21 @@ func Test_buildAdif(t *testing.T) {
"<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>ON4LY <QSO_DATE:8>20200524 <TIME_ON:4>1312 <BAND:3>20m <MODE:2>CW <RST_SENT:3>559 <RST_RCVD:3>599 <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0259 <OPERATOR:6>ON4KJM <EOR>",
}
sampleFilledLog2 := []LogLine{
{MyCall: "ON4KJM/P", Call: "S57LC", Date: "2020-05-24", MyGrid: "JO40eu", Time: "1310", Band: "20m", Frequency: "14.045", Mode: "CW", RSTsent: "599", RSTrcvd: "599", GridLoc: "JO50", MyWWFF: "ONFF-0259", Operator: "ON4KJM", Nickname: "ONFF-0259-1"},
{MyCall: "ON4KJM/P", Call: "ON4LY", Date: "2020-05-24", MyGrid: "JO40eu", Time: "1312", Band: "20m", Mode: "CW", RSTsent: "559", RSTrcvd: "599", MyWWFF: "ONFF-0259", Operator: "ON4KJM"},
}
expectedOutput2 := []string{
"ADIF Export for Fast Log Entry by DF3CB",
"<PROGRAMID:3>FLE",
"<ADIF_VER:5>3.1.0",
"<EOH>",
"<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>S57LC <QSO_DATE:8>20200524 <TIME_ON:4>1310 <BAND:3>20m <MODE:2>CW <FREQ:6>14.045 <RST_SENT:3>599 <RST_RCVD:3>599 <GRIDSQUARE:4>JO50 <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0259 <OPERATOR:6>ON4KJM <MY_GRIDSQUARE:6>JO40eu <APP_EQSL_QTH_NICKNAME:11>ONFF-0259-1 <EOR>",
"<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>ON4LY <QSO_DATE:8>20200524 <TIME_ON:4>1312 <BAND:3>20m <MODE:2>CW <RST_SENT:3>559 <RST_RCVD:3>599 <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0259 <OPERATOR:6>ON4KJM <MY_GRIDSQUARE:6>JO40eu <EOR>",
}
type args struct {
fullLog []LogLine
isWWFF bool
@ -81,6 +96,11 @@ func Test_buildAdif(t *testing.T) {
args{fullLog: sampleFilledLog1, isWWFF: true, isSOTA: false},
expectedOutput1,
},
{
"Happy case-Grid",
args{fullLog: sampleFilledLog2, isWWFF: true, isSOTA: false},
expectedOutput2,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {

@ -29,6 +29,7 @@ func SprintLogRecord(logLine LogLine) string {
output.WriteString("Operator " + logLine.Operator + "\n")
output.WriteString("MyWWFF " + logLine.MyWWFF + "\n")
output.WriteString("MySOTA " + logLine.MySOTA + "\n")
output.WriteString("MyGrid " + logLine.MyGrid + "\n")
output.WriteString("QslMsg " + logLine.QslMsgFromHeader + "\n")
output.WriteString("Nickname " + logLine.Nickname + "\n")
output.WriteString("Mode " + logLine.Mode + "\n")
@ -69,6 +70,10 @@ func SprintHeaderValues(logLine LogLine) string {
output.WriteString("MySOTA " + logLine.MySOTA + "\n")
}
if logLine.MyGrid != "" {
output.WriteString("MyGrid " + logLine.MyGrid + "\n")
}
return output.String()
}

@ -40,6 +40,11 @@ func TestSprintHeaderValues(t *testing.T) {
args{logLine: LogLine{MyCall: "on4kjm/p"}},
"MyCall on4kjm/p\n",
},
{
"Full Option with MyGrid",
args{logLine: LogLine{MyCall: "on4kjm/p", Operator: "on4kjm", MyWWFF: "wwff", MySOTA: "sota", MyGrid: "grid"}},
"MyCall on4kjm/p (on4kjm)\nMyWWFF wwff\nMySOTA sota\nMyGrid grid\n",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@ -65,6 +70,7 @@ func ExampleSprintLogRecord() {
Operator: "operator",
MyWWFF: "myWwff",
MySOTA: "mySota",
MyGrid: "myGrid",
QslMsgFromHeader: "QslMsgFromHeader",
Nickname: "nickname",
Mode: "mode",
@ -93,6 +99,7 @@ func ExampleSprintLogRecord() {
//Operator operator
//MyWWFF myWwff
//MySOTA mySota
//MyGrid myGrid
//QslMsg QslMsgFromHeader
//Nickname nickname
//Mode mode
@ -131,6 +138,7 @@ func TestSprintLogInColumn(t *testing.T) {
Operator: "operator",
MyWWFF: "myWwff",
MySOTA: "mySota",
MyGrid: "myGrid",
QslMsgFromHeader: "QslMsgFromHeader",
Nickname: "nickname",
Mode: "mode",

@ -58,6 +58,7 @@ func LoadFile(inputFilename string, isInterpolateTime bool) (filleFullLog []LogL
regexpHeaderOperator, _ := regexp.Compile("(?i)^operator ")
regexpHeaderMyWwff, _ := regexp.Compile("(?i)^mywwff ")
regexpHeaderMySota, _ := regexp.Compile("(?i)^mysota ")
regexpHeaderMyGrid, _ := regexp.Compile("(?i)^mygrid ")
regexpHeaderQslMsg, _ := regexp.Compile("(?i)^qslmsg ")
regexpHeaderNickname, _ := regexp.Compile("(?i)^nickname ")
regexpHeaderDate, _ := regexp.Compile("(?i)^date ")
@ -66,6 +67,7 @@ func LoadFile(inputFilename string, isInterpolateTime bool) (filleFullLog []LogL
headerOperator := ""
headerMyWWFF := ""
headerMySOTA := ""
headerMyGrid := ""
headerQslMsg := ""
headerNickname := ""
headerDate := ""
@ -178,6 +180,21 @@ func LoadFile(inputFilename string, isInterpolateTime bool) (filleFullLog []LogL
continue
}
//My Grid
if regexpHeaderMyGrid.MatchString(eachline) {
errorMsg := ""
myGridList := regexpHeaderMyGrid.Split(eachline, -1)
if len(strings.TrimSpace(myGridList[1])) > 0 {
headerMyGrid, errorMsg = ValidateGridLocator(strings.TrimSpace(myGridList[1]))
cleanedInput = append(cleanedInput, fmt.Sprintf("My Grid: %s", headerMyGrid))
if len(errorMsg) != 0 {
errorLog = append(errorLog, fmt.Sprintf("Invalid \"My Grid\" at line %d: %s (%s)", lineCount, myGridList[1], errorMsg))
}
}
//If there is no data after the marker, we just skip the data.
continue
}
//QSL Message
if regexpHeaderQslMsg.MatchString(eachline) {
myQslMsgList := regexpHeaderQslMsg.Split(eachline, -1)
@ -223,6 +240,7 @@ func LoadFile(inputFilename string, isInterpolateTime bool) (filleFullLog []LogL
previousLogLine.Operator = headerOperator
previousLogLine.MyWWFF = headerMyWWFF
previousLogLine.MySOTA = headerMySOTA
previousLogLine.MyGrid = headerMyGrid
previousLogLine.QSLmsg = headerQslMsg //previousLogLine.QslMsg is redundant
previousLogLine.Nickname = headerNickname
previousLogLine.Date = headerDate

@ -41,6 +41,7 @@ func TestLoadFile_happyCase(t *testing.T) {
dataArray = append(dataArray, "nickname Portable")
dataArray = append(dataArray, "myWwff onff-0258")
dataArray = append(dataArray, "mySota on/on-001")
dataArray = append(dataArray, "myGrid jo50")
dataArray = append(dataArray, "QslMsg This is a QSL message")
dataArray = append(dataArray, " ")
dataArray = append(dataArray, " #Log")
@ -207,6 +208,7 @@ func TestLoadFile_wrongData(t *testing.T) {
dataArray = append(dataArray, "operator foobar")
dataArray = append(dataArray, "myWwff foobar")
dataArray = append(dataArray, "mySota foobar")
dataArray = append(dataArray, "myGrid foobar")
dataArray = append(dataArray, " ")
dataArray = append(dataArray, " #Log")
dataArray = append(dataArray, "date 2020-05-23")
@ -243,6 +245,10 @@ func TestLoadFile_wrongData(t *testing.T) {
if loadedLogFile[0].MySOTA != expectedValue {
t.Errorf("Not the expected MySOTA value: %s (expecting %s)", loadedLogFile[0].MySOTA, expectedValue)
}
expectedValue = "*foobar"
if loadedLogFile[0].MyGrid != expectedValue {
t.Errorf("Not the expected MyGrid value: %s (expecting %s)", loadedLogFile[0].MyGrid, expectedValue)
}
expectedValue = "IK5ZVE"
if loadedLogFile[0].Call != expectedValue {

@ -24,8 +24,6 @@ import (
//"fmt"
)
//TODO: validate a record for minimal values
// LogLine is used to store all the data of a single log line
type LogLine struct {
Date string
@ -33,6 +31,7 @@ type LogLine struct {
Operator string
MyWWFF string
MySOTA string
MyGrid string
QslMsgFromHeader string
Nickname string
Mode string
@ -185,7 +184,10 @@ func ParseLine(inputStr string, previousLine LogLine) (logLine LogLine, errorMsg
// Is it the Grid Locator (starting with "#")
if regexpIsGridLoc.MatchString(element) {
logLine.GridLoc = strings.TrimLeft(element, "#")
grid := strings.TrimLeft(element, "#")
cleanGrid, callErrorMsg := ValidateGridLocator(grid)
logLine.GridLoc = cleanGrid
errorMsg = errorMsg + callErrorMsg
continue
}

@ -74,13 +74,18 @@ func TestParseLine(t *testing.T) {
},
{
"Parse OM name",
args{inputStr: "@Jean", previousLine: LogLine{Mode: "SSB"}},
LogLine{OMname: "Jean", Mode: "SSB", RSTsent: "59", RSTrcvd: "59"}, "",
args{inputStr: "1314 g3noh @Jean", previousLine: LogLine{Mode: "SSB"}},
LogLine{Time: "1314", ActualTime: "1314", Call: "G3NOH", OMname: "Jean", Mode: "SSB", RSTsent: "59", RSTrcvd: "59"}, "",
},
{
"Parse Grid locator",
"Parse Grid locator OK",
args{inputStr: "1314 g3noh #jo50eJ", previousLine: LogLine{Mode: "SSB"}},
LogLine{Time: "1314", ActualTime: "1314", Call: "G3NOH", GridLoc: "JO50ej", Mode: "SSB", RSTsent: "59", RSTrcvd: "59"}, "",
},
{
"Parse Grid locator NOK",
args{inputStr: "#grid", previousLine: LogLine{Mode: "SSB"}},
LogLine{GridLoc: "grid", Mode: "SSB", RSTsent: "59", RSTrcvd: "59"}, "",
LogLine{GridLoc: "*grid", Mode: "SSB", RSTsent: "59", RSTrcvd: "59"}, "[grid] is an invalid grid reference",
},
{
"Parse frequency",

@ -51,7 +51,38 @@ func ValidateWwff(inputStr string) (ref, errorMsg string) {
return wrongInputStr, errorMsg
}
var validCallRegexp = regexp.MustCompile(`[\d]{0,1}[A-Z]{1,2}\d([A-Z]{1,4}|\d{3,3}|\d{1,3}[A-Z])[A-Z]{0,5}`)
var validGridRegexp = regexp.MustCompile("(?i)^[a-z]{2}[0-9]{2}([a-z]{2})?$")
// ValidateGridLocator verifies that the supplied is a valid Maidenhead locator reference
// (either in 4 or 6 position). The returned grid case is normalized (first two letters
// in uppercase, last pair in lowercase). If the grid is not valid, the supicious string
// is prefixed with a * and an erroMsg is genrated.
func ValidateGridLocator(grid string) (processedGrid, errorMsg string) {
if validGridRegexp.MatchString(grid) {
var output strings.Builder
for i, c := range grid {
//The first pair of characters to be forced uppercase
if (i == 0) || (i == 1) {
output.WriteString(strings.ToUpper(string(c)))
}
//The second pair (numbers) are left alone
if (i == 2) || (i == 3) {
output.WriteString(string(c))
}
//The third pair of characters to be forced lowercase
if (i == 4) || (i == 5) {
output.WriteString(strings.ToLower(string(c)))
}
}
return output.String(), ""
}
processedGrid = "*" + grid
errorMsg = "[" + grid + "] is an invalid grid reference"
return processedGrid, errorMsg
}
var validCallRegexp = regexp.MustCompile(`^[\d]{0,1}[A-Z]{1,2}\d([A-Z]{1,4}|\d{3,3}|\d{1,3}[A-Z])[A-Z]{0,5}`)
var validPrefixRegexp = regexp.MustCompile(`\A[a-zA-Z0-9]{1,3}$`)
// ValidateCall verifies whether the supplied string is a valid callsign.

@ -1,21 +1,5 @@
package fleprocess
/*
Copyright © 2020 Jean-Marc Meessen, ON4KJM <on4kjm@gmail.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import (
"testing"
)
@ -343,3 +327,57 @@ func TestIsBand(t *testing.T) {
})
}
}
func TestValidateGridLocator(t *testing.T) {
type args struct {
grid string
}
tests := []struct {
name string
args args
wantProcessedGrid string
wantErrorMsg string
}{
{
"invalid grid",
args{grid: "zzzz"},
"*zzzz", "[zzzz] is an invalid grid reference",
},
{
"Valid 4 pos grid",
args{grid: "JO20"},
"JO20", "",
},
{
"Valid 4 pos grid (mixed case)",
args{grid: "Jo20"},
"JO20", "",
},
{
"Valid 6 pos grid",
args{grid: "JO20ec"},
"JO20ec", "",
},
{
"Valid 6 pos grid (mixed case)",
args{grid: "Jo20Ec"},
"JO20ec", "",
},
{
"Valid grid but over 6 pos",
args{grid: "JO20ec16"},
"*JO20ec16", "[JO20ec16] is an invalid grid reference",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gotProcessedGrid, gotErrorMsg := ValidateGridLocator(tt.args.grid)
if gotProcessedGrid != tt.wantProcessedGrid {
t.Errorf("ValidateGridLocator() gotProcessedGrid = %v, want %v", gotProcessedGrid, tt.wantProcessedGrid)
}
if gotErrorMsg != tt.wantErrorMsg {
t.Errorf("ValidateGridLocator() gotErrorMsg = %v, want %v", gotErrorMsg, tt.wantErrorMsg)
}
})
}
}

@ -5,14 +5,14 @@ go 1.14
require (
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/mitchellh/go-homedir v1.1.0
github.com/mitchellh/mapstructure v1.3.1 // indirect
github.com/mitchellh/mapstructure v1.3.3 // indirect
github.com/pelletier/go-toml v1.8.0 // indirect
github.com/spf13/afero v1.2.2 // indirect
github.com/spf13/afero v1.3.5 // indirect
github.com/spf13/cast v1.3.1 // indirect
github.com/spf13/cobra v1.0.0
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.7.0
golang.org/x/sys v0.0.0-20200523222454-059865788121 // indirect
gopkg.in/ini.v1 v1.57.0 // indirect
github.com/spf13/viper v1.7.1
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a // indirect
gopkg.in/ini.v1 v1.60.2 // indirect
)

@ -108,6 +108,7 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@ -132,6 +133,8 @@ github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQz
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.3.1 h1:cCBH2gTD2K0OtLlv/Y5H01VQCqmlDxz30kS5Y5bqfLA=
github.com/mitchellh/mapstructure v1.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/mapstructure v1.3.3 h1:SzB1nHZ2Xi+17FP0zVQBHIZqvwRN9408fJO8h+eeNA8=
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
@ -143,6 +146,7 @@ github.com/pelletier/go-toml v1.8.0 h1:Keo9qb7iRJs2voHvunFtuuYFsbWeOBh8/P9v/kVMF
github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
@ -170,6 +174,8 @@ github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
github.com/spf13/afero v1.3.5 h1:AWZ/w4lcfxuh52NVL78p9Eh8j6r1mCTEGSRFBJyIHAE=
github.com/spf13/afero v1.3.5/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng=
@ -190,10 +196,13 @@ github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU=
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM=
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
@ -201,6 +210,7 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.hein.dev/go-version v0.1.0 h1:hz3epLdx+cim8EN9XRt6pqAHxwWVW0D87Xm3mUbvKvI=
go.hein.dev/go-version v0.1.0/go.mod h1:WOEm7DWMroRe5GdUgHMvx+Pji5WWIpMuXmK/3foylXs=
@ -216,6 +226,9 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@ -229,11 +242,16 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -250,6 +268,7 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -258,6 +277,7 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -275,13 +295,18 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190812172437-4e8604ab3aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a h1:i47hUS795cOydZI4AwJQCKXOr4BvxzvikwDoDtHhP2Y=
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@ -303,7 +328,13 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc h1:NCy3Ohtk6Iny5V/reW2Ktypo4zIpWBdRJ1uFMjBxdg8=
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200902171120-36b1a880d5d1 h1:5SfEmaQTww9A35eeANMuoDMDbba7pCPVplPWQ72i5lY=
golang.org/x/tools v0.0.0-20200902171120-36b1a880d5d1/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@ -334,6 +365,8 @@ gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.60.2 h1:7i8mqModL63zqi8nQn8Q3+0zvSCZy1AxhBgthKfi4WU=
gopkg.in/ini.v1 v1.60.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

@ -0,0 +1,34 @@
ADIF Export for Fast Log Entry by DF3CB
<PROGRAMID:3>FLE
<ADIF_VER:5>3.1.0
<EOH>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>EA2DTV <QSO_DATE:8>20200601 <TIME_ON:4>1328 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>449 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>SP8DT <QSO_DATE:8>20200601 <TIME_ON:4>1333 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>OM1AX <QSO_DATE:8>20200601 <TIME_ON:4>1334 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DK3ABM <QSO_DATE:8>20200601 <TIME_ON:4>1335 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>IV4AOZ <QSO_DATE:8>20200601 <TIME_ON:4>1337 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>HA0LG <QSO_DATE:8>20200601 <TIME_ON:4>1341 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>549 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>9A4FM <QSO_DATE:8>20200601 <TIME_ON:4>1342 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>579 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>UT5PI <QSO_DATE:8>20200601 <TIME_ON:4>1345 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DL2JQT <QSO_DATE:8>20200601 <TIME_ON:4>1346 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OH4BSL <QSO_DATE:8>20200601 <TIME_ON:4>1348 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>F8AZK <QSO_DATE:8>20200601 <TIME_ON:4>1350 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OH7JHA <QSO_DATE:8>20200601 <TIME_ON:4>1352 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:7>DL6KW/P <QSO_DATE:8>20200601 <TIME_ON:4>1403 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>559 <GRIDSQUARE:4>JO50 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:9>DL8NG/QRP <QSO_DATE:8>20200601 <TIME_ON:4>1408 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>G3VQO <QSO_DATE:8>20200601 <TIME_ON:4>1410 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:11>OE/DG8RCN/P <QSO_DATE:8>20200601 <TIME_ON:4>1420 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OE3CHC <QSO_DATE:8>20200601 <TIME_ON:4>1423 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>449 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OE5WLL <QSO_DATE:8>20200601 <TIME_ON:4>1424 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>469 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>PA7RA <QSO_DATE:8>20200601 <TIME_ON:4>1425 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DL1LQR <QSO_DATE:8>20200601 <TIME_ON:4>1425 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>IK1GPG <QSO_DATE:8>20200601 <TIME_ON:4>1425 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>SP1MVG <QSO_DATE:8>20200601 <TIME_ON:4>1435 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>ON4EA <QSO_DATE:8>20200601 <TIME_ON:4>1435 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>IK2ECC <QSO_DATE:8>20200601 <TIME_ON:4>1437 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>G4GJV <QSO_DATE:8>20200601 <TIME_ON:4>1439 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>PA0NBB <QSO_DATE:8>20200601 <TIME_ON:4>1439 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DL5FBB <QSO_DATE:8>20200601 <TIME_ON:4>1445 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>F4GYM <QSO_DATE:8>20200601 <TIME_ON:4>1445 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>G4GJV <QSO_DATE:8>20200601 <TIME_ON:4>1446 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:8>DL7UPR/P <QSO_DATE:8>20200601 <TIME_ON:4>1450 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>579 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>

@ -0,0 +1,34 @@
ADIF Export for Fast Log Entry by DF3CB
<PROGRAMID:3>FLE
<ADIF_VER:5>3.1.0
<EOH>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>EA2DTV <QSO_DATE:8>20200601 <TIME_ON:4>1328 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>449 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>SP8DT <QSO_DATE:8>20200601 <TIME_ON:4>1333 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>OM1AX <QSO_DATE:8>20200601 <TIME_ON:4>1334 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DK3ABM <QSO_DATE:8>20200601 <TIME_ON:4>1335 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>IV4AOZ <QSO_DATE:8>20200601 <TIME_ON:4>1337 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>HA0LG <QSO_DATE:8>20200601 <TIME_ON:4>1341 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>549 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>9A4FM <QSO_DATE:8>20200601 <TIME_ON:4>1342 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>579 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>UT5PI <QSO_DATE:8>20200601 <TIME_ON:4>1345 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>559 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DL2JQT <QSO_DATE:8>20200601 <TIME_ON:4>1346 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OH4BSL <QSO_DATE:8>20200601 <TIME_ON:4>1348 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>F8AZK <QSO_DATE:8>20200601 <TIME_ON:4>1350 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OH7JHA <QSO_DATE:8>20200601 <TIME_ON:4>1352 <BAND:3>20m <MODE:2>CW <FREQ:6>14.060 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:7>DL6KW/P <QSO_DATE:8>20200601 <TIME_ON:4>1403 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>559 <GRIDSQUARE:4>JO50 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:9>DL8NG/QRP <QSO_DATE:8>20200601 <TIME_ON:4>1408 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>G3VQO <QSO_DATE:8>20200601 <TIME_ON:4>1410 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:11>OE/DG8RCN/P <QSO_DATE:8>20200601 <TIME_ON:4>1420 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OE3CHC <QSO_DATE:8>20200601 <TIME_ON:4>1423 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>449 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>OE5WLL <QSO_DATE:8>20200601 <TIME_ON:4>1424 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>469 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>PA7RA <QSO_DATE:8>20200601 <TIME_ON:4>1425 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DL1LQR <QSO_DATE:8>20200601 <TIME_ON:4>1425 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>IK1GPG <QSO_DATE:8>20200601 <TIME_ON:4>1425 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>559 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>SP1MVG <QSO_DATE:8>20200601 <TIME_ON:4>1435 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>559 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>ON4EA <QSO_DATE:8>20200601 <TIME_ON:4>1435 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>IK2ECC <QSO_DATE:8>20200601 <TIME_ON:4>1437 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>G4GJV <QSO_DATE:8>20200601 <TIME_ON:4>1439 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>PA0NBB <QSO_DATE:8>20200601 <TIME_ON:4>1439 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:6>DL5FBB <QSO_DATE:8>20200601 <TIME_ON:4>1445 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>F4GYM <QSO_DATE:8>20200601 <TIME_ON:4>1445 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:5>G4GJV <QSO_DATE:8>20200601 <TIME_ON:4>1446 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>599 <RST_RCVD:3>599 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>
<STATION_CALLSIGN:8>ON4KJM/P <CALL:8>DL7UPR/P <QSO_DATE:8>20200601 <TIME_ON:4>1450 <BAND:3>30m <MODE:2>CW <FREQ:6>10.116 <RST_SENT:3>449 <RST_RCVD:3>579 <QSLMSG:19>ONFF-058 (Moeraske) <MY_SIG:4>WWFF <MY_SIG_INFO:9>ONFF-0258 <MY_SOTA_REF:9>ON/ON-002 <OPERATOR:6>ON4KJM <APP_EQSL_QTH_NICKNAME:8>portable <EOR>

@ -0,0 +1,30 @@
V2,ON4KJM/P,ON/ON-002,01/06/20,1328,14MHz,CW,EA2DTV,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1333,14MHz,CW,SP8DT,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1334,14MHz,CW,OM1AX,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1335,14MHz,CW,DK3ABM,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1337,14MHz,CW,IV4AOZ,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1341,14MHz,CW,HA0LG,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1342,14MHz,CW,9A4FM,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1345,14MHz,CW,UT5PI,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1346,14MHz,CW,DL2JQT,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1348,14MHz,CW,OH4BSL,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1350,14MHz,CW,F8AZK,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1352,14MHz,CW,OH7JHA,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1403,10MHz,CW,DL6KW/P,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1408,10MHz,CW,DL8NG/QRP,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1410,10MHz,CW,G3VQO,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1420,10MHz,CW,OE/DG8RCN/P,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1423,10MHz,CW,OE3CHC,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1424,10MHz,CW,OE5WLL,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1425,10MHz,CW,PA7RA,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1425,10MHz,CW,DL1LQR,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1425,10MHz,CW,IK1GPG,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1435,10MHz,CW,SP1MVG,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1435,10MHz,CW,ON4EA,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1437,10MHz,CW,IK2ECC,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1439,10MHz,CW,G4GJV,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1439,10MHz,CW,PA0NBB,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1445,10MHz,CW,DL5FBB,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1445,10MHz,CW,F4GYM,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1446,10MHz,CW,G4GJV,,ONFF-058 (Moeraske)
V2,ON4KJM/P,ON/ON-002,01/06/20,1450,10MHz,CW,DL7UPR/P,,ONFF-058 (Moeraske)
1 V2 ON4KJM/P ON/ON-002 01/06/20 1328 14MHz CW EA2DTV ONFF-058 (Moeraske)
2 V2 ON4KJM/P ON/ON-002 01/06/20 1333 14MHz CW SP8DT ONFF-058 (Moeraske)
3 V2 ON4KJM/P ON/ON-002 01/06/20 1334 14MHz CW OM1AX ONFF-058 (Moeraske)
4 V2 ON4KJM/P ON/ON-002 01/06/20 1335 14MHz CW DK3ABM ONFF-058 (Moeraske)
5 V2 ON4KJM/P ON/ON-002 01/06/20 1337 14MHz CW IV4AOZ ONFF-058 (Moeraske)
6 V2 ON4KJM/P ON/ON-002 01/06/20 1341 14MHz CW HA0LG ONFF-058 (Moeraske)
7 V2 ON4KJM/P ON/ON-002 01/06/20 1342 14MHz CW 9A4FM ONFF-058 (Moeraske)
8 V2 ON4KJM/P ON/ON-002 01/06/20 1345 14MHz CW UT5PI ONFF-058 (Moeraske)
9 V2 ON4KJM/P ON/ON-002 01/06/20 1346 14MHz CW DL2JQT ONFF-058 (Moeraske)
10 V2 ON4KJM/P ON/ON-002 01/06/20 1348 14MHz CW OH4BSL ONFF-058 (Moeraske)
11 V2 ON4KJM/P ON/ON-002 01/06/20 1350 14MHz CW F8AZK ONFF-058 (Moeraske)
12 V2 ON4KJM/P ON/ON-002 01/06/20 1352 14MHz CW OH7JHA ONFF-058 (Moeraske)
13 V2 ON4KJM/P ON/ON-002 01/06/20 1403 10MHz CW DL6KW/P ONFF-058 (Moeraske)
14 V2 ON4KJM/P ON/ON-002 01/06/20 1408 10MHz CW DL8NG/QRP ONFF-058 (Moeraske)
15 V2 ON4KJM/P ON/ON-002 01/06/20 1410 10MHz CW G3VQO ONFF-058 (Moeraske)
16 V2 ON4KJM/P ON/ON-002 01/06/20 1420 10MHz CW OE/DG8RCN/P ONFF-058 (Moeraske)
17 V2 ON4KJM/P ON/ON-002 01/06/20 1423 10MHz CW OE3CHC ONFF-058 (Moeraske)
18 V2 ON4KJM/P ON/ON-002 01/06/20 1424 10MHz CW OE5WLL ONFF-058 (Moeraske)
19 V2 ON4KJM/P ON/ON-002 01/06/20 1425 10MHz CW PA7RA ONFF-058 (Moeraske)
20 V2 ON4KJM/P ON/ON-002 01/06/20 1425 10MHz CW DL1LQR ONFF-058 (Moeraske)
21 V2 ON4KJM/P ON/ON-002 01/06/20 1425 10MHz CW IK1GPG ONFF-058 (Moeraske)
22 V2 ON4KJM/P ON/ON-002 01/06/20 1435 10MHz CW SP1MVG ONFF-058 (Moeraske)
23 V2 ON4KJM/P ON/ON-002 01/06/20 1435 10MHz CW ON4EA ONFF-058 (Moeraske)
24 V2 ON4KJM/P ON/ON-002 01/06/20 1437 10MHz CW IK2ECC ONFF-058 (Moeraske)
25 V2 ON4KJM/P ON/ON-002 01/06/20 1439 10MHz CW G4GJV ONFF-058 (Moeraske)
26 V2 ON4KJM/P ON/ON-002 01/06/20 1439 10MHz CW PA0NBB ONFF-058 (Moeraske)
27 V2 ON4KJM/P ON/ON-002 01/06/20 1445 10MHz CW DL5FBB ONFF-058 (Moeraske)
28 V2 ON4KJM/P ON/ON-002 01/06/20 1445 10MHz CW F4GYM ONFF-058 (Moeraske)
29 V2 ON4KJM/P ON/ON-002 01/06/20 1446 10MHz CW G4GJV ONFF-058 (Moeraske)
30 V2 ON4KJM/P ON/ON-002 01/06/20 1450 10MHz CW DL7UPR/P ONFF-058 (Moeraske)

@ -0,0 +1,44 @@
# Header
mysota on/on-002
mycall on4kjm/p
operator on4kjm
mywwff onff-0258
qslmsg ONFF-058 (Moeraske)
nickname portable
# Log
date 2020-06-01
20m cw
14.060
1328 ea2dtv 5 44
33 sp8dt 5 9
34 om1ax 5 5
35 dk3abm
37 iv4aoz
41 ha0lg 4 5
42 9a4fm 7 9
45 ut5pi 5 5
46 dl2jqt
48 oh4bsl
50 f8azk
52 oh7jha
30m 10.116
1403 dl6kw/p 5 5 #jo50
08 dl8ng/qrp 44 5
10 g3vqo
20 oe/dg8rcn/p 44 9
23 oe3chc 5 44
24 oe5wll 5 46
25 pa7ra
dl1lqr
ik1gpg 5 5
35 sp1mvg 5
on4ea
37 ik2ecc
39 g4gjv
pa0nbb 44
45 dl5fbb
45 f4gym
46 g4gjv
50 dl7upr/p 44 57
Loading…
Cancel
Save