From b7370c0e21401a866b324731488ccd9a8aeb86eb Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 15 May 2026 19:02:22 +0100 Subject: [PATCH 001/150] migration support scripts --- archive/server_setup/get-all.sh | 9 +++++++++ archive/server_setup/get-nbd.sh | 7 +++++++ 2 files changed, 16 insertions(+) create mode 100644 archive/server_setup/get-all.sh create mode 100644 archive/server_setup/get-nbd.sh diff --git a/archive/server_setup/get-all.sh b/archive/server_setup/get-all.sh new file mode 100644 index 00000000..7f5c2143 --- /dev/null +++ b/archive/server_setup/get-all.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# + +# DEPLOY THIS TO THE OLD SERVER in ~/server_setup + +sudo su << EOD +cd /var/sftp +grep -R HELPER /var/sftp/*/ukmon.ini +EOD diff --git a/archive/server_setup/get-nbd.sh b/archive/server_setup/get-nbd.sh new file mode 100644 index 00000000..49ca92be --- /dev/null +++ b/archive/server_setup/get-nbd.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# + +sudo su << EOD +cd /var/sftp +grep -R HELPER /var/sftp/*/ukmon.ini| grep -v batch +EOD From e4730be2ab0872f55c9396cce8be670f86f566c5 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 15 May 2026 19:02:47 +0100 Subject: [PATCH 002/150] migration support scripts --- archive/server_setup/get-nbd.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/archive/server_setup/get-nbd.sh b/archive/server_setup/get-nbd.sh index 49ca92be..c16ca2b9 100644 --- a/archive/server_setup/get-nbd.sh +++ b/archive/server_setup/get-nbd.sh @@ -1,6 +1,8 @@ #!/bin/bash # +# DEPLOY THIS TO THE OLD SERVER in ~/server_setup + sudo su << EOD cd /var/sftp grep -R HELPER /var/sftp/*/ukmon.ini| grep -v batch From 9f74d2fd727ced0f8925bc17c671fcc5cfd70167 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 15 May 2026 19:04:03 +0100 Subject: [PATCH 003/150] tweaks to migration scripts --- archive/server_setup/acctStatusChecks.sh | 25 +++++++++++++++-------- archive/server_setup/checkSftpAccounts.py | 2 +- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/archive/server_setup/acctStatusChecks.sh b/archive/server_setup/acctStatusChecks.sh index eded44c2..9e7f84e8 100644 --- a/archive/server_setup/acctStatusChecks.sh +++ b/archive/server_setup/acctStatusChecks.sh @@ -6,22 +6,31 @@ cd $here sudo ls -1 /var/sftp | egrep -v "test|logup" > moved.txt grep batchs /home/ubuntu/prod/data/reports/stationlogins.txt | cut -c 42-61 | sed 's/ //g' | sort | uniq > switched.txt -grep ukmonh /home/ubuntu/prod/data/reports/stationlogins.txt | cut -c 42-61 | sed 's/ //g' | sort | uniq > pending.txt +grep -v batchs /home/ubuntu/prod/data/reports/stationlogins.txt | cut -c 42-61 | sed 's/ //g' | grep -v StationID| sort | uniq > pending.txt -ssh ukmonhelper2 "~/prod/server_setup/get-nbd.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > not-being-done.txt -ssh ukmonhelper2 "~/prod/server_setup/get-all.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > all-accounts.txt +ssh ukmonhelper2 "~/server_setup/get-nbd.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > dead.txt +ssh ukmonhelper2 "~/server_setup/get-all.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > all-accounts.txt python ~/src/ukmda-dataprocessing/archive/server_setup/checkSftpAccounts.py -echo "Moved: $(wc -l moved.txt | awk '{print $1}')" > statusreport.txt -echo "Switched: $(wc -l switched.txt | awk '{print $1}')" >> statusreport.txt +echo "Migrated is a count of how many stations got set up on the new server," >> statusreport.txt +echo "Done is how many have cut over, pending is how many have not" >> statusreport.txt +echo "" >> statusreport.txt +echo "Migrated: $(wc -l moved.txt | awk '{print $1}')" > statusreport.txt +echo "Done: $(wc -l switched.txt | awk '{print $1}')" >> statusreport.txt echo "Pending: $(wc -l pending.txt | awk '{print $1}')" >> statusreport.txt -echo "Total: $(wc -l still-live.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt -echo "Not Live: $(wc -l not_live.txt | awk '{print $1}')" >> statusreport.txt +echo "Live is how many have connected in the last 10 days" >> statusreport.txt +echo "Inactive is how many didn't connect for 10 days, Not Upl is how many aren't uploading" >> statusreport.txt +echo "" >> statusreport.txt +echo "Live: $(wc -l still-live.txt | awk '{print $1}')" >> statusreport.txt +echo "Not Live: $(wc -l inactive.txt | awk '{print $1}')" >> statusreport.txt echo "Not Upl: $(wc -l not_uploading.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt -echo "Dead: $(wc -l not-being-done.txt | awk '{print $1}')" >> statusreport.txt +echo "Dead is cameras that I'm not intending to migrate either because" >> statusreport.txt +echo "they've left the network or been offline for years" >> statusreport.txt +echo "" >> statusreport.txt +echo "Dead: $(wc -l dead.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt cat statusreport.txt diff --git a/archive/server_setup/checkSftpAccounts.py b/archive/server_setup/checkSftpAccounts.py index de6b7696..81b6291b 100644 --- a/archive/server_setup/checkSftpAccounts.py +++ b/archive/server_setup/checkSftpAccounts.py @@ -52,7 +52,7 @@ for cam in not_upl: outf.write(','.join(cam) + '\n') -with open('not_live.txt','w') as outf: +with open('inactive.txt','w') as outf: for cam in not_live: outf.write(','.join(cam) + '\n') From a438f1be697d894dcd63e8d019648657b544d75b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 15 May 2026 19:12:17 +0100 Subject: [PATCH 004/150] more tweaks --- archive/server_setup/acctStatusChecks.sh | 3 ++- archive/server_setup/checkSftpAccounts.py | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/archive/server_setup/acctStatusChecks.sh b/archive/server_setup/acctStatusChecks.sh index 9e7f84e8..e530265b 100644 --- a/archive/server_setup/acctStatusChecks.sh +++ b/archive/server_setup/acctStatusChecks.sh @@ -14,10 +14,11 @@ ssh ukmonhelper2 "~/server_setup/get-all.sh" | while read i ; do echo $i | awk - python ~/src/ukmda-dataprocessing/archive/server_setup/checkSftpAccounts.py +echo "" > statusreport.txt echo "Migrated is a count of how many stations got set up on the new server," >> statusreport.txt echo "Done is how many have cut over, pending is how many have not" >> statusreport.txt echo "" >> statusreport.txt -echo "Migrated: $(wc -l moved.txt | awk '{print $1}')" > statusreport.txt +echo "Migrated: $(wc -l moved.txt | awk '{print $1}')" >> statusreport.txt echo "Done: $(wc -l switched.txt | awk '{print $1}')" >> statusreport.txt echo "Pending: $(wc -l pending.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt diff --git a/archive/server_setup/checkSftpAccounts.py b/archive/server_setup/checkSftpAccounts.py index 81b6291b..31f099f1 100644 --- a/archive/server_setup/checkSftpAccounts.py +++ b/archive/server_setup/checkSftpAccounts.py @@ -69,7 +69,20 @@ pending = open('pending.txt').readlines() switched = open('switched.txt').readlines() +# accounts in the 'pending' list that are not in the moved list +# are ones that i need to migrate urgently! pendingnotmoved = [x for x in pending if x not in moved] +if len(pendingnotmoved) > 0: + print('stations marked pending but not moved - check if need done') + print(pendingnotmoved) -print('stations marked pending but not moved - check if need done') -print(pendingnotmoved) \ No newline at end of file +# accounts i have moved that are neither in the switched nor pending lists +# these are probably accounts i know need to move but are currently offline +movednotpending = [x for x in moved if x not in pending and x not in switched] +if len(movednotpending) > 0: + print('stations moved but not connecting - check on these too') + print(movednotpending) +with open('notpending.txt', 'w') as outf: + for nam in movednotpending: + outf.write(f'{nam}\n') +print("") \ No newline at end of file From 0a8a36370cec3a0d4b9decacce589384d11fee2f Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 15 May 2026 21:17:42 +0100 Subject: [PATCH 005/150] bugfix --- archive/server_setup/checkSftpAccounts.py | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/server_setup/checkSftpAccounts.py b/archive/server_setup/checkSftpAccounts.py index 31f099f1..9c5f82d2 100644 --- a/archive/server_setup/checkSftpAccounts.py +++ b/archive/server_setup/checkSftpAccounts.py @@ -44,6 +44,7 @@ else: not_live.append([loc, gmnid, lastup, lastlo, via]) +still_upl = list(set(still_upl)) with open('still-live.txt','w') as outf: for cam in still_upl: outf.write(','.join(cam) + '\n') From 5f9dadec2cd97de183bfbf8a3fc32af926eb2d0b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 15 May 2026 21:21:07 +0100 Subject: [PATCH 006/150] bugfixes --- archive/server_setup/acctStatusChecks.sh | 9 ++++++--- archive/server_setup/checkSftpAccounts.py | 1 - 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/archive/server_setup/acctStatusChecks.sh b/archive/server_setup/acctStatusChecks.sh index e530265b..f09026b2 100644 --- a/archive/server_setup/acctStatusChecks.sh +++ b/archive/server_setup/acctStatusChecks.sh @@ -23,10 +23,13 @@ echo "Done: $(wc -l switched.txt | awk '{print $1}')" >> statusreport.txt echo "Pending: $(wc -l pending.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt echo "Live is how many have connected in the last 10 days" >> statusreport.txt -echo "Inactive is how many didn't connect for 10 days, Not Upl is how many aren't uploading" >> statusreport.txt +echo "Inactive is how many didn't connect for 10 days" >> statusreport.txt +echo "" >> statusreport.txt +echo "Live: $(cat still-live.txt | sort | uniq | wc -l | awk '{print $1}')" >> statusreport.txt +echo "Not Live: $(cat inactive.txt | sort | uniq | wc -l | awk '{print $1}')" >> statusreport.txt +echo "" >> statusreport.txt +echo "" >Not Upl is how many aren't uploading> statusreport.txt echo "" >> statusreport.txt -echo "Live: $(wc -l still-live.txt | awk '{print $1}')" >> statusreport.txt -echo "Not Live: $(wc -l inactive.txt | awk '{print $1}')" >> statusreport.txt echo "Not Upl: $(wc -l not_uploading.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt echo "Dead is cameras that I'm not intending to migrate either because" >> statusreport.txt diff --git a/archive/server_setup/checkSftpAccounts.py b/archive/server_setup/checkSftpAccounts.py index 9c5f82d2..31f099f1 100644 --- a/archive/server_setup/checkSftpAccounts.py +++ b/archive/server_setup/checkSftpAccounts.py @@ -44,7 +44,6 @@ else: not_live.append([loc, gmnid, lastup, lastlo, via]) -still_upl = list(set(still_upl)) with open('still-live.txt','w') as outf: for cam in still_upl: outf.write(','.join(cam) + '\n') From d029f0970bc2865489903e15dcf5f7b9ea4bc976 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 15 May 2026 21:22:12 +0100 Subject: [PATCH 007/150] typo --- archive/server_setup/acctStatusChecks.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/server_setup/acctStatusChecks.sh b/archive/server_setup/acctStatusChecks.sh index f09026b2..ac533f76 100644 --- a/archive/server_setup/acctStatusChecks.sh +++ b/archive/server_setup/acctStatusChecks.sh @@ -28,7 +28,7 @@ echo "" >> statusreport.txt echo "Live: $(cat still-live.txt | sort | uniq | wc -l | awk '{print $1}')" >> statusreport.txt echo "Not Live: $(cat inactive.txt | sort | uniq | wc -l | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt -echo "" >Not Upl is how many aren't uploading> statusreport.txt +echo "Not Upl is how many aren't uploading" >> statusreport.txt echo "" >> statusreport.txt echo "Not Upl: $(wc -l not_uploading.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt From 5cb579ddaddfeee2ce828a02300834e8ddf76c4e Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sat, 16 May 2026 16:36:44 +0100 Subject: [PATCH 008/150] bugfix in routine to clean up deleted trajectories --- archive/utils/cleanupDeletedTrajs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/utils/cleanupDeletedTrajs.sh b/archive/utils/cleanupDeletedTrajs.sh index 70774dd1..48d1f458 100644 --- a/archive/utils/cleanupDeletedTrajs.sh +++ b/archive/utils/cleanupDeletedTrajs.sh @@ -29,7 +29,7 @@ sqlite3 $DATADIR/distrib/trajectories.db "select traj_file_path from trajectorie moved=1 done yr=${trajdir:13:4} - trajpth=$(basename $trajdir) + trajpth=${trajdir:18} webloc=$WEBSITEBUCKET/reports/${yr}/orbits/$trajpth newloc=${UKMONSHAREDBUCKET}/matches/duplicates/reports/${yr}/orbits/$trajpth aws s3 ls $webloc/ | awk -F " " '{print $4}' | while read fname; do From f7ea81390c74ccae286898f1ffc4ab06588019f3 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 14:13:36 +0100 Subject: [PATCH 009/150] add status column to matches table --- archive/database/ddl/create_tables.sql | 3 ++- archive/utils/loadMatchCsvMDB.sh | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/archive/database/ddl/create_tables.sql b/archive/database/ddl/create_tables.sql index ba036622..2161cfe3 100644 --- a/archive/database/ddl/create_tables.sql +++ b/archive/database/ddl/create_tables.sql @@ -167,7 +167,8 @@ create table matches( Jacchia2 float, numstats tinyint, stations varchar(256), - isfb varchar(6) + isfb varchar(6), + status tinyint ); alter ignore table matches add unique uniq_orbname (orbname); \ No newline at end of file diff --git a/archive/utils/loadMatchCsvMDB.sh b/archive/utils/loadMatchCsvMDB.sh index 4dfaccb5..dc8d899c 100644 --- a/archive/utils/loadMatchCsvMDB.sh +++ b/archive/utils/loadMatchCsvMDB.sh @@ -17,8 +17,8 @@ if [ ! -f $csvname ] ; then echo "$csvname not found" ; exit ; fi echo "loading $csvname into mariadb" logger -s -t loadSQL "starting" user=batch -# leading space to prevent being inserted into environment passwd=$(aws ssm get-parameters --names prod_dbpw --with-decryption --region eu-west-1 | jq .Parameters[0].Value | sed 's/"//g') + mysql -p${passwd} -u${user} << EOD select count(*) from ukmon.matches; LOAD DATA LOCAL INFILE '$csvname' From 0f21ab8a610443de360de0fa7ca04ef18c1156cf Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 14:24:14 +0100 Subject: [PATCH 010/150] add statusflag to full_csv file --- archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py b/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py index d7f54a53..8ca7d7ba 100644 --- a/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py +++ b/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py @@ -189,6 +189,7 @@ def createUFOOrbitFile(traj, outdir, amag, mass, shower_obj): csvf.write(',True') else: csvf.write(',False') + csvf.write(',1') # status flag csvf.write('\n') return From 3b747e3cc47a0881660ed068d8bf49adacc2e2bd Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 15:16:33 +0100 Subject: [PATCH 011/150] updated match dta api to use status flag in database --- archive/lambdas/matchDataApi/matchDataApi.py | 4 ++-- archive/lambdas/matchDataApi/testSumPeriod.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/archive/lambdas/matchDataApi/matchDataApi.py b/archive/lambdas/matchDataApi/matchDataApi.py index 3f4d1f17..65586560 100644 --- a/archive/lambdas/matchDataApi/matchDataApi.py +++ b/archive/lambdas/matchDataApi/matchDataApi.py @@ -67,7 +67,7 @@ def getStationData(statid, dtstr, period=None): statfrag = f"and s.stations like '%{statid}%' " if statid is not None else "" perfrag = periodToSqlFragment(period) if period is not None else "" with connection.cursor() as cursor: - sql = f"SELECT s.orbname from matches s where s.orbname like '{dtstr}%' {statfrag} {perfrag}" + sql = f"SELECT s.orbname from matches s where s.orbname like '{dtstr}%' {statfrag} {perfrag} and status=1" cursor.execute(sql) result = cursor.fetchall() finally: @@ -85,7 +85,7 @@ def getSummaryData(dtstr, period=None): fieldlist = '_localtime,_mjd,_sol,_ID1,_amag,_ra_o,_dc_o,_ra_t,_dc_t,_elng,_elat,_vo,_vi,_vg,_vs,_a,_q,_e,_p,_peri,_node,_incl,'\ '_stream,_mag,_dur,_lng1,_lat1,_H1,_lng2,_lat2,_H2,_LD21,_az1r,_ev1r,_Nts,_Nos,_leap,_tme,_dt,'\ 'dtstamp,orbname,iau,shwrname as name,mass,pi,Q,true_anom,EA,MA,Tj,T,last_peri,jacchia1,Jacchia2,numstats,stations' - expr = f"SELECT {fieldlist} from matches s where s.orbname like '{dtstr}%' {perfrag}" + expr = f"SELECT {fieldlist} from matches s where s.orbname like '{dtstr}%' {perfrag} and status=1" result=[] try: with connection.cursor() as cursor: diff --git a/archive/lambdas/matchDataApi/testSumPeriod.json b/archive/lambdas/matchDataApi/testSumPeriod.json index 81c4b419..25be1b20 100644 --- a/archive/lambdas/matchDataApi/testSumPeriod.json +++ b/archive/lambdas/matchDataApi/testSumPeriod.json @@ -2,7 +2,7 @@ "httpMethod": "GET", "queryStringParameters": { "reqtyp": "summary", - "reqval": "20251213", + "reqval": "20260515", "period": "0-3" } } \ No newline at end of file From eaac45376fb1e2250af643dea2d83c31fcf3819a Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 16:03:05 +0100 Subject: [PATCH 012/150] add traj_id to csv, parquet and mariadb tables --- archive/database/ddl/create_tables.sql | 3 ++- archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py | 1 + archive/ukmon_pylib/converters/toParquet.py | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/archive/database/ddl/create_tables.sql b/archive/database/ddl/create_tables.sql index 2161cfe3..29275ce5 100644 --- a/archive/database/ddl/create_tables.sql +++ b/archive/database/ddl/create_tables.sql @@ -168,7 +168,8 @@ create table matches( numstats tinyint, stations varchar(256), isfb varchar(6), - status tinyint + status tinyint, + traj_id varchar(24) ); alter ignore table matches add unique uniq_orbname (orbname); \ No newline at end of file diff --git a/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py b/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py index 8ca7d7ba..829e1149 100644 --- a/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py +++ b/archive/lambdas/getExtraFilesV2/pythoncode/pickleAnalysis.py @@ -190,6 +190,7 @@ def createUFOOrbitFile(traj, outdir, amag, mass, shower_obj): else: csvf.write(',False') csvf.write(',1') # status flag + csvf.write(f',{traj.traj_id}') csvf.write('\n') return diff --git a/archive/ukmon_pylib/converters/toParquet.py b/archive/ukmon_pylib/converters/toParquet.py index a147501c..2287b221 100644 --- a/archive/ukmon_pylib/converters/toParquet.py +++ b/archive/ukmon_pylib/converters/toParquet.py @@ -16,7 +16,10 @@ if 'match' in fn: # fill in any #NAs in the mjd column df.fillna({'mjd': df._mjd}, inplace=True) + if 'traj_id' in df.columns: + df.fillna({'traj_id':'n/a'}, inplace=True) if 'single' in fn: df = df.drop_duplicates() + df.to_parquet(fn + '.parquet.snap', compression='snappy') From c42acbde64d655ee3e75fa06e836f922adabac53 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 16:32:05 +0100 Subject: [PATCH 013/150] add index on traj_id to matches table --- archive/database/ddl/create_tables.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/archive/database/ddl/create_tables.sql b/archive/database/ddl/create_tables.sql index 29275ce5..655a5076 100644 --- a/archive/database/ddl/create_tables.sql +++ b/archive/database/ddl/create_tables.sql @@ -172,4 +172,5 @@ create table matches( traj_id varchar(24) ); -alter ignore table matches add unique uniq_orbname (orbname); \ No newline at end of file +alter ignore table matches add unique uniq_orbname (orbname); +alter ignore table matches add unique uniq_traj_id (traj_id); \ No newline at end of file From c38148fde63ce5b2aeb1e479b3af29eacab68786 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 17:12:43 +0100 Subject: [PATCH 014/150] simplify and update dataMaintenance to handle mariadb --- .../maintenance/dataMaintenance.py | 76 ++++++++++++------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/archive/ukmon_pylib/maintenance/dataMaintenance.py b/archive/ukmon_pylib/maintenance/dataMaintenance.py index 32418b25..3cd5b0a6 100644 --- a/archive/ukmon_pylib/maintenance/dataMaintenance.py +++ b/archive/ukmon_pylib/maintenance/dataMaintenance.py @@ -14,6 +14,8 @@ import json import operator +import pymysql.cursors + from wmpl.Utils.TrajConversions import datetime2JD from wmpl.Trajectory.CorrelateDB import TrajectoryDatabase @@ -77,8 +79,8 @@ def deleteFromCalcServerByMonth(outfname): currstate = sts['Reservations'][0]['Instances'][0]['State']['Name'] server = sts['Reservations'][0]['Instances'][0]['PrivateIpAddress'] - # server='172.32.16.136' - user='ec2-user' + resp = ssmc.get_parameter(Name=f'{env}_calcuser') + user = resp['Parameter']['Value'] serverkey = os.getenv('SERVERSSHKEY') k = paramiko.RSAKey.from_private_key_file(serverkey) c = paramiko.SSHClient() @@ -97,11 +99,24 @@ def deleteFromCalcServerByMonth(outfname): return +def getSqlLoginDetails(): + # retrieve password and host from SSM. This allows me to manage them from Terraform + ssm = boto3.client('ssm', region_name='eu-west-1') + res = ssm.get_parameter(Name='prod_dbpw', WithDecryption=True) + password = res['Parameter']['Value'] + res = ssm.get_parameter(Name='prod_dbhost') + host = res['Parameter']['Value'] + # should really do these too but they won't change often if at all + user = 'batch' + db = 'ukmon' + return host, user, password, db + + def removeDeletedTraj(csvfile): """ - Remove deleted trajectories from the consolidated match CSV, Parquet and search files + Remove deleted trajectories from the consolidated match CSV, Parquet, search files and SQL database """ - + csvdata = open(csvfile, 'r').readlines() if 'search' in csvfile: ts_end = float(csvdata[-1].split(',')[0]) @@ -109,6 +124,8 @@ def removeDeletedTraj(csvfile): jdt_end = datetime2JD(dt_end) else: jdt_end = float(csvdata[-1].split(',')[3]) + 2400000.5 + host, user, passwd, db = getSqlLoginDetails() + connection = pymysql.connect(host=host, user=user, password=passwd, database=db, cursorclass=pymysql.cursors.DictCursor) jdt_beg = jdt_end - 21 datadir = os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) @@ -117,34 +134,35 @@ def removeDeletedTraj(csvfile): cur = masterdb.dbhandle.execute(f'select traj_file_path from trajectories where status=0 and jdt_ref >= {jdt_beg} and jdt_ref <={jdt_end}') deltrajs = cur.fetchall() - i=0 - # loop over the deleted trajectories, removing the corresponding one from the CSV file. - # Note that there's no need to update the MariaDB database, as it is populated - # from the CSV file *after* it has been purged + i = 0 + j = 0 + # loop over the deleted trajectories, removing the corresponding one from the CSV file and optionally, sql database. offs = 4 if 'search' in csvfile else 131 for traj in deltrajs: - cur = masterdb.dbhandle.execute(f'select jdt_ref, participating_stations from trajectories where traj_file_path="{traj[0]}" and status=0') - thistraj = cur.fetchall() - if len(thistraj) == 1: - fldr = os.path.basename(os.path.dirname(traj[0])) - - # find the rows in the CSV file that correspond to the deleted trajectory - # then go through them and compare obs_ids. The one with the same obs_ids - # is the one we want to remove - match = [tr for tr in csvdata if fldr in tr] - obs_ids = thistraj[0][1] - obs_ids_str = ';'.join(json.loads(obs_ids)) + ';' - for thismtch in match: - if thismtch.split(',')[offs] == obs_ids_str: - print(f'removing {fldr}') - idx = csvdata.index(thismtch) - _ = csvdata.pop(idx) - i += 1 - break - else: - print(f'skipping {traj[0]} as there are {len(thistraj)} active trajs with the same path') + orbname = traj[0].split('/')[4] + match = [tr for tr in csvdata if orbname in tr] + for thismatch in match: + print(f'removing {orbname} from csv file') + idx = csvdata.index(thismatch) + _ = csvdata.pop(idx) + i += 1 + if 'search' not in csvfile: + with connection.cursor() as cursor: + sqlstr = f'update ukmon.matches set status=0 where orbname="{orbname}"' + cursor.execute(sqlstr) + result = cursor.fetchall() + if len(result) > 0: + print(f'removing {orbname} from database') + j += 1 + masterdb.closeTrajDatabase() - print(f'removed {i} trajectories from the text file') + if 'search' in csvfile: + print(f'removed {i} trajectories from the search file') + else: + connection.commit() + connection.close() + print(f'removed {i} trajectories from the text file and {j} from the database') + # save the CSV file again open(csvfile, 'w').writelines(csvdata) From 3fa5331f1518d2fddf849ef8dd392d473aa760cb Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:39:29 +0100 Subject: [PATCH 015/150] push an extra file to the calcserver --- archive/analysis/runDistrib.sh | 1 + archive/ukmon_pylib/maintenance/README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/archive/analysis/runDistrib.sh b/archive/analysis/runDistrib.sh index 1cf23ab3..36b99965 100644 --- a/archive/analysis/runDistrib.sh +++ b/archive/analysis/runDistrib.sh @@ -70,6 +70,7 @@ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/distributeCandidates.py $SERVER rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/pickleAnalyser.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/traj/ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/ShowerAssociation.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/traj/ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/utils/convertSolLon.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/utils/ +rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/maintenance/dataMaintenance.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/maintenance/ # now run the script logger -s -t runDistrib "start distributed processing" diff --git a/archive/ukmon_pylib/maintenance/README.md b/archive/ukmon_pylib/maintenance/README.md index cc6d2bd1..21c92763 100644 --- a/archive/ukmon_pylib/maintenance/README.md +++ b/archive/ukmon_pylib/maintenance/README.md @@ -2,7 +2,7 @@ Routines used to maintain and keep data organized -* dataMaintenance.py - cleardown and space freeing routines +* dataMaintenance.py - routines to maintain data and keep the various databases in line * sortToDateDirs.py - one off tool to convert the WMPL trajectory database to a new layout * getNextBatchStart.py - update the crontab to start the batch at the right time * rerunFailedLambdas.py - rerun any failed lambdas From 52da05fe11362cf33279c09f2ef0242132c21c1b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:40:07 +0100 Subject: [PATCH 016/150] add function to remove reprocessed trajs from the calcserver and s3 --- .../maintenance/dataMaintenance.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/archive/ukmon_pylib/maintenance/dataMaintenance.py b/archive/ukmon_pylib/maintenance/dataMaintenance.py index 3cd5b0a6..4c063488 100644 --- a/archive/ukmon_pylib/maintenance/dataMaintenance.py +++ b/archive/ukmon_pylib/maintenance/dataMaintenance.py @@ -13,6 +13,8 @@ import datetime import json import operator +import shutil +import glob import pymysql.cursors @@ -235,6 +237,69 @@ def removeDeletedTrajCsv(csvloc, targloc): return +def removeRecalcedTrajCSandS3(calcdir, outpath, webpath, rundate=None): + """ + Remove trajectories that have been superceded by a rerun that found more data + NB: this has to be run on the calcserver + + parameters: + calcdir path to local trajectories + outpath s3 location of trajectories + webpath s3 location of web data + + rundate optional date to perform analysis for. If none, then today's date will be used + + """ + s3 = boto3.resource('s3') + if not rundate: + rundate = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%Y%m%d') + + logs = glob.glob(os.path.join(calcdir, logs, f'correlate_rms_{rundate}*.log')) + if len(logs) == 0: + print(f'no logfile for {rundate}') + return + + localdel = 0 + + for logf in logs: + loglines = open(logf).readlines() + removed = [x[x.find('trajectories'):].replace('...','').strip() for x in loglines if 'Removing the previous' in x] + saved = [x[x.find('trajectories'):].strip() for x in loglines if 'saved' in x and 'to ./trajectories' in x] + + # skip any rows where the new and old names are the same + for sav in saved: + if sav in removed: + removed.pop(removed.index(sav)) + + # now run through any remaining removed orbits and make sure they're removed from everywhere + for orbfldr in removed: + # local files first + localpath = os.path.join(calcdir, orbfldr) + if os.path.isdir(localpath): + shutil.rmtree(localpath) + localdel += 1 + + # now shared S3 + sharedkey = f'{outpath}/{orbfldr}' + bucket = sharedkey[5:].split('/')[0] + prefix = sharedkey[len(bucket)+6:] + bucket = s3.Bucket(bucket) + bucket.objects.filter(Prefix=prefix).delete() + + # lastly web S3 + spls = orbfldr.split('/') + sharedkey = f'{webpath}/{spls[1]}/orbits/{spls[2]}/{spls[3]}/{spls[4]}' + bucket = sharedkey[5:].split('/')[0] + prefix = sharedkey[len(bucket)+6:] + bucket = s3.Bucket(bucket) + bucket.objects.filter(Prefix=prefix).delete() + + print(f'removed {localdel} folders from calcserver') + + return + + + if __name__ == '__main__': arg_parser = argparse.ArgumentParser(description="Find and clear down historical raw data.") From a5431e545098ece38dc092e5ad298bcc7155bcd5 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:41:12 +0100 Subject: [PATCH 017/150] add support to cleardown recalced trajectories #474 --- archive/ukmon_pylib/traj/createDistribMatchingSh.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/archive/ukmon_pylib/traj/createDistribMatchingSh.py b/archive/ukmon_pylib/traj/createDistribMatchingSh.py index dfe4624a..e8ca6ed1 100644 --- a/archive/ukmon_pylib/traj/createDistribMatchingSh.py +++ b/archive/ukmon_pylib/traj/createDistribMatchingSh.py @@ -242,6 +242,11 @@ def createDistribMatchingSh(matchstart, matchend, execmatchingsh, istest=False): outf.write('logger -s -t execdistrib distributing candidates and launching containers\n') outf.write(f'time python -m traj.distributeCandidates {rundatestr} ./candidates {istest}\n') + # Remove any superceded trajectories. These are found by parsing the logfile. + # Has to be done here to ensure they're removed from S3 stores early + params = f"'{calcdir}','{outpath}', '{webpath}'" + outf.write(f'python -c "from maintenance.dataMaintenance import removeRecalcedTrajCSandS3;removeRecalcedTrajCSandS3({params})"') + # do this again to fetch todays results outf.write('logger -s -t execdistrib refetch latest trajectories\n') refreshTrajectories(outf, matchstart, matchend, outpath) From 986d6feb319189a9fea03cbdf147827c8653434c Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:50:44 +0100 Subject: [PATCH 018/150] make sure sqlite is also in line --- archive/ukmon_pylib/maintenance/dataMaintenance.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/maintenance/dataMaintenance.py b/archive/ukmon_pylib/maintenance/dataMaintenance.py index 4c063488..4d33c08a 100644 --- a/archive/ukmon_pylib/maintenance/dataMaintenance.py +++ b/archive/ukmon_pylib/maintenance/dataMaintenance.py @@ -15,6 +15,7 @@ import operator import shutil import glob +import sqlite3 import pymysql.cursors @@ -254,6 +255,8 @@ def removeRecalcedTrajCSandS3(calcdir, outpath, webpath, rundate=None): if not rundate: rundate = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%Y%m%d') + dbhandle = sqlite3.connect(os.path.join(calcdir, 'trajectories.db')) + logs = glob.glob(os.path.join(calcdir, logs, f'correlate_rms_{rundate}*.log')) if len(logs) == 0: print(f'no logfile for {rundate}') @@ -279,7 +282,11 @@ def removeRecalcedTrajCSandS3(calcdir, outpath, webpath, rundate=None): shutil.rmtree(localpath) localdel += 1 - # now shared S3 + # make sure orb is marked deleted in sqlite + sqlstr = f'update trajectories set status=0 where traj_file_path like "{orbfldr}%"' + dbhandle.execute(sqlstr) + + # now remove the folder from shared S3 sharedkey = f'{outpath}/{orbfldr}' bucket = sharedkey[5:].split('/')[0] prefix = sharedkey[len(bucket)+6:] @@ -295,6 +302,8 @@ def removeRecalcedTrajCSandS3(calcdir, outpath, webpath, rundate=None): bucket.objects.filter(Prefix=prefix).delete() print(f'removed {localdel} folders from calcserver') + dbhandle.commit() + dbhandle.close() return From fd53b87550e11bd38099783b657c8cfaeadb5df0 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:52:25 +0100 Subject: [PATCH 019/150] missed a newline --- archive/ukmon_pylib/traj/createDistribMatchingSh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/traj/createDistribMatchingSh.py b/archive/ukmon_pylib/traj/createDistribMatchingSh.py index e8ca6ed1..13c3e588 100644 --- a/archive/ukmon_pylib/traj/createDistribMatchingSh.py +++ b/archive/ukmon_pylib/traj/createDistribMatchingSh.py @@ -245,7 +245,7 @@ def createDistribMatchingSh(matchstart, matchend, execmatchingsh, istest=False): # Remove any superceded trajectories. These are found by parsing the logfile. # Has to be done here to ensure they're removed from S3 stores early params = f"'{calcdir}','{outpath}', '{webpath}'" - outf.write(f'python -c "from maintenance.dataMaintenance import removeRecalcedTrajCSandS3;removeRecalcedTrajCSandS3({params})"') + outf.write(f'python -c "from maintenance.dataMaintenance import removeRecalcedTrajCSandS3;removeRecalcedTrajCSandS3({params})"\n') # do this again to fetch todays results outf.write('logger -s -t execdistrib refetch latest trajectories\n') From 8e91d25d7cc2344c9add06ea448df3aba12fb767 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:54:58 +0100 Subject: [PATCH 020/150] missing qnotemarks --- archive/ukmon_pylib/maintenance/dataMaintenance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/maintenance/dataMaintenance.py b/archive/ukmon_pylib/maintenance/dataMaintenance.py index 4d33c08a..cc44c4ff 100644 --- a/archive/ukmon_pylib/maintenance/dataMaintenance.py +++ b/archive/ukmon_pylib/maintenance/dataMaintenance.py @@ -257,7 +257,7 @@ def removeRecalcedTrajCSandS3(calcdir, outpath, webpath, rundate=None): dbhandle = sqlite3.connect(os.path.join(calcdir, 'trajectories.db')) - logs = glob.glob(os.path.join(calcdir, logs, f'correlate_rms_{rundate}*.log')) + logs = glob.glob(os.path.join(calcdir, 'logs', f'correlate_rms_{rundate}*.log')) if len(logs) == 0: print(f'no logfile for {rundate}') return From 224ed29ce2f4cb9b0df15db83b97d7046704d47f Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:57:03 +0100 Subject: [PATCH 021/150] incorrect location of databases --- archive/ukmon_pylib/maintenance/dataMaintenance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/maintenance/dataMaintenance.py b/archive/ukmon_pylib/maintenance/dataMaintenance.py index cc44c4ff..7196cbd1 100644 --- a/archive/ukmon_pylib/maintenance/dataMaintenance.py +++ b/archive/ukmon_pylib/maintenance/dataMaintenance.py @@ -255,7 +255,7 @@ def removeRecalcedTrajCSandS3(calcdir, outpath, webpath, rundate=None): if not rundate: rundate = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%Y%m%d') - dbhandle = sqlite3.connect(os.path.join(calcdir, 'trajectories.db')) + dbhandle = sqlite3.connect(os.path.join(calcdir, 'dbs', 'trajectories.db')) logs = glob.glob(os.path.join(calcdir, 'logs', f'correlate_rms_{rundate}*.log')) if len(logs) == 0: From 24b79347ecc7de239a590bba703fa6b9db66fcf5 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 18:58:27 +0100 Subject: [PATCH 022/150] add some messaging --- archive/ukmon_pylib/maintenance/dataMaintenance.py | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/ukmon_pylib/maintenance/dataMaintenance.py b/archive/ukmon_pylib/maintenance/dataMaintenance.py index 7196cbd1..6273b3ae 100644 --- a/archive/ukmon_pylib/maintenance/dataMaintenance.py +++ b/archive/ukmon_pylib/maintenance/dataMaintenance.py @@ -281,6 +281,7 @@ def removeRecalcedTrajCSandS3(calcdir, outpath, webpath, rundate=None): if os.path.isdir(localpath): shutil.rmtree(localpath) localdel += 1 + print(f'removed {orbfldr}') # make sure orb is marked deleted in sqlite sqlstr = f'update trajectories set status=0 where traj_file_path like "{orbfldr}%"' From b436cad2d896fa320de0af731d87ad82b8c9c1a6 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 17 May 2026 22:18:38 +0100 Subject: [PATCH 023/150] pin maps api to 3.65 to prevent coverage map issues after May 2026 --- archive/website/templates/coverage-maps.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps.html b/archive/website/templates/coverage-maps.html index aedfedc8..ff36f9ce 100644 --- a/archive/website/templates/coverage-maps.html +++ b/archive/website/templates/coverage-maps.html @@ -267,7 +267,7 @@

Station Coverage Maps

} From 0244e8cd7df46f2c16a32c8476365f9be509533b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 11:41:23 +0100 Subject: [PATCH 024/150] handle TERM better on Ubuntu --- archive/server_setup/.bash_aliases | 1 + archive/server_setup/.bash_aliases_calcengine | 11 ++ archive/server_setup/.bashrc | 2 +- archive/server_setup/.bashrc_calcengine | 135 ++++++++++++++++++ archive/utils/stopstartCalcengine.sh | 2 +- 5 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 archive/server_setup/.bash_aliases_calcengine create mode 100644 archive/server_setup/.bashrc_calcengine diff --git a/archive/server_setup/.bash_aliases b/archive/server_setup/.bash_aliases index fa6eb352..20189c72 100644 --- a/archive/server_setup/.bash_aliases +++ b/archive/server_setup/.bash_aliases @@ -5,6 +5,7 @@ alias h='history' alias df='df -h' alias du='du -h' alias ls='ls --color=auto' +alias vi='TERM=xterm vi' # needed to get colours in vi alias data='if [ "$SRC" == "" ] ; then echo select env first; else cd $SRC/data && pwd ; fi' alias logs='if [ "$SRC" == "" ] ; then echo select env first; else cd $SRC/logs && pwd ; fi' diff --git a/archive/server_setup/.bash_aliases_calcengine b/archive/server_setup/.bash_aliases_calcengine new file mode 100644 index 00000000..203415ff --- /dev/null +++ b/archive/server_setup/.bash_aliases_calcengine @@ -0,0 +1,11 @@ +alias h='history' +alias df='df -h' +alias du='du -h' +alias vi='TERM=xterm vi' +alias logs='cd ~/ukmon-shared/matches/RMSCorrelate/logs' +alias dbs='cd ~/ukmon-shared/matches/RMSCorrelate/dbs' +alias cands='cd ~/ukmon-shared/matches/RMSCorrelate/candidates' +alias phase1='cd ~/ukmon-shared/matches/RMSCorrelate/phase1' +alias src='cd ~/src/WesternMeteorPyLib' +alias scripts='cd ~/data/distrib' +alias pylib='cd ~/src/ukmon_pylib' diff --git a/archive/server_setup/.bashrc b/archive/server_setup/.bashrc index b8c939f2..0fa77862 100644 --- a/archive/server_setup/.bashrc +++ b/archive/server_setup/.bashrc @@ -56,7 +56,7 @@ unset __conda_setup # <<< conda initialize <<< # make the function keys work properly in python -export TERM=putty +export TERM=putty+256color # If this is an xterm set the title to user@host:dir case "$TERM" in diff --git a/archive/server_setup/.bashrc_calcengine b/archive/server_setup/.bashrc_calcengine new file mode 100644 index 00000000..93adabd1 --- /dev/null +++ b/archive/server_setup/.bashrc_calcengine @@ -0,0 +1,135 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color|*-256color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +# >>> conda initialize >>> +# !! Contents within this block are managed by 'conda init' !! +__conda_setup="$('/home/ubuntu/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" +if [ $? -eq 0 ]; then + eval "$__conda_setup" +else + if [ -f "/home/ubuntu/miniconda3/etc/profile.d/conda.sh" ]; then + . "/home/ubuntu/miniconda3/etc/profile.d/conda.sh" + else + export PATH="/home/ubuntu/miniconda3/bin:$PATH" + fi +fi +unset __conda_setup +# <<< conda initialize <<< +source /home/ubuntu/venvs/wmpl/bin/activate +export PYTHONPATH=/home/ubuntu/src/WesternMeteorPyLib:/home/ubuntu/src/ukmon_pylib + diff --git a/archive/utils/stopstartCalcengine.sh b/archive/utils/stopstartCalcengine.sh index 366ed507..c66a3b84 100644 --- a/archive/utils/stopstartCalcengine.sh +++ b/archive/utils/stopstartCalcengine.sh @@ -5,4 +5,4 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 -aws ec2 $1-instances --instance-ids $SERVERINSTANCEID --region eu-west-2 +TERM=xterm aws ec2 $1-instances --instance-ids $SERVERINSTANCEID --region eu-west-2 From c1c5e04c66d12c54c75e2b19430a6f58a85321fc Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 11:41:58 +0100 Subject: [PATCH 025/150] handle case when no deleted traj in date range --- archive/utils/cleanupDeletedTrajs.sh | 37 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/archive/utils/cleanupDeletedTrajs.sh b/archive/utils/cleanupDeletedTrajs.sh index 48d1f458..555a5742 100644 --- a/archive/utils/cleanupDeletedTrajs.sh +++ b/archive/utils/cleanupDeletedTrajs.sh @@ -59,23 +59,24 @@ fi logger -s -t cleanupDeletedTrajs "checking consolidated matches" lasttraj=$(sqlite3 $DATADIR/distrib/trajectories.db "select traj_file_path from trajectories where status=0 and jdt_ref > ${jdt_min} order by jdt_ref;" | tail -1) -trajdir=$(dirname $lasttraj) -yr=${trajdir:13:4} -trajpth=$(basename $trajdir) -matchcsv=$DATADIR/matched/matches-full-${yr}.csv -grep $trajpth $matchcsv > /dev/null -if [ $? == 0 ] ; then - python -c "from maintenance.dataMaintenance import removeDeletedTraj;removeDeletedTraj('$matchcsv')" - python -m converters.toParquet $matchcsv - aws s3 sync $DATADIR/matched/ $UKMONSHAREDBUCKET/matches/matched/ --include "*" --exclude "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet - aws s3 sync $DATADIR/matched/ $UKMONSHAREDBUCKET/matches/matchedpq/ --exclude "*" --include "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet - aws s3 sync $DATADIR/matched/ $WEBSITEBUCKET/browse/parquet/ --exclude "*" --include "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet +if [ "$lasttraj" != "" ] ; then + trajdir=$(dirname $lasttraj) + yr=${trajdir:13:4} + trajpth=$(basename $trajdir) + matchcsv=$DATADIR/matched/matches-full-${yr}.csv + grep $trajpth $matchcsv > /dev/null + if [ $? == 0 ] ; then + python -c "from maintenance.dataMaintenance import removeDeletedTraj;removeDeletedTraj('$matchcsv')" + python -m converters.toParquet $matchcsv + aws s3 sync $DATADIR/matched/ $UKMONSHAREDBUCKET/matches/matched/ --include "*" --exclude "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet + aws s3 sync $DATADIR/matched/ $UKMONSHAREDBUCKET/matches/matchedpq/ --exclude "*" --include "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet + aws s3 sync $DATADIR/matched/ $WEBSITEBUCKET/browse/parquet/ --exclude "*" --include "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet - srchcsv=$DATADIR/searchidx/${yr}-allevents.csv - python -c "from maintenance.dataMaintenance import removeDeletedTraj;removeDeletedTraj('$srchcsv')" - aws s3 sync $DATADIR/searchidx/ $WEBSITEBUCKET/search/indexes/ --exclude "*" --include "*allevents.csv" --quiet -fi - -# no need to check the SQL database in mariadb, as it is populated from the CSV file that -# we cleaned up above + srchcsv=$DATADIR/searchidx/${yr}-allevents.csv + python -c "from maintenance.dataMaintenance import removeDeletedTraj;removeDeletedTraj('$srchcsv')" + aws s3 sync $DATADIR/searchidx/ $WEBSITEBUCKET/search/indexes/ --exclude "*" --include "*allevents.csv" --quiet + fi +else + echo "No deleted traj since $startdt" +fi logger -s -t cleanupDeletedTrajs "finished cleanupDeletedTrajs" From 50af4cb6f653b81b68644f1cd87cf5800d9a2e4d Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 13:34:07 +0100 Subject: [PATCH 026/150] make logging more consistent --- archive/analysis/consolidateOutput.sh | 21 ++++++++------- archive/analysis/createSearchable.sh | 4 +-- archive/analysis/findAllMatches.sh | 12 ++++----- archive/analysis/getBadStations.sh | 4 +-- archive/analysis/getLogData.sh | 4 +++ archive/analysis/getRMSSingleData.sh | 9 ++++--- archive/analysis/reportActiveShowers.sh | 10 ++++--- archive/analysis/runDistrib.sh | 26 +++++++++--------- archive/analysis/showerReport.sh | 12 ++++----- archive/analysis/stationReports.sh | 11 +++++--- archive/analysis/updatePlotsAndDetStatus.sh | 14 +++++----- archive/cronjobs/nightlyJob.sh | 5 ++-- archive/utils/README.md | 3 +-- archive/utils/checkAndRollKeys.sh | 7 +++-- archive/utils/cleanupDeletedTrajs.sh | 9 ++++--- archive/utils/getCostMetrics.sh | 29 --------------------- archive/utils/loadBrightnessCsvMDB.sh | 4 +++ archive/utils/loadMatchCsvMDB.sh | 7 ++--- archive/utils/loadSingleCsvMDB.sh | 7 ++--- archive/utils/rerunFTPtoUKMONlambda.sh | 5 +++- archive/utils/rerunGetExtraFiles.sh | 4 +++ archive/website/cameraStatusReport.sh | 4 +-- archive/website/costReport.sh | 8 +++--- archive/website/createFireballPage.sh | 8 +++--- archive/website/createMthlyExtracts.sh | 16 ++++++------ archive/website/createOrbitIndex.sh | 5 ++-- archive/website/createReportIndex.sh | 8 +++--- archive/website/createShwrExtracts.sh | 10 +++---- archive/website/createSummaryTable.sh | 10 +++---- archive/website/publishDailyReport.sh | 4 ++- archive/website/updateCameraDets.sh | 4 +-- archive/website/updateIndexPages.sh | 6 +++-- 32 files changed, 146 insertions(+), 144 deletions(-) delete mode 100644 archive/utils/getCostMetrics.sh diff --git a/archive/analysis/consolidateOutput.sh b/archive/analysis/consolidateOutput.sh index 51aa0418..528fffe5 100644 --- a/archive/analysis/consolidateOutput.sh +++ b/archive/analysis/consolidateOutput.sh @@ -27,19 +27,20 @@ fi cd ${DATADIR} # consolidate UFO and RMS original CSVs. -logger -s -t consolidateOutput "starting" +logger -s -t $(basename $0 .sh) "starting" + # note - copying from production S3 even in dev so we have the latest data aws s3 sync s3://ukmda-shared/consolidated/ ${DATADIR}/consolidated --exclude "temp/*" --quiet aws s3 mv s3://ukmda-shared/consolidated/temp/ ${DATADIR}/consolidated/temp --recursive --quiet -logger -s -t consolidateOutput "Consolidating RMS and UFO CSVs" +logger -s -t $(basename $0 .sh) "Consolidating RMS and UFO CSVs" consdir=${DATADIR}/consolidated/temp mkdir -p ${DATADIR}/single/rawcsvs ls -1 $consdir/*.csv | while read csvf do flen=$(wc -l $csvf | awk '{print $1}') if [ $flen -lt 2 ] ; then - logger -s -t consolidateOutput "skipping empty file $csvf" + logger -s -t $(basename $0 .sh) "skipping empty file $csvf" rm $csvf else bn=$(basename $csvf) @@ -62,14 +63,14 @@ do fi done -logger -s -t consolidateOutput "purging older raw data which is on S3 anyway" +logger -s -t $(basename $0 .sh) "purging older raw data which is on S3 anyway" find ${DATADIR}/single/rawcsvs -mtime +180 -exec rm -f {} \; -logger -s -t consolidateOutput "pushing consolidated information back" +logger -s -t $(basename $0 .sh) "pushing consolidated information back" aws s3 sync ${DATADIR}/consolidated ${UKMONSHAREDBUCKET}/consolidated/ --exclude 'UKMON*' --quiet -logger -s -t consolidateOutput "Getting latest trajectory data" +logger -s -t $(basename $0 .sh) "Getting latest trajectory data" # collect the latest trajectory CSV files # make sure target folders exist @@ -82,11 +83,11 @@ aws s3 sync s3://ukmda-shared/matches/RMSCorrelate/trajectories/${yr}/plots/ $DA aws s3 mv ${UKMONSHAREDBUCKET}/matches/${yr}/fullcsv/ ${DATADIR}/orbits/${yr}/fullcsv --recursive --exclude "*" --include "*.csv" --quiet # get the latest matched data generated by WMPL -logger -s -t consolidateOutput "getting matched detections for $yr" +logger -s -t $(basename $0 .sh) "getting matched detections for $yr" if [ ! -f ${DATADIR}/matched/matches-full-$yr.csv ] ; then cp $SRC/analysis/templates/match_hdr_full.txt ${DATADIR}/matched/matches-full-$yr.csv fi -logger -s -t consolidateOutput "getting new matched detections for today" +logger -s -t $(basename $0 .sh) "getting new matched detections for today" if [ ! -f ${DATADIR}/searchidx/matches-full-$yr-new.csv ] ; then cp $SRC/analysis/templates/match_hdr_full.txt ${DATADIR}/searchidx/matches-full-$yr-new.csv fi @@ -94,7 +95,7 @@ cat ${DATADIR}/orbits/$yr/fullcsv/$yr*.csv >> ${DATADIR}/matched/matches-full-$y cat ${DATADIR}/orbits/$yr/fullcsv/$yr*.csv >> ${DATADIR}/searchidx/matches-full-$yr-new.csv mv ${DATADIR}/orbits/$yr/fullcsv/$yr*.csv ${DATADIR}/orbits/${yr}/fullcsv/processed -logger -s -t consolidateOutput "purging older raw data" +logger -s -t $(basename $0 .sh) "purging older raw data" find ${DATADIR}/orbits/${yr}/fullcsv/processed -mtime +180 -exec rm -f {} \; # and last year, because the data is split across dated folders lyr=$(date -d 'last year' +%Y) @@ -119,4 +120,4 @@ aws s3 sync $DATADIR/matched/ $UKMONSHAREDBUCKET/matches/matchedpq/ --quiet --ex aws s3 sync $DATADIR/matched/ $WEBSITEBUCKET/browse/parquet/ --exclude "*" --include "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet aws s3 sync $DATADIR/single/ $WEBSITEBUCKET/browse/parquet/ --exclude "*" --include "*.snap" --exclude "*.bkp" --exclude "*.gzip" --quiet -logger -s -t consolidateOutput "finished" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/analysis/createSearchable.sh b/archive/analysis/createSearchable.sh index e0e2c26b..f12763f3 100644 --- a/archive/analysis/createSearchable.sh +++ b/archive/analysis/createSearchable.sh @@ -17,7 +17,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t createSearchable "starting" +logger -s -t $(basename $0 .sh) "starting" yr=$1 whichpass=$2 @@ -38,4 +38,4 @@ fi aws s3 sync $DATADIR/searchidx/ $WEBSITEBUCKET/search/indexes/ --exclude "*" --include "*allevents.csv" --quiet -logger -s -t createSearchable "finished" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/analysis/findAllMatches.sh b/archive/analysis/findAllMatches.sh index 59872560..d7a6a41c 100644 --- a/archive/analysis/findAllMatches.sh +++ b/archive/analysis/findAllMatches.sh @@ -23,7 +23,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t findAllMatches "starting" +logger -s -t $(basename $0 .sh) "starting" [ -f $DATADIR/rundate.txt ] && rundate=$(cat $DATADIR/rundate.txt) || rundate=$(date +%Y%m%d) @@ -48,13 +48,13 @@ mkdir -p $SRC/logs/distrib > /dev/null 2>&1 startdt=$(date --date="-$MATCHSTART days" '+%Y%m%d-080000') enddt=$(date --date="-$MATCHEND days" '+%Y%m%d-080000') -logger -s -t findAllMatches "solving for ${startdt} to ${enddt}" -logger -s -t findAllMatches "start runDistrib" +logger -s -t $(basename $0 .sh) "solving for ${startdt} to ${enddt}" +logger -s -t $(basename $0 .sh) "start runDistrib" $SRC/analysis/runDistrib.sh $MATCHSTART $MATCHEND $SRC/utils/cleanupDeletedTrajs.sh -logger -s -t findAllMatches "Solving Run Done" +logger -s -t $(basename $0 .sh) "Solving Run Done" success=$(grep "Total run time:" $SRC/logs/matchJob.log) @@ -68,7 +68,7 @@ python -m maintenance.rerunFailedLambdas cd $here -logger -s -t findAllMatches "start reportOfLatestMatches" +logger -s -t $(basename $0 .sh) "running reportOfLatestMatches" matchlog=${SRC}/logs/matchJob.log python -m reports.reportOfLatestMatches $DATADIR/latest/contdbs $DATADIR/dailyreports $rundate @@ -82,4 +82,4 @@ fi find $SRC/logs -name "matches*" -mtime +7 -exec gzip {} \; find $SRC/logs -name "matches*" -mtime +30 -exec rm -f {} \; -logger -s -t findAllMatches "finished" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/analysis/getBadStations.sh b/archive/analysis/getBadStations.sh index ef03e53c..614845f5 100644 --- a/archive/analysis/getBadStations.sh +++ b/archive/analysis/getBadStations.sh @@ -7,8 +7,8 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t getBadStations "starting" +logger -s -t $(basename $0 .sh) "starting" aws s3 sync $UKMONSHAREDBUCKET/admin $DATADIR/admin --dryrun --quiet python -m reports.reportBadCameras 3 -logger -s -t getBadStations "finished" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/analysis/getLogData.sh b/archive/analysis/getLogData.sh index 9a4c9c92..2a209f59 100644 --- a/archive/analysis/getLogData.sh +++ b/archive/analysis/getLogData.sh @@ -5,6 +5,8 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} +logger -s -t $(basename $0 .sh) "starting" + if [ "$1" != "" ] ; then rundate=$1 logfile=$DATADIR/lastlogs/lastlog-${rundate}.html @@ -98,3 +100,5 @@ aws s3 cp $DATADIR/lastlogs/index.html $WEBSITEBUCKET/reports/lastlogs/ --quiet find $DATADIR/failed -mtime +90 -exec rm -f {} \; find $DATADIR/lastlogs -name "lastlog*" -mtime +90 -exec rm -f {} \; + +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/analysis/getRMSSingleData.sh b/archive/analysis/getRMSSingleData.sh index 0174a815..1e5f7bba 100644 --- a/archive/analysis/getRMSSingleData.sh +++ b/archive/analysis/getRMSSingleData.sh @@ -17,7 +17,8 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t getRMSSingleData "starting" +logger -s -t $(basename $0 .sh) "starting" + indir=$UKMONSHAREDBUCKET/matches/single/new/ outdir=$DATADIR/single/new mkdir -p $outdir/processed > /dev/null 2>&1 @@ -45,7 +46,7 @@ do mv $i $outdir/processed done -logger -s -t getRMSSingleData "convert to parquet" +logger -s -t $(basename $0 .sh) "convert to parquet" if [ -f $mrgfile ] ; then python -m converters.toParquet $mrgfile fi @@ -55,11 +56,11 @@ if [ -f $newsngl ] ; then fi # push to S3 bucket for future use by AWS tools -logger -s -t getRMSSingleData "copy to S3 bucket" +logger -s -t $(basename $0 .sh) "copy to S3 bucket" aws s3 sync $SRC/data/single/ $UKMONSHAREDBUCKET/matches/single/ --exclude "*" --include "*.csv" --exclude "new/*" --exclude "rawcsvs/*" --exclude "used/*" --quiet aws s3 sync $SRC/data/single/ $UKMONSHAREDBUCKET/matches/singlepq/ --exclude "*" --include "*.parquet.snap" --exclude "*new.parquet.snap" --quiet logger -s -t getRMSSingleData "purge processed data" find $outdir/processed -mtime +180 -exec rm -f {} \; -logger -s -t getRMSSingleData "finished" \ No newline at end of file +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/analysis/reportActiveShowers.sh b/archive/analysis/reportActiveShowers.sh index e26e0463..7dc1380e 100644 --- a/archive/analysis/reportActiveShowers.sh +++ b/archive/analysis/reportActiveShowers.sh @@ -17,7 +17,8 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t reportActiveShowers "starting" + +logger -s -t $(basename $0 .sh) "starting" if [ $# -eq 0 ]; then yr=$(date +%Y) @@ -27,16 +28,17 @@ else rundt=${1}$(date +%m%d) fi -logger -s -t reportActiveShowers "report on active showers" +logger -s -t $(basename $0 .sh) "start reportActiveShowers" python -m reports.reportActiveShowers -m python -c "from utils.getActiveShowers import getActiveShowers;getActiveShowers('$rundt', inclMinor=True)" | while read shwr do aws s3 sync $DATADIR/reports/${yr}/$shwr $WEBSITEBUCKET/reports/${yr}/${shwr} --quiet done -logger -s -t reportActiveShowers "updating annual index" +logger -s -t $(basename $0 .sh) "updating annual index" ${SRC}/website/createReportIndex.sh ${yr} python -m analysis.summaryAnalysis ${yr} aws s3 sync $DATADIR/reports/${yr}/showers $WEBSITEBUCKET/reports/${yr}/showers --quiet -logger -s -t reportActiveShowers "finished" \ No newline at end of file + +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/analysis/runDistrib.sh b/archive/analysis/runDistrib.sh index 36b99965..ca300038 100644 --- a/archive/analysis/runDistrib.sh +++ b/archive/analysis/runDistrib.sh @@ -20,7 +20,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" # load the configuration source $here/../config.ini >/dev/null 2>&1 -logger -s -t runDistrib "starting runDistrib" +logger -s -t $(basename $0 .sh) "starting" if [ $# -gt 0 ] ; then if [ "$1" != "" ] ; then @@ -35,9 +35,9 @@ fi begdate=$(date --date="-$MATCHSTART days" '+%Y%m%d') rundate=$(date --date="-$MATCHEND days" '+%Y%m%d') -logger -s -t runDistrib "running phase 1 for dates ${begdate} to ${rundate}" +logger -s -t $(basename $0 .sh) "running phase 1 for dates ${begdate} to ${rundate}" -logger -s -t runDistrib "start correlation server" +logger -s -t $(basename $0 .sh) "start correlation server" aws ec2 start-instances --instance-ids $SERVERINSTANCEID stat=$(aws ec2 describe-instances --instance-ids $SERVERINSTANCEID --query Reservations[*].Instances[*].State.Code --output text) while [ "$stat" -ne 16 ]; do @@ -47,14 +47,14 @@ done conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t runDistrib "creating the run script" +logger -s -t $(basename $0 .sh) "creating the run script" execdist=execdistrib.sh execMatchingsh=/tmp/$execdist python -m traj.createDistribMatchingSh $MATCHSTART $MATCHEND $execMatchingsh $TESTMODE chmod +x $execMatchingsh -logger -s -t runDistrib "deploy the script to the server $CALCSERVERIP and run it" +logger -s -t $(basename $0 .sh) "deploy the script to the server $CALCSERVERIP and run it" scp -i $SERVERSSHKEY $execMatchingsh $SERVERUSERID@$CALCSERVERIP:data/distrib/$execdist while [ $? -ne 0 ] ; do @@ -73,7 +73,7 @@ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/utils/convertSolLon.py $SERVERUSERID rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/maintenance/dataMaintenance.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/maintenance/ # now run the script -logger -s -t runDistrib "start distributed processing" +logger -s -t $(basename $0 .sh) "start distributed processing" ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "data/distrib/$execdist" rsync -avz -e "ssh -i $SERVERSSHKEY" $SERVERUSERID@$CALCSERVERIP:ukmon-shared/matches/RMSCorrelate/candidates/processed/*.tgz $DATADIR/distrib/candidates @@ -81,7 +81,7 @@ rsync -avz -e "ssh -i $SERVERSSHKEY" $SERVERUSERID@$CALCSERVERIP:ukmon-shared/ma rsync -avz -e "ssh -i $SERVERSSHKEY" $SERVERUSERID@$CALCSERVERIP:ukmon-shared/matches/RMSCorrelate/logs/*${rundate}*.log $SRC/logs/distrib/ ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "find ukmon-shared/matches/RMSCorrelate/logs -name '*.log' -mtime +30 -exec rm -f {} \;" -logger -s -t runDistrib "job run, stop the server again" +logger -s -t $(basename $0 .sh) "job run, stop the server again" aws ec2 stop-instances --instance-ids $SERVERINSTANCEID logger -s -t runDistrib "monitoring and waiting for completion" @@ -91,7 +91,7 @@ python -c "from traj.distributeCandidates import monitorProgress as mp; mp('${ru mkdir -p $DATADIR/distrib cd $DATADIR/distrib -logger -s -t runDistrib "restarting server to consolidate results" +logger -s -t $(basename $0 .sh) "restarting server to consolidate results" stat=$(aws ec2 describe-instances --instance-ids $SERVERINSTANCEID --query Reservations[*].Instances[*].State.Code --output text) if [ $stat -eq 80 ]; then @@ -110,20 +110,20 @@ execConsolsh=/tmp/$execcons python -c "from traj.createDistribMatchingSh import createExecConsolSh;createExecConsolSh($MATCHSTART, $MATCHEND, '$execConsolsh', '$TESTMODE')" chmod +x $execConsolsh -logger -s -t runDistrib "running consolidation" +logger -s -t $(basename $0 .sh) "running consolidation" scp -i $SERVERSSHKEY $execConsolsh $SERVERUSERID@$CALCSERVERIP:data/distrib/$execcons ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "data/distrib/$execcons" -logger -s -t runDistrib "finished consolidation, copying databases" +logger -s -t $(basename $0 .sh) "finished consolidation, copying databases" rsync -avz -e "ssh -i $SERVERSSHKEY" $SERVERUSERID@$CALCSERVERIP:ukmon-shared/matches/RMSCorrelate/dbs/*.db $DATADIR/distrib ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "find /tmp -maxdepth 1 -name "*.pickle" -mtime +7 -exec rm -f {} \;" -logger -s -t runDistrib "stopping calcserver again" +logger -s -t $(basename $0 .sh) "stopping calcserver again" aws ec2 stop-instances --instance-ids $SERVERINSTANCEID -logger -s -t runDistrib "copying data to batch server and tidying up" +logger -s -t $(basename $0 .sh) "copying data to batch server and tidying up" # grab a copy of the indvidual container dbs so we can get a list of new solutions rm -Rf $DATADIR/latest/contdbs/ @@ -148,4 +148,4 @@ find $DATADIR/distrib/containers/ -name "cont*.tgz" -mtime +30 -exec rm -f {} \; find $DATADIR/distrib/ -maxdepth 1 -name "20*.tgz" -mtime +30 -exec rm -f {} \; rm -f $DATADIR/distrib/${rundate}.pickle -logger -s -t "finished runDistrib" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/analysis/showerReport.sh b/archive/analysis/showerReport.sh index 8cda6844..206dd1e7 100644 --- a/archive/analysis/showerReport.sh +++ b/archive/analysis/showerReport.sh @@ -21,7 +21,7 @@ conda activate $HOME/miniconda3/envs/${WMPL_ENV} if [ $# -lt 2 ] ; then echo Usage: showerReport.sh GEM 2017 else - logger -s -t showerReport "starting" + logger -s -t $(basename $0 .sh) "starting" shwr=$1 dt=$2 yr=${dt:0:4} @@ -51,21 +51,21 @@ else cd $DATADIR/$outdir - logger -s -t showerReport "copying files to website" + logger -s -t $(basename $0 .sh) "copying files to website" aws s3 sync $DATADIR/$outdir $WEBSITEBUCKET/$outdir --quiet - logger -s -t showerReport "all done" + logger -s -t $(basename $0 .sh) "all done" if [ -f $DATADIR/reports/${yr}/reportindex.js ] ; then grep "$yr/$shwr" $DATADIR/reports/${yr}/reportindex.js > /dev/null if [ $? -eq 1 ] ; then - logger -s -t showerReport "updating annual index" + logger -s -t $(basename $0 .sh) "updating annual index" ${SRC}/website/createReportIndex.sh ${yr} fi else - logger -s -t showerReport "updating annual index" + logger -s -t $(basename $0 .sh) "updating annual index" ${SRC}/website/createReportIndex.sh ${yr} fi - logger -s -t showerReport "finished" + logger -s -t $(basename $0 .sh) "finished" fi diff --git a/archive/analysis/stationReports.sh b/archive/analysis/stationReports.sh index 974e5021..d9b63058 100644 --- a/archive/analysis/stationReports.sh +++ b/archive/analysis/stationReports.sh @@ -19,24 +19,27 @@ source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} $SRC/utils/clearCaches.sh +logger -s -t $(basename $0 .sh) "starting" + if [ $# -eq 0 ]; then ym=$(date +%Y%m) else ym=$1 fi yr=${ym:0:4} + if [ "$2" != "" ] ; then loc=$2 - logger -s -t stationReports "running station reports for $ym for $loc" + logger -s -t $(basename $0 .sh) "running station reports for $ym for $loc" else - logger -s -t stationReports "running station reports for $ym for all stations" + logger -s -t $(basename $0 .sh) "running station reports for $ym for all stations" fi python -m analysis.stationAnalysis $ym $loc python -m analysis.stationAnalysis $yr $loc aws s3 sync $DATADIR/reports/$yr/stations/ $WEBSITEBUCKET/reports/$yr/stations/ --quiet -logger -s -t stationReports "station reports done creating index" +logger -s -t $(basename $0 .sh) "station reports done creating index" mkdir -p $DATADIR/reports/$yr/stations > /dev/null 2>&1 cd $DATADIR/reports/$yr/stations @@ -69,5 +72,5 @@ cp $TEMPLATES/statreportindex.html index.html aws s3 cp $DATADIR/reports/$yr/stations/index.html $WEBSITEBUCKET/reports/$yr/stations/ --quiet aws s3 cp $DATADIR/reports/$yr/stations/reportindex.js $WEBSITEBUCKET/reports/$yr/stations/ --quiet -logger -s -t stationReports "finished" +logger -s -t $(basename $0 .sh) "finished" $SRC/utils/clearCaches.sh diff --git a/archive/analysis/updatePlotsAndDetStatus.sh b/archive/analysis/updatePlotsAndDetStatus.sh index 1ef92a48..f611bbf7 100644 --- a/archive/analysis/updatePlotsAndDetStatus.sh +++ b/archive/analysis/updatePlotsAndDetStatus.sh @@ -17,7 +17,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" # load the configuration source $here/../config.ini >/dev/null 2>&1 -logger -s -t updatePlotsAndDetStatus "starting updatePlotsAndDetStatus" +logger -s -t $(basename $0 .sh) "starting" if [ $# -gt 0 ] ; then if [ "$1" != "" ] ; then @@ -32,8 +32,8 @@ fi begdate=$(date --date="-$MATCHSTART days" '+%Y%m%d') rundate=$(date --date="-$MATCHEND days" '+%Y%m%d') -logger -s -t updatePlotsAndDetStatus "updating plots etc for dates ${begdate} to ${rundate}" -logger -s -t updatePlotsAndDetStatus "start correlation server" +logger -s -t $(basename $0 .sh) "updating plots etc for dates ${begdate} to ${rundate}" +logger -s -t $(basename $0 .sh) "start correlation server" stat=$(aws ec2 describe-instances --instance-ids $SERVERINSTANCEID --query Reservations[*].Instances[*].State.Code --output text) if [ $stat -eq 80 ]; then @@ -46,7 +46,7 @@ done conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t updatePlotsAndDetStatus "creating the run script" +logger -s -t $(basename $0 .sh) "creating the run script" execrerun=execreplot.sh execrerunsh=/tmp/$execrerun python -c "from traj.createDistribMatchingSh import createExecReplotSh;createExecReplotSh($MATCHSTART, $MATCHEND, '$execrerunsh', '$TESTMODE')" @@ -66,11 +66,11 @@ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/pickleAnalyser.py $SERVERUSERI # now run the script ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "data/distrib/$execrerun" -logger -s -t updatePlotsAndDetStatus "job run, stop the server again" +logger -s -t $(basename $0 .sh) "job run, stop the server again" aws ec2 stop-instances --instance-ids $SERVERINSTANCEID -logger -s -t updatePlotsAndDetStatus "get a list of uncalibrated data" +logger -s -t $(basename $0 .sh) "get a list of uncalibrated data" aws s3 sync $UKMONSHAREDBUCKET/matches/consumed/ $DATADIR/single/used/ --exclude "*" --include "*.txt" --quiet rundate=$(cat $DATADIR/rundate.txt) @@ -80,4 +80,4 @@ python -c "from utils.getUncalImages import getUncalibratedImageList;getUncalibr dailyrep=$(ls -1tr $DATADIR/dailyreports/20* | tail -1) $SRC/website/updateIndexPages.sh $dailyrep -logger -s -t updatePlotsAndDetStatus "finished updatePlotsAndDetStatus" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/cronjobs/nightlyJob.sh b/archive/cronjobs/nightlyJob.sh index 5d63a02a..1ea3488c 100644 --- a/archive/cronjobs/nightlyJob.sh +++ b/archive/cronjobs/nightlyJob.sh @@ -7,7 +7,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t nightlyJob "start nightlyJob" +logger -s -t $(basename $0 .sh) "starting" # dates to process for rundate=$(date +%Y%m%d) @@ -54,7 +54,6 @@ if [ "$(find $SRC/logs -name $matchlog -mmin +1380 -ls)" != "" ] ; then mv -f $SRC/logs/$matchlog $SRC/logs/$matchlog-$suff fi -logger -s -t nightlyJob "start findAllMatches" # Run the match process - run this only once as it scoops up all unprocessed data ${SRC}/analysis/findAllMatches.sh > ${SRC}/logs/${matchlog} 2>&1 @@ -142,7 +141,7 @@ $SRC/analysis/updatePlotsAndDetStatus.sh # push the API data dictionary to the website for end-user use aws s3 sync $SRC/share/ s3://ukmda-website/browse --exclude "*" --include "datadictionary.xlsx" --quiet -logger -s -t nightlyJog "finished nightlyJob" +logger -s -t $(basename $0 .sh) "finished" # grab the logs for the website - run this last to capture the above Finished message $SRC/analysis/getLogData.sh diff --git a/archive/utils/README.md b/archive/utils/README.md index d1317bbe..545c0d1a 100644 --- a/archive/utils/README.md +++ b/archive/utils/README.md @@ -4,7 +4,6 @@ This folder contains some utility functions useful for managing the environment. ## Used by the Batch * cleanupDeletedTrajs.sh - checks for and removes any logically-deleted trajectories eg duplicates -* getCostmetrics.sh - extract costs data from AWS and push to the website * loadMatchCsvMDB.sh - loads the match data into MariaDB * loadSingleCsvMDB.sh - loads the single-station data into MariaDB * loadBrightCsvMDB.sh - loads brightness data into MariaDB @@ -35,4 +34,4 @@ This folder contains some utility functions useful for managing the environment. * getGmnData.sh - pulls GMN datasets from the GMN server ## Copyright -All code Copyright (C) 2018-2023 Mark McIntyre +All code Copyright (C) 2018- Mark McIntyre diff --git a/archive/utils/checkAndRollKeys.sh b/archive/utils/checkAndRollKeys.sh index 457f9aed..dc1e46cc 100644 --- a/archive/utils/checkAndRollKeys.sh +++ b/archive/utils/checkAndRollKeys.sh @@ -8,6 +8,9 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -export AWS_PROFILE=ukmonshared +logger -s -t $(basename $0 .sh) "starting" + python -m maintenance.getUserAndKeyInfo autoroll -export AWS_PROFILE= + + +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/utils/cleanupDeletedTrajs.sh b/archive/utils/cleanupDeletedTrajs.sh index 555a5742..be018ff8 100644 --- a/archive/utils/cleanupDeletedTrajs.sh +++ b/archive/utils/cleanupDeletedTrajs.sh @@ -10,11 +10,12 @@ source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} cd ${DATADIR}/distrib +logger -s -t $(basename $0 .sh) "starting" startdt=$(date --date="-$MATCHSTART days" '+%Y%m%d-080000') jdt_min=$(python -c "from wmpl.Utils.TrajConversions import datetime2JD;import datetime;print(datetime2JD(datetime.datetime.strptime('$startdt', '%Y%m%d-%H%M%S')))") -logger -s -t cleanupDeletedTrajs "starting: checking main storage and website" +logger -s -t $(basename $0 .sh) "checking main storage and website" sqlite3 $DATADIR/distrib/trajectories.db "select traj_file_path from trajectories where status=0 and jdt_ref > ${jdt_min} order by jdt_ref;" | while read traj ; do # check if there are two trajectories with the same folder - we don't want to delete the active one @@ -42,7 +43,7 @@ sqlite3 $DATADIR/distrib/trajectories.db "select traj_file_path from trajectorie fi done -logger -s -t cleanupDeletedTrajs "checking raw fullcsv data files" +logger -s -t $(basename $0 .sh) "checking raw fullcsv data files" yr=${startdt:0:4} csvloc=matches/${yr}/fullcsv newloc=matches/duplicates/csvs @@ -57,7 +58,7 @@ if [ $newyr != $yr ] ; then fi -logger -s -t cleanupDeletedTrajs "checking consolidated matches" +logger -s -t $(basename $0 .sh) "checking consolidated matches" lasttraj=$(sqlite3 $DATADIR/distrib/trajectories.db "select traj_file_path from trajectories where status=0 and jdt_ref > ${jdt_min} order by jdt_ref;" | tail -1) if [ "$lasttraj" != "" ] ; then trajdir=$(dirname $lasttraj) @@ -79,4 +80,4 @@ if [ "$lasttraj" != "" ] ; then else echo "No deleted traj since $startdt" fi -logger -s -t cleanupDeletedTrajs "finished cleanupDeletedTrajs" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/utils/getCostMetrics.sh b/archive/utils/getCostMetrics.sh deleted file mode 100644 index 99e7fc8a..00000000 --- a/archive/utils/getCostMetrics.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# Copyright (C) 2018-2023 Mark McIntyre -# -# script to get AWS cost metrics for ukmon tagged assets -# -here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" -source $here/../config.ini >/dev/null 2>&1 -conda activate $HOME/miniconda3/envs/${WMPL_ENV} - -if [ $# -lt 1 ] ; then - thismth=`date '+%m'` -else - thismth=$1 -fi - -export AWS_DEFAULT_REGION=eu-west-1 - -cd $DATADIR/costs - -export AWS_PROFILE=ukmonshared -python $PYLIB/metrics/costMetrics.py . eu-west-1 $thismth - -export AWS_PROFILE=Mark -python $PYLIB/metrics/costMetrics.py . eu-west-1 $thismth - -#export AWS_PROFILE=realukms -#python $PYLIB/metrics/costMetrics.py . eu-west-1 $thismth - -export AWS_PROFILE= diff --git a/archive/utils/loadBrightnessCsvMDB.sh b/archive/utils/loadBrightnessCsvMDB.sh index b38b95c3..86d144d9 100644 --- a/archive/utils/loadBrightnessCsvMDB.sh +++ b/archive/utils/loadBrightnessCsvMDB.sh @@ -4,6 +4,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} +logger -s -t $(basename $0 .sh) "starting" cd $here if [ $# -lt 1 ] ; then rundt=$(date -d "yesterday" +%Y%m%d) @@ -11,6 +12,7 @@ else rundt=$1 fi +logger -s -t $(basename $0 .sh) "finished" cd $DATADIR/brightness passwd=$(aws ssm get-parameters --names prod_dbpw --with-decryption --region eu-west-1 | jq .Parameters[0].Value| sed 's/"//g') @@ -21,3 +23,5 @@ load data local infile './CaptureNight_${rundt}.csv' into table brightness fields terminated by ','; select count(*) from ukmon.brightness; EOD + +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/utils/loadMatchCsvMDB.sh b/archive/utils/loadMatchCsvMDB.sh index dc8d899c..33b5b004 100644 --- a/archive/utils/loadMatchCsvMDB.sh +++ b/archive/utils/loadMatchCsvMDB.sh @@ -5,6 +5,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 +logger -s -t $(basename $0 .sh) "starting" yr=$1 if [ "$yr" == "" ] ; then yr=$(date +%Y) @@ -14,8 +15,8 @@ cd ${DATADIR} csvname=$DATADIR/matched/matches-full-${yr}.csv if [ ! -f $csvname ] ; then echo "$csvname not found" ; exit ; fi -echo "loading $csvname into mariadb" -logger -s -t loadSQL "starting" +logger -s -t $(basename $0 .sh) "loading $csvname into mariadb" + user=batch passwd=$(aws ssm get-parameters --names prod_dbpw --with-decryption --region eu-west-1 | jq .Parameters[0].Value | sed 's/"//g') @@ -31,4 +32,4 @@ commit; select count(*) from ukmon.matches; EOD -logger -s -t loadSQL "done" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/utils/loadSingleCsvMDB.sh b/archive/utils/loadSingleCsvMDB.sh index 6d7b7b02..932f4362 100644 --- a/archive/utils/loadSingleCsvMDB.sh +++ b/archive/utils/loadSingleCsvMDB.sh @@ -5,6 +5,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 +logger -s -t $(basename $0 .sh) "starting" yr=$1 if [ "$yr" == "" ] ; then yr=$(date +%Y) @@ -14,8 +15,8 @@ cd ${DATADIR} csvname=$DATADIR/single/singles-${yr}.csv if [ ! -f $csvname ] ; then echo "$csvname not found" ; exit ; fi -echo "loading $csvname into mariadb" -logger -s -t loadSQL "starting" +logger -s -t $(basename $0 .sh) "loading $csvname into mariadb" + user=batch # leading space to prevent being inserted into environment passwd=$(aws ssm get-parameters --names prod_dbpw --with-decryption --region eu-west-1 | jq .Parameters[0].Value | sed 's/"//g') @@ -30,4 +31,4 @@ IGNORE 1 ROWS; select count(*) from ukmon.singles; EOD -logger -s -t loadSQL "done" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/utils/rerunFTPtoUKMONlambda.sh b/archive/utils/rerunFTPtoUKMONlambda.sh index 38d6b1f6..679a550e 100644 --- a/archive/utils/rerunFTPtoUKMONlambda.sh +++ b/archive/utils/rerunFTPtoUKMONlambda.sh @@ -3,6 +3,7 @@ # reads from $DATADIR/single/new/processed to find list of files +logger -s -t $(basename $0 .sh) "starting" dt=$1 if [ "$dt" == "" ] ; then echo "need date" ; exit ; fi if [ -f /tmp/ftp2ukmon.txt ] ; then rm /tmp/ftp2ukmon.txt ; fi @@ -24,4 +25,6 @@ do cat $SRC/utils/cftpd_templ.json | sed "s|KEYGOESHERE|${fullname}|g" > ./tmp.json aws lambda invoke --function-name ftpToUkmon --log-type Tail --payload file://./tmp.json --region eu-west-2 --cli-binary-format raw-in-base64-out res.log done -rm ./tmp.json \ No newline at end of file +rm ./tmp.json + +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/utils/rerunGetExtraFiles.sh b/archive/utils/rerunGetExtraFiles.sh index f802e7ca..42c7a7cc 100644 --- a/archive/utils/rerunGetExtraFiles.sh +++ b/archive/utils/rerunGetExtraFiles.sh @@ -6,6 +6,8 @@ source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} cd $here +logger -s -t $(basename $0 .sh) "starting" + fn=$DATADIR/dailyreports/latest.txt profile=ukmonshared bucket=ukmda-shared @@ -24,3 +26,5 @@ do echo $orbn $bucket $profile aws lambda invoke --profile $profile --function-name getExtraOrbitFilesV2 --invocation-type Event --log-type Tail --payload file://./tmp.json --region eu-west-2 --cli-binary-format raw-in-base64-out res.log done + +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/website/cameraStatusReport.sh b/archive/website/cameraStatusReport.sh index d76dc602..dc1bc47e 100644 --- a/archive/website/cameraStatusReport.sh +++ b/archive/website/cameraStatusReport.sh @@ -25,7 +25,7 @@ rundate=$(date +%Y%m%d) conda activate $HOME/miniconda3/envs/${WMPL_ENV} export PYTHONPATH=$PYLIB -logger -s -t cameraStatusReport "starting" +logger -s -t $(basename $0 .sh) "start" echo TEMPORARY HACK REMOVE CODE PERTAINING TO OLD SERVER platform=$(grep "^NAME" /etc/os-release | awk -F'"' '{print $2}') @@ -68,4 +68,4 @@ python -m reports.cameraStatusReport aws s3 cp $DATADIR/reports/statrep.html $WEBSITEBUCKET/reports/ --quiet aws s3 cp $DATADIR/reports/camrep.js $WEBSITEBUCKET/reports/ --quiet -logger -s -t cameraStatusReport "finished" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/website/costReport.sh b/archive/website/costReport.sh index 1ad8efa0..9a6fa322 100644 --- a/archive/website/costReport.sh +++ b/archive/website/costReport.sh @@ -21,13 +21,13 @@ source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} export PYTHONPATH=$PYLIB -logger -s -t costReport "starting" +logger -s -t $(basename $0 .sh) "starting" numdays=90 if [ $# -gt 1 ] ; then numdays = $1 ; fi mkdir -p $DATADIR/costs > /dev/null -logger -s -t costReport "getting data for $numdays for $AWS_PROFILE" +logger -s -t $(basename $0 .sh) "getting data for $numdays" python -m metrics.costMetrics $DATADIR/costs eu-west-2 $numdays tod=$(date +%d) @@ -71,9 +71,9 @@ for fr in $finreps ; do done echo "var outer_div = document.getElementById(\"docindex\"); outer_div.appendChild(table); })" >> $frjs -logger -s -t costReport "publishing data" +logger -s -t $(basename $0 .sh) "publishing data" aws s3 sync $DATADIR/costs/ $WEBSITEBUCKET/docs/financial/raw/ --exclude "*" --include "costs-18*.csv" --quiet aws s3 cp $costfile $WEBSITEBUCKET/reports/ --quiet aws s3 cp $DATADIR/$imgfile3 $WEBSITEBUCKET/reports/ --quiet aws s3 cp $frjs $WEBSITEBUCKET/docs/ --quiet -logger -s -t costReport "done" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/website/createFireballPage.sh b/archive/website/createFireballPage.sh index 396aeb65..fe7f3513 100644 --- a/archive/website/createFireballPage.sh +++ b/archive/website/createFireballPage.sh @@ -17,7 +17,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 -logger -s -t createFireballPage "starting" +logger -s -t $(basename $0 .sh) "starting" $SRC/utils/clearCaches.sh if [ $# -eq 0 ]; then @@ -26,7 +26,7 @@ else yr=$1 fi -logger -s -t createFireballPage "creating fireball page for $yr" +logger -s -t $(basename $0 .sh) "creating fireball page for $yr" mkdir -p $DATADIR/reports/$yr/fireballs > /dev/null 2>&1 cd $DATADIR/reports/$yr/fireballs @@ -96,8 +96,8 @@ echo "});});" >> reportindex.js cp $TEMPLATES/fbreportindex.html index.html -logger -s -t createFireballPage "copy to website" +logger -s -t $(basename $0 .sh) "copy to website" aws s3 sync $DATADIR/reports/$yr/fireballs/ $WEBSITEBUCKET/reports/$yr/fireballs/ --quiet -logger -s -t createFireballPage "finished" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/website/createMthlyExtracts.sh b/archive/website/createMthlyExtracts.sh index f5894718..1c96b338 100644 --- a/archive/website/createMthlyExtracts.sh +++ b/archive/website/createMthlyExtracts.sh @@ -17,7 +17,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t createMthlyExtracts "starting" +logger -s -t $(basename $0 .sh) "starting" if [ $# -gt 0 ] ; then ymd=$1 @@ -28,10 +28,10 @@ else mth=$(date +%m) fi -logger -s -t createMthlyExtracts "gathering annual data" +logger -s -t $(basename $0 .sh) "gathering annual data" cd $DATADIR/matched -logger -s -t createMthlyExtracts "creating extracts" +logger -s -t $(basename $0 .sh) "creating extracts" # sync the website with the S3 bucket so the annual data is all available # Essential as we're using the content of the website to build the pages @@ -45,7 +45,7 @@ python -m reports.extractors $yr $mth # Essential as we're using the content of the website to build the pages aws s3 sync $DATADIR/browse/monthly/ $WEBSITEBUCKET/browse/monthly/ --quiet -logger -s -t createMthlyExtracts "done gathering data, creating monthly table" +logger -s -t $(basename $0 .sh) "done gathering data, creating monthly table" idxfile=$DATADIR/browse/monthly/browselist.js echo "\$(function() {" > $idxfile @@ -101,10 +101,10 @@ echo "var outer_div = document.getElementById(\"browselist\");" >> $idxfile echo "outer_div.appendChild(table);" >> $idxfile echo "})" >> $idxfile -logger -s -t createMthlyExtracts "js table created, copying to website" +logger -s -t $(basename $0 .sh) "js table created, copying to website" aws s3 sync $DATADIR/browse/monthly/ $WEBSITEBUCKET/browse/monthly/ --quiet -logger -s -t createMthlyExtracts "creating annual table" +logger -s -t $(basename $0 .sh) "creating annual table" idxfile=$DATADIR/browse/annual/browselist.js yr=$(date +%Y) # get a list of files on the website @@ -152,7 +152,7 @@ echo "var outer_div = document.getElementById(\"browselist\");" >> $idxfile echo "outer_div.appendChild(table);" >> $idxfile echo "})" >> $idxfile -logger -s -t createMthlyExtracts "annual js table created, copying to website" +logger -s -t $(basename $0 .sh) "annual js table created, copying to website" aws s3 sync $DATADIR/browse/annual/ $WEBSITEBUCKET/browse/annual/ --quiet -logger -s -t createMthlyExtracts "finished" \ No newline at end of file +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/website/createOrbitIndex.sh b/archive/website/createOrbitIndex.sh index 3b05e1e8..50ad9ab1 100644 --- a/archive/website/createOrbitIndex.sh +++ b/archive/website/createOrbitIndex.sh @@ -20,6 +20,7 @@ ym=$1 yr=${ym:0:4} mth=${ym:4:2} dy=${ym:6:2} +logger -s -t $(basename $0 .sh) "finished" logger -s -t createOrbitIndex "creating orbit index page for $yr $mth $dy" @@ -125,8 +126,8 @@ fi cat $TEMPLATES/footer.html >> $idxfile -logger -s -t createOrbitIndex "copying to website" +logger -s -t $(basename $0 .sh) "copying to website" aws s3 cp $idxfile $targ/index.html --quiet rm -f $idxfile -logger -s -t createOrbitIndex "finished" \ No newline at end of file +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/website/createReportIndex.sh b/archive/website/createReportIndex.sh index f758ae1d..3be14928 100644 --- a/archive/website/createReportIndex.sh +++ b/archive/website/createReportIndex.sh @@ -16,7 +16,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t createReportIndex "starting" +logger -s -t $(basename $0 .sh) "starting" if [ $# -lt 1 ] ; then curryr=$(date +%Y) fldr=. @@ -49,7 +49,7 @@ echo "cell.innerHTML = \"Fireball echo "var cell = row.insertCell(4);" >> $repidx echo "cell.innerHTML = \"Stations\";" >> $repidx -logger -s -t createReportIndex "creating shower statistics report" +logger -s -t $(basename $0 .sh) "creating shower statistics report" python -m analysis.summaryAnalysis $curryr echo "var row = table.insertRow(-1);" >> $repidx echo "var cell = row.insertCell(0);" >> $repidx @@ -102,7 +102,7 @@ echo "var outer_div = document.getElementById(\"prevyrs\");" >> $previdx echo "outer_div.appendChild(table);" >> $previdx echo "})" >> $previdx -logger -s -t createReportIndex "done, sending to website" +logger -s -t $(basename $0 .sh) "done, sending to website" if [ "$prefix" == "." ] ; then aws s3 cp $SRC/website/templates/reportindex.html $WEBSITEBUCKET/reports/index.html --quiet aws s3 cp $repidx $WEBSITEBUCKET/reports/ --quiet @@ -123,4 +123,4 @@ else fi fi aws s3 sync ${DATADIR}/reports/$curryr/showers $WEBSITEBUCKET/reports/$curryr/showers --quiet -logger -s -t createReportIndex "finished" \ No newline at end of file +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/website/createShwrExtracts.sh b/archive/website/createShwrExtracts.sh index d90f0463..59f0ee37 100644 --- a/archive/website/createShwrExtracts.sh +++ b/archive/website/createShwrExtracts.sh @@ -24,7 +24,7 @@ conda activate $HOME/miniconda3/envs/${WMPL_ENV} mkdir -p $DATADIR/browse/showers -logger -s -t createShwrExtracts "starting" +logger -s -t $(basename $0 .sh) "starting" if [ $# -gt 0 ] ; then ymd=$1 @@ -33,10 +33,10 @@ else fi cd ${DATADIR}/matched -logger -s -t createShwrExtracts "creating annual shower extracts" +logger -s -t $(basename $0 .sh) "creating annual shower extracts" python -c "from reports import extractors as ex; ex.extractAllShowersData('$ymd');" -logger -s -t createShwrExtracts "done gathering data, creating tables" +logger -s -t $(basename $0 .sh) "done gathering data, creating tables" # sync data so its all there to get a list of aws s3 sync $DATADIR/browse/showers/ $WEBSITEBUCKET/browse/showers/ --quiet @@ -91,7 +91,7 @@ do done \rm -f /tmp/browseshwr.txt -logger -s -t createShwrExtracts "sending to website" +logger -s -t $(basename $0 .sh) "sending to website" aws s3 sync $DATADIR/browse/showers/ $WEBSITEBUCKET/browse/showers/ --quiet -logger -s -t createShwrExtracts "finished" \ No newline at end of file +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/website/createSummaryTable.sh b/archive/website/createSummaryTable.sh index caa0fd83..731c8f96 100644 --- a/archive/website/createSummaryTable.sh +++ b/archive/website/createSummaryTable.sh @@ -23,14 +23,14 @@ source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} $SRC/utils/clearCaches.sh -logger -s -t createSummaryTable "starting" +logger -s -t $(basename $0 .sh) "starting" cd $DATADIR yr=$(date +%Y) python -c "from reports.createSummaryTable import createSummaryTable; createSummaryTable(curryr='$yr');" -logger -s -t createSummaryTable "create a coverage map from the kmls" +logger -s -t $(basename $0 .sh) "create a coverage map from the kmls" # make sure correct version of GEOS and PROJ4 available for mapping routines #LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/geos/lib:/usr/local/proj4/lib @@ -46,14 +46,14 @@ python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr} python -c "from reports.makeCoverageMap import createCoveragePage as ccp ; ccp('reports/${yr}') ;" -logger -s -t createSummaryTable "create year-to-date barchart" +logger -s -t $(basename $0 .sh) "create year-to-date barchart" python -c "from reports.createAnnualBarChart import createBarChart; createBarChart('${DATADIR}','${yr}')" # update index page numcams=$(cat $DATADIR/consolidated/activecamcount.txt) cat $TEMPLATES/frontpage.html | sed "s/#NUMCAMS#/$numcams/g" > $DATADIR/reports/${yr}/newindex.html -logger -s -t createSummaryTable "copying to website" +logger -s -t $(basename $0 .sh) "copying to website" aws s3 cp $DATADIR/reports/${yr}/coverage-maps.html $WEBSITEBUCKET/latest/ --quiet aws s3 cp $DATADIR/reports/${yr}/coverage-100km.html $WEBSITEBUCKET/data/ --quiet aws s3 cp $DATADIR/reports/${yr}/coverage-70km.html $WEBSITEBUCKET/data/ --quiet @@ -67,4 +67,4 @@ aws s3 cp $DATADIR/reports/${yr}/summarytable.js $WEBSITEBUCKET/data/ --quiet aws s3 cp $SRC/website/templates/header.html $WEBSITEBUCKET/templates/ --quiet aws s3 cp $SRC/website/templates/footer.html $WEBSITEBUCKET/templates/ --quiet -logger -s -t createSummaryTable "finished" \ No newline at end of file +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/website/publishDailyReport.sh b/archive/website/publishDailyReport.sh index b13fe1b2..8840deb9 100644 --- a/archive/website/publishDailyReport.sh +++ b/archive/website/publishDailyReport.sh @@ -19,7 +19,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate $HOME/miniconda3/envs/${WMPL_ENV} -logger -s -t publishDailyReport "creating report file" +logger -s -t $(basename $0 .sh) "starting" cd $DATADIR daysback=1 @@ -55,3 +55,5 @@ echo "" >> $DATADIR/latest/dailyreports/dailyreportsidx.html cat $TEMPLATES/footer.html >> $DATADIR/latest/dailyreports/dailyreportsidx.html aws s3 sync $DATADIR/latest/dailyreports/ $WEBSITEBUCKET/latest/dailyreports/ --quiet + +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file diff --git a/archive/website/updateCameraDets.sh b/archive/website/updateCameraDets.sh index c620bde5..a5dff5e1 100644 --- a/archive/website/updateCameraDets.sh +++ b/archive/website/updateCameraDets.sh @@ -19,7 +19,7 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 conda activate ${WMPL_ENV} -logger -s -t updateCameraDets "starting" +logger -s -t $(basename $0 .sh) "starting" python -c "from reports.CameraDetails import updateCamLocDirFovDB; updateCamLocDirFovDB();" aws s3 cp $DATADIR/admin/cameraLocs.json $UKMONSHAREDBUCKET/admin/ --quiet @@ -34,4 +34,4 @@ aws s3 cp $DATADIR/searchidx/statopts.html $WEBSITEBUCKET/search/ --quiet aws s3 cp $DATADIR/searchidx/activestatopts.html $WEBSITEBUCKET/search/ --quiet aws s3 cp $DATADIR/searchidx/activestatlocs.html $WEBSITEBUCKET/search/ --quiet -logger -s -t updateCameraDets "finished" +logger -s -t $(basename $0 .sh) "finished" diff --git a/archive/website/updateIndexPages.sh b/archive/website/updateIndexPages.sh index a70f69c3..ed8e4265 100644 --- a/archive/website/updateIndexPages.sh +++ b/archive/website/updateIndexPages.sh @@ -12,6 +12,8 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 +logger -s -t $(basename $0 .sh) "starting" + if [ $# -eq 0 ]; then dailyrep=$(ls -1tr $DATADIR/dailyreports/20* | tail -1) else @@ -19,7 +21,7 @@ else fi trajlist=$(cat $dailyrep | awk -F, '{print $2}') -logger -s -t updateIndexPages "Updating indexes" + for traj in $trajlist ; do bn=$(basename $traj); echo ${bn:0:8} >> /tmp/days.txt ; done daystodo=$(cat /tmp/days.txt | sort | uniq) for dtd in $daystodo @@ -44,4 +46,4 @@ do done rm /tmp/days.txt -logger -s -t updateIndexPages "Finished" \ No newline at end of file +logger -s -t $(basename $0 .sh) "finished" \ No newline at end of file From 630944aa03f6d0b382894c324ed4f311b5d71120 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 13:34:33 +0100 Subject: [PATCH 027/150] add calcserver config and build info to github --- .../{.bash_aliases_calcengine => calcserver/.bash_aliases} | 0 archive/server_setup/{.bashrc_calcengine => calcserver/.bashrc} | 0 archive/server_setup/calcserver/.vimrc | 1 + 3 files changed, 1 insertion(+) rename archive/server_setup/{.bash_aliases_calcengine => calcserver/.bash_aliases} (100%) rename archive/server_setup/{.bashrc_calcengine => calcserver/.bashrc} (100%) create mode 100644 archive/server_setup/calcserver/.vimrc diff --git a/archive/server_setup/.bash_aliases_calcengine b/archive/server_setup/calcserver/.bash_aliases similarity index 100% rename from archive/server_setup/.bash_aliases_calcengine rename to archive/server_setup/calcserver/.bash_aliases diff --git a/archive/server_setup/.bashrc_calcengine b/archive/server_setup/calcserver/.bashrc similarity index 100% rename from archive/server_setup/.bashrc_calcengine rename to archive/server_setup/calcserver/.bashrc diff --git a/archive/server_setup/calcserver/.vimrc b/archive/server_setup/calcserver/.vimrc new file mode 100644 index 00000000..2fd7a2b6 --- /dev/null +++ b/archive/server_setup/calcserver/.vimrc @@ -0,0 +1 @@ +colo slate From ee485548fa603025b4dc84e65a0f86383d58ff69 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 14:15:15 +0100 Subject: [PATCH 028/150] add readme for calcengine rebuilds --- archive/server_setup/calcserver/README.md | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 archive/server_setup/calcserver/README.md diff --git a/archive/server_setup/calcserver/README.md b/archive/server_setup/calcserver/README.md new file mode 100644 index 00000000..13b4b926 --- /dev/null +++ b/archive/server_setup/calcserver/README.md @@ -0,0 +1,58 @@ +# Building a new Calcserver + +## Create a new AWS asset +* The server is built form Terraform, so clone `calcserver.tf` in the `terraform` folder. +* Update the server AMI, instance type, name etc as desired +* Run `terraform plan` and then `terraform apply` + +## Install some prerequisites +* Login to the new server and install Miniconda using the defaults +* Install the AWS CLI and run `aws configure`. +* Deploy bashrc, bash_aliases and vimrc from `server_setup/calcserver/` to the calcserver user's homedir +* Log out and log in again. Ignore any conda-related and python errors for now. + +## Create required folder structure +Run the following +``` bash +mkdir -p ~/ukmon-shared/matches/RMSCorrelate/ +mkdir -p ~/data/distrib/canddbs/ +mkdir -p ~/src/ +mkdir -p ~/runtime/scripts/ +``` + +## Install WMPL from my Repo +Important note: do *NOT* run setup.py as instructed in the WMPL readme. This is not necessary and will in fact break WMPL on modern python builds. Instead, after installation, remove the `wmpl/CAM0 `and `wmpl/MetSim` folders, these are not used and rely on unavailable libraries, delete `wmpl/Utils/DynamicMassFit.py` as this makes a callback to `MetSim`, then copy over the static data files from the old server. +you can also make a conda environment as per the WMPL readme, though this is only used for debugging purposes. + +``` bash +cd ~/src +git clone --recursive https://github.com/markmac99/WesternMeteorPyLib.git +rm -Rf WesternMeteorPyLib/wmpl/MetSim +rm -Rf WesternMeteorPyLib/wmpl/CAM0 +rm -Rf WesternMeteorPyLib/wmpl/Utils/DynamicMassFit.py +``` + +## Create a Python virtualenv +Now create a python virtualenv, activate it and install the requirements: +``` bash +python -m venv ~/venvs/wmpl +source /home/ubuntu/venvs/wmpl/bin/activate +pip install -r ~/src/WesternMeteorPyLib/requirements.txt +pip install scp pymysql +``` +## Copy the data files from the old server. +Copy the contents of `~/src/WesternMeteorPyLib/wmpl/share/` from the old server to the same location on the new server. + +## Test the installation +Logout and back in then run +``` bash +python -c "from wmpl.Utils.TrajConversions import jd2Date;print(jd2Date(2461180.5))" +``` +this should print `(2026, 5, 20, 0, 0, 0, 0.0)` + +## Cutting Over +When you're ready to cut over: +* update the terraform file `ssm_variables.tf` to reflect the new values of calcinstance, calcuser and calcserverip. +* These variables are used at runtime by the batch to start, stop and connect with the calc engine. +* Redeploy the terraform with `terraform plan` and `terraform apply` +* On the production batch server, run `$SRC/utils/makeConfig.sh` to update the configuration file. From 56c1db3474bb8c74f28782a036d28706b75b1971 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 14:30:19 +0100 Subject: [PATCH 029/150] move runtime distib scripts to a sensible place --- archive/analysis/runDistrib.sh | 10 +++++----- archive/analysis/updatePlotsAndDetStatus.sh | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/archive/analysis/runDistrib.sh b/archive/analysis/runDistrib.sh index ca300038..00b125b4 100644 --- a/archive/analysis/runDistrib.sh +++ b/archive/analysis/runDistrib.sh @@ -56,11 +56,11 @@ chmod +x $execMatchingsh logger -s -t $(basename $0 .sh) "deploy the script to the server $CALCSERVERIP and run it" -scp -i $SERVERSSHKEY $execMatchingsh $SERVERUSERID@$CALCSERVERIP:data/distrib/$execdist +scp -i $SERVERSSHKEY $execMatchingsh $SERVERUSERID@$CALCSERVERIP:runtime/scripts/$execdist while [ $? -ne 0 ] ; do # in case the server isn't responding to ssh sessions yet sleep 10 - scp -i $SERVERSSHKEY $execMatchingsh $SERVERUSERID@$CALCSERVERIP:data/distrib/$execdist + scp -i $SERVERSSHKEY $execMatchingsh $SERVERUSERID@$CALCSERVERIP:runtime/scripts/$execdist done # push the python code and ECS templates required rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/clusdetails-* $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/traj/ @@ -74,7 +74,7 @@ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/maintenance/dataMaintenance.py $SERV # now run the script logger -s -t $(basename $0 .sh) "start distributed processing" -ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "data/distrib/$execdist" +ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "runtime/scripts/$execdist" rsync -avz -e "ssh -i $SERVERSSHKEY" $SERVERUSERID@$CALCSERVERIP:ukmon-shared/matches/RMSCorrelate/candidates/processed/*.tgz $DATADIR/distrib/candidates @@ -112,8 +112,8 @@ chmod +x $execConsolsh logger -s -t $(basename $0 .sh) "running consolidation" -scp -i $SERVERSSHKEY $execConsolsh $SERVERUSERID@$CALCSERVERIP:data/distrib/$execcons -ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "data/distrib/$execcons" +scp -i $SERVERSSHKEY $execConsolsh $SERVERUSERID@$CALCSERVERIP:runtime/scripts/$execcons +ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "runtime/scripts/$execcons" logger -s -t $(basename $0 .sh) "finished consolidation, copying databases" diff --git a/archive/analysis/updatePlotsAndDetStatus.sh b/archive/analysis/updatePlotsAndDetStatus.sh index f611bbf7..c7414631 100644 --- a/archive/analysis/updatePlotsAndDetStatus.sh +++ b/archive/analysis/updatePlotsAndDetStatus.sh @@ -54,17 +54,17 @@ chmod +x $execrerunsh logger -s -t updatePlotsAndDetStatus "deploy the script to the server $CALCSERVERIP and run it" -scp -i $SERVERSSHKEY $execrerunsh $SERVERUSERID@$CALCSERVERIP:data/distrib/$execrerun +scp -i $SERVERSSHKEY $execrerunsh $SERVERUSERID@$CALCSERVERIP:runtime/scripts/$execrerun while [ $? -ne 0 ] ; do # in case the server isn't responding to ssh sessions yet sleep 10 - scp -i $SERVERSSHKEY $execrerunsh $SERVERUSERID@$CALCSERVERIP:data/distrib/$execrerun + scp -i $SERVERSSHKEY $execrerunsh $SERVERUSERID@$CALCSERVERIP:runtime/scripts/$execrerun done # push the python and templates required rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/pickleAnalyser.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/traj # now run the script -ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "data/distrib/$execrerun" +ssh -i $SERVERSSHKEY $SERVERUSERID@$CALCSERVERIP "runtime/scripts/$execrerun" logger -s -t $(basename $0 .sh) "job run, stop the server again" From e3ac168ccfc71ff281133ffaf4c0725241a40125 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 14:42:54 +0100 Subject: [PATCH 030/150] update cost notes --- archive/shwrinfo/costnotes.html | 9 +++++++-- install_or_update.sh | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/archive/shwrinfo/costnotes.html b/archive/shwrinfo/costnotes.html index 08b211c3..33ba38e7 100644 --- a/archive/shwrinfo/costnotes.html +++ b/archive/shwrinfo/costnotes.html @@ -3,5 +3,10 @@
  • Costs rise from August to December as there are more meteor showers in this period.
  • Amounts of less than $0.10 per day are consolidated under Other.
  • AWS cost data may lag by up to a day, so yesterday's costs data are incomplete.
  • -
  • AWS charge VAT at the start of the month for the previous month's total bill.
  • -
    \ No newline at end of file +
  • AWS charge VAT at the start of the month for the previous month's total bill, so the day-1 cost includes VAT.
  • +
    +
  • Costs for Apr/May 2026 include
  • +
      +
    • One off server migration costs (3-year upfront lease of new batch server at £81)
    • +
    • Parallel run costs while cutting over
    • +
    \ No newline at end of file diff --git a/install_or_update.sh b/install_or_update.sh index c903adce..de959dfb 100755 --- a/install_or_update.sh +++ b/install_or_update.sh @@ -27,13 +27,15 @@ rsync -a share/ ~/${envname}/share echo "Creating data folders..." DATADIR=~/$envname/data mkdir -p $DATADIR/{admin,browse,consolidated,costs,dailyreports,distrib,kmls,manualuploads} -mkdir -p $DATADIR/{lastlogs,latest,matched,orbits,reports,searchidx,single,trajdb,videos} +mkdir -p $DATADIR/{lastlogs,latest,matched,orbits,reports,searchidx,single,trajdb,videos,shwrinfo} mkdir -p $DATADIR/browse/{annual,monthly,daily,showers} mkdir -p ~/$envname/logs mkdir -p ~/.logrotate mkdir -p ~/.aws mkdir -p ~/server_setup +rsync -a --delete shwrinfo/ ~$DATADIR/shwrinfo + rsync -a server_setup/*.sh ~/server_setup rsync -a server_setup/*.py ~/server_setup chmod +x ~/server_setup/*.sh From c9fd2c82185e769ac2edd8c44c6800e9571c3b7b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 14:46:13 +0100 Subject: [PATCH 031/150] fix typo --- install_or_update.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install_or_update.sh b/install_or_update.sh index de959dfb..bcdd5b16 100755 --- a/install_or_update.sh +++ b/install_or_update.sh @@ -34,7 +34,7 @@ mkdir -p ~/.logrotate mkdir -p ~/.aws mkdir -p ~/server_setup -rsync -a --delete shwrinfo/ ~$DATADIR/shwrinfo +rsync -a --delete shwrinfo/ $DATADIR/shwrinfo rsync -a server_setup/*.sh ~/server_setup rsync -a server_setup/*.py ~/server_setup From b33cf8aa8b2e6224b0ecb06467db25cdaea4da45 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 19:26:50 +0100 Subject: [PATCH 032/150] Updating meteor shower analysis code as per issue 477 --- .gitignore | 3 + archive/cronjobs/getImoWSfile.sh | 13 +- archive/share/majorminor.json | 4 + archive/share/majorminor.py | 3 - .../ukmon_pylib/analysis/showerAnalysis.py | 8 +- archive/ukmon_pylib/reports/extractors.py | 8 +- .../reports/reportActiveShowers.py | 2 +- archive/ukmon_pylib/utils/getActiveShowers.py | 196 +++++++++++------- archive/website/createShwrExtracts.sh | 2 +- 9 files changed, 140 insertions(+), 99 deletions(-) create mode 100644 archive/share/majorminor.json delete mode 100644 archive/share/majorminor.py diff --git a/.gitignore b/.gitignore index d266d959..b9b1067a 100644 --- a/.gitignore +++ b/.gitignore @@ -617,3 +617,6 @@ fbcollector/config.ini usermgmt/windows/stationmaint.ini usermgmt/windows/README.md fbCollector/README.html +archive/share/combined_shower_table.parquet +archive/share/gmn_shower_table_20230518.txt +archive/share/IMO_Working_Meteor_Shower_List.xml diff --git a/archive/cronjobs/getImoWSfile.sh b/archive/cronjobs/getImoWSfile.sh index d7cb0399..168f93b8 100644 --- a/archive/cronjobs/getImoWSfile.sh +++ b/archive/cronjobs/getImoWSfile.sh @@ -6,20 +6,23 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" source $here/../config.ini >/dev/null 2>&1 logger -s -t getImoWSfile "Getting IMO working shower file" -mkdir -p $SRC/share >/dev/null 2>&1 -cd $SRC/share -mv IMO*.xml $(date +%Y%m%d_%H%M%S).xml +mkdir -p $DATADIR/share >/dev/null 2>&1 +cd $DATADIR/share +mv IMO*.xml $(date +%Y%m%d_%H%M%S).xml > /dev/null 2>&1 /usr/bin/wget https://www.imo.net/members/imo_showers/IMO_Working_Meteor_Shower_list/IMO_Working_Meteor_Shower_List.xml --no-check-certificate +find . -mtime +21 -name "*.xml" -exec rm -f {} \; # update WMPL static data conda activate $HOME/miniconda3/envs/${WMPL_ENV} -cd $WMPL_LOC +pushd $WMPL_LOC git checkout wmpl/share/streamfulldata.csv #git checkout wmpl/share/ShowerLookUpTable.txt git checkout wmpl/share/gmn_shower_table_20230518.txt +rsync wmpl/share/gmn_shower_table_20230518.txt $DATADIR/share/ +popd -python -c "from utils.getActiveShowers import numpifyShowerData; numpifyShowerData()" +python -c "from utils.getActiveShowers import _loadShowerTable;_LoadShowerTable(forceRedo=True)" logger -s -t getImoWSfile "finished" diff --git a/archive/share/majorminor.json b/archive/share/majorminor.json new file mode 100644 index 00000000..ac34ef6a --- /dev/null +++ b/archive/share/majorminor.json @@ -0,0 +1,4 @@ +{ + "major":["QUA", "LYR", "ETA", "CAP", "SDA", "PER", "AUR", "ORI", "NTA", "STA", "LEO", "GEM", "URS"], + "minor":["SPE","OCT","DRA","EGE","MON","HYD","COM","NOO"] +} diff --git a/archive/share/majorminor.py b/archive/share/majorminor.py deleted file mode 100644 index c980ecf2..00000000 --- a/archive/share/majorminor.py +++ /dev/null @@ -1,3 +0,0 @@ -# importable file that defines the major and minor showers -majorlist = ['QUA', 'LYR', 'ETA', 'CAP', 'SDA', 'PER', 'AUR', 'ORI', 'NTA', 'STA', 'LEO', 'GEM', 'URS'] -minorlist = ['SPE','OCT','DRA','EGE','MON','HYD','COM','NOO'] diff --git a/archive/ukmon_pylib/analysis/showerAnalysis.py b/archive/ukmon_pylib/analysis/showerAnalysis.py index 7defd593..d4b5b548 100644 --- a/archive/ukmon_pylib/analysis/showerAnalysis.py +++ b/archive/ukmon_pylib/analysis/showerAnalysis.py @@ -10,8 +10,7 @@ from matplotlib import pyplot as plt import datetime -from utils.getActiveShowers import getShowerDets -from utils.imoWorkingShowerList import IMOshowerList +from utils.getActiveShowers import getShowerDets, getShowerStartEnd SMALL_SIZE = 8 MEDIUM_SIZE = 10 @@ -479,9 +478,8 @@ def showerAnalysis(shwr, dtstr): cols = ['Shwr','Dtstamp','Y','M','ID','Mag'] filt = None if shwr != 'ALL': - sl = IMOshowerList() - maxdt = sl.getEnd(shwr) + datetime.timedelta(days=10) - mindt = sl.getStart(shwr) + datetime.timedelta(days=-10) + maxdt = getShowerStartEnd(shwr, False) + datetime.timedelta(days=10) + mindt = getShowerStartEnd(shwr, True) + datetime.timedelta(days=-10) # read the single-station data singleFile = os.path.join(datadir, 'single', f'singles-{yr}.parquet.snap') diff --git a/archive/ukmon_pylib/reports/extractors.py b/archive/ukmon_pylib/reports/extractors.py index 8541e759..9697a5be 100644 --- a/archive/ukmon_pylib/reports/extractors.py +++ b/archive/ukmon_pylib/reports/extractors.py @@ -6,7 +6,6 @@ import os import sys import pandas as pd -from utils.imoWorkingShowerList import IMOshowerList from utils.getActiveShowers import getActiveShowers @@ -139,12 +138,7 @@ def createRMSSingleMonthlyExtract(yr, mth=None, shwr=None, dta=None, withshower= def extractAllShowersData(ymd): print('getting shower data') yr = str(ymd)[:4] - if int(ymd) > 9999: - showerlist = getActiveShowers(ymd, retlist=True) - showerlist.append('spo') - else: - sl = IMOshowerList() - showerlist = sl.getMajorShowers(True, True).strip().split(' ') + showerlist = getActiveShowers(ymd, aslist=True, inclSpo=True) print(f'processing data for {ymd}') datadir = os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) diff --git a/archive/ukmon_pylib/reports/reportActiveShowers.py b/archive/ukmon_pylib/reports/reportActiveShowers.py index bf2a171a..b5f7e54b 100644 --- a/archive/ukmon_pylib/reports/reportActiveShowers.py +++ b/archive/ukmon_pylib/reports/reportActiveShowers.py @@ -171,7 +171,7 @@ def findRelevantPngs(shwr, pltdir, outdir): def reportActiveShowers(ymd, thisshower=None, thismth=None, includeMinor=False): if thisshower is None: - shwrlist = getActiveShowers(ymd, retlist=True, inclMinor=includeMinor) + shwrlist = getActiveShowers(ymd, aslist=True, inclMinor=includeMinor) else: shwrlist = [thisshower] diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index 74d03b4c..042402b3 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -2,13 +2,17 @@ # # simple script to get the active shower list from the IMO working list -from utils.imoWorkingShowerList import IMOshowerList as iwsl import datetime import numpy as np +import pandas as pd import os +import json +import ephem +from wmpl.Utils.TrajConversions import datetime2JD, jd2Date +from wmpl.Utils.SolarLongitude import solLon2jdVSOP, jd2SolLonVSOP # good enough for our purposes here -def getActiveShowers(targdate, retlist=False, inclMinor=False): +def getActiveShowers(targdate, aslist=False, inclMinor=False, inclSpo=False, tolerance=1): """ Return a list of showers active at the specified date @@ -16,41 +20,41 @@ def getActiveShowers(targdate, retlist=False, inclMinor=False): targdate: [str] Date in YYYYMMDD format Keyword Arguments: - retlist: [bool] return a list, or print to console. Default False=print - inclMinor: [bool] include minor showers or only return major showers + retlist: [bool] False return a list if True otherwise print to console + inclMinor: [bool] False, include minor showers if True + inclSpo: [bool] False, include 'spo' if True + tolerance: [int] default 1, number of days either side of the date to check Returns: If retlist is true, returns a python list of shower short-codes eg ['PER','LYR'] """ - sl = iwsl() - testdate = datetime.datetime.strptime(targdate, '%Y%m%d') - listofshowers=sl.getActiveShowers(testdate, True, inclMinor=inclMinor) - if retlist is False: - for shwr in listofshowers: - print(shwr) + sl = _loadShowerTable() + mmlist = _loadMajorMinor() + testdate = datetime.datetime.strptime(targdate, '%Y%m%d').replace(tzinfo=datetime.timezone.utc) + sollon = np.degrees(jd2SolLonVSOP(datetime2JD(testdate))) + sl1 = sl[sl.la_sun > sollon - tolerance] + sl1 = sl1[sl1.la_sun < sollon + tolerance] + sl1.drop_duplicates('IAU_code', inplace=True) + + if inclMinor: + listofshowers = list(sl1.IAU_code) else: - return listofshowers - + listofshowers = [] + for _,rw in sl1.iterrows(): + if rw.IAU_code in mmlist['major']: + listofshowers.append(rw.IAU_code) -def getActiveShowersStr(targdatestr): - """ - Prints a comma-separated list of showers active at the specified date + if inclSpo: + listofshowers.append('spo') - Arguments: - targdate: [str] Date in YYYYMMDD format - - Returns: - nothing - - """ - shwrs = getActiveShowers(targdatestr, retlist=True) - shwrs.append('spo') - for s in shwrs: - print(s) + if aslist: + return listofshowers + else: + print(' '.join(listofshowers)) -def getShowerDets(shwr, stringFmt=False, dataPth=None): +def getShowerDets(shwr, asstring=False): """ Get details of a shower Arguments: @@ -60,25 +64,41 @@ def getShowerDets(shwr, stringFmt=False, dataPth=None): dataPth [string] path to the datafiles. Default None means data read from internal files. Returns: - (id, full name, peak solar longitude, peak date mm-dd) + either a tuple of (id, full name, peak solar longitude, peak date mm-dd) + or a string "peak sollon, name, peak date, shower code" + """ - sl = iwsl() - mtch = sl.getShowerByCode(shwr, useFull=True) - if len(mtch) > 0 and mtch['@id'] is not None: - id = int(mtch['@id']) - nam = mtch['name'] - pkdtstr = mtch['peak'] - dt = datetime.datetime.now() - yr = dt.year - pkdt = datetime.datetime.strptime(f'{yr} {pkdtstr}','%Y %b %d') + sl = _loadShowerTable() + thisshower = sl[sl.IAU_code == shwr] + + if len(thisshower) > 0: + id = int(thisshower.iloc[0]['IAU_no']) + name = thisshower.iloc[0]['name'] + if name is None or str(name) == 'nan': + name = shwr + pkdtstr = thisshower.iloc[0]['peak'] + if pkdtstr is None or str(pkdtstr) == 'nan': + # pick the median date of the shower then the approx datetime value + pksollong = (thisshower.iloc[-1]['la_sun'] + thisshower.iloc[0]['la_sun'])/2 + lve = ephem.previous_vernal_equinox(ephem.Date(datetime.datetime.now(datetime.timezone.utc))) + pkdt = ephem.to_timezone(ephem.date(lve+pksollong), tzinfo=datetime.timezone.utc) + else: + pkdt = datetime.datetime.strptime(f'{datetime.datetime.now().year} {pkdtstr}','%Y %b %d') + pksollong = np.degrees(jd2SolLonVSOP(datetime2JD(pkdt))) + dtstr = pkdt.strftime('%m-%d') - pksollong = mtch['pksollon'] else: - id, nam, pksollong, dtstr = 0, 'Unknown', 0, 'Unknown' - if stringFmt: - return f"{pksollong},{dtstr},{nam},{shwr}" + id = 0 + name = 'Unknown' + pksollong = 0 + dtstr = 'Unknown' + + pksollong = round(pksollong,1) + if not asstring: + return (id, name, pksollong, dtstr) else: - return id, nam, pksollong, dtstr + # note, different order and return values + return f'{pksollong}, {name}, {dtstr}, {shwr}' def getShowerPeak(shwr): @@ -94,46 +114,68 @@ def getShowerPeak(shwr): return pk -def numpifyShowerData(): - """Refresh the numpy versions of the shower data files """ - srcdir = os.getenv('SRC', default=os.path.expanduser('~/prod')) - abs_path = os.getenv('WMPL_LOC', default=os.path.expanduser('~/src/WesternMeteorPyLib')) - - iau_shower_table_file = os.path.join(abs_path, 'wmpl', 'share', 'streamfulldata.csv') - iau_shower_table_npy = os.path.join(abs_path, 'wmpl', 'share', 'streamfulldata.npy') - iau_shower_list = np.loadtxt(iau_shower_table_file, delimiter="|", usecols=range(20), dtype=str) - np.save(iau_shower_table_npy, iau_shower_list) - - iau_shower_table_npy = os.path.join(srcdir, 'share', 'streamfulldata.npy') - np.save(iau_shower_table_npy, iau_shower_list) - - gmn_shower_table_file = os.path.join(abs_path, 'wmpl', 'share', 'gmn_shower_table_20230518.txt') - gmn_shower_table_npy = os.path.join(abs_path, 'wmpl', 'share', 'gmn_shower_table_20230518.npy') - gmn_shower_list = _loadGMNShowerTable(*os.path.split(gmn_shower_table_file)) - np.save(gmn_shower_table_npy, gmn_shower_list) - - gmn_shower_table_npy = os.path.join(srcdir, 'share', 'gmn_shower_table_20230518.npy') - np.save(gmn_shower_table_npy, gmn_shower_list) +def getShowerStartEnd(shwr, start=True): + """ Get approx start/end dates of a shower + + Arguments: + shwr: [string] three-letter shower code eg PER + Keyword Arguments: + start: [bool] true if requesting the start date, otherwise you'll get the end date + + Returns: + dtval: [datetime] approx start or end date of the shower -def _loadGMNShowerTable(dir_path, file_name): - gmn_shower_list = [] - with open(os.path.join(dir_path, file_name), encoding='cp1252') as f: - for line in f: - if line.startswith('#'): - continue - line = line.strip() - line = line.replace('\n', '').replace('\r', '') - if not line: - continue - la_sun, L_g, B_g, v_g, dispersion, IAU_no, IAU_code = line.split() + """ + sl = _loadShowerTable() + thisshower = sl[sl.IAU_code == shwr] + + reqfield = 'start' if start else 'end' + if len(thisshower) > 0: + reqdtstr = thisshower.iloc[0][reqfield] + if reqdtstr is None or str(reqdtstr) == 'nan': + reqsl = thisshower.iloc[0]['la_sun'] if start else thisshower.iloc[-1]['la_sun'] + lve = ephem.previous_vernal_equinox(ephem.Date(datetime.datetime.now(datetime.timezone.utc))) + reqdt = ephem.to_timezone(ephem.date(lve + reqsl), tzinfo=datetime.timezone.utc) + else: + reqdt = datetime.datetime.strptime(f'{datetime.datetime.now(datetime.timezone.utc).year} {reqdtstr}','%Y %b %d').replace(tzinfo=datetime.timezone.utc) + + return reqdt + + +def _loadMajorMinor(dir_path=None): + if not dir_path: + dir_path = os.path.join(os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')), 'share') + return json.load(open(os.path.join(dir_path,'majorminor.json'))) + + +def _loadShowerTable(dir_path=None, file_name=None, forceRedo=False): + if not dir_path: + dir_path = os.path.join(os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')), 'share') + file_name = 'gmn_shower_table_20230518.txt' + if not os.path.isfile(os.path.join(dir_path, 'combined_shower_table.parquet')) or forceRedo: + gmn_shower_list = [] + lis = open(os.path.join(dir_path, file_name), encoding='cp1252').readlines() + lis = [x for x in lis if x[0]!='#'] + for line in lis: + if len(line) < 10: + continue + la_sun, L_g, B_g, v_g, dispersion, IAU_no, IAU_code = line.strip().split() gmn_shower_list.append([ - np.radians(float(la_sun)), + float(la_sun), np.radians(float(L_g)), np.radians(float(B_g)), 1000*float(v_g), np.radians(float(dispersion)), - int(IAU_no)] - + int(IAU_no), + IAU_code] ) - return np.array(gmn_shower_list) + df = pd.DataFrame(gmn_shower_list, columns=['la_sun', 'L_g', 'B_g', 'v_g', 'dispersion', 'IAU_no', 'IAU_code']) + + imodf = pd.read_xml(os.path.join(dir_path, 'IMO_Working_Meteor_Shower_List.xml')) + imodf.set_index('IAU_code', inplace=True) + df = df.join(imodf, on='IAU_code') + df.to_parquet(os.path.join(dir_path, 'combined_shower_table.parquet')) + else: + df = pd.read_parquet(os.path.join(dir_path, 'combined_shower_table.parquet')) + return df diff --git a/archive/website/createShwrExtracts.sh b/archive/website/createShwrExtracts.sh index 59f0ee37..89d3cc81 100644 --- a/archive/website/createShwrExtracts.sh +++ b/archive/website/createShwrExtracts.sh @@ -44,7 +44,7 @@ cd $DATADIR/browse/showers/ # get a list of files on the website aws s3 ls $WEBSITEBUCKET/browse/showers/ | awk '{ print $4 }' | grep csv > /tmp/browseshwr.txt -shwrs=$(python -c "from utils.getActiveShowers import getActiveShowersStr ; getActiveShowersStr('${ymd}')") +shwrs=$(python -c "from utils.getActiveShowers import getActiveShowers;getActiveShowers('${ymd}', aslist=False, inclSpo=True)") for shwr in $shwrs do now=$(date '+%Y-%m-%d %H:%M:%S') From 91f7ca6503ae24d4d5c5c31394c9597473b5e5fb Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 19:27:59 +0100 Subject: [PATCH 033/150] updtate the installer --- archive/share/README.md | 4 ++-- install_or_update.sh | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/archive/share/README.md b/archive/share/README.md index dd895588..54335794 100644 --- a/archive/share/README.md +++ b/archive/share/README.md @@ -1,4 +1,4 @@ # database -The file in this folder contains lists of major and minor showers, and is used for reporting. -I made it separate from the main codebase so i could tweak it more easily. \ No newline at end of file +The file in this folder contains data files consumed by meteor shower analysis +It also contains the API data dictionary \ No newline at end of file diff --git a/install_or_update.sh b/install_or_update.sh index bcdd5b16..0ae40638 100755 --- a/install_or_update.sh +++ b/install_or_update.sh @@ -22,11 +22,13 @@ do rsync -a --delete $loc/ ~/${envname}/$loc chmod +x ~/${envname}/$loc/*.sh > /dev/null 2>&1 done -rsync -a share/ ~/${envname}/share +rsync -a share/*.json ~/${envname}/data/share +rsync -a share/*.xlsx ~/${envname}/data/share +rsync -a share/*.md ~/${envname}/data/share echo "Creating data folders..." DATADIR=~/$envname/data -mkdir -p $DATADIR/{admin,browse,consolidated,costs,dailyreports,distrib,kmls,manualuploads} +mkdir -p $DATADIR/{admin,browse,consolidated,costs,dailyreports,distrib,kmls,manualuploads,share} mkdir -p $DATADIR/{lastlogs,latest,matched,orbits,reports,searchidx,single,trajdb,videos,shwrinfo} mkdir -p $DATADIR/browse/{annual,monthly,daily,showers} mkdir -p ~/$envname/logs @@ -53,7 +55,7 @@ fi echo "Updating meteor shower tables..." # update the IMO and GMN meteor shower tables if missing -if [ ! -f ~/${envname}/share/IMO_Working_Meteor_Shower_List.xml ] +if [ ! -f ~/${envname}/data/share/IMO_Working_Meteor_Shower_List.xml ] then ~/$envname/cronjobs/getImoWSfile.sh echo "" From 655b63aa047caf03209f45ebc62385bec13bf37d Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 19:29:37 +0100 Subject: [PATCH 034/150] typo --- archive/cronjobs/getImoWSfile.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/cronjobs/getImoWSfile.sh b/archive/cronjobs/getImoWSfile.sh index 168f93b8..da02aa6b 100644 --- a/archive/cronjobs/getImoWSfile.sh +++ b/archive/cronjobs/getImoWSfile.sh @@ -22,7 +22,7 @@ git checkout wmpl/share/gmn_shower_table_20230518.txt rsync wmpl/share/gmn_shower_table_20230518.txt $DATADIR/share/ popd -python -c "from utils.getActiveShowers import _loadShowerTable;_LoadShowerTable(forceRedo=True)" +python -c "from utils.getActiveShowers import _loadShowerTable;_loadShowerTable(forceRedo=True)" logger -s -t getImoWSfile "finished" From a424b5a42f05fbb9f52d8004283dbebb54b4e7fd Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 19:31:09 +0100 Subject: [PATCH 035/150] add missing requirement --- archive/ukmon_pylib/additional_requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/ukmon_pylib/additional_requirements.txt b/archive/ukmon_pylib/additional_requirements.txt index c5942af2..08681e37 100644 --- a/archive/ukmon_pylib/additional_requirements.txt +++ b/archive/ukmon_pylib/additional_requirements.txt @@ -35,3 +35,4 @@ behave pdoc pytest pytest-cov +lxml \ No newline at end of file From bbc229d7351d1ec88232aaf66ea195685de64761 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 19:48:46 +0100 Subject: [PATCH 036/150] avoid creating reports for every single minor shower --- archive/analysis/reportActiveShowers.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/analysis/reportActiveShowers.sh b/archive/analysis/reportActiveShowers.sh index 7dc1380e..a772c253 100644 --- a/archive/analysis/reportActiveShowers.sh +++ b/archive/analysis/reportActiveShowers.sh @@ -29,9 +29,9 @@ else fi logger -s -t $(basename $0 .sh) "start reportActiveShowers" -python -m reports.reportActiveShowers -m +python -m reports.reportActiveShowers -python -c "from utils.getActiveShowers import getActiveShowers;getActiveShowers('$rundt', inclMinor=True)" | while read shwr +python -c "from utils.getActiveShowers import getActiveShowers;getActiveShowers('$rundt', inclMinor=False)" | while read shwr do aws s3 sync $DATADIR/reports/${yr}/$shwr $WEBSITEBUCKET/reports/${yr}/${shwr} --quiet done From 86a27e98395eaa8852143e8262565718920a7fae Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 21:48:03 +0100 Subject: [PATCH 037/150] remove disused file bugfix in getActiveShowers bugfix in createReportIndex.,sh --- archive/ukmon_pylib/utils/getActiveShowers.py | 2 +- .../ukmon_pylib/utils/imoWorkingShowerList.py | 223 ------------------ archive/website/createReportIndex.sh | 3 - 3 files changed, 1 insertion(+), 227 deletions(-) delete mode 100644 archive/ukmon_pylib/utils/imoWorkingShowerList.py diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index 042402b3..106a9ceb 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -98,7 +98,7 @@ def getShowerDets(shwr, asstring=False): return (id, name, pksollong, dtstr) else: # note, different order and return values - return f'{pksollong}, {name}, {dtstr}, {shwr}' + return f'{pksollong},{name},{dtstr},{shwr}' def getShowerPeak(shwr): diff --git a/archive/ukmon_pylib/utils/imoWorkingShowerList.py b/archive/ukmon_pylib/utils/imoWorkingShowerList.py deleted file mode 100644 index abc76760..00000000 --- a/archive/ukmon_pylib/utils/imoWorkingShowerList.py +++ /dev/null @@ -1,223 +0,0 @@ -# -# python module to read the IMO Working Shower short List -# -# Copyright (C) 2018-2023 Mark McIntyre - -import xmltodict -import datetime -import os -import numpy as np -import copy - -from wmpl.Utils.TrajConversions import jd2Date -from utils.convertSolLon import sollon2jd - -try: - # imported from $SRC/share - from majorminor import majorlist, minorlist -except Exception: - c = ['QUA', 'LYR', 'ETA', 'CAP', 'SDA', 'PER', 'AUR', 'ORI', 'NTA', 'STA', 'LEO', 'GEM', 'URS'] - minorlist = ['SPE','OCT','DRA','EGE','MON','HYD','COM','NOO'] - - -class IMOshowerList: - """ - Class that loads and parses the IMO Working Shower list, or if needed, the unconfirmed list. - Not all known showers are in the IMO working list. If a shower is not in the Working List then - this library will reference the full shower list curated by Peter Jenniskens which contains - debated and unconfirmed showers. - - """ - def __init__(self, fname=None, fullstreamname=None): - if fname is None: - srcdir = os.getenv('SRC', default=os.path.expanduser('~/prod')) - fname = os.path.join(srcdir, 'share', 'IMO_Working_Meteor_Shower_List.xml') - if not os.path.isfile(fname): - print('unable to open data file') - return - - tmplist = xmltodict.parse(open(fname, 'rb').read()) - self.showerlist = tmplist['meteor_shower_list']['shower'] - if fullstreamname is None: - fullstreamname = os.path.join(srcdir, 'share', 'streamfulldata.npy') - self.fullstreamdata = np.load(fullstreamname) - #print('initialised') - - - def getShowerByCode(self, iaucode, useFull=False): - ds = {'@id':None, 'IAU_code':None,'start':None, 'end':None, - 'peak':None, 'r':None, 'name':None, 'V':None, 'ZHR':None, 'RA':None, 'DE':None, 'pksollon': None} - ds2 = {'@id':None, 'IAU_code':None,'start':None, 'end':None, - 'peak':None, 'r':None, 'name':None, 'V':None, 'ZHR':None, 'RA':None, 'DE':None, 'pksollon': None} - for shower in self.showerlist: - if shower['IAU_code'] == iaucode: - ds = shower - if ds['@id'] is None: - ds['@id'] = -1 - pksollong = -1 - #print(ds) - subset = self.fullstreamdata[np.where(self.fullstreamdata[:,3]==iaucode)] - if subset is not None and len(subset) > 0: - mtch = [sh for sh in subset if int(sh[6]) > -1] - if len(mtch) > 0: - ds2 = copy.deepcopy(ds) - ds2['IAU_code'] = mtch[-1][3].strip() - ds2['name'] = mtch[-1][4].strip() - ds2['V'] = mtch[-1][12] - ds2['@id'] = mtch[-1][1] - ds2['RA'] = mtch[-1][8] - ds2['DE'] = mtch[-1][9] - - pksollong = float(mtch[-1][7]) - dt = datetime.datetime.now() - yr = dt.year - mth = dt.month - jd = sollon2jd(yr, mth, pksollong) - pkdt = jd2Date(jd, dt_obj=True) - ds2['peak'] = pkdt.strftime('%h %d') - # start/end pop idx, ZHR not available in the IAU data - ds2['start'] = (pkdt + datetime.timedelta(days=-2)).strftime('%h %d') - ds2['end'] = (pkdt + datetime.timedelta(days=2)).strftime('%h %d') - ds2['pksollon'] = pksollong - #print(ds2) - else: - # okay so its poor quality but lets try it anyway - mtch = subset - ds2 = copy.deepcopy(ds) - ds2['IAU_code'] = mtch[-1][3].strip() - ds2['name'] = mtch[-1][4].strip() - ds2['V'] = mtch[-1][12] - ds2['@id'] = mtch[-1][1] - ds2['RA'] = mtch[-1][8] - ds2['DE'] = mtch[-1][9] - - pksollong = float(mtch[-1][7]) - dt = datetime.datetime.now() - yr = dt.year - mth = dt.month - jd = sollon2jd(yr, mth, pksollong) - pkdt = jd2Date(jd, dt_obj=True) - ds2['peak'] = pkdt.strftime('%h %d') - # start/end pop idx, ZHR not available in the IAU data - ds2['start'] = (pkdt + datetime.timedelta(days=-2)).strftime('%h %d') - ds2['end'] = (pkdt + datetime.timedelta(days=2)).strftime('%h %d') - ds2['pksollon'] = pksollong - if useFull is False: - if 'pksollon' not in ds: - ds['pksollon'] = ds2['pksollon'] - elif ds['pksollon'] is None: - ds['pksollon'] = ds2['pksollon'] - if ds['peak'] is None: - ds['peak'] = ds2['peak'] - ds['@id'] = ds2['@id'] - return ds - else: - ds2['ZHR'] = ds['ZHR'] - ds2['r'] = ds['r'] - return ds2 - - def getStart(self, iaucode, currdt=None): - shower = self.getShowerByCode(iaucode) - if currdt is None: - now = datetime.datetime.today().year - mth = datetime.datetime.today().month - else: - now = datetime.datetime.strptime(str(currdt), '%Y%m%d') - mth = now.month - now = now.year - if shower['start'] is not None: - startdate = datetime.datetime.strptime(shower['start'], '%b %d') - else: - startdate = datetime.datetime.strptime(shower['peak'], '%b %d') + datetime.timedelta(days=-3) - if iaucode == 'QUA' and mth !=12: - # quadrantids straddle yearend - now = now - 1 - startdate = startdate.replace(year=now) - return startdate - - def getEnd(self, iaucode, currdt=None): - shower = self.getShowerByCode(iaucode) - if currdt is None: - now = datetime.datetime.today().year - mth = datetime.datetime.today().month - else: - now = datetime.datetime.strptime(str(currdt), '%Y%m%d') - mth = now.month - now = now.year - #print(shower) - if shower['end'] is not None: - enddate = datetime.datetime.strptime(shower['end'], '%b %d') - else: - enddate = datetime.datetime.strptime(shower['peak'], '%b %d') + datetime.timedelta(days=3) - if iaucode == 'QUA' and mth == 12: - # quadrantids straddle yearend - now = now + 1 - enddate = enddate.replace(year=now) - return enddate - - def getPeak(self, iaucode, currdt=None): - shower = self.getShowerByCode(iaucode) - if currdt is None: - now = datetime.datetime.today().year - mth = datetime.datetime.today().month - else: - now = datetime.datetime.strptime(str(currdt), '%Y%m%d') - mth = now.month - now = now.year - enddate = datetime.datetime.strptime(shower['peak'], '%b %d') - if iaucode == 'QUA' and mth == 12: - # quadrantids straddle yearend - now = now + 1 - enddate = enddate.replace(year=now) - return enddate - - def getRvalue(self, iaucode): - shower = self.getShowerByCode(iaucode) - return shower['r'] - - def getName(self, iaucode): - shower = self.getShowerByCode(iaucode) - return shower['name'] - - def getVelocity(self, iaucode): - shower = self.getShowerByCode(iaucode) - return shower['V'] - - def getZHR(self, iaucode): - shower = self.getShowerByCode(iaucode) - zhr = shower['ZHR'] - if zhr is None: - return -1 - else: - return int(zhr) - - def getRaDec(self, iaucode): - shower = self.getShowerByCode(iaucode) - return float(shower['RA']), float(shower['DE']) - - def getActiveShowers(self, datetotest, majorOnly=False, inclMinor=False): - activelist = [] - for shower in self.showerlist: - shwname = shower['IAU_code'] - if shwname == 'ANT': #skip the anthelion source, its not a real shower - continue - start = self.getStart(shwname, datetotest.strftime('%Y%m%d')) - #print(shwname, start,shower) - end = self.getEnd(shwname, datetotest.strftime('%Y%m%d')) + datetime.timedelta(days=3) - if datetotest > start and datetotest < end: - if majorOnly is False or (majorOnly is True and shwname in majorlist): - activelist.append(shwname) - elif inclMinor is True and shwname in minorlist: - activelist.append(shwname) - return activelist - - def getMajorShowers(self, includeSpo=False, stringFmt=False): - majlist = majorlist - if includeSpo is True: - majlist.append('spo') - if stringFmt is True: - tmplist = '' - for shwr in majlist: - tmplist = tmplist + shwr + ' ' - majlist = tmplist - return majlist diff --git a/archive/website/createReportIndex.sh b/archive/website/createReportIndex.sh index 3be14928..acbb7bb2 100644 --- a/archive/website/createReportIndex.sh +++ b/archive/website/createReportIndex.sh @@ -107,9 +107,6 @@ if [ "$prefix" == "." ] ; then aws s3 cp $SRC/website/templates/reportindex.html $WEBSITEBUCKET/reports/index.html --quiet aws s3 cp $repidx $WEBSITEBUCKET/reports/ --quiet aws s3 cp $previdx $WEBSITEBUCKET/reports/ --quiet - - cp $repidx $DATADIR/reports/${yr}/ - cp $previdx $DATADIR/reports/${yr}/ else aws s3 cp $SRC/website/templates/reportindex.html $WEBSITEBUCKET/reports/$curryr/index.html --quiet aws s3 cp $repidx $WEBSITEBUCKET/reports/$curryr/ --quiet From 1280e9d6690acd0c5b8c7848061b8ba303311aed Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 21:55:15 +0100 Subject: [PATCH 038/150] relocate data dictionary --- archive/cronjobs/nightlyJob.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/cronjobs/nightlyJob.sh b/archive/cronjobs/nightlyJob.sh index 1ea3488c..e38d197e 100644 --- a/archive/cronjobs/nightlyJob.sh +++ b/archive/cronjobs/nightlyJob.sh @@ -139,7 +139,7 @@ $SRC/utils/loadSingleCsvMDB.sh $SRC/analysis/updatePlotsAndDetStatus.sh # push the API data dictionary to the website for end-user use -aws s3 sync $SRC/share/ s3://ukmda-website/browse --exclude "*" --include "datadictionary.xlsx" --quiet +aws s3 sync $DATADIR/share/ s3://ukmda-website/browse --exclude "*" --include "datadictionary.xlsx" --quiet logger -s -t $(basename $0 .sh) "finished" From 7f7f9293c915cbba0c275d4c354a37d91ecd3c92 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 22:39:55 +0100 Subject: [PATCH 039/150] Restore original major/minor filter Add lookup for shower names not in the GMN catalogue --- archive/ukmon_pylib/utils/getActiveShowers.py | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index 106a9ceb..194b2f8b 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -12,7 +12,7 @@ from wmpl.Utils.TrajConversions import datetime2JD, jd2Date from wmpl.Utils.SolarLongitude import solLon2jdVSOP, jd2SolLonVSOP # good enough for our purposes here -def getActiveShowers(targdate, aslist=False, inclMinor=False, inclSpo=False, tolerance=1): +def getActiveShowers(targdate, aslist=False, inclMinor=False, inclSpo=False, showall=False, tolerance=1): """ Return a list of showers active at the specified date @@ -37,13 +37,18 @@ def getActiveShowers(targdate, aslist=False, inclMinor=False, inclSpo=False, tol sl1 = sl1[sl1.la_sun < sollon + tolerance] sl1.drop_duplicates('IAU_code', inplace=True) - if inclMinor: + if showall: listofshowers = list(sl1.IAU_code) else: listofshowers = [] - for _,rw in sl1.iterrows(): - if rw.IAU_code in mmlist['major']: - listofshowers.append(rw.IAU_code) + if not inclMinor: + for _,rw in sl1.iterrows(): + if rw.IAU_code in mmlist['major']: + listofshowers.append(rw.IAU_code) + else: + for _,rw in sl1.iterrows(): + if rw.IAU_code in mmlist['major'] or rw.IAU_code in mmlist['minor']: + listofshowers.append(rw.IAU_code) if inclSpo: listofshowers.append('spo') @@ -75,7 +80,7 @@ def getShowerDets(shwr, asstring=False): id = int(thisshower.iloc[0]['IAU_no']) name = thisshower.iloc[0]['name'] if name is None or str(name) == 'nan': - name = shwr + name = getAltShwrName(shwr) pkdtstr = thisshower.iloc[0]['peak'] if pkdtstr is None or str(pkdtstr) == 'nan': # pick the median date of the shower then the approx datetime value @@ -141,6 +146,22 @@ def getShowerStartEnd(shwr, start=True): reqdt = datetime.datetime.strptime(f'{datetime.datetime.now(datetime.timezone.utc).year} {reqdtstr}','%Y %b %d').replace(tzinfo=datetime.timezone.utc) return reqdt + + +def getAltShwrName(shwr, dir_path=None): + if not dir_path: + dir_path = os.path.join(os.getenv('WMPL_LOC', default=os.path.expanduser('~/src/WesternMeteorPyLib/')), 'wmpl','share') + srcfile = os.path.join(dir_path, 'streamfulldata.csv') + rawdf = pd.read_csv(os.path.expanduser(srcfile), sep='|', header=None) + usefuldf = pd.concat([rawdf[3],rawdf[4]], axis=1) + usefuldf.rename(columns={3:'IAU_code',4:'name'}, inplace=True) + usefuldf.drop_duplicates(inplace=True) + match = usefuldf[usefuldf.IAU_code==shwr] + if len(match) > 0: + shower_name = match.iloc[0]['name'].strip() + else: + shower_name = f'{shwr} unknown' + return shower_name def _loadMajorMinor(dir_path=None): From 7085d1609f1fea79be58ab89cdc6a6af99e94545 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 22:42:27 +0100 Subject: [PATCH 040/150] restore reporting on less major showers --- archive/analysis/reportActiveShowers.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/analysis/reportActiveShowers.sh b/archive/analysis/reportActiveShowers.sh index a772c253..7dc1380e 100644 --- a/archive/analysis/reportActiveShowers.sh +++ b/archive/analysis/reportActiveShowers.sh @@ -29,9 +29,9 @@ else fi logger -s -t $(basename $0 .sh) "start reportActiveShowers" -python -m reports.reportActiveShowers +python -m reports.reportActiveShowers -m -python -c "from utils.getActiveShowers import getActiveShowers;getActiveShowers('$rundt', inclMinor=False)" | while read shwr +python -c "from utils.getActiveShowers import getActiveShowers;getActiveShowers('$rundt', inclMinor=True)" | while read shwr do aws s3 sync $DATADIR/reports/${yr}/$shwr $WEBSITEBUCKET/reports/${yr}/${shwr} --quiet done From 0677349cfd23ee738ea5b0bcfa258a06a18703d9 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 23:09:32 +0100 Subject: [PATCH 041/150] tidy up shower stats page --- .../ukmon_pylib/analysis/summaryAnalysis.py | 4 ++-- archive/ukmon_pylib/utils/getActiveShowers.py | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/archive/ukmon_pylib/analysis/summaryAnalysis.py b/archive/ukmon_pylib/analysis/summaryAnalysis.py index 5df93076..fdd19b53 100644 --- a/archive/ukmon_pylib/analysis/summaryAnalysis.py +++ b/archive/ukmon_pylib/analysis/summaryAnalysis.py @@ -4,7 +4,7 @@ # Copyright (C) 2018-2023 Mark McIntyre import pandas as pd -from traj import pickleAnalyser as pa +from utils.getActiveShowers import getShowerDets import os import sys import shutil @@ -24,7 +24,7 @@ def showerSummaryByPeriod(dtstr): grpdata = mtch.groupby(by=['_stream']).count() grpdata = grpdata.sort_values(by=['_M_ut'], ascending=False) grpdata['stream'] = grpdata.index - shwrdata=[(shwr, pa.getShowerDets(shwr),ct) for shwr, ct in zip(grpdata.stream,grpdata._M_ut)] + shwrdata=[(shwr, getShowerDets(shwr),ct) for shwr, ct in zip(grpdata.stream,grpdata._M_ut)] # for sh in shwrdata: # print(sh[0], sh[1][1], sh[1][3], sh[2]) diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index 194b2f8b..58ed096d 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -83,8 +83,7 @@ def getShowerDets(shwr, asstring=False): name = getAltShwrName(shwr) pkdtstr = thisshower.iloc[0]['peak'] if pkdtstr is None or str(pkdtstr) == 'nan': - # pick the median date of the shower then the approx datetime value - pksollong = (thisshower.iloc[-1]['la_sun'] + thisshower.iloc[0]['la_sun'])/2 + pkdt = getAltShwrPeak(shwr) lve = ephem.previous_vernal_equinox(ephem.Date(datetime.datetime.now(datetime.timezone.utc))) pkdt = ephem.to_timezone(ephem.date(lve+pksollong), tzinfo=datetime.timezone.utc) else: @@ -164,6 +163,22 @@ def getAltShwrName(shwr, dir_path=None): return shower_name +def getAltShwrPeak(shwr, dir_path=None): + if not dir_path: + dir_path = os.path.join(os.getenv('WMPL_LOC', default=os.path.expanduser('~/src/WesternMeteorPyLib/')), 'wmpl','share') + srcfile = os.path.join(dir_path, 'streamfulldata.csv') + rawdf = pd.read_csv(os.path.expanduser(srcfile), sep='|', header=None) + usefuldf = pd.concat([rawdf[3],rawdf[6], rawdf[7]], axis=1) + usefuldf.rename(columns={3:'IAU_code',7:'la_sun'}, inplace=True) + match = usefuldf[usefuldf.IAU_code==shwr] + match = match[match[6] > -1] + if len(match) > 0: + sollon = match.iloc[-1]['la_sun'] + else: + sollon = None + return sollon + + def _loadMajorMinor(dir_path=None): if not dir_path: dir_path = os.path.join(os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')), 'share') From 5a3e121e925baa72944c87c8fb29171fc5d7a6ec Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 23:11:15 +0100 Subject: [PATCH 042/150] typo --- archive/ukmon_pylib/utils/getActiveShowers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index 58ed096d..eb7ccce1 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -83,9 +83,9 @@ def getShowerDets(shwr, asstring=False): name = getAltShwrName(shwr) pkdtstr = thisshower.iloc[0]['peak'] if pkdtstr is None or str(pkdtstr) == 'nan': - pkdt = getAltShwrPeak(shwr) + sollon = getAltShwrPeak(shwr) lve = ephem.previous_vernal_equinox(ephem.Date(datetime.datetime.now(datetime.timezone.utc))) - pkdt = ephem.to_timezone(ephem.date(lve+pksollong), tzinfo=datetime.timezone.utc) + pkdt = ephem.to_timezone(ephem.date(lve + sollon), tzinfo=datetime.timezone.utc) else: pkdt = datetime.datetime.strptime(f'{datetime.datetime.now().year} {pkdtstr}','%Y %b %d') pksollong = np.degrees(jd2SolLonVSOP(datetime2JD(pkdt))) From 431af520f8a766a25ddf15cd2416b85738f030e3 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 23:12:03 +0100 Subject: [PATCH 043/150] anothe typo --- archive/ukmon_pylib/utils/getActiveShowers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index eb7ccce1..37300f9a 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -83,9 +83,9 @@ def getShowerDets(shwr, asstring=False): name = getAltShwrName(shwr) pkdtstr = thisshower.iloc[0]['peak'] if pkdtstr is None or str(pkdtstr) == 'nan': - sollon = getAltShwrPeak(shwr) + pksollong = getAltShwrPeak(shwr) lve = ephem.previous_vernal_equinox(ephem.Date(datetime.datetime.now(datetime.timezone.utc))) - pkdt = ephem.to_timezone(ephem.date(lve + sollon), tzinfo=datetime.timezone.utc) + pkdt = ephem.to_timezone(ephem.date(lve + pksollong), tzinfo=datetime.timezone.utc) else: pkdt = datetime.datetime.strptime(f'{datetime.datetime.now().year} {pkdtstr}','%Y %b %d') pksollong = np.degrees(jd2SolLonVSOP(datetime2JD(pkdt))) From c0f567fe99dfb44da0b17afcd7b34316ca4da82f Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 23:21:08 +0100 Subject: [PATCH 044/150] small bugfixes --- archive/ukmon_pylib/utils/getActiveShowers.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index 37300f9a..966fed20 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -84,6 +84,8 @@ def getShowerDets(shwr, asstring=False): pkdtstr = thisshower.iloc[0]['peak'] if pkdtstr is None or str(pkdtstr) == 'nan': pksollong = getAltShwrPeak(shwr) + if pksollong is None: + pksollong = (thisshower.iloc[0]['la_sun'] + thisshower.iloc[-1]['la_sun'])/2 lve = ephem.previous_vernal_equinox(ephem.Date(datetime.datetime.now(datetime.timezone.utc))) pkdt = ephem.to_timezone(ephem.date(lve + pksollong), tzinfo=datetime.timezone.utc) else: @@ -169,9 +171,9 @@ def getAltShwrPeak(shwr, dir_path=None): srcfile = os.path.join(dir_path, 'streamfulldata.csv') rawdf = pd.read_csv(os.path.expanduser(srcfile), sep='|', header=None) usefuldf = pd.concat([rawdf[3],rawdf[6], rawdf[7]], axis=1) - usefuldf.rename(columns={3:'IAU_code',7:'la_sun'}, inplace=True) + usefuldf.rename(columns={3:'IAU_code',6:'sts', 7:'la_sun'}, inplace=True) match = usefuldf[usefuldf.IAU_code==shwr] - match = match[match[6] > -1] + match = match[match['sts'] > -1] if len(match) > 0: sollon = match.iloc[-1]['la_sun'] else: From ed8e97b5abdcd0921d3dc8d1dfd7281e508c53a3 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Tue, 19 May 2026 23:45:14 +0100 Subject: [PATCH 045/150] add some debug --- archive/ukmon_pylib/utils/getActiveShowers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/ukmon_pylib/utils/getActiveShowers.py b/archive/ukmon_pylib/utils/getActiveShowers.py index 966fed20..81af7fe7 100644 --- a/archive/ukmon_pylib/utils/getActiveShowers.py +++ b/archive/ukmon_pylib/utils/getActiveShowers.py @@ -85,6 +85,7 @@ def getShowerDets(shwr, asstring=False): if pkdtstr is None or str(pkdtstr) == 'nan': pksollong = getAltShwrPeak(shwr) if pksollong is None: + print('no data for', shwr) pksollong = (thisshower.iloc[0]['la_sun'] + thisshower.iloc[-1]['la_sun'])/2 lve = ephem.previous_vernal_equinox(ephem.Date(datetime.datetime.now(datetime.timezone.utc))) pkdt = ephem.to_timezone(ephem.date(lve + pksollong), tzinfo=datetime.timezone.utc) From 91e47bca30523673c21b97c164cf70f0a599fef6 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 12:34:19 +0100 Subject: [PATCH 046/150] update paired/unpaired process --- archive/ukmon_pylib/analysis/getUsedUnused.py | 286 +++++++++++++++++- 1 file changed, 285 insertions(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index 0541ecad..25e3da3f 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -7,7 +7,14 @@ import boto3 import json import pymysql.cursors +import sqlite3 +import re +import datetime +import numpy as np +from wmpl.Formats.CAMS import loadFTPDetectInfo +from wmpl.Utils.TrajConversions import jd2Date, datetime2JD +from wmpl.Trajectory.CorrelateRMS import MeteorObsRMS, MeteorPointRMS, PlateparDummy def getSqlLoginDetails(): # retrieve password and host from SSM. This allows me to manage them from Terraform @@ -58,8 +65,285 @@ def getKnownImages(dtstr, datatype='consumed'): def getUnusedImages(dtstr): + """ + Find all images for 'dtstr' which are not associated with a + match in the matches database + """ allimages = getAllImages(dtstr) uncal = getKnownImages(dtstr, 'uncal') used = getKnownImages(dtstr, 'consumed') - unused = list(set(allimages)-set(used + uncal)) \ No newline at end of file + unused = list(set(allimages)-set(used + uncal)) + +########################################################## +# Handling of observations +########################################################## + +def initMeteorObs(station_code, ftpdetectinfo_path, platepars_recalibrated_dict): + """ Init meteor observations from the FTPdetectinfo file and recalibrated platepars. """ + # Load station coordinates + if len(list(platepars_recalibrated_dict.keys())): + pp_dict = platepars_recalibrated_dict[list(platepars_recalibrated_dict.keys())[0]] + pp = PlateparDummy(**pp_dict) + stations_dict = {station_code: [np.radians(pp.lat), np.radians(pp.lon), pp.elev]} + # Load the FTPdetectinfo file + meteor_list = loadFTPDetectInfo(ftpdetectinfo_path, stations_dict, join_broken_meteors=False) + else: + meteor_list = [] + return meteor_list + + +def openAllObsDb(dbdir, dbname='all_observations.db', force_create=False): + allobsdb = os.path.join(dbdir, dbname) + if not os.path.isfile(allobsdb) and not force_create: + return None + # otherwise, open the database, which will create it if necessary + con = sqlite3.connect(allobsdb) + con.execute('pragma journal_mode=wal') + # check and add the tables if missing + res = con.execute("SELECT name FROM sqlite_master WHERE name='all_obs'") + if res.fetchone() is None: + con.execute("CREATE TABLE all_obs(obs_id VARCHAR(36) UNIQUE, obs_dt REAL, paired INTEGER, status INTEGER)") + con.commit() + return con + + +def getAllObservations(dt_range, dbdir, datadir): + """ + Find all observations in 'datadir' within 'dt_range' and add them to the all-observations database in dbdir. + + Arguments + dt_range: [tuple] pair of datetimes representing the range to be scanned + dbdir: [string] the location of the all-obs database + datadir: [string] the location of the RMS data to be scanned + """ + + + dbname = 'all_observations.db' + con = openAllObsDb(dbdir, dbname, force_create=True) + + avail_station_list = [] + + # get a list of stations of interest + for dir_name in sorted(os.listdir(datadir)): + # Check if the dir name matches the station name pattern + if os.path.isdir(os.path.join(datadir, dir_name)): + if re.match("^[A-Z]{2}[A-Z0-9]{4}$", dir_name): + print("Using station: " + dir_name) + avail_station_list.append(dir_name) + else: + print("Skipping directory: " + dir_name) + + processing_list = [] + + # Go through all station directories + for station_name in avail_station_list: + station_path = os.path.join(datadir, station_name) + # Go through all directories in stations + for night_name in os.listdir(station_path): + # Extract the date and time of directory, if possible + try: + night_dt = datetime.datetime.strptime("_".join(night_name.split("_")[1:3]), + "%Y%m%d_%H%M%S").replace(tzinfo=datetime.timezone.utc) + except: + print(f'Could not parse the date of the night dir: {night_name}') + night_dt = None + continue + if dt_range is not None: + # skip folders more than a day older the requested date range + if night_dt < (dt_range[0]+ datetime.timedelta(days=-1)).replace(tzinfo=datetime.timezone.utc): + continue + night_path = os.path.join(station_path, night_name) + night_path_rel = os.path.join(station_name, night_name) + processing_list.append([station_name, night_path_rel, night_path, night_dt]) + + ### Now process the folders + unpaired_met_obs_list = [] + prev_station = None + station_count = 1 + + total_obs_added = 0 + for station_code, rel_proc_path, proc_path, night_dt in processing_list: + # Check that the night datetime is within the given range of times, if the range is given + if (dt_range is not None) and (night_dt is not None): + dt_beg, dt_end = dt_range + + # Skip all folders which are outside the limits + # allow a day before dt_beg to capture data overlapping from an earlier timezone + if (night_dt < dt_beg + datetime.timedelta(days=-1)) or (night_dt > dt_end): + print(f'skipping {rel_proc_path}') + continue + + print("") + print(f"Processing station: {station_code} {rel_proc_path}") + + ftpdetectinfo_name = None + platepar_recalibrated_name = None + + # Skip files, only take directories + if os.path.isfile(proc_path): + continue + + # Find FTPdetectinfo and platepar files and skip if they're not both present + file_list = os.listdir(proc_path) + joined_file_list = ' '.join(file_list) + + if 'FTPdetectinfo' not in joined_file_list or 'platepars_all_recalibrated.json' not in joined_file_list: + continue + + # okay, we at least have the required files, lets try loading them + for name in file_list: + + # Find FTPdetectinfo + if name.startswith("FTPdetectinfo") and name.endswith('.txt') and \ + ("backup" not in name) and ("uncalibrated" not in name) and ("unfiltered" not in name): + ftpdetectinfo_name = name + continue + + if name == "platepars_all_recalibrated.json": + + try: + # Try loading the recalibrated platepars + with open(os.path.join(proc_path, name)) as f: + platepars_recalibrated_dict = json.load(f) + platepar_recalibrated_name = name + continue + + except: + pass + + + # Skip these observations if no data files were found inside + if (ftpdetectinfo_name is None) or (platepar_recalibrated_name is None): + print(f" Skipping {rel_proc_path} due to missing data files...") + continue + + if len(platepars_recalibrated_dict) == 0: + #print(f" Skipping {rel_proc_path} due to no observations...") + continue + + # More accurate check that the night datetime is within the given range of times, if the range is given + if (dt_range is not None) and (night_dt is not None): + dt_beg, dt_end = dt_range + + # Find the time of the latest detection in this dataset. + # We add on 10s to the time of the latest detection to allow for the duration of an RMS FF block + + latest_obs = datetime.datetime.strptime(list(platepars_recalibrated_dict.keys())[-1][10:25], '%Y%m%d_%H%M%S') + latest_obs = latest_obs.replace(tzinfo=datetime.timezone.utc) + datetime.timedelta(seconds=10) + + # Filter out any folders whose start-date is after the bucket end date, or whose + # latest observaton is before the bucket start date. + + if (latest_obs < dt_beg) or (night_dt > dt_end): + # log.info(f'skipping {rel_proc_path} as no relevant observations') + continue + + if station_code != prev_station: + station_count += 1 + prev_station = station_code + + # Load platepars + with open(os.path.join(proc_path, platepar_recalibrated_name)) as f: + platepars_recalibrated_dict = json.load(f) + + # If all files exist, init the meteor container object + cams_met_obs_list = initMeteorObs(station_code, os.path.join(proc_path, ftpdetectinfo_name), platepars_recalibrated_dict) + + # Format the observation object to the one required by the trajectory correlator + added_count = 0 + for cams_met_obs in cams_met_obs_list: + + obs_dt = jd2Date(cams_met_obs.jdt_ref, dt_obj=True, tzinfo=datetime.timezone.utc) + + if dt_range and (obs_dt < dt_beg or obs_dt > dt_end): + #log.info(f'skipping {cams_met_obs.ff_name} as outside current bucket') + continue + + # Get the platepar + if cams_met_obs.ff_name in platepars_recalibrated_dict: + pp_dict = platepars_recalibrated_dict[cams_met_obs.ff_name] + else: + print(" Skipping {:s}, not found in platepar dict".format(cams_met_obs.ff_name)) + continue + + pp = PlateparDummy(**pp_dict) + + # Skip observations which weren't recalibrated + if hasattr(pp, "auto_recalibrated"): + if not pp.auto_recalibrated: + print(" Skipping {:s}, not recalibrated!".format(cams_met_obs.ff_name)) + continue + + # Init meteor data + meteor_data = [] + for entry in zip(cams_met_obs.frames, cams_met_obs.time_data, cams_met_obs.x_data, + cams_met_obs.y_data, cams_met_obs.azim_data, cams_met_obs.elev_data, + cams_met_obs.ra_data, cams_met_obs.dec_data, cams_met_obs.mag_data): + + frame, time_rel, x, y, azim, alt, ra, dec, mag = entry + + met_point = MeteorPointRMS(frame, time_rel, x, y, np.degrees(ra), np.degrees(dec), + np.degrees(azim), np.degrees(alt), mag) + + meteor_data.append(met_point) + + # Init the new meteor observation object + met_obs = MeteorObsRMS(station_code, obs_dt, pp,meteor_data, rel_proc_path, ff_name=cams_met_obs.ff_name) + + # Skip bad observations + if met_obs.bad_data: + continue + jdt_ref = datetime2JD(met_obs.reference_dt) + con.execute(f"insert into all_obs values ('{met_obs.obs_id}', {jdt_ref}, 0, 1) on conflict(obs_id) do nothing") + con.commit() + added_count += 1 + + print(f' Added {added_count} observations') + total_obs_added += added_count + + print(f'Finished loading {total_obs_added} observations') + con.close() + markObsPaired(dbdir) + return + + +def markObsPaired(dbdir, allobsdb=None, obsdb=None, obsdbdir=None): + """ + Mark observatious as paired in the all-observations database + + arguments: + dbdir: the location of the all-observations database + + keyword arguments: + allobsdb: the name of the all-observations database, default 'all_observations.db' + obsdb: the name of the paired observations database, default 'observations.db' + obsdbdir: the location of the paired-obs database, default same as all-obs + + """ + if not allobsdb: + allobsdb = 'all_observations.db' + if not obsdb: + obsdb = 'observations.db' + if not obsdbdir: + obsdbdir = dbdir + con = openAllObsDb(dbdir, dbname=allobsdb, force_create=False) + if con: + source_db_path = os.path.join(obsdbdir, obsdb) + if os.path.isfile(source_db_path): + cur = con.execute('select count(*) from all_obs where paired=1') + vals = cur.fetchall() + paired_before = vals[0][0] + con.execute(f"attach database '{source_db_path}' as sourcedb") + con.execute('update all_obs set paired=1 where obs_id in (select obs_id from sourcedb.paired_obs where status=1)') + con.commit() + con.execute("detach database 'sourcedb'") + cur = con.execute('select count(*) from all_obs where paired=1') + vals = cur.fetchall() + paired_after = vals[0][0] + con.close() + print(f'marked {paired_after - paired_before} observations paired') + else: + print(f'unable to open observations.db in {obsdbdir}') + else: + print(f'unable to open all_observations.db in {dbdir}') \ No newline at end of file From cb035b53c3f9a445f897bd384c5012e0d7963f85 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 12:48:32 +0100 Subject: [PATCH 047/150] bugfix in timing metrics calcs --- archive/ukmon_pylib/metrics/timingMetrics.py | 2 +- archive/website/createOrbitIndex.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/ukmon_pylib/metrics/timingMetrics.py b/archive/ukmon_pylib/metrics/timingMetrics.py index cef8b4b0..290b5fcb 100644 --- a/archive/ukmon_pylib/metrics/timingMetrics.py +++ b/archive/ukmon_pylib/metrics/timingMetrics.py @@ -76,7 +76,7 @@ def getLogStats(nightlogf, matchlogf, thisdy): for rw in alldata: dtpart = rw[4:19] evtdt = datetime.datetime.strptime(f'{yr} {dtpart}', '%Y %b %d %H:%M:%S') - if 'start nightlyJob' in rw: + if 'nightlyJob: starting' in rw: starttime = evtdt elapsed_secs = (evtdt - starttime).seconds txtpart = rw[20:] diff --git a/archive/website/createOrbitIndex.sh b/archive/website/createOrbitIndex.sh index 50ad9ab1..b808a31d 100644 --- a/archive/website/createOrbitIndex.sh +++ b/archive/website/createOrbitIndex.sh @@ -20,7 +20,7 @@ ym=$1 yr=${ym:0:4} mth=${ym:4:2} dy=${ym:6:2} -logger -s -t $(basename $0 .sh) "finished" +logger -s -t $(basename $0 .sh) "starting" logger -s -t createOrbitIndex "creating orbit index page for $yr $mth $dy" From 930549bc5aa63461d69419589cce5efb305ca7d9 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 13:51:07 +0100 Subject: [PATCH 048/150] more work on #383 to get a list of used and unused detections --- archive/analysis/runDistrib.sh | 1 + archive/ukmon_pylib/analysis/getUsedUnused.py | 35 ++++++++++++++----- .../traj/createDistribMatchingSh.py | 3 ++ 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/archive/analysis/runDistrib.sh b/archive/analysis/runDistrib.sh index 00b125b4..231f1fd0 100644 --- a/archive/analysis/runDistrib.sh +++ b/archive/analysis/runDistrib.sh @@ -71,6 +71,7 @@ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/pickleAnalyser.py $SERVERUSERID rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/traj/ShowerAssociation.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/traj/ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/utils/convertSolLon.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/utils/ rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/maintenance/dataMaintenance.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/maintenance/ +rsync -avz -e "ssh -i $SERVERSSHKEY" $PYLIB/analysis/getUsedUnused.py $SERVERUSERID@$CALCSERVERIP:src/ukmon_pylib/analysis/ # now run the script logger -s -t $(basename $0 .sh) "start distributed processing" diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index 25e3da3f..6a68596c 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -4,6 +4,7 @@ # Copyright (C) 2018-2023 Mark McIntyre import os +import sys import boto3 import json import pymysql.cursors @@ -174,8 +175,8 @@ def getAllObservations(dt_range, dbdir, datadir): print(f'skipping {rel_proc_path}') continue - print("") - print(f"Processing station: {station_code} {rel_proc_path}") + #print("") + #print(f"Processing station: {station_code} {rel_proc_path}") ftpdetectinfo_name = None platepar_recalibrated_name = None @@ -215,7 +216,7 @@ def getAllObservations(dt_range, dbdir, datadir): # Skip these observations if no data files were found inside if (ftpdetectinfo_name is None) or (platepar_recalibrated_name is None): - print(f" Skipping {rel_proc_path} due to missing data files...") + #print(f" Skipping {rel_proc_path} due to missing data files...") continue if len(platepars_recalibrated_dict) == 0: @@ -264,7 +265,7 @@ def getAllObservations(dt_range, dbdir, datadir): if cams_met_obs.ff_name in platepars_recalibrated_dict: pp_dict = platepars_recalibrated_dict[cams_met_obs.ff_name] else: - print(" Skipping {:s}, not found in platepar dict".format(cams_met_obs.ff_name)) + #print(" Skipping {:s}, not found in platepar dict".format(cams_met_obs.ff_name)) continue pp = PlateparDummy(**pp_dict) @@ -272,7 +273,7 @@ def getAllObservations(dt_range, dbdir, datadir): # Skip observations which weren't recalibrated if hasattr(pp, "auto_recalibrated"): if not pp.auto_recalibrated: - print(" Skipping {:s}, not recalibrated!".format(cams_met_obs.ff_name)) + #print(" Skipping {:s}, not recalibrated!".format(cams_met_obs.ff_name)) continue # Init meteor data @@ -299,10 +300,10 @@ def getAllObservations(dt_range, dbdir, datadir): con.commit() added_count += 1 - print(f' Added {added_count} observations') + print(f' Added {added_count} observations from {rel_proc_path}') total_obs_added += added_count - print(f'Finished loading {total_obs_added} observations') + print(f'Finished adding {total_obs_added} observations') con.close() markObsPaired(dbdir) return @@ -346,4 +347,22 @@ def markObsPaired(dbdir, allobsdb=None, obsdb=None, obsdbdir=None): else: print(f'unable to open observations.db in {obsdbdir}') else: - print(f'unable to open all_observations.db in {dbdir}') \ No newline at end of file + print(f'unable to open all_observations.db in {dbdir}') + + + +if __name__ == '__main__': + if len(sys.argv) < 2: + print('usage: getUsedUnused.py action {args}') + else: + action = sys.argv[1] + if action.lower() == 'updateobs': + start = int(sys.argv[2]) + end = int(sys.argv[3]) + dbdir = os.path.expanduser(sys.argv[4]) + datadir = os.path.expanduser(sys.argv[5]) + + dt_beg = datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(days=start) + dt_end = datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(days=end) + dt_range = [dt_beg, dt_end] + getAllObservations(dt_range, dbdir, datadir) diff --git a/archive/ukmon_pylib/traj/createDistribMatchingSh.py b/archive/ukmon_pylib/traj/createDistribMatchingSh.py index 13c3e588..3ec049ec 100644 --- a/archive/ukmon_pylib/traj/createDistribMatchingSh.py +++ b/archive/ukmon_pylib/traj/createDistribMatchingSh.py @@ -154,6 +154,9 @@ def createExecConsolSh(matchstart, matchend, execconsolsh, istest=''): outf.write(f'python -m traj.consolidateDistTraj ~/data/distrib/canddbs/ {calcdir}/dbs/\n') + outf.write('logger -s -t execConsol updating used/unused database\n') + outf.write(f'python -m analysis.getUsedUnused updateobs {matchstart} {matchend} {calcdir}/dbs {calcdir}') + outf.write(f'aws s3 sync {calcdir}/dbs/ {srcpath}/dbs/ --exclude "*" --include "*.db" --quiet\n') outf.write('logger -s -t execConsol creating density plots\n') From 18acf2d7956edef81f4aec7b7828ba8fc596afe1 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 13:53:20 +0100 Subject: [PATCH 049/150] typo --- archive/ukmon_pylib/traj/createDistribMatchingSh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/traj/createDistribMatchingSh.py b/archive/ukmon_pylib/traj/createDistribMatchingSh.py index 3ec049ec..397a55fd 100644 --- a/archive/ukmon_pylib/traj/createDistribMatchingSh.py +++ b/archive/ukmon_pylib/traj/createDistribMatchingSh.py @@ -155,7 +155,7 @@ def createExecConsolSh(matchstart, matchend, execconsolsh, istest=''): outf.write(f'python -m traj.consolidateDistTraj ~/data/distrib/canddbs/ {calcdir}/dbs/\n') outf.write('logger -s -t execConsol updating used/unused database\n') - outf.write(f'python -m analysis.getUsedUnused updateobs {matchstart} {matchend} {calcdir}/dbs {calcdir}') + outf.write(f'python -m analysis.getUsedUnused updateobs {matchstart} {matchend} {calcdir}/dbs {calcdir}\n') outf.write(f'aws s3 sync {calcdir}/dbs/ {srcpath}/dbs/ --exclude "*" --include "*.db" --quiet\n') From 0157c55e25828ff8d0fb996a242f141e1938602d Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:44:58 +0100 Subject: [PATCH 050/150] add index to singles table --- archive/database/ddl/create_tables.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/database/ddl/create_tables.sql b/archive/database/ddl/create_tables.sql index 655a5076..3165b706 100644 --- a/archive/database/ddl/create_tables.sql +++ b/archive/database/ddl/create_tables.sql @@ -33,6 +33,7 @@ create table singles( ); alter ignore table ukmon.singles add unique uniq_Dtstamp (Dtstamp); +create index t_filname on singles(filname); create table matches( _dbver varchar(6), From 2538e57db5150e30e7cfc42f04b928d29d87d332 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:45:27 +0100 Subject: [PATCH 051/150] remove unused file --- archive/ukmon_pylib/utils/getUncalImages.py | 25 --------------------- 1 file changed, 25 deletions(-) delete mode 100644 archive/ukmon_pylib/utils/getUncalImages.py diff --git a/archive/ukmon_pylib/utils/getUncalImages.py b/archive/ukmon_pylib/utils/getUncalImages.py deleted file mode 100644 index 381c96a7..00000000 --- a/archive/ukmon_pylib/utils/getUncalImages.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre -# - -import os -import datetime - - -def getUncalibratedImageList(dtstr=None): - datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) - now = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%Y%m%d') - if dtstr is not None and dtstr != now: - logfile = os.path.join(datadir, '..', 'logs', f'matchJob.log-{dtstr}') - else: - logfile = os.path.join(datadir, '..', 'logs', 'matchJob.log') - if os.path.isfile(logfile): - flines = open(logfile, 'r').readlines() - uncal = [f for f in flines if 'not recalibrated' in f] - imglist = [x.split('Skipping ')[1].split(',')[0] for x in uncal] - with open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'w') as outf: - for li in imglist: - outf.write(f'{li}\n') - else: - print('file not found', logfile) - imglist=[] - return imglist From ecd1f2fe27c52a7bd28b8be29cd688534e9a19f8 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:46:13 +0100 Subject: [PATCH 052/150] update mariadb directly with uncalibrated status --- archive/analysis/updatePlotsAndDetStatus.sh | 2 +- archive/ukmon_pylib/analysis/getUsedUnused.py | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/archive/analysis/updatePlotsAndDetStatus.sh b/archive/analysis/updatePlotsAndDetStatus.sh index c7414631..f7f5f84c 100644 --- a/archive/analysis/updatePlotsAndDetStatus.sh +++ b/archive/analysis/updatePlotsAndDetStatus.sh @@ -74,7 +74,7 @@ logger -s -t $(basename $0 .sh) "get a list of uncalibrated data" aws s3 sync $UKMONSHAREDBUCKET/matches/consumed/ $DATADIR/single/used/ --exclude "*" --include "*.txt" --quiet rundate=$(cat $DATADIR/rundate.txt) -python -c "from utils.getUncalImages import getUncalibratedImageList;getUncalibratedImageList('$rundate');" +python -c "from utils.getUsedUnused import getUncalibratedImageList;getUncalibratedImageList('$rundate');" # refresh the website index pages just in case any new data dailyrep=$(ls -1tr $DATADIR/dailyreports/20* | tail -1) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index 6a68596c..cdb367d0 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -65,6 +65,36 @@ def getKnownImages(dtstr, datatype='consumed'): return imglist +def getUncalibratedImageList(dtstr=None): + datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) + now = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%Y%m%d') + + host, user, passwd, db = getSqlLoginDetails() + connection = pymysql.connect(host=host, user=user, password=passwd, database=db, cursorclass=pymysql.cursors.DictCursor) + cur = connection.cursor() + + if dtstr is not None and dtstr != now: + logfile = os.path.join(datadir, '..', 'logs', f'matchJob.log-{dtstr}') + else: + logfile = os.path.join(datadir, '..', 'logs', 'matchJob.log') + if os.path.isfile(logfile): + flines = open(logfile, 'r').readlines() + uncal = [f for f in flines if 'not recalibrated' in f] + imglist = [x.split('Skipping ')[1].split(',')[0] for x in uncal] + with open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'w') as outf: + for li in imglist: + outf.write(f'{li}\n') + sqlstr = f"update singles set status='U' where filname='{li}" + cur.execute(sqlstr) + else: + print('file not found', logfile) + imglist=[] + cur.commit() + cur.close() + connection.close() + return imglist + + def getUnusedImages(dtstr): """ Find all images for 'dtstr' which are not associated with a @@ -75,9 +105,18 @@ def getUnusedImages(dtstr): uncal = getKnownImages(dtstr, 'uncal') used = getKnownImages(dtstr, 'consumed') unused = list(set(allimages)-set(used + uncal)) + datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) + with open(os.path.join(datadir,'single','used',f'unused_{dtstr}.txt'), 'w') as outf: + pass + + # df.index[df.a==3].tolist() to get row indexes where column a == 3 + # df.loc[1, 'b'] = 5 to set row 1, column 'b' to value 5 + ########################################################## # Handling of observations +# This has to be run on the calcserver as it needs access +# to the raw RMS data. ########################################################## def initMeteorObs(station_code, ftpdetectinfo_path, platepars_recalibrated_dict): @@ -366,3 +405,6 @@ def markObsPaired(dbdir, allobsdb=None, obsdb=None, obsdbdir=None): dt_end = datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(days=end) dt_range = [dt_beg, dt_end] getAllObservations(dt_range, dbdir, datadir) + elif action.lower() == 'unusedimgs': + dtstr = sys.argv[2] + getUnusedImages(dtstr) \ No newline at end of file From f9e99099200e7036964d675ee2e3b3749076a3b1 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:47:24 +0100 Subject: [PATCH 053/150] typo --- archive/analysis/updatePlotsAndDetStatus.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/analysis/updatePlotsAndDetStatus.sh b/archive/analysis/updatePlotsAndDetStatus.sh index f7f5f84c..57cc39ab 100644 --- a/archive/analysis/updatePlotsAndDetStatus.sh +++ b/archive/analysis/updatePlotsAndDetStatus.sh @@ -74,7 +74,7 @@ logger -s -t $(basename $0 .sh) "get a list of uncalibrated data" aws s3 sync $UKMONSHAREDBUCKET/matches/consumed/ $DATADIR/single/used/ --exclude "*" --include "*.txt" --quiet rundate=$(cat $DATADIR/rundate.txt) -python -c "from utils.getUsedUnused import getUncalibratedImageList;getUncalibratedImageList('$rundate');" +python -c "from analysis.getUsedUnused import getUncalibratedImageList;getUncalibratedImageList('$rundate');" # refresh the website index pages just in case any new data dailyrep=$(ls -1tr $DATADIR/dailyreports/20* | tail -1) From b806f88b3f79c26fcdaff9ccdb521b84d7f3354a Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:48:28 +0100 Subject: [PATCH 054/150] another typo --- archive/ukmon_pylib/analysis/getUsedUnused.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index cdb367d0..ef97bb14 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -84,7 +84,7 @@ def getUncalibratedImageList(dtstr=None): with open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'w') as outf: for li in imglist: outf.write(f'{li}\n') - sqlstr = f"update singles set status='U' where filname='{li}" + sqlstr = f"update singles set status='U' where filname='{li}'" cur.execute(sqlstr) else: print('file not found', logfile) From f16a96f28bc9dfea9e6a01ece5e5d0d7d7d81070 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:51:31 +0100 Subject: [PATCH 055/150] add index on status --- archive/database/ddl/create_tables.sql | 1 + archive/ukmon_pylib/analysis/getUsedUnused.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/archive/database/ddl/create_tables.sql b/archive/database/ddl/create_tables.sql index 3165b706..9b5c9b97 100644 --- a/archive/database/ddl/create_tables.sql +++ b/archive/database/ddl/create_tables.sql @@ -34,6 +34,7 @@ create table singles( alter ignore table ukmon.singles add unique uniq_Dtstamp (Dtstamp); create index t_filname on singles(filname); +create index t_status on singles(status); create table matches( _dbver varchar(6), diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index ef97bb14..f73843cb 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -89,7 +89,7 @@ def getUncalibratedImageList(dtstr=None): else: print('file not found', logfile) imglist=[] - cur.commit() + connection.commit() cur.close() connection.close() return imglist From c769f352edb6cda9e709470457c9b32630292f42 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:57:23 +0100 Subject: [PATCH 056/150] support processing historical uncal data --- archive/ukmon_pylib/analysis/getUsedUnused.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index f73843cb..5254c405 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -87,8 +87,10 @@ def getUncalibratedImageList(dtstr=None): sqlstr = f"update singles set status='U' where filname='{li}'" cur.execute(sqlstr) else: - print('file not found', logfile) - imglist=[] + imglist = open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'r') + for li in imglist: + sqlstr = f"update singles set status='U' where filname='{li}'" + cur.execute(sqlstr) connection.commit() cur.close() connection.close() From 4fe459cf30789e8bda2b09423d889cb5016d50ed Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 22:58:00 +0100 Subject: [PATCH 057/150] forgot to readlines --- archive/ukmon_pylib/analysis/getUsedUnused.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index 5254c405..68a275da 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -87,7 +87,7 @@ def getUncalibratedImageList(dtstr=None): sqlstr = f"update singles set status='U' where filname='{li}'" cur.execute(sqlstr) else: - imglist = open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'r') + imglist = open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'r').readlines() for li in imglist: sqlstr = f"update singles set status='U' where filname='{li}'" cur.execute(sqlstr) From 48f34318264ce7188456f5a847405db6c30b28d9 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 23:01:39 +0100 Subject: [PATCH 058/150] need to strop newlines --- archive/ukmon_pylib/analysis/getUsedUnused.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index 68a275da..e196e139 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -89,7 +89,7 @@ def getUncalibratedImageList(dtstr=None): else: imglist = open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'r').readlines() for li in imglist: - sqlstr = f"update singles set status='U' where filname='{li}'" + sqlstr = f"update singles set status='U' where filname='{li.strip()}'" cur.execute(sqlstr) connection.commit() cur.close() From c79c2ec3de0d4094b315a44e9e3f4cf2ec6ee922 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 23:02:42 +0100 Subject: [PATCH 059/150] add debug --- archive/ukmon_pylib/analysis/getUsedUnused.py | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index e196e139..47b1fe09 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -90,6 +90,7 @@ def getUncalibratedImageList(dtstr=None): imglist = open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'r').readlines() for li in imglist: sqlstr = f"update singles set status='U' where filname='{li.strip()}'" + print(sqlstr) cur.execute(sqlstr) connection.commit() cur.close() From dbdcab50baba66ed781df91fd1725b31608f0fa2 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 23:03:50 +0100 Subject: [PATCH 060/150] working now --- archive/ukmon_pylib/analysis/getUsedUnused.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index 47b1fe09..e6ad5921 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -90,7 +90,7 @@ def getUncalibratedImageList(dtstr=None): imglist = open(os.path.join(datadir, 'single', 'used', f'uncal_{dtstr}.txt'), 'r').readlines() for li in imglist: sqlstr = f"update singles set status='U' where filname='{li.strip()}'" - print(sqlstr) + #print(sqlstr) cur.execute(sqlstr) connection.commit() cur.close() From 4b9e0df685f0f15cad4b59ba914ba4f1ade2340b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 23:07:24 +0100 Subject: [PATCH 061/150] add code to update matched images in the sql database --- archive/ukmon_pylib/analysis/getUsedUnused.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index e6ad5921..b488a450 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -65,6 +65,22 @@ def getKnownImages(dtstr, datatype='consumed'): return imglist +def getMatchedImageList(dtstr): + datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) + + host, user, passwd, db = getSqlLoginDetails() + connection = pymysql.connect(host=host, user=user, password=passwd, database=db, cursorclass=pymysql.cursors.DictCursor) + cur = connection.cursor() + imglist = open(os.path.join(datadir, 'single', 'used', f'consumed_{dtstr}.txt'), 'r').readlines() + for li in imglist: + sqlstr = f"update singles set status='M' where filname='{li.strip()}'" + #print(sqlstr) + cur.execute(sqlstr) + connection.commit() + cur.close() + connection.close() + + def getUncalibratedImageList(dtstr=None): datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) now = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%Y%m%d') From 3fa9c568301a1aaf16eb84336ef1b36601e46c57 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 23:12:05 +0100 Subject: [PATCH 062/150] update mariadb each day with matched and uncal status --- archive/analysis/updatePlotsAndDetStatus.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/archive/analysis/updatePlotsAndDetStatus.sh b/archive/analysis/updatePlotsAndDetStatus.sh index 57cc39ab..7ee20844 100644 --- a/archive/analysis/updatePlotsAndDetStatus.sh +++ b/archive/analysis/updatePlotsAndDetStatus.sh @@ -70,11 +70,12 @@ logger -s -t $(basename $0 .sh) "job run, stop the server again" aws ec2 stop-instances --instance-ids $SERVERINSTANCEID -logger -s -t $(basename $0 .sh) "get a list of uncalibrated data" +logger -s -t $(basename $0 .sh) "get a list of uncalibrated and matched data" aws s3 sync $UKMONSHAREDBUCKET/matches/consumed/ $DATADIR/single/used/ --exclude "*" --include "*.txt" --quiet rundate=$(cat $DATADIR/rundate.txt) python -c "from analysis.getUsedUnused import getUncalibratedImageList;getUncalibratedImageList('$rundate');" +python -c "from analysis.getUsedUnused import getMatchedImageList;getMatchedImageList('$rundate');" # refresh the website index pages just in case any new data dailyrep=$(ls -1tr $DATADIR/dailyreports/20* | tail -1) From 98738aed84873ae652df3bb5a5048c7afec8cbd7 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 20 May 2026 23:21:00 +0100 Subject: [PATCH 063/150] performance improvement --- archive/ukmon_pylib/analysis/getUsedUnused.py | 53 ++++++------------- 1 file changed, 16 insertions(+), 37 deletions(-) diff --git a/archive/ukmon_pylib/analysis/getUsedUnused.py b/archive/ukmon_pylib/analysis/getUsedUnused.py index b488a450..5b5f3ee7 100644 --- a/archive/ukmon_pylib/analysis/getUsedUnused.py +++ b/archive/ukmon_pylib/analysis/getUsedUnused.py @@ -38,7 +38,11 @@ def getAllImages(dtstr): """ host, user, passwd, db = getSqlLoginDetails() connection = pymysql.connect(host=host, user=user, password=passwd, database=db, cursorclass=pymysql.cursors.DictCursor) - sqlstr = f'select filname from singles where Y={dtstr[:4]} and M={int(dtstr[4:6])} and D={int(dtstr[6:8])}' + + t_beg = datetime.datetime.strptime(dtstr, '%Y%m%d').timestamp() + t_end = t_beg + 86400 + + sqlstr = f'select filname from singles where dtstamp>={t_beg} and dtstamp<={t_end}' with connection.cursor() as cursor: cursor.execute(sqlstr) result = cursor.fetchall() @@ -49,23 +53,13 @@ def getAllImages(dtstr): return res -def getKnownImages(dtstr, datatype='consumed'): - """ - Get a list of all images that were involved in a match or were uncalibrated, - depending on the value of datatype (consumed or uncal) - The raw data are generated by a process on the matching engine server +def getMatchedImageList(dtstr): """ - datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) - srcfile = os.path.join(datadir,'single','used',f'{datatype}_{dtstr}.txt') - imglist = [] - if os.path.isfile(srcfile): - used = open(srcfile,'r').readlines() - for img in used: - imglist.append(img.strip()) - return imglist + Read matched image list created on the calcengine, and load the data into MariaDB - -def getMatchedImageList(dtstr): + arguments: + dtstr: the date for which to read the data file + """ datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) host, user, passwd, db = getSqlLoginDetails() @@ -82,6 +76,12 @@ def getMatchedImageList(dtstr): def getUncalibratedImageList(dtstr=None): + """ + Read the match log and get a list of uncalibrated images, then load the data into MariaDB + + arguments: + dtstr: the date for which to read the data file, defaults to today + """ datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) now = datetime.datetime.now(tz=datetime.timezone.utc).strftime('%Y%m%d') @@ -114,24 +114,6 @@ def getUncalibratedImageList(dtstr=None): return imglist -def getUnusedImages(dtstr): - """ - Find all images for 'dtstr' which are not associated with a - match in the matches database - """ - - allimages = getAllImages(dtstr) - uncal = getKnownImages(dtstr, 'uncal') - used = getKnownImages(dtstr, 'consumed') - unused = list(set(allimages)-set(used + uncal)) - datadir=os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) - with open(os.path.join(datadir,'single','used',f'unused_{dtstr}.txt'), 'w') as outf: - pass - - # df.index[df.a==3].tolist() to get row indexes where column a == 3 - # df.loc[1, 'b'] = 5 to set row 1, column 'b' to value 5 - - ########################################################## # Handling of observations # This has to be run on the calcserver as it needs access @@ -424,6 +406,3 @@ def markObsPaired(dbdir, allobsdb=None, obsdb=None, obsdbdir=None): dt_end = datetime.datetime.now(tz=datetime.timezone.utc) - datetime.timedelta(days=end) dt_range = [dt_beg, dt_end] getAllObservations(dt_range, dbdir, datadir) - elif action.lower() == 'unusedimgs': - dtstr = sys.argv[2] - getUnusedImages(dtstr) \ No newline at end of file From a51c88805546fd170f4dea9d0da90e17e5d8d7f1 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 21 May 2026 16:27:08 +0100 Subject: [PATCH 064/150] another tweak to the script that checks account status --- archive/server_setup/acctStatusChecks.sh | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/archive/server_setup/acctStatusChecks.sh b/archive/server_setup/acctStatusChecks.sh index ac533f76..de3c311a 100644 --- a/archive/server_setup/acctStatusChecks.sh +++ b/archive/server_setup/acctStatusChecks.sh @@ -7,6 +7,14 @@ cd $here sudo ls -1 /var/sftp | egrep -v "test|logup" > moved.txt grep batchs /home/ubuntu/prod/data/reports/stationlogins.txt | cut -c 42-61 | sed 's/ //g' | sort | uniq > switched.txt grep -v batchs /home/ubuntu/prod/data/reports/stationlogins.txt | cut -c 42-61 | sed 's/ //g' | grep -v StationID| sort | uniq > pending.txt +rm -f truepending.txt inflight.txt +cat pending.txt | while read i ; do grep $i withowner.txt > /dev/null ; if [ $? -ne 0 ] ; then echo $i >> truepending.txt ; else echo $i >> inflight.txt ; fi ; done +rm -f pending.txt +cat truepending.txt | while read i ; do grep $i /home/ubuntu/prod/data/reports/stationlogins.txt | cut -c43-100 ; done >> pending.txt +rm -f truepending.txt owneraware.txt +cat inflight.txt | while read i; do grep $i withowner.txt | awk -F "," '{print $1 $2 $4}' >> owneraware.txt ; done +rm inflight.txt + ssh ukmonhelper2 "~/server_setup/get-nbd.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > dead.txt ssh ukmonhelper2 "~/server_setup/get-all.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > all-accounts.txt @@ -16,11 +24,13 @@ python ~/src/ukmda-dataprocessing/archive/server_setup/checkSftpAccounts.py echo "" > statusreport.txt echo "Migrated is a count of how many stations got set up on the new server," >> statusreport.txt -echo "Done is how many have cut over, pending is how many have not" >> statusreport.txt +echo "Done is how many have cut over, In Flight is how many are known problems." >> statusreport.txt +echo "Pending is how many are pending cutover but no response from owner." >> statusreport.txt echo "" >> statusreport.txt -echo "Migrated: $(wc -l moved.txt | awk '{print $1}')" >> statusreport.txt -echo "Done: $(wc -l switched.txt | awk '{print $1}')" >> statusreport.txt -echo "Pending: $(wc -l pending.txt | awk '{print $1}')" >> statusreport.txt +echo "Migrated: $(wc -l moved.txt | awk '{print $1}')" >> statusreport.txt +echo "Done: $(wc -l switched.txt | awk '{print $1}')" >> statusreport.txt +echo "In Flight: $(wc -l owneraware.txt)| awk '{print $1}')" >> statusreport.txt +echo "Pending: $(wc -l pending.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt echo "Live is how many have connected in the last 10 days" >> statusreport.txt echo "Inactive is how many didn't connect for 10 days" >> statusreport.txt @@ -37,4 +47,10 @@ echo "they've left the network or been offline for years" >> statusreport.txt echo "" >> statusreport.txt echo "Dead: $(wc -l dead.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt +echo "Pending List">> statusreport.txt +cat pending.txt >> statusreport.txt +echo "" >> statusreport.txt +echo "Not Uploading List">> statusreport.txt +cat not_uploading.txt >> statusreport.txt + cat statusreport.txt From 0ebf8ccca4d1e3ddd8b84823830d2d8ab59d2a9a Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 21 May 2026 19:27:05 +0100 Subject: [PATCH 065/150] remove unnecessary code --- archive/server_setup/checkSftpAccounts.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/archive/server_setup/checkSftpAccounts.py b/archive/server_setup/checkSftpAccounts.py index 31f099f1..b8572b17 100644 --- a/archive/server_setup/checkSftpAccounts.py +++ b/archive/server_setup/checkSftpAccounts.py @@ -64,7 +64,7 @@ print('done list is missing', nam) outf.write(f'{nam}\n') - +""" moved = open('moved.txt').readlines() pending = open('pending.txt').readlines() switched = open('switched.txt').readlines() @@ -80,9 +80,10 @@ # these are probably accounts i know need to move but are currently offline movednotpending = [x for x in moved if x not in pending and x not in switched] if len(movednotpending) > 0: - print('stations moved but not connecting - check on these too') + print('stations moved but# not connecting - check on these too') print(movednotpending) with open('notpending.txt', 'w') as outf: for nam in movednotpending: outf.write(f'{nam}\n') -print("") \ No newline at end of file +print("") +""" \ No newline at end of file From 57eee8ad6ed05b6d5e153ba3a235084550c6cc31 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 21 May 2026 22:37:54 +0100 Subject: [PATCH 066/150] minor fixes --- archive/server_setup/acctStatusChecks.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/server_setup/acctStatusChecks.sh b/archive/server_setup/acctStatusChecks.sh index de3c311a..608ff74f 100644 --- a/archive/server_setup/acctStatusChecks.sh +++ b/archive/server_setup/acctStatusChecks.sh @@ -29,7 +29,7 @@ echo "Pending is how many are pending cutover but no response from owner." >> st echo "" >> statusreport.txt echo "Migrated: $(wc -l moved.txt | awk '{print $1}')" >> statusreport.txt echo "Done: $(wc -l switched.txt | awk '{print $1}')" >> statusreport.txt -echo "In Flight: $(wc -l owneraware.txt)| awk '{print $1}')" >> statusreport.txt +echo "In Flight: $(wc -l owneraware.txt| awk '{print $1}')" >> statusreport.txt echo "Pending: $(wc -l pending.txt | awk '{print $1}')" >> statusreport.txt echo "" >> statusreport.txt echo "Live is how many have connected in the last 10 days" >> statusreport.txt From 9032bd421e357ba90215275b507130e21050b3c7 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 21 May 2026 23:59:53 +0100 Subject: [PATCH 067/150] Updates to pause livestream refreshes if daterange selected closes #385 --- archive/static_content/js/livestream.js | 17 +++++++++++++---- archive/static_content/live/index.html | 12 +++++++++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/archive/static_content/js/livestream.js b/archive/static_content/js/livestream.js index 76da7247..c1358d00 100644 --- a/archive/static_content/js/livestream.js +++ b/archive/static_content/js/livestream.js @@ -11,6 +11,7 @@ $('#selectInterval .date').datepicker({ 'endDate': '0' }); + // initialize datepair var res = document.getElementById("selectInterval"); var dateSelect = new Datepair(res, { @@ -37,7 +38,7 @@ $('#selectInterval').on('rangeSelected', function(){ } } }); - + var apiurl = 'https://api.ukmeteors.co.uk/liveimages/getlive'; var form = document.querySelector("form"); form.addEventListener("submit", function (event) { @@ -53,6 +54,10 @@ form.addEventListener("submit", function (event) { var e = document.getElementById("statselect"); strstat = e.options[e.selectedIndex].text; } + if (intvlid != 0) { + clearInterval(intvlid); + console.log("refresh interval cancelled"); + } if (d1==="") { dtval = "latest"; enddtval = "latest"; @@ -79,9 +84,9 @@ form.addEventListener("submit", function (event) { }, complete: function (xhr, status) { } - }); + }); // end ajax call event.preventDefault();} -); +); // end form function getCurrentDate() { @@ -90,7 +95,9 @@ function getCurrentDate() { var mt = (now.getMonth()+1).toString().padStart(2,"0"); var dy = (now.getDate()).toString().padStart(2,"0"); var hr = (now.getHours()).toString().padStart(2,"0"); - var z = + yr + mt + dy + "_" + hr; + var mi = (now.getMinutes()).toString().padStart(2,"0"); + var se = (now.getSeconds()).toString().padStart(2,"0"); + var z = + yr + "-"+ mt +"-"+ dy + " " + hr +":"+ mi +":"+ se; return z; } @@ -117,4 +124,6 @@ function showImages(myObj) { console.log(numimgs); document.getElementById("searchresults").innerHTML = txt; document.getElementById("eventcount").innerHTML = numimgs; + document.getElementById("lastupdate").innerHTML = getCurrentDate(); + } diff --git a/archive/static_content/live/index.html b/archive/static_content/live/index.html index 4750ec61..d96ae347 100644 --- a/archive/static_content/live/index.html +++ b/archive/static_content/live/index.html @@ -10,7 +10,7 @@ - + @@ -77,6 +77,7 @@ @@ -110,10 +115,10 @@

    - The latest 100 images will be automatically loaded and refreshed every two minutes, or press F5 to immediately reload. + The latest 100 images will be automatically loaded and refreshed every thirty seconds.

    - +
    to @@ -138,6 +143,7 @@

    RESULTS

    +

    Updated at

    events in date range

    From 1c66c58e29aa7190e66395b9467381d311f4eead Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 22 May 2026 11:28:42 +0100 Subject: [PATCH 068/150] add ukmeteors gmail app key to SSM --- archive/terraform/ukmda/dev_ssm_variables.tf | 10 ++++++++++ .../ukmda/{ssm_variables.tf => prod_ssm_variables.tf} | 10 ++++++++++ 2 files changed, 20 insertions(+) rename archive/terraform/ukmda/{ssm_variables.tf => prod_ssm_variables.tf} (89%) diff --git a/archive/terraform/ukmda/dev_ssm_variables.tf b/archive/terraform/ukmda/dev_ssm_variables.tf index bca54359..071744b2 100644 --- a/archive/terraform/ukmda/dev_ssm_variables.tf +++ b/archive/terraform/ukmda/dev_ssm_variables.tf @@ -189,3 +189,13 @@ resource "aws_ssm_parameter" "dev_gmapsapikey" { } } +# App password for ukmeteors@gmail.com +resource "aws_ssm_parameter" "dev_gmailkey" { + name = "dev_gmailkey" + type = "SecureString" + value = "uphgxodohmfijwse" + tags = { + "billingtag" = "ukmda" + } +} + diff --git a/archive/terraform/ukmda/ssm_variables.tf b/archive/terraform/ukmda/prod_ssm_variables.tf similarity index 89% rename from archive/terraform/ukmda/ssm_variables.tf rename to archive/terraform/ukmda/prod_ssm_variables.tf index 5661b507..4402d426 100644 --- a/archive/terraform/ukmda/ssm_variables.tf +++ b/archive/terraform/ukmda/prod_ssm_variables.tf @@ -188,3 +188,13 @@ resource "aws_ssm_parameter" "prod_gmapsapikey" { } } +# App password for ukmeteors@gmail.com +resource "aws_ssm_parameter" "prod_gmailkey" { + name = "prod_gmailkey" + type = "SecureString" + value = "uphgxodohmfijwse" + tags = { + "billingtag" = "ukmda" + } +} + From cb9caf44f825e662701afacd71e8726f01fabb31 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 22 May 2026 11:49:39 +0100 Subject: [PATCH 069/150] update email sender to use ukmeteors account --- archive/analysis/findAllMatches.sh | 2 +- archive/ukmon_pylib/reports/dailyReport.py | 11 +- .../ukmon_pylib/reports/reportBadCameras.py | 8 +- archive/ukmon_pylib/utils/sendAnEmail.py | 232 ++++-------------- archive/utils/statsToMqtt.sh | 2 +- 5 files changed, 59 insertions(+), 196 deletions(-) diff --git a/archive/analysis/findAllMatches.sh b/archive/analysis/findAllMatches.sh index d7a6a41c..a74602e1 100644 --- a/archive/analysis/findAllMatches.sh +++ b/archive/analysis/findAllMatches.sh @@ -60,7 +60,7 @@ success=$(grep "Total run time:" $SRC/logs/matchJob.log) if [ "$success" == "" ] then - python -c "from utils.sendAnEmail import sendAnEmail ; sendAnEmail('markmcintyre99@googlemail.com','problem with matching','Error in UKMON matching', mailfrom='ukmonhelper@ukmeteors.co.uk')" + python -c "from utils.sendAnEmail import sendAnEmail ; sendAnEmail('markmcintyre99@googlemail.com','problem with matching','Error in UKMON matching')" echo problems with solver fi diff --git a/archive/ukmon_pylib/reports/dailyReport.py b/archive/ukmon_pylib/reports/dailyReport.py index 3c5bc897..9db348e6 100644 --- a/archive/ukmon_pylib/reports/dailyReport.py +++ b/archive/ukmon_pylib/reports/dailyReport.py @@ -11,7 +11,7 @@ def AddHeader(body, bodytext, stats): rtstr = datetime.datetime.strptime(stats[4], '%H:%M:%S').strftime('%Hh%Mm') - body = body + '
    Today we examined {} detections, found {} potential matches and confirmed {} in {}.
    '.format(stats[1], stats[2], stats[3], rtstr) + body = body + '
    Today we examined {} detections, found {} potential matches and confirmed {} in {}.
    '.format(stats[1], stats[2], stats[3], rtstr) if int(stats[3]) > 0: body = body + 'Up to the 100 brightest matched events are shown below. ' body = body + 'Note that this may include older data for which a new match has been found.
    ' @@ -28,7 +28,7 @@ def AddHeader(body, bodytext, stats): def addFooter(body, bodytext): fbm = 'Seen a fireball? Click here to report it' - body = body + '

    \n' + fbm + '
    ' + body = body + '

    \n' + fbm + '
    ' bodytext = bodytext + '\n' + fbm + '\n' return body, bodytext @@ -105,7 +105,6 @@ def LookForMatchesRMS(doff, dayfile, stats): _, _, body, bodytext = LookForMatchesRMS(doff, dailyrep, stats) - #body = body.replace('assets/img/logo.svg', 'latest/dailyreports/dailyreportsidx.html') if doff == 1: outfname = 'report_latest.html' else: @@ -120,13 +119,9 @@ def LookForMatchesRMS(doff, dayfile, stats): datadir = os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) recs = open(os.path.join(datadir, 'admin','dailyReportRecips.txt'), 'r').readlines() - mailFrom = 'markmcintyre99@googlemail.com' mailRecip = recs[0].strip() - if len(recs) > 1: - mailFrom = recs[-1].strip() - #mailRecip = 'markmcintyre99@googlemail.com' # TODO for testing only yest = (datetime.date.today()-datetime.timedelta(days=doff)).strftime('%Y-%m-%d') # only send the email for the most recent report. if doff == 1: mailSubj = f'Latest Match Report for {yest}' - sendAnEmail(mailRecip, bodytext, mailSubj, mailFrom, msg_html=body.replace('href="/reports', f'href="{targeturl}/reports')) + sendAnEmail(mailRecip, bodytext, mailSubj, msg_html=body.replace('href="/reports', f'href="{targeturl}/reports')) diff --git a/archive/ukmon_pylib/reports/reportBadCameras.py b/archive/ukmon_pylib/reports/reportBadCameras.py index 54e8070b..ef6f0dd2 100644 --- a/archive/ukmon_pylib/reports/reportBadCameras.py +++ b/archive/ukmon_pylib/reports/reportBadCameras.py @@ -12,8 +12,6 @@ from utils.sendAnEmail import sendAnEmail -mailfrom = 'ukmonhelper2@ukmeteors.co.uk' - def sendBespokeMessage(targlist, messagefile, subj): @@ -23,7 +21,6 @@ def sendBespokeMessage(targlist, messagefile, subj): camowners['location'] = [ x.lower() + '_' + y.lower() for x,y in zip(camowners.site,camowners.direction)] camowners = camowners[camowners.active==1] camowners.drop(columns=['oldcode', 'site', 'camtype', 'active', 'humanName','direction','created'], inplace=True) - #camowners = camowners.groupby('eMail', as_index=False).agg(lambda x: ','.join(x.tolist())) owners = [] camids = [] gmnids = [] @@ -50,7 +47,7 @@ def sendBespokeMessage(targlist, messagefile, subj): statid = rw.gmnids locationid = rw.camids print(f'emailing {mailrecip} concerning {statid} {locationid} subject {subj}') - sendAnEmail(mailrecip, messagecontent.format(statid, locationid), subj, mailfrom) + sendAnEmail(mailrecip, messagecontent.format(statid, locationid), subj) return @@ -132,7 +129,6 @@ def sendBespokeMessage(targlist, messagefile, subj): mailrecip = row['eMail'] statid = row['stationid'] dayslate = int(sys.argv[1]) - #sendAnEmail(mailrecip, latemsg1.format(statid, dayslate), subj, mailfrom) mailmsg = mailmsg + '{} {} {}\n'.format(row['stationid'], row['ts'], row['eMail']) subj = 'camera upload missing' @@ -152,5 +148,5 @@ def sendBespokeMessage(targlist, messagefile, subj): mailrecip = row['eMail'] statid = row['stationid'] dayslate = int(sys.argv[1]) + 7 - sendAnEmail(mailrecip, latemsg1.format(statid, dayslate), subj, mailfrom) + sendAnEmail(mailrecip, latemsg1.format(statid, dayslate), subj) mailmsg = mailmsg + '{} {} {}\n'.format(row['stationid'], row['ts'], row['eMail']) diff --git a/archive/ukmon_pylib/utils/sendAnEmail.py b/archive/ukmon_pylib/utils/sendAnEmail.py index a7d215fb..0f38dc93 100644 --- a/archive/ukmon_pylib/utils/sendAnEmail.py +++ b/archive/ukmon_pylib/utils/sendAnEmail.py @@ -1,192 +1,64 @@ # Copyright (C) 2018-2023 Mark McIntyre -import os -import platform -import base64 -import email + +from email.message import EmailMessage from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart +import boto3 +import smtplib +import os -from google.auth.transport.requests import Request -from google.oauth2.credentials import Credentials -from google_auth_oauthlib.flow import InstalledAppFlow -from googleapiclient.discovery import build - -SCOPES =['https://mail.google.com/'] - - -def _getGmailCreds(tokfile=None, crdfile=None): - creds = None - # The token stores the user's access and refresh tokens, and is - # created automatically when the authorization flow completes for the first - # time. - if tokfile is None: - tokfile = '~/.ssh/gmailtoken.json' - if crdfile is None: - crdfile = '~/.ssh/gmailcreds.json' - tokfile = os.path.expanduser(tokfile) - crdfile = os.path.expanduser(crdfile) - if os.path.exists(tokfile): - creds = Credentials.from_authorized_user_file(tokfile, SCOPES) - - # If there are no (valid) credentials available, ask the user to log in interactively. - if not creds or not creds.valid: - if creds and creds.expired and creds.refresh_token: - creds.refresh(Request()) - else: - if not os.path.isfile(crdfile): - print(f'to use this function you must have stored your Google OAUTH2 secret json file in {crdfile}') - print('To set up OAUTH2 go to your google cloud console, select APIs then Credentials, and add an OAUTH2 desktop client ID.') - return None - flow = InstalledAppFlow.from_client_secrets_file(crdfile, SCOPES) - creds = flow.run_local_server(port=0) - # Save the credentials for the next run - with open(tokfile, 'w') as token: - token.write(creds.to_json()) - return creds - - -def _refreshCreds(tokfile=None, crdfile=None): - creds = None - if tokfile is None: - tokfile = '~/.ssh/gmailtoken.json' - if crdfile is None: - crdfile = '~/.ssh/gmailcreds.json' - tokfile = os.path.expanduser(tokfile) - crdfile = os.path.expanduser(crdfile) - if os.path.exists(tokfile): - creds = Credentials.from_authorized_user_file(tokfile, SCOPES) - - # If there are no (valid) credentials available, let the user log in. - if not creds or not creds.valid: - if creds and creds.expired and creds.refresh_token: - try: - creds.refresh(Request()) - except: - flow = InstalledAppFlow.from_client_secrets_file(crdfile, SCOPES) - creds = flow.run_local_server(port=0) - # Save the credentials for the next run - if creds.valid: - with open(tokfile, 'w') as token: - token.write(creds.to_json()) - else: - print('credentials not valid, try again') - return creds - - -def _create_message(sender, to, subject, message_text, msg_text_html=None): - if msg_text_html is None: - msg = MIMEText(message_text) - else: - msg = MIMEMultipart('alternative') - msg.attach(MIMEText(message_text, 'plain')) - msg.attach(MIMEText(msg_text_html, 'html')) # html must be the last part - msg['to'] = to - msg['from'] = sender - msg['subject'] = subject - return {'raw': base64.urlsafe_b64encode(msg.as_string().encode('utf-8')).decode('utf-8')} +def sendAnEmail(recipients, body, subject, sender='ukmeteors@gmail.com', files=None, passwd=None, msg_html=None): + """ + Send an email via google, using the ukmeteors@gmail.com account. + The app password for this account is stored in an SSM variable, if you want to use + a different account you must pass the app password in to the function. + Arguments: + mailrecip: [string] comma-separated string containing email addresses of recipients. + message: [string] the message to send. + subject: [string] Subject line. -def sendAnEmail(mailrecip, message, subject, mailfrom, files=None, tokfile=None, crdfile=None, msg_html=None): - """ sends an email using gmail. - - Arguments: - mailrecip: [string] email address of recipient. - message: [string] the message to send. - subject: [string] Subject line. - mailfrom: [string] email address of sender. - Keyword Args: - files: [list] list of files to attach, not currently implemented. - tokfile: [string] full path to token file, if not ~/.ssh/gmailtoken.json - crdfile: [string] full path to credentials file, if not ~/.ssh/gmailcreds.json - msg_html: [string] HTML version of the message body, if any + Keyword Args: + sender: [string] email address of sender. Default 'ukmeteors@gmail.com' + passwd: [string] 16-character app password created in google. Default read from SSM. + msg_html: [string] HTML version of the message body, if any. + files: [list] list of files to attach - supports jpg, png, bmp. Want to support txt and pdf Returns: Nothing, though a message is printed onscreen. + """ + + if passwd is None: + ssm = boto3.client('ssm', region_name='eu-west-2') + res = ssm.get_parameter(Name='prod_gmailkey', WithDecryption=True) + passwd = res['Parameter']['Value'] + + msg = EmailMessage() + msg['To'] = recipients + msg['From'] = sender + msg['Subject'] = subject + msg.set_content(body) + if msg_html: + msg.add_alternative(msg_html, subtype="html") + if files: + for file in files: + extn = os.path.splitext(file)[1] + if extn in ['.jpg','.png','.bmp']: + img_data = open(file, 'rb').read() + msg.add_attachment(img_data, maintype='image', subtype=extn[1:]) + + smtp_server = smtplib.SMTP_SSL('smtp.gmail.com', 465, timeout=30) + smtp_server.login(sender, passwd) + smtp_server.send_message(msg, sender, recipients) + smtp_server.quit() + smtp_server.close() + return - Notes: - You must have gmail OAUTH2 set up. The gmail credentials default to gmailtoken.json and - gmailcreds.json in the $HOME/.ssh folder. - """ - - if subject is None: - subject = platform.uname()[1] - - # email a summary to the mailrecip - creds = _getGmailCreds(tokfile, crdfile) - if not creds: - return - service = build('gmail', 'v1', credentials=creds) - - subj = subject - mailmsg = _create_message(mailfrom, mailrecip, subj, message, msg_text_html=msg_html) - - try: - retval = (service.users().messages().send(userId='me', body=mailmsg).execute()) - print('Message Id: %s' % retval['id']) - except: - print('An error occurred sending the message') - - -def forwardAnEmail(reciplist, msgid=None, tokfile=None, crdfile=None): - """ Forward email from a gmail account to a list of recipients - - Arguments: - recplist: [list of strings] list of addresses to forward to - - Keyword arguments: - msgid: [string] gmail message id. If None, then all unread mail is forwarded - tokfile: [string] full path to a gmail oauth2 json token file - crdfile: [string] full path to a gmail oauth2 json credentials file for initial authorization - To obtain the oauth2 credentials file, go to the google cloud console, select APIs and enable gmail. Then - go to Credentials and create an OAUTH2 Client ID for Desktop and download the JSON credentials file. - Upon first run, you'll be taken to the gmail authorisation screen and the token file will be created. - Subsequent runs will use the token file. The creds file will be used to reauthorise periodically. - """ - creds = _getGmailCreds(tokfile, crdfile) - if not creds: - return - service = build('gmail', 'v1', credentials=creds) - userid = 'me' - if msgid is None: - try: - msglist = (service.users().messages().list(userId=userid, labelIds=['INBOX','UNREAD']).execute()) - for msg in msglist['messages']: - msgid = msg['id'] - # retrieve raw mail - message = (service.users().messages().get(userId='me', id=msgid, format='raw').execute()) - # decode it from base64 - decmsg = base64.urlsafe_b64decode(message['raw']) - newmsg = email.message_from_bytes(decmsg) - newmsg.add_header('Reply-To',newmsg['from']) - newmsg.replace_header('Subject','Fwd: ' + newmsg['subject']) - # Send it - for recip in reciplist: - newmsg.replace_header('To', recip) - mailmsg = {'raw': base64.urlsafe_b64encode(newmsg.as_string().encode('utf-8')).decode('utf-8')} - retval = (service.users().messages().send(userId='me', body=mailmsg).execute()) - # This will mark the messagea as read - service.users().messages().modify(userId=userid, id=msgid, body={'removeLabelIds': ['UNREAD']}).execute() - print(retval) - except Exception: - print('Nothing to forward') - else: - try: - message = (service.users().messages().get(userId='me', id=msgid, format='raw').execute()) - # decode it from base64 - decmsg = base64.urlsafe_b64decode(message['raw']) - newmsg = email.message_from_bytes(decmsg) - newmsg.add_header('Reply-To',newmsg['from']) - newmsg.replace_header('Subject','Fwd: ' + newmsg['subject']) - # Send it - for recip in reciplist: - newmsg.replace_header('To', recip) - mailmsg = {'raw': base64.urlsafe_b64encode(newmsg.as_string().encode('utf-8')).decode('utf-8')} - retval = (service.users().messages().send(userId='me', body=mailmsg).execute()) - # This will mark the messagea as read - service.users().messages().modify(userId=userid, id=msgid, body={'removeLabelIds': ['UNREAD']}).execute() - print(retval) - except Exception: - print('Nothing to forward') - return +def test(): + subject = 'testing' + body = 'Test for new from address for daily report' + html_body = '

    test

    some text
  • foo
  • ' + recipients = 'markmcintyre99@googlemail.com' + sendAnEmail(recipients, body, subject, msg_html=html_body) \ No newline at end of file diff --git a/archive/utils/statsToMqtt.sh b/archive/utils/statsToMqtt.sh index 170ebb0b..f50e3a65 100644 --- a/archive/utils/statsToMqtt.sh +++ b/archive/utils/statsToMqtt.sh @@ -31,6 +31,6 @@ else msg="$(hostname) diskspace is ${diskpct}%" subj="Diskspace alert for $(hostname)" hn="$(hostname)@aws" - python -c "from utils.sendAnEmail import sendAnEmail;sendAnEmail('markmcintyre99@googlemail.com', '$msg', '$subj', '$hn')" + python -c "from utils.sendAnEmail import sendAnEmail;sendAnEmail('markmcintyre99@googlemail.com', '$msg', '$subj')" fi fi From 61ca7078251aa40ada85837cb5f43311e1b0c2cb Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 22 May 2026 12:01:38 +0100 Subject: [PATCH 070/150] ping paho-mqtt version --- archive/ukmon_pylib/additional_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/ukmon_pylib/additional_requirements.txt b/archive/ukmon_pylib/additional_requirements.txt index 08681e37..4231b4ea 100644 --- a/archive/ukmon_pylib/additional_requirements.txt +++ b/archive/ukmon_pylib/additional_requirements.txt @@ -27,7 +27,7 @@ pre-commit s3fs dynamodb_json requests -paho-mqtt +paho-mqtt<2.0 scp # testing requirements pytest From 9d08b788020a23e1afd2343a0d57be4011d1c63f Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 22 May 2026 13:22:23 +0100 Subject: [PATCH 071/150] remove unused code to post to MQ - doesn't work --- archive/ukmon_pylib/metrics/statsToMqtt.py | 44 ---------------------- archive/utils/README.md | 1 - archive/utils/statsToMqtt.sh | 36 ------------------ 3 files changed, 81 deletions(-) delete mode 100644 archive/ukmon_pylib/metrics/statsToMqtt.py delete mode 100644 archive/utils/statsToMqtt.sh diff --git a/archive/ukmon_pylib/metrics/statsToMqtt.py b/archive/ukmon_pylib/metrics/statsToMqtt.py deleted file mode 100644 index 369bf1f2..00000000 --- a/archive/ukmon_pylib/metrics/statsToMqtt.py +++ /dev/null @@ -1,44 +0,0 @@ -import paho.mqtt.client as mqtt -import platform -from shutil import disk_usage -import datetime - - -# The callback function. It will be triggered when trying to connect to the MQTT broker -def on_connect(client, userdata, flags, rc): - if rc == 0: - print("Connected success") - else: - print("Connected fail with code", rc) - - -def on_publish(client, userdata, result): - #print('data published - {}'.format(result)) - return - - -def statsToMqtt(diskspace, pctused): - broker = 'themcintyres.ddns.net' - topicbase = 'servers' - servername = platform.node().lower() - - client = mqtt.Client(servername) - client.on_connect = on_connect - client.on_publish = on_publish - client.connect(broker, 9883, 60) - - topic = f'{topicbase}/{servername}/freespace' - ret = client.publish(topic, payload=diskspace, qos=0, retain=False) - topic = f'{topicbase}/{servername}/pctused' - ret = client.publish(topic, payload=pctused, qos=0, retain=False) - topic = f'{topicbase}/{servername}/timestamp' - ts = datetime.datetime.now().isoformat() - ret = client.publish(topic, payload=ts, qos=0, retain=False) - return ret - - -if __name__ == '__main__': - dfs = disk_usage('/') - freespace = round(dfs[2]/1024/1024/1024,2) - pctused = round(dfs[1]*100.0/dfs[0],2) - statsToMqtt(freespace, pctused) diff --git a/archive/utils/README.md b/archive/utils/README.md index 545c0d1a..a1f69859 100644 --- a/archive/utils/README.md +++ b/archive/utils/README.md @@ -12,7 +12,6 @@ This folder contains some utility functions useful for managing the environment. ## Other routine maintenance * checkAndRollKeys.sh - rolls station AWS Key/Secret pairs periodically to avoid stale keys -* statsToMqtt.sh - posts server space/memory etc statistics to MQ * userAudit.sh - performs a user audit and emails a report ## User tools to maintain data diff --git a/archive/utils/statsToMqtt.sh b/archive/utils/statsToMqtt.sh deleted file mode 100644 index f50e3a65..00000000 --- a/archive/utils/statsToMqtt.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" -cd $here -if [ "$(hostname)" == "wordpresssite" ] ; then - source /home/bitnami/venvs/openhabstuff/bin/activate - python $here/statsToMqtt.py - diskpct=$(df / |tail -1| awk '{print $5 }' | sed 's/%//g') - if [ $diskpct -gt 90 ] ; then - /home/bitnami/src/maintenance/mysql_checks.sh - msg="$(hostname) diskspace was ${diskpct}%" - subj="Diskspace alert for $(hostname)" - hn="$(hostname)@aws" - python -c "from utils.sendAnEmail import sendAnEmail;sendAnEmail('markmcintyre99@googlemail.com', '$msg', '$subj', '$hn')" - fi -elif [ "$(hostname)" == "ukmcalcserver" ] ; then - source $HOME/venvs/wmpl/bin/activate - python $here/statsToMqtt.py - diskpct=$(df / |tail -1| awk '{print $5 }' | sed 's/%//g') - if [ $diskpct -gt 80 ] ; then - cat $here/ses-msg-templ.json | sed "s/HN/$(hostname)/g;s/USED/${diskpct}/g;s/THRESH/80/g" > $here/msg.json - aws ses send-email --destination ToAddresses="markmcintyre99@googlemail.com" --message file://msg.json --from "noreply@ukmeteors.co.uk" --region eu-west-2 - $here//clearSpace.sh > ~/src/logs/clearspace-$(date +%Y%m%d.log) 2>&1 - fi -else - source $here/../config.ini >/dev/null 2>&1 - conda activate $HOME/miniconda3/envs/${WMPL_ENV} - export PYTHONPATH=$SRC/ukmon_pylib:$PYTHONPATH - python -m metrics.statsToMqtt - diskpct=$(df / |tail -1| awk '{print $5 }' | sed 's/%//g') - if [ $diskpct -gt 95 ] ; then - msg="$(hostname) diskspace is ${diskpct}%" - subj="Diskspace alert for $(hostname)" - hn="$(hostname)@aws" - python -c "from utils.sendAnEmail import sendAnEmail;sendAnEmail('markmcintyre99@googlemail.com', '$msg', '$subj')" - fi -fi From d32f8754aa6ca9959fa5010d64253151d2cc2794 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sat, 23 May 2026 13:56:40 +0100 Subject: [PATCH 072/150] remove unused EC2 instance 'adminserver' --- archive/terraform/ukmda/calcserver.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/archive/terraform/ukmda/calcserver.tf b/archive/terraform/ukmda/calcserver.tf index a1aa2a46..e9edda3a 100644 --- a/archive/terraform/ukmda/calcserver.tf +++ b/archive/terraform/ukmda/calcserver.tf @@ -48,7 +48,7 @@ resource "aws_network_interface" "ubuntu_calcserver_if" { # admin server ################################################ - +/* resource "aws_instance" "admin_server" { ami = "ami-0c1ce90bf42d9802b" instance_type = "t2.micro" @@ -72,3 +72,4 @@ resource "aws_instance" "admin_server" { } } +*/ \ No newline at end of file From a7a84bdd3246b115d16f987acecd848036799842 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sat, 23 May 2026 13:56:55 +0100 Subject: [PATCH 073/150] support for creating contact sheets from a list of images --- .../ukmon_pylib/utils/createContactSheet.py | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 archive/ukmon_pylib/utils/createContactSheet.py diff --git a/archive/ukmon_pylib/utils/createContactSheet.py b/archive/ukmon_pylib/utils/createContactSheet.py new file mode 100644 index 00000000..21aab250 --- /dev/null +++ b/archive/ukmon_pylib/utils/createContactSheet.py @@ -0,0 +1,82 @@ +# +# Create a contact sheet from a set of images +# +# Copyright (C) 2018- Mark McIntyre + +from PIL import Image +import glob +import boto3 +import os +from tempfile import mkdtemp +import shutil +import math + + +def generateContacts(dtstr, outdir=None, lat=None, lon=None, gcdist=None): + # get a list of objects to create a contact sheet from + + buck = 'ukmda-website' + pref = f'reports/{dtstr[:4]}/orbits/{dtstr[:6]}/{dtstr}' + + s3 = boto3.resource('s3') + bucket = s3.Bucket(buck) + files = [os.key for os in bucket.objects.filter(Prefix=pref)] + reqfiles = [x for x in files if '_ground_track' in x and 'OSM' not in x] + + tmpdir = mkdtemp() + for fil in reqfiles: + s3.meta.client.download_file(buck, fil, os.path.join(tmpdir, os.path.basename(fil))) + + fnames = glob.glob('*_ground_track.png', root_dir=tmpdir) + + csimage = makeContactSheet([f'{tmpdir}/{x}' for x in fnames]) + + if outdir is None: + outdir = os.getenv('TEMP') + outfname = f'{outdir}/{dtstr}_contact.png' + csimage.save(outfname) + shutil.rmtree(tmpdir) + return + +def makeContactSheet(fnames,rowscols=[10,100],photodims=(240,240), margins=[10,10,10,10], padding=10): + """\ + Make a contact sheet from a group of filenames: + + fnames A list of names of the image files + rowscols [cols, rows] number of images per row and column + photodims (width, height) of each individual image + margins [left, top, right, bottom] margins in pixels + padding The padding between images in pixels + + returns a PIL image object. + """ + + # Read in all images and resize appropriately + imgs = [Image.open(fn).resize(photodims) for fn in fnames] + + # Calculate the size of the output image, based on the + # photo thumb sizes, margins, and padding + marw = margins[0]+margins[2] + marh = margins[1]+ margins[3] + + maxrows = math.ceil(len(fnames)/rowscols[0]) + padw = (rowscols[0]-1)*padding + padh = (maxrows-1)*padding + isize = (rowscols[0]*photodims[0] + marw + padw ,maxrows*photodims[1] + marh + padh) + # Create the new image. The background doesn't have to be white + white = (255,255,255) + inew = Image.new('RGB',isize,white) + # Insert each thumb: + for irow in range(maxrows): + for icol in range(rowscols[0]): + left = margins[0] + icol*(photodims[0] + padding) + right = left + photodims[0] + upper = margins[1] + irow*(photodims[1]+padding) + lower = upper + photodims[1] + bbox = (left,upper,right,lower) + try: + img = imgs.pop(0) + except: + break + inew.paste(img,bbox) + return inew \ No newline at end of file From 1dbf600562930dccb068733aa56933892dd5cacd Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 12:55:57 +0100 Subject: [PATCH 074/150] update code to send ad-hoc message --- archive/ukmon_pylib/reports/reportBadCameras.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/archive/ukmon_pylib/reports/reportBadCameras.py b/archive/ukmon_pylib/reports/reportBadCameras.py index ef6f0dd2..742c5c8c 100644 --- a/archive/ukmon_pylib/reports/reportBadCameras.py +++ b/archive/ukmon_pylib/reports/reportBadCameras.py @@ -14,6 +14,19 @@ def sendBespokeMessage(targlist, messagefile, subj): + """ + send a message contained in 'messagefile' to a list of stations + + arguments: + targlist: a file containing a list of locations in the first column + messagefile: a file containing the message to be sent + subj: the subject to use for the mail + + the targlist file can contain other information, but hte first column must be station locations eg tackley_nw + + The targlist contents will be treated as an f-string and must contain placeholders for the GMN ID and location in that order. + + """ messagecontent = open(messagefile, 'r').read() targets = open(targlist, 'r').readlines() @@ -24,6 +37,7 @@ def sendBespokeMessage(targlist, messagefile, subj): owners = [] camids = [] gmnids = [] + targets = [x.split()[0].strip() for x in targets] for target in targets: locationid = target.strip() if locationid[:1] == '#': From 17a630d4dfcb050d9fcdaff5487e98c8447be29e Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 15:18:37 +0100 Subject: [PATCH 075/150] bugfixes in faily report issue #479 --- archive/ukmon_pylib/reports/dailyReport.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/archive/ukmon_pylib/reports/dailyReport.py b/archive/ukmon_pylib/reports/dailyReport.py index 9db348e6..26af8ec0 100644 --- a/archive/ukmon_pylib/reports/dailyReport.py +++ b/archive/ukmon_pylib/reports/dailyReport.py @@ -16,8 +16,8 @@ def AddHeader(body, bodytext, stats): body = body + 'Up to the 100 brightest matched events are shown below. ' body = body + 'Note that this may include older data for which a new match has been found.
    ' body = body + 'Click each link to see analysis of these events.
    ' - bodytext = bodytext + 'Events: {}, Trajectories: {}. Matches {}'.format(stats[1], stats[2], stats[3]) - bodytext = bodytext + 'The following multiple detections were found in the last 24 hour period,\n' + bodytext = bodytext + 'Today we examined {} events, founnd {} potential matches and confirmed {}\n'.format(stats[1], stats[2], stats[3]) + bodytext = bodytext + 'Up to the 100 brightest matched events are shown below.\n' bodytext = bodytext + 'Note that this may include older data for which a new match has been found.\n' body = body + '' body = body + '' @@ -27,9 +27,9 @@ def AddHeader(body, bodytext, stats): def addFooter(body, bodytext): - fbm = 'Seen a fireball? Click here to report it' + fbm = 'Seen a fireball? Click here to report it' body = body + '
    EventShwrVis MagStations


    \n' + fbm + '
    ' - bodytext = bodytext + '\n' + fbm + '\n' + bodytext = bodytext + '\nSeen a fireball? Click https://fireballs.imo.net/?org=ukmon to report it\n' return body, bodytext @@ -50,7 +50,7 @@ def AddRowRMS(body, bodytext, ele): str1 = '{:s}{:s}{:s}{:s}'.format(lnkstr, pth, shwr, mag, stats) body = body + str1 - bodytext = bodytext + str1 + '\n' + bodytext = bodytext + f'{lnkstr} {pth} {shwr} {mag} {stats}\n' return body, bodytext @@ -124,4 +124,6 @@ def LookForMatchesRMS(doff, dayfile, stats): # only send the email for the most recent report. if doff == 1: mailSubj = f'Latest Match Report for {yest}' - sendAnEmail(mailRecip, bodytext, mailSubj, msg_html=body.replace('href="/reports', f'href="{targeturl}/reports')) + bodytext = bodytext.replace('/reports', f'{targeturl}/reports') + body = body.replace('href="/reports', f'href="{targeturl}/reports') + sendAnEmail(mailRecip, bodytext, mailSubj, msg_html=body) From ac087fc7b823eefb9b6fc25e9ea0ef72428197e1 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 15:33:15 +0100 Subject: [PATCH 076/150] closing #479 --- archive/ukmon_pylib/reports/dailyReport.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/ukmon_pylib/reports/dailyReport.py b/archive/ukmon_pylib/reports/dailyReport.py index 26af8ec0..579ebe26 100644 --- a/archive/ukmon_pylib/reports/dailyReport.py +++ b/archive/ukmon_pylib/reports/dailyReport.py @@ -12,11 +12,11 @@ def AddHeader(body, bodytext, stats): rtstr = datetime.datetime.strptime(stats[4], '%H:%M:%S').strftime('%Hh%Mm') body = body + '
    Today we examined {} detections, found {} potential matches and confirmed {} in {}.
    '.format(stats[1], stats[2], stats[3], rtstr) + bodytext = bodytext + 'Today we examined {} events, founnd {} potential matches and confirmed {} in {}\n'.format(stats[1], stats[2], stats[3], rtstr) if int(stats[3]) > 0: body = body + 'Up to the 100 brightest matched events are shown below. ' body = body + 'Note that this may include older data for which a new match has been found.
    ' body = body + 'Click each link to see analysis of these events.
    ' - bodytext = bodytext + 'Today we examined {} events, founnd {} potential matches and confirmed {}\n'.format(stats[1], stats[2], stats[3]) bodytext = bodytext + 'Up to the 100 brightest matched events are shown below.\n' bodytext = bodytext + 'Note that this may include older data for which a new match has been found.\n' body = body + '' @@ -50,7 +50,7 @@ def AddRowRMS(body, bodytext, ele): str1 = ''.format(lnkstr, pth, shwr, mag, stats) body = body + str1 - bodytext = bodytext + f'{lnkstr} {pth} {shwr} {mag} {stats}\n' + bodytext = bodytext + f'{lnkstr} {shwr} {mag} {stats}\n' return body, bodytext From 98d009304a683a73219115100e2637abd70bfd7d Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 15:54:39 +0100 Subject: [PATCH 077/150] bump version 2026.05.3 -> 2026.05.4 --- README.md | 2 +- archive/README.md | 2 +- bumpver.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2365d413..f67224a6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # UK Meteor Data Analysis Shared code and libraries -version: 2026.05.3 +version: 2026.05.4 This repository contains the code behind the UK Meteors data archive and data processing pipeline. diff --git a/archive/README.md b/archive/README.md index 4c9acc4f..104a2b0a 100644 --- a/archive/README.md +++ b/archive/README.md @@ -1,7 +1,7 @@ Data Processing and Flows ========================== -version: 2026.05.3 +version: 2026.05.4 This diagram shows the overall flow of data from Cameras to websites and out to the public. diff --git a/bumpver.toml b/bumpver.toml index f8fc75bb..c8aedbb4 100644 --- a/bumpver.toml +++ b/bumpver.toml @@ -1,5 +1,5 @@ [bumpver] -current_version = "2026.05.3" +current_version = "2026.05.4" version_pattern = "YYYY.0M.PATCH" commit_message = "bump version {old_version} -> {new_version}" commit = true From f47a9bd59db7dffb786e9d0046fe30f672ff00f0 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 16:16:49 +0100 Subject: [PATCH 078/150] Update scripts that still mention the old server --- archive/containers/trajsolver/update_wmpl.sh | 6 +++--- archive/database/testDB.py | 2 +- archive/lambdas/getExtraFilesV2/update_wmpl.sh | 6 +++--- archive/utils/updateFireballImage.sh | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/archive/containers/trajsolver/update_wmpl.sh b/archive/containers/trajsolver/update_wmpl.sh index 1be9f5dc..a0e6b2b5 100644 --- a/archive/containers/trajsolver/update_wmpl.sh +++ b/archive/containers/trajsolver/update_wmpl.sh @@ -8,9 +8,9 @@ else fi cd /mnt/e/dev/meteorhunting/ukmda-dataprocessing/archive/containers/$targ/ -ssh ukmonhelper2 "cd ~/src/wmpldev && git stash && git checkout distrib_processing && git pull" -rsync -avz ukmonhelper2:src/wmpldev/* ./WesternMeteorPyLib/ --exclude "build/" --exclude "*.egg*" --exclude "dist/" --exclude ".git/" --exclude "__pycache__/" -ssh ukmonhelper2 "cd ~/src/wmpldev && git checkout - && git stash apply" +ssh ukmbatch "cd ~/src/wmpldev && git stash && git checkout distrib_processing && git pull" +rsync -avz ukmbatch:src/wmpldev/* ./WesternMeteorPyLib/ --exclude "build/" --exclude "*.egg*" --exclude "dist/" --exclude ".git/" --exclude "__pycache__/" +ssh ukmbatch "cd ~/src/wmpldev && git checkout - && git stash apply" # remove modules and code that don't work in a container because theres no GUI rm -Rf ./WesternMeteorPyLib/wmpl/MetSim diff --git a/archive/database/testDB.py b/archive/database/testDB.py index 2367fee7..a55457e2 100644 --- a/archive/database/testDB.py +++ b/archive/database/testDB.py @@ -8,7 +8,7 @@ def testDB(id): pwdfile = os.path.expanduser(f'~/.ssh/db_{user}.passwd') with open(pwdfile, 'r') as inf: pwd = inf.readline().strip() - connection = pymysql.connect(host='ukmonhelper2', + connection = pymysql.connect(host='ukmbatch', user=user, password=pwd, db='test', diff --git a/archive/lambdas/getExtraFilesV2/update_wmpl.sh b/archive/lambdas/getExtraFilesV2/update_wmpl.sh index 002e1f93..3d0561b2 100644 --- a/archive/lambdas/getExtraFilesV2/update_wmpl.sh +++ b/archive/lambdas/getExtraFilesV2/update_wmpl.sh @@ -4,9 +4,9 @@ here="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" cd $here/pythoncode -ssh ukmonhelper2 "cd ~/src/wmpldev && git stash && git checkout distrib_processing && git pull" -rsync -avz ukmonhelper2:src/wmpldev/* ./WesternMeteorPyLib/ --exclude "build/" --exclude "*.egg*" --exclude "dist/" --exclude ".git/" --exclude "__pycache__/" -ssh ukmonhelper2 "cd src/wmpldev && git checkout - && git stash apply" +ssh ukmbatch "cd ~/src/wmpldev && git stash && git checkout distrib_processing && git pull" +rsync -avz ukmbatch:src/wmpldev/* ./WesternMeteorPyLib/ --exclude "build/" --exclude "*.egg*" --exclude "dist/" --exclude ".git/" --exclude "__pycache__/" +ssh ukmbatch "cd src/wmpldev && git checkout - && git stash apply" rm -f ./WesternMeteorPyLib/wmpl/Trajectory/lib/trajectory/libtrajectorysolution.so cp -f ./WesternMeteorPyLib/wmpl/Trajectory/lib/trajectory/libtrajectorysolution.so.0 ./WesternMeteorPyLib/wmpl/Trajectory/lib/trajectory/libtrajectorysolution.so diff --git a/archive/utils/updateFireballImage.sh b/archive/utils/updateFireballImage.sh index 644f2e63..0dc57714 100644 --- a/archive/utils/updateFireballImage.sh +++ b/archive/utils/updateFireballImage.sh @@ -34,12 +34,12 @@ if [[ "$orbname" == "" || "$imgname" == "" ]] ; then exit fi tmp_dir=$(mktemp -d -t fb-XXXXXXXXXX) -scp ukmonhelper2:prod/data/reports/${yr}/fireballs/${orbname}.md ${tmp_dir} +scp ukmbatch:prod/data/reports/${yr}/fireballs/${orbname}.md ${tmp_dir} imgurl=$(grep image ${tmp_dir}/${orbname}.md | awk '{print $2}') newurl=https://archive.ukmeteors.co.uk/img/single/${yr}/${ym}/$imgname cat ${tmp_dir}/${orbname}.md | sed "s|${imgurl}|${newurl}|g" > ${tmp_dir}/new_${orbname}.md mv ${tmp_dir}/new_${orbname}.md ${tmp_dir}/${orbname}.md -scp ${tmp_dir}/${orbname}.md ukmonhelper2:prod/data/reports/${yr}/fireballs/ +scp ${tmp_dir}/${orbname}.md ukmbatch:prod/data/reports/${yr}/fireballs/ aws s3 cp ${tmp_dir}/${orbname}.md $WEBSITEBUCKET/reports/${yr}/fireballs/ rm -Rf ${tmp_dir} ${SRC}/website/createFireballPage.sh ${yr} -3.99 \ No newline at end of file From ccaef611fea169de83e28c8afd150bde34962feb Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 16:17:00 +0100 Subject: [PATCH 079/150] update the readme --- README.md | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f67224a6..c7cdea1a 100644 --- a/README.md +++ b/README.md @@ -7,17 +7,14 @@ This repository contains the code behind the UK Meteors data archive and data pr The code for archive.ukmeteors.co.uk, including the data processing pipeline. ### Software Deployment -The software is a mix of Python and Bash shell scripts. All software deployment uses Ansible. +The software is a mix of Python and Bash shell scripts. Deployment is via an install script. #### Scripts and Python -The shell scripts and python code are deployed with `deploy-analysis.yml`. Use the "prod" tag to push to production, and the "dev" tag to push to a development environment. Deployments target the batch server in the MM account. +The shell scripts and python code are deployed with `install_or_update.sh`. First, clone the repository onto the target server then run `install_or_update.sh` with an argument "PROD" to create/update a production environment, or "DEV" for a development environment. . -```bash -ansible-playbook deploy-analysis.yml -t prod -``` #### Configuration Files Parameters are created with Terraform and stored in the AWS Systems Manager Parameter Store. -The configuration is then deployed with `deploy-config.yml` which runs a script to create the `config.ini` file. +The configuration is then deployed with `utils/makeConfig.sh` which runs a script to create the `config.ini` file. #### Website Much of the website is dynamically created by the Python and Bash scripts or by AWS Lambda functions. @@ -30,7 +27,3 @@ Done with Terraform - see the Terraform folder readme for details. ## TESTS folder This folder contains tests for the APIs and some of the Python code. Further tests are being developed and will be added to this folder. See the README in the folder for more details. - -## USERMGMT folder -A python app that is used to add/modify contributors' camera details and grant them permission to upload. -Not intended for general use, this tool can only be used if you have SSH and AWS keys for the admin role. From dfc96f3ebd63c66c75863b763d6caacf438cda1c Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 16:17:34 +0100 Subject: [PATCH 080/150] disable peering and start removing ukmon resources from my account --- archive/terraform/mjmm/cloudwatch.tf | 32 ----- archive/terraform/mjmm/peering.tf | 14 +-- archive/terraform/mjmm/s3.tf | 181 --------------------------- archive/terraform/mjmm/sns.tf | 21 ---- archive/terraform/ukmda/vpc.tf | 32 ++--- 5 files changed, 23 insertions(+), 257 deletions(-) delete mode 100644 archive/terraform/mjmm/cloudwatch.tf delete mode 100644 archive/terraform/mjmm/s3.tf delete mode 100644 archive/terraform/mjmm/sns.tf diff --git a/archive/terraform/mjmm/cloudwatch.tf b/archive/terraform/mjmm/cloudwatch.tf deleted file mode 100644 index 123a621c..00000000 --- a/archive/terraform/mjmm/cloudwatch.tf +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre - -# -# Cloudwatch alarms etc -# -/* -resource "aws_cloudwatch_metric_alarm" "ukmonhelperDiskSpace" { - alarm_name = "ukmonHelperDiskspace" - comparison_operator = "GreaterThanThreshold" - evaluation_periods = "1" - metric_name = "disk_used_percent" - namespace = "CWAgent" - period = "300" - statistic = "Average" - threshold = "90" - alarm_description = "ukmonhelper diskspace exceeds 90pct" - insufficient_data_actions = [] - datapoints_to_alarm = 1 - alarm_actions = [aws_sns_topic.ukmonalerts.arn, ] - dimensions = { - "ImageId" = aws_instance.ukmonhelper_g.ami - "InstanceId" = aws_instance.ukmonhelper_g.id - "InstanceType" = aws_instance.ukmonhelper_g.instance_type - "device" = "nvme0n1p1" - "fstype" = "xfs" - "path" = "/" - } - tags = { - "billingtag" = "ukmon" - } -} -*/ \ No newline at end of file diff --git a/archive/terraform/mjmm/peering.tf b/archive/terraform/mjmm/peering.tf index e7cd2d26..03daf773 100644 --- a/archive/terraform/mjmm/peering.tf +++ b/archive/terraform/mjmm/peering.tf @@ -3,10 +3,10 @@ # Terraform for peering to the ukmda account # -resource "aws_vpc_peering_connection_accepter" "mdatommpeering" { - vpc_peering_connection_id = "pcx-0beef413172ec795e" - tags = { - "Name" = "ukmda-to-mm-peering" - "billingtag" = "ukmda" - } -} +#resource "aws_vpc_peering_connection_accepter" "mdatommpeering" { +# vpc_peering_connection_id = "pcx-0beef413172ec795e" +# tags = { +# "Name" = "ukmda-to-mm-peering" +# "billingtag" = "ukmda" +# } +#} diff --git a/archive/terraform/mjmm/s3.tf b/archive/terraform/mjmm/s3.tf deleted file mode 100644 index 5a05aef5..00000000 --- a/archive/terraform/mjmm/s3.tf +++ /dev/null @@ -1,181 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre -######################################################################## -/* -resource "aws_s3_bucket" "mjmm-ukmonarchive-co-uk" { - bucket = "mjmm-ukmonarchive.co.uk" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_s3_bucket_acl" "mjmm-ukmon_acl" { - bucket = "mjmm-ukmonarchive.co.uk" - acl = "public-read" -} - -resource "aws_s3_bucket_logging" "mjmm_ukmon_logging" { - bucket = "mjmm-ukmonarchive.co.uk" - target_bucket = "mjmmauditing" - target_prefix = "ukmon-archive-logs/" -} - -resource "aws_s3_bucket_website_configuration" "mjmm_ukmon_website" { - bucket = "mjmm-ukmonarchive.co.uk" - error_document { key = "error.html" } - index_document { suffix = "index.html" } -} - -resource "aws_s3_bucket_server_side_encryption_configuration" "mjmm_ukmon_encryption" { - bucket = aws_s3_bucket.mjmm-ukmonarchive-co-uk.bucket - - rule { - bucket_key_enabled = false - apply_server_side_encryption_by_default { - sse_algorithm = "AES256" - } - } -} - -resource "aws_s3_bucket_policy" "allow_website_access" { - bucket = aws_s3_bucket.mjmm-ukmonarchive-co-uk.id - policy = data.aws_iam_policy_document.websiteacesspolicy.json -} - -data "aws_iam_policy_document" "websiteacesspolicy" { - statement { - actions = ["s3:GetObject"] - sid = "PublicReadGetObject" - effect = "Allow" - principals { - type = "AWS" - identifiers = ["*"] - } - resources = ["${aws_s3_bucket.mjmm-ukmonarchive-co-uk.arn}/*"] - } -} -*/ -######################################################################## -/* -resource "aws_s3_bucket" "mjmm-ukmon-shared" { - bucket = "mjmm-ukmon-shared" - timeouts {} - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_s3_bucket_logging" "mjmm_ukmon_shared_logging" { - bucket = "mjmm-ukmon-shared" - target_bucket = "mjmmauditing" - target_prefix = "ukmon-shared-logs/" -} - -resource "aws_s3_bucket_server_side_encryption_configuration" "mjmm_ukmon_shared_encryption" { - bucket = aws_s3_bucket.mjmm-ukmon-shared.bucket - - rule { - bucket_key_enabled = false - apply_server_side_encryption_by_default { - sse_algorithm = "AES256" - } - } -} - -resource "aws_s3_bucket_lifecycle_configuration" "shared_lifecycle_rule" { - bucket = aws_s3_bucket.mjmm-ukmon-shared.id - transition_default_minimum_object_size = "varies_by_storage_class" - rule { - id = "MoveToArchive" - status = "Enabled" - transition { - days = 30 - storage_class = "STANDARD_IA" - } - filter {} - } - rule { - id = "PurgeOldVersions" - status = "Enabled" - - expiration { - days = 0 - } - filter {} - - noncurrent_version_expiration { - newer_noncurrent_versions = "1" - noncurrent_days = 30 - } - } -} - -resource "aws_s3_bucket_versioning" "shared_versioning" { - bucket = aws_s3_bucket.mjmm-ukmon-shared.id - versioning_configuration { - status = "Suspended" - } -} -*/ -######################################################################## -/* -resource "aws_s3_bucket" "mjmm-ukmon-live" { - bucket = "mjmm-ukmon-live" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_s3_bucket_logging" "mjmm_ukmon_live_logging" { - bucket = "mjmm-ukmon-live" - target_bucket = "mjmmauditing" - target_prefix = "ukmon-live-logs/" -} - -resource "aws_s3_bucket_server_side_encryption_configuration" "mjmm_ukmon_live_encryption" { - bucket = aws_s3_bucket.mjmm-ukmon-live.bucket - - rule { - bucket_key_enabled = false - apply_server_side_encryption_by_default { - sse_algorithm = "AES256" - } - } -} - -resource "aws_s3_bucket_lifecycle_configuration" "live_lifecycle_rule" { - bucket = aws_s3_bucket.mjmm-ukmon-live.id - transition_default_minimum_object_size = "varies_by_storage_class" - - rule { - id = "MoveToArchive" - status = "Enabled" - transition { - days = 30 - storage_class = "STANDARD_IA" - } - filter {} - } - rule { - id = "PurgeOldVersions" - status = "Enabled" - - expiration { - days = 0 - } - - filter {} - - noncurrent_version_expiration { - newer_noncurrent_versions = "1" - noncurrent_days = 30 - } - } -} - -resource "aws_s3_bucket_versioning" "live_versioning" { - bucket = aws_s3_bucket.mjmm-ukmon-live.id - versioning_configuration { - status = "Suspended" - } -} -*/ diff --git a/archive/terraform/mjmm/sns.tf b/archive/terraform/mjmm/sns.tf deleted file mode 100644 index 7434685a..00000000 --- a/archive/terraform/mjmm/sns.tf +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre - -# -# SNS for notifications -# - -resource "aws_sns_topic" "ukmonalerts" { - name = "EBSActivit" - display_name = "DiskspaceMonitoring" - tags = { - billingtag = "ukmon" - } -} - -resource "aws_sns_topic_subscription" "ukmonsubs" { - topic_arn = aws_sns_topic.ukmonalerts.arn - protocol = "email" - endpoint = "markmcintyre99@googlemail.com" - confirmation_timeout_in_minutes = 1 - endpoint_auto_confirms = false -} diff --git a/archive/terraform/ukmda/vpc.tf b/archive/terraform/ukmda/vpc.tf index 455e6c3a..a1352cca 100644 --- a/archive/terraform/ukmda/vpc.tf +++ b/archive/terraform/ukmda/vpc.tf @@ -15,10 +15,10 @@ resource "aws_default_subnet" "default_subnet" { } # remote VPC in the MJMM account, needed for peering -data "aws_vpc" "mjmm_ec2_vpc" { - provider = aws.mjmmacct - cidr_block = "172.31.0.0/16" -} +#data "aws_vpc" "mjmm_ec2_vpc" { +# provider = aws.mjmmacct +# cidr_block = "172.31.0.0/16" +#} # VPC for the EC2 instances in this account resource "aws_vpc" "ec2_vpc" { @@ -68,10 +68,10 @@ resource "aws_default_route_table" "ec2_rtbl" { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.main_igw.id } - route { - cidr_block = data.aws_vpc.mjmm_ec2_vpc.cidr_block - vpc_peering_connection_id = aws_vpc_peering_connection.ukmdatommpeering.id - } + #route { + # cidr_block = data.aws_vpc.mjmm_ec2_vpc.cidr_block + # vpc_peering_connection_id = aws_vpc_peering_connection.ukmdatommpeering.id + #} tags = { "Name" = "public_rtbl" billingtag = "Management" @@ -93,12 +93,12 @@ resource "aws_internet_gateway" "main_igw" { } # peering connection with the MJMM account -resource "aws_vpc_peering_connection" "ukmdatommpeering" { - peer_vpc_id = data.aws_vpc.mjmm_ec2_vpc.id - vpc_id = aws_vpc.ec2_vpc.id - tags = { - "Name" = "mda-to-mm-peering" - "billingtag" = "ukmda" - } -} +#resource "aws_vpc_peering_connection" "ukmdatommpeering" { +# peer_vpc_id = data.aws_vpc.mjmm_ec2_vpc.id +# vpc_id = aws_vpc.ec2_vpc.id +# tags = { +# "Name" = "mda-to-mm-peering" +# "billingtag" = "ukmda" +# } +#} From 7dd438fe5beafc48f598639cbd9d3e44a49bff2e Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 27 May 2026 16:20:02 +0100 Subject: [PATCH 081/150] update ref to old batch server --- archive/ukmon_pylib/maintenance/getUserAndKeyInfo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/ukmon_pylib/maintenance/getUserAndKeyInfo.py b/archive/ukmon_pylib/maintenance/getUserAndKeyInfo.py index 85b3f04b..e4bd6e08 100644 --- a/archive/ukmon_pylib/maintenance/getUserAndKeyInfo.py +++ b/archive/ukmon_pylib/maintenance/getUserAndKeyInfo.py @@ -227,10 +227,10 @@ def createAndSaveKey(uid): def copyToHomedirs(uid, camlocs): if sys.platform == 'win32': - com = f'scp {csvdir}/{uid}.csv ukmonhelper2.:{lnxdir}' + com = f'scp {csvdir}/{uid}.csv ukmbatch:{lnxdir}' subprocess.call(com, shell=True, cwd=csvdir) for cam in camlocs: - com = f'ssh ukmonhelper2. "sudo cp {lnxdir}/{uid}.csv /var/sftp/{cam}/{cam}.csv"' + com = f'ssh ukmbatch "sudo cp {lnxdir}/{uid}.csv /var/sftp/{cam}/{cam}.csv"' subprocess.call(com, shell=True, cwd=csvdir) else: for cam in camlocs: From ed0c2e5b1f7796d11b805fdc7e61f4665589f49d Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 1 Jun 2026 22:37:08 +0100 Subject: [PATCH 082/150] remove unused permissions and roles --- archive/terraform/mjmm/aws.tf | 1 - archive/terraform/mjmm/crossacct-role.tf | 33 ----- archive/terraform/mjmm/dev_ssm_parameters.tf | 139 ------------------- archive/terraform/mjmm/iam.tf | 8 +- 4 files changed, 2 insertions(+), 179 deletions(-) delete mode 100644 archive/terraform/mjmm/crossacct-role.tf delete mode 100644 archive/terraform/mjmm/dev_ssm_parameters.tf diff --git a/archive/terraform/mjmm/aws.tf b/archive/terraform/mjmm/aws.tf index a9871b9e..a1ebb3d1 100644 --- a/archive/terraform/mjmm/aws.tf +++ b/archive/terraform/mjmm/aws.tf @@ -10,4 +10,3 @@ provider "aws" { region = "eu-west-1" alias = "eu-west-1-prov" } - diff --git a/archive/terraform/mjmm/crossacct-role.tf b/archive/terraform/mjmm/crossacct-role.tf deleted file mode 100644 index 858365ad..00000000 --- a/archive/terraform/mjmm/crossacct-role.tf +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre - -# RESTRICT THESE PERMISSIONS!! -data "aws_iam_policy" "terraformpol" { - name = "AdministratorAccess" -} - -data "aws_iam_policy_document" "terraformpoldoc" { - statement { - actions = [ - "sts:AssumeRole", - "sts:TagSession", - "sts:SetSourceIdentity" - ] - principals { - type = "AWS" - identifiers = ["arn:aws:iam::${var.mda_account_id}:root"] - } - } -} - -resource "aws_iam_role" "terraformrole" { - name = "TerraformRole" - assume_role_policy = data.aws_iam_policy_document.terraformpoldoc.json - tags = { - billingtag = "ukmon" - } -} - -resource "aws_iam_role_policy_attachment" "tfrole_pol_attachment" { - role = aws_iam_role.terraformrole.name - policy_arn = data.aws_iam_policy.terraformpol.arn -} diff --git a/archive/terraform/mjmm/dev_ssm_parameters.tf b/archive/terraform/mjmm/dev_ssm_parameters.tf deleted file mode 100644 index 819844f6..00000000 --- a/archive/terraform/mjmm/dev_ssm_parameters.tf +++ /dev/null @@ -1,139 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre - -# SSM parameters for use in the environment config - -resource "aws_ssm_parameter" "dev_websitebucket" { - name = "dev_websitebucket" - type = "String" - value = var.dev_webbucket - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_sharedbucket" { - name = "dev_sharedbucket" - type = "String" - value = var.dev_sharedbucket - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_livebucket" { - name = "dev_livebucket" - type = "String" - value = var.dev_livebucket - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_siteurl" { - name = "dev_siteurl" - type = "String" - value = "https://www.ukmeteors.co.uk/dummy/" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_envname" { - name = "dev_envname" - type = "String" - value = "DEV" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_calcinstance" { - name = "dev_calcinstance" - type = "String" - value = "i-0ab47af23705beb31" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_calcuser" { - name = "dev_calcuser" - type = "String" - value = "ubuntu" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_calcip" { - name = "dev_calcserverip" - type = "String" - value = "172.32.16.137" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_backupinstance" { - name = "dev_backupinstance" - type = "String" - value = "i-081af8754587bc7fa" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_wmplhome" { - name = "dev_wmplhome" - type = "String" - value = "/home/ec2-user/src/wmpldev" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_rmshome" { - name = "dev_rmshome" - type = "String" - value = "/home/ec2-user/src/RMS" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_srcdir" { - name = "dev_srcdir" - type = "String" - value = "/home/ec2-user/dev" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_caminfo" { - name = "dev_caminfo" - type = "String" - value = "/home/ec2-user/dev/data/consolidated/camera-details.csv" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_sshkey" { - name = "dev_sshkey" - type = "String" - value = "/home/ec2-user/.ssh/markskey.pem" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "dev_batchloggroup" { - name = "dev_batchloggroup" - type = "String" - value = "/ukmondev/nightlyjob" - tags = { - "billingtag" = "ukmon" - } -} - diff --git a/archive/terraform/mjmm/iam.tf b/archive/terraform/mjmm/iam.tf index 1da045ac..45eac5f5 100644 --- a/archive/terraform/mjmm/iam.tf +++ b/archive/terraform/mjmm/iam.tf @@ -38,11 +38,6 @@ resource "aws_iam_role_policy_attachment" "aws-managed-policy-attachment2" { policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" } -resource "aws_iam_role_policy_attachment" "xacctaccess" { - role = aws_iam_role.S3FullAccess.name - policy_arn = aws_iam_policy.crossacctpolicy.arn -} - resource "aws_iam_role_policy_attachment" "polatt4s3fullaccess" { role = aws_iam_role.S3FullAccess.name policy_arn = aws_iam_policy.pol4s3fullaccess.arn @@ -96,6 +91,7 @@ resource "aws_iam_policy" "pol4s3fullaccess" { } } +/* resource "aws_iam_policy" "crossacctpolicy" { name = "CrossAcctPolForS3FullAccess" policy = jsonencode( @@ -127,7 +123,7 @@ resource "aws_iam_policy" "crossacctpolicy" { "billingtag" = "ukmon" } } - +*/ # role and permissions used by Lambda From 4bcfcec2e57d534c24d41f497ac0f9f638c62715 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 1 Jun 2026 22:41:13 +0100 Subject: [PATCH 083/150] remove support for old server --- archive/server_setup/acctStatusChecks.sh | 4 ++-- archive/website/cameraStatusReport.sh | 19 +++---------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/archive/server_setup/acctStatusChecks.sh b/archive/server_setup/acctStatusChecks.sh index 608ff74f..d14928ba 100644 --- a/archive/server_setup/acctStatusChecks.sh +++ b/archive/server_setup/acctStatusChecks.sh @@ -16,8 +16,8 @@ cat inflight.txt | while read i; do grep $i withowner.txt | awk -F "," '{print $ rm inflight.txt -ssh ukmonhelper2 "~/server_setup/get-nbd.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > dead.txt -ssh ukmonhelper2 "~/server_setup/get-all.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > all-accounts.txt +#ssh ukmonhelper2 "~/server_setup/get-nbd.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > dead.txt +#ssh ukmonhelper2 "~/server_setup/get-all.sh" | while read i ; do echo $i | awk -F"/" '{print $4}' ; done > all-accounts.txt python ~/src/ukmda-dataprocessing/archive/server_setup/checkSftpAccounts.py diff --git a/archive/website/cameraStatusReport.sh b/archive/website/cameraStatusReport.sh index dc1bc47e..1aa9135f 100644 --- a/archive/website/cameraStatusReport.sh +++ b/archive/website/cameraStatusReport.sh @@ -27,27 +27,14 @@ conda activate $HOME/miniconda3/envs/${WMPL_ENV} export PYTHONPATH=$PYLIB logger -s -t $(basename $0 .sh) "start" -echo TEMPORARY HACK REMOVE CODE PERTAINING TO OLD SERVER -platform=$(grep "^NAME" /etc/os-release | awk -F'"' '{print $2}') -if [ "$platform" == "Ubuntu" ] ; then - authlog=/var/log/auth.log - batchuser=ubuntu -else - authlog=/var/log/secure - batchuser=ec2-user -fi +authlog=/var/log/auth.log +batchuser=ubuntu sudo grep publickey $authlog* | grep -v $batchuser | grep -v fatal > $DATADIR/reports/lastlogins.txt - -if [ "$platform" == "Ubuntu" ] -then - ssh ukmonhelper2 "sudo grep publickey /var/log/secure* | egrep -v 'ec2-user|fatal'" > $DATADIR/reports/lastlogins_old.txt -fi cat $DATADIR/reports/lastlogins_old.txt >> $DATADIR/reports/lastlogins.txt -echo TO HERE python -m metrics.camMetrics $rundate rm -f $DATADIR/reports/lastlogins.txt -rm -f $DATADIR/reports/lastlogins_old.txt +# rm -f $DATADIR/reports/lastlogins_old.txt aws s3 cp $DATADIR/reports/stationlogins.txt $WEBSITEBUCKET/reports/stationlogins.txt --region eu-west-2 --quiet From 3341b7075bed67fa07cd01a5400a145d8b863371 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 1 Jun 2026 22:42:29 +0100 Subject: [PATCH 084/150] remove unused SSM params --- archive/terraform/mjmm/ssm_parameters.tf | 187 ----------------------- 1 file changed, 187 deletions(-) delete mode 100644 archive/terraform/mjmm/ssm_parameters.tf diff --git a/archive/terraform/mjmm/ssm_parameters.tf b/archive/terraform/mjmm/ssm_parameters.tf deleted file mode 100644 index 8889f3a6..00000000 --- a/archive/terraform/mjmm/ssm_parameters.tf +++ /dev/null @@ -1,187 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre - -# SSM parameters for use in the environment config -resource "aws_ssm_parameter" "prod_dbhost" { - provider = aws.eu-west-1-prov - name = "prod_dbhost" - type = "String" - value = "3.11.55.160" - tags = { - "billingtag" = "ukmda" - } -} - -resource "aws_ssm_parameter" "prod_dbname" { - provider = aws.eu-west-1-prov - name = "prod_dbname" - type = "String" - value = "ukmon" - tags = { - "billingtag" = "ukmda" - } -} - -resource "aws_ssm_parameter" "prod_dbpw" { - provider = aws.eu-west-1-prov - name = "prod_dbpw" - type = "SecureString" - value = "Batch33mdl" - tags = { - "billingtag" = "ukmda" - } -} - -resource "aws_ssm_parameter" "prod_dbuser" { - provider = aws.eu-west-1-prov - name = "prod_dbuser" - type = "String" - value = "batch" - tags = { - "billingtag" = "ukmda" - } -} - -resource "aws_ssm_parameter" "prod_websitebucket" { - name = "prod_websitebucket" - type = "String" - value = var.webbucket - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_sharedbucket" { - name = "prod_sharedbucket" - type = "String" - value = var.sharedbucket - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_livebucket" { - name = "prod_livebucket" - type = "String" - value = var.livebucket - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_siteurl" { - name = "prod_siteurl" - type = "String" - value = "https://archive.ukmeteors.co.uk" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_envname" { - name = "prod_envname" - type = "String" - value = "PROD" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_calcinstance" { - name = "prod_calcinstance" - type = "String" - value = "i-0ab47af23705beb31" - #value = "i-04cd701c3cfc980f5" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_calcuser" { - name = "prod_calcuser" - type = "String" - value = "ubuntu" - #value = "ec2-user" # "ubuntu" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_calcip" { - name = "prod_calcserverip" - type = "String" - value = "172.32.16.137" - tags = { - "billingtag" = "ukmon" - } -} -resource "aws_ssm_parameter" "prod_backupinstance" { - name = "prod_backupinstance" - type = "String" - value = "i-081af8754587bc7fa" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_wmplhome" { - name = "prod_wmplhome" - type = "String" - value = "/home/ec2-user/src/WesternMeteorPyLib" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_rmshome" { - name = "prod_rmshome" - type = "String" - value = "/home/ec2-user/src/RMS" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_srcdir" { - name = "prod_srcdir" - type = "String" - value = "/home/ec2-user/prod" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_caminfo" { - name = "prod_caminfo" - type = "String" - value = "/home/ec2-user/prod/data/consolidated/camera-details.csv" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_sshkey" { - name = "prod_sshkey" - type = "String" - value = "/home/ec2-user/.ssh/markskey.pem" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_batchloggroup" { - name = "prod_batchloggroup" - type = "String" - value = "/ukmonbatch/nightlyjob" - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_ssm_parameter" "prod_gmapsapikey" { - name = "prod_gmapsapikey" - type = "SecureString" - value = "AIzaSyBFadTuzvLfkUhz8CwY2CtRDJ_lYlHUYyA" - tags = { - "billingtag" = "ukmon" - } -} From 8599588bbe4d168807809b77ece7b1c7bf1e78a9 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 1 Jun 2026 22:49:18 +0100 Subject: [PATCH 085/150] removing further disused perms set up by terraform --- archive/terraform/mjmm/iam.tf | 35 ------------------------------- archive/terraform/mjmm/peering.tf | 12 ----------- 2 files changed, 47 deletions(-) delete mode 100644 archive/terraform/mjmm/peering.tf diff --git a/archive/terraform/mjmm/iam.tf b/archive/terraform/mjmm/iam.tf index 45eac5f5..ac3cc36f 100644 --- a/archive/terraform/mjmm/iam.tf +++ b/archive/terraform/mjmm/iam.tf @@ -91,41 +91,6 @@ resource "aws_iam_policy" "pol4s3fullaccess" { } } -/* -resource "aws_iam_policy" "crossacctpolicy" { - name = "CrossAcctPolForS3FullAccess" - policy = jsonencode( - { - Statement = [ - { - Action = [ - "sts:AssumeRole", - ] - Effect = "Allow" - Resource = [ - "arn:aws:iam::${var.mda_account_id}:role/service-role/S3FullAccess", - ] - }, - { - Action = [ - "lambda:InvokeFunction", - ] - Effect = "Allow" - Resource = [ - "arn:aws:lambda:eu-west-2:${var.mda_account_id}:function:dailyReport", - ] - }, - ] - Version = "2012-10-17" - } - ) - tags = { - "billingtag" = "ukmon" - } -} -*/ - - # role and permissions used by Lambda resource "aws_iam_role" "lambda-s3-full-access-role" { name = "lambda-s3-full-access-role" diff --git a/archive/terraform/mjmm/peering.tf b/archive/terraform/mjmm/peering.tf deleted file mode 100644 index 03daf773..00000000 --- a/archive/terraform/mjmm/peering.tf +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre -# -# Terraform for peering to the ukmda account -# - -#resource "aws_vpc_peering_connection_accepter" "mdatommpeering" { -# vpc_peering_connection_id = "pcx-0beef413172ec795e" -# tags = { -# "Name" = "ukmda-to-mm-peering" -# "billingtag" = "ukmda" -# } -#} From a5c25a4ded0237fb753bb2c2bd0a60c724da5733 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 1 Jun 2026 23:14:56 +0100 Subject: [PATCH 086/150] further removal of unused terraform artefacts --- archive/terraform/mjmm/aws.tf | 3 + archive/terraform/mjmm/iam.tf | 89 ----------------------- archive/terraform/mjmm/keys.tf | 9 --- archive/terraform/mjmm/secgrp.tf | 3 + archive/terraform/mjmm/ukmonhelper_ec2.tf | 8 ++ archive/terraform/mjmm/variables.tf | 18 ----- 6 files changed, 14 insertions(+), 116 deletions(-) delete mode 100644 archive/terraform/mjmm/keys.tf delete mode 100644 archive/terraform/mjmm/variables.tf diff --git a/archive/terraform/mjmm/aws.tf b/archive/terraform/mjmm/aws.tf index a1ebb3d1..ec357ee4 100644 --- a/archive/terraform/mjmm/aws.tf +++ b/archive/terraform/mjmm/aws.tf @@ -1,5 +1,8 @@ # Copyright (C) 2018-2023 Mark McIntyre +variable "profile" { default = "default" } +variable "region" { default = "eu-west-2" } + provider "aws" { profile = var.profile region = var.region diff --git a/archive/terraform/mjmm/iam.tf b/archive/terraform/mjmm/iam.tf index ac3cc36f..3fb0f81b 100644 --- a/archive/terraform/mjmm/iam.tf +++ b/archive/terraform/mjmm/iam.tf @@ -73,15 +73,6 @@ resource "aws_iam_policy" "pol4s3fullaccess" { Effect = "Allow" Resource = [ "*" ] }, - { - Sid = "PassRolePermission" - Effect = "Allow" - Action = [ - "iam:PassRole", - "iam:GetRole", - ] - Resource = aws_iam_role.ecstaskrole.arn - } ] Version = "2012-10-17" } @@ -177,83 +168,3 @@ resource "aws_iam_role_policy_attachment" "cweventspolicy" { role = aws_iam_service_linked_role.cweventslrole.name policy_arn = "arn:aws:iam::aws:policy/aws-service-role/CloudWatchEventsServiceRolePolicy" } - - - - -################################ -# for testing with - -# User, Policy and Roles used by ukmon-backup process. -# don't think this is used -resource "aws_iam_user" "ukmon_tester" { - name = "ukmon_tester" - tags = { - "billingtag" = "ukmon" - "AKIAUUCG4WH4B3XOH3WZ" = "ukmon_tester" - } -} - -resource "aws_iam_policy" "pol_ukmon_tester" { - name = "pol_ukmon_tester" - policy = data.aws_iam_policy_document.ukmon_tester_pol_doc.json - description = "policu for my test user" -} - -data "aws_iam_policy_document" "ukmon_tester_pol_doc" { - statement { - actions = [ - "s3:*" - ] - effect = "Allow" - resources = [ - "arn:aws:s3:::mjmm-ukmon-shared", - "arn:aws:s3:::mjmm-ukmon-shared/*", - "arn:aws:s3:::mjmm-ukmon-live", - "arn:aws:s3:::mjmm-ukmon-live/*", - "arn:aws:s3:::mjmm-ukmonarchive.co.uk", - "arn:aws:s3:::mjmm-ukmonarchive.co.uk/*", - ] - } - version = "2012-10-17" -} - -resource "aws_iam_user_policy_attachment" "ukmon-tester-pol-attachment" { - user = aws_iam_user.ukmon_tester.name - policy_arn = aws_iam_policy.pol_ukmon_tester.arn -} - - -# iam role for the task to use -resource "aws_iam_role" "ecstaskrole" { - name = "ecsTaskExecutionRole" - assume_role_policy = < Date: Mon, 8 Jun 2026 11:26:38 +0100 Subject: [PATCH 087/150] removing mjmm assets from project as server migrated to ukmda account --- archive/terraform/mjmm/iam.tf | 170 ------------------ archive/terraform/mjmm/secgrp.tf | 162 ----------------- archive/terraform/mjmm/ssh-keys/markskey.pub | 1 - archive/terraform/mjmm/ukmonhelper_ec2.tf | 19 +- archive/terraform/ukmda/iam.tf | 36 +--- archive/terraform/ukmda/ukmdashared_bucket.tf | 30 +--- .../terraform/ukmda/ukmdawebsite_bucket.tf | 24 --- 7 files changed, 12 insertions(+), 430 deletions(-) delete mode 100644 archive/terraform/mjmm/iam.tf delete mode 100644 archive/terraform/mjmm/secgrp.tf delete mode 100644 archive/terraform/mjmm/ssh-keys/markskey.pub diff --git a/archive/terraform/mjmm/iam.tf b/archive/terraform/mjmm/iam.tf deleted file mode 100644 index 3fb0f81b..00000000 --- a/archive/terraform/mjmm/iam.tf +++ /dev/null @@ -1,170 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre - -# Role and policies used by EC2 servers -resource "aws_iam_role" "S3FullAccess" { - name = "S3FullAccess" - description = "Allows EC2 instances to connect to S3" - assume_role_policy = jsonencode( - { - Statement = [ - { - Action = "sts:AssumeRole" - Effect = "Allow" - Principal = { - Service = "ec2.amazonaws.com" - } - }, - ] - Version = "2012-10-17" - } - ) - tags = { - "billingtag" = "ukmon" - } -} - -resource "aws_iam_instance_profile" "S3FullAccess" { - name = "S3FullAccess" - role = aws_iam_role.S3FullAccess.name -} - -resource "aws_iam_role_policy_attachment" "aws-managed-policy-attachment1" { - role = aws_iam_role.S3FullAccess.name - policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess" -} - -resource "aws_iam_role_policy_attachment" "aws-managed-policy-attachment2" { - role = aws_iam_role.S3FullAccess.name - policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" -} - -resource "aws_iam_role_policy_attachment" "polatt4s3fullaccess" { - role = aws_iam_role.S3FullAccess.name - policy_arn = aws_iam_policy.pol4s3fullaccess.arn -} - -resource "aws_iam_policy" "pol4s3fullaccess" { - name = "PolForS3FullAccess" - policy = jsonencode( - { - Statement = [ - { - Action = [ - "logs:FilterLogEvents", - "logs:GetLogEvents", - "ec2:DescribeInstances", - "ec2:StartInstances", - "ec2:StopInstances", - "ecs:DescribeClusters", - "ecs:DescribeTasks", - "ecs:RunTask", - "s3:*", - ] - Effect = "Allow" - Resource = [ - "*", - ] - }, - { - Action = [ - "iam:GetCredentialReport", - "iam:GenerateCredentialReport" - ] - Effect = "Allow" - Resource = [ "*" ] - }, - ] - Version = "2012-10-17" - } - ) - tags = { - "billingtag" = "ukmon" - } -} - -# role and permissions used by Lambda -resource "aws_iam_role" "lambda-s3-full-access-role" { - name = "lambda-s3-full-access-role" - description = "Allows lambda acccess to S3 buckets" - assume_role_policy = jsonencode( - { - Statement = [ - { - Action = "sts:AssumeRole" - Effect = "Allow" - Principal = { - Service = "lambda.amazonaws.com" - } - }, - ] - Version = "2012-10-17" - } - ) -} - -resource "aws_iam_role_policy_attachment" "aws_managed_policy_l1" { - role = aws_iam_role.lambda-s3-full-access-role.name - policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess" -} -resource "aws_iam_role_policy_attachment" "aws_managed_policy_l2" { - role = aws_iam_role.lambda-s3-full-access-role.name - policy_arn = "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" -} -resource "aws_iam_role_policy_attachment" "aws_managed_policy_l3" { - role = aws_iam_role.lambda-s3-full-access-role.name - policy_arn = "arn:aws:iam::aws:policy/AWSLambdaFullAccess" -} -resource "aws_iam_role_policy_attachment" "aws_managed_policy_l4" { - role = aws_iam_role.lambda-s3-full-access-role.name - policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole" -} - -resource "aws_iam_role_policy" "lambda_inline_policy_1" { - name = "policygen-lambda-s3-full-access-role-201711082329" - role = aws_iam_role.lambda-s3-full-access-role.name - policy = < Date: Mon, 8 Jun 2026 12:01:24 +0100 Subject: [PATCH 088/150] removing vestiges of mjmm aws account and reorging terraform code --- archive/terraform/{ukmda => }/acm_certs.tf | 0 archive/terraform/{ukmda => }/apigw-domain.tf | 0 archive/terraform/{ukmda => }/aws.tf | 0 archive/terraform/{ukmda => }/batchserver.tf | 0 archive/terraform/{ukmda => }/calcserver.tf | 0 archive/terraform/{ukmda => }/cloudfront.tf | 0 archive/terraform/{ukmda => }/cloudwatch.tf | 0 .../terraform/{ukmda => }/developer_perms.tf | 0 .../terraform/{ukmda => }/dynamodb_tables.tf | 0 .../terraform/{ukmda => }/ecr_artefacts.tf | 0 archive/terraform/{ukmda => }/ecs_vpc.tf | 0 .../terraform/{ukmda => }/ecscluster-test.tf | 0 archive/terraform/{ukmda => }/ecscluster.tf | 0 .../files/monitorLiveFeed/monitorLiveFeed.py | 0 .../files/policies/ddb_livetables.json | 0 .../{ukmda => }/files/policies/developer.json | 0 .../policies/fireballcollector-policy.json | 0 .../files/policies/monitorlive-lambda.json | 0 .../policies/ukmda-calcserverpolicy.json | 0 .../files/policies/ukmda-shared.json | 0 .../{ukmda => }/files/policies/ukmdalive.json | 0 .../{ukmda => }/files/ssh-keys/markskey.pub | 0 .../trajsolver/trajsolver_container.json | 0 .../{ukmda => }/fireballcollector.tf | 0 archive/terraform/{ukmda => }/iam.tf | 0 archive/terraform/{ukmda => }/keys.tf | 0 .../terraform/{ukmda => }/loggingbucket.tf | 0 archive/terraform/mjmm/aws.tf | 15 ----- archive/terraform/mjmm/ukmonhelper_ec2.tf | 56 ------------------- .../{ukmda => }/monitorlive_lambda.tf | 0 archive/terraform/{ukmda => }/route53.tf | 0 archive/terraform/{ukmda => }/secgrp.tf | 0 archive/terraform/{ukmda => }/ses.tf | 0 .../{ukmda => }/set_log_retention.ps1 | 0 archive/terraform/{ukmda => }/sns.tf | 0 ..._ssm_variables.tf => ssm_dev_variables.tf} | 0 ...ssm_variables.tf => ssm_prod_variables.tf} | 0 .../{ukmda => }/ukmdaadmin_bucket.tf | 0 .../{ukmda => }/ukmdalive-triggers.tf | 0 .../terraform/{ukmda => }/ukmdalive_bucket.tf | 0 .../{ukmda => }/ukmdashared_bucket.tf | 0 .../{ukmda => }/ukmdashared_triggers.tf | 0 .../{ukmda => }/ukmdawebsite_bucket.tf | 0 archive/terraform/{ukmda => }/userpolicies.tf | 0 archive/terraform/{ukmda => }/variables.tf | 0 archive/terraform/{ukmda => }/vpc.tf | 0 46 files changed, 71 deletions(-) rename archive/terraform/{ukmda => }/acm_certs.tf (100%) rename archive/terraform/{ukmda => }/apigw-domain.tf (100%) rename archive/terraform/{ukmda => }/aws.tf (100%) rename archive/terraform/{ukmda => }/batchserver.tf (100%) rename archive/terraform/{ukmda => }/calcserver.tf (100%) rename archive/terraform/{ukmda => }/cloudfront.tf (100%) rename archive/terraform/{ukmda => }/cloudwatch.tf (100%) rename archive/terraform/{ukmda => }/developer_perms.tf (100%) rename archive/terraform/{ukmda => }/dynamodb_tables.tf (100%) rename archive/terraform/{ukmda => }/ecr_artefacts.tf (100%) rename archive/terraform/{ukmda => }/ecs_vpc.tf (100%) rename archive/terraform/{ukmda => }/ecscluster-test.tf (100%) rename archive/terraform/{ukmda => }/ecscluster.tf (100%) rename archive/terraform/{ukmda => }/files/monitorLiveFeed/monitorLiveFeed.py (100%) rename archive/terraform/{ukmda => }/files/policies/ddb_livetables.json (100%) rename archive/terraform/{ukmda => }/files/policies/developer.json (100%) rename archive/terraform/{ukmda => }/files/policies/fireballcollector-policy.json (100%) rename archive/terraform/{ukmda => }/files/policies/monitorlive-lambda.json (100%) rename archive/terraform/{ukmda => }/files/policies/ukmda-calcserverpolicy.json (100%) rename archive/terraform/{ukmda => }/files/policies/ukmda-shared.json (100%) rename archive/terraform/{ukmda => }/files/policies/ukmdalive.json (100%) rename archive/terraform/{ukmda => }/files/ssh-keys/markskey.pub (100%) rename archive/terraform/{ukmda => }/files/trajsolver/trajsolver_container.json (100%) rename archive/terraform/{ukmda => }/fireballcollector.tf (100%) rename archive/terraform/{ukmda => }/iam.tf (100%) rename archive/terraform/{ukmda => }/keys.tf (100%) rename archive/terraform/{ukmda => }/loggingbucket.tf (100%) delete mode 100644 archive/terraform/mjmm/aws.tf delete mode 100644 archive/terraform/mjmm/ukmonhelper_ec2.tf rename archive/terraform/{ukmda => }/monitorlive_lambda.tf (100%) rename archive/terraform/{ukmda => }/route53.tf (100%) rename archive/terraform/{ukmda => }/secgrp.tf (100%) rename archive/terraform/{ukmda => }/ses.tf (100%) rename archive/terraform/{ukmda => }/set_log_retention.ps1 (100%) rename archive/terraform/{ukmda => }/sns.tf (100%) rename archive/terraform/{ukmda/dev_ssm_variables.tf => ssm_dev_variables.tf} (100%) rename archive/terraform/{ukmda/prod_ssm_variables.tf => ssm_prod_variables.tf} (100%) rename archive/terraform/{ukmda => }/ukmdaadmin_bucket.tf (100%) rename archive/terraform/{ukmda => }/ukmdalive-triggers.tf (100%) rename archive/terraform/{ukmda => }/ukmdalive_bucket.tf (100%) rename archive/terraform/{ukmda => }/ukmdashared_bucket.tf (100%) rename archive/terraform/{ukmda => }/ukmdashared_triggers.tf (100%) rename archive/terraform/{ukmda => }/ukmdawebsite_bucket.tf (100%) rename archive/terraform/{ukmda => }/userpolicies.tf (100%) rename archive/terraform/{ukmda => }/variables.tf (100%) rename archive/terraform/{ukmda => }/vpc.tf (100%) diff --git a/archive/terraform/ukmda/acm_certs.tf b/archive/terraform/acm_certs.tf similarity index 100% rename from archive/terraform/ukmda/acm_certs.tf rename to archive/terraform/acm_certs.tf diff --git a/archive/terraform/ukmda/apigw-domain.tf b/archive/terraform/apigw-domain.tf similarity index 100% rename from archive/terraform/ukmda/apigw-domain.tf rename to archive/terraform/apigw-domain.tf diff --git a/archive/terraform/ukmda/aws.tf b/archive/terraform/aws.tf similarity index 100% rename from archive/terraform/ukmda/aws.tf rename to archive/terraform/aws.tf diff --git a/archive/terraform/ukmda/batchserver.tf b/archive/terraform/batchserver.tf similarity index 100% rename from archive/terraform/ukmda/batchserver.tf rename to archive/terraform/batchserver.tf diff --git a/archive/terraform/ukmda/calcserver.tf b/archive/terraform/calcserver.tf similarity index 100% rename from archive/terraform/ukmda/calcserver.tf rename to archive/terraform/calcserver.tf diff --git a/archive/terraform/ukmda/cloudfront.tf b/archive/terraform/cloudfront.tf similarity index 100% rename from archive/terraform/ukmda/cloudfront.tf rename to archive/terraform/cloudfront.tf diff --git a/archive/terraform/ukmda/cloudwatch.tf b/archive/terraform/cloudwatch.tf similarity index 100% rename from archive/terraform/ukmda/cloudwatch.tf rename to archive/terraform/cloudwatch.tf diff --git a/archive/terraform/ukmda/developer_perms.tf b/archive/terraform/developer_perms.tf similarity index 100% rename from archive/terraform/ukmda/developer_perms.tf rename to archive/terraform/developer_perms.tf diff --git a/archive/terraform/ukmda/dynamodb_tables.tf b/archive/terraform/dynamodb_tables.tf similarity index 100% rename from archive/terraform/ukmda/dynamodb_tables.tf rename to archive/terraform/dynamodb_tables.tf diff --git a/archive/terraform/ukmda/ecr_artefacts.tf b/archive/terraform/ecr_artefacts.tf similarity index 100% rename from archive/terraform/ukmda/ecr_artefacts.tf rename to archive/terraform/ecr_artefacts.tf diff --git a/archive/terraform/ukmda/ecs_vpc.tf b/archive/terraform/ecs_vpc.tf similarity index 100% rename from archive/terraform/ukmda/ecs_vpc.tf rename to archive/terraform/ecs_vpc.tf diff --git a/archive/terraform/ukmda/ecscluster-test.tf b/archive/terraform/ecscluster-test.tf similarity index 100% rename from archive/terraform/ukmda/ecscluster-test.tf rename to archive/terraform/ecscluster-test.tf diff --git a/archive/terraform/ukmda/ecscluster.tf b/archive/terraform/ecscluster.tf similarity index 100% rename from archive/terraform/ukmda/ecscluster.tf rename to archive/terraform/ecscluster.tf diff --git a/archive/terraform/ukmda/files/monitorLiveFeed/monitorLiveFeed.py b/archive/terraform/files/monitorLiveFeed/monitorLiveFeed.py similarity index 100% rename from archive/terraform/ukmda/files/monitorLiveFeed/monitorLiveFeed.py rename to archive/terraform/files/monitorLiveFeed/monitorLiveFeed.py diff --git a/archive/terraform/ukmda/files/policies/ddb_livetables.json b/archive/terraform/files/policies/ddb_livetables.json similarity index 100% rename from archive/terraform/ukmda/files/policies/ddb_livetables.json rename to archive/terraform/files/policies/ddb_livetables.json diff --git a/archive/terraform/ukmda/files/policies/developer.json b/archive/terraform/files/policies/developer.json similarity index 100% rename from archive/terraform/ukmda/files/policies/developer.json rename to archive/terraform/files/policies/developer.json diff --git a/archive/terraform/ukmda/files/policies/fireballcollector-policy.json b/archive/terraform/files/policies/fireballcollector-policy.json similarity index 100% rename from archive/terraform/ukmda/files/policies/fireballcollector-policy.json rename to archive/terraform/files/policies/fireballcollector-policy.json diff --git a/archive/terraform/ukmda/files/policies/monitorlive-lambda.json b/archive/terraform/files/policies/monitorlive-lambda.json similarity index 100% rename from archive/terraform/ukmda/files/policies/monitorlive-lambda.json rename to archive/terraform/files/policies/monitorlive-lambda.json diff --git a/archive/terraform/ukmda/files/policies/ukmda-calcserverpolicy.json b/archive/terraform/files/policies/ukmda-calcserverpolicy.json similarity index 100% rename from archive/terraform/ukmda/files/policies/ukmda-calcserverpolicy.json rename to archive/terraform/files/policies/ukmda-calcserverpolicy.json diff --git a/archive/terraform/ukmda/files/policies/ukmda-shared.json b/archive/terraform/files/policies/ukmda-shared.json similarity index 100% rename from archive/terraform/ukmda/files/policies/ukmda-shared.json rename to archive/terraform/files/policies/ukmda-shared.json diff --git a/archive/terraform/ukmda/files/policies/ukmdalive.json b/archive/terraform/files/policies/ukmdalive.json similarity index 100% rename from archive/terraform/ukmda/files/policies/ukmdalive.json rename to archive/terraform/files/policies/ukmdalive.json diff --git a/archive/terraform/ukmda/files/ssh-keys/markskey.pub b/archive/terraform/files/ssh-keys/markskey.pub similarity index 100% rename from archive/terraform/ukmda/files/ssh-keys/markskey.pub rename to archive/terraform/files/ssh-keys/markskey.pub diff --git a/archive/terraform/ukmda/files/trajsolver/trajsolver_container.json b/archive/terraform/files/trajsolver/trajsolver_container.json similarity index 100% rename from archive/terraform/ukmda/files/trajsolver/trajsolver_container.json rename to archive/terraform/files/trajsolver/trajsolver_container.json diff --git a/archive/terraform/ukmda/fireballcollector.tf b/archive/terraform/fireballcollector.tf similarity index 100% rename from archive/terraform/ukmda/fireballcollector.tf rename to archive/terraform/fireballcollector.tf diff --git a/archive/terraform/ukmda/iam.tf b/archive/terraform/iam.tf similarity index 100% rename from archive/terraform/ukmda/iam.tf rename to archive/terraform/iam.tf diff --git a/archive/terraform/ukmda/keys.tf b/archive/terraform/keys.tf similarity index 100% rename from archive/terraform/ukmda/keys.tf rename to archive/terraform/keys.tf diff --git a/archive/terraform/ukmda/loggingbucket.tf b/archive/terraform/loggingbucket.tf similarity index 100% rename from archive/terraform/ukmda/loggingbucket.tf rename to archive/terraform/loggingbucket.tf diff --git a/archive/terraform/mjmm/aws.tf b/archive/terraform/mjmm/aws.tf deleted file mode 100644 index ec357ee4..00000000 --- a/archive/terraform/mjmm/aws.tf +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre - -variable "profile" { default = "default" } -variable "region" { default = "eu-west-2" } - -provider "aws" { - profile = var.profile - region = var.region -} - -provider "aws" { - profile = var.profile - region = "eu-west-1" - alias = "eu-west-1-prov" -} diff --git a/archive/terraform/mjmm/ukmonhelper_ec2.tf b/archive/terraform/mjmm/ukmonhelper_ec2.tf deleted file mode 100644 index 59893181..00000000 --- a/archive/terraform/mjmm/ukmonhelper_ec2.tf +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (C) 2018- Mark McIntyre - -data "aws_security_group" "ec2publicsg" { - name = "ec2PublicSG" -} - -data "aws_key_pair" "marks_key" { - key_name = "markskey" -} - -data "aws_kms_key" "container_key" { - key_id = "e9b72945-eaac-4452-9708-93963b09976d" -} - -data "aws_iam_instance_profile" "S3FullAccess" { - name = "S3FullAccess" -} - -resource "aws_instance" "ukmonhelper_g" { - ami = "ami-0c127ddea5a07804b" - instance_type = "t4g.micro" - iam_instance_profile = data.aws_iam_instance_profile.S3FullAccess.name - key_name = data.aws_key_pair.marks_key.key_name - security_groups = [data.aws_security_group.ec2publicsg.name] - force_destroy = false - - root_block_device { - tags = { - "Name" = "UKMonHelperVol2" - "billingtag" = "ukmon" - "project" = "UKMonHelper2" - } - volume_size = 50 - volume_type = "gp3" - throughput = 125 - iops = 3000 - encrypted = true - kms_key_id = data.aws_kms_key.container_key.arn - } - - tags = { - "Name" = "UKMonHelper2" - "billingtag" = "ukmon" - "project" = "UKMonHelper2" - "Route53FQDN" = "ukmonhelper.markmcintyreastro.co.uk" - "DNSRecordType" = "A" - } -} - -resource "aws_eip" "ukmonhelper2" { - instance = aws_instance.ukmonhelper_g.id - tags = { - billingtag = "ukmon" - Name = "ukmonhelper_eip" - } -} diff --git a/archive/terraform/ukmda/monitorlive_lambda.tf b/archive/terraform/monitorlive_lambda.tf similarity index 100% rename from archive/terraform/ukmda/monitorlive_lambda.tf rename to archive/terraform/monitorlive_lambda.tf diff --git a/archive/terraform/ukmda/route53.tf b/archive/terraform/route53.tf similarity index 100% rename from archive/terraform/ukmda/route53.tf rename to archive/terraform/route53.tf diff --git a/archive/terraform/ukmda/secgrp.tf b/archive/terraform/secgrp.tf similarity index 100% rename from archive/terraform/ukmda/secgrp.tf rename to archive/terraform/secgrp.tf diff --git a/archive/terraform/ukmda/ses.tf b/archive/terraform/ses.tf similarity index 100% rename from archive/terraform/ukmda/ses.tf rename to archive/terraform/ses.tf diff --git a/archive/terraform/ukmda/set_log_retention.ps1 b/archive/terraform/set_log_retention.ps1 similarity index 100% rename from archive/terraform/ukmda/set_log_retention.ps1 rename to archive/terraform/set_log_retention.ps1 diff --git a/archive/terraform/ukmda/sns.tf b/archive/terraform/sns.tf similarity index 100% rename from archive/terraform/ukmda/sns.tf rename to archive/terraform/sns.tf diff --git a/archive/terraform/ukmda/dev_ssm_variables.tf b/archive/terraform/ssm_dev_variables.tf similarity index 100% rename from archive/terraform/ukmda/dev_ssm_variables.tf rename to archive/terraform/ssm_dev_variables.tf diff --git a/archive/terraform/ukmda/prod_ssm_variables.tf b/archive/terraform/ssm_prod_variables.tf similarity index 100% rename from archive/terraform/ukmda/prod_ssm_variables.tf rename to archive/terraform/ssm_prod_variables.tf diff --git a/archive/terraform/ukmda/ukmdaadmin_bucket.tf b/archive/terraform/ukmdaadmin_bucket.tf similarity index 100% rename from archive/terraform/ukmda/ukmdaadmin_bucket.tf rename to archive/terraform/ukmdaadmin_bucket.tf diff --git a/archive/terraform/ukmda/ukmdalive-triggers.tf b/archive/terraform/ukmdalive-triggers.tf similarity index 100% rename from archive/terraform/ukmda/ukmdalive-triggers.tf rename to archive/terraform/ukmdalive-triggers.tf diff --git a/archive/terraform/ukmda/ukmdalive_bucket.tf b/archive/terraform/ukmdalive_bucket.tf similarity index 100% rename from archive/terraform/ukmda/ukmdalive_bucket.tf rename to archive/terraform/ukmdalive_bucket.tf diff --git a/archive/terraform/ukmda/ukmdashared_bucket.tf b/archive/terraform/ukmdashared_bucket.tf similarity index 100% rename from archive/terraform/ukmda/ukmdashared_bucket.tf rename to archive/terraform/ukmdashared_bucket.tf diff --git a/archive/terraform/ukmda/ukmdashared_triggers.tf b/archive/terraform/ukmdashared_triggers.tf similarity index 100% rename from archive/terraform/ukmda/ukmdashared_triggers.tf rename to archive/terraform/ukmdashared_triggers.tf diff --git a/archive/terraform/ukmda/ukmdawebsite_bucket.tf b/archive/terraform/ukmdawebsite_bucket.tf similarity index 100% rename from archive/terraform/ukmda/ukmdawebsite_bucket.tf rename to archive/terraform/ukmdawebsite_bucket.tf diff --git a/archive/terraform/ukmda/userpolicies.tf b/archive/terraform/userpolicies.tf similarity index 100% rename from archive/terraform/ukmda/userpolicies.tf rename to archive/terraform/userpolicies.tf diff --git a/archive/terraform/ukmda/variables.tf b/archive/terraform/variables.tf similarity index 100% rename from archive/terraform/ukmda/variables.tf rename to archive/terraform/variables.tf diff --git a/archive/terraform/ukmda/vpc.tf b/archive/terraform/vpc.tf similarity index 100% rename from archive/terraform/ukmda/vpc.tf rename to archive/terraform/vpc.tf From 126e0ed4206f4d174e6cfa9b249148f2dba3e29d Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 8 Jun 2026 12:23:11 +0100 Subject: [PATCH 089/150] upgrade ddb GSIs to use key_schemas --- archive/terraform/dynamodb_tables.tf | 69 ++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/archive/terraform/dynamodb_tables.tf b/archive/terraform/dynamodb_tables.tf index 3202059e..13d461e7 100644 --- a/archive/terraform/dynamodb_tables.tf +++ b/archive/terraform/dynamodb_tables.tf @@ -24,13 +24,19 @@ resource "aws_dynamodb_table" "live_bright_table" { } global_secondary_index { - hash_key = "camid" name = "camid-CaptureNight-index" non_key_attributes = [] projection_type = "ALL" - range_key = "CaptureNight" read_capacity = 0 write_capacity = 0 + key_schema { + attribute_name = "camid" + key_type = "HASH" + } + key_schema { + attribute_name = "CaptureNight" + key_type = "RANGE" + } } ttl { attribute_name = "ExpiryDate" @@ -49,7 +55,7 @@ resource "aws_dynamodb_table" "camera_table" { #write_capacity = 20 hash_key = "stationid" range_key = "site" -# provider = aws.eu-west-1-prov + # provider = aws.eu-west-1-prov attribute { name = "stationid" @@ -60,15 +66,21 @@ resource "aws_dynamodb_table" "camera_table" { name = "site" type = "S" } - global_secondary_index { - hash_key = "site" - name = "site-stationid-index" - non_key_attributes = [] - projection_type = "ALL" - range_key = "stationid" - read_capacity = 0 - write_capacity = 0 - } + global_secondary_index { + name = "site-stationid-index" + non_key_attributes = [] + projection_type = "ALL" + read_capacity = 0 + write_capacity = 0 + key_schema { + attribute_name = "site" + key_type = "HASH" + } + key_schema { + attribute_name = "stationid" + key_type = "RANGE" + } + } tags = { Name = "camdetails" billingtag = "ukmda" @@ -102,9 +114,15 @@ resource "aws_dynamodb_table" "uploadtimes_table" { global_secondary_index { name = "uploaddate-stationid-index" - hash_key = "uploaddate" - range_key = "stationid" projection_type = "ALL" + key_schema { + attribute_name = "uploaddate" + key_type = "HASH" + } + key_schema { + attribute_name = "stationid" + key_type = "RANGE" + } } ttl { attribute_name = "ExpiryDate" @@ -119,7 +137,7 @@ resource "aws_dynamodb_table" "uploadtimes_table" { resource "aws_dynamodb_table" "live_table" { name = "live" billing_mode = "PAY_PER_REQUEST" -# provider = aws.eu-west-1-prov + # provider = aws.eu-west-1-prov hash_key = "image_name" range_key = "timestamp" @@ -146,21 +164,34 @@ resource "aws_dynamodb_table" "live_table" { } global_secondary_index { name = "year-image_timestamp-index" - hash_key = "year" - range_key = "image_timestamp" projection_type = "ALL" non_key_attributes = [] read_capacity = 0 write_capacity = 0 + key_schema { + attribute_name = "year" + key_type = "HASH" + } + key_schema { + attribute_name = "image_timestamp" + key_type = "RANGE" + } + } global_secondary_index { name = "month-image_name-index" - hash_key = "month" - range_key = "image_name" projection_type = "ALL" non_key_attributes = [] read_capacity = 0 write_capacity = 0 + key_schema { + attribute_name = "month" + key_type = "HASH" + } + key_schema { + attribute_name = "image_name" + key_type = "RANGE" + } } ttl { attribute_name = "expirydate" From 1507853256c844deb9f9182e95f4341cbddac648 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 8 Jun 2026 12:35:35 +0100 Subject: [PATCH 090/150] update readme to remove mentions of mjmm account --- archive/terraform/README.md | 8 +------- archive/terraform/aws.tf | 8 -------- archive/terraform/ukmdashared_triggers.tf | 3 +-- archive/terraform/vpc.tf | 20 -------------------- 4 files changed, 2 insertions(+), 37 deletions(-) diff --git a/archive/terraform/README.md b/archive/terraform/README.md index 1cddb235..e8dadae7 100644 --- a/archive/terraform/README.md +++ b/archive/terraform/README.md @@ -3,13 +3,7 @@ ## UKMON Terraform Modules All infrastructure has been built with Terraform. -### MDA account -Data from cameras upload to this account in realtime for the Livestream, and each morning for the data analysis and archive. This account holds the marshalling server, ECS cluster and containers that run the distributed trajectory solver, plus ECR repos for containers to manage data conversions and gathering for the website. It also hosts the archive website and the APIs. - -### MM account -This account hosts the EC2 instance used to trigger the batch and for management purposes. -This is a reserved instance with a lease that expires in 2026, at which point it will be moved to the MDA account. -This account also holds a backup of key data. +Data from cameras upload to this account in realtime for the Livestream, and each morning for the data analysis and archive. This account holds the batch server, calculation server, ECS cluster and containers that run the distributed trajectory solver, plus ECR repos for containers to manage data conversions and gathering for the website. It also hosts the archive website and the APIs. ## Copyright All code Copyright (C) 2018-2023 Mark McIntyre \ No newline at end of file diff --git a/archive/terraform/aws.tf b/archive/terraform/aws.tf index f27bdc2f..656a7ab9 100644 --- a/archive/terraform/aws.tf +++ b/archive/terraform/aws.tf @@ -15,11 +15,3 @@ provider "aws" { region = "us-east-1" alias = "us-east-1-prov" } -provider "aws" { - profile = var.profile - alias = "mjmmacct" - region = var.remote_region - assume_role { - role_arn = format("arn:aws:iam::%s:role/TerraformRole", var.remote_account_id) - } -} diff --git a/archive/terraform/ukmdashared_triggers.tf b/archive/terraform/ukmdashared_triggers.tf index 28ef757c..4e48d2c7 100644 --- a/archive/terraform/ukmdashared_triggers.tf +++ b/archive/terraform/ukmdashared_triggers.tf @@ -3,9 +3,8 @@ # bucket notifications that trigger lambdas # -# lambda running in MJMM account but invoked from EE account +# Lambdas created by SAM functions data "aws_lambda_function" "getextraorbitfiles" { -# provider = aws.mjmmacct function_name = "getExtraOrbitFilesV2" } diff --git a/archive/terraform/vpc.tf b/archive/terraform/vpc.tf index a1352cca..a9917706 100644 --- a/archive/terraform/vpc.tf +++ b/archive/terraform/vpc.tf @@ -14,12 +14,6 @@ resource "aws_default_subnet" "default_subnet" { availability_zone = "eu-west-2a" } -# remote VPC in the MJMM account, needed for peering -#data "aws_vpc" "mjmm_ec2_vpc" { -# provider = aws.mjmmacct -# cidr_block = "172.31.0.0/16" -#} - # VPC for the EC2 instances in this account resource "aws_vpc" "ec2_vpc" { cidr_block = var.main_cidr @@ -68,10 +62,6 @@ resource "aws_default_route_table" "ec2_rtbl" { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.main_igw.id } - #route { - # cidr_block = data.aws_vpc.mjmm_ec2_vpc.cidr_block - # vpc_peering_connection_id = aws_vpc_peering_connection.ukmdatommpeering.id - #} tags = { "Name" = "public_rtbl" billingtag = "Management" @@ -92,13 +82,3 @@ resource "aws_internet_gateway" "main_igw" { } } -# peering connection with the MJMM account -#resource "aws_vpc_peering_connection" "ukmdatommpeering" { -# peer_vpc_id = data.aws_vpc.mjmm_ec2_vpc.id -# vpc_id = aws_vpc.ec2_vpc.id -# tags = { -# "Name" = "mda-to-mm-peering" -# "billingtag" = "ukmda" -# } -#} - From 17fc14905ec1c8eae7d8c97249d5aa3657886a12 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 8 Jun 2026 12:35:48 +0100 Subject: [PATCH 091/150] removing unused files --- .../server_setup/unused/install-cartopy.sh | 17 ---- archive/server_setup/unused/install-geos.sh | 23 ----- archive/server_setup/unused/install-proj4.sh | 25 ------ .../server_setup/unused/install-sqlite3.sh | 11 --- archive/server_setup/unused/install_opencv.sh | 10 --- archive/server_setup/unused/newserver.sh | 2 - archive/server_setup/unused/remount-s3.sh | 5 -- archive/server_setup/unused/yum-installs.sh | 89 ------------------- 8 files changed, 182 deletions(-) delete mode 100644 archive/server_setup/unused/install-cartopy.sh delete mode 100644 archive/server_setup/unused/install-geos.sh delete mode 100644 archive/server_setup/unused/install-proj4.sh delete mode 100644 archive/server_setup/unused/install-sqlite3.sh delete mode 100644 archive/server_setup/unused/install_opencv.sh delete mode 100644 archive/server_setup/unused/newserver.sh delete mode 100644 archive/server_setup/unused/remount-s3.sh delete mode 100644 archive/server_setup/unused/yum-installs.sh diff --git a/archive/server_setup/unused/install-cartopy.sh b/archive/server_setup/unused/install-cartopy.sh deleted file mode 100644 index 2c4f68c8..00000000 --- a/archive/server_setup/unused/install-cartopy.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -export CARTOPY_VERSION=0.20.3 - -mkdir -p "/tmp/cartopy-${CARTOPY_VERSION}-build" -pushd "/tmp/cartopy-${CARTOPY_VERSION}-build" -git clone https://github.com/SciTools/cartopy.git -cd cartopy -git fetch -git switch --detach tags/v${CARTOPY_VERSION} -export CPATH=/usr/local/proj4/include -export PATH=usr/local/proj4/bin:/usr/local/geos/bin:$PATH -export LD_LIBRARY_PATH=/usr/local/proj4/lib:/usr/local/geos/lib -python setup.py build_ext -I /usr/local/proj4/include -I /usr/local/geos/include -python setup.py install - - diff --git a/archive/server_setup/unused/install-geos.sh b/archive/server_setup/unused/install-geos.sh deleted file mode 100644 index ef0bb585..00000000 --- a/archive/server_setup/unused/install-geos.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -export GEOS_VERSION=3.7.2 - -# Compilation work for geos -mkdir -p "/tmp/geos-${GEOS_VERSION}-build" -pushd "/tmp/geos-${GEOS_VERSION}-build" -curl -o "geos-${GEOS_VERSION}.tar.bz2" \ - "http://download.osgeo.org/geos/geos-${GEOS_VERSION}.tar.bz2" \ - && bunzip2 "geos-${GEOS_VERSION}.tar.bz2" \ - && tar xvf "geos-${GEOS_VERSION}.tar" -rm -f geos-${GEOS_VERSION}.tar.bz2 - -cd "/tmp/geos-${GEOS_VERSION}-build/geos-${GEOS_VERSION}" -./configure --prefix=/usr/local/geos - -# Make in parallel with 2x the number of processors. -make -j $(( 2 * $(cat /proc/cpuinfo | egrep ^processor | wc -l) )) \ - && sudo make install \ - && sudo ldconfig - -popd - diff --git a/archive/server_setup/unused/install-proj4.sh b/archive/server_setup/unused/install-proj4.sh deleted file mode 100644 index 34179d30..00000000 --- a/archive/server_setup/unused/install-proj4.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -conda activate wmpl - -export PROJ4_VERSION=8.0.0 -export PATH=/usr/local/bin:$PATH -export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH -export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig - -# Compilation work for proj4 -mkdir -p "/tmp/proj-${PROJ4_VERSION}-build" -pushd "/tmp/proj-${PROJ4_VERSION}-build" -curl -o "proj-${PROJ4_VERSION}.tar.gz" \ - "http://download.osgeo.org/proj/proj-${PROJ4_VERSION}.tar.gz" \ - && tar xfz "proj-${PROJ4_VERSION}.tar.gz" -rm -f proj-${PROJ4_VERSION}.tar.gz - -cd "/tmp/proj-${PROJ4_VERSION}-build/proj-${PROJ4_VERSION}" -./configure --prefix=/usr/local/proj4 - -# Make in parallel with 2x the number of processors. -make -j $(( 2 * $(cat /proc/cpuinfo | egrep ^processor | wc -l) )) \ - && sudo make install \ - && sudo ldconfig - diff --git a/archive/server_setup/unused/install-sqlite3.sh b/archive/server_setup/unused/install-sqlite3.sh deleted file mode 100644 index 696aca38..00000000 --- a/archive/server_setup/unused/install-sqlite3.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -cd /tmp -mkdir sqlite3 -cd sqlite3 -export SQLVER=3390000 -wget http://www.sqlite.org/2022/sqlite-autoconf-${SQLVER}.tar.gz -tar xvzf sqlite-autoconf-${SQLVER}.tar.gz -cd sqlite-autoconf-${SQLVER}/ -./configure -make && sudo make install - diff --git a/archive/server_setup/unused/install_opencv.sh b/archive/server_setup/unused/install_opencv.sh deleted file mode 100644 index 39e7fa10..00000000 --- a/archive/server_setup/unused/install_opencv.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -cd ~/src -git clone https://github.com/Itseez/opencv.git -cd opencv -git checkout 3.1.0 -mkdir build -cd build -cmake .. -DBUILD_opencv_python3=ON -DENABLE_PRECOMPILED_HEADERS=OFF -make -j4 -sudo make install diff --git a/archive/server_setup/unused/newserver.sh b/archive/server_setup/unused/newserver.sh deleted file mode 100644 index e14031cd..00000000 --- a/archive/server_setup/unused/newserver.sh +++ /dev/null @@ -1,2 +0,0 @@ -cd ~/setup -./yum-installs.sh diff --git a/archive/server_setup/unused/remount-s3.sh b/archive/server_setup/unused/remount-s3.sh deleted file mode 100644 index 3fb33cd2..00000000 --- a/archive/server_setup/unused/remount-s3.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -s3fs -o endpoint=eu-west-2 -o use_cache=/tmp -o uid=1000 -o mp_umask=002 -o multireq_max=5 mjmm-data /home/ec2-user/data -o url=https://s3-eu-west-2.amazonaws.com -#s3fs -o endpoint=eu-west-2 -o use_cache=/tmp -o uid=1000 -o mp_umask=002 -o multireq_max=5 -o passwd_file=~/.passwd-s3fs mjmm-data ./mjmm-data -s3fs -o endpoint=eu-west-2 -o use_cache=/tmp -o uid=1000 -o mp_umask=002 -o multireq_max=5 -o passwd_file=~/.passwd-ee-s3 ukmon-shared /home/ec2-user/ukmon-shared - diff --git a/archive/server_setup/unused/yum-installs.sh b/archive/server_setup/unused/yum-installs.sh deleted file mode 100644 index 420e5e83..00000000 --- a/archive/server_setup/unused/yum-installs.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash - -# NB to change the hostname -# 1) add preserve_hostname: true to the end of /etc/cloud/cloud.cfg -# 2) sudo hostnamectl set-hostname ukmonhelper2 - - -# basic requirements for building / running WMPL and RMS and stuff -sudo yum install -y automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel -sudo yum install -y ftp -sudo yum install -y gsl gsl-devel cairo-devel python3 ImageMagick gcc-c++ gcc-gfortran python3-devel blas lapack atlas-devel libgfortran -sudo yum install -y dos2unix - -#sudo amazon-linux-extras install -y R3.4 -sudo amazon-linux-extras install -y ansible2 -sudo amazon-linux-extras install -y python3.8 -sudo amazon-linux-extras install -y epel -#sudo yum install -y s3fs-fuse - -sudo yum install -y python3-pip python38-devel python3-tkinter -sudo yum install -y amazon-efs-utils -sudo yum install -y libtiff-devel - -# install GEOS -sudo yum search geos -sudo yum install -y geos geos-devel - -# install node for compatability with Amazon's cloud9 dev env -curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash -nvm install v16.20.1 - -# install miniconda so we can use conda virtualenvs - more flexible than basic python ones -curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh > miniconda.sh -chmod +x ./miniconda.sh && ./miniconda.sh -b - -conda create -n wmpl python=3.8 -conda activate wmpl -conda install -y shapely geos proj pytz cartopy - -# create a swap file -if [ ! -f /var/swap.1 ] ; then - sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=4096 - sudo /sbin/mkswap /var/swap.1 - sudo chmod 600 /var/swap.1 - sudo /sbin/swapon /var/swap.1 - cp /etc/fstab /tmp/fstab - echo "/var/swap.1 swap swap defaults 0 0" >> /tmp/fstab - sudo cp /tmp/fstab /etc -fi - -if [ $(uname -i) != 'aarch64' ] ; then - # need to install/build QT5 and then create a softlink for qmake, which is needed to install PyQt5 - mkdir ~/src && cd ~/src - git clone https://code.qt.io/qt/qtbase.git - cd qtbase - git checkout 5.15 - sudo yum -y install perl - ./configure - gmake - sudo gmake install - sudo ln -s $HOME/src/qtbase/bin/qmake /usr/bin/qmake - pip install PyQt5 -else - echo QT and PyQt5 not available currently for aarch64 -fi - -cd ~/src -git clone --recursive https://github.com/markmac99/WesternMeteorPyLib.git -cd WesternMeteorPyLib -pip install -r requirements.txt -python setup.py install -#rm -Rf wmpl/MetSim -#rm -Rf wmpl/CAMO - -echo "now edit wmpl/__init__.py and add GUI to the list of things to be ignored" - -pip install boto3 gmplot cryptography python_crontab dynamodb_json - -echo now install mariadb and migrate the database - -# not required on the batch server -mkdir ~/src/ukmon_pylib -cd ~/src/ukmon_pylib -git init -git remote add -f origin https://github.com/markmac99/UKmon-shared.git -git config core.sparseCheckout true -echo "ukmon_pylib" > .git/info/sparse-checkout -git pull origin master - From 0186d535d2248b70781c9bc11cf8480c9b018eb6 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 8 Jun 2026 12:38:53 +0100 Subject: [PATCH 092/150] put server setup files for batchserver in its own folder --- archive/server_setup/{ => batchserver}/.bash_aliases | 0 archive/server_setup/{ => batchserver}/.bashrc | 0 archive/server_setup/{ => batchserver}/.condaon | 0 archive/server_setup/{ => batchserver}/.vimrc | 0 archive/server_setup/{ => batchserver}/logs.conf | 0 install_or_update.sh | 4 ++-- 6 files changed, 2 insertions(+), 2 deletions(-) rename archive/server_setup/{ => batchserver}/.bash_aliases (100%) rename archive/server_setup/{ => batchserver}/.bashrc (100%) rename archive/server_setup/{ => batchserver}/.condaon (100%) rename archive/server_setup/{ => batchserver}/.vimrc (100%) rename archive/server_setup/{ => batchserver}/logs.conf (100%) diff --git a/archive/server_setup/.bash_aliases b/archive/server_setup/batchserver/.bash_aliases similarity index 100% rename from archive/server_setup/.bash_aliases rename to archive/server_setup/batchserver/.bash_aliases diff --git a/archive/server_setup/.bashrc b/archive/server_setup/batchserver/.bashrc similarity index 100% rename from archive/server_setup/.bashrc rename to archive/server_setup/batchserver/.bashrc diff --git a/archive/server_setup/.condaon b/archive/server_setup/batchserver/.condaon similarity index 100% rename from archive/server_setup/.condaon rename to archive/server_setup/batchserver/.condaon diff --git a/archive/server_setup/.vimrc b/archive/server_setup/batchserver/.vimrc similarity index 100% rename from archive/server_setup/.vimrc rename to archive/server_setup/batchserver/.vimrc diff --git a/archive/server_setup/logs.conf b/archive/server_setup/batchserver/logs.conf similarity index 100% rename from archive/server_setup/logs.conf rename to archive/server_setup/batchserver/logs.conf diff --git a/install_or_update.sh b/install_or_update.sh index 0ae40638..26b77403 100755 --- a/install_or_update.sh +++ b/install_or_update.sh @@ -69,10 +69,10 @@ then ~/$envname/utils/makeConfig.sh $RUNTIME_ENV for fil in .bashrc .bash_aliases .vimrc .condaon do - rsync -a server_setup/$fil ~ + rsync -a server_setup/batchserver/$fil ~ done mkdir -p ~/.logrotate - rsync -a server_setup/logs.conf ~/.logrotate + rsync -a server_setup/batchserver/logs.conf ~/.logrotate else echo "" echo skipping config and bashrc From 16652942a3f2b7c005f02cf70886a767d4b84f82 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 24 Jun 2026 15:07:57 +0100 Subject: [PATCH 093/150] missing fields sts and traj_id --- archive/analysis/templates/match_hdr_full.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/analysis/templates/match_hdr_full.txt b/archive/analysis/templates/match_hdr_full.txt index d1a19b3d..d1f18c43 100644 --- a/archive/analysis/templates/match_hdr_full.txt +++ b/archive/analysis/templates/match_hdr_full.txt @@ -1 +1 @@ -_Version,_#,_localtime,_mjd,_sol,_ID1,_ID2,_amag,_ra_o,_dc_o,_ra_t,_dc_t,_elng,_elat,_vo,_vi,_vg,_vs,_a,_q,_e,_p,_peri,_node,_incl,_stream,_dr,_dv%,_mag,_Qo,_dur,_av,_Voa,_Pra,_Pdc,_GPlng,_GPlat,_ra1,_dc1,_az1,_ev1,_lng1,_lat1,_H1,_LD1,_Qr1,_Qd1,_ra2,_dc2,_lng2,_lat2,_H2,_LD2,_Qr2,_Qd2,_LD21,_az1r,_ev1r,_evro,_evrt,_Nts,_Nos,_leap,_rstar,_ddeg,_cdeg,_drop,_inout,_tme,_dt,_GD,_Qc,_dGP,_Gm%,_dv12%,_zmv,_Ed,_Ex,_QA,_Y_ut,_M_ut,_D_ut,_h_ut,_m_ut,_s_ut,_No,_Qp,_pdeg_sd,_rao_sd,_dco_sd,_vo_sd,_rat_sd,_dct_sd,_vg_sd,_a_sd,_1/a,_1/a_sd,_q_sd,_e_sd,_peri_sd,_node_sd,_incl_sd,_Er_sd,_ZF,_OH,_ZHR,Dummy,d2,d3,dtstamp,orbname,src,url,img,# date,mjd,id,iau,name,mass,pi,Q,true_anom,EA,MA,Tj,T,last_peri,jacchia1,Jacchia2,numstats,stations,isfb +_Version,_#,_localtime,_mjd,_sol,_ID1,_ID2,_amag,_ra_o,_dc_o,_ra_t,_dc_t,_elng,_elat,_vo,_vi,_vg,_vs,_a,_q,_e,_p,_peri,_node,_incl,_stream,_dr,_dv%,_mag,_Qo,_dur,_av,_Voa,_Pra,_Pdc,_GPlng,_GPlat,_ra1,_dc1,_az1,_ev1,_lng1,_lat1,_H1,_LD1,_Qr1,_Qd1,_ra2,_dc2,_lng2,_lat2,_H2,_LD2,_Qr2,_Qd2,_LD21,_az1r,_ev1r,_evro,_evrt,_Nts,_Nos,_leap,_rstar,_ddeg,_cdeg,_drop,_inout,_tme,_dt,_GD,_Qc,_dGP,_Gm%,_dv12%,_zmv,_Ed,_Ex,_QA,_Y_ut,_M_ut,_D_ut,_h_ut,_m_ut,_s_ut,_No,_Qp,_pdeg_sd,_rao_sd,_dco_sd,_vo_sd,_rat_sd,_dct_sd,_vg_sd,_a_sd,_1/a,_1/a_sd,_q_sd,_e_sd,_peri_sd,_node_sd,_incl_sd,_Er_sd,_ZF,_OH,_ZHR,Dummy,d2,d3,dtstamp,orbname,src,url,img,# date,mjd,id,iau,name,mass,pi,Q,true_anom,EA,MA,Tj,T,last_peri,jacchia1,Jacchia2,numstats,stations,isfb,sts,traj_id From 3768e27a3c5b2884b7a225794d9d9ffc6ec88b0f Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 1 Jul 2026 14:14:45 +0100 Subject: [PATCH 094/150] Changes to support email receipt and rules --- archive/terraform/iam.tf | 55 +++++++++++++++++++++++++++- archive/terraform/route53.tf | 3 +- archive/terraform/ses-viduploader.tf | 34 +++++++++++++++++ archive/terraform/ses.tf | 15 +++++++- archive/terraform/variables.tf | 1 + 5 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 archive/terraform/ses-viduploader.tf diff --git a/archive/terraform/iam.tf b/archive/terraform/iam.tf index 11fd17b0..be7a1029 100644 --- a/archive/terraform/iam.tf +++ b/archive/terraform/iam.tf @@ -438,7 +438,7 @@ policy = < Date: Wed, 1 Jul 2026 14:14:56 +0100 Subject: [PATCH 095/150] ignore aws sam build folders --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b9b1067a..d7b55eed 100644 --- a/.gitignore +++ b/.gitignore @@ -620,3 +620,4 @@ fbCollector/README.html archive/share/combined_shower_table.parquet archive/share/gmn_shower_table_20230518.txt archive/share/IMO_Working_Meteor_Shower_List.xml +**/.aws-sam/** From 631f078e0c4719d7a618ec330861d100fce3022f Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 1 Jul 2026 14:15:35 +0100 Subject: [PATCH 096/150] initial build of viduploader lambda --- archive/lambdas/vidUploader/event.json | 1 + .../vidUploader/pythoncode/__init__.py | 0 .../vidUploader/pythoncode/requirements.txt | 2 ++ archive/lambdas/vidUploader/samconfig.toml | 36 +++++++++++++++++++ archive/lambdas/vidUploader/template.yaml | 31 ++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 archive/lambdas/vidUploader/event.json create mode 100644 archive/lambdas/vidUploader/pythoncode/__init__.py create mode 100644 archive/lambdas/vidUploader/pythoncode/requirements.txt create mode 100644 archive/lambdas/vidUploader/samconfig.toml create mode 100644 archive/lambdas/vidUploader/template.yaml diff --git a/archive/lambdas/vidUploader/event.json b/archive/lambdas/vidUploader/event.json new file mode 100644 index 00000000..ef6f5e9d --- /dev/null +++ b/archive/lambdas/vidUploader/event.json @@ -0,0 +1 @@ +{"Records": [{"ses": {"mail": {"messageId": "4k5581gt9drndeof7v46ol8jqkq9e0k8f4nqr4o1"}}, "eventSource": "aws:ses"}]} \ No newline at end of file diff --git a/archive/lambdas/vidUploader/pythoncode/__init__.py b/archive/lambdas/vidUploader/pythoncode/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archive/lambdas/vidUploader/pythoncode/requirements.txt b/archive/lambdas/vidUploader/pythoncode/requirements.txt new file mode 100644 index 00000000..a873d929 --- /dev/null +++ b/archive/lambdas/vidUploader/pythoncode/requirements.txt @@ -0,0 +1,2 @@ +requests +boto3 diff --git a/archive/lambdas/vidUploader/samconfig.toml b/archive/lambdas/vidUploader/samconfig.toml new file mode 100644 index 00000000..04b81147 --- /dev/null +++ b/archive/lambdas/vidUploader/samconfig.toml @@ -0,0 +1,36 @@ +# More information about the configuration file can be found here: +# https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html +version = 0.1 + +[default] + +[default.build.parameters] +cached = true +parallel = true + +[default.validate.parameters] +lint = true + +[default.deploy] +[default.deploy.parameters] +stack_name = "videohandler" +capabilities = "CAPABILITY_IAM" +confirm_changeset = true +s3_bucket = "aws-sam-cli-managed-default-samclisourcebucket-1ulna2hoktme4" +region = "eu-west-2" +disable_rollback = true +profile = "ukmda_admin" +s3_prefix = "videohandler" + + +[default.package.parameters] +resolve_s3 = true + +[default.sync.parameters] +watch = true + +[default.local_start_api.parameters] +warm_containers = "EAGER" + +[default.local_start_lambda.parameters] +warm_containers = "EAGER" diff --git a/archive/lambdas/vidUploader/template.yaml b/archive/lambdas/vidUploader/template.yaml new file mode 100644 index 00000000..1f82960c --- /dev/null +++ b/archive/lambdas/vidUploader/template.yaml @@ -0,0 +1,31 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: > + freecycle + +# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst +Globals: + Function: + Timeout: 3 + +Resources: + VideoHandler: + Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction + Properties: + Description: Triggered when email is recieved for video uploads + FunctionName: videohandler + CodeUri: pythoncode/ + Handler: app.lambda_handler + Runtime: python3.11 + Timeout: 900 + MemorySize: 512 + EphemeralStorage: + Size: 512 + Architectures: + - x86_64 + Tags: + billingtag: "ukmda" + Role: arn:aws:iam::183798037734:role/service-role/S3FullAccess + Environment: + Variables: + TMP: "/tmp" From c5c5bada18d867ebbd65aea48b490cf8b9eabdc7 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 1 Jul 2026 14:15:46 +0100 Subject: [PATCH 097/150] initial pass at vid uploader --- archive/lambdas/vidUploader/pythoncode/app.py | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 archive/lambdas/vidUploader/pythoncode/app.py diff --git a/archive/lambdas/vidUploader/pythoncode/app.py b/archive/lambdas/vidUploader/pythoncode/app.py new file mode 100644 index 00000000..cb55175f --- /dev/null +++ b/archive/lambdas/vidUploader/pythoncode/app.py @@ -0,0 +1,165 @@ +import os +import sys +from email import policy, message_from_bytes +import boto3 +import requests +from shutil import make_archive, rmtree +from tempfile import mkdtemp + +targetBucket = 'ukmda-shared' + + +def lambda_handler(event, context): + print('starting') + s3 = boto3.client('s3') + + if 'Records' not in event: + print('no record') + return + record = event['Records'][0] + if 'eventSource' not in record: + print('no eventSource') + return + + ############################################################ + # + # get the email details and extract the information we need + + try: + fsobj = s3.get_object(Bucket=targetBucket, Key='fireballs/videouploads/raw/' + record['ses']['mail']['messageId']) + except: + print('email object not found') + return + print(f"reading {record['ses']['mail']['messageId']}") + + try: + raw_mail = fsobj['Body'].read() + msg = message_from_bytes(raw_mail, policy=policy.default) + bdy = msg.get_body('plain') + except Exception as e: + print('unable to find message body') + print(e) + return + + msgbdy = bdy.get_content() + lines = msgbdy.replace('\r','').split('\n') + + if 'Link:' not in lines: + print(f'Link field missing, unable to continue') + return + + fromline = [x for x in lines if 'From:' in x] + datetime = [x for x in lines if 'Subject:' in x] + emailadd = [x for x in lines if 'email:' in x] + extratxt = [x for x in lines if 'Message Body:' in x] + if not fromline or not datetime or not emailadd: + print(f'From, Date or email missing, unable to continue') + return + + uploader = fromline[0].split(':')[1].strip() + email = emailadd[0].split(':')[1].strip() + orbname = datetime[0].split(':')[1].strip() + + linkline = lines.index('Link:') + origname = lines[linkline+1].strip() + origext = os.path.splitext(origname)[1] + link = lines[linkline+2].strip().replace('','') + + tmpdir = mkdtemp() + + ############################################################ + # + # create a plaintext summary of the email and save it on S3 + + fileName = f"{orbname[:15]}_{uploader.replace(' ','_')}.txt" + filePath = os.path.join(tmpdir, fileName) + with open(filePath, 'w') as fp: + fp.write(f'{uploader}\n') + fp.write(f'{email}\n') + fp.write(f'{orbname}\n') + fp.write(f'{fileName}\n') + fp.write(f'{link}\n') + fp.write(f'{extratxt}') + + tmpf = 'fireballs/videouploads/' + fileName + s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=filePath, ExtraArgs={'ContentType': "text/plain"}) + + # TODO + # get extra-text file if it exists + # append extratxt to the extra-text file, if its not already in it + # make zip from the folder (without the /tmp part) + # upload zip to s3://ukmda-shared/fireballs/uploads + # update page index builder to include the extratext if available + + ############################################################ + # + # create folder and store artefacts in it for zipping + + localdir = os.path.join(tmpdir, orbname[:15]) + os.makedirs(os.path.join(localdir, 'mp4s'), exist_ok=True) + + # get the video from the ukmeteornetwork.org server + + vidName = f"{orbname[:15]}_{uploader.replace(' ','_')}{origext}" + vidPath = os.path.join(localdir, 'mp4s', vidName) + + with requests.get(link, stream=True) as r: + r.raise_for_status() + with open(vidPath, 'wb') as f: + for chunk in r.iter_content(chunk_size=8192): + # If you have chunk encoded response uncomment if + # and set chunk_size parameter to None. + #if chunk: + f.write(chunk) + + # upload a copy of it to S3 for reference + vidtype = origext[1:] + tmpf = 'fireballs/videouploads/' + vidName + s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=vidPath, ExtraArgs={'ContentType': f'video/{vidtype}'}) + + # get the pickle file from the S3 archive + pickfile = f'matches/RMSCorrelate/trajectories/{orbname[:4]}/{orbname[:6]}/{orbname[:8]}/{orbname}/{orbname[:15]}_trajectory.pickle' + localpick = os.path.join(localdir, f'{orbname[:15]}_trajectory.pickle') + s3.download_file(Bucket=targetBucket, Key=pickfile, Filename=localpick) + + # get the notes from S3 + notefile = f'matches/RMSCorrelate/trajectories/{orbname[:4]}/{orbname[:6]}/{orbname[:8]}/{orbname}/notes.txt' + localnote = os.path.join(localdir, 'notes.txt') + + # if the file exists, append the notes, otherwise create it + try: + s3.download_file(Bucket=targetBucket, Key=notefile, Filename=localnote) + notestxt = open(localnote,'r').readlines() + notestxt.append(f'{vidName} provided by {uploader}\n{extratxt}\n') + except Exception: + notestxt = f'{vidName} provided by {uploader}\n{extratxt}\n' + open(localnote, 'w').writelines(notestxt) + + # make the zip file + zipname = os.path.join(os.getenv('TMP'), f'{orbname[:15]}') + make_archive(zipname, 'zip',root_dir=tmpdir) + + tmpf = 'fireballs/videouploads/' + f'{orbname[:15]}.zip' + s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=f'{zipname}.zip', ExtraArgs={'ContentType': 'application/zip'}) + + try: + rmtree(tmpdir) + except Exception: + print(f'unable to remove {tmpdir}') + + print('done') + + +if __name__ == '__main__': + if len(sys.argv) > 1: + msg = {'messageId': sys.argv[1]} + else: + msg = {'messageId': '4k5581gt9drndeof7v46ol8jqkq9e0k8f4nqr4o1'} + ml = {'mail': msg} + ses = {'ses': ml, 'eventSource': 'aws:ses'} + recs = [] + recs.append(ses) + recorddets = {'Records': recs} + print(f'processing {msg}') + print(f'details{recorddets}') + lambda_handler(recorddets, 0) From b2df3ad9d0c0d210280ed3fc90ac734e7b460a87 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 15:42:42 +0100 Subject: [PATCH 098/150] support for testing coverage-maps --- archive/static_content/js/togeojson.js | 459 ++++++++++++++++++ .../ukmon_pylib/reports/makeCoverageMap.py | 7 +- archive/website/createSummaryTable.sh | 17 +- 3 files changed, 471 insertions(+), 12 deletions(-) create mode 100644 archive/static_content/js/togeojson.js diff --git a/archive/static_content/js/togeojson.js b/archive/static_content/js/togeojson.js new file mode 100644 index 00000000..73f870e2 --- /dev/null +++ b/archive/static_content/js/togeojson.js @@ -0,0 +1,459 @@ +var toGeoJSON = (function() { + 'use strict'; + + var removeSpace = /\s*/g, + trimSpace = /^\s*|\s*$/g, + splitSpace = /\s+/; + // generate a short, numeric hash of a string + function okhash(x) { + if (!x || !x.length) return 0; + for (var i = 0, h = 0; i < x.length; i++) { + h = ((h << 5) - h) + x.charCodeAt(i) | 0; + } return h; + } + // all Y children of X + function get(x, y) { return x.getElementsByTagName(y); } + function attr(x, y) { return x.getAttribute(y); } + function attrf(x, y) { return parseFloat(attr(x, y)); } + // one Y child of X, if any, otherwise null + function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; } + // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize + function norm(el) { if (el.normalize) { el.normalize(); } return el; } + // cast array x into numbers + function numarray(x) { + for (var j = 0, o = []; j < x.length; j++) { o[j] = parseFloat(x[j]); } + return o; + } + // get the content of a text node, if any + function nodeVal(x) { + if (x) { norm(x); } + return (x && x.textContent) || ''; + } + // get the contents of multiple text nodes, if present + function getMulti(x, ys) { + var o = {}, n, k; + for (k = 0; k < ys.length; k++) { + n = get1(x, ys[k]); + if (n) o[ys[k]] = nodeVal(n); + } + return o; + } + // add properties of Y to X, overwriting if present in both + function extend(x, y) { for (var k in y) x[k] = y[k]; } + // get one coordinate from a coordinate array, if any + function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); } + // get all coordinates from a coordinate array as [[],[]] + function coord(v) { + var coords = v.replace(trimSpace, '').split(splitSpace), + o = []; + for (var i = 0; i < coords.length; i++) { + o.push(coord1(coords[i])); + } + return o; + } + function coordPair(x) { + var ll = [attrf(x, 'lon'), attrf(x, 'lat')], + ele = get1(x, 'ele'), + // handle namespaced attribute in browser + heartRate = get1(x, 'gpxtpx:hr') || get1(x, 'hr'), + time = get1(x, 'time'), + e; + if (ele) { + e = parseFloat(nodeVal(ele)); + if (!isNaN(e)) { + ll.push(e); + } + } + return { + coordinates: ll, + time: time ? nodeVal(time) : null, + heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null + }; + } + + // create a new feature collection parent object + function fc() { + return { + type: 'FeatureCollection', + features: [] + }; + } + + var serializer; + if (typeof XMLSerializer !== 'undefined') { + /* istanbul ignore next */ + serializer = new XMLSerializer(); + } else { + var isNodeEnv = (typeof process === 'object' && !process.browser); + var isTitaniumEnv = (typeof Titanium === 'object'); + if (typeof exports === 'object' && (isNodeEnv || isTitaniumEnv)) { + serializer = new (require('@xmldom/xmldom').XMLSerializer)(); + } else { + throw new Error('Unable to initialize serializer'); + } + } + function xml2str(str) { + // IE9 will create a new XMLSerializer but it'll crash immediately. + // This line is ignored because we don't run coverage tests in IE9 + /* istanbul ignore next */ + if (str.xml !== undefined) return str.xml; + return serializer.serializeToString(str); + } + + var t = { + kml: function(doc) { + + var gj = fc(), + // styleindex keeps track of hashed styles in order to match features + styleIndex = {}, styleByHash = {}, + // stylemapindex keeps track of style maps to expose in properties + styleMapIndex = {}, + // atomic geospatial types supported by KML - MultiGeometry is + // handled separately + geotypes = ['Polygon', 'LineString', 'Point', 'Track', 'gx:Track'], + // all root placemarks in the file + placemarks = get(doc, 'Placemark'), + styles = get(doc, 'Style'), + styleMaps = get(doc, 'StyleMap'); + + for (var k = 0; k < styles.length; k++) { + var hash = okhash(xml2str(styles[k])).toString(16); + styleIndex['#' + attr(styles[k], 'id')] = hash; + styleByHash[hash] = styles[k]; + } + for (var l = 0; l < styleMaps.length; l++) { + styleIndex['#' + attr(styleMaps[l], 'id')] = okhash(xml2str(styleMaps[l])).toString(16); + var pairs = get(styleMaps[l], 'Pair'); + var pairsMap = {}; + for (var m = 0; m < pairs.length; m++) { + pairsMap[nodeVal(get1(pairs[m], 'key'))] = nodeVal(get1(pairs[m], 'styleUrl')); + } + styleMapIndex['#' + attr(styleMaps[l], 'id')] = pairsMap; + + } + for (var j = 0; j < placemarks.length; j++) { + gj.features = gj.features.concat(getPlacemark(placemarks[j])); + } + function kmlColor(v) { + var color, opacity; + v = v || ''; + if (v.substr(0, 1) === '#') { v = v.substr(1); } + if (v.length === 6 || v.length === 3) { color = v; } + if (v.length === 8) { + opacity = parseInt(v.substr(0, 2), 16) / 255; + color = '#' + v.substr(6, 2) + + v.substr(4, 2) + + v.substr(2, 2); + } + return [color, isNaN(opacity) ? undefined : opacity]; + } + function gxCoord(v) { return numarray(v.split(' ')); } + function gxCoords(root) { + var elems = get(root, 'coord', 'gx'), coords = [], times = []; + if (elems.length === 0) elems = get(root, 'gx:coord'); + for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i]))); + var timeElems = get(root, 'when'); + for (var j = 0; j < timeElems.length; j++) times.push(nodeVal(timeElems[j])); + return { + coords: coords, + times: times + }; + } + function getGeometry(root) { + var geomNode, geomNodes, i, j, k, geoms = [], coordTimes = []; + if (get1(root, 'MultiGeometry')) { return getGeometry(get1(root, 'MultiGeometry')); } + if (get1(root, 'MultiTrack')) { return getGeometry(get1(root, 'MultiTrack')); } + if (get1(root, 'gx:MultiTrack')) { return getGeometry(get1(root, 'gx:MultiTrack')); } + for (i = 0; i < geotypes.length; i++) { + geomNodes = get(root, geotypes[i]); + if (geomNodes) { + for (j = 0; j < geomNodes.length; j++) { + geomNode = geomNodes[j]; + if (geotypes[i] === 'Point') { + geoms.push({ + type: 'Point', + coordinates: coord1(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'LineString') { + geoms.push({ + type: 'LineString', + coordinates: coord(nodeVal(get1(geomNode, 'coordinates'))) + }); + } else if (geotypes[i] === 'Polygon') { + var rings = get(geomNode, 'LinearRing'), + coords = []; + for (k = 0; k < rings.length; k++) { + coords.push(coord(nodeVal(get1(rings[k], 'coordinates')))); + } + geoms.push({ + type: 'Polygon', + coordinates: coords + }); + } else if (geotypes[i] === 'Track' || + geotypes[i] === 'gx:Track') { + var track = gxCoords(geomNode); + geoms.push({ + type: 'LineString', + coordinates: track.coords + }); + if (track.times.length) coordTimes.push(track.times); + } + } + } + } + return { + geoms: geoms, + coordTimes: coordTimes + }; + } + function getPlacemark(root) { + var geomsAndTimes = getGeometry(root), i, properties = {}, + name = nodeVal(get1(root, 'name')), + address = nodeVal(get1(root, 'address')), + styleUrl = nodeVal(get1(root, 'styleUrl')), + description = nodeVal(get1(root, 'description')), + timeSpan = get1(root, 'TimeSpan'), + timeStamp = get1(root, 'TimeStamp'), + extendedData = get1(root, 'ExtendedData'), + lineStyle = get1(root, 'LineStyle'), + polyStyle = get1(root, 'PolyStyle'), + visibility = get1(root, 'visibility'); + + if (!geomsAndTimes.geoms.length) return []; + if (name) properties.name = name; + if (address) properties.address = address; + if (styleUrl) { + if (styleUrl[0] !== '#') { + styleUrl = '#' + styleUrl; + } + + properties.styleUrl = styleUrl; + if (styleIndex[styleUrl]) { + properties.styleHash = styleIndex[styleUrl]; + } + if (styleMapIndex[styleUrl]) { + properties.styleMapHash = styleMapIndex[styleUrl]; + properties.styleHash = styleIndex[styleMapIndex[styleUrl].normal]; + } + // Try to populate the lineStyle or polyStyle since we got the style hash + var style = styleByHash[properties.styleHash]; + if (style) { + if (!lineStyle) lineStyle = get1(style, 'LineStyle'); + if (!polyStyle) polyStyle = get1(style, 'PolyStyle'); + var iconStyle = get1(style, 'IconStyle'); + if (iconStyle) { + var icon = get1(iconStyle, 'Icon'); + if (icon) { + var href = nodeVal(get1(icon, 'href')); + if (href) properties.icon = href; + } + } + } + } + if (description) properties.description = description; + if (timeSpan) { + var begin = nodeVal(get1(timeSpan, 'begin')); + var end = nodeVal(get1(timeSpan, 'end')); + properties.timespan = { begin: begin, end: end }; + } + if (timeStamp) { + properties.timestamp = nodeVal(get1(timeStamp, 'when')); + } + if (lineStyle) { + var linestyles = kmlColor(nodeVal(get1(lineStyle, 'color'))), + color = linestyles[0], + opacity = linestyles[1], + width = parseFloat(nodeVal(get1(lineStyle, 'width'))); + if (color) properties.stroke = color; + if (!isNaN(opacity)) properties['stroke-opacity'] = opacity; + if (!isNaN(width)) properties['stroke-width'] = width; + } + if (polyStyle) { + var polystyles = kmlColor(nodeVal(get1(polyStyle, 'color'))), + pcolor = polystyles[0], + popacity = polystyles[1], + fill = nodeVal(get1(polyStyle, 'fill')), + outline = nodeVal(get1(polyStyle, 'outline')); + if (pcolor) properties.fill = pcolor; + if (!isNaN(popacity)) properties['fill-opacity'] = popacity; + if (fill) properties['fill-opacity'] = fill === '1' ? properties['fill-opacity'] || 1 : 0; + if (outline) properties['stroke-opacity'] = outline === '1' ? properties['stroke-opacity'] || 1 : 0; + } + if (extendedData) { + var datas = get(extendedData, 'Data'), + simpleDatas = get(extendedData, 'SimpleData'); + + for (i = 0; i < datas.length; i++) { + properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value')); + } + for (i = 0; i < simpleDatas.length; i++) { + properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]); + } + } + if (visibility) { + properties.visibility = nodeVal(visibility); + } + if (geomsAndTimes.coordTimes.length) { + properties.coordTimes = (geomsAndTimes.coordTimes.length === 1) ? + geomsAndTimes.coordTimes[0] : geomsAndTimes.coordTimes; + } + var feature = { + type: 'Feature', + geometry: (geomsAndTimes.geoms.length === 1) ? geomsAndTimes.geoms[0] : { + type: 'GeometryCollection', + geometries: geomsAndTimes.geoms + }, + properties: properties + }; + if (attr(root, 'id')) feature.id = attr(root, 'id'); + return [feature]; + } + return gj; + }, + gpx: function(doc) { + var i, + tracks = get(doc, 'trk'), + routes = get(doc, 'rte'), + waypoints = get(doc, 'wpt'), + // a feature collection + gj = fc(), + feature; + for (i = 0; i < tracks.length; i++) { + feature = getTrack(tracks[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < routes.length; i++) { + feature = getRoute(routes[i]); + if (feature) gj.features.push(feature); + } + for (i = 0; i < waypoints.length; i++) { + gj.features.push(getPoint(waypoints[i])); + } + function initializeArray(arr, size) { + for (var h = 0; h < size; h++) { + arr.push(null); + } + return arr; + } + function getPoints(node, pointname) { + var pts = get(node, pointname), + line = [], + times = [], + heartRates = [], + l = pts.length; + if (l < 2) return {}; // Invalid line in GeoJSON + for (var i = 0; i < l; i++) { + var c = coordPair(pts[i]); + line.push(c.coordinates); + if (c.time) times.push(c.time); + if (c.heartRate || heartRates.length) { + if (!heartRates.length) initializeArray(heartRates, i); + heartRates.push(c.heartRate || null); + } + } + return { + line: line, + times: times, + heartRates: heartRates + }; + } + function getTrack(node) { + var segments = get(node, 'trkseg'), + track = [], + times = [], + heartRates = [], + line; + for (var i = 0; i < segments.length; i++) { + line = getPoints(segments[i], 'trkpt'); + if (line) { + if (line.line) track.push(line.line); + if (line.times && line.times.length) times.push(line.times); + if (heartRates.length || (line.heartRates && line.heartRates.length)) { + if (!heartRates.length) { + for (var s = 0; s < i; s++) { + heartRates.push(initializeArray([], track[s].length)); + } + } + if (line.heartRates && line.heartRates.length) { + heartRates.push(line.heartRates); + } else { + heartRates.push(initializeArray([], line.line.length || 0)); + } + } + } + } + if (track.length === 0) return; + var properties = getProperties(node); + extend(properties, getLineStyle(get1(node, 'extensions'))); + if (times.length) properties.coordTimes = track.length === 1 ? times[0] : times; + if (heartRates.length) properties.heartRates = track.length === 1 ? heartRates[0] : heartRates; + return { + type: 'Feature', + properties: properties, + geometry: { + type: track.length === 1 ? 'LineString' : 'MultiLineString', + coordinates: track.length === 1 ? track[0] : track + } + }; + } + function getRoute(node) { + var line = getPoints(node, 'rtept'); + if (!line.line) return; + var prop = getProperties(node); + extend(prop, getLineStyle(get1(node, 'extensions'))); + var routeObj = { + type: 'Feature', + properties: prop, + geometry: { + type: 'LineString', + coordinates: line.line + } + }; + return routeObj; + } + function getPoint(node) { + var prop = getProperties(node); + extend(prop, getMulti(node, ['sym'])); + return { + type: 'Feature', + properties: prop, + geometry: { + type: 'Point', + coordinates: coordPair(node).coordinates + } + }; + } + function getLineStyle(extensions) { + var style = {}; + if (extensions) { + var lineStyle = get1(extensions, 'line'); + if (lineStyle) { + var color = nodeVal(get1(lineStyle, 'color')), + opacity = parseFloat(nodeVal(get1(lineStyle, 'opacity'))), + width = parseFloat(nodeVal(get1(lineStyle, 'width'))); + if (color) style.stroke = color; + if (!isNaN(opacity)) style['stroke-opacity'] = opacity; + // GPX width is in mm, convert to px with 96 px per inch + if (!isNaN(width)) style['stroke-width'] = width * 96 / 25.4; + } + } + return style; + } + function getProperties(node) { + var prop = getMulti(node, ['name', 'cmt', 'desc', 'type', 'time', 'keywords']), + links = get(node, 'link'); + if (links.length) prop.links = []; + for (var i = 0, link; i < links.length; i++) { + link = { href: attr(links[i], 'href') }; + extend(link, getMulti(links[i], ['text', 'type'])); + prop.links.push(link); + } + return prop; + } + return gj; + } + }; + return t; +})(); + +if (typeof module !== 'undefined') module.exports = toGeoJSON; diff --git a/archive/ukmon_pylib/reports/makeCoverageMap.py b/archive/ukmon_pylib/reports/makeCoverageMap.py index b25f8bec..c0ea7e71 100644 --- a/archive/ukmon_pylib/reports/makeCoverageMap.py +++ b/archive/ukmon_pylib/reports/makeCoverageMap.py @@ -67,15 +67,16 @@ def makeCoverageMap(kmlsource, outdir, showMarker=False, useName=False): return -def createCoveragePage(targdir): +def createCoveragePage(targdir, test=False): apikey = getApiKey() if not apikey: return templdir = os.getenv('TEMPLATES', default=os.path.expanduser('~/prod/website/templates')) datadir = os.getenv('DATADIR', default=os.path.expanduser('~/prod/data')) - with open(os.path.join(templdir, 'coverage-maps.html'), 'r') as inf: + outfname = 'coverage-maps-test.html' if test else 'coverage-maps.html' + with open(os.path.join(templdir, outfname), 'r') as inf: lis = inf.readlines() - with open(os.path.join(datadir, targdir,'coverage-maps.html'), 'w') as outf: + with open(os.path.join(datadir, targdir,outfname), 'w') as outf: for li in lis: outf.write(li.replace('{{MAPSAPIKEY}}', apikey)) return diff --git a/archive/website/createSummaryTable.sh b/archive/website/createSummaryTable.sh index 731c8f96..f415089c 100644 --- a/archive/website/createSummaryTable.sh +++ b/archive/website/createSummaryTable.sh @@ -36,15 +36,17 @@ logger -s -t $(basename $0 .sh) "create a coverage map from the kmls" #LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/geos/lib:/usr/local/proj4/lib #export LD_LIBRARY_PATH mkdir -p $DATADIR/kmls +mkdir -p $DATADIR/reports/${yr}/coverage + aws s3 sync $WEBSITEBUCKET/img/kmls/ $DATADIR/kmls --quiet export KMLTEMPLATE="*25km.kml" -python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr} +python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr}/coverage export KMLTEMPLATE="*70km.kml" -python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr} +python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr}/coverage export KMLTEMPLATE="*100km.kml" -python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr} +python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr}/coverage -python -c "from reports.makeCoverageMap import createCoveragePage as ccp ; ccp('reports/${yr}') ;" +python -c "from reports.makeCoverageMap import createCoveragePage as ccp ; ccp('reports/${yr}/coverage') ;" logger -s -t $(basename $0 .sh) "create year-to-date barchart" python -c "from reports.createAnnualBarChart import createBarChart; createBarChart('${DATADIR}','${yr}')" @@ -54,11 +56,8 @@ numcams=$(cat $DATADIR/consolidated/activecamcount.txt) cat $TEMPLATES/frontpage.html | sed "s/#NUMCAMS#/$numcams/g" > $DATADIR/reports/${yr}/newindex.html logger -s -t $(basename $0 .sh) "copying to website" -aws s3 cp $DATADIR/reports/${yr}/coverage-maps.html $WEBSITEBUCKET/latest/ --quiet -aws s3 cp $DATADIR/reports/${yr}/coverage-100km.html $WEBSITEBUCKET/data/ --quiet -aws s3 cp $DATADIR/reports/${yr}/coverage-70km.html $WEBSITEBUCKET/data/ --quiet -aws s3 cp $DATADIR/reports/${yr}/coverage-70km.html $WEBSITEBUCKET/data/coverage.html --quiet -aws s3 cp $DATADIR/reports/${yr}/coverage-25km.html $WEBSITEBUCKET/data/ --quiet +aws s3 sync $DATADIR/reports/${yr}/coverage/ $WEBSITEBUCKET/latest/ --exclude "*" --include "coverage*.html" --quiet +aws s3 cp $DATADIR/reports/${yr}/coverage/coverage-70km.html $WEBSITEBUCKET/data/coverage.html --quiet aws s3 cp $DATADIR/reports/${yr}/Annual-${yr}.jpg $WEBSITEBUCKET/YearToDate.jpg --quiet From e4b14e430b5807308bb190fb186330e8e12344b1 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 15:43:51 +0100 Subject: [PATCH 099/150] support for test coverage maps --- .../ukmon_pylib/reports/makeCoverageMap.py | 2 +- .../website/templates/coverage-maps-test.html | 279 ++++++++++++++++++ 2 files changed, 280 insertions(+), 1 deletion(-) create mode 100644 archive/website/templates/coverage-maps-test.html diff --git a/archive/ukmon_pylib/reports/makeCoverageMap.py b/archive/ukmon_pylib/reports/makeCoverageMap.py index c0ea7e71..961717c3 100644 --- a/archive/ukmon_pylib/reports/makeCoverageMap.py +++ b/archive/ukmon_pylib/reports/makeCoverageMap.py @@ -76,7 +76,7 @@ def createCoveragePage(targdir, test=False): outfname = 'coverage-maps-test.html' if test else 'coverage-maps.html' with open(os.path.join(templdir, outfname), 'r') as inf: lis = inf.readlines() - with open(os.path.join(datadir, targdir,outfname), 'w') as outf: + with open(os.path.join(datadir, targdir, outfname), 'w') as outf: for li in lis: outf.write(li.replace('{{MAPSAPIKEY}}', apikey)) return diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html new file mode 100644 index 00000000..b55b6b77 --- /dev/null +++ b/archive/website/templates/coverage-maps-test.html @@ -0,0 +1,279 @@ + + + + + + + Coverage Maps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    +

    Station Coverage Maps

    +

    + To use this page, select a camera or cameras from the dropdown, then select an altitude. + Click on Show to reveal the coverage of those cameras at that altitude. You can click on a shaded area to + see the latitude and longitude and to draw a 200km radius circle round the point. +
    + The view will remain centred on the first camera and the second or third may not be + visible if they don't overlap. If no coverage is displayed for a specific camera, then it means it has not + been calibrated by the owner. + +

    +

    + You can also see total coverage over the UK at different altitudes: + 25km, 70km and 100km +

    + + +
    + + + + + + + + + + +
    +
    + + +
    + + + \ No newline at end of file From 8059b1951b00bfa2a0de128cae356af4ef0261ea Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 16:41:57 +0100 Subject: [PATCH 100/150] testing switch to geoJSON --- archive/website/templates/coverage-maps-test.html | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index b55b6b77..c601de29 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -182,12 +182,7 @@

    Station Coverage Maps

    console.log(geojs1); map.data.addGeoJSON(geojs1) - var kmlLayer = new google.maps.KmlLayer(src1, { - suppressInfoWindows: true, - preserveViewport: false, - map: map - }); - kmlLayer.addListener('click', (mapsMouseEvent) => { + map.data.addListener('click', (mapsMouseEvent) => { var content = mapsMouseEvent.latLng.toJSON() var testimonial = document.getElementById('capture'); var lati = content.lat; From 406e2018885d5c6694617f4a9220f76126d6fe61 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 16:47:10 +0100 Subject: [PATCH 101/150] relocate latest coverage maps --- archive/website/templates/coverage-maps-test.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index c601de29..5a3fa688 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -92,8 +92,8 @@

    Station Coverage Maps

    You can also see total coverage over the UK at different altitudes: - 25km, 70km and 100km + 25km, 70km and 100km

    From 5c7bfba64e0de0d2b26050c378c63b04e838d3cf Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 16:54:35 +0100 Subject: [PATCH 102/150] minor debugging --- archive/website/createSummaryTable.sh | 2 +- archive/website/templates/coverage-maps-test.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/website/createSummaryTable.sh b/archive/website/createSummaryTable.sh index f415089c..01a20a36 100644 --- a/archive/website/createSummaryTable.sh +++ b/archive/website/createSummaryTable.sh @@ -47,6 +47,7 @@ export KMLTEMPLATE="*100km.kml" python -m reports.makeCoverageMap $DATADIR/kmls $DATADIR/reports/${yr}/coverage python -c "from reports.makeCoverageMap import createCoveragePage as ccp ; ccp('reports/${yr}/coverage') ;" +python -c "from reports.makeCoverageMap import createCoveragePage as ccp ; ccp('reports/${yr}/coverage', True) ;" logger -s -t $(basename $0 .sh) "create year-to-date barchart" python -c "from reports.createAnnualBarChart import createBarChart; createBarChart('${DATADIR}','${yr}')" @@ -57,7 +58,6 @@ cat $TEMPLATES/frontpage.html | sed "s/#NUMCAMS#/$numcams/g" > $DATADIR/reports/ logger -s -t $(basename $0 .sh) "copying to website" aws s3 sync $DATADIR/reports/${yr}/coverage/ $WEBSITEBUCKET/latest/ --exclude "*" --include "coverage*.html" --quiet -aws s3 cp $DATADIR/reports/${yr}/coverage/coverage-70km.html $WEBSITEBUCKET/data/coverage.html --quiet aws s3 cp $DATADIR/reports/${yr}/Annual-${yr}.jpg $WEBSITEBUCKET/YearToDate.jpg --quiet diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 5a3fa688..29edbc2b 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -67,7 +67,7 @@ - + From ed1493944eb3cff4a5c675921fd3e262c93cc188 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:07:47 +0100 Subject: [PATCH 103/150] tweaking use of geoJSON --- archive/website/templates/coverage-maps-test.html | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 29edbc2b..f4397659 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -178,7 +178,15 @@

    Station Coverage Maps

    }); var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; - var geojs1 = toGeoJSON(src1) + var geojs1 = fetch(src1) + .then(function (response) { + return response.text(); + }) + .then(function (xml) { + return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); + }); + + //var geojs1 = toGeoJSON(src1) console.log(geojs1); map.data.addGeoJSON(geojs1) From c59f3a1eaeb423da2dd0dea939347cdb26888e82 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:09:52 +0100 Subject: [PATCH 104/150] spelling misstake --- archive/website/templates/coverage-maps-test.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index f4397659..649dd4a3 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -188,7 +188,7 @@

    Station Coverage Maps

    //var geojs1 = toGeoJSON(src1) console.log(geojs1); - map.data.addGeoJSON(geojs1) + map.data.addGeoJson(geojs1) map.data.addListener('click', (mapsMouseEvent) => { var content = mapsMouseEvent.latLng.toJSON() From 7f32d5f095fc3c936dbc5912211cd5774be2b4b5 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:13:13 +0100 Subject: [PATCH 105/150] more testing --- archive/website/templates/coverage-maps-test.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 649dd4a3..238ccf36 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -186,9 +186,8 @@

    Station Coverage Maps

    return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); }); - //var geojs1 = toGeoJSON(src1) - console.log(geojs1); - map.data.addGeoJson(geojs1) + console.log(JSON.parse(geojs1)); + //map.data.addGeoJson(JSON.parse(geojs1)) map.data.addListener('click', (mapsMouseEvent) => { var content = mapsMouseEvent.latLng.toJSON() From fc13c1adf86f176aad2815655be4074fa98e61f8 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:15:40 +0100 Subject: [PATCH 106/150] plugging away --- .../website/templates/coverage-maps-test.html | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 238ccf36..2692ccb2 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -178,38 +178,40 @@

    Station Coverage Maps

    }); var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; - var geojs1 = fetch(src1) - .then(function (response) { - return response.text(); - }) - .then(function (xml) { - return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); - }); - - console.log(JSON.parse(geojs1)); - //map.data.addGeoJson(JSON.parse(geojs1)) - - map.data.addListener('click', (mapsMouseEvent) => { - var content = mapsMouseEvent.latLng.toJSON() - var testimonial = document.getElementById('capture'); - var lati = content.lat; - var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; - console.log(outputstr); - testimonial.innerHTML = outputstr; - if (circle == null) { - circle = new google.maps.Circle({ - map: map, - strokeColor: "#FF0000", - strokeOpacity: 0.5, - center: { lat: lati, lng: lngi }, - radius: 200000 + if (strstat1 != '') { + var geojs1 = fetch(src1) + .then(function (response) { + return response.text(); + }) + .then(function (xml) { + return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); }); - } - else { - circle.setCenter({ lat: lati, lng: lngi }); - } - }); + + console.log(JSON.parse(geojs1)); + //map.data.addGeoJson(JSON.parse(geojs1)) + + map.data.addListener('click', (mapsMouseEvent) => { + var content = mapsMouseEvent.latLng.toJSON() + var testimonial = document.getElementById('capture'); + var lati = content.lat; + var lngi = content.lng; + var outputstr = "Selected Station
    " + strstat + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; + console.log(outputstr); + testimonial.innerHTML = outputstr; + if (circle == null) { + circle = new google.maps.Circle({ + map: map, + strokeColor: "#FF0000", + strokeOpacity: 0.5, + center: { lat: lati, lng: lngi }, + radius: 200000 + }); + } + else { + circle.setCenter({ lat: lati, lng: lngi }); + } + }); + } if (strstat2 != '') { var src2 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat2 + '-' + height + '.kml'; From e27bd2e230d26084a40247c680f0b8ab7ad66d33 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:16:34 +0100 Subject: [PATCH 107/150] typo --- archive/website/templates/coverage-maps-test.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 2692ccb2..4d0cfb9e 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -176,9 +176,9 @@

    Station Coverage Maps

    zoom: 2, mapTypeId: 'terrain' }); - var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; - if (strstat1 != '') { + if (strstat != '') { + var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; var geojs1 = fetch(src1) .then(function (response) { return response.text(); From 0af0bd84ed57fd2365b9b766ce262a26894e899e Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:21:37 +0100 Subject: [PATCH 108/150] more tweakery --- archive/website/templates/coverage-maps.html | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/archive/website/templates/coverage-maps.html b/archive/website/templates/coverage-maps.html index ff36f9ce..db81c468 100644 --- a/archive/website/templates/coverage-maps.html +++ b/archive/website/templates/coverage-maps.html @@ -67,6 +67,7 @@ + @@ -91,8 +92,8 @@

    Station Coverage Maps

    You can also see total coverage over the UK at different altitudes: - 25km, 70km and 100km + 25km, 70km and 100km

    @@ -176,7 +177,10 @@

    Station Coverage Maps

    mapTypeId: 'terrain' }); var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; - //console.log(src1); + + var geojs1 = toGeoJSON(src1) + console.log(geojs1); + map.data.addGeoJSON(geojs1) var kmlLayer = new google.maps.KmlLayer(src1, { suppressInfoWindows: true, From 1eed509e0968c313f2fa20e8b0cbbf9059e411ad Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:24:00 +0100 Subject: [PATCH 109/150] fetch local for kml --- archive/website/templates/coverage-maps-test.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 4d0cfb9e..cf7266a7 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -178,7 +178,7 @@

    Station Coverage Maps

    }); if (strstat != '') { - var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; + var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; var geojs1 = fetch(src1) .then(function (response) { return response.text(); @@ -187,7 +187,7 @@

    Station Coverage Maps

    return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); }); - console.log(JSON.parse(geojs1)); + console.log(geojs1); //map.data.addGeoJson(JSON.parse(geojs1)) map.data.addListener('click', (mapsMouseEvent) => { From 2f13352b5a32e5fc3d6c3e20e77f0811b89cad71 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:26:02 +0100 Subject: [PATCH 110/150] remove some premature changes --- archive/website/templates/coverage-maps.html | 4 ---- 1 file changed, 4 deletions(-) diff --git a/archive/website/templates/coverage-maps.html b/archive/website/templates/coverage-maps.html index db81c468..9b33e4d6 100644 --- a/archive/website/templates/coverage-maps.html +++ b/archive/website/templates/coverage-maps.html @@ -178,10 +178,6 @@

    Station Coverage Maps

    }); var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; - var geojs1 = toGeoJSON(src1) - console.log(geojs1); - map.data.addGeoJSON(geojs1) - var kmlLayer = new google.maps.KmlLayer(src1, { suppressInfoWindows: true, preserveViewport: false, From 0797d873529f4e09c46672735c4abb8264d63c68 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:27:28 +0100 Subject: [PATCH 111/150] fix tests for stations --- archive/website/templates/coverage-maps-test.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index cf7266a7..11860492 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -177,7 +177,7 @@

    Station Coverage Maps

    mapTypeId: 'terrain' }); - if (strstat != '') { + if (strstat != 'All') { var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; var geojs1 = fetch(src1) .then(function (response) { @@ -212,7 +212,7 @@

    Station Coverage Maps

    } }); } - if (strstat2 != '') { + if (strstat2 != 'All') { var src2 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat2 + '-' + height + '.kml'; var kmlLayer = new google.maps.KmlLayer(src2, { @@ -242,7 +242,7 @@

    Station Coverage Maps

    } }); } - if (strstat3 != '') { + if (strstat3 != 'All') { var src3 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat3 + '-' + height + '.kml'; var kmlLayer = new google.maps.KmlLayer(src3, { From a3cf78966ad177a18123f1cacebbcb1ba72a6eab Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:30:02 +0100 Subject: [PATCH 112/150] keep on trying --- archive/website/templates/coverage-maps-test.html | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 11860492..918caba8 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -178,6 +178,7 @@

    Station Coverage Maps

    }); if (strstat != 'All') { + console.log('processing station 1') var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; var geojs1 = fetch(src1) .then(function (response) { From 607fbcf8f2a793690d5bec341f2fd217bfb92f25 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:31:13 +0100 Subject: [PATCH 113/150] moar --- archive/website/templates/coverage-maps-test.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 918caba8..b1b5f0ea 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -188,8 +188,8 @@

    Station Coverage Maps

    return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); }); - console.log(geojs1); - //map.data.addGeoJson(JSON.parse(geojs1)) + console.log(JSON.parse(geojs1)); + map.data.addGeoJson(JSON.parse(geojs1)) map.data.addListener('click', (mapsMouseEvent) => { var content = mapsMouseEvent.latLng.toJSON() From c170d0c55bbb322b0ccea8ac87832a2f2335a275 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:39:20 +0100 Subject: [PATCH 114/150] more work on replacing kmllayer --- archive/website/templates/coverage-maps-test.html | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index b1b5f0ea..af538f25 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -182,14 +182,15 @@

    Station Coverage Maps

    var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; var geojs1 = fetch(src1) .then(function (response) { - return response.text(); + console.log(response.text()); + return response.text(); }) .then(function (xml) { - return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); + console.log(toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml"))); + return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); }); - console.log(JSON.parse(geojs1)); - map.data.addGeoJson(JSON.parse(geojs1)) + map.data.addGeoJson(geojs1); map.data.addListener('click', (mapsMouseEvent) => { var content = mapsMouseEvent.latLng.toJSON() From 625e16ef12ee42781beb611d35ddc5b9d73c058a Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:41:46 +0100 Subject: [PATCH 115/150] missed semicolons --- archive/website/templates/coverage-maps-test.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index af538f25..c48a12db 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -178,8 +178,9 @@

    Station Coverage Maps

    }); if (strstat != 'All') { - console.log('processing station 1') + console.log('processing station 1'); var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; + console.log(src1); var geojs1 = fetch(src1) .then(function (response) { console.log(response.text()); From f53e7717473a3aec73ad43b6523204eabffc0c25 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:45:19 +0100 Subject: [PATCH 116/150] i hate javascript --- archive/website/templates/coverage-maps-test.html | 1 + 1 file changed, 1 insertion(+) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index c48a12db..20584fdf 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -179,6 +179,7 @@

    Station Coverage Maps

    if (strstat != 'All') { console.log('processing station 1'); + console.log(strstat); var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); var geojs1 = fetch(src1) From ed79b23d0ac3fd28ff1d6a29499693d2b5b6f328 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:48:10 +0100 Subject: [PATCH 117/150] twatting about with js --- archive/website/templates/coverage-maps-test.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 20584fdf..265e3536 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -184,12 +184,14 @@

    Station Coverage Maps

    console.log(src1); var geojs1 = fetch(src1) .then(function (response) { - console.log(response.text()); - return response.text(); + var res = response.text(); + console.log(res); + return res; }) .then(function (xml) { - console.log(toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml"))); - return toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); + var dta = toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); + console.log(dta); + return dta; }); map.data.addGeoJson(geojs1); From 52334fd7d57560c6aa23c8c67a39b55db2476cc4 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:56:02 +0100 Subject: [PATCH 118/150] more effort --- archive/website/templates/coverage-maps-test.html | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 265e3536..19068837 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -167,7 +167,6 @@

    Station Coverage Maps

    } function initMap() { - //var sn = getParameterByName('statselect'); var map; var circle; map = new google.maps.Map(document.getElementById('map'), { @@ -177,6 +176,12 @@

    Station Coverage Maps

    mapTypeId: 'terrain' }); + var e = document.getElementById('heightsel'); + height = e.options[e.selectedIndex].text; + + var e = document.getElementById('statselect'); + strstat = e.options[e.selectedIndex].text; + if (strstat != 'All') { console.log('processing station 1'); console.log(strstat); From cfd7fa76724850892144cd9ab2c818f3fd0020db Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 17:58:32 +0100 Subject: [PATCH 119/150] starting to lose the will --- archive/website/templates/coverage-maps-test.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 19068837..6c8ff556 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -182,11 +182,18 @@

    Station Coverage Maps

    var e = document.getElementById('statselect'); strstat = e.options[e.selectedIndex].text; + var e = document.getElementById('statselect2'); + strstat2 = e.options[e.selectedIndex].text; + + var e = document.getElementById('statselect3'); + strstat3 = e.options[e.selectedIndex].text; + if (strstat != 'All') { console.log('processing station 1'); console.log(strstat); var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); + console.log('got here'); var geojs1 = fetch(src1) .then(function (response) { var res = response.text(); From 0cffe358b05687798d7b4ad5373a729709cc463e Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 18:00:50 +0100 Subject: [PATCH 120/150] rubbish --- archive/website/templates/coverage-maps-test.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 6c8ff556..1d1592e3 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -193,16 +193,17 @@

    Station Coverage Maps

    console.log(strstat); var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); - console.log('got here'); var geojs1 = fetch(src1) .then(function (response) { var res = response.text(); console.log(res); + console.log('got here 1'); return res; }) .then(function (xml) { var dta = toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); console.log(dta); + console.log('got here 2'); return dta; }); From 78f3749a876da059d574926679353acde2597efd Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 18:07:46 +0100 Subject: [PATCH 121/150] more work --- .../website/templates/coverage-maps-test.html | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 1d1592e3..dbbd81e0 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -193,21 +193,15 @@

    Station Coverage Maps

    console.log(strstat); var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); - var geojs1 = fetch(src1) - .then(function (response) { - var res = response.text(); - console.log(res); - console.log('got here 1'); - return res; - }) - .then(function (xml) { - var dta = toGeoJSON.kml(new DOMParser().parseFromString(xml, "text/xml")); - console.log(dta); - console.log('got here 2'); - return dta; - }); - map.data.addGeoJson(geojs1); + const response = fetch(url); + if (response.ok){ + const textdata = response.text(); + console.log(textdata); + const geojs1 = toGeoJSON.kml(new DOMParser().parseFromString(textdata, "text/xml")); + console.log(geojs1); + map.data.addGeoJson(geojs1); + } map.data.addListener('click', (mapsMouseEvent) => { var content = mapsMouseEvent.latLng.toJSON() From d88b05a31ff6372784d629914ce7dfc2fe735690 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 18:08:51 +0100 Subject: [PATCH 122/150] add correct url --- archive/website/templates/coverage-maps-test.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index dbbd81e0..1f439672 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -193,8 +193,7 @@

    Station Coverage Maps

    console.log(strstat); var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); - - const response = fetch(url); + const response = fetch(src1); if (response.ok){ const textdata = response.text(); console.log(textdata); From 7ea5a98894bb7d5121c617742112067797b40788 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 18:10:31 +0100 Subject: [PATCH 123/150] add test --- archive/website/templates/coverage-maps-test.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 1f439672..3ce9e7ea 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -201,6 +201,10 @@

    Station Coverage Maps

    console.log(geojs1); map.data.addGeoJson(geojs1); } + else + { + console.log(response.status) + } map.data.addListener('click', (mapsMouseEvent) => { var content = mapsMouseEvent.latLng.toJSON() From 2d509bd34c34f6d6a462155b5f4c7e08c6724ae3 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 9 Jul 2026 18:12:43 +0100 Subject: [PATCH 124/150] another go --- archive/website/templates/coverage-maps-test.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 3ce9e7ea..a21f445b 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -193,17 +193,19 @@

    Station Coverage Maps

    console.log(strstat); var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); - const response = fetch(src1); - if (response.ok){ + try { + const response = fetch(src1); + if (!response.ok) { + throw new Error(`Response status: ${response.status}`); + } const textdata = response.text(); console.log(textdata); const geojs1 = toGeoJSON.kml(new DOMParser().parseFromString(textdata, "text/xml")); console.log(geojs1); map.data.addGeoJson(geojs1); } - else - { - console.log(response.status) + catch(error){ + console.error(error.message); } map.data.addListener('click', (mapsMouseEvent) => { From 1f595c0841793bc0be79e5aee11c1a1ad414f8ab Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 10:50:58 +0100 Subject: [PATCH 125/150] add full url --- archive/website/templates/coverage-maps-test.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index a21f445b..3888de5a 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -191,7 +191,7 @@

    Station Coverage Maps

    if (strstat != 'All') { console.log('processing station 1'); console.log(strstat); - var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; + var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); try { const response = fetch(src1); From 0ddb0cb1d0ad4049e88ae36c06035535a72b12a5 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 11:03:13 +0100 Subject: [PATCH 126/150] more testing --- archive/website/templates/coverage-maps-test.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 3888de5a..459928c5 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -191,9 +191,13 @@

    Station Coverage Maps

    if (strstat != 'All') { console.log('processing station 1'); console.log(strstat); - var src1 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat + '-' + height + '.kml'; + var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); try { + const reader = new FileReader(); + reader.readAsText(src1); + const kmldata = reader.result; + console.log(kmldata) const response = fetch(src1); if (!response.ok) { throw new Error(`Response status: ${response.status}`); From 55b192029a57e6a36dbe56c5ae24f9b533bae126 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 11:07:00 +0100 Subject: [PATCH 127/150] try async --- archive/website/templates/coverage-maps-test.html | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 459928c5..8072902e 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -166,7 +166,7 @@

    Station Coverage Maps

    return decodeURIComponent(results[2].replace(/\+/g, ' ')); } - function initMap() { + async function initMap() { var map; var circle; map = new google.maps.Map(document.getElementById('map'), { @@ -194,15 +194,11 @@

    Station Coverage Maps

    var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); try { - const reader = new FileReader(); - reader.readAsText(src1); - const kmldata = reader.result; - console.log(kmldata) - const response = fetch(src1); + const response = await fetch(src1); if (!response.ok) { throw new Error(`Response status: ${response.status}`); } - const textdata = response.text(); + const textdata = await response.text(); console.log(textdata); const geojs1 = toGeoJSON.kml(new DOMParser().parseFromString(textdata, "text/xml")); console.log(geojs1); From 8e0bda1d8d178f131ec05b8925aeb52fbf80cf3c Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 11:36:21 +0100 Subject: [PATCH 128/150] may have got it working with async --- .../website/templates/coverage-maps-test.html | 90 +++++++------------ 1 file changed, 30 insertions(+), 60 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 8072902e..f1fd98d0 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -141,7 +141,6 @@

    Station Coverage Maps

    //console.log('in formSubmit'); var e = document.getElementById('statselect'); strstat = e.options[e.selectedIndex].text; - selidx = e.selectedIndex; var e = document.getElementById('statselect2'); strstat2 = e.options[e.selectedIndex].text; @@ -190,8 +189,7 @@

    Station Coverage Maps

    if (strstat != 'All') { console.log('processing station 1'); - console.log(strstat); - var src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; + const src1 = '/img/kmls/' + strstat + '-' + height + '.kml'; console.log(src1); try { const response = await fetch(src1); @@ -199,9 +197,7 @@

    Station Coverage Maps

    throw new Error(`Response status: ${response.status}`); } const textdata = await response.text(); - console.log(textdata); const geojs1 = toGeoJSON.kml(new DOMParser().parseFromString(textdata, "text/xml")); - console.log(geojs1); map.data.addGeoJson(geojs1); } catch(error){ @@ -231,69 +227,43 @@

    Station Coverage Maps

    }); } if (strstat2 != 'All') { - var src2 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat2 + '-' + height + '.kml'; - - var kmlLayer = new google.maps.KmlLayer(src2, { - suppressInfoWindows: true, - preserveViewport: true, - map: map - }); - kmlLayer.addListener('click', (mapsMouseEvent) => { - var content = mapsMouseEvent.latLng.toJSON() - var testimonial = document.getElementById('capture'); - var lati = content.lat; - var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat2 + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; - console.log(outputstr); - testimonial.innerHTML = outputstr; - if (circle == null) { - circle = new google.maps.Circle({ - map: map, - strokeColor: "#FF0000", - strokeOpacity: 0.5, - center: { lat: lati, lng: lngi }, - radius: 200000 - }); - } - else { - circle.setCenter({ lat: lati, lng: lngi }); + const src2 = '/img/kmls/' + strstat2 + '-' + height + '.kml'; + console.log('processing station 2'); + console.log(src2); + try { + const response = await fetch(src2); + if (!response.ok) { + throw new Error(`Response status: ${response.status}`); } - }); + const textdata = await response.text(); + const geojs1 = toGeoJSON.kml(new DOMParser().parseFromString(textdata, "text/xml")); + map.data.addGeoJson(geojs1); + } + catch(error){ + console.error(error.message); + } } if (strstat3 != 'All') { - var src3 = 'https://archive.ukmeteors.co.uk/img/kmls/' + strstat3 + '-' + height + '.kml'; - - var kmlLayer = new google.maps.KmlLayer(src3, { - suppressInfoWindows: true, - preserveViewport: true, - map: map - }); - kmlLayer.addListener('click', (mapsMouseEvent) => { - var content = mapsMouseEvent.latLng.toJSON() - var testimonial = document.getElementById('capture'); - var lati = content.lat; - var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat3 + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; - console.log(outputstr); - testimonial.innerHTML = outputstr; - if (circle == null) { - circle = new google.maps.Circle({ - map: map, - strokeColor: "#FF0000", - strokeOpacity: 0.5, - center: { lat: lati, lng: lngi }, - radius: 200000 - }); - } - else { - circle.setCenter({ lat: lati, lng: lngi }); + const src3 = '/img/kmls/' + strstat3 + '-' + height + '.kml'; + console.log('processing station 3'); + console.log(src2); + try { + const response = await fetch(src3); + if (!response.ok) { + throw new Error(`Response status: ${response.status}`); } - }); + const textdata = await response.text(); + const geojs1 = toGeoJSON.kml(new DOMParser().parseFromString(textdata, "text/xml")); + map.data.addGeoJson(geojs1); + } + catch(error){ + console.error(error.message); + } } } From a566c2f45ca2e0c5310b14d08a2009592cb54bbf Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 11:39:48 +0100 Subject: [PATCH 129/150] typo and re-add circles --- .../website/templates/coverage-maps-test.html | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index f1fd98d0..3af503b3 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -242,11 +242,32 @@

    Station Coverage Maps

    catch(error){ console.error(error.message); } + map.data.addListener('click', (mapsMouseEvent) => { + var content = mapsMouseEvent.latLng.toJSON() + var testimonial = document.getElementById('capture'); + var lati = content.lat; + var lngi = content.lng; + var outputstr = "Selected Station
    " + strstat + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; + console.log(outputstr); + testimonial.innerHTML = outputstr; + if (circle == null) { + circle = new google.maps.Circle({ + map: map, + strokeColor: "#FF0000", + strokeOpacity: 0.5, + center: { lat: lati, lng: lngi }, + radius: 200000 + }); + } + else { + circle.setCenter({ lat: lati, lng: lngi }); + } + }); } if (strstat3 != 'All') { const src3 = '/img/kmls/' + strstat3 + '-' + height + '.kml'; console.log('processing station 3'); - console.log(src2); + console.log(src3); try { const response = await fetch(src3); if (!response.ok) { @@ -259,6 +280,27 @@

    Station Coverage Maps

    catch(error){ console.error(error.message); } + map.data.addListener('click', (mapsMouseEvent) => { + var content = mapsMouseEvent.latLng.toJSON() + var testimonial = document.getElementById('capture'); + var lati = content.lat; + var lngi = content.lng; + var outputstr = "Selected Station
    " + strstat + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; + console.log(outputstr); + testimonial.innerHTML = outputstr; + if (circle == null) { + circle = new google.maps.Circle({ + map: map, + strokeColor: "#FF0000", + strokeOpacity: 0.5, + center: { lat: lati, lng: lngi }, + radius: 200000 + }); + } + else { + circle.setCenter({ lat: lati, lng: lngi }); + } + }); } } From bf162386addc43f1182fadda2a5e4cda9ce916f6 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 11:42:05 +0100 Subject: [PATCH 130/150] correct station ids --- archive/website/templates/coverage-maps-test.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 3af503b3..f5adfdae 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -247,7 +247,7 @@

    Station Coverage Maps

    var testimonial = document.getElementById('capture'); var lati = content.lat; var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; + var outputstr = "Selected Station
    " + strstat2 + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; console.log(outputstr); testimonial.innerHTML = outputstr; if (circle == null) { @@ -285,7 +285,7 @@

    Station Coverage Maps

    var testimonial = document.getElementById('capture'); var lati = content.lat; var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; + var outputstr = "Selected Station
    " + strstat3 + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; console.log(outputstr); testimonial.innerHTML = outputstr; if (circle == null) { From c69856a63fab50396f422e169014a709dd4ba7b1 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 11:50:13 +0100 Subject: [PATCH 131/150] tweaking --- .../website/templates/coverage-maps-test.html | 48 ++----------------- 1 file changed, 4 insertions(+), 44 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index f5adfdae..916b0de1 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -137,6 +137,7 @@

    Station Coverage Maps

    var strstat2; var strstat3; var height; + function formSubmit() { //console.log('in formSubmit'); var e = document.getElementById('statselect'); @@ -168,10 +169,11 @@

    Station Coverage Maps

    async function initMap() { var map; var circle; + map = new google.maps.Map(document.getElementById('map'), { center: new google.maps.LatLng(54.0, 1.5), scaleControl: true, - zoom: 2, + zoom: 6, mapTypeId: 'terrain' }); @@ -209,7 +211,7 @@

    Station Coverage Maps

    var testimonial = document.getElementById('capture'); var lati = content.lat; var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; + var outputstr = "Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; console.log(outputstr); testimonial.innerHTML = outputstr; if (circle == null) { @@ -242,27 +244,6 @@

    Station Coverage Maps

    catch(error){ console.error(error.message); } - map.data.addListener('click', (mapsMouseEvent) => { - var content = mapsMouseEvent.latLng.toJSON() - var testimonial = document.getElementById('capture'); - var lati = content.lat; - var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat2 + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; - console.log(outputstr); - testimonial.innerHTML = outputstr; - if (circle == null) { - circle = new google.maps.Circle({ - map: map, - strokeColor: "#FF0000", - strokeOpacity: 0.5, - center: { lat: lati, lng: lngi }, - radius: 200000 - }); - } - else { - circle.setCenter({ lat: lati, lng: lngi }); - } - }); } if (strstat3 != 'All') { const src3 = '/img/kmls/' + strstat3 + '-' + height + '.kml'; @@ -280,27 +261,6 @@

    Station Coverage Maps

    catch(error){ console.error(error.message); } - map.data.addListener('click', (mapsMouseEvent) => { - var content = mapsMouseEvent.latLng.toJSON() - var testimonial = document.getElementById('capture'); - var lati = content.lat; - var lngi = content.lng; - var outputstr = "Selected Station
    " + strstat3 + "

    Circle centre
    lat: " + Math.round(lati * 100) / 100 + "
    lng: " + Math.round(lngi * 100) / 100 + "
    "; - console.log(outputstr); - testimonial.innerHTML = outputstr; - if (circle == null) { - circle = new google.maps.Circle({ - map: map, - strokeColor: "#FF0000", - strokeOpacity: 0.5, - center: { lat: lati, lng: lngi }, - radius: 200000 - }); - } - else { - circle.setCenter({ lat: lati, lng: lngi }); - } - }); } } From 4ad5160e4bb7d1530d6dae535c4e2d83dc61477a Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Fri, 10 Jul 2026 11:51:37 +0100 Subject: [PATCH 132/150] recentre --- archive/website/templates/coverage-maps-test.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/archive/website/templates/coverage-maps-test.html b/archive/website/templates/coverage-maps-test.html index 916b0de1..86c7923a 100644 --- a/archive/website/templates/coverage-maps-test.html +++ b/archive/website/templates/coverage-maps-test.html @@ -171,9 +171,9 @@

    Station Coverage Maps

    var circle; map = new google.maps.Map(document.getElementById('map'), { - center: new google.maps.LatLng(54.0, 1.5), + center: new google.maps.LatLng(54.0, -1.5), scaleControl: true, - zoom: 6, + zoom: 5, mapTypeId: 'terrain' }); From d5cbf35427e3c10152a33534d4e905e13e03e567 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 12 Jul 2026 23:14:43 +0100 Subject: [PATCH 133/150] Bump to python 3.14 and fix a few small bugs --- .../lambdas/ftpToUkmon/pythoncode/Dockerfile | 7 +- .../{ftpToUkmon1.py => ftpToUkmon.py} | 684 +++++++++--------- .../ftpToUkmon/pythoncode/requirements.txt | 4 +- .../ftpToUkmon/pythoncode/supportFuncs.py | 20 +- archive/lambdas/ftpToUkmon/template.yaml | 3 +- .../ftpToUkmon/tests/expected_results.txt | 358 ++++++++- .../lambdas/ftpToUkmon/tests/localTest.ps1 | 6 +- archive/lambdas/ftpToUkmon/tests/new_data.txt | 409 +++++++++-- .../lambdas/ftpToUkmon/tests/remoteTest.ps1 | 3 +- archive/lambdas/vidUploader/template.yaml | 2 +- 10 files changed, 1049 insertions(+), 447 deletions(-) rename archive/lambdas/ftpToUkmon/pythoncode/{ftpToUkmon1.py => ftpToUkmon.py} (96%) diff --git a/archive/lambdas/ftpToUkmon/pythoncode/Dockerfile b/archive/lambdas/ftpToUkmon/pythoncode/Dockerfile index 28df9932..e2fae26e 100644 --- a/archive/lambdas/ftpToUkmon/pythoncode/Dockerfile +++ b/archive/lambdas/ftpToUkmon/pythoncode/Dockerfile @@ -1,10 +1,9 @@ -FROM public.ecr.aws/lambda/python:3.8 +FROM public.ecr.aws/lambda/python:3.14 COPY requirements.txt ./ -RUN python3.8 -m pip install -r requirements.txt -t . -RUN yum update -y +RUN python -m pip install -r requirements.txt -t . ENV LD_LIBRARY_PATH ./ COPY *.py ./ COPY *.csv ./ -CMD ["ftpToUkmon1.lambda_handler"] +CMD ["ftpToUkmon.lambda_handler"] diff --git a/archive/lambdas/ftpToUkmon/pythoncode/ftpToUkmon1.py b/archive/lambdas/ftpToUkmon/pythoncode/ftpToUkmon.py similarity index 96% rename from archive/lambdas/ftpToUkmon/pythoncode/ftpToUkmon1.py rename to archive/lambdas/ftpToUkmon/pythoncode/ftpToUkmon.py index 825ebd70..4efb7c7b 100644 --- a/archive/lambdas/ftpToUkmon/pythoncode/ftpToUkmon1.py +++ b/archive/lambdas/ftpToUkmon/pythoncode/ftpToUkmon.py @@ -1,341 +1,343 @@ -# -# lambda function to be triggered when a csv file arrives in shared bucket -# to copy it to the temp area for consolidation later -# -import boto3 -import os -import datetime -import pytz -import json -import time -from tempfile import mkdtemp -from shutil import rmtree -import numpy as np - -from supportFuncs import datetime2JD, altAz2RADec, polarToCartesian, cartesianToPolar -from supportFuncs import angularSeparation, greatCircle, fitGreatCircle, greatCirclePhase -from supportFuncs import filenameToDatetime, readFTPdetectinfo, loadConfigFromDirectory - - -from ShowerAssociation import showerAssociation - - -class PlateparDummy: - def __init__(self, **entries): - """ This class takes a platepar dictionary and converts it into an object. """ - - self.__dict__.update(entries) - if not hasattr(self, 'UT_corr'): - self.UT_corr = 0 - - -def writeUkmdaCsv(dir_path, file_name, data): - """ Write the a UKMDA specific CSV file for single-station data. - - Arguments: - dir_path: [str] Directory where the file will be written to. - file_name: [str] Name of the UFOOrbit CSV file. - data: [list] A list of meteor entries. - - """ - with open(os.path.join(dir_path, file_name), 'w') as f: - - # Write the header - no - #f.write("Ver,Y,M,D,h,m,s,Mag,Dur,Az1,Alt1,Az2,Alt2,Ra1,Dec1,Ra2,Dec2,ID,Long,Lat,Alt,Tz,AngVel,Shwr,Filename,Dtstamp,status\n") - - # Write meteor data to file - for line in data: - - dt, peak_mag, duration, azim1, alt1, azim2, alt2, ra1, dec1, ra2, dec2, cam_code, lon, lat, \ - elev, UT_corr, shwr, fname, angvel = line - - # Convert azimuths to the astronomical system (+W of due S) - azim1 = (azim1 - 180) % 360 - azim2 = (azim2 - 180) % 360 - - # cater for the possibility that secs+microsecs > 59.99 and would round up to 60 - # causing an invalid time to be written eg 20,55,60.00, instead of 20,56,0.00 - secs = round(dt.second + dt.microsecond / 1000000, 2) - if secs > 59.99: - tmpdt = datetime.datetime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, - tzinfo=pytz.UTC) - # add 60 seconds on to the datetime - dt = tmpdt + datetime.timedelta(seconds = secs) - dtstamp = dt.timestamp() - sts = 'N' - - f.write('{:s},{:4d},{:2d},{:2d},{:2d},{:2d},{:4.2f},{:.2f},{:.3f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:s},{:.6f},{:.6f},{:.1f},{:.1f},{:7f},{:s},{:s},{:.6f},{:s}\n'.format( - 'UM1', dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second + dt.microsecond/1000000, - peak_mag, duration, azim1, alt1, azim2, alt2, ra1, dec1, ra2, dec2, cam_code, lon, lat, - elev, UT_corr, angvel, shwr, fname, dtstamp, sts)) - - s3 = boto3.resource('s3') - s3bucket = os.getenv('ARCHBUCKET', default='ukmda-shared') - outdir = os.getenv('OUTDIR', default='matches/single/new') - outn = outdir + '/' + file_name - fullname = os.path.join(dir_path, file_name) - s3.meta.client.upload_file(fullname, s3bucket, outn, ExtraArgs={'ContentType': 'text/csv'}) - - -def FTPdetectinfo2UkmdaCsv(dir_path): - """ Convert the FTPdetectinfo file into a ukmda specific CSV file. - - Arguments: - dir_path: [str] Path of the directory which contains the FTPdetectinfo file. - out_path: [str] Path of the directory to save the results into - - """ - # Load the FTPdetectinfo file - - ftpdetectinfo_name = None - for name in os.listdir(dir_path): - # Find FTPdetectinfo - if name.startswith("FTPdetectinfo") and name.endswith('.txt') and \ - ("backup" not in name) and ("uncalibrated" not in name): - ftpdetectinfo_name = name - break - if ftpdetectinfo_name is None: - print(f'Ignoring {dir_path} as no ftpdetect file') - return - - ppfilename = os.path.join(dir_path, 'platepars_all_recalibrated.json') - if not os.path.isfile(ppfilename): - print(f'Skipping {ftpdetectinfo_name} as no platepar file') - return - - with open(ppfilename) as f: - try: - platepars_recalibrated_dict = json.load(f) - except: - print(f'Skipping {ftpdetectinfo_name} as malformed platepar file') - return - - - # Load the FTPdetectinfo file - try: - meteor_list = readFTPdetectinfo(dir_path, ftpdetectinfo_name) - except Exception: - print(f'Malformed FTPdetect file {ftpdetectinfo_name}') - return - if len(meteor_list) == 0: - print(f'Ignoring {ftpdetectinfo_name} as no meteors') - return - - # load the config file then overwrite the bits of importance - config = loadConfigFromDirectory(dir_path, '.config') - - fflst = list(platepars_recalibrated_dict.keys()) - if len(fflst) > 0: - ff1 = fflst[0] - pp1 = platepars_recalibrated_dict[ff1] - config.latitude = pp1['lat'] - config.longitude = pp1['lon'] - config.elevation = pp1['elev'] - # get the shower associations - shwrs = showerAssociation(config, os.path.join(dir_path,ftpdetectinfo_name)) - else: - print(f'Ignoring {ftpdetectinfo_name} as platepar file empty') - return - # Init the UFO format list - ufo_meteor_list = [] - - # Go through every meteor in the list - for meteor in meteor_list: - - ff_name, cam_code, meteor_No, n_segments, fps, hnr, mle, binn, px_fm, rho, phi, \ - meteor_meas = meteor - - # Load the platepar from the platepar dictionary - if ff_name in platepars_recalibrated_dict: - pp_dict = platepars_recalibrated_dict[ff_name] - pp = PlateparDummy(**pp_dict) - - else: - print('Skipping {:s} because no platepar was found for this FF file!'.format(ff_name)) - continue - - # Convert the FF file name into time - dt = filenameToDatetime(ff_name) - try: - shwrdets = shwrs[(ff_name,meteor_No)] - if shwrdets[1] is not None: - shwr = shwrdets[1].name - else: - shwr='spo' - except KeyError: - shwr='spo' - - # Extract measurements - calib_status, frame_n, x, y, ra, dec, azim, elev, inten, mag = np.array(meteor_meas).T - - # If the meteor wasn't calibrated, skip it - if not np.all(calib_status): - print('Meteor {:d} was not calibrated, skipping it...'.format(meteor_No)) - continue - - # Compute the peak magnitude - peak_mag = np.min(mag) - - # Compute the total duration - first_frame = np.min(frame_n) - last_frame = np.max(frame_n) - duration = (last_frame - first_frame)/fps - - - # Compute times of first and last points - dt1 = dt + datetime.timedelta(seconds=first_frame/fps) - dt2 = dt + datetime.timedelta(seconds=last_frame/fps) - - - # Fit a great circle to Az/Alt measurements and compute model beg/end RA and Dec ### - - # Convert the measurement Az/Alt to cartesian coordinates - # NOTE: All values that are used for Great Circle computation are: - # theta - the zenith angle (90 deg - altitude) - # phi - azimuth +N of due E, which is (90 deg - azim) - x, y, z = polarToCartesian(np.radians((90 - azim) % 360), np.radians(90 - elev)) - - # Fit a great circle - C, theta0, phi0 = fitGreatCircle(x, y, z) - - # Get the first point on the great circle - phase1 = greatCirclePhase(np.radians(90 - elev[0]), np.radians((90 - azim[0]) % 360), - theta0, phi0) - alt1, azim1 = cartesianToPolar(*greatCircle(phase1, theta0, phi0)) - alt1 = 90 - np.degrees(alt1) - azim1 = (90 - np.degrees(azim1)) % 360 - - # Get the last point on the great circle - phase2 = greatCirclePhase(np.radians(90 - elev[-1]), np.radians((90 - azim[-1]) % 360), - theta0, phi0) - alt2, azim2 = cartesianToPolar(*greatCircle(phase2, theta0, phi0)) - alt2 = 90 - np.degrees(alt2) - azim2 = (90 - np.degrees(azim2)) % 360 - - # Compute RA/Dec from Alt/Az - ra1, dec1 = altAz2RADec(azim1, alt1, datetime2JD(dt1), pp.lat, pp.lon) - ra2, dec2 = altAz2RADec(azim2, alt2, datetime2JD(dt2), pp.lat, pp.lon) - - angLength = angularSeparation(np.radians(ra1), np.radians(dec1), np.radians(ra2), np.radians(dec2)) - angVel = np.degrees(angLength)/duration - - ufo_meteor_list.append([dt1, peak_mag, duration, azim1[0], alt1[0], azim2[0], alt2[0], - ra1, dec1, ra2, dec2, cam_code, pp.lon, pp.lat, pp.elev, pp.UT_corr, - shwr, ff_name, angVel]) - - - # Construct a file name for the UFO file, which is the FTPdetectinfo file without the FTPdetectinfo - # part - ufo_file_name = ftpdetectinfo_name.replace('FTPdetectinfo_', 'ukmda_').replace('.txt', '') + '.csv' - - # Write the ukmda-specific output file - writeUkmdaCsv(dir_path, ufo_file_name, ufo_meteor_list) - - -def addRowCamTimings(s3bucket, s3object): - s3c = boto3.client('s3') - dtstamp = s3c.head_object(Bucket=s3bucket, Key=s3object)['LastModified'] - ddb = boto3.resource('dynamodb', region_name='eu-west-2') - table = ddb.Table('uploadtimes') - # s3object = matches/RMSCorrelate/UK0006/UK0006_20221121_164424_325844/FTPdetectinfo_UK0006_20221121_164424_325844.txt - spls = s3object.split('/') - camid = spls[2] - ftpname = spls[-1] - ftpspls = ftpname.split('_') - rundate = ftpspls[2] + '_' + ftpspls[3] - manual = False - uploaddate = dtstamp.strftime('%Y%m%d') - uploadtime = dtstamp.strftime('%H%M%S') - expirydate = (dtstamp + datetime.timedelta(days=90)).timestamp() - table.put_item( - Item={ - 'stationid': camid, - 'dtstamp': uploaddate + '_' + uploadtime, - 'uploaddate': int(uploaddate), - 'uploadtime': int(uploadtime), - 'manual': manual, - 'rundate': rundate, - 'ExpiryDate': int(expirydate) - } - ) - return - - -def ftpToUkmda(s3bucket, s3object): - s3 = boto3.resource('s3') - - tmpdir = mkdtemp() - pth, fn = os.path.split(s3object) - s3.meta.client.download_file(s3bucket, s3object, os.path.join(tmpdir, fn)) - - # check if it contains calibrated meteors; if not, skip further downloads - recal = False - with open(os.path.join(tmpdir, fn), 'r') as inf: - lis = inf.readlines() - if len(lis) == 0: - print(f'missing content in FTP file {pth}') - return 0 - metcount = int(lis[0].strip().split()[3]) - - # check data recalibrated - for li in lis: - if 'Recalibrated' in li: - recal = True - break - - if metcount == 0 or recal is False: - print(f'Meteorcount 0 or data uncalibrated in {pth}') - rmtree(tmpdir) - return - - s3c = boto3.client('s3') - ppn = os.path.join(pth, 'platepars_all_recalibrated.json') - for i in range(11): - try: - response = s3c.head_object(Bucket=s3bucket, Key=ppn) - if response['ContentLength'] > 100: - outn = os.path.join(tmpdir, 'platepars_all_recalibrated.json') - s3.meta.client.download_file(s3bucket, ppn, outn) - break - except: - time.sleep(1) - if i == 10: - print(f'platepars_all is missing for {pth}') - return - cfg = os.path.join(pth, '.config') - for i in range(11): - try: - response = s3c.head_object(Bucket=s3bucket, Key=cfg) - if response['ContentLength'] > 100: - outn = os.path.join(tmpdir, '.config') - s3.meta.client.download_file(s3bucket, cfg, outn) - break - except: - time.sleep(1) - if i == 10: - print(f'.config file is missing for {pth}') - return - - #print('got files') - - FTPdetectinfo2UkmdaCsv(tmpdir) - rmtree(tmpdir) - return 0 - - -def lambda_handler(event, context): - record = event['Records'][0] - - s3bucket = record['s3']['bucket']['name'] - s3object = record['s3']['object']['key'] - - if 'FTPdetectinfo' not in s3object or 'backup' in s3object or 'detected' in s3object \ - or 'uncalibrated' in s3object: - # its not a calibrated FTPdetect file so ignore it - print(f'not a relevant file {s3object}') - return 0 - - ftpToUkmda(s3bucket, s3object) - addRowCamTimings(s3bucket, s3object) - - return 0 +# +# lambda function to be triggered when a csv file arrives in shared bucket +# to copy it to the temp area for consolidation later +# +import numpy as np +import boto3 +import os +import datetime +import pytz +import json +import time +from tempfile import mkdtemp +from shutil import rmtree + +from supportFuncs import datetime2JD, altAz2RADec, polarToCartesian, cartesianToPolar +from supportFuncs import angularSeparation, greatCircle, fitGreatCircle, greatCirclePhase +from supportFuncs import filenameToDatetime, readFTPdetectinfo, loadConfigFromDirectory + + +from ShowerAssociation import showerAssociation + + +class PlateparDummy: + def __init__(self, **entries): + """ This class takes a platepar dictionary and converts it into an object. """ + + self.__dict__.update(entries) + if not hasattr(self, 'UT_corr'): + self.UT_corr = 0 + + +def writeUkmdaCsv(dir_path, file_name, data): + """ Write the a UKMDA specific CSV file for single-station data. + + Arguments: + dir_path: [str] Directory where the file will be written to. + file_name: [str] Name of the UFOOrbit CSV file. + data: [list] A list of meteor entries. + + """ + with open(os.path.join(dir_path, file_name), 'w') as f: + + # Write the header - no + #f.write("Ver,Y,M,D,h,m,s,Mag,Dur,Az1,Alt1,Az2,Alt2,Ra1,Dec1,Ra2,Dec2,ID,Long,Lat,Alt,Tz,AngVel,Shwr,Filename,Dtstamp,status\n") + + # Write meteor data to file + for line in data: + + dt, peak_mag, duration, azim1, alt1, azim2, alt2, ra1, dec1, ra2, dec2, cam_code, lon, lat, \ + elev, UT_corr, shwr, fname, angvel = line + + # Convert azimuths to the astronomical system (+W of due S) + azim1 = (azim1 - 180) % 360 + azim2 = (azim2 - 180) % 360 + + # cater for the possibility that secs+microsecs > 59.99 and would round up to 60 + # causing an invalid time to be written eg 20,55,60.00, instead of 20,56,0.00 + secs = round(dt.second + dt.microsecond / 1000000, 2) + if secs > 59.99: + tmpdt = datetime.datetime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, + tzinfo=pytz.UTC) + # add 60 seconds on to the datetime + dt = tmpdt + datetime.timedelta(seconds = secs) + dtstamp = dt.timestamp() + sts = 'N' + + f.write('{:s},{:4d},{:2d},{:2d},{:2d},{:2d},{:4.2f},{:.2f},{:.3f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:.7f},{:s},{:.6f},{:.6f},{:.1f},{:.1f},{:7f},{:s},{:s},{:.6f},{:s}\n'.format( + 'UM1', dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second + dt.microsecond/1000000, + peak_mag, duration, azim1, alt1, azim2, alt2, ra1, dec1, ra2, dec2, cam_code, lon, lat, + elev, UT_corr, angvel, shwr, fname, dtstamp, sts)) + + s3 = boto3.resource('s3') + s3bucket = os.getenv('ARCHBUCKET', default='ukmda-shared') + outdir = os.getenv('OUTDIR', default='matches/single/new') + outn = outdir + '/' + file_name + fullname = os.path.join(dir_path, file_name) + s3.meta.client.upload_file(fullname, s3bucket, outn, ExtraArgs={'ContentType': 'text/csv'}) + print(f'uploaded to {outn} in {s3bucket}') + + +def FTPdetectinfo2UkmdaCsv(dir_path): + """ Convert the FTPdetectinfo file into a ukmda specific CSV file. + + Arguments: + dir_path: [str] Path of the directory which contains the FTPdetectinfo file. + out_path: [str] Path of the directory to save the results into + + """ + # Load the FTPdetectinfo file + + ftpdetectinfo_name = None + for name in os.listdir(dir_path): + # Find FTPdetectinfo + if name.startswith("FTPdetectinfo") and name.endswith('.txt') and \ + ("backup" not in name) and ("uncalibrated" not in name): + ftpdetectinfo_name = name + break + if ftpdetectinfo_name is None: + print(f'Ignoring {dir_path} as no ftpdetect file') + return + + ppfilename = os.path.join(dir_path, 'platepars_all_recalibrated.json') + if not os.path.isfile(ppfilename): + print(f'Skipping {ftpdetectinfo_name} as no platepar file') + return + + with open(ppfilename) as f: + try: + platepars_recalibrated_dict = json.load(f) + except: + print(f'Skipping {ftpdetectinfo_name} as malformed platepar file') + return + + + # Load the FTPdetectinfo file + try: + meteor_list = readFTPdetectinfo(dir_path, ftpdetectinfo_name) + except Exception: + print(f'Malformed FTPdetect file {ftpdetectinfo_name}') + return + if len(meteor_list) == 0: + print(f'Ignoring {ftpdetectinfo_name} as no meteors') + return + + # load the config file then overwrite the bits of importance + config = loadConfigFromDirectory(dir_path, '.config') + + fflst = list(platepars_recalibrated_dict.keys()) + if len(fflst) > 0: + ff1 = fflst[0] + pp1 = platepars_recalibrated_dict[ff1] + config.latitude = pp1['lat'] + config.longitude = pp1['lon'] + config.elevation = pp1['elev'] + # get the shower associations + shwrs = showerAssociation(config, os.path.join(dir_path,ftpdetectinfo_name)) + else: + print(f'Ignoring {ftpdetectinfo_name} as platepar file empty') + return + # Init the UFO format list + ufo_meteor_list = [] + + # Go through every meteor in the list + for meteor in meteor_list: + + ff_name, cam_code, meteor_No, n_segments, fps, hnr, mle, binn, px_fm, rho, phi, \ + meteor_meas = meteor + + # Load the platepar from the platepar dictionary + if ff_name in platepars_recalibrated_dict: + pp_dict = platepars_recalibrated_dict[ff_name] + pp = PlateparDummy(**pp_dict) + + else: + print('Skipping {:s} because no platepar was found for this FF file!'.format(ff_name)) + continue + + # Convert the FF file name into time + dt = filenameToDatetime(ff_name) + try: + shwrdets = shwrs[(ff_name,meteor_No)] + if shwrdets[1] is not None: + shwr = shwrdets[1].name + else: + shwr='spo' + except KeyError: + shwr='spo' + + # Extract measurements + calib_status, frame_n, x, y, ra, dec, azim, elev, inten, mag = np.array(meteor_meas).T + + # If the meteor wasn't calibrated, skip it + if not np.all(calib_status): + print('Meteor {:d} was not calibrated, skipping it...'.format(meteor_No)) + continue + + # Compute the peak magnitude + peak_mag = np.min(mag) + + # Compute the total duration + first_frame = np.min(frame_n) + last_frame = np.max(frame_n) + duration = (last_frame - first_frame)/fps + + + # Compute times of first and last points + dt1 = dt + datetime.timedelta(seconds=first_frame/fps) + dt2 = dt + datetime.timedelta(seconds=last_frame/fps) + + + # Fit a great circle to Az/Alt measurements and compute model beg/end RA and Dec ### + + # Convert the measurement Az/Alt to cartesian coordinates + # NOTE: All values that are used for Great Circle computation are: + # theta - the zenith angle (90 deg - altitude) + # phi - azimuth +N of due E, which is (90 deg - azim) + x, y, z = polarToCartesian(np.radians((90 - azim) % 360), np.radians(90 - elev)) + + # Fit a great circle + C, theta0, phi0 = fitGreatCircle(x, y, z) + + # Get the first point on the great circle + phase1 = greatCirclePhase(np.radians(90 - elev[0]), np.radians((90 - azim[0]) % 360), + theta0, phi0) + alt1, azim1 = cartesianToPolar(*greatCircle(phase1, theta0, phi0)) + alt1 = 90 - np.degrees(alt1) + azim1 = (90 - np.degrees(azim1)) % 360 + + # Get the last point on the great circle + phase2 = greatCirclePhase(np.radians(90 - elev[-1]), np.radians((90 - azim[-1]) % 360), + theta0, phi0) + alt2, azim2 = cartesianToPolar(*greatCircle(phase2, theta0, phi0)) + alt2 = 90 - np.degrees(alt2) + azim2 = (90 - np.degrees(azim2)) % 360 + + # Compute RA/Dec from Alt/Az + #print(azim1, alt1, dt1, pp.lat, pp.lon) + ra1, dec1 = altAz2RADec(azim1, alt1, datetime2JD(dt1), pp.lat, pp.lon) + ra2, dec2 = altAz2RADec(azim2, alt2, datetime2JD(dt2), pp.lat, pp.lon) + + angLength = angularSeparation(np.radians(ra1), np.radians(dec1), np.radians(ra2), np.radians(dec2)) + angVel = np.degrees(angLength)/duration + + ufo_meteor_list.append([dt1, peak_mag, duration, azim1, alt1, azim2, alt2, + ra1, dec1, ra2, dec2, cam_code, pp.lon, pp.lat, pp.elev, pp.UT_corr, + shwr, ff_name, angVel]) + + + # Construct a file name for the UFO file, which is the FTPdetectinfo file without the FTPdetectinfo + # part + ufo_file_name = ftpdetectinfo_name.replace('FTPdetectinfo_', 'ukmda_').replace('.txt', '') + '.csv' + + # Write the ukmda-specific output file + writeUkmdaCsv(dir_path, ufo_file_name, ufo_meteor_list) + + +def addRowCamTimings(s3bucket, s3object): + s3c = boto3.client('s3') + dtstamp = s3c.head_object(Bucket=s3bucket, Key=s3object)['LastModified'] + ddb = boto3.resource('dynamodb', region_name='eu-west-2') + table = ddb.Table('uploadtimes') + # s3object = matches/RMSCorrelate/UK0006/UK0006_20221121_164424_325844/FTPdetectinfo_UK0006_20221121_164424_325844.txt + spls = s3object.split('/') + camid = spls[2] + ftpname = spls[-1] + ftpspls = ftpname.split('_') + rundate = ftpspls[2] + '_' + ftpspls[3] + manual = False + uploaddate = dtstamp.strftime('%Y%m%d') + uploadtime = dtstamp.strftime('%H%M%S') + expirydate = (dtstamp + datetime.timedelta(days=90)).timestamp() + table.put_item( + Item={ + 'stationid': camid, + 'dtstamp': uploaddate + '_' + uploadtime, + 'uploaddate': int(uploaddate), + 'uploadtime': int(uploadtime), + 'manual': manual, + 'rundate': rundate, + 'ExpiryDate': int(expirydate) + } + ) + return + + +def ftpToUkmda(s3bucket, s3object): + s3 = boto3.resource('s3') + + tmpdir = mkdtemp() + pth, fn = os.path.split(s3object) + s3.meta.client.download_file(s3bucket, s3object, os.path.join(tmpdir, fn)) + + # check if it contains calibrated meteors; if not, skip further downloads + recal = False + with open(os.path.join(tmpdir, fn), 'r') as inf: + lis = inf.readlines() + if len(lis) == 0: + print(f'missing content in FTP file {pth}') + return 0 + metcount = int(lis[0].strip().split()[3]) + + # check data recalibrated + for li in lis: + if 'Recalibrated' in li: + recal = True + break + + if metcount == 0 or recal is False: + print(f'Meteorcount 0 or data uncalibrated in {pth}') + rmtree(tmpdir) + return + + s3c = boto3.client('s3') + ppn = os.path.join(pth, 'platepars_all_recalibrated.json') + for i in range(11): + try: + response = s3c.head_object(Bucket=s3bucket, Key=ppn) + if response['ContentLength'] > 100: + outn = os.path.join(tmpdir, 'platepars_all_recalibrated.json') + s3.meta.client.download_file(s3bucket, ppn, outn) + break + except: + time.sleep(1) + if i == 10: + print(f'platepars_all is missing for {pth}') + return + cfg = os.path.join(pth, '.config') + for i in range(11): + try: + response = s3c.head_object(Bucket=s3bucket, Key=cfg) + if response['ContentLength'] > 100: + outn = os.path.join(tmpdir, '.config') + s3.meta.client.download_file(s3bucket, cfg, outn) + break + except: + time.sleep(1) + if i == 10: + print(f'.config file is missing for {pth}') + return + + #print('got files') + + FTPdetectinfo2UkmdaCsv(tmpdir) + rmtree(tmpdir) + return 0 + + +def lambda_handler(event, context): + record = event['Records'][0] + + s3bucket = record['s3']['bucket']['name'] + s3object = record['s3']['object']['key'] + + if 'FTPdetectinfo' not in s3object or 'backup' in s3object or 'detected' in s3object \ + or 'uncalibrated' in s3object: + # its not a calibrated FTPdetect file so ignore it + print(f'not a relevant file {s3object}') + return 0 + + ftpToUkmda(s3bucket, s3object) + addRowCamTimings(s3bucket, s3object) + + return 0 diff --git a/archive/lambdas/ftpToUkmon/pythoncode/requirements.txt b/archive/lambdas/ftpToUkmon/pythoncode/requirements.txt index b8922098..4b50efa2 100644 --- a/archive/lambdas/ftpToUkmon/pythoncode/requirements.txt +++ b/archive/lambdas/ftpToUkmon/pythoncode/requirements.txt @@ -1,3 +1,3 @@ -numpy scipy -pytz \ No newline at end of file +pytz +numpy \ No newline at end of file diff --git a/archive/lambdas/ftpToUkmon/pythoncode/supportFuncs.py b/archive/lambdas/ftpToUkmon/pythoncode/supportFuncs.py index 9aa5d487..842d4ffb 100644 --- a/archive/lambdas/ftpToUkmon/pythoncode/supportFuncs.py +++ b/archive/lambdas/ftpToUkmon/pythoncode/supportFuncs.py @@ -1,8 +1,8 @@ -from datetime import datetime, timedelta, MINYEAR import numpy as np +from datetime import datetime, timedelta, MINYEAR import scipy import os -from numpy.core.umath_tests import inner1d +#from numpy.core.umath_tests import inner1d import math # Define Julian epoch @@ -224,7 +224,7 @@ def _pointDist(x): # Find the phase angle on the great circle which corresponds to the pick res = scipy.optimize.minimize(_pointDist, 0) - return res.x + return res.x[0] @@ -449,7 +449,8 @@ def vectNorm(vect): def vectMag(vect): """ Calculate the magnitude of the given vector. """ - return np.sqrt(inner1d(vect, vect)) + return np.linalg.norm(vect) + return np.sqrt(np.dot(vect, vect)) def raDec2Vector(ra, dec): @@ -553,8 +554,7 @@ def jd2SolLonSteyaert(jd): class simpleConfig(object): - """ Holds Earth's shape and physical parameters. """ - + """ Extremely simple config object used in this code """ def __init__(self): self.latitude = None self.longitude = None @@ -575,13 +575,13 @@ def loadConfigFromDirectory(pth, cfgname='.config'): spls = li.split() if len(spls) > 0: if 'latitude:' in spls[0]: - cfgobj.latitude = float(spls[1]) + cfgobj.latitude = float(spls[1].replace(';',' ')) if 'longitude:' in spls[0]: - cfgobj.longitude = float(spls[1]) + cfgobj.longitude = float(spls[1].replace(';',' ')) if 'elevation:' in spls[0]: - cfgobj.elevation = float(spls[1]) + cfgobj.elevation = float(spls[1].replace(';',' ')) if 'fps:' in spls[0]: - cfgobj.fps = float(spls[1]) + cfgobj.fps = float(spls[1].replace(';',' ')) cfgobj.shower_path = '.' return cfgobj diff --git a/archive/lambdas/ftpToUkmon/template.yaml b/archive/lambdas/ftpToUkmon/template.yaml index e05f21c0..fd645349 100644 --- a/archive/lambdas/ftpToUkmon/template.yaml +++ b/archive/lambdas/ftpToUkmon/template.yaml @@ -34,4 +34,5 @@ Resources: Metadata: Dockerfile: Dockerfile DockerContext: ./pythoncode - DockerTag: python3.8-v1 + DockerTag: python3.14-v1 + DockerImage: ftpToUkmon diff --git a/archive/lambdas/ftpToUkmon/tests/expected_results.txt b/archive/lambdas/ftpToUkmon/tests/expected_results.txt index 45d72c87..a1a77ccb 100644 --- a/archive/lambdas/ftpToUkmon/tests/expected_results.txt +++ b/archive/lambdas/ftpToUkmon/tests/expected_results.txt @@ -1,16 +1,342 @@ -UM1,2022,11, 4,17,39,2.23,0.91,0.363,14.3708050,43.8567407,13.8544544,40.3505594,297.0238303,6.5424209,296.8737783,3.0186293,UK0006,-1.306160,51.883100,80.0,0.0,9.725686,spo,FF_UK0006_20221104_173852_375_0046848.fits,1667583542.230176 -UM1,2022,11, 4,18,14,52.70,0.41,8.835,62.8977784,30.2738110,84.8175073,31.9737499,265.3044003,8.8451100,251.0435653,21.6731868,UK0006,-1.306160,51.883100,80.0,0.0,2.126056,spo,FF_UK0006_20221104_181451_312_0090880.fits,1667585692.703880 -UM1,2022,11, 4,18,15,3.08,0.17,4.677,84.5413033,31.9407412,96.2893068,31.1869426,251.2156727,21.4935265,242.5789589,27.7266916,UK0006,-1.306160,51.883100,80.0,0.0,2.142265,spo,FF_UK0006_20221104_181503_056_0091136.fits,1667585703.082680 -UM1,2022,11, 4,18,45,0.94,0.45,0.523,77.8114926,21.7282465,72.7779565,18.8745583,256.8020239,9.7992226,258.8732540,4.6794797,UK0006,-1.306160,51.883100,80.0,0.0,10.541082,SLD,FF_UK0006_20221104_184451_500_0127744.fits,1667587500.936576 -UM1,2022,11, 4,18,49,17.64,1.02,0.203,59.6425962,52.7880469,54.8860017,49.6413562,289.5311311,25.9705390,290.2589891,21.6901488,UK0006,-1.306160,51.883100,80.0,0.0,21.357556,spo,FF_UK0006_20221104_184909_747_0133376.fits,1667587757.639688 -UM1,2022,11, 4,18,59,34.78,1.31,0.441,116.5518751,52.5596049,115.2180114,51.0589990,264.5266285,52.4117618,262.9469950,51.0075870,UK0006,-1.306160,51.883100,80.0,0.0,3.877767,spo,FF_UK0006_20221104_185927_502_0146688.fits,1667588374.783448 -UM1,2022,11, 4,19, 1,55.33,1.39,3.046,66.4044503,27.7500849,77.7360017,17.7329287,273.0964452,8.4915312,258.6489406,6.5887234,UK0006,-1.306160,51.883100,80.0,0.0,4.742583,OER,FF_UK0006_20221104_190150_975_0149760.fits,1667588515.328556 -UM1,2022,11, 4,20, 4,54.78,-0.07,2.201,14.7409841,60.8133909,8.2603007,57.7228104,336.2053262,23.3132024,339.3021277,19.8140406,UK0006,-1.306160,51.883100,80.0,0.0,2.058972,spo,FF_UK0006_20221104_200446_777_0226816.fits,1667592294.779372 -UM1,2022,11, 4,20, 8,59.00,-0.93,0.647,130.0085625,45.9504940,124.4902719,38.1569919,264.7901175,57.2868819,257.7360774,49.5453243,UK0006,-1.306160,51.883100,80.0,0.0,13.599069,STA,FF_UK0006_20221104_200854_480_0231936.fits,1667592539.000168 -UM1,2022,11, 4,20,27,19.03,1.20,0.928,100.7210332,43.8979968,101.3261858,33.5095914,284.0792455,38.9217818,274.1245148,32.3728687,UK0006,-1.306160,51.883100,80.0,0.0,11.205173,STA,FF_UK0006_20221104_202711_375_0254976.fits,1667593639.027332 -UM1,2022,11, 4,21, 8,58.49,1.63,1.602,52.9791599,31.6652171,56.0584095,28.9554528,316.9706412,5.5479435,313.3010761,4.5496412,UK0006,-1.306160,51.883100,80.0,0.0,2.364883,spo,FF_UK0006_20221104_210850_575_0306432.fits,1667596138.486084 -UM1,2022,11, 4,21,22,58.52,0.32,0.284,29.5434580,36.5821743,30.6439425,31.4975987,340.1970015,2.1584398,337.7566217,-2.3940432,UK0006,-1.306160,51.883100,80.0,0.0,18.156758,spo,FF_UK0006_20221104_212250_414_0323840.fits,1667596978.518636 -UM1,2022,11, 4,21,38,30.84,0.91,0.244,10.0111309,62.7061162,10.3273478,57.0642619,2.3946421,24.8610682,1.5090950,19.2770511,UK0006,-1.306160,51.883100,80.0,0.0,23.127446,SLD,FF_UK0006_20221104_213829_604_0344832.fits,1667597910.844164 -UM1,2022,11, 4,21,38,57.49,1.30,0.564,42.0524526,29.8719628,46.9432255,26.0111512,332.0374088,-0.3204748,326.4741495,-1.9317478,UK0006,-1.306160,51.883100,80.0,0.0,10.274388,STA,FF_UK0006_20221104_213849_739_0345344.fits,1667597937.491108 -UM1,2022,11, 5, 1,48,56.20,1.67,0.360,85.0548497,61.6412948,91.6034316,60.8528743,30.7775726,41.8406770,27.5553728,44.0702959,UK0006,-1.306160,51.883100,80.0,0.0,9.025677,STA,FF_UK0006_20221105_014852_322_0717568.fits,1667612936.204888 -UM1,2022,11, 5, 1,58,18.18,0.92,0.243,16.0501114,35.4415938,20.0323393,33.2789203,59.5376337,-1.5513760,55.8957088,-3.0448444,UK0006,-1.306160,51.883100,80.0,0.0,16.196341,ORI,FF_UK0006_20221105_015809_113_0731392.fits,1667613498.175364 +UM1,2024, 8,11,20,39,18.07,0.42,0.280,31.2233302,19.5645265,30.1843070,19.4514384,239.1614462,-13.5282147,240.0785308,-13.9529514,UK0006,-1.306160,51.883100,80.0,0.0,3.525783,spo,FF_UK0006_20240811_203915_511_0037632.fits,1723408758.070944,N +UM1,2024, 8,11,20,40,11.70,-0.32,0.160,98.2682110,18.0239905,98.8191938,17.0738537,184.6082975,19.1380153,183.5363863,18.7512770,UK0006,-1.306160,51.883100,80.0,0.0,6.761774,spo,FF_UK0006_20240811_204006_749_0038912.fits,1723408811.701248,N +UM1,2024, 8,11,20,42,47.35,1.34,0.679,22.7079965,57.6650690,22.4430422,59.4844517,257.4064098,21.1119617,258.0546322,22.8356372,UK0006,-1.306160,51.883100,80.0,0.0,2.690289,spo,FF_UK0006_20240811_204240_465_0042752.fits,1723408967.351860,N +UM1,2024, 8,11,20,42,50.31,-0.67,0.368,56.0665618,60.6900310,48.2549114,51.8886179,241.8720310,31.1549177,240.5578595,21.4302613,UK0006,-1.306160,51.883100,80.0,0.0,26.650293,PER,FF_UK0006_20240811_204240_465_0042752.fits,1723408970.311376,N +UM1,2024, 8,11,20,42,50.73,-0.75,0.449,47.6119544,50.9638995,42.1012979,40.6785018,240.4463226,20.4278092,239.1749571,9.5255645,UK0006,-1.306160,51.883100,80.0,0.0,24.451186,PER,FF_UK0006_20240811_204250_712_0043008.fits,1723408970.726720,N +UM1,2024, 8,11,20,43,24.53,0.56,0.121,102.5184438,17.4723705,102.1818761,16.7806682,181.7436249,21.3363031,181.5287863,20.6004556,UK0006,-1.306160,51.883100,80.0,0.0,6.322978,KCG,FF_UK0006_20240811_204321_456_0043776.fits,1723409004.526820,N +UM1,2024, 8,11,20,45,12.01,-0.17,0.409,30.3217387,67.0153930,28.0187332,55.3698036,257.4905074,31.0798199,254.3237805,19.7370154,UK0006,-1.306160,51.883100,80.0,0.0,28.590374,PER,FF_UK0006_20240811_204503_933_0046336.fits,1723409112.013396,N +UM1,2024, 8,11,20,52,3.12,1.35,0.282,50.0764386,26.9027495,48.4229356,23.9855292,229.3661408,0.1557906,229.3220911,-3.1209002,UK0006,-1.306160,51.883100,80.0,0.0,11.602581,PER,FF_UK0006_20240811_205153_840_0056576.fits,1723409523.115512,N +UM1,2024, 8,11,20,52,47.80,1.08,0.160,90.2817331,14.4889277,89.7459557,14.5715373,191.5491714,11.5240174,192.0139133,11.2616193,UK0006,-1.306160,51.883100,80.0,0.0,3.282471,spo,FF_UK0006_20240811_205245_079_0057856.fits,1723409567.797056,N +UM1,2024, 8,11,20,56,29.05,1.81,0.367,41.2817854,51.0962933,38.7194390,43.0942534,247.6835123,18.7199253,245.9271944,10.7094216,UK0006,-1.306160,51.883100,80.0,0.0,22.329186,PER,FF_UK0006_20240811_205620_280_0063232.fits,1723409789.054360,N +UM1,2024, 8,11,21, 0,13.96,1.53,0.323,58.2269469,30.5127968,55.4150169,26.6988598,227.0315520,6.8599892,227.1668840,2.3192648,UK0006,-1.306160,51.883100,80.0,0.0,14.047643,PER,FF_UK0006_20240811_210005_729_0068864.fits,1723410013.961168,N +UM1,2024, 8,11,21, 1,16.13,2.07,0.283,67.7904778,30.3955469,64.7839513,27.1837727,220.2894292,11.3508596,220.6149514,7.2093686,UK0006,-1.306160,51.883100,80.0,0.0,14.673209,PER,FF_UK0006_20240811_210107_215_0070400.fits,1723410076.126224,N +UM1,2024, 8,11,21, 3,16.75,-1.20,0.609,348.5320952,53.9726457,4.9511400,48.1124264,282.3279943,16.2879198,271.9774970,10.0850064,UK0006,-1.306160,51.883100,80.0,0.0,19.419094,spo,FF_UK0006_20240811_210310_187_0073472.fits,1723410196.748244,N +UM1,2024, 8,11,21, 5,19.09,0.42,0.449,65.7713154,57.7212540,56.4522228,47.7409368,240.7947194,31.9979267,239.0449420,20.6639383,UK0006,-1.306160,51.883100,80.0,0.0,25.476419,PER,FF_UK0006_20240811_210513_160_0076544.fits,1723410319.088308,N +UM1,2024, 8,11,21, 8,44.57,0.78,0.366,10.1396764,42.4806208,12.6137234,35.8303160,269.2137034,4.7724010,266.4995221,-1.5941253,UK0006,-1.306160,51.883100,80.0,0.0,18.906647,PER,FF_UK0006_20240811_210838_113_0081664.fits,1723410524.569172,N +UM1,2024, 8,11,21, 9,48.46,3.10,0.365,61.6014085,40.5040423,57.2255984,34.5104921,232.6679426,16.7248101,232.2899477,9.8108246,UK0006,-1.306160,51.883100,80.0,0.0,18.944481,PER,FF_UK0006_20240811_210939_599_0083200.fits,1723410588.462328,N +UM1,2024, 8,11,21,11,50.35,2.66,0.443,54.9731478,41.8712901,53.9521823,38.6129085,238.2985299,15.1476360,237.2543350,11.9554487,UK0006,-1.306160,51.883100,80.0,0.0,7.563631,spo,FF_UK0006_20240811_211142_571_0086272.fits,1723410710.353556,N +UM1,2024, 8,11,21,12,24.81,1.82,0.122,25.5327189,62.8342277,26.2570584,59.7491885,264.9210482,26.4658887,263.5415296,23.6241351,UK0006,-1.306160,51.883100,80.0,0.0,25.348328,PER,FF_UK0006_20240811_211223_562_0087296.fits,1723410744.805224,N +UM1,2024, 8,11,21,13,35.33,2.43,0.161,26.7599032,26.8658630,27.0337509,25.1986065,253.9966989,-7.8242386,253.2824235,-9.3541290,UK0006,-1.306160,51.883100,80.0,0.0,10.438823,PER,FF_UK0006_20240811_211335_295_0089088.fits,1723410815.328112,N +UM1,2024, 8,11,21,16,51.71,2.33,0.282,15.6479406,22.6765415,16.3317287,19.9893645,263.8605640,-14.1892810,262.7192744,-16.7219089,UK0006,-1.306160,51.883100,80.0,0.0,9.779691,PER,FF_UK0006_20240811_211650_001_0093952.fits,1723411011.714648,N +UM1,2024, 8,11,21,17,38.87,0.05,0.327,2.7125789,61.4389592,7.6523015,53.3130727,277.5202282,23.3426926,274.2005211,15.3912535,UK0006,-1.306160,51.883100,80.0,0.0,26.138917,PER,FF_UK0006_20240811_211730_992_0094976.fits,1723411058.872324,N +UM1,2024, 8,11,21,17,45.73,0.03,0.447,98.7756711,40.0075989,89.3381217,34.9207134,210.8991927,35.3049839,212.7153137,26.3928951,UK0006,-1.306160,51.883100,80.0,0.0,20.238576,PER,FF_UK0006_20240811_211741_239_0095232.fits,1723411065.734444,N +UM1,2024, 8,11,21,17,48.48,1.74,0.204,350.0103448,48.1588338,353.5097467,44.2389437,285.7290576,10.4053827,283.6464914,6.2853897,UK0006,-1.306160,51.883100,80.0,0.0,22.587929,PER,FF_UK0006_20240811_211741_239_0095232.fits,1723411068.484444,N +UM1,2024, 8,11,21,18,8.57,1.83,1.368,86.4526626,26.1175101,69.9008443,20.8087476,208.4476200,18.1826196,217.3288607,4.6580368,UK0006,-1.306160,51.883100,80.0,0.0,11.744683,spo,FF_UK0006_20240811_211801_735_0095744.fits,1723411088.565332,N +UM1,2024, 8,11,21,24,58.85,2.31,0.601,22.2290494,53.5794882,16.6548594,50.7929443,267.1801979,17.0883532,270.0287041,13.6392176,UK0006,-1.306160,51.883100,80.0,0.0,7.333628,spo,FF_UK0006_20240811_212451_641_0105984.fits,1723411498.851072,N +UM1,2024, 8,11,21,29,55.96,1.01,0.204,38.4942798,51.8520091,37.6374354,47.0900801,258.0670362,18.6809235,256.6299967,14.0892605,UK0006,-1.306160,51.883100,80.0,0.0,23.499741,PER,FF_UK0006_20240811_212948_823_0113408.fits,1723411795.956540,N +UM1,2024, 8,11,21,30,10.83,1.52,1.563,52.9948439,32.6986366,65.4315818,27.8763782,239.5181941,6.4520948,227.7847166,8.1053021,UK0006,-1.306160,51.883100,80.0,0.0,7.520335,CAP,FF_UK0006_20240811_213009_319_0113920.fits,1723411810.829528,N +UM1,2024, 8,11,21,30,52.72,0.93,0.163,104.9685910,44.0879380,102.5908213,41.5166105,214.4728358,41.4456651,213.2649533,38.4798953,UK0006,-1.306160,51.883100,80.0,0.0,19.097219,spo,FF_UK0006_20240811_213050_309_0114944.fits,1723411852.719312,N +UM1,2024, 8,11,21,31,14.34,2.99,0.163,36.1441024,48.5600823,35.5318012,45.1192899,258.4951240,15.0633859,257.5810299,11.7133763,UK0006,-1.306160,51.883100,80.0,0.0,21.279392,PER,FF_UK0006_20240811_213110_805_0115456.fits,1723411874.341148,N +UM1,2024, 8,11,21,32,3.68,0.42,0.203,128.4356334,44.7282083,122.9721752,43.3515171,201.4243993,55.7189806,202.9849572,51.6617680,UK0006,-1.306160,51.883100,80.0,0.0,20.482183,PER,FF_UK0006_20240811_213202_043_0116736.fits,1723411923.683524,N +UM1,2024, 8,11,21,32,3.68,0.42,0.203,128.4356334,44.7282083,122.9721752,43.3515171,201.4243993,55.7189806,202.9849572,51.6617680,UK0006,-1.306160,51.883100,80.0,0.0,20.482183,PER,FF_UK0006_20240811_213202_043_0116736.fits,1723411923.683524,N +UM1,2024, 8,11,21,33,38.99,0.53,0.362,22.9743671,20.4905450,23.4987192,17.5576251,260.7137607,-14.8888171,259.4407176,-17.6000264,UK0006,-1.306160,51.883100,80.0,0.0,8.204786,PER,FF_UK0006_20240811_213334_272_0119040.fits,1723412018.989444,N +UM1,2024, 8,11,21,33,46.34,2.00,0.120,82.6991312,37.0996604,83.2719531,36.4785538,222.7200164,24.3310022,221.8901215,24.1792750,UK0006,-1.306160,51.883100,80.0,0.0,6.411152,spo,FF_UK0006_20240811_213344_520_0119296.fits,1723412026.342576,N +UM1,2024, 8,11,21,39,29.46,2.08,0.922,95.3812845,49.1341269,75.8869692,51.6560914,227.1287854,39.2609351,239.4823795,31.5792007,UK0006,-1.306160,51.883100,80.0,0.0,13.707805,spo,FF_UK0006_20240811_213922_692_0127744.fits,1723412369.461756,N +UM1,2024, 8,11,21,41,41.26,1.69,0.202,12.0398340,25.4785791,12.9459329,23.3454823,273.8626482,-11.9195635,272.7250738,-13.9194842,UK0006,-1.306160,51.883100,80.0,0.0,11.320889,PER,FF_UK0006_20240811_214135_912_0131072.fits,1723412501.262276,N +UM1,2024, 8,11,21,42,11.01,1.53,0.243,66.2796141,31.4543674,64.1402296,28.4683875,232.2496041,11.4621228,232.0746806,7.9521719,UK0006,-1.306160,51.883100,80.0,0.0,14.474281,PER,FF_UK0006_20240811_214206_655_0131840.fits,1723412531.005528,N +UM1,2024, 8,11,21,44,22.40,3.24,0.400,70.4961877,64.6848573,72.2867000,64.3732817,254.6132306,38.5413021,253.6624313,38.9125425,UK0006,-1.306160,51.883100,80.0,0.0,2.073240,spo,FF_UK0006_20240811_214419_874_0135168.fits,1723412662.396252,N +UM1,2024, 8,11,21,48,21.91,1.75,0.285,50.1616127,44.2227761,48.2711469,39.0111377,251.8316954,15.3870160,250.5414087,10.1364278,UK0006,-1.306160,51.883100,80.0,0.0,18.976937,PER,FF_UK0006_20240811_214815_570_0141056.fits,1723412901.910600,N +UM1,2024, 8,11,21,49,12.23,2.80,0.681,56.9101608,38.3193381,57.9319297,36.8425875,244.4377213,12.9101387,242.9328268,12.0918187,UK0006,-1.306160,51.883100,80.0,0.0,2.468724,spo,FF_UK0006_20240811_214906_808_0142336.fits,1723412952.233540,N +UM1,2024, 8,11,21,50,37.63,1.24,1.402,10.8316760,16.5220037,15.0991788,15.5735652,276.0768152,-20.9466350,271.5841588,-21.2755815,UK0006,-1.306160,51.883100,80.0,0.0,2.998077,spo,FF_UK0006_20240811_215028_790_0144384.fits,1723413037.626864,N +UM1,2024, 8,11,21,50,39.08,1.18,0.521,15.1858016,15.5704793,16.7580254,15.1132433,271.4955901,-21.2641827,269.8076129,-21.4372376,UK0006,-1.306160,51.883100,80.0,0.0,3.036597,spo,FF_UK0006_20240811_215039_037_0144640.fits,1723413039.076072,N +UM1,2024, 8,11,21,52,53.38,0.12,0.531,38.5631953,58.5223318,37.1277477,45.4361993,266.7597888,24.7683985,262.0661777,12.4272340,UK0006,-1.306160,51.883100,80.0,0.0,24.697533,PER,FF_UK0006_20240811_215252_257_0147968.fits,1723413173.384916,N +UM1,2024, 8,11,21,54,37.69,2.63,0.121,82.3611543,21.9550076,81.3307042,21.0301483,217.8276613,12.5944163,218.0031540,11.2733124,UK0006,-1.306160,51.883100,80.0,0.0,11.008580,PER,FF_UK0006_20240811_215434_733_0150528.fits,1723413277.687872,N +UM1,2024, 8,11,21,57,6.42,1.12,0.650,71.6090630,44.8889335,74.0147935,32.9055374,241.1123142,24.6620377,231.4808657,16.5403687,UK0006,-1.306160,51.883100,80.0,0.0,18.665036,spo,FF_UK0006_20240811_215658_200_0154112.fits,1723413426.418384,N +UM1,2024, 8,11,21,57,45.66,2.00,0.243,60.4855415,37.9761859,58.5370178,34.3386985,243.9619138,14.1469428,243.2870201,10.2395323,UK0006,-1.306160,51.883100,80.0,0.0,16.289089,PER,FF_UK0006_20240811_215739_190_0155136.fits,1723413465.655604,N +UM1,2024, 8,11,21,58,22.85,0.10,0.688,24.4529605,34.5379553,25.9553451,24.9749770,269.2033916,-0.9634324,265.4010681,-9.8416203,UK0006,-1.306160,51.883100,80.0,0.0,14.021006,PER,FF_UK0006_20240811_215820_181_0156160.fits,1723413502.847256,N +UM1,2024, 8,11,21,58,54.95,2.50,0.243,34.0977617,30.9402279,34.0045803,27.5035847,260.5195707,-1.9432895,259.4042763,-5.1953885,UK0006,-1.306160,51.883100,80.0,0.0,14.152160,PER,FF_UK0006_20240811_215850_924_0156928.fits,1723413534.954976,N +UM1,2024, 8,11,22, 2,30.47,1.75,0.284,105.6575082,26.3989752,101.6807726,23.9487766,205.7576343,29.9355421,206.8699118,25.6943928,UK0006,-1.306160,51.883100,80.0,0.0,15.354212,PER,FF_UK0006_20240811_220226_124_0162304.fits,1723413750.466832,N +UM1,2024, 8,11,22, 2,59.66,1.07,0.282,9.7176038,20.9390834,10.8821820,18.3268445,280.8276016,-16.6824003,279.3651749,-19.1497081,UK0006,-1.306160,51.883100,80.0,0.0,10.028961,PER,FF_UK0006_20240811_220256_867_0163072.fits,1723413779.660044,N +UM1,2024, 8,11,22, 3,35.69,0.32,0.163,119.6377456,51.4973782,114.5261855,49.9372147,224.4449773,53.6807343,224.5746744,50.0898903,UK0006,-1.306160,51.883100,80.0,0.0,22.067674,PER,FF_UK0006_20240811_220327_610_0163840.fits,1723413815.690268,N +UM1,2024, 8,11,22, 6,25.55,1.51,0.163,6.0768702,50.4237063,8.0273762,47.1545100,287.1998391,12.4364314,285.6392727,9.2763099,UK0006,-1.306160,51.883100,80.0,0.0,21.546476,PER,FF_UK0006_20240811_220621_820_0168192.fits,1723413985.548952,N +UM1,2024, 8,11,22, 6,39.62,1.78,0.243,92.2379154,23.1245683,89.8270786,20.9845876,214.3379165,19.3385758,214.6686910,16.2608064,UK0006,-1.306160,51.883100,80.0,0.0,12.756824,PER,FF_UK0006_20240811_220632_067_0168448.fits,1723413999.617728,N +UM1,2024, 8,11,22, 7,19.23,2.51,0.122,98.6648161,45.3037289,95.9534673,43.6820716,228.4585047,38.6577236,228.4364031,36.1340554,UK0006,-1.306160,51.883100,80.0,0.0,20.676814,PER,FF_UK0006_20240811_220713_058_0169472.fits,1723414039.229576,N +UM1,2024, 8,11,22, 9,29.85,1.13,0.327,24.4862224,54.2781203,26.5673454,46.2987525,277.1805334,18.1047033,273.5964937,10.7979769,UK0006,-1.306160,51.883100,80.0,0.0,24.739623,PER,FF_UK0006_20240811_220926_277_0172800.fits,1723414169.846884,N +UM1,2024, 8,11,22,11,31.13,1.95,0.402,18.5013169,19.6354558,18.1824643,17.5039807,274.2574453,-16.6754455,274.1133127,-18.8237580,UK0006,-1.306160,51.883100,80.0,0.0,5.360665,KCG,FF_UK0006_20240811_221129_249_0175872.fits,1723414291.125916,N +UM1,2024, 8,11,22,14,28.31,4.53,0.120,71.1427372,56.7717977,72.9800408,56.5675670,254.8376681,33.2839858,253.8059202,33.8505841,UK0006,-1.306160,51.883100,80.0,0.0,8.583741,spo,FF_UK0006_20240811_221423_458_0180224.fits,1723414468.306528,N +UM1,2024, 8,11,22,18,25.94,1.01,0.607,58.0641019,33.5986220,54.7717515,25.1914345,248.4044794,9.4042978,246.5068177,0.7265102,UK0006,-1.306160,51.883100,80.0,0.0,14.623356,PER,FF_UK0006_20240811_221819_154_0186112.fits,1723414705.943548,N +UM1,2024, 8,11,22,20,11.91,2.72,0.162,19.1148275,30.7089543,19.6157200,28.5429909,278.1762984,-5.7202830,277.2983851,-7.7499914,UK0006,-1.306160,51.883100,80.0,0.0,13.644678,PER,FF_UK0006_20240811_222011_878_0188928.fits,1723414811.906160,N +UM1,2024, 8,11,22,20,42.23,1.27,0.204,91.3790327,44.4502356,87.5075284,41.1405930,235.1426057,34.1637166,234.5963622,29.8278586,UK0006,-1.306160,51.883100,80.0,0.0,21.410317,PER,FF_UK0006_20240811_222032_373_0189440.fits,1723414842.227404,N +UM1,2024, 8,11,22,21,32.92,1.77,0.162,53.1282577,37.8383980,52.2774273,35.2581102,254.8966545,10.9597975,254.1944675,8.3820307,UK0006,-1.306160,51.883100,80.0,0.0,16.450165,PER,FF_UK0006_20240811_222123_611_0190720.fits,1723414892.917112,N +UM1,2024, 8,11,22,24,1.33,0.04,0.368,98.6248679,58.8548400,86.7991000,51.8099118,247.9918974,46.1558954,245.2625369,36.6588906,UK0006,-1.306160,51.883100,80.0,0.0,26.404455,PER,FF_UK0006_20240811_222357_326_0194560.fits,1723415041.328000,N +UM1,2024, 8,11,22,25,8.24,2.71,0.202,87.5758550,24.1930326,85.6151714,22.1225930,223.1201266,17.3738723,223.1793785,14.6292948,UK0006,-1.306160,51.883100,80.0,0.0,13.571667,spo,FF_UK0006_20240811_222458_812_0196096.fits,1723415108.243524,N +UM1,2024, 8,11,22,28,19.06,0.75,0.203,9.8509137,34.6701893,11.4151342,31.5240196,288.5480639,-3.0171736,286.8823861,-5.9929139,UK0006,-1.306160,51.883100,80.0,0.0,16.786225,PER,FF_UK0006_20240811_222813_517_0200960.fits,1723415299.059260,N +UM1,2024, 8,11,22,29,1.90,0.96,0.364,55.8846438,30.7019940,54.2214626,25.7924839,251.1225686,5.9706348,249.8944484,0.9965121,UK0006,-1.306160,51.883100,80.0,0.0,14.065279,PER,FF_UK0006_20240811_222854_507_0201984.fits,1723415341.899156,N +UM1,2024, 8,11,22,32,44.06,0.46,0.364,103.6544833,24.6409685,99.9411907,21.4451770,213.4800459,27.4173454,213.9361422,22.7574717,UK0006,-1.306160,51.883100,80.0,0.0,12.852710,PER,FF_UK0006_20240811_223239_955_0207616.fits,1723415564.060012,N +UM1,2024, 8,11,22,34,33.05,0.01,0.530,39.2688346,51.2912175,39.1471990,39.0962135,273.5607759,18.3658136,268.6219012,7.1591790,UK0006,-1.306160,51.883100,80.0,0.0,22.986883,PER,FF_UK0006_20240811_223432_680_0210432.fits,1723415673.054080,N +UM1,2024, 8,11,22,35,11.36,0.51,0.326,31.2891938,46.4320178,32.1915608,39.2613219,276.9118684,11.9169245,273.8965604,5.3617741,UK0006,-1.306160,51.883100,80.0,0.0,22.072110,PER,FF_UK0006_20240811_223503_422_0211200.fits,1723415711.359404,N +UM1,2024, 8,11,22,36,47.02,1.50,0.164,41.3699150,61.2755090,41.1040916,57.0315242,277.7145933,27.8595894,275.7135352,24.0136039,UK0006,-1.306160,51.883100,80.0,0.0,25.963110,PER,FF_UK0006_20240811_223645_899_0213760.fits,1723415807.024780,N +UM1,2024, 8,11,22,38,58.89,1.69,0.203,75.3582536,41.3993552,72.9905729,38.1391984,246.8454531,23.7809967,246.1014653,20.1121368,UK0006,-1.306160,51.883100,80.0,0.0,18.375111,PER,FF_UK0006_20240811_223848_871_0216832.fits,1723415938.891664,N +UM1,2024, 8,11,22,38,59.14,-0.46,0.609,72.6057159,37.5701250,66.7547028,27.7092681,245.9743017,19.4782450,243.9610262,8.6356568,UK0006,-1.306160,51.883100,80.0,0.0,18.082413,PER,FF_UK0006_20240811_223859_119_0217088.fits,1723415939.143376,N +UM1,2024, 8,11,22,39,24.59,1.38,0.163,93.5114551,39.3940699,90.8039298,37.0353399,234.1122192,31.9061884,233.8830357,28.7364088,UK0006,-1.306160,51.883100,80.0,0.0,19.522165,PER,FF_UK0006_20240811_223919_614_0217600.fits,1723415964.591672,N +UM1,2024, 8,11,22,42,22.69,2.06,0.203,80.6829988,31.8462060,78.6569312,29.0874539,237.5395705,19.2829059,237.1068113,16.0443263,UK0006,-1.306160,51.883100,80.0,0.0,16.101068,PER,FF_UK0006_20240811_224213_824_0221952.fits,1723416142.691376,N +UM1,2024, 8,11,22,42,31.82,2.18,0.202,30.2170607,28.5823097,30.6175278,25.9793132,273.8628555,-5.2782762,272.6996500,-7.6372074,UK0006,-1.306160,51.883100,80.0,0.0,12.988986,PER,FF_UK0006_20240811_224224_072_0222208.fits,1723416151.824348,N +UM1,2024, 8,11,22,42,48.23,0.61,0.365,40.5513004,37.8962916,40.2745763,31.5515299,269.1920557,6.4963271,266.8512748,0.5931870,UK0006,-1.306160,51.883100,80.0,0.0,17.372330,PER,FF_UK0006_20240811_224244_568_0222720.fits,1723416168.233724,N +UM1,2024, 8,11,22,43,0.16,2.49,0.241,56.0773995,38.1138801,55.5406460,36.8412774,258.3828450,12.3904605,258.0772129,11.0824818,UK0006,-1.306160,51.883100,80.0,0.0,5.564560,KCG,FF_UK0006_20240811_224254_815_0222976.fits,1723416180.160772,N +UM1,2024, 8,11,22,44,18.31,0.91,0.323,9.9373143,25.2615636,11.7170840,21.6305285,291.4622325,-12.3636134,289.3445094,-15.7732271,UK0006,-1.306160,51.883100,80.0,0.0,12.305440,PER,FF_UK0006_20240811_224416_797_0225024.fits,1723416258.306732,N +UM1,2024, 8,11,22,44,39.68,-0.56,1.175,40.4239728,39.8776777,40.1632198,22.4229851,270.5565825,8.2686348,263.7518586,-7.8139602,UK0006,-1.306160,51.883100,80.0,0.0,14.857010,PER,FF_UK0006_20240811_224437_292_0225536.fits,1723416279.676000,N +UM1,2024, 8,11,22,44,52.20,2.03,0.162,108.6980655,33.3414274,106.1999275,31.5437958,220.0254809,36.7078730,220.2237605,33.9421515,UK0006,-1.306160,51.883100,80.0,0.0,17.063182,PER,FF_UK0006_20240811_224447_540_0225792.fits,1723416292.196484,N +UM1,2024, 8,11,22,45,26.95,1.74,0.682,30.8571697,37.9368895,30.1852057,35.3876333,277.0268022,3.7710665,276.7411488,1.1814591,UK0006,-1.306160,51.883100,80.0,0.0,3.819749,spo,FF_UK0006_20240811_224518_283_0226560.fits,1723416326.947568,N +UM1,2024, 8,11,22,45,56.26,0.51,0.445,71.7602995,28.6045491,69.1941416,22.6961914,242.6023008,11.9493897,240.9711791,5.8133229,UK0006,-1.306160,51.883100,80.0,0.0,14.245710,PER,FF_UK0006_20240811_224549_026_0227328.fits,1723416356.258028,N +UM1,2024, 8,11,22,46,22.13,0.38,0.323,77.1017972,20.9678977,75.1026336,18.1262455,234.0937552,8.7934735,233.8788362,5.3909522,UK0006,-1.306160,51.883100,80.0,0.0,10.563685,PER,FF_UK0006_20240811_224619_769_0228096.fits,1723416382.126080,N +UM1,2024, 8,11,22,46,50.78,1.32,0.323,45.9751740,34.0423800,43.9796445,30.9796906,264.5680065,4.8739410,264.7446488,1.3839989,UK0006,-1.306160,51.883100,80.0,0.0,10.833989,spo,FF_UK0006_20240811_224650_512_0228864.fits,1723416410.781364,N +UM1,2024, 8,11,22,51,30.60,0.07,0.403,82.4878709,20.6717510,79.9057020,17.3177507,231.1713745,11.6674445,231.0131920,7.5221689,UK0006,-1.306160,51.883100,80.0,0.0,10.284438,PER,FF_UK0006_20240811_225127_200_0235776.fits,1723416690.595880,N +UM1,2024, 8,11,22,55,39.22,1.29,0.284,77.4202634,28.6313394,75.0611383,24.9949108,241.0131489,15.0101052,240.4210565,10.8484100,UK0006,-1.306160,51.883100,80.0,0.0,14.819670,PER,FF_UK0006_20240811_225533_145_0241920.fits,1723416939.215800,N +UM1,2024, 8,11,22,58,3.25,3.62,0.240,42.3361894,22.9193825,43.3124375,22.9728848,265.4664851,-6.5388137,264.6702572,-6.1107960,UK0006,-1.306160,51.883100,80.0,0.0,3.748423,spo,FF_UK0006_20240811_225756_612_0245504.fits,1723417083.250568,N +UM1,2024, 8,11,22,58,56.49,-0.25,0.286,97.3899573,61.9362082,87.5710899,56.1512549,261.1402369,47.0208042,257.9947528,39.7050717,UK0006,-1.306160,51.883100,80.0,0.0,26.776376,PER,FF_UK0006_20240811_225847_851_0246784.fits,1723417136.491212,N +UM1,2024, 8,11,22,59,12.35,0.25,0.325,126.9096238,39.4157320,120.4582872,35.8165232,216.8852394,51.8070640,217.4900690,45.5719594,UK0006,-1.306160,51.883100,80.0,0.0,19.208912,PER,FF_UK0006_20240811_225908_346_0247296.fits,1723417152.350240,N +UM1,2024, 8,11,22,59,28.19,0.86,0.202,14.3253990,22.1193565,15.2414060,19.9960525,290.7339039,-14.9404807,289.4961145,-16.8950657,UK0006,-1.306160,51.883100,80.0,0.0,11.331093,PER,FF_UK0006_20240811_225918_594_0247552.fits,1723417168.187676,N +UM1,2024, 8,11,23, 0,12.68,0.69,0.484,355.8374904,44.0506885,3.9602679,42.0485214,307.6503245,6.0012045,301.6985066,3.9944821,UK0006,-1.306160,51.883100,80.0,0.0,12.925513,spo,FF_UK0006_20240811_230009_833_0248832.fits,1723417212.683348,N +UM1,2024, 8,11,23, 1,8.87,1.97,0.205,75.1210396,62.6285043,71.0962018,56.8333407,270.1501477,38.7408879,266.6127638,33.3102062,UK0006,-1.306160,51.883100,80.0,0.0,29.919202,PER,FF_UK0006_20240811_230101_071_0250112.fits,1723417268.874408,N +UM1,2024, 8,11,23, 1,35.79,3.62,0.241,85.2183567,45.8411876,84.9079666,45.2139979,250.1245213,31.9095543,249.7702911,31.3186790,UK0006,-1.306160,51.883100,80.0,0.0,2.757695,spo,FF_UK0006_20240811_230131_814_0250880.fits,1723417295.788928,N +UM1,2024, 8,11,23, 3,23.24,0.95,0.162,100.8134380,27.0503414,99.1210846,25.4705203,225.1222744,27.4472925,225.1708377,25.2570666,UK0006,-1.306160,51.883100,80.0,0.0,13.532270,PER,FF_UK0006_20240811_230314_292_0253440.fits,1723417403.236424,N +UM1,2024, 8,11,23, 6,13.21,2.78,0.282,34.7252294,35.6254964,38.7852677,34.2198443,278.5354433,2.6304544,274.9205666,2.5552014,UK0006,-1.306160,51.883100,80.0,0.0,12.825282,NDA,FF_UK0006_20240811_230608_503_0257792.fits,1723417573.210096,N +UM1,2024, 8,11,23, 6,49.86,2.40,0.201,5.0534417,52.6800330,8.3801001,52.9689284,303.1386689,14.6492610,301.0880194,15.0874334,UK0006,-1.306160,51.883100,80.0,0.0,10.116394,NDA,FF_UK0006_20240811_230649_494_0258816.fits,1723417609.861028,N +UM1,2024, 8,11,23, 7,15.28,3.21,0.122,65.8419274,55.5626141,64.3421222,53.1371497,269.6667070,30.3985698,268.6530621,27.9773070,UK0006,-1.306160,51.883100,80.0,0.0,21.100997,PER,FF_UK0006_20240811_230709_989_0259328.fits,1723417635.279120,N +UM1,2024, 8,11,23, 7,15.75,0.96,0.242,36.8193014,24.3576453,37.0228547,21.5343253,273.0225224,-7.2197791,271.7774035,-9.7668478,UK0006,-1.306160,51.883100,80.0,0.0,11.673700,PER,FF_UK0006_20240811_230709_989_0259328.fits,1723417635.745856,N +UM1,2024, 8,11,23, 8,3.36,1.27,0.204,54.5156389,51.9860356,53.1942383,47.0498958,273.4525867,23.5271727,271.3969664,18.8982840,UK0006,-1.306160,51.883100,80.0,0.0,24.521724,PER,FF_UK0006_20240811_230801_228_0260608.fits,1723417683.361828,N +UM1,2024, 8,11,23, 8,4.96,0.05,0.408,96.1011076,46.8009608,88.7626043,39.7720362,246.6013471,38.2020398,244.5817766,29.5424238,UK0006,-1.306160,51.883100,80.0,0.0,21.641430,PER,FF_UK0006_20240811_230801_228_0260608.fits,1723417684.959272,N +UM1,2024, 8,11,23, 8,39.10,3.18,0.163,25.0828724,49.6160296,26.1016990,46.0743002,290.3363039,13.7135806,288.6762700,10.4925933,UK0006,-1.306160,51.883100,80.0,0.0,22.111464,PER,FF_UK0006_20240811_230831_971_0261376.fits,1723417719.104796,N +UM1,2024, 8,11,23, 9,52.99,0.74,0.327,30.0665147,57.9001344,32.0156724,49.6472110,290.3203360,22.4947473,286.2414657,15.1101664,UK0006,-1.306160,51.883100,80.0,0.0,25.470848,PER,FF_UK0006_20240811_230943_705_0263168.fits,1723417792.992684,N +UM1,2024, 8,11,23,10,14.31,2.13,0.121,23.1194869,32.4984028,24.0776147,30.9853405,287.7859171,-3.2155881,286.6196232,-4.4796921,UK0006,-1.306160,51.883100,80.0,0.0,14.144364,spo,FF_UK0006_20240811_231004_201_0263680.fits,1723417814.308660,N +UM1,2024, 8,11,23,13,37.30,2.34,0.163,80.9602635,40.3977503,78.9413224,37.4415443,251.3128350,25.8506389,250.4358425,22.6003330,UK0006,-1.306160,51.883100,80.0,0.0,20.549164,PER,FF_UK0006_20240811_231329_155_0268800.fits,1723418017.295328,N +UM1,2024, 8,11,23,14,26.89,0.42,0.326,11.6749007,41.2928459,14.8716326,35.3805871,299.4484362,3.7266961,296.1290799,-1.7696612,UK0006,-1.306160,51.883100,80.0,0.0,19.714538,PER,FF_UK0006_20240811_231420_394_0270080.fits,1723418066.891552,N +UM1,2024, 8,11,23,15,54.45,0.32,0.485,20.6137481,28.5735147,22.7508574,22.4782519,290.4057929,-7.5324276,287.0640535,-13.0141598,UK0006,-1.306160,51.883100,80.0,0.0,13.165046,PER,FF_UK0006_20240811_231552_624_0272384.fits,1723418154.454292,N +UM1,2024, 8,11,23,17,24.59,2.08,0.241,90.3435667,27.6542114,90.0287682,26.7130000,236.6335453,21.6192915,236.1914705,20.7284555,UK0006,-1.306160,51.883100,80.0,0.0,4.076163,KCG,FF_UK0006_20240811_231714_605_0274432.fits,1723418244.592912,N +UM1,2024, 8,11,23,17,24.88,2.08,0.201,90.2383434,26.5473665,90.0469739,25.7083877,235.9243024,20.7276626,235.4739046,19.9830619,UK0006,-1.306160,51.883100,80.0,0.0,4.265339,KCG,FF_UK0006_20240811_231724_853_0274688.fits,1723418244.881812,N +UM1,2024, 8,11,23,17,30.87,4.20,0.120,74.1190323,48.5187523,75.4828148,48.2922583,262.5028545,28.5243780,261.5701417,28.9732918,UK0006,-1.306160,51.883100,80.0,0.0,7.776900,spo,FF_UK0006_20240811_231724_853_0274688.fits,1723418250.867976,N +UM1,2024, 8,11,23,17,54.06,0.39,0.404,25.3865547,23.9901440,26.3477238,19.6685173,285.5669501,-10.9300845,283.4635825,-14.8368687,UK0006,-1.306160,51.883100,80.0,0.0,10.928556,PER,FF_UK0006_20240811_231745_349_0275200.fits,1723418274.064180,N +UM1,2024, 8,11,23,20,7.22,1.16,0.326,100.5965470,44.2771985,94.3193344,38.8589887,244.5793799,39.0889789,243.3532808,31.9929275,UK0006,-1.306160,51.883100,80.0,0.0,21.972063,PER,FF_UK0006_20240811_231958_569_0278528.fits,1723418407.220712,N +UM1,2024, 8,11,23,21,25.61,2.39,0.122,70.0052118,49.6586893,68.5238166,47.0889130,266.6216465,27.5830354,265.6157806,24.9835503,UK0006,-1.306160,51.883100,80.0,0.0,22.487219,PER,FF_UK0006_20240811_232120_551_0280576.fits,1723418485.605608,N +UM1,2024, 8,11,23,25,37.43,0.23,0.368,71.3417980,58.0936914,65.9922368,49.0453019,273.7014961,34.2990303,269.4825598,25.4398899,UK0006,-1.306160,51.883100,80.0,0.0,26.028942,PER,FF_UK0006_20240811_232536_745_0286976.fits,1723418737.432468,N +UM1,2024, 8,11,23,25,36.99,2.43,0.281,41.0191504,59.4842697,50.3565143,58.7403427,289.2115725,26.1866886,284.1282381,27.9158617,UK0006,-1.306160,51.883100,80.0,0.0,17.252357,SDA,FF_UK0006_20240811_232536_745_0286976.fits,1723418736.992276,N +UM1,2024, 8,11,23,26,5.01,0.57,0.368,34.7119054,60.9441647,36.2277535,51.3474965,293.1786576,26.1873635,288.3381542,17.6622986,UK0006,-1.306160,51.883100,80.0,0.0,26.164532,PER,FF_UK0006_20240811_232557_240_0287488.fits,1723418765.005640,N +UM1,2024, 8,11,23,26,49.73,1.90,0.204,16.9068266,51.4861233,19.2203780,47.1256458,300.5426435,14.3496395,298.1547796,10.3694949,UK0006,-1.306160,51.883100,80.0,0.0,22.614466,PER,FF_UK0006_20240811_232648_479_0288768.fits,1723418809.729748,N +UM1,2024, 8,11,23,30,12.78,0.66,0.527,55.3370559,31.3503095,54.0409656,23.6561740,267.1991224,6.2870106,264.3055886,-0.9353071,UK0006,-1.306160,51.883100,80.0,0.0,14.772964,PER,FF_UK0006_20240811_233003_186_0293632.fits,1723419012.777636,N +UM1,2024, 8,11,23,30,37.03,2.00,0.326,75.1337668,46.1695096,71.2047801,39.9472174,263.4225518,27.2505745,261.4077895,20.6522080,UK0006,-1.306160,51.883100,80.0,0.0,21.020567,PER,FF_UK0006_20240811_233033_929_0294400.fits,1723419037.025752,N +UM1,2024, 8,11,23,31,45.98,3.11,0.162,49.6379924,24.9749203,49.4216514,23.0957652,268.8417818,-1.7299139,268.1327132,-3.4813709,UK0006,-1.306160,51.883100,80.0,0.0,11.693278,PER,FF_UK0006_20240811_233145_663_0296192.fits,1723419105.980140,N +UM1,2024, 8,11,23,32,6.75,0.22,0.526,69.1712227,27.5733899,66.6932914,20.9934306,255.4295575,9.7656821,253.4735850,3.0868770,UK0006,-1.306160,51.883100,80.0,0.0,13.228539,PER,FF_UK0006_20240811_233206_159_0296704.fits,1723419126.752348,N +UM1,2024, 8,11,23,33,0.07,1.72,0.202,45.3151997,29.1858206,45.3707411,26.2806487,274.4939763,0.2690822,273.1744235,-2.3193230,UK0006,-1.306160,51.883100,80.0,0.0,14.349802,PER,FF_UK0006_20240811_233257_398_0297984.fits,1723419180.071488,N +UM1,2024, 8,11,23,33,2.41,2.28,0.123,41.2164046,59.2696626,41.0248877,56.0730377,290.8646820,26.0406855,289.3959994,23.1347118,UK0006,-1.306160,51.883100,80.0,0.0,26.066664,PER,FF_UK0006_20240811_233257_398_0297984.fits,1723419182.405452,N +UM1,2024, 8,11,23,36,42.21,1.03,0.245,97.7664012,44.7921071,93.3527235,40.2850731,250.8664518,37.8424683,249.3407842,32.4284152,UK0006,-1.306160,51.883100,80.0,0.0,22.694841,PER,FF_UK0006_20240811_233632_600_0303360.fits,1723419402.212256,N +UM1,2024, 8,11,23,38,21.28,1.72,0.368,84.3649558,65.1296647,72.3223217,56.4901233,278.9690876,43.4957099,275.0770064,33.5390276,UK0006,-1.306160,51.883100,80.0,0.0,28.257322,spo,FF_UK0006_20240811_233815_078_0305920.fits,1723419501.278312,N +UM1,2024, 8,11,23,38,28.84,0.76,0.283,18.0201617,26.6105013,19.5552367,23.0327800,297.9297126,-9.9277556,295.7972795,-13.1482112,UK0006,-1.306160,51.883100,80.0,0.0,13.549450,PER,FF_UK0006_20240811_233825_326_0306176.fits,1723419508.837196,N +UM1,2024, 8,11,23,38,37.46,0.25,0.368,35.8476197,60.9035384,37.6042599,51.0274526,295.7396626,26.3695326,290.5170936,17.7032156,UK0006,-1.306160,51.883100,80.0,0.0,26.934724,PER,FF_UK0006_20240811_233835_573_0306432.fits,1723419517.458760,N +UM1,2024, 8,11,23,38,50.05,2.16,0.163,22.8547366,35.8627578,23.8878718,33.0354695,295.9788913,-0.0033721,294.4606437,-2.5358396,UK0006,-1.306160,51.883100,80.0,0.0,18.159982,PER,FF_UK0006_20240811_233845_821_0306688.fits,1723419530.045804,N +UM1,2024, 8,11,23,39,37.27,1.81,0.163,76.2351360,57.8738964,74.0667811,54.2329883,274.8300252,36.0280476,272.6547927,32.6380119,UK0006,-1.306160,51.883100,80.0,0.0,23.500399,PER,FF_UK0006_20240811_233937_060_0307968.fits,1723419577.267028,N +UM1,2024, 8,11,23,44,34.99,-0.76,0.972,19.5114081,31.6030885,24.1162391,18.6306650,299.1807620,-4.7755666,291.9659886,-16.4111116,UK0006,-1.306160,51.883100,80.0,0.0,14.016388,PER,FF_UK0006_20240811_234434_245_0315392.fits,1723419874.992528,N +UM1,2024, 8,11,23,47,24.53,2.10,0.121,76.4766659,21.0514173,75.8484895,19.6641265,249.9156076,8.5050724,249.5424018,7.0441466,UK0006,-1.306160,51.883100,80.0,0.0,12.428609,PER,FF_UK0006_20240811_234718_209_0319488.fits,1723420044.526176,N +UM1,2024, 8,11,23,47,27.09,2.69,0.203,355.4749995,53.5420083,3.4080421,52.5644494,319.2742768,15.4930745,314.3477186,14.4868145,UK0006,-1.306160,51.883100,80.0,0.0,23.964679,spo,FF_UK0006_20240811_234718_209_0319488.fits,1723420047.092708,N +UM1,2024, 8,11,23,48,52.70,-0.83,0.850,85.1299576,31.3050978,78.8880867,20.3915161,250.7738888,21.3472082,248.0714240,9.3591392,UK0006,-1.306160,51.883100,80.0,0.0,14.423735,PER,FF_UK0006_20240811_234850_438_0321792.fits,1723420132.704632,N +UM1,2024, 8,11,23,50,12.94,0.35,0.121,350.2572865,56.9395636,349.8104576,55.8488751,322.7856698,19.1169019,323.1751220,18.0610394,UK0006,-1.306160,51.883100,80.0,0.0,9.279910,spo,FF_UK0006_20240811_235012_421_0323840.fits,1723420212.941012,N +UM1,2024, 8,11,23,50,19.84,0.44,0.447,55.2905438,40.9156737,54.1161517,32.5510846,277.3023325,14.4583523,273.7558798,6.7963822,UK0006,-1.306160,51.883100,80.0,0.0,18.817441,PER,FF_UK0006_20240811_235012_421_0323840.fits,1723420219.844392,N +UM1,2024, 8,11,23,50,28.82,2.22,0.162,11.4608423,26.2987038,12.5137248,24.2870162,306.7836018,-11.1730516,305.5492490,-13.0425147,UK0006,-1.306160,51.883100,80.0,0.0,13.740304,PER,FF_UK0006_20240811_235022_668_0324096.fits,1723420228.817432,N +UM1,2024, 8,11,23,50,38.10,1.04,0.404,84.1503338,29.8571719,84.2594983,24.2300758,250.8790819,19.7012574,246.9976754,15.4610268,UK0006,-1.306160,51.883100,80.0,0.0,13.910970,spo,FF_UK0006_20240811_235032_916_0324352.fits,1723420238.104052,N +UM1,2024, 8,11,23,50,52.96,3.12,0.203,41.8659955,29.3348471,42.0456047,26.3524395,281.7629955,-0.8766191,280.3862831,-3.5271738,UK0006,-1.306160,51.883100,80.0,0.0,14.745126,PER,FF_UK0006_20240811_235043_164_0324608.fits,1723420252.957168,N +UM1,2024, 8,11,23,54,0.50,1.34,0.202,21.4386621,26.0001777,22.3579949,23.4969946,298.6508874,-9.8760476,297.2268114,-12.1135743,UK0006,-1.306160,51.883100,80.0,0.0,13.043698,PER,FF_UK0006_20240811_235357_871_0329472.fits,1723420440.503600,N +UM1,2024, 8,11,23,54,59.37,2.05,0.162,48.2619156,54.9595130,48.0254169,52.7084067,290.3855334,24.0926132,289.2944437,22.0731152,UK0006,-1.306160,51.883100,80.0,0.0,13.927199,spo,FF_UK0006_20240811_235459_358_0331008.fits,1723420499.369332,N +UM1,2024, 8,11,23,55,41.70,1.03,0.284,28.3539113,31.6007536,29.6468597,27.1435423,294.6604733,-2.8895451,292.2391292,-6.8024171,UK0006,-1.306160,51.883100,80.0,0.0,16.187943,PER,FF_UK0006_20240811_235540_349_0332032.fits,1723420541.698488,N +UM1,2024, 8,11,23,56,4.71,0.63,1.165,61.6787402,41.4990633,72.2890108,33.7186451,274.8911567,17.5765938,263.0138855,16.2927855,UK0006,-1.306160,51.883100,80.0,0.0,9.811196,spo,FF_UK0006_20240811_235600_844_0332544.fits,1723420564.706444,N +UM1,2024, 8,11,23,56,48.30,2.37,0.122,75.8745134,33.2021635,74.9897520,31.2907088,260.4032805,17.7445135,259.7687547,15.7839481,UK0006,-1.306160,51.883100,80.0,0.0,16.855554,PER,FF_UK0006_20240811_235641_835_0333568.fits,1723420608.302400,N +UM1,2024, 8,11,23,58,24.32,1.29,0.764,74.7457212,62.3186932,65.4277132,59.0686773,284.3451200,38.4081687,285.4107871,32.8829975,UK0006,-1.306160,51.883100,80.0,0.0,7.324351,spo,FF_UK0006_20240811_235824_313_0336128.fits,1723420704.316720,N +UM1,2024, 8,11,23,59,27.94,2.02,0.203,44.7660845,38.3446125,44.9721235,34.6188105,285.5690213,8.3010806,283.7748799,5.0252124,UK0006,-1.306160,51.883100,80.0,0.0,18.349228,PER,FF_UK0006_20240811_235925_799_0337664.fits,1723420767.944600,N +UM1,2024, 8,12, 0, 1,27.53,2.57,0.163,32.9953398,60.1801679,34.0804749,56.4621009,302.5885316,25.1593294,300.5033609,21.9201088,UK0006,-1.306160,51.883100,80.0,0.0,23.050625,PER,FF_UK0006_20240812_000118_525_0340480.fits,1723420887.531128,N +UM1,2024, 8,12, 0, 1,54.65,0.90,0.285,91.1891000,37.7489799,87.6418837,33.0777803,254.8930171,29.4577298,253.6106119,24.0861787,UK0006,-1.306160,51.883100,80.0,0.0,19.285821,PER,FF_UK0006_20240812_000149_268_0341248.fits,1723420914.647696,N +UM1,2024, 8,12, 0, 2,9.01,1.57,0.122,9.6511780,39.3949607,11.0130170,37.3709972,312.7233182,1.6650151,311.4386947,-0.2282619,UK0006,-1.306160,51.883100,80.0,0.0,18.751182,PER,FF_UK0006_20240812_000159_516_0341504.fits,1723420929.014460,N +UM1,2024, 8,12, 0, 2,17.85,-0.06,0.491,78.4414604,62.7454941,78.8213120,48.4114909,284.3571882,39.9986406,271.0514013,30.5974710,UK0006,-1.306160,51.883100,80.0,0.0,29.173635,spo,FF_UK0006_20240812_000209_763_0341760.fits,1723420937.845912,N +UM1,2024, 8,12, 0, 2,26.65,1.72,0.242,50.3883820,26.9560221,50.2986851,24.0018518,276.8749593,0.3346421,275.5426640,-2.3029332,UK0006,-1.306160,51.883100,80.0,0.0,12.186243,PER,FF_UK0006_20240812_000220_011_0342016.fits,1723420946.646488,N +UM1,2024, 8,12, 0, 2,41.29,0.34,0.324,109.6739091,29.2376148,106.0808949,25.5914738,235.2000537,34.4449518,234.9301827,29.6068096,UK0006,-1.306160,51.883100,80.0,0.0,14.937218,PER,FF_UK0006_20240812_000240_507_0342528.fits,1723420961.286000,N +UM1,2024, 8,12, 0, 4,30.57,2.96,0.122,17.6518113,35.5290320,18.5400149,33.4706899,306.4717233,-1.2319222,305.3580866,-3.1115541,UK0006,-1.306160,51.883100,80.0,0.0,17.916704,PER,FF_UK0006_20240812_000422_984_0345088.fits,1723421070.567828,N +UM1,2024, 8,12, 0, 6,34.38,1.59,0.163,65.0943324,41.3703070,64.2084804,38.1869786,275.2486948,18.9598053,273.8759289,15.9797298,UK0006,-1.306160,51.883100,80.0,0.0,19.990881,PER,FF_UK0006_20240812_000625_957_0348160.fits,1723421194.379256,N +UM1,2024, 8,12, 0, 6,35.63,2.09,0.162,22.4020306,24.9793100,23.0821536,23.0546581,300.7037141,-10.6648650,299.6110499,-12.3802573,UK0006,-1.306160,51.883100,80.0,0.0,12.502878,PER,FF_UK0006_20240812_000625_957_0348160.fits,1723421195.630676,N +UM1,2024, 8,12, 0, 6,40.39,1.53,0.365,48.8292728,35.5674548,48.7131228,29.3075273,283.1838951,7.3011942,280.3458795,1.7164305,UK0006,-1.306160,51.883100,80.0,0.0,17.133427,PER,FF_UK0006_20240812_000636_205_0348416.fits,1723421200.393116,N +UM1,2024, 8,12, 0, 7,2.92,1.87,0.204,45.6247868,45.1699402,45.9104973,40.6194692,290.0021654,14.6919781,287.6958500,10.7312221,UK0006,-1.306160,51.883100,80.0,0.0,22.332138,PER,FF_UK0006_20240812_000656_701_0348928.fits,1723421222.920712,N +UM1,2024, 8,12, 0, 7,49.14,2.11,0.122,73.7941724,61.0907315,72.6872575,59.1782264,285.9113979,37.2599437,284.6309273,35.5574154,UK0006,-1.306160,51.883100,80.0,0.0,16.357615,PER,FF_UK0006_20240812_000747_939_0350208.fits,1723421269.143788,N +UM1,2024, 8,12, 0, 8,0.80,2.04,0.122,108.5461995,38.0238802,106.8063592,36.2292798,245.4156422,39.7392487,244.8547931,37.5139114,UK0006,-1.306160,51.883100,80.0,0.0,18.593590,PER,FF_UK0006_20240812_000758_187_0350464.fits,1723421280.800244,N +UM1,2024, 8,12, 0, 8,11.16,1.31,0.245,50.5966603,57.9411327,50.2474183,51.9338668,294.1939642,27.3095658,290.9158983,22.0882036,UK0006,-1.306160,51.883100,80.0,0.0,24.518345,PER,FF_UK0006_20240812_000808_435_0350720.fits,1723421291.163816,N +UM1,2024, 8,12, 0, 9,22.47,1.67,0.204,48.5061597,47.5764829,48.3876457,43.1070527,289.9384739,17.7506153,287.7848702,13.7900508,UK0006,-1.306160,51.883100,80.0,0.0,21.923803,PER,FF_UK0006_20240812_000920_169_0352512.fits,1723421362.466692,N +UM1,2024, 8,12, 0, 9,24.96,1.46,0.323,75.6659764,26.6568992,73.5662019,23.8935845,259.5054504,12.4975482,259.3394033,9.1489780,UK0006,-1.306160,51.883100,80.0,0.0,10.388896,spo,FF_UK0006_20240812_000920_169_0352512.fits,1723421364.961832,N +UM1,2024, 8,12, 0, 9,34.23,2.13,0.201,74.1479083,52.8153053,78.9121362,50.8046362,278.9471520,31.6610993,274.8173209,32.3242322,UK0006,-1.306160,51.883100,80.0,0.0,17.746069,NDA,FF_UK0006_20240812_000930_417_0352768.fits,1723421374.228436,N +UM1,2024, 8,12, 0,10,46.41,1.31,0.204,54.9701170,47.8425593,54.4640296,43.3025984,286.4842928,20.2072913,284.2650530,16.1711509,UK0006,-1.306160,51.883100,80.0,0.0,22.325633,PER,FF_UK0006_20240812_001042_151_0354560.fits,1723421446.408400,N +UM1,2024, 8,12, 0,11,23.27,0.16,0.409,83.2912841,54.3883325,77.2702090,45.1476128,276.3261951,36.7001422,271.6274733,27.5045646,UK0006,-1.306160,51.883100,80.0,0.0,24.513737,PER,FF_UK0006_20240812_001123_142_0355584.fits,1723421483.270616,N +UM1,2024, 8,12, 0,15,5.00,0.84,0.203,103.4616864,34.4495794,101.0163601,31.4774797,247.2909525,34.3014562,246.4675022,30.7577640,UK0006,-1.306160,51.883100,80.0,0.0,17.772830,PER,FF_UK0006_20240812_001458_345_0360960.fits,1723421705.002872,N +UM1,2024, 8,12, 0,17,53.82,0.94,0.204,13.4931235,38.9332466,15.4572863,35.2717897,313.6567441,1.5758814,311.5448322,-1.7998377,UK0006,-1.306160,51.883100,80.0,0.0,19.566346,PER,FF_UK0006_20240812_001752_557_0365312.fits,1723421873.816944,N +UM1,2024, 8,12, 0,18,18.18,2.27,0.122,81.5950018,53.1186398,80.0751774,50.5561045,277.6864711,35.1107057,276.1873020,32.6819980,UK0006,-1.306160,51.883100,80.0,0.0,22.306787,PER,FF_UK0006_20240812_001813_053_0365824.fits,1723421898.182936,N +UM1,2024, 8,12, 0,18,28.01,-0.25,0.565,12.9417495,21.3617636,15.8275966,15.8567749,311.7365652,-15.8833447,307.9556586,-20.8731426,UK0006,-1.306160,51.883100,80.0,0.0,10.871791,PER,FF_UK0006_20240812_001823_300_0366080.fits,1723421908.013820,N +UM1,2024, 8,12, 0,18,30.56,0.42,0.365,104.7946454,33.3296829,100.4931220,28.5951394,246.2440215,34.3317209,245.3889802,28.3760797,UK0006,-1.306160,51.883100,80.0,0.0,16.426707,PER,FF_UK0006_20240812_001823_300_0366080.fits,1723421910.558148,N +UM1,2024, 8,12, 0,18,37.97,2.74,0.960,48.9238301,42.8624950,56.7533372,43.0790141,289.6298899,13.7622796,284.6396438,16.8684685,UK0006,-1.306160,51.883100,80.0,0.0,5.968436,CAP,FF_UK0006_20240812_001833_548_0366336.fits,1723421917.969812,N +UM1,2024, 8,12, 0,18,55.48,1.12,0.121,10.4660912,17.6338734,11.0750813,16.6367727,313.7672348,-19.8855683,313.0209334,-20.8034902,UK0006,-1.306160,51.883100,80.0,0.0,9.540220,PER,FF_UK0006_20240812_001854_044_0366848.fits,1723421935.479856,N +UM1,2024, 8,12, 0,19,8.29,0.39,0.161,16.2690128,16.5608473,16.8935454,15.2712231,307.8135661,-20.1036379,306.9241986,-21.2571028,UK0006,-1.306160,51.883100,80.0,0.0,8.823279,PER,FF_UK0006_20240812_001904_291_0367104.fits,1723421948.289644,N +UM1,2024, 8,12, 0,19,31.26,-0.20,0.526,25.1625116,28.9441525,27.3360345,21.8237109,302.5456847,-6.2088443,298.6363000,-12.5071586,UK0006,-1.306160,51.883100,80.0,0.0,14.030963,PER,FF_UK0006_20240812_001924_787_0367616.fits,1723421971.258056,N +UM1,2024, 8,12, 0,22,33.35,-0.19,0.325,97.8355952,33.4263005,94.4838439,28.6067529,252.1421458,30.2402735,250.7155400,24.7752274,UK0006,-1.306160,51.883100,80.0,0.0,17.263994,PER,FF_UK0006_20240812_002229_246_0372224.fits,1723422153.346788,N +UM1,2024, 8,12, 0,24,36.81,2.94,0.121,97.0747189,27.6691972,96.9652710,26.0127393,248.6722535,25.6372722,247.5167028,24.3505728,UK0006,-1.306160,51.883100,80.0,0.0,13.678548,spo,FF_UK0006_20240812_002432_220_0375296.fits,1723422276.805476,N +UM1,2024, 8,12, 0,27,43.90,-0.48,0.571,52.0336910,48.5597582,51.6081800,35.7660603,292.9069851,19.7829943,286.5603262,8.5567330,UK0006,-1.306160,51.883100,80.0,0.0,22.406620,PER,FF_UK0006_20240812_002736_679_0379904.fits,1723422463.895844,N +UM1,2024, 8,12, 0,27,51.24,3.66,0.200,75.6850711,22.5794935,76.2516393,22.4041956,261.5839924,9.2744535,261.0553490,9.4528483,UK0006,-1.306160,51.883100,80.0,0.0,2.756037,spo,FF_UK0006_20240812_002746_927_0380160.fits,1723422471.243148,N +UM1,2024, 8,12, 0,28,39.63,0.23,0.324,102.4794991,22.5226773,100.1012601,19.0127368,241.8474362,25.1238927,241.1571527,21.0180855,UK0006,-1.306160,51.883100,80.0,0.0,12.837104,PER,FF_UK0006_20240812_002838_166_0381440.fits,1723422519.633132,N +UM1,2024, 8,12, 0,29,14.98,0.83,0.283,74.1696855,27.1507204,74.0610908,23.0419652,265.8678666,12.0749737,263.4262880,8.7401577,UK0006,-1.306160,51.883100,80.0,0.0,14.501259,spo,FF_UK0006_20240812_002908_909_0382208.fits,1723422554.981756,N +UM1,2024, 8,12, 0,29,54.81,0.88,0.446,41.8564944,31.1800404,42.5215663,24.5484310,292.3150441,0.8013645,289.0265390,-4.9883165,UK0006,-1.306160,51.883100,80.0,0.0,14.937284,PER,FF_UK0006_20240812_002949_900_0383232.fits,1723422594.811592,N +UM1,2024, 8,12, 0,30,44.53,1.57,0.283,11.0686941,24.4377173,14.3265135,21.6597096,317.0015217,-13.0635266,313.5392316,-15.3941721,UK0006,-1.306160,51.883100,80.0,0.0,14.423500,spo,FF_UK0006_20240812_003041_139_0384512.fits,1723422644.529780,N +UM1,2024, 8,12, 0,31,49.74,2.06,0.202,36.4293442,26.6582572,36.9761065,24.2686303,295.4082126,-5.2132118,294.0557561,-7.2489665,UK0006,-1.306160,51.883100,80.0,0.0,12.073922,PER,FF_UK0006_20240812_003142_625_0386048.fits,1723422709.739888,N +UM1,2024, 8,12, 0,31,53.70,1.22,0.485,39.6836934,36.8988491,37.1554589,30.7485539,296.7736518,5.3064986,296.3517192,-1.1779506,UK0006,-1.306160,51.883100,80.0,0.0,13.398205,spo,FF_UK0006_20240812_003152_873_0386304.fits,1723422713.699532,N +UM1,2024, 8,12, 0,34,55.16,2.06,0.242,78.6121716,22.8487663,77.4857398,20.1943014,261.3515035,11.1384661,260.5419086,8.3987686,UK0006,-1.306160,51.883100,80.0,0.0,11.771809,PER,FF_UK0006_20240812_003447_085_0390656.fits,1723422895.160204,N +UM1,2024, 8,12, 0,35,20.87,-0.06,0.491,56.9205074,60.6277116,55.5348485,47.8123719,299.7238120,31.3570923,292.2893319,20.3869260,UK0006,-1.306160,51.883100,80.0,0.0,26.151297,PER,FF_UK0006_20240812_003517_828_0391424.fits,1723422920.874448,N +UM1,2024, 8,12, 0,35,55.78,0.69,0.244,115.0761599,39.6013585,111.5452501,36.2386243,249.7098213,44.6747380,248.6084817,40.3851512,UK0006,-1.306160,51.883100,80.0,0.0,17.907220,PER,FF_UK0006_20240812_003548_572_0392192.fits,1723422955.781456,N +UM1,2024, 8,12, 0,36,31.89,3.97,0.279,58.7028269,58.0622598,61.7758738,58.7198924,297.3722086,29.8697882,296.3848620,31.3871882,UK0006,-1.306160,51.883100,80.0,0.0,6.226484,CAP,FF_UK0006_20240812_003629_563_0393216.fits,1723422991.891496,N +UM1,2024, 8,12, 0,38,0.22,1.97,0.203,66.5742742,30.9153916,66.3461612,27.7699393,275.7978831,11.1673501,274.1301612,8.4783264,UK0006,-1.306160,51.883100,80.0,0.0,15.549042,spo,FF_UK0006_20240812_003751_545_0395264.fits,1723423080.215964,N +UM1,2024, 8,12, 0,39,6.43,2.66,0.200,87.6775637,24.2221687,88.4785822,23.7051237,256.6498263,17.4560641,255.7147003,17.5352181,UK0006,-1.306160,51.883100,80.0,0.0,4.474084,CAP,FF_UK0006_20240812_003903_279_0397056.fits,1723423146.430476,N +UM1,2024, 8,12, 0,40,24.77,0.12,0.363,87.1504792,19.7100447,85.5373714,15.9711386,254.3671502,13.6772382,253.1838336,9.8054088,UK0006,-1.306160,51.883100,80.0,0.0,11.120897,PER,FF_UK0006_20240812_004015_013_0398848.fits,1723423224.768176,N +UM1,2024, 8,12, 0,41,43.57,1.90,0.204,74.7843917,46.4755672,73.1885213,42.0805706,281.6808330,27.3157419,279.4426676,23.2508684,UK0006,-1.306160,51.883100,80.0,0.0,22.263312,PER,FF_UK0006_20240812_004136_995_0400896.fits,1723423303.571564,N +UM1,2024, 8,12, 0,41,56.60,0.39,0.204,16.0172168,62.9079047,20.3123550,58.2245032,322.1442389,25.4817048,318.8283327,21.3459153,UK0006,-1.306160,51.883100,80.0,0.0,25.135221,PER,FF_UK0006_20240812_004147_243_0401152.fits,1723423316.604840,N +UM1,2024, 8,12, 0,42,20.95,0.12,0.286,102.9334939,52.6544943,97.3759301,47.0953102,273.2445785,45.1756322,269.8388911,39.0674205,UK0006,-1.306160,51.883100,80.0,0.0,23.138298,PER,FF_UK0006_20240812_004217_986_0401920.fits,1723423340.951092,N +UM1,2024, 8,12, 0,42,27.82,2.65,0.162,62.3068691,23.9367755,61.9204120,22.1204266,276.1205424,3.2684176,275.4266155,1.5526032,UK0006,-1.306160,51.883100,80.0,0.0,11.456178,PER,FF_UK0006_20240812_004217_986_0401920.fits,1723423347.823332,N +UM1,2024, 8,12, 0,45,35.59,1.01,0.163,80.8044720,43.8543690,79.3560418,40.7688240,277.1211511,28.2912192,275.6442433,25.3032326,UK0006,-1.306160,51.883100,80.0,0.0,20.055092,PER,FF_UK0006_20240812_004532_694_0406784.fits,1723423535.591556,N +UM1,2024, 8,12, 0,45,39.19,0.72,0.204,9.0243993,43.0007377,11.4178086,39.1740642,324.4614244,5.2052541,322.2455484,1.5999121,UK0006,-1.306160,51.883100,80.0,0.0,20.763141,PER,FF_UK0006_20240812_004532_694_0406784.fits,1723423539.189452,N +UM1,2024, 8,12, 0,48,21.89,1.80,0.202,44.4217412,26.7633739,46.1451847,24.0976489,293.0415007,-2.2551472,290.4693643,-3.9661782,UK0006,-1.306160,51.883100,80.0,0.0,15.254079,spo,FF_UK0006_20240812_004816_658_0410880.fits,1723423701.893500,N +UM1,2024, 8,12, 0,49,20.23,-0.04,0.286,20.5507211,54.5044041,24.6420919,47.8742580,319.6415521,17.7546048,315.3895764,11.9572931,UK0006,-1.306160,51.883100,80.0,0.0,24.833098,PER,FF_UK0006_20240812_004918_144_0412416.fits,1723423760.233064,N +UM1,2024, 8,12, 0,52,53.60,0.45,0.204,19.1821841,48.6449489,21.2719203,44.6670041,320.0748523,11.8506258,317.7780201,8.2783180,UK0006,-1.306160,51.883100,80.0,0.0,20.757236,PER,FF_UK0006_20240812_005253_347_0417792.fits,1723423973.600508,N +UM1,2024, 8,12, 0,56,38.57,0.11,0.204,57.3905426,43.7451827,57.2106397,39.2488749,294.1354957,17.6791990,291.7315646,13.8216604,UK0006,-1.306160,51.883100,80.0,0.0,22.058916,PER,FF_UK0006_20240812_005628_550_0423168.fits,1723424198.570848,N +UM1,2024, 8,12, 0,56,38.82,0.02,0.122,57.2023244,38.4243244,57.0932284,35.9689399,291.2849894,13.1208396,290.0293256,10.9930380,UK0006,-1.306160,51.883100,80.0,0.0,20.116209,PER,FF_UK0006_20240812_005638_798_0423424.fits,1723424198.823468,N +UM1,2024, 8,12, 0,59,59.49,1.21,0.283,35.3952138,34.8568404,34.5960974,30.6460824,306.2711315,2.1060234,305.4095462,-2.0698204,UK0006,-1.306160,51.883100,80.0,0.0,15.040788,spo,FF_UK0006_20240812_005953_505_0428288.fits,1723424399.492824,N +UM1,2024, 8,12, 1, 0,3.90,1.91,0.162,66.5860360,37.0274915,65.8934968,34.1963766,284.9892800,16.1384263,283.7506347,13.5122162,UK0006,-1.306160,51.883100,80.0,0.0,17.762004,PER,FF_UK0006_20240812_010003_753_0428544.fits,1723424403.898788,N +UM1,2024, 8,12, 1, 0,27.88,0.40,0.284,56.4024101,34.9065128,56.5425735,29.9787959,290.9060146,9.7933063,288.2217925,5.6438106,UK0006,-1.306160,51.883100,80.0,0.0,17.341415,PER,FF_UK0006_20240812_010024_249_0429056.fits,1723424427.877544,N +UM1,2024, 8,12, 1, 0,35.76,1.85,0.122,13.5113047,30.3594377,14.2888241,28.5870895,323.1052971,-6.9058973,322.1627065,-8.5569759,UK0006,-1.306160,51.883100,80.0,0.0,15.592168,PER,FF_UK0006_20240812_010034_496_0429312.fits,1723424435.762844,N +UM1,2024, 8,12, 1, 0,56.71,2.43,0.162,23.1583673,21.8583442,23.8250848,19.9075450,312.8600913,-13.5214631,311.7271336,-15.2500198,UK0006,-1.306160,51.883100,80.0,0.0,12.660309,PER,FF_UK0006_20240812_010054_992_0429824.fits,1723424456.708388,N +UM1,2024, 8,12, 1, 2,22.92,1.45,0.122,77.0387323,31.7807124,76.4584416,29.9206431,275.1043626,17.2575873,274.2954401,15.4954963,UK0006,-1.306160,51.883100,80.0,0.0,15.825716,PER,FF_UK0006_20240812_010216_974_0431872.fits,1723424542.922328,N +UM1,2024, 8,12, 1, 3,36.01,2.19,0.122,22.6122948,42.9964182,23.7618592,40.5943935,319.1204180,6.8786027,317.6957077,4.7587645,UK0006,-1.306160,51.883100,80.0,0.0,20.862511,PER,FF_UK0006_20240812_010328_708_0433664.fits,1723424616.006836,N +UM1,2024, 8,12, 1, 4,20.01,0.54,0.245,47.2502940,43.3256931,47.7163691,38.1175460,302.4199861,13.5927262,299.6352246,9.1436262,UK0006,-1.306160,51.883100,80.0,0.0,21.345107,PER,FF_UK0006_20240812_010419_947_0434944.fits,1723424660.008364,N +UM1,2024, 8,12, 1, 4,38.97,-0.10,0.285,1.0800464,36.3252803,4.4906677,31.7126686,334.9675526,-1.7865549,331.9968772,-6.3112976,UK0006,-1.306160,51.883100,80.0,0.0,18.990572,PER,FF_UK0006_20240812_010430_194_0435200.fits,1723424678.971948,N +UM1,2024, 8,12, 1, 6,36.40,0.85,0.284,39.6585676,31.3002480,40.4160456,26.8525130,303.2818014,0.1540809,300.9068107,-3.6644740,UK0006,-1.306160,51.883100,80.0,0.0,15.840792,PER,FF_UK0006_20240812_010633_167_0438272.fits,1723424796.398316,N +UM1,2024, 8,12, 1, 9,30.75,1.44,0.163,25.7000102,55.0294267,27.3039426,51.5328495,321.8144448,19.0206814,319.7939362,15.9500784,UK0006,-1.306160,51.883100,80.0,0.0,22.225667,PER,FF_UK0006_20240812_010927_378_0442624.fits,1723424970.747476,N +UM1,2024, 8,12, 1, 9,56.89,1.88,0.560,97.0602326,40.6984005,105.8844489,35.7144837,270.7967286,34.7882252,260.5303466,36.6151336,UK0006,-1.306160,51.883100,80.0,0.0,15.220337,PAU,FF_UK0006_20240812_010947_874_0443136.fits,1723424996.889552,N +UM1,2024, 8,12, 1,10,2.27,-0.21,0.405,92.8302387,26.0078542,90.3402147,20.8945585,261.9046558,21.8624146,260.1964909,16.5002234,UK0006,-1.306160,51.883100,80.0,0.0,13.831017,PER,FF_UK0006_20240812_010958_122_0443392.fits,1723425002.270328,N +UM1,2024, 8,12, 1,10,47.73,1.02,0.204,54.3828469,45.4112498,54.3106582,41.0500471,300.5208442,17.9351346,298.1984998,14.1879995,UK0006,-1.306160,51.883100,80.0,0.0,21.400604,PER,FF_UK0006_20240812_011039_113_0444416.fits,1723425047.732532,N +UM1,2024, 8,12, 1,11,25.53,1.52,0.121,16.8991804,27.7237365,17.6674553,26.1390894,322.4346070,-9.0215958,321.4531016,-10.4511060,UK0006,-1.306160,51.883100,80.0,0.0,14.206169,PER,FF_UK0006_20240812_011120_104_0445440.fits,1723425085.533972,N +UM1,2024, 8,12, 1,11,36.43,2.07,0.162,47.5284734,27.2670200,47.6771598,25.1855291,296.6107907,-0.5751939,295.5431835,-2.3668432,UK0006,-1.306160,51.883100,80.0,0.0,12.892658,PER,FF_UK0006_20240812_011130_351_0445696.fits,1723425096.426192,N +UM1,2024, 8,12, 1,13,3.96,-0.28,0.366,91.1391000,41.4098607,87.7202683,34.6665888,275.8200112,31.9780240,272.5830027,25.2969745,UK0006,-1.306160,51.883100,80.0,0.0,19.814997,PER,FF_UK0006_20240812_011302_581_0448000.fits,1723425183.957872,N +UM1,2024, 8,12, 1,17,18.38,1.17,0.122,107.5329392,39.4823928,105.9926180,37.5185627,264.9043755,40.0737593,263.9905880,37.8818843,UK0006,-1.306160,51.883100,80.0,0.0,18.885226,PER,FF_UK0006_20240812_011708_526_0454144.fits,1723425438.378644,N +UM1,2024, 8,12, 1,17,38.03,2.12,0.200,47.1092741,57.7031649,44.8651161,57.4260263,313.2402595,26.1400132,314.2520652,25.3057933,UK0006,-1.306160,51.883100,80.0,0.0,6.172751,spo,FF_UK0006_20240812_011729_022_0454656.fits,1723425458.030992,N +UM1,2024, 8,12, 1,17,50.71,-0.32,0.406,76.2238631,31.0367111,74.6681364,24.5639930,279.0591223,16.2419302,276.0897596,10.2893957,UK0006,-1.306160,51.883100,80.0,0.0,16.310675,PER,FF_UK0006_20240812_011749_517_0455168.fits,1723425470.706128,N +UM1,2024, 8,12, 1,19,40.34,0.86,0.162,15.0162162,34.5535815,16.2256171,31.9250800,327.2705773,-2.5672334,325.8328337,-4.9904603,UK0006,-1.306160,51.883100,80.0,0.0,17.332205,PER,FF_UK0006_20240812_011931_995_0457728.fits,1723425580.338912,N +UM1,2024, 8,12, 1,21,0.57,3.09,0.201,80.6964017,29.2252736,79.6745527,28.6255371,275.5256243,17.2798788,275.8499777,16.2485604,UK0006,-1.306160,51.883100,80.0,0.0,5.365468,spo,FF_UK0006_20240812_012053_976_0459776.fits,1723425660.565556,N +UM1,2024, 8,12, 1,21,41.53,-1.25,0.163,351.7133101,57.0647368,355.8245913,53.7896650,344.8689008,19.1602345,342.6722976,15.7303684,UK0006,-1.306160,51.883100,80.0,0.0,24.610911,PER,FF_UK0006_20240812_012134_967_0460800.fits,1723425701.527344,N +UM1,2024, 8,12, 1,21,43.02,2.63,1.119,65.3083990,50.6100102,58.1935240,52.8449015,300.0541749,26.3852679,305.4625951,25.5026243,UK0006,-1.306160,51.883100,80.0,0.0,4.418489,spo,FF_UK0006_20240812_012134_967_0460800.fits,1723425703.021372,N +UM1,2024, 8,12, 1,21,50.56,-0.21,0.447,71.3247889,39.0847076,69.4044163,30.5517203,288.6382320,20.0355650,284.5564196,12.2939898,UK0006,-1.306160,51.883100,80.0,0.0,19.387760,PER,FF_UK0006_20240812_012145_215_0461056.fits,1723425710.558344,N +UM1,2024, 8,12, 1,24,2.44,2.40,0.121,87.6182576,51.5284074,89.4599288,49.1821038,289.7135019,36.8701326,286.5330635,36.2709406,UK0006,-1.306160,51.883100,80.0,0.0,21.615927,spo,FF_UK0006_20240812_012358_435_0464384.fits,1723425842.444936,N +UM1,2024, 8,12, 1,24,24.95,-0.18,0.407,68.0647696,39.2106747,66.8358084,31.2640236,291.4809322,18.5843667,287.4537088,11.5812921,UK0006,-1.306160,51.883100,80.0,0.0,19.681961,PER,FF_UK0006_20240812_012418_931_0464896.fits,1723425864.954736,N +UM1,2024, 8,12, 1,24,59.29,0.16,0.326,31.4654231,45.3952928,33.6600046,38.6215957,319.0127649,10.9777307,315.1661836,5.1442778,UK0006,-1.306160,51.883100,80.0,0.0,21.362731,PER,FF_UK0006_20240812_012449_674_0465664.fits,1723425899.292320,N +UM1,2024, 8,12, 1,27,29.80,0.07,0.244,115.5934750,41.0413663,112.3555381,36.7425542,263.9176632,45.8650265,261.4759614,41.2075077,UK0006,-1.306160,51.883100,80.0,0.0,20.396444,PER,FF_UK0006_20240812_012723_390_0469504.fits,1723426049.798308,N +UM1,2024, 8,12, 1,28,24.39,-0.62,0.408,87.4128572,59.2543889,81.6693890,50.0003504,298.8456667,41.4470164,292.4476767,33.0386727,UK0006,-1.306160,51.883100,80.0,0.0,24.061593,PER,FF_UK0006_20240812_012814_629_0470784.fits,1723426104.393140,N +UM1,2024, 8,12, 1,29,5.38,0.72,0.122,348.8745223,48.5654456,351.0597070,46.5896139,349.4366430,10.8961309,348.1689718,8.7713725,UK0006,-1.306160,51.883100,80.0,0.0,20.186855,PER,FF_UK0006_20240812_012855_620_0471808.fits,1723426145.384776,N +UM1,2024, 8,12, 1,29,36.84,1.24,0.122,93.9689662,28.4798390,93.2101947,26.8131687,267.7962387,24.3756470,267.1180297,22.6897263,UK0006,-1.306160,51.883100,80.0,0.0,14.781685,PER,FF_UK0006_20240812_012936_610_0472832.fits,1723426176.836012,N +UM1,2024, 8,12, 1,29,44.59,0.14,0.285,71.7695108,42.8907438,70.4326562,37.1468540,292.9180792,23.2027574,289.9390882,18.0775849,UK0006,-1.306160,51.883100,80.0,0.0,20.464644,PER,FF_UK0006_20240812_012936_610_0472832.fits,1723426184.590068,N +UM1,2024, 8,12, 1,30,17.10,1.08,0.243,64.9583153,31.9055562,64.5085443,28.1692824,290.6344941,11.1870695,288.8157657,7.8868201,UK0006,-1.306160,51.883100,80.0,0.0,15.443885,PER,FF_UK0006_20240812_013007_354_0473600.fits,1723426217.104352,N +UM1,2024, 8,12, 1,30,34.64,-0.04,0.323,76.2689048,22.6712518,75.4850376,18.7260849,276.9301224,9.6745592,275.1134659,6.0884966,UK0006,-1.306160,51.883100,80.0,0.0,12.408593,PER,FF_UK0006_20240812_013027_849_0474112.fits,1723426234.644940,N +UM1,2024, 8,12, 1,31,35.37,1.55,0.360,79.3112263,23.4916656,81.1497965,22.2491730,275.4481890,12.0411285,273.3029079,12.1220848,UK0006,-1.306160,51.883100,80.0,0.0,5.823486,spo,FF_UK0006_20240812_013129_335_0475648.fits,1723426295.369516,N +UM1,2024, 8,12, 1,31,57.68,0.74,0.163,25.5732953,52.7781987,31.3175748,50.6348432,326.8530515,16.8390267,322.6394728,15.8898227,UK0006,-1.306160,51.883100,80.0,0.0,25.543069,spo,FF_UK0006_20240812_013149_831_0476160.fits,1723426317.682292,N +UM1,2024, 8,12, 1,32,53.48,-0.10,0.204,113.4910722,52.7340524,109.7671553,48.9522700,281.4043071,50.8149655,278.1176027,46.9223978,UK0006,-1.306160,51.883100,80.0,0.0,21.859163,PER,FF_UK0006_20240812_013251_317_0477696.fits,1723426373.478732,N +UM1,2024, 8,12, 1,33,1.60,1.92,0.121,19.9527253,20.5407126,20.4633359,19.2626131,323.5850823,-15.5023282,322.8032390,-16.6420219,UK0006,-1.306160,51.883100,80.0,0.0,11.267081,PER,FF_UK0006_20240812_013301_565_0477952.fits,1723426381.601600,N +UM1,2024, 8,12, 1,35,22.76,-0.56,0.489,78.6004267,42.9972481,75.7224766,32.9577899,290.2560939,26.5709220,285.0594539,17.4743237,UK0006,-1.306160,51.883100,80.0,0.0,21.046266,PER,FF_UK0006_20240812_013514_786_0481280.fits,1723426522.764736,N +UM1,2024, 8,12, 1,36,29.57,2.81,0.440,15.7899653,51.2690229,11.4689628,50.2607261,333.7146630,14.0111288,336.3382185,12.6060269,UK0006,-1.306160,51.883100,80.0,0.0,6.626226,spo,FF_UK0006_20240812_013626_520_0483072.fits,1723426589.570680,N +UM1,2024, 8,12, 1,37,59.32,-0.12,0.204,89.0484070,53.8866555,86.0444215,49.2403443,294.8667331,39.0160797,291.8734176,34.6198821,UK0006,-1.306160,51.883100,80.0,0.0,24.508775,PER,FF_UK0006_20240812_013758_749_0485376.fits,1723426679.316820,N +UM1,2024, 8,12, 1,39,15.83,1.06,0.122,88.9034548,35.6932820,88.0564728,33.7878660,279.1507276,26.7073837,278.2639775,24.8428095,UK0006,-1.306160,51.883100,80.0,0.0,16.657452,PER,FF_UK0006_20240812_013910_484_0487168.fits,1723426755.826032,N +UM1,2024, 8,12, 1,40,4.23,1.19,0.163,62.7478842,40.7211593,62.3925676,37.7661321,299.8009291,17.4000207,298.2824641,14.8158054,UK0006,-1.306160,51.883100,80.0,0.0,18.253346,PER,FF_UK0006_20240812_014001_722_0488448.fits,1723426804.225068,N +UM1,2024, 8,12, 1,41,43.24,0.31,0.163,88.3847016,51.2603748,86.6397825,47.7850557,293.5061881,37.0690504,291.1776051,33.9440087,UK0006,-1.306160,51.883100,80.0,0.0,22.405963,PER,FF_UK0006_20240812_014133_952_0490752.fits,1723426903.241972,N +UM1,2024, 8,12, 1,43,26.20,3.74,0.122,19.0960705,50.4204476,19.9662204,48.3698467,333.1789734,13.5758958,332.1678079,11.6914621,UK0006,-1.306160,51.883100,80.0,0.0,17.459819,PER,FF_UK0006_20240812_014316_429_0493312.fits,1723427006.201060,N +UM1,2024, 8,12, 1,43,31.62,2.46,0.280,40.0758534,39.9624815,43.5823322,40.0771400,315.6768860,8.2386502,313.2558604,9.4614929,UK0006,-1.306160,51.883100,80.0,0.0,9.590139,SDA,FF_UK0006_20240812_014326_677_0493568.fits,1723427011.620916,N +UM1,2024, 8,12, 1,44,17.49,3.08,0.242,49.5033736,45.3107439,47.8599009,43.3570285,311.9519811,16.1063380,312.0498785,13.8282729,UK0006,-1.306160,51.883100,80.0,0.0,9.434231,spo,FF_UK0006_20240812_014407_668_0494592.fits,1723427057.487676,N +UM1,2024, 8,12, 1,46,35.73,2.01,0.162,10.7287901,22.9029090,11.7008659,20.8162408,336.1450558,-14.6246242,334.9462113,-16.5825301,UK0006,-1.306160,51.883100,80.0,0.0,14.033565,PER,FF_UK0006_20240812_014631_136_0498176.fits,1723427195.727856,N +UM1,2024, 8,12, 1,46,56.42,0.35,0.283,91.4087342,23.9952992,90.0046124,20.6388736,270.7722139,19.4999541,269.5259080,16.1026187,UK0006,-1.306160,51.883100,80.0,0.0,12.711356,PER,FF_UK0006_20240812_014651_631_0498688.fits,1723427216.421408,N +UM1,2024, 8,12, 1,47,5.67,1.57,0.201,31.0229495,33.5029474,32.2334281,32.3114815,321.0257789,-0.3906183,319.6792646,-1.1889213,UK0006,-1.306160,51.883100,80.0,0.0,7.779584,spo,FF_UK0006_20240812_014701_879_0498944.fits,1723427225.667360,N +UM1,2024, 8,12, 1,47,6.14,1.73,0.122,67.0445573,42.4566272,66.7148544,40.0182054,299.9080589,20.6994152,298.5575339,18.6044819,UK0006,-1.306160,51.883100,80.0,0.0,20.068279,PER,FF_UK0006_20240812_014701_879_0498944.fits,1723427226.140108,N +UM1,2024, 8,12, 1,50,19.76,-0.15,0.449,46.8124993,48.7507167,47.8461564,38.6936238,316.8806860,18.2390012,311.3457809,9.7012484,UK0006,-1.306160,51.883100,80.0,0.0,22.470239,PER,FF_UK0006_20240812_015016_586_0503808.fits,1723427419.762656,N +UM1,2024, 8,12, 1,52,13.15,0.58,0.122,79.9912169,63.5481064,78.4369272,60.8140585,312.1998304,41.0410074,309.9588166,38.7947363,UK0006,-1.306160,51.883100,80.0,0.0,23.122678,PER,FF_UK0006_20240812_015209_311_0506624.fits,1723427533.153116,N +UM1,2024, 8,12, 1,52,22.03,-0.09,0.283,95.6274747,24.1219889,94.1471421,20.6637525,269.1220909,22.1340363,267.8034875,18.6266191,UK0006,-1.306160,51.883100,80.0,0.0,13.130826,PER,FF_UK0006_20240812_015219_559_0506880.fits,1723427542.027748,N +UM1,2024, 8,12, 1,53,44.75,-0.13,0.244,5.8872534,43.1879866,8.5747011,38.8751535,343.8390810,5.2076418,341.4800034,1.0660553,UK0006,-1.306160,51.883100,80.0,0.0,19.511886,PER,FF_UK0006_20240812_015341_540_0508928.fits,1723427624.754368,N +UM1,2024, 8,12, 1,54,0.07,2.28,0.163,17.1498782,57.4629109,17.8956161,54.3309613,338.4778976,20.2449147,337.3964044,17.2559620,UK0006,-1.306160,51.883100,80.0,0.0,19.434317,spo,FF_UK0006_20240812_015351_788_0509184.fits,1723427640.074144,N +UM1,2024, 8,12, 1,54,26.81,-0.04,0.163,119.3048296,52.0723596,116.5249093,49.4300278,283.3437982,53.7347548,280.7662234,50.9787370,UK0006,-1.306160,51.883100,80.0,0.0,19.523078,PER,FF_UK0006_20240812_015422_531_0509952.fits,1723427666.811112,N +UM1,2024, 8,12, 1,54,39.47,-0.20,0.490,55.4704834,57.3814542,54.8867504,45.6103330,318.0857281,28.2982103,311.3142654,18.2910228,UK0006,-1.306160,51.883100,80.0,0.0,24.025812,PER,FF_UK0006_20240812_015432_779_0510208.fits,1723427679.468224,N +UM1,2024, 8,12, 1,57,5.63,-0.51,0.284,5.2567003,29.8941376,7.1977884,25.8533869,344.3834814,-8.0924899,342.3667057,-12.0069680,UK0006,-1.306160,51.883100,80.0,0.0,15.462511,PER,FF_UK0006_20240812_015656_247_0513792.fits,1723427825.631428,N +UM1,2024, 8,12, 1,57,8.15,0.67,0.163,82.5533365,51.6515566,80.9065167,48.3349790,300.6553822,34.5675407,298.6350781,31.5260457,UK0006,-1.306160,51.883100,80.0,0.0,21.357533,PER,FF_UK0006_20240812_015706_495_0514048.fits,1723427828.145928,N +UM1,2024, 8,12, 1,59,34.88,0.56,0.284,54.8402892,29.7904191,54.9968298,25.2940691,304.2164451,4.7263874,301.8201491,0.9179027,UK0006,-1.306160,51.883100,80.0,0.0,15.849589,PER,FF_UK0006_20240812_015929_963_0517632.fits,1723427974.876000,N +UM1,2024, 8,12, 1,59,53.98,1.10,0.120,86.3511152,59.3606767,89.8001695,58.6470919,307.2691815,41.0635610,305.1400032,42.1249902,UK0006,-1.306160,51.883100,80.0,0.0,15.964609,NDA,FF_UK0006_20240812_015950_459_0518144.fits,1723427993.983264,N +UM1,2024, 8,12, 2, 1,41.98,0.06,0.367,46.5520635,68.5559704,47.6989426,59.7704123,331.1740581,35.2467672,325.1785471,28.0737439,UK0006,-1.306160,51.883100,80.0,0.0,23.959047,PER,FF_UK0006_20240812_020132_936_0520704.fits,1723428101.976028,N +UM1,2024, 8,12, 2, 2,9.16,0.92,0.362,35.1407589,67.9543831,26.9121594,64.9569193,335.3824270,32.6679110,337.6412983,28.6722172,UK0006,-1.306160,51.883100,80.0,0.0,12.284326,spo,FF_UK0006_20240812_020203_679_0521472.fits,1723428129.159064,N +UM1,2024, 8,12, 2, 3,45.69,2.49,0.244,59.8445496,37.8643064,59.6751410,33.3899566,306.0014082,13.7746369,303.6279867,9.9482442,UK0006,-1.306160,51.883100,80.0,0.0,18.355184,PER,FF_UK0006_20240812_020335_909_0523776.fits,1723428225.694788,N +UM1,2024, 8,12, 2, 5,16.48,2.36,0.319,17.7671778,42.8443244,19.6111092,44.1486012,338.0355289,5.9696585,336.9785295,7.5141455,UK0006,-1.306160,51.883100,80.0,0.0,5.847204,SDA,FF_UK0006_20240812_020508_138_0526080.fits,1723428316.475880,N +UM1,2024, 8,12, 2, 6,27.81,0.69,0.122,31.2478984,50.9964798,32.2892077,48.4109833,331.4566197,16.2160691,329.8987312,14.0081871,UK0006,-1.306160,51.883100,80.0,0.0,21.841685,PER,FF_UK0006_20240812_020619_872_0527872.fits,1723428387.805568,N +UM1,2024, 8,12, 2, 6,58.23,-0.50,0.245,93.3095648,48.1938838,90.7422484,42.9450403,294.3188402,37.6042846,290.9007175,32.8107156,UK0006,-1.306160,51.883100,80.0,0.0,22.664116,PER,FF_UK0006_20240812_020650_615_0528640.fits,1723428418.226064,N +UM1,2024, 8,12, 2, 7,48.60,1.78,0.122,39.0147049,33.1642560,39.4143905,31.1782159,319.8553569,1.6563049,318.7690889,-0.0401700,UK0006,-1.306160,51.883100,80.0,0.0,16.547575,PER,FF_UK0006_20240812_020741_854_0529920.fits,1723428468.603672,N +UM1,2024, 8,12, 2,10,56.58,-1.26,0.651,84.7820525,39.8368267,81.3357049,27.9064455,292.9529190,27.4445837,286.7148470,16.6215333,UK0006,-1.306160,51.883100,80.0,0.0,18.852385,PER,FF_UK0006_20240812_021056_561_0534784.fits,1723428656.580888,N +UM1,2024, 8,12, 2,11,47.03,0.73,0.202,70.4914633,26.3364010,70.0882313,23.6022784,293.7536872,9.4563672,292.4310827,7.0286605,UK0006,-1.306160,51.883100,80.0,0.0,13.632365,PER,FF_UK0006_20240812_021137_552_0535808.fits,1723428707.026168,N +UM1,2024, 8,12, 2,12,8.97,1.78,0.122,48.1338239,33.3079980,48.3848568,31.2840071,314.0929948,5.0341343,312.9675135,3.3369156,UK0006,-1.306160,51.883100,80.0,0.0,16.714323,PER,FF_UK0006_20240812_021208_295_0536576.fits,1723428728.965068,N +UM1,2024, 8,12, 2,14,7.33,2.40,0.122,44.6941384,33.0905628,44.9669013,31.3290777,317.0697243,3.5494453,316.0938097,2.0645137,UK0006,-1.306160,51.883100,80.0,0.0,14.617004,PER,FF_UK0006_20240812_021401_020_0539392.fits,1723428847.330140,N +UM1,2024, 8,12, 2,14,11.08,0.49,0.163,55.5031691,44.0168536,56.4251380,40.4816068,314.9283679,17.1745631,312.3736617,14.5435475,UK0006,-1.306160,51.883100,80.0,0.0,22.062600,PER,FF_UK0006_20240812_021401_020_0539392.fits,1723428851.080632,N +UM1,2024, 8,12, 2,14,30.99,0.67,0.243,29.2910659,29.8525298,30.1117909,26.2702064,328.1680745,-4.3180222,326.3685796,-7.5040307,UK0006,-1.306160,51.883100,80.0,0.0,15.029953,PER,FF_UK0006_20240812_021421_516_0539904.fits,1723428870.987132,N +UM1,2024, 8,12, 2,15,32.34,0.44,0.122,103.3765300,31.0770770,102.5324412,29.2196053,274.6601566,31.8989613,273.7467419,30.0634647,UK0006,-1.306160,51.883100,80.0,0.0,16.393448,PER,FF_UK0006_20240812_021523_002_0541440.fits,1723428932.342412,N +UM1,2024, 8,12, 2,17,9.19,1.66,0.122,43.9713205,31.0610831,44.2397771,29.1896759,317.5053105,1.4544731,316.4920079,-0.1356403,UK0006,-1.306160,51.883100,80.0,0.0,15.504585,PER,FF_UK0006_20240812_021705_479_0544000.fits,1723429029.190844,N +UM1,2024, 8,12, 2,18,3.14,0.33,0.162,84.9777754,41.1264379,84.1573343,38.3341002,295.6304050,28.4741074,293.9722177,26.0204099,UK0006,-1.306160,51.883100,80.0,0.0,17.619015,PER,FF_UK0006_20240812_021756_718_0545280.fits,1723429083.136796,N +UM1,2024, 8,12, 2,18,16.58,0.34,0.203,16.6121166,43.0637519,18.4511666,39.3754686,342.1709634,6.0302924,340.1190797,2.6648111,UK0006,-1.306160,51.883100,80.0,0.0,19.358435,PER,FF_UK0006_20240812_021806_966_0545536.fits,1723429096.583440,N +UM1,2024, 8,12, 2,19,17.18,0.22,0.122,347.7833878,48.7828204,350.1366471,47.2950863,2.7201134,11.2034039,1.3144665,9.5375125,UK0006,-1.306160,51.883100,80.0,0.0,17.772015,spo,FF_UK0006_20240812_021908_452_0547072.fits,1723429157.176252,N +UM1,2024, 8,12, 2,20,10.70,-2.22,0.858,355.2337061,58.2765421,10.6604482,40.1464858,357.4408450,20.2281627,346.6386775,2.4965447,UK0006,-1.306160,51.883100,80.0,0.0,24.054247,PER,FF_UK0006_20240812_022009_939_0548608.fits,1723429210.699576,N +UM1,2024, 8,12, 2,20,18.36,2.16,0.162,12.0018271,32.2405495,13.0901861,29.7719414,344.6314557,-5.2193820,343.3668586,-7.5395126,UK0006,-1.306160,51.883100,80.0,0.0,16.255584,PER,FF_UK0006_20240812_022009_939_0548608.fits,1723429218.363868,N +UM1,2024, 8,12, 2,21,24.71,2.09,0.202,56.1775695,24.9461723,56.2580113,22.2973727,306.1941666,1.1630007,304.7726209,-1.0727615,UK0006,-1.306160,51.883100,80.0,0.0,13.103244,PER,FF_UK0006_20240812_022121_673_0550400.fits,1723429284.710016,N +UM1,2024, 8,12, 2,22,38.29,-1.57,0.327,123.7900524,49.1238922,116.7621998,42.8072504,283.7375282,55.0393083,279.0787532,47.6072695,UK0006,-1.306160,51.883100,80.0,0.0,24.426583,PER,FF_UK0006_20240812_022233_407_0552192.fits,1723429358.287104,N +UM1,2024, 8,12, 2,25,9.83,3.09,0.122,53.7858131,32.3603845,54.1069621,30.5309358,312.7144487,6.4914491,311.5543970,5.0462091,UK0006,-1.306160,51.883100,80.0,0.0,15.215975,PER,FF_UK0006_20240812_022507_123_0556032.fits,1723429509.833848,N +UM1,2024, 8,12, 2,27,56.50,0.10,0.323,105.8084785,34.1713479,108.4963910,28.9065671,278.7294133,35.5224981,272.2155735,33.4857728,UK0006,-1.306160,51.883100,80.0,0.0,17.789616,spo,FF_UK0006_20240812_022751_086_0560128.fits,1723429676.503172,N +UM1,2024, 8,12, 2,28,35.97,1.74,0.122,57.8154474,47.2124991,57.9745165,44.9131180,318.9517873,20.7347535,317.4963227,18.8845714,UK0006,-1.306160,51.883100,80.0,0.0,18.870449,PER,FF_UK0006_20240812_022832_077_0561152.fits,1723429715.974848,N +UM1,2024, 8,12, 2,28,53.71,1.25,0.163,81.5612646,38.4314608,80.7661845,35.4982997,298.4186145,24.7126876,296.8114722,22.0992187,UK0006,-1.306160,51.883100,80.0,0.0,18.456141,PER,FF_UK0006_20240812_022852_573_0561664.fits,1723429733.714824,N +UM1,2024, 8,12, 2,29,13.10,-0.28,0.445,41.3920682,27.4713560,42.2903477,21.4051148,321.0707185,-2.7470750,317.8033874,-7.9316143,UK0006,-1.306160,51.883100,80.0,0.0,13.749463,PER,FF_UK0006_20240812_022913_068_0562176.fits,1723429753.102720,N +UM1,2024, 8,12, 2,31,31.15,3.89,0.481,52.8599520,38.8660896,49.8006736,37.8943956,318.2729187,11.7423683,319.9168761,9.7194083,UK0006,-1.306160,51.883100,80.0,0.0,5.383047,spo,FF_UK0006_20240812_023126_288_0565504.fits,1723429891.153248,N +UM1,2024, 8,12, 2,33,50.98,-0.03,0.563,81.5353089,42.9983975,93.9456461,35.1152783,303.1528780,28.0404193,289.0501327,29.1634380,UK0006,-1.306160,51.883100,80.0,0.0,22.077320,spo,FF_UK0006_20240812_023349_757_0569088.fits,1723430030.975096,N +UM1,2024, 8,12, 2,34,55.98,3.25,0.240,82.3319980,46.3082982,81.5324182,45.9099430,305.6284226,30.7958226,305.7552708,30.1218766,UK0006,-1.306160,51.883100,80.0,0.0,2.839006,spo,FF_UK0006_20240812_023451_243_0570624.fits,1723430095.978252,N +UM1,2024, 8,12, 2,36,14.62,2.03,0.121,34.6110581,24.7359678,35.6686708,23.8254703,327.4366101,-7.5971726,326.1990560,-8.1013412,UK0006,-1.306160,51.883100,80.0,0.0,10.964594,spo,FF_UK0006_20240812_023613_225_0572672.fits,1723430174.621256,N +UM1,2024, 8,12, 2,36,41.31,0.28,0.522,50.1174397,28.3079778,58.8610796,25.1840681,316.3947571,1.4106537,308.0739688,2.6324070,UK0006,-1.306160,51.883100,80.0,0.0,16.091988,spo,FF_UK0006_20240812_023633_720_0573184.fits,1723430201.314348,N +UM1,2024, 8,12, 2,36,52.60,1.52,0.121,56.5265148,27.0642428,56.6250222,25.2720401,310.8918283,3.1408211,309.8915430,1.6508458,UK0006,-1.306160,51.883100,80.0,0.0,14.766734,PER,FF_UK0006_20240812_023643_968_0573440.fits,1723430212.603228,N +UM1,2024, 8,12, 2,37,20.51,1.54,0.204,59.2869072,66.9116098,59.1621802,62.5302648,334.1469889,36.8773609,330.7147117,33.5107285,UK0006,-1.306160,51.883100,80.0,0.0,21.522154,PER,FF_UK0006_20240812_023714_711_0574208.fits,1723430240.512236,N +UM1,2024, 8,12, 2,37,43.53,-0.92,0.449,37.9631497,60.8359809,50.0631606,50.3802948,339.5585378,26.7347608,327.6614907,20.6921325,UK0006,-1.306160,51.883100,80.0,0.0,27.701983,spo,FF_UK0006_20240812_023735_207_0574720.fits,1723430263.532996,N +UM1,2024, 8,12, 2,38,57.72,0.07,0.245,73.8241615,51.7459406,72.8027407,46.0691045,315.6967203,30.7534976,311.9163267,26.1027807,UK0006,-1.306160,51.883100,80.0,0.0,23.341256,PER,FF_UK0006_20240812_023857_189_0576768.fits,1723430337.721372,N +UM1,2024, 8,12, 2,39,40.60,-0.84,0.447,96.7561800,41.2333133,93.9389814,32.7048539,293.9633966,34.9723585,288.5998158,27.4369414,UK0006,-1.306160,51.883100,80.0,0.0,19.705993,PER,FF_UK0006_20240812_023938_180_0577792.fits,1723430380.595280,N +UM1,2024, 8,12, 2,39,55.68,1.02,0.122,78.8216607,50.7699922,78.0424757,48.1033833,312.5266186,32.2590830,310.7440732,30.0143675,UK0006,-1.306160,51.883100,80.0,0.0,22.189417,PER,FF_UK0006_20240812_023948_427_0578048.fits,1723430395.679352,N +UM1,2024, 8,12, 2,41,6.53,0.38,0.122,91.7975524,59.1691494,90.4870728,56.8079681,315.3047978,43.2745986,313.1540438,41.3959904,UK0006,-1.306160,51.883100,80.0,0.0,20.172484,PER,FF_UK0006_20240812_024100_162_0579840.fits,1723430466.525356,N +UM1,2024, 8,12, 2,41,30.44,0.55,0.202,104.8546295,25.7855773,103.7958710,23.1412254,275.8207436,28.9948836,274.6061705,26.3942537,UK0006,-1.306160,51.883100,80.0,0.0,13.902539,PER,FF_UK0006_20240812_024120_657_0580352.fits,1723430490.440696,N +UM1,2024, 8,12, 2,41,55.47,0.19,0.243,89.1156855,21.0814605,88.4612893,17.9698789,284.2665274,15.9085066,282.7089109,13.1181665,UK0006,-1.306160,51.883100,80.0,0.0,13.072210,PER,FF_UK0006_20240812_024151_400_0581120.fits,1723430515.473476,N +UM1,2024, 8,12, 2,42,16.63,-0.77,0.285,354.4148076,44.4964446,357.8370688,39.1999131,4.3184056,6.5000679,1.9893251,1.1025433,UK0006,-1.306160,51.883100,80.0,0.0,20.613697,PER,FF_UK0006_20240812_024211_896_0581632.fits,1723430536.625524,N +UM1,2024, 8,12, 2,43,24.91,0.47,0.163,84.2113246,61.6158154,83.6106945,57.4470067,321.4396519,41.4964300,317.2954213,38.7694282,UK0006,-1.306160,51.883100,80.0,0.0,25.600752,spo,FF_UK0006_20240812_024323_630_0583424.fits,1723430604.912960,N +UM1,2024, 8,12, 2,43,28.09,0.37,0.325,56.9298778,40.0461417,57.0330359,33.7648893,319.1377360,14.3801571,315.6734843,9.0927406,UK0006,-1.306160,51.883100,80.0,0.0,19.301676,PER,FF_UK0006_20240812_024323_630_0583424.fits,1723430608.094092,N +UM1,2024, 8,12, 2,44,12.59,-0.09,0.367,32.2621804,61.2745940,35.5150497,53.0947100,344.2049845,26.0441886,339.1325109,19.1111929,UK0006,-1.306160,51.883100,80.0,0.0,22.785933,PER,FF_UK0006_20240812_024404_621_0584448.fits,1723430652.586192,N +UM1,2024, 8,12, 2,44,21.31,1.19,0.121,78.6365222,19.4422088,79.0529679,17.9517679,291.6574480,8.4640432,290.4223479,7.5260363,UK0006,-1.306160,51.883100,80.0,0.0,12.732176,spo,FF_UK0006_20240812_024414_868_0584704.fits,1723430661.305932,N +UM1,2024, 8,12, 2,44,36.19,1.54,0.241,27.3027419,38.7475144,25.5516041,37.1381988,339.8875012,3.7060636,340.7746069,1.7790657,UK0006,-1.306160,51.883100,80.0,0.0,8.799427,KCG,FF_UK0006_20240812_024435_364_0585216.fits,1723430676.187288,N +UM1,2024, 8,12, 2,45,4.68,0.70,0.122,12.5738850,32.6207434,13.4218721,30.7261566,350.4112873,-4.7788378,349.4280162,-6.5541894,UK0006,-1.306160,51.883100,80.0,0.0,16.645704,PER,FF_UK0006_20240812_024455_859_0585728.fits,1723430704.683748,N +UM1,2024, 8,12, 2,46,19.17,1.94,0.477,15.8839210,49.8678303,17.1216888,53.7759512,350.9094412,12.6414236,350.8663623,16.6233206,UK0006,-1.306160,51.883100,80.0,0.0,8.345101,SDA,FF_UK0006_20240812_024617_841_0587776.fits,1723430779.172840,N +UM1,2024, 8,12, 2,48,46.82,1.07,0.122,13.1610071,25.7222642,13.7755479,23.9688552,349.8573716,-11.5391438,349.0289610,-13.1913677,UK0006,-1.306160,51.883100,80.0,0.0,15.130805,PER,FF_UK0006_20240812_024841_309_0591360.fits,1723430926.819444,N +UM1,2024, 8,12, 2,49,43.08,0.37,0.163,62.7751289,68.2739491,62.6354900,64.8306511,337.2009145,38.7801182,334.2479214,36.2554765,UK0006,-1.306160,51.883100,80.0,0.0,21.156685,PER,FF_UK0006_20240812_024942_796_0592896.fits,1723430983.076000,N +UM1,2024, 8,12, 2,50,23.48,0.27,0.285,45.3200672,45.4600835,46.1381790,39.9341640,331.2835119,14.8528137,328.1712516,10.1982873,UK0006,-1.306160,51.883100,80.0,0.0,19.513140,PER,FF_UK0006_20240812_025013_539_0593664.fits,1723431023.478468,N +UM1,2024, 8,12, 2,50,23.81,-0.95,0.367,46.1964846,39.1891435,47.1742740,31.5899535,327.7889522,9.5540228,323.6166012,3.1360020,UK0006,-1.306160,51.883100,80.0,0.0,20.841029,PER,FF_UK0006_20240812_025023_786_0593920.fits,1723431023.810944,N +UM1,2024, 8,12, 2,50,38.10,1.31,0.122,88.2965882,34.8617417,87.6906299,32.9011718,296.8054355,25.7630717,295.7428514,23.9835346,UK0006,-1.306160,51.883100,80.0,0.0,16.623793,PER,FF_UK0006_20240812_025034_034_0594176.fits,1723431038.096888,N +UM1,2024, 8,12, 2,51,46.48,1.29,0.162,93.0345210,25.3137763,92.4888741,22.8475461,286.7648341,21.4651457,285.4352047,19.2798716,UK0006,-1.306160,51.883100,80.0,0.0,15.519511,PER,FF_UK0006_20240812_025145_768_0595968.fits,1723431106.476816,N +UM1,2024, 8,12, 2,52,30.41,0.81,0.285,10.5133136,51.6071927,13.9080938,46.0212760,356.1732770,13.8697883,353.1582496,8.6319340,UK0006,-1.306160,51.883100,80.0,0.0,21.089714,PER,FF_UK0006_20240812_025226_759_0596992.fits,1723431150.408228,N +UM1,2024, 8,12, 2,53,1.33,1.42,0.122,13.5048387,35.0860634,14.3230948,33.0644409,351.9804005,-2.2297921,351.0086216,-4.1281743,UK0006,-1.306160,51.883100,80.0,0.0,17.493368,PER,FF_UK0006_20240812_025257_503_0597760.fits,1723431181.326040,N +UM1,2024, 8,12, 2,53,6.22,1.47,0.121,40.3608265,26.0336661,40.6283664,24.3400592,327.3190187,-4.4344361,326.4125567,-5.8873705,UK0006,-1.306160,51.883100,80.0,0.0,14.086062,PER,FF_UK0006_20240812_025257_503_0597760.fits,1723431186.218836,N +UM1,2024, 8,12, 2,53,55.42,-0.15,0.202,14.8261191,19.9688724,15.5347529,17.7182110,348.6666819,-16.9871863,347.5699849,-19.0910531,UK0006,-1.306160,51.883100,80.0,0.0,11.625101,PER,FF_UK0006_20240812_025348_741_0599040.fits,1723431235.416524,N +UM1,2024, 8,12, 2,53,57.20,1.56,0.402,90.4290125,39.8761974,87.4324375,37.9521879,300.2515458,30.5279479,300.5884447,27.5195794,UK0006,-1.306160,51.883100,80.0,0.0,7.512181,spo,FF_UK0006_20240812_025348_741_0599040.fits,1723431237.199308,N +UM1,2024, 8,12, 2,55,43.72,0.78,0.122,12.3708448,47.3103620,13.6373060,44.9184859,355.2081248,9.7579401,353.9895845,7.5131749,UK0006,-1.306160,51.883100,80.0,0.0,20.846217,PER,FF_UK0006_20240812_025541_466_0601856.fits,1723431343.719000,N +UM1,2024, 8,12, 2,56,3.04,0.68,0.242,12.4849842,18.3836195,13.3040057,15.9740613,351.2416100,-18.8922995,350.0426282,-21.1610577,UK0006,-1.306160,51.883100,80.0,0.0,10.460983,PER,FF_UK0006_20240812_025601_962_0602368.fits,1723431363.037996,N +UM1,2024, 8,12, 2,56,34.57,1.88,0.122,72.6487382,34.8729565,73.6010331,32.4497450,308.7538585,17.3857657,306.5431478,15.9667993,UK0006,-1.306160,51.883100,80.0,0.0,20.919646,spo,FF_UK0006_20240812_025632_705_0603136.fits,1723431394.571660,N +UM1,2024, 8,12, 2,58,30.84,1.20,0.319,37.8948073,61.2141448,42.0135447,63.2337676,344.9838697,27.0629055,344.0726735,29.7299400,UK0006,-1.306160,51.883100,80.0,0.0,8.741973,NDA,FF_UK0006_20240812_025825_430_0605952.fits,1723431510.835676,N +UM1,2024, 8,12, 3, 1,34.44,-0.67,0.323,17.2592034,22.3144252,18.4787964,18.4311248,348.6965561,-14.2769430,346.7344260,-17.8585621,UK0006,-1.306160,51.883100,80.0,0.0,12.514110,PER,FF_UK0006_20240812_030129_889_0610560.fits,1723431694.443424,N +UM1,2024, 8,12, 3, 2,54.85,0.48,0.163,85.7800955,46.2568413,84.7501450,43.0625317,310.6600178,32.4783819,308.5738682,29.7309296,UK0006,-1.306160,51.883100,80.0,0.0,20.128505,PER,FF_UK0006_20240812_030251_871_0612608.fits,1723431774.845508,N +UM1,2024, 8,12, 3, 4,7.14,0.61,0.122,67.3721665,51.2230046,67.1825822,48.7108820,325.0328844,27.6847612,323.3467522,25.6711221,UK0006,-1.306160,51.883100,80.0,0.0,20.589528,PER,FF_UK0006_20240812_030403_605_0614400.fits,1723431847.138648,N +UM1,2024, 8,12, 3, 4,18.07,2.04,0.122,49.4120982,53.1164173,49.7781175,50.4780383,336.1902525,22.8457169,334.5424956,20.6848316,UK0006,-1.306160,51.883100,80.0,0.0,21.654897,PER,FF_UK0006_20240812_030413_853_0614656.fits,1723431858.065948,N +UM1,2024, 8,12, 3, 4,33.19,-0.19,0.244,6.3818224,45.2031984,8.6711262,40.6978642,1.3680097,7.2419325,359.3253821,2.8877946,UK0006,-1.306160,51.883100,80.0,0.0,19.682914,PER,FF_UK0006_20240812_030424_101_0614912.fits,1723431873.193984,N +UM1,2024, 8,12, 3, 6,4.04,-0.16,0.162,74.5747551,26.5116726,74.3478462,24.3164897,304.4893543,11.7870135,303.3024941,9.9159974,UK0006,-1.306160,51.883100,80.0,0.0,13.621051,PER,FF_UK0006_20240812_030556_330_0617216.fits,1723431964.043224,N +UM1,2024, 8,12, 3, 6,35.48,-0.55,0.326,90.1790544,60.0932324,87.0974268,53.1441278,323.3629111,43.0745254,317.2482560,37.6451849,UK0006,-1.306160,51.883100,80.0,0.0,21.945303,PER,FF_UK0006_20240812_030627_073_0617984.fits,1723431995.476016,N +UM1,2024, 8,12, 3, 7,28.96,1.07,0.122,76.6575514,64.1502450,75.6385874,61.9645156,332.8696725,40.2348394,331.0547832,38.4967566,UK0006,-1.306160,51.883100,80.0,0.0,18.335557,PER,FF_UK0006_20240812_030728_560_0619520.fits,1723432048.962092,N +UM1,2024, 8,12, 3, 8,23.00,0.91,0.163,3.6972518,58.8900493,6.2506814,56.1307429,4.8135712,20.8138313,3.1960835,18.1371006,UK0006,-1.306160,51.883100,80.0,0.0,18.952048,PER,FF_UK0006_20240812_030819_798_0620800.fits,1723432103.000304,N +UM1,2024, 8,12, 3, 8,48.05,0.49,0.323,73.4581725,22.7911644,73.0284126,18.7347933,303.7196818,8.2066210,301.6170173,4.7071850,UK0006,-1.306160,51.883100,80.0,0.0,12.604152,PER,FF_UK0006_20240812_030840_294_0621312.fits,1723432128.050488,N +UM1,2024, 8,12, 3, 9,45.50,1.74,0.163,51.3786750,63.9559725,52.0616104,60.4321945,343.1935432,32.5273276,340.5546037,29.8035746,UK0006,-1.306160,51.883100,80.0,0.0,21.713954,PER,FF_UK0006_20240812_030941_780_0622848.fits,1723432185.503808,N +UM1,2024, 8,12, 3,11,38.55,-0.74,0.285,351.7033001,57.1009246,356.3228733,51.7677115,12.4338568,19.1967738,10.0157002,13.6971843,UK0006,-1.306160,51.883100,80.0,0.0,20.952974,PER,FF_UK0006_20240812_031134_505_0625664.fits,1723432298.545332,N +UM1,2024, 8,12, 3,13,16.33,0.61,0.121,76.2042461,25.7018480,76.0542607,24.0209657,304.6057735,12.0387863,303.6683145,10.6252380,UK0006,-1.306160,51.883100,80.0,0.0,13.889340,PER,FF_UK0006_20240812_031306_735_0627968.fits,1723432396.328528,N +UM1,2024, 8,12, 3,15,13.17,0.26,0.163,31.0423530,43.3092109,31.8476707,40.0784347,346.2477662,8.9066567,344.6164033,6.0463589,UK0006,-1.306160,51.883100,80.0,0.0,20.175613,PER,FF_UK0006_20240812_031509_708_0631040.fits,1723432513.168040,N +UM1,2024, 8,12, 3,19,40.85,0.96,0.122,40.6243472,46.3021705,40.9452156,44.1175232,342.0446802,14.1906644,340.9040757,12.2959111,UK0006,-1.306160,51.883100,80.0,0.0,18.014038,PER,FF_UK0006_20240812_031936_149_0637696.fits,1723432780.847488,N +UM1,2024, 8,12, 3,20,33.07,-0.39,0.244,19.6001638,64.6508386,23.2078347,59.8657387,0.5869344,27.5188719,357.4681806,23.3042805,UK0006,-1.306160,51.883100,80.0,0.0,20.758826,PER,FF_UK0006_20240812_032027_387_0638976.fits,1723432833.068084,N +UM1,2024, 8,12, 3,23,21.07,-1.12,0.326,112.3218652,56.1582837,108.1880800,49.2473780,314.5161199,51.6303793,306.9677666,46.2006798,UK0006,-1.306160,51.883100,80.0,0.0,22.558749,PER,FF_UK0006_20240812_032311_351_0643072.fits,1723433001.071076,N diff --git a/archive/lambdas/ftpToUkmon/tests/localTest.ps1 b/archive/lambdas/ftpToUkmon/tests/localTest.ps1 index 1773d736..dd10816e 100644 --- a/archive/lambdas/ftpToUkmon/tests/localTest.ps1 +++ b/archive/lambdas/ftpToUkmon/tests/localTest.ps1 @@ -1,7 +1,7 @@ # test the lambda -sam build --profile ukmonshared -sam local invoke --profile ukmonshared -e ./tests/testEvent.json +Remove-Item ./tests/new_data.txt +sam local invoke --profile ukmda_admin -e ./tests/testEvent.json start-sleep 1 -aws s3 cp s3://ukmda-shared/matches/single/new/ukmon_UK0006_20221122_164325_836988.csv ./tests/new_data.txt +aws s3 cp s3://ukmda-shared/matches/single/new/ukmda_UK0006_20240811_201327_827902.csv ./tests/new_data.txt --profile ukmda_admin bash -c "diff ./tests/expected_results.txt ./tests/new_data.txt" \ No newline at end of file diff --git a/archive/lambdas/ftpToUkmon/tests/new_data.txt b/archive/lambdas/ftpToUkmon/tests/new_data.txt index 255f7819..a1a77ccb 100644 --- a/archive/lambdas/ftpToUkmon/tests/new_data.txt +++ b/archive/lambdas/ftpToUkmon/tests/new_data.txt @@ -1,67 +1,342 @@ -UM1,2022,11,22,17,36,22.81,2.10,0.602,84.5392584,28.1650490,83.6377429,25.3922444,256.6340188,18.6370241,255.4136192,15.9963304,UK0006,-1.306160,51.883100,80.0,0.0,4.790659,spo,FF_UK0006_20221122_173615_936_0070656.fits,1669138582.805948 -UM1,2022,11,22,17,36,22.36,4.09,0.201,87.3375349,36.7183085,86.9026998,35.4280198,260.9252822,26.5770427,260.2261380,25.3970110,UK0006,-1.306160,51.883100,80.0,0.0,6.646281,spo,FF_UK0006_20221122_173615_936_0070656.fits,1669138582.358276 -UM1,2022,11,22,19, 0,40.12,1.99,0.282,76.5948618,49.3833517,68.6791135,48.1312223,298.4506791,30.2683061,301.9068352,25.8542247,UK0006,-1.306160,51.883100,80.0,0.0,19.018337,QUA,FF_UK0006_20221122_190039_988_0169216.fits,1669143640.122192 -UM1,2022,11,22,19, 3,0.12,-1.26,0.520,349.8448047,54.9247706,346.5097446,52.4704385,352.2786169,17.1407675,354.6531340,14.9679660,UK0006,-1.306160,51.883100,80.0,0.0,6.056609,spo,FF_UK0006_20221122_190255_762_0172544.fits,1669143780.122416 -UM1,2022,11,22,19, 9,6.21,2.15,1.120,51.9425690,63.5235964,61.3015738,63.1870385,323.1783527,32.3162380,318.9800441,34.6428413,UK0006,-1.306160,51.883100,80.0,0.0,3.752738,spo,FF_UK0006_20221122_190903_441_0181504.fits,1669144146.205000 -UM1,2022,11,22,19,24,4.61,1.68,0.882,13.1266255,29.7418001,11.7951621,27.0112452,340.0015438,-7.5648845,340.8076778,-10.4284057,UK0006,-1.306160,51.883100,80.0,0.0,3.370988,spo,FF_UK0006_20221122_192402_545_0203776.fits,1669145044.611224 -UM1,2022,11,22,19,36,18.95,1.74,1.888,43.7600658,30.7561887,54.5775466,21.5202717,318.0684385,1.1013449,305.1897203,-2.5346243,UK0006,-1.306160,51.883100,80.0,0.0,7.086049,spo,FF_UK0006_20221122_193616_997_0221696.fits,1669145778.948732 -UM1,2022,11,22,19,36,59.26,1.82,0.482,32.3502859,26.4843877,36.3515017,24.3126369,325.8834580,-6.6545736,321.7076311,-7.4196787,UK0006,-1.306160,51.883100,80.0,0.0,8.734927,NOO,FF_UK0006_20221122_193657_829_0222720.fits,1669145819.262808 -UM1,2022,11,22,19,43,31.97,2.29,0.241,80.0322609,20.6105905,80.1841845,19.4890740,286.8570141,10.1916965,286.0417372,9.3972521,UK0006,-1.306160,51.883100,80.0,0.0,4.690997,NTA,FF_UK0006_20221122_194327_249_0232448.fits,1669146211.966188 -UM1,2022,11,22,19,43,37.76,3.42,0.322,32.6326869,62.4862240,28.3138694,59.5721149,340.1062640,27.2342715,341.1602010,23.7767895,UK0006,-1.306160,51.883100,80.0,0.0,11.143198,spo,FF_UK0006_20221122_194337_474_0232704.fits,1669146217.757896 -UM1,2022,11,22,19,49,33.41,4.24,0.239,59.8877695,66.5071109,58.6510210,67.2318666,332.3775314,36.7331631,333.4333898,36.9536362,UK0006,-1.306160,51.883100,80.0,0.0,3.647108,spo,FF_UK0006_20221122_194925_886_0241408.fits,1669146573.407520 -UM1,2022,11,22,20, 9,53.16,2.75,0.362,78.0591129,34.3283474,75.7258545,32.4785552,303.8055492,19.7677589,304.1594433,17.1025837,UK0006,-1.306160,51.883100,80.0,0.0,7.420451,spo,FF_UK0006_20221122_200945_371_0271872.fits,1669147793.157412 -UM1,2022,11,22,20,26,15.40,3.13,0.161,57.4205638,37.7250921,58.3784888,36.5015248,323.9844335,12.6207125,322.6544099,11.9959573,UK0006,-1.306160,51.883100,80.0,0.0,8.954575,NTA,FF_UK0006_20221122_202609_136_0296448.fits,1669148775.402004 -UM1,2022,11,22,20,31,12.80,3.70,0.160,85.1663195,48.9086376,86.1299172,48.2700358,316.1475853,33.9700810,315.0614193,34.0153422,UK0006,-1.306160,51.883100,80.0,0.0,5.625387,spo,FF_UK0006_20221122_203106_349_0303872.fits,1669149072.801960 -UM1,2022,11,22,20,32,53.15,1.64,0.322,87.0936293,30.8793949,82.9451601,29.8554009,300.9958984,22.1433929,303.1618031,19.0203993,UK0006,-1.306160,51.883100,80.0,0.0,11.565202,QUA,FF_UK0006_20221122_203249_205_0306432.fits,1669149173.152060 -UM1,2022,11,22,20,37,33.75,2.81,0.522,50.4702567,39.3260641,56.1149830,37.5100393,332.4321714,11.2260134,327.6030395,11.8917329,UK0006,-1.306160,51.883100,80.0,0.0,9.161065,spo,FF_UK0006_20221122_203725_529_0313344.fits,1669149453.753700 -UM1,2022,11,22,20,46,57.30,2.04,0.201,97.8484802,28.0983882,97.6992918,26.2454899,294.8901931,26.4173467,293.6035356,24.9665263,UK0006,-1.306160,51.883100,80.0,0.0,9.217829,NOO,FF_UK0006_20221122_204650_959_0327424.fits,1669150017.304748 -UM1,2022,11,22,20,48,52.96,4.10,0.241,86.6126182,23.5599972,86.9014153,22.4833354,300.2819141,16.3223085,299.3526700,15.6664170,UK0006,-1.306160,51.883100,80.0,0.0,4.602100,AND,FF_UK0006_20221122_204846_244_0330240.fits,1669150132.957028 -UM1,2022,11,22,20,59,0.87,2.01,0.760,18.1165557,59.7687284,25.4670815,61.0913698,5.5107361,22.6047926,2.0416679,24.7913695,UK0006,-1.306160,51.883100,80.0,0.0,5.073054,spo,FF_UK0006_20221122_205859_108_0345600.fits,1669150740.872028 -UM1,2022,11,22,21,30,20.03,1.69,0.320,87.4897829,36.9402033,88.6828447,36.5415244,319.6484594,26.8217165,318.5657295,27.1960802,UK0006,-1.306160,51.883100,80.0,0.0,3.233743,spo,FF_UK0006_20221122_213013_648_0390912.fits,1669152620.030020 -UM1,2022,11,22,21,54,42.08,4.07,0.201,85.3579816,42.4646340,86.1733563,40.4831891,331.4725735,29.6244350,329.3784120,28.6492742,UK0006,-1.306160,51.883100,80.0,0.0,10.292001,NTA,FF_UK0006_20221122_215437_063_0425984.fits,1669154082.081140 -UM1,2022,11,22,22,35,21.77,1.12,1.005,89.6046161,27.4094875,92.5589158,20.0429079,327.4592227,21.0018330,320.2039538,17.1892509,UK0006,-1.306160,51.883100,80.0,0.0,7.805353,NTA,FF_UK0006_20221122_223513_741_0485632.fits,1669156521.770080 -UM1,2022,11,22,22,41,4.45,3.74,0.322,93.5849645,40.8510699,94.7792346,38.2624072,336.7573098,32.9431376,333.7770904,31.8426803,UK0006,-1.306160,51.883100,80.0,0.0,8.538279,AND,FF_UK0006_20221122_224103_272_0494336.fits,1669156864.449260 -UM1,2022,11,22,22,42,53.29,2.26,0.280,35.4422363,31.5909534,33.6423086,30.8927923,11.7094380,-0.9295877,12.9081070,-2.1223293,UK0006,-1.306160,51.883100,80.0,0.0,6.031907,spo,FF_UK0006_20221122_224244_660_0496896.fits,1669156973.290064 -UM1,2022,11,22,22,48,13.65,1.79,0.922,9.8604097,49.3296059,7.6715817,45.2326595,36.1116792,11.5600217,37.2174446,7.3404691,UK0006,-1.306160,51.883100,80.0,0.0,4.724404,AND,FF_UK0006_20221122_224805_483_0504832.fits,1669157293.652968 -UM1,2022,11,22,22,48,15.40,1.07,0.284,347.3196083,53.7783591,0.0111879,54.4640696,50.4226537,16.1915316,42.6544128,16.3471700,UK0006,-1.306160,51.883100,80.0,0.0,26.305466,AMO,FF_UK0006_20221122_224805_483_0504832.fits,1669157295.403068 -UM1,2022,11,22,23, 9,50.40,3.82,0.440,92.8088412,48.0874937,94.9724526,46.9775348,351.0896709,37.2778261,348.8448129,37.7116885,UK0006,-1.306160,51.883100,80.0,0.0,4.163683,spo,FF_UK0006_20221122_230941_466_0537088.fits,1669158590.397832 -UM1,2022,11,22,23,12,1.68,1.48,0.161,116.8447754,52.3332056,116.7210503,51.4020832,345.0923229,52.4768287,343.7789724,52.0020757,UK0006,-1.306160,51.883100,80.0,0.0,5.815775,spo,FF_UK0006_20221122_231154_196_0540416.fits,1669158721.677692 -UM1,2022,11,22,23,15,41.72,0.39,0.246,57.0323427,66.2695483,60.9291850,59.2885086,24.9358915,35.8069482,17.9520516,31.5494820,UK0006,-1.306160,51.883100,80.0,0.0,29.317678,spo,FF_UK0006_20221122_231539_718_0546048.fits,1669158941.719776 -UM1,2022,11,22,23,25,0.29,2.00,0.205,31.3907290,65.1399077,33.1212232,59.5626955,37.3012252,29.4938559,34.1470581,24.6094208,UK0006,-1.306160,51.883100,80.0,0.0,27.536247,spo,FF_UK0006_20221122_232453_049_0559872.fits,1669159500.290684 -UM1,2022,11,22,23,27,38.91,1.00,0.327,23.3579117,55.0701701,33.8164778,48.6220915,38.6686307,18.6965942,30.1973774,14.5575897,UK0006,-1.306160,51.883100,80.0,0.0,27.867142,LEO,FF_UK0006_20221122_232738_343_0563968.fits,1669159658.911536 -UM1,2022,11,22,23,29,11.17,1.78,0.520,11.9080114,57.2995439,17.3338626,58.1550522,46.1237919,19.6185738,43.2324837,20.9428636,UK0006,-1.306160,51.883100,80.0,0.0,5.798601,spo,FF_UK0006_20221122_232910_570_0566272.fits,1669159751.174616 -UM1,2022,11,22,23,32,6.32,2.35,0.163,359.3343595,53.8373561,3.0508478,50.5652131,54.0602246,15.7219192,51.6686054,12.4809214,UK0006,-1.306160,51.883100,80.0,0.0,24.398808,spo,FF_UK0006_20221122_233204_799_0570624.fits,1669159926.322816 -UM1,2022,11,22,23,35,18.52,0.83,0.202,112.6246234,37.9525190,109.7190534,36.3592127,335.4168925,42.1520335,335.8059005,39.3567790,UK0006,-1.306160,51.883100,80.0,0.0,13.893068,LEO,FF_UK0006_20221122_233509_223_0575232.fits,1669160118.515636 -UM1,2022,11,22,23,38,47.67,0.12,0.647,69.5060771,28.5823811,66.4528468,20.6165363,358.4768484,10.7559874,356.1339495,2.6489837,UK0006,-1.306160,51.883100,80.0,0.0,13.035517,spo,FF_UK0006_20221122_233846_354_0580608.fits,1669160327.666712 -UM1,2022,11,22,23,41,30.61,2.84,0.161,27.8405110,24.3658492,28.5115638,23.6812074,30.4217169,-9.9401551,29.6216190,-10.4125880,UK0006,-1.306160,51.883100,80.0,0.0,5.714672,spo,FF_UK0006_20221122_234130_336_0584704.fits,1669160490.610652 -UM1,2022,11,22,23,43,18.19,2.20,0.599,70.1499736,65.4936172,77.8908145,65.5570347,26.3382461,38.9718010,23.7633683,41.5029692,UK0006,-1.306160,51.883100,80.0,0.0,5.347142,spo,FF_UK0006_20221122_234312_789_0587264.fits,1669160598.190804 -UM1,2022,11,22,23,45,27.14,0.30,0.325,43.7527408,68.2020868,36.0785849,61.8880405,38.8655905,34.3975905,38.8012127,27.3140405,UK0006,-1.306160,51.883100,80.0,0.0,21.823866,QUA,FF_UK0006_20221122_234526_781_0590592.fits,1669160727.141088 -UM1,2022,11,22,23,54,58.77,0.83,0.886,63.7089972,38.0674021,66.0997694,30.4143910,12.2444670,15.6555315,6.0757370,10.5227324,UK0006,-1.306160,51.883100,80.0,0.0,8.914066,spo,FF_UK0006_20221122_235450_427_0604672.fits,1669161298.772324 -UM1,2022,11,23, 1,23,15.80,2.47,0.162,77.7107796,32.0855709,77.8809038,29.0587987,21.0907163,17.8542244,18.9812813,15.5959783,UK0006,-1.306160,51.883100,80.0,0.0,18.649083,LEO,FF_UK0006_20221123_012314_607_0737024.fits,1669166595.795356 -UM1,2022,11,23, 1,26,21.09,1.49,0.964,67.4953671,26.9021611,70.2901166,21.5588157,25.9142507,8.3537777,20.7053043,5.4791110,UK0006,-1.306160,51.883100,80.0,0.0,6.136719,NTA,FF_UK0006_20221123_012621_051_0741632.fits,1669166781.085380 -UM1,2022,11,23, 1,30,40.14,1.70,0.161,7.4784012,36.1135815,7.3062533,35.3987233,77.3359234,-1.7601612,77.4190958,-2.4838604,UK0006,-1.306160,51.883100,80.0,0.0,4.537425,NTA,FF_UK0006_20221123_013039_917_0748032.fits,1669167040.136312 -UM1,2022,11,23, 1,37,16.35,1.32,1.076,109.0211934,53.0275449,120.7697160,52.7293021,25.8285265,48.5515433,20.4697032,54.8173952,UK0006,-1.306160,51.883100,80.0,0.0,6.584653,spo,FF_UK0006_20221123_013709_309_0757760.fits,1669167436.352736 -UM1,2022,11,23, 1,59,11.31,2.38,0.121,57.3791222,28.2359146,57.5689135,26.5440224,42.4191909,4.5342725,41.3910191,3.1787103,UK0006,-1.306160,51.883100,80.0,0.0,14.001097,spo,FF_UK0006_20221123_015908_832_0790528.fits,1669168751.306136 -UM1,2022,11,23, 2, 1,38.87,2.13,0.202,71.0134452,25.0001131,70.2851543,23.0435455,31.0430847,8.6551931,30.4267256,6.6812426,UK0006,-1.306160,51.883100,80.0,0.0,10.243180,spo,FF_UK0006_20221123_020133_276_0794112.fits,1669168898.871456 -UM1,2022,11,23, 2, 9,3.72,0.98,0.163,104.9977534,38.3194023,102.8502298,36.8071071,19.3955722,37.8173723,19.3980407,35.5404732,UK0006,-1.306160,51.883100,80.0,0.0,14.009968,LEO,FF_UK0006_20221123_020858_709_0805120.fits,1669169343.724020 -UM1,2022,11,23, 2,10,16.39,2.91,0.162,58.0916651,33.7824171,59.8808993,31.1825535,47.6161020,9.5722014,44.9177771,8.1844972,UK0006,-1.306160,51.883100,80.0,0.0,18.537174,LEO,FF_UK0006_20221123_021010_482_0806912.fits,1669169416.391368 -UM1,2022,11,23, 2,13,56.07,1.32,0.121,104.0095852,22.2240200,103.4000202,20.7636446,7.8614392,25.8427448,7.2630542,24.3729518,UK0006,-1.306160,51.883100,80.0,0.0,12.908563,spo,FF_UK0006_20221123_021355_923_0812544.fits,1669169636.070744 -UM1,2022,11,23, 2,14,21.65,1.50,0.202,66.3686708,23.1172113,66.4753078,20.5391814,36.6143360,4.6647754,35.0689536,2.5971516,UK0006,-1.306160,51.883100,80.0,0.0,12.762608,spo,FF_UK0006_20221123_021416_372_0813056.fits,1669169661.649660 -UM1,2022,11,23, 2,15,51.38,3.37,0.481,75.2409419,27.0282111,75.9703363,25.5759339,32.7555291,12.5590749,31.3195454,11.8101060,UK0006,-1.306160,51.883100,80.0,0.0,3.307140,spo,FF_UK0006_20221123_021548_622_0815360.fits,1669169751.375020 -UM1,2022,11,23, 2,19,16.01,1.65,0.161,61.5116044,25.1900458,63.4859481,23.3430094,42.6935121,3.9240474,40.1710210,3.3671813,UK0006,-1.306160,51.883100,80.0,0.0,15.978137,spo,FF_UK0006_20221123_021913_570_0820480.fits,1669169956.006460 -UM1,2022,11,23, 2,19,56.34,2.52,0.876,37.0290574,44.6102624,40.0227001,49.4783115,69.7671110,11.6368866,69.8336671,16.9136255,UK0006,-1.306160,51.883100,80.0,0.0,6.023217,spo,FF_UK0006_20221123_021954_558_0821504.fits,1669169996.337220 -UM1,2022,11,23, 2,20,4.23,1.59,0.240,59.4305191,35.6684000,62.2792138,34.9643789,50.1583739,11.7540187,47.7791604,12.4481753,UK0006,-1.306160,51.883100,80.0,0.0,10.097156,spo,FF_UK0006_20221123_021954_558_0821504.fits,1669170004.225680 -UM1,2022,11,23, 2,20,28.27,-1.02,0.693,86.1094803,54.2677063,91.0041611,36.3753526,48.2701008,37.8931876,29.6572981,28.3796294,UK0006,-1.306160,51.883100,80.0,0.0,26.274169,LEO,FF_UK0006_20221123_022025_302_0822272.fits,1669170028.270560 -UM1,2022,11,23, 2,20,43.74,1.67,0.121,58.3149426,31.2554107,58.4662298,29.6976344,48.7199746,7.5300651,47.7781238,6.2776694,UK0006,-1.306160,51.883100,80.0,0.0,12.882638,GEM,FF_UK0006_20221123_022035_550_0822528.fits,1669170043.741528 -UM1,2022,11,23, 2,21,33.94,0.95,0.203,51.6069976,47.6756436,56.8230045,43.8468822,62.2339975,18.8782496,56.8573576,17.5417804,UK0006,-1.306160,51.883100,80.0,0.0,25.970147,LEO,FF_UK0006_20221123_022126_806_0823808.fits,1669170093.943460 -UM1,2022,11,23, 2,21,39.55,2.97,0.121,71.3821000,26.2340696,72.6548575,25.3441578,36.5283892,9.8464480,35.0566986,9.8146064,UK0006,-1.306160,51.883100,80.0,0.0,12.035567,AMO,FF_UK0006_20221123_022137_039_0824064.fits,1669170099.553384 -UM1,2022,11,23, 2,22,35.55,4.44,0.241,35.8050999,32.4005259,35.4989224,31.7448107,66.7898333,-0.0635089,66.7969881,-0.7686584,UK0006,-1.306160,51.883100,80.0,0.0,2.932166,spo,FF_UK0006_20221123_022228_282_0825344.fits,1669170155.551444 -UM1,2022,11,23, 2,23,13.37,-0.18,0.652,130.0906626,43.2784673,116.8420629,33.9503858,12.1165194,55.9716751,10.4196193,42.1120913,UK0006,-1.306160,51.883100,80.0,0.0,21.329471,spo,FF_UK0006_20221123_022309_290_0826368.fits,1669170193.371752 -UM1,2022,11,23, 2,27,54.08,2.92,0.122,105.7749582,58.7071168,106.3616722,54.8641227,47.5157423,49.4167594,42.0610739,48.0279979,UK0006,-1.306160,51.883100,80.0,0.0,31.509893,spo,FF_UK0006_20221123_022745_958_0833280.fits,1669170474.078956 -UM1,2022,11,23, 3,26,17.94,0.10,0.204,103.9517115,60.1451365,103.1280171,53.7062553,64.7462117,49.1503487,56.5605074,45.8159278,UK0006,-1.306160,51.883100,80.0,0.0,31.560159,spo,FF_UK0006_20221123_032614_257_0920832.fits,1669173977.937476 -UM1,2022,11,23, 3,58,53.41,3.53,0.319,64.1954834,61.1676878,61.9515414,62.5426799,88.9378154,34.0311821,91.0002201,34.3535463,UK0006,-1.306160,51.883100,80.0,0.0,5.442345,NTA,FF_UK0006_20221123_035844_601_0969472.fits,1669175933.406672 -UM1,2022,11,23, 4, 7,18.42,1.28,0.122,123.7988729,40.8338252,123.0113809,38.5001570,39.2167450,50.7354153,36.8953253,48.8466082,UK0006,-1.306160,51.883100,80.0,0.0,19.793733,spo,FF_UK0006_20221123_040716_979_0982272.fits,1669176438.424952 -UM1,2022,11,23, 4,18,27.16,2.24,0.122,49.4356865,59.6736476,52.0098279,57.6546999,99.5687480,28.4514901,97.0583727,27.4775809,UK0006,-1.306160,51.883100,80.0,0.0,19.893215,spo,FF_UK0006_20221123_041825_114_0998912.fits,1669177107.161208 -UM1,2022,11,23, 4,21,58.01,0.30,0.284,47.5838287,61.8900927,54.7543077,57.3378268,102.6712424,29.8532820,96.3587399,28.0406349,UK0006,-1.306160,51.883100,80.0,0.0,20.476248,spo,FF_UK0006_20221123_042150_009_1004032.fits,1669177318.014320 -UM1,2022,11,23, 4,24,5.94,-1.04,0.325,109.7530080,43.9320810,110.2746694,36.4117909,56.1065772,44.1141813,47.8707389,39.7278752,UK0006,-1.306160,51.883100,80.0,0.0,23.162040,spo,FF_UK0006_20221123_042403_886_1007360.fits,1669177445.935588 -UM1,2022,11,23, 4,31,18.05,0.47,0.202,1.7042160,51.6608397,0.7434400,48.0291196,127.5685106,13.5539214,128.1519901,9.9142408,UK0006,-1.306160,51.883100,80.0,0.0,18.217818,spo,FF_UK0006_20221123_043115_927_1018112.fits,1669177878.053012 +UM1,2024, 8,11,20,39,18.07,0.42,0.280,31.2233302,19.5645265,30.1843070,19.4514384,239.1614462,-13.5282147,240.0785308,-13.9529514,UK0006,-1.306160,51.883100,80.0,0.0,3.525783,spo,FF_UK0006_20240811_203915_511_0037632.fits,1723408758.070944,N +UM1,2024, 8,11,20,40,11.70,-0.32,0.160,98.2682110,18.0239905,98.8191938,17.0738537,184.6082975,19.1380153,183.5363863,18.7512770,UK0006,-1.306160,51.883100,80.0,0.0,6.761774,spo,FF_UK0006_20240811_204006_749_0038912.fits,1723408811.701248,N +UM1,2024, 8,11,20,42,47.35,1.34,0.679,22.7079965,57.6650690,22.4430422,59.4844517,257.4064098,21.1119617,258.0546322,22.8356372,UK0006,-1.306160,51.883100,80.0,0.0,2.690289,spo,FF_UK0006_20240811_204240_465_0042752.fits,1723408967.351860,N +UM1,2024, 8,11,20,42,50.31,-0.67,0.368,56.0665618,60.6900310,48.2549114,51.8886179,241.8720310,31.1549177,240.5578595,21.4302613,UK0006,-1.306160,51.883100,80.0,0.0,26.650293,PER,FF_UK0006_20240811_204240_465_0042752.fits,1723408970.311376,N +UM1,2024, 8,11,20,42,50.73,-0.75,0.449,47.6119544,50.9638995,42.1012979,40.6785018,240.4463226,20.4278092,239.1749571,9.5255645,UK0006,-1.306160,51.883100,80.0,0.0,24.451186,PER,FF_UK0006_20240811_204250_712_0043008.fits,1723408970.726720,N +UM1,2024, 8,11,20,43,24.53,0.56,0.121,102.5184438,17.4723705,102.1818761,16.7806682,181.7436249,21.3363031,181.5287863,20.6004556,UK0006,-1.306160,51.883100,80.0,0.0,6.322978,KCG,FF_UK0006_20240811_204321_456_0043776.fits,1723409004.526820,N +UM1,2024, 8,11,20,45,12.01,-0.17,0.409,30.3217387,67.0153930,28.0187332,55.3698036,257.4905074,31.0798199,254.3237805,19.7370154,UK0006,-1.306160,51.883100,80.0,0.0,28.590374,PER,FF_UK0006_20240811_204503_933_0046336.fits,1723409112.013396,N +UM1,2024, 8,11,20,52,3.12,1.35,0.282,50.0764386,26.9027495,48.4229356,23.9855292,229.3661408,0.1557906,229.3220911,-3.1209002,UK0006,-1.306160,51.883100,80.0,0.0,11.602581,PER,FF_UK0006_20240811_205153_840_0056576.fits,1723409523.115512,N +UM1,2024, 8,11,20,52,47.80,1.08,0.160,90.2817331,14.4889277,89.7459557,14.5715373,191.5491714,11.5240174,192.0139133,11.2616193,UK0006,-1.306160,51.883100,80.0,0.0,3.282471,spo,FF_UK0006_20240811_205245_079_0057856.fits,1723409567.797056,N +UM1,2024, 8,11,20,56,29.05,1.81,0.367,41.2817854,51.0962933,38.7194390,43.0942534,247.6835123,18.7199253,245.9271944,10.7094216,UK0006,-1.306160,51.883100,80.0,0.0,22.329186,PER,FF_UK0006_20240811_205620_280_0063232.fits,1723409789.054360,N +UM1,2024, 8,11,21, 0,13.96,1.53,0.323,58.2269469,30.5127968,55.4150169,26.6988598,227.0315520,6.8599892,227.1668840,2.3192648,UK0006,-1.306160,51.883100,80.0,0.0,14.047643,PER,FF_UK0006_20240811_210005_729_0068864.fits,1723410013.961168,N +UM1,2024, 8,11,21, 1,16.13,2.07,0.283,67.7904778,30.3955469,64.7839513,27.1837727,220.2894292,11.3508596,220.6149514,7.2093686,UK0006,-1.306160,51.883100,80.0,0.0,14.673209,PER,FF_UK0006_20240811_210107_215_0070400.fits,1723410076.126224,N +UM1,2024, 8,11,21, 3,16.75,-1.20,0.609,348.5320952,53.9726457,4.9511400,48.1124264,282.3279943,16.2879198,271.9774970,10.0850064,UK0006,-1.306160,51.883100,80.0,0.0,19.419094,spo,FF_UK0006_20240811_210310_187_0073472.fits,1723410196.748244,N +UM1,2024, 8,11,21, 5,19.09,0.42,0.449,65.7713154,57.7212540,56.4522228,47.7409368,240.7947194,31.9979267,239.0449420,20.6639383,UK0006,-1.306160,51.883100,80.0,0.0,25.476419,PER,FF_UK0006_20240811_210513_160_0076544.fits,1723410319.088308,N +UM1,2024, 8,11,21, 8,44.57,0.78,0.366,10.1396764,42.4806208,12.6137234,35.8303160,269.2137034,4.7724010,266.4995221,-1.5941253,UK0006,-1.306160,51.883100,80.0,0.0,18.906647,PER,FF_UK0006_20240811_210838_113_0081664.fits,1723410524.569172,N +UM1,2024, 8,11,21, 9,48.46,3.10,0.365,61.6014085,40.5040423,57.2255984,34.5104921,232.6679426,16.7248101,232.2899477,9.8108246,UK0006,-1.306160,51.883100,80.0,0.0,18.944481,PER,FF_UK0006_20240811_210939_599_0083200.fits,1723410588.462328,N +UM1,2024, 8,11,21,11,50.35,2.66,0.443,54.9731478,41.8712901,53.9521823,38.6129085,238.2985299,15.1476360,237.2543350,11.9554487,UK0006,-1.306160,51.883100,80.0,0.0,7.563631,spo,FF_UK0006_20240811_211142_571_0086272.fits,1723410710.353556,N +UM1,2024, 8,11,21,12,24.81,1.82,0.122,25.5327189,62.8342277,26.2570584,59.7491885,264.9210482,26.4658887,263.5415296,23.6241351,UK0006,-1.306160,51.883100,80.0,0.0,25.348328,PER,FF_UK0006_20240811_211223_562_0087296.fits,1723410744.805224,N +UM1,2024, 8,11,21,13,35.33,2.43,0.161,26.7599032,26.8658630,27.0337509,25.1986065,253.9966989,-7.8242386,253.2824235,-9.3541290,UK0006,-1.306160,51.883100,80.0,0.0,10.438823,PER,FF_UK0006_20240811_211335_295_0089088.fits,1723410815.328112,N +UM1,2024, 8,11,21,16,51.71,2.33,0.282,15.6479406,22.6765415,16.3317287,19.9893645,263.8605640,-14.1892810,262.7192744,-16.7219089,UK0006,-1.306160,51.883100,80.0,0.0,9.779691,PER,FF_UK0006_20240811_211650_001_0093952.fits,1723411011.714648,N +UM1,2024, 8,11,21,17,38.87,0.05,0.327,2.7125789,61.4389592,7.6523015,53.3130727,277.5202282,23.3426926,274.2005211,15.3912535,UK0006,-1.306160,51.883100,80.0,0.0,26.138917,PER,FF_UK0006_20240811_211730_992_0094976.fits,1723411058.872324,N +UM1,2024, 8,11,21,17,45.73,0.03,0.447,98.7756711,40.0075989,89.3381217,34.9207134,210.8991927,35.3049839,212.7153137,26.3928951,UK0006,-1.306160,51.883100,80.0,0.0,20.238576,PER,FF_UK0006_20240811_211741_239_0095232.fits,1723411065.734444,N +UM1,2024, 8,11,21,17,48.48,1.74,0.204,350.0103448,48.1588338,353.5097467,44.2389437,285.7290576,10.4053827,283.6464914,6.2853897,UK0006,-1.306160,51.883100,80.0,0.0,22.587929,PER,FF_UK0006_20240811_211741_239_0095232.fits,1723411068.484444,N +UM1,2024, 8,11,21,18,8.57,1.83,1.368,86.4526626,26.1175101,69.9008443,20.8087476,208.4476200,18.1826196,217.3288607,4.6580368,UK0006,-1.306160,51.883100,80.0,0.0,11.744683,spo,FF_UK0006_20240811_211801_735_0095744.fits,1723411088.565332,N +UM1,2024, 8,11,21,24,58.85,2.31,0.601,22.2290494,53.5794882,16.6548594,50.7929443,267.1801979,17.0883532,270.0287041,13.6392176,UK0006,-1.306160,51.883100,80.0,0.0,7.333628,spo,FF_UK0006_20240811_212451_641_0105984.fits,1723411498.851072,N +UM1,2024, 8,11,21,29,55.96,1.01,0.204,38.4942798,51.8520091,37.6374354,47.0900801,258.0670362,18.6809235,256.6299967,14.0892605,UK0006,-1.306160,51.883100,80.0,0.0,23.499741,PER,FF_UK0006_20240811_212948_823_0113408.fits,1723411795.956540,N +UM1,2024, 8,11,21,30,10.83,1.52,1.563,52.9948439,32.6986366,65.4315818,27.8763782,239.5181941,6.4520948,227.7847166,8.1053021,UK0006,-1.306160,51.883100,80.0,0.0,7.520335,CAP,FF_UK0006_20240811_213009_319_0113920.fits,1723411810.829528,N +UM1,2024, 8,11,21,30,52.72,0.93,0.163,104.9685910,44.0879380,102.5908213,41.5166105,214.4728358,41.4456651,213.2649533,38.4798953,UK0006,-1.306160,51.883100,80.0,0.0,19.097219,spo,FF_UK0006_20240811_213050_309_0114944.fits,1723411852.719312,N +UM1,2024, 8,11,21,31,14.34,2.99,0.163,36.1441024,48.5600823,35.5318012,45.1192899,258.4951240,15.0633859,257.5810299,11.7133763,UK0006,-1.306160,51.883100,80.0,0.0,21.279392,PER,FF_UK0006_20240811_213110_805_0115456.fits,1723411874.341148,N +UM1,2024, 8,11,21,32,3.68,0.42,0.203,128.4356334,44.7282083,122.9721752,43.3515171,201.4243993,55.7189806,202.9849572,51.6617680,UK0006,-1.306160,51.883100,80.0,0.0,20.482183,PER,FF_UK0006_20240811_213202_043_0116736.fits,1723411923.683524,N +UM1,2024, 8,11,21,32,3.68,0.42,0.203,128.4356334,44.7282083,122.9721752,43.3515171,201.4243993,55.7189806,202.9849572,51.6617680,UK0006,-1.306160,51.883100,80.0,0.0,20.482183,PER,FF_UK0006_20240811_213202_043_0116736.fits,1723411923.683524,N +UM1,2024, 8,11,21,33,38.99,0.53,0.362,22.9743671,20.4905450,23.4987192,17.5576251,260.7137607,-14.8888171,259.4407176,-17.6000264,UK0006,-1.306160,51.883100,80.0,0.0,8.204786,PER,FF_UK0006_20240811_213334_272_0119040.fits,1723412018.989444,N +UM1,2024, 8,11,21,33,46.34,2.00,0.120,82.6991312,37.0996604,83.2719531,36.4785538,222.7200164,24.3310022,221.8901215,24.1792750,UK0006,-1.306160,51.883100,80.0,0.0,6.411152,spo,FF_UK0006_20240811_213344_520_0119296.fits,1723412026.342576,N +UM1,2024, 8,11,21,39,29.46,2.08,0.922,95.3812845,49.1341269,75.8869692,51.6560914,227.1287854,39.2609351,239.4823795,31.5792007,UK0006,-1.306160,51.883100,80.0,0.0,13.707805,spo,FF_UK0006_20240811_213922_692_0127744.fits,1723412369.461756,N +UM1,2024, 8,11,21,41,41.26,1.69,0.202,12.0398340,25.4785791,12.9459329,23.3454823,273.8626482,-11.9195635,272.7250738,-13.9194842,UK0006,-1.306160,51.883100,80.0,0.0,11.320889,PER,FF_UK0006_20240811_214135_912_0131072.fits,1723412501.262276,N +UM1,2024, 8,11,21,42,11.01,1.53,0.243,66.2796141,31.4543674,64.1402296,28.4683875,232.2496041,11.4621228,232.0746806,7.9521719,UK0006,-1.306160,51.883100,80.0,0.0,14.474281,PER,FF_UK0006_20240811_214206_655_0131840.fits,1723412531.005528,N +UM1,2024, 8,11,21,44,22.40,3.24,0.400,70.4961877,64.6848573,72.2867000,64.3732817,254.6132306,38.5413021,253.6624313,38.9125425,UK0006,-1.306160,51.883100,80.0,0.0,2.073240,spo,FF_UK0006_20240811_214419_874_0135168.fits,1723412662.396252,N +UM1,2024, 8,11,21,48,21.91,1.75,0.285,50.1616127,44.2227761,48.2711469,39.0111377,251.8316954,15.3870160,250.5414087,10.1364278,UK0006,-1.306160,51.883100,80.0,0.0,18.976937,PER,FF_UK0006_20240811_214815_570_0141056.fits,1723412901.910600,N +UM1,2024, 8,11,21,49,12.23,2.80,0.681,56.9101608,38.3193381,57.9319297,36.8425875,244.4377213,12.9101387,242.9328268,12.0918187,UK0006,-1.306160,51.883100,80.0,0.0,2.468724,spo,FF_UK0006_20240811_214906_808_0142336.fits,1723412952.233540,N +UM1,2024, 8,11,21,50,37.63,1.24,1.402,10.8316760,16.5220037,15.0991788,15.5735652,276.0768152,-20.9466350,271.5841588,-21.2755815,UK0006,-1.306160,51.883100,80.0,0.0,2.998077,spo,FF_UK0006_20240811_215028_790_0144384.fits,1723413037.626864,N +UM1,2024, 8,11,21,50,39.08,1.18,0.521,15.1858016,15.5704793,16.7580254,15.1132433,271.4955901,-21.2641827,269.8076129,-21.4372376,UK0006,-1.306160,51.883100,80.0,0.0,3.036597,spo,FF_UK0006_20240811_215039_037_0144640.fits,1723413039.076072,N +UM1,2024, 8,11,21,52,53.38,0.12,0.531,38.5631953,58.5223318,37.1277477,45.4361993,266.7597888,24.7683985,262.0661777,12.4272340,UK0006,-1.306160,51.883100,80.0,0.0,24.697533,PER,FF_UK0006_20240811_215252_257_0147968.fits,1723413173.384916,N +UM1,2024, 8,11,21,54,37.69,2.63,0.121,82.3611543,21.9550076,81.3307042,21.0301483,217.8276613,12.5944163,218.0031540,11.2733124,UK0006,-1.306160,51.883100,80.0,0.0,11.008580,PER,FF_UK0006_20240811_215434_733_0150528.fits,1723413277.687872,N +UM1,2024, 8,11,21,57,6.42,1.12,0.650,71.6090630,44.8889335,74.0147935,32.9055374,241.1123142,24.6620377,231.4808657,16.5403687,UK0006,-1.306160,51.883100,80.0,0.0,18.665036,spo,FF_UK0006_20240811_215658_200_0154112.fits,1723413426.418384,N +UM1,2024, 8,11,21,57,45.66,2.00,0.243,60.4855415,37.9761859,58.5370178,34.3386985,243.9619138,14.1469428,243.2870201,10.2395323,UK0006,-1.306160,51.883100,80.0,0.0,16.289089,PER,FF_UK0006_20240811_215739_190_0155136.fits,1723413465.655604,N +UM1,2024, 8,11,21,58,22.85,0.10,0.688,24.4529605,34.5379553,25.9553451,24.9749770,269.2033916,-0.9634324,265.4010681,-9.8416203,UK0006,-1.306160,51.883100,80.0,0.0,14.021006,PER,FF_UK0006_20240811_215820_181_0156160.fits,1723413502.847256,N +UM1,2024, 8,11,21,58,54.95,2.50,0.243,34.0977617,30.9402279,34.0045803,27.5035847,260.5195707,-1.9432895,259.4042763,-5.1953885,UK0006,-1.306160,51.883100,80.0,0.0,14.152160,PER,FF_UK0006_20240811_215850_924_0156928.fits,1723413534.954976,N +UM1,2024, 8,11,22, 2,30.47,1.75,0.284,105.6575082,26.3989752,101.6807726,23.9487766,205.7576343,29.9355421,206.8699118,25.6943928,UK0006,-1.306160,51.883100,80.0,0.0,15.354212,PER,FF_UK0006_20240811_220226_124_0162304.fits,1723413750.466832,N +UM1,2024, 8,11,22, 2,59.66,1.07,0.282,9.7176038,20.9390834,10.8821820,18.3268445,280.8276016,-16.6824003,279.3651749,-19.1497081,UK0006,-1.306160,51.883100,80.0,0.0,10.028961,PER,FF_UK0006_20240811_220256_867_0163072.fits,1723413779.660044,N +UM1,2024, 8,11,22, 3,35.69,0.32,0.163,119.6377456,51.4973782,114.5261855,49.9372147,224.4449773,53.6807343,224.5746744,50.0898903,UK0006,-1.306160,51.883100,80.0,0.0,22.067674,PER,FF_UK0006_20240811_220327_610_0163840.fits,1723413815.690268,N +UM1,2024, 8,11,22, 6,25.55,1.51,0.163,6.0768702,50.4237063,8.0273762,47.1545100,287.1998391,12.4364314,285.6392727,9.2763099,UK0006,-1.306160,51.883100,80.0,0.0,21.546476,PER,FF_UK0006_20240811_220621_820_0168192.fits,1723413985.548952,N +UM1,2024, 8,11,22, 6,39.62,1.78,0.243,92.2379154,23.1245683,89.8270786,20.9845876,214.3379165,19.3385758,214.6686910,16.2608064,UK0006,-1.306160,51.883100,80.0,0.0,12.756824,PER,FF_UK0006_20240811_220632_067_0168448.fits,1723413999.617728,N +UM1,2024, 8,11,22, 7,19.23,2.51,0.122,98.6648161,45.3037289,95.9534673,43.6820716,228.4585047,38.6577236,228.4364031,36.1340554,UK0006,-1.306160,51.883100,80.0,0.0,20.676814,PER,FF_UK0006_20240811_220713_058_0169472.fits,1723414039.229576,N +UM1,2024, 8,11,22, 9,29.85,1.13,0.327,24.4862224,54.2781203,26.5673454,46.2987525,277.1805334,18.1047033,273.5964937,10.7979769,UK0006,-1.306160,51.883100,80.0,0.0,24.739623,PER,FF_UK0006_20240811_220926_277_0172800.fits,1723414169.846884,N +UM1,2024, 8,11,22,11,31.13,1.95,0.402,18.5013169,19.6354558,18.1824643,17.5039807,274.2574453,-16.6754455,274.1133127,-18.8237580,UK0006,-1.306160,51.883100,80.0,0.0,5.360665,KCG,FF_UK0006_20240811_221129_249_0175872.fits,1723414291.125916,N +UM1,2024, 8,11,22,14,28.31,4.53,0.120,71.1427372,56.7717977,72.9800408,56.5675670,254.8376681,33.2839858,253.8059202,33.8505841,UK0006,-1.306160,51.883100,80.0,0.0,8.583741,spo,FF_UK0006_20240811_221423_458_0180224.fits,1723414468.306528,N +UM1,2024, 8,11,22,18,25.94,1.01,0.607,58.0641019,33.5986220,54.7717515,25.1914345,248.4044794,9.4042978,246.5068177,0.7265102,UK0006,-1.306160,51.883100,80.0,0.0,14.623356,PER,FF_UK0006_20240811_221819_154_0186112.fits,1723414705.943548,N +UM1,2024, 8,11,22,20,11.91,2.72,0.162,19.1148275,30.7089543,19.6157200,28.5429909,278.1762984,-5.7202830,277.2983851,-7.7499914,UK0006,-1.306160,51.883100,80.0,0.0,13.644678,PER,FF_UK0006_20240811_222011_878_0188928.fits,1723414811.906160,N +UM1,2024, 8,11,22,20,42.23,1.27,0.204,91.3790327,44.4502356,87.5075284,41.1405930,235.1426057,34.1637166,234.5963622,29.8278586,UK0006,-1.306160,51.883100,80.0,0.0,21.410317,PER,FF_UK0006_20240811_222032_373_0189440.fits,1723414842.227404,N +UM1,2024, 8,11,22,21,32.92,1.77,0.162,53.1282577,37.8383980,52.2774273,35.2581102,254.8966545,10.9597975,254.1944675,8.3820307,UK0006,-1.306160,51.883100,80.0,0.0,16.450165,PER,FF_UK0006_20240811_222123_611_0190720.fits,1723414892.917112,N +UM1,2024, 8,11,22,24,1.33,0.04,0.368,98.6248679,58.8548400,86.7991000,51.8099118,247.9918974,46.1558954,245.2625369,36.6588906,UK0006,-1.306160,51.883100,80.0,0.0,26.404455,PER,FF_UK0006_20240811_222357_326_0194560.fits,1723415041.328000,N +UM1,2024, 8,11,22,25,8.24,2.71,0.202,87.5758550,24.1930326,85.6151714,22.1225930,223.1201266,17.3738723,223.1793785,14.6292948,UK0006,-1.306160,51.883100,80.0,0.0,13.571667,spo,FF_UK0006_20240811_222458_812_0196096.fits,1723415108.243524,N +UM1,2024, 8,11,22,28,19.06,0.75,0.203,9.8509137,34.6701893,11.4151342,31.5240196,288.5480639,-3.0171736,286.8823861,-5.9929139,UK0006,-1.306160,51.883100,80.0,0.0,16.786225,PER,FF_UK0006_20240811_222813_517_0200960.fits,1723415299.059260,N +UM1,2024, 8,11,22,29,1.90,0.96,0.364,55.8846438,30.7019940,54.2214626,25.7924839,251.1225686,5.9706348,249.8944484,0.9965121,UK0006,-1.306160,51.883100,80.0,0.0,14.065279,PER,FF_UK0006_20240811_222854_507_0201984.fits,1723415341.899156,N +UM1,2024, 8,11,22,32,44.06,0.46,0.364,103.6544833,24.6409685,99.9411907,21.4451770,213.4800459,27.4173454,213.9361422,22.7574717,UK0006,-1.306160,51.883100,80.0,0.0,12.852710,PER,FF_UK0006_20240811_223239_955_0207616.fits,1723415564.060012,N +UM1,2024, 8,11,22,34,33.05,0.01,0.530,39.2688346,51.2912175,39.1471990,39.0962135,273.5607759,18.3658136,268.6219012,7.1591790,UK0006,-1.306160,51.883100,80.0,0.0,22.986883,PER,FF_UK0006_20240811_223432_680_0210432.fits,1723415673.054080,N +UM1,2024, 8,11,22,35,11.36,0.51,0.326,31.2891938,46.4320178,32.1915608,39.2613219,276.9118684,11.9169245,273.8965604,5.3617741,UK0006,-1.306160,51.883100,80.0,0.0,22.072110,PER,FF_UK0006_20240811_223503_422_0211200.fits,1723415711.359404,N +UM1,2024, 8,11,22,36,47.02,1.50,0.164,41.3699150,61.2755090,41.1040916,57.0315242,277.7145933,27.8595894,275.7135352,24.0136039,UK0006,-1.306160,51.883100,80.0,0.0,25.963110,PER,FF_UK0006_20240811_223645_899_0213760.fits,1723415807.024780,N +UM1,2024, 8,11,22,38,58.89,1.69,0.203,75.3582536,41.3993552,72.9905729,38.1391984,246.8454531,23.7809967,246.1014653,20.1121368,UK0006,-1.306160,51.883100,80.0,0.0,18.375111,PER,FF_UK0006_20240811_223848_871_0216832.fits,1723415938.891664,N +UM1,2024, 8,11,22,38,59.14,-0.46,0.609,72.6057159,37.5701250,66.7547028,27.7092681,245.9743017,19.4782450,243.9610262,8.6356568,UK0006,-1.306160,51.883100,80.0,0.0,18.082413,PER,FF_UK0006_20240811_223859_119_0217088.fits,1723415939.143376,N +UM1,2024, 8,11,22,39,24.59,1.38,0.163,93.5114551,39.3940699,90.8039298,37.0353399,234.1122192,31.9061884,233.8830357,28.7364088,UK0006,-1.306160,51.883100,80.0,0.0,19.522165,PER,FF_UK0006_20240811_223919_614_0217600.fits,1723415964.591672,N +UM1,2024, 8,11,22,42,22.69,2.06,0.203,80.6829988,31.8462060,78.6569312,29.0874539,237.5395705,19.2829059,237.1068113,16.0443263,UK0006,-1.306160,51.883100,80.0,0.0,16.101068,PER,FF_UK0006_20240811_224213_824_0221952.fits,1723416142.691376,N +UM1,2024, 8,11,22,42,31.82,2.18,0.202,30.2170607,28.5823097,30.6175278,25.9793132,273.8628555,-5.2782762,272.6996500,-7.6372074,UK0006,-1.306160,51.883100,80.0,0.0,12.988986,PER,FF_UK0006_20240811_224224_072_0222208.fits,1723416151.824348,N +UM1,2024, 8,11,22,42,48.23,0.61,0.365,40.5513004,37.8962916,40.2745763,31.5515299,269.1920557,6.4963271,266.8512748,0.5931870,UK0006,-1.306160,51.883100,80.0,0.0,17.372330,PER,FF_UK0006_20240811_224244_568_0222720.fits,1723416168.233724,N +UM1,2024, 8,11,22,43,0.16,2.49,0.241,56.0773995,38.1138801,55.5406460,36.8412774,258.3828450,12.3904605,258.0772129,11.0824818,UK0006,-1.306160,51.883100,80.0,0.0,5.564560,KCG,FF_UK0006_20240811_224254_815_0222976.fits,1723416180.160772,N +UM1,2024, 8,11,22,44,18.31,0.91,0.323,9.9373143,25.2615636,11.7170840,21.6305285,291.4622325,-12.3636134,289.3445094,-15.7732271,UK0006,-1.306160,51.883100,80.0,0.0,12.305440,PER,FF_UK0006_20240811_224416_797_0225024.fits,1723416258.306732,N +UM1,2024, 8,11,22,44,39.68,-0.56,1.175,40.4239728,39.8776777,40.1632198,22.4229851,270.5565825,8.2686348,263.7518586,-7.8139602,UK0006,-1.306160,51.883100,80.0,0.0,14.857010,PER,FF_UK0006_20240811_224437_292_0225536.fits,1723416279.676000,N +UM1,2024, 8,11,22,44,52.20,2.03,0.162,108.6980655,33.3414274,106.1999275,31.5437958,220.0254809,36.7078730,220.2237605,33.9421515,UK0006,-1.306160,51.883100,80.0,0.0,17.063182,PER,FF_UK0006_20240811_224447_540_0225792.fits,1723416292.196484,N +UM1,2024, 8,11,22,45,26.95,1.74,0.682,30.8571697,37.9368895,30.1852057,35.3876333,277.0268022,3.7710665,276.7411488,1.1814591,UK0006,-1.306160,51.883100,80.0,0.0,3.819749,spo,FF_UK0006_20240811_224518_283_0226560.fits,1723416326.947568,N +UM1,2024, 8,11,22,45,56.26,0.51,0.445,71.7602995,28.6045491,69.1941416,22.6961914,242.6023008,11.9493897,240.9711791,5.8133229,UK0006,-1.306160,51.883100,80.0,0.0,14.245710,PER,FF_UK0006_20240811_224549_026_0227328.fits,1723416356.258028,N +UM1,2024, 8,11,22,46,22.13,0.38,0.323,77.1017972,20.9678977,75.1026336,18.1262455,234.0937552,8.7934735,233.8788362,5.3909522,UK0006,-1.306160,51.883100,80.0,0.0,10.563685,PER,FF_UK0006_20240811_224619_769_0228096.fits,1723416382.126080,N +UM1,2024, 8,11,22,46,50.78,1.32,0.323,45.9751740,34.0423800,43.9796445,30.9796906,264.5680065,4.8739410,264.7446488,1.3839989,UK0006,-1.306160,51.883100,80.0,0.0,10.833989,spo,FF_UK0006_20240811_224650_512_0228864.fits,1723416410.781364,N +UM1,2024, 8,11,22,51,30.60,0.07,0.403,82.4878709,20.6717510,79.9057020,17.3177507,231.1713745,11.6674445,231.0131920,7.5221689,UK0006,-1.306160,51.883100,80.0,0.0,10.284438,PER,FF_UK0006_20240811_225127_200_0235776.fits,1723416690.595880,N +UM1,2024, 8,11,22,55,39.22,1.29,0.284,77.4202634,28.6313394,75.0611383,24.9949108,241.0131489,15.0101052,240.4210565,10.8484100,UK0006,-1.306160,51.883100,80.0,0.0,14.819670,PER,FF_UK0006_20240811_225533_145_0241920.fits,1723416939.215800,N +UM1,2024, 8,11,22,58,3.25,3.62,0.240,42.3361894,22.9193825,43.3124375,22.9728848,265.4664851,-6.5388137,264.6702572,-6.1107960,UK0006,-1.306160,51.883100,80.0,0.0,3.748423,spo,FF_UK0006_20240811_225756_612_0245504.fits,1723417083.250568,N +UM1,2024, 8,11,22,58,56.49,-0.25,0.286,97.3899573,61.9362082,87.5710899,56.1512549,261.1402369,47.0208042,257.9947528,39.7050717,UK0006,-1.306160,51.883100,80.0,0.0,26.776376,PER,FF_UK0006_20240811_225847_851_0246784.fits,1723417136.491212,N +UM1,2024, 8,11,22,59,12.35,0.25,0.325,126.9096238,39.4157320,120.4582872,35.8165232,216.8852394,51.8070640,217.4900690,45.5719594,UK0006,-1.306160,51.883100,80.0,0.0,19.208912,PER,FF_UK0006_20240811_225908_346_0247296.fits,1723417152.350240,N +UM1,2024, 8,11,22,59,28.19,0.86,0.202,14.3253990,22.1193565,15.2414060,19.9960525,290.7339039,-14.9404807,289.4961145,-16.8950657,UK0006,-1.306160,51.883100,80.0,0.0,11.331093,PER,FF_UK0006_20240811_225918_594_0247552.fits,1723417168.187676,N +UM1,2024, 8,11,23, 0,12.68,0.69,0.484,355.8374904,44.0506885,3.9602679,42.0485214,307.6503245,6.0012045,301.6985066,3.9944821,UK0006,-1.306160,51.883100,80.0,0.0,12.925513,spo,FF_UK0006_20240811_230009_833_0248832.fits,1723417212.683348,N +UM1,2024, 8,11,23, 1,8.87,1.97,0.205,75.1210396,62.6285043,71.0962018,56.8333407,270.1501477,38.7408879,266.6127638,33.3102062,UK0006,-1.306160,51.883100,80.0,0.0,29.919202,PER,FF_UK0006_20240811_230101_071_0250112.fits,1723417268.874408,N +UM1,2024, 8,11,23, 1,35.79,3.62,0.241,85.2183567,45.8411876,84.9079666,45.2139979,250.1245213,31.9095543,249.7702911,31.3186790,UK0006,-1.306160,51.883100,80.0,0.0,2.757695,spo,FF_UK0006_20240811_230131_814_0250880.fits,1723417295.788928,N +UM1,2024, 8,11,23, 3,23.24,0.95,0.162,100.8134380,27.0503414,99.1210846,25.4705203,225.1222744,27.4472925,225.1708377,25.2570666,UK0006,-1.306160,51.883100,80.0,0.0,13.532270,PER,FF_UK0006_20240811_230314_292_0253440.fits,1723417403.236424,N +UM1,2024, 8,11,23, 6,13.21,2.78,0.282,34.7252294,35.6254964,38.7852677,34.2198443,278.5354433,2.6304544,274.9205666,2.5552014,UK0006,-1.306160,51.883100,80.0,0.0,12.825282,NDA,FF_UK0006_20240811_230608_503_0257792.fits,1723417573.210096,N +UM1,2024, 8,11,23, 6,49.86,2.40,0.201,5.0534417,52.6800330,8.3801001,52.9689284,303.1386689,14.6492610,301.0880194,15.0874334,UK0006,-1.306160,51.883100,80.0,0.0,10.116394,NDA,FF_UK0006_20240811_230649_494_0258816.fits,1723417609.861028,N +UM1,2024, 8,11,23, 7,15.28,3.21,0.122,65.8419274,55.5626141,64.3421222,53.1371497,269.6667070,30.3985698,268.6530621,27.9773070,UK0006,-1.306160,51.883100,80.0,0.0,21.100997,PER,FF_UK0006_20240811_230709_989_0259328.fits,1723417635.279120,N +UM1,2024, 8,11,23, 7,15.75,0.96,0.242,36.8193014,24.3576453,37.0228547,21.5343253,273.0225224,-7.2197791,271.7774035,-9.7668478,UK0006,-1.306160,51.883100,80.0,0.0,11.673700,PER,FF_UK0006_20240811_230709_989_0259328.fits,1723417635.745856,N +UM1,2024, 8,11,23, 8,3.36,1.27,0.204,54.5156389,51.9860356,53.1942383,47.0498958,273.4525867,23.5271727,271.3969664,18.8982840,UK0006,-1.306160,51.883100,80.0,0.0,24.521724,PER,FF_UK0006_20240811_230801_228_0260608.fits,1723417683.361828,N +UM1,2024, 8,11,23, 8,4.96,0.05,0.408,96.1011076,46.8009608,88.7626043,39.7720362,246.6013471,38.2020398,244.5817766,29.5424238,UK0006,-1.306160,51.883100,80.0,0.0,21.641430,PER,FF_UK0006_20240811_230801_228_0260608.fits,1723417684.959272,N +UM1,2024, 8,11,23, 8,39.10,3.18,0.163,25.0828724,49.6160296,26.1016990,46.0743002,290.3363039,13.7135806,288.6762700,10.4925933,UK0006,-1.306160,51.883100,80.0,0.0,22.111464,PER,FF_UK0006_20240811_230831_971_0261376.fits,1723417719.104796,N +UM1,2024, 8,11,23, 9,52.99,0.74,0.327,30.0665147,57.9001344,32.0156724,49.6472110,290.3203360,22.4947473,286.2414657,15.1101664,UK0006,-1.306160,51.883100,80.0,0.0,25.470848,PER,FF_UK0006_20240811_230943_705_0263168.fits,1723417792.992684,N +UM1,2024, 8,11,23,10,14.31,2.13,0.121,23.1194869,32.4984028,24.0776147,30.9853405,287.7859171,-3.2155881,286.6196232,-4.4796921,UK0006,-1.306160,51.883100,80.0,0.0,14.144364,spo,FF_UK0006_20240811_231004_201_0263680.fits,1723417814.308660,N +UM1,2024, 8,11,23,13,37.30,2.34,0.163,80.9602635,40.3977503,78.9413224,37.4415443,251.3128350,25.8506389,250.4358425,22.6003330,UK0006,-1.306160,51.883100,80.0,0.0,20.549164,PER,FF_UK0006_20240811_231329_155_0268800.fits,1723418017.295328,N +UM1,2024, 8,11,23,14,26.89,0.42,0.326,11.6749007,41.2928459,14.8716326,35.3805871,299.4484362,3.7266961,296.1290799,-1.7696612,UK0006,-1.306160,51.883100,80.0,0.0,19.714538,PER,FF_UK0006_20240811_231420_394_0270080.fits,1723418066.891552,N +UM1,2024, 8,11,23,15,54.45,0.32,0.485,20.6137481,28.5735147,22.7508574,22.4782519,290.4057929,-7.5324276,287.0640535,-13.0141598,UK0006,-1.306160,51.883100,80.0,0.0,13.165046,PER,FF_UK0006_20240811_231552_624_0272384.fits,1723418154.454292,N +UM1,2024, 8,11,23,17,24.59,2.08,0.241,90.3435667,27.6542114,90.0287682,26.7130000,236.6335453,21.6192915,236.1914705,20.7284555,UK0006,-1.306160,51.883100,80.0,0.0,4.076163,KCG,FF_UK0006_20240811_231714_605_0274432.fits,1723418244.592912,N +UM1,2024, 8,11,23,17,24.88,2.08,0.201,90.2383434,26.5473665,90.0469739,25.7083877,235.9243024,20.7276626,235.4739046,19.9830619,UK0006,-1.306160,51.883100,80.0,0.0,4.265339,KCG,FF_UK0006_20240811_231724_853_0274688.fits,1723418244.881812,N +UM1,2024, 8,11,23,17,30.87,4.20,0.120,74.1190323,48.5187523,75.4828148,48.2922583,262.5028545,28.5243780,261.5701417,28.9732918,UK0006,-1.306160,51.883100,80.0,0.0,7.776900,spo,FF_UK0006_20240811_231724_853_0274688.fits,1723418250.867976,N +UM1,2024, 8,11,23,17,54.06,0.39,0.404,25.3865547,23.9901440,26.3477238,19.6685173,285.5669501,-10.9300845,283.4635825,-14.8368687,UK0006,-1.306160,51.883100,80.0,0.0,10.928556,PER,FF_UK0006_20240811_231745_349_0275200.fits,1723418274.064180,N +UM1,2024, 8,11,23,20,7.22,1.16,0.326,100.5965470,44.2771985,94.3193344,38.8589887,244.5793799,39.0889789,243.3532808,31.9929275,UK0006,-1.306160,51.883100,80.0,0.0,21.972063,PER,FF_UK0006_20240811_231958_569_0278528.fits,1723418407.220712,N +UM1,2024, 8,11,23,21,25.61,2.39,0.122,70.0052118,49.6586893,68.5238166,47.0889130,266.6216465,27.5830354,265.6157806,24.9835503,UK0006,-1.306160,51.883100,80.0,0.0,22.487219,PER,FF_UK0006_20240811_232120_551_0280576.fits,1723418485.605608,N +UM1,2024, 8,11,23,25,37.43,0.23,0.368,71.3417980,58.0936914,65.9922368,49.0453019,273.7014961,34.2990303,269.4825598,25.4398899,UK0006,-1.306160,51.883100,80.0,0.0,26.028942,PER,FF_UK0006_20240811_232536_745_0286976.fits,1723418737.432468,N +UM1,2024, 8,11,23,25,36.99,2.43,0.281,41.0191504,59.4842697,50.3565143,58.7403427,289.2115725,26.1866886,284.1282381,27.9158617,UK0006,-1.306160,51.883100,80.0,0.0,17.252357,SDA,FF_UK0006_20240811_232536_745_0286976.fits,1723418736.992276,N +UM1,2024, 8,11,23,26,5.01,0.57,0.368,34.7119054,60.9441647,36.2277535,51.3474965,293.1786576,26.1873635,288.3381542,17.6622986,UK0006,-1.306160,51.883100,80.0,0.0,26.164532,PER,FF_UK0006_20240811_232557_240_0287488.fits,1723418765.005640,N +UM1,2024, 8,11,23,26,49.73,1.90,0.204,16.9068266,51.4861233,19.2203780,47.1256458,300.5426435,14.3496395,298.1547796,10.3694949,UK0006,-1.306160,51.883100,80.0,0.0,22.614466,PER,FF_UK0006_20240811_232648_479_0288768.fits,1723418809.729748,N +UM1,2024, 8,11,23,30,12.78,0.66,0.527,55.3370559,31.3503095,54.0409656,23.6561740,267.1991224,6.2870106,264.3055886,-0.9353071,UK0006,-1.306160,51.883100,80.0,0.0,14.772964,PER,FF_UK0006_20240811_233003_186_0293632.fits,1723419012.777636,N +UM1,2024, 8,11,23,30,37.03,2.00,0.326,75.1337668,46.1695096,71.2047801,39.9472174,263.4225518,27.2505745,261.4077895,20.6522080,UK0006,-1.306160,51.883100,80.0,0.0,21.020567,PER,FF_UK0006_20240811_233033_929_0294400.fits,1723419037.025752,N +UM1,2024, 8,11,23,31,45.98,3.11,0.162,49.6379924,24.9749203,49.4216514,23.0957652,268.8417818,-1.7299139,268.1327132,-3.4813709,UK0006,-1.306160,51.883100,80.0,0.0,11.693278,PER,FF_UK0006_20240811_233145_663_0296192.fits,1723419105.980140,N +UM1,2024, 8,11,23,32,6.75,0.22,0.526,69.1712227,27.5733899,66.6932914,20.9934306,255.4295575,9.7656821,253.4735850,3.0868770,UK0006,-1.306160,51.883100,80.0,0.0,13.228539,PER,FF_UK0006_20240811_233206_159_0296704.fits,1723419126.752348,N +UM1,2024, 8,11,23,33,0.07,1.72,0.202,45.3151997,29.1858206,45.3707411,26.2806487,274.4939763,0.2690822,273.1744235,-2.3193230,UK0006,-1.306160,51.883100,80.0,0.0,14.349802,PER,FF_UK0006_20240811_233257_398_0297984.fits,1723419180.071488,N +UM1,2024, 8,11,23,33,2.41,2.28,0.123,41.2164046,59.2696626,41.0248877,56.0730377,290.8646820,26.0406855,289.3959994,23.1347118,UK0006,-1.306160,51.883100,80.0,0.0,26.066664,PER,FF_UK0006_20240811_233257_398_0297984.fits,1723419182.405452,N +UM1,2024, 8,11,23,36,42.21,1.03,0.245,97.7664012,44.7921071,93.3527235,40.2850731,250.8664518,37.8424683,249.3407842,32.4284152,UK0006,-1.306160,51.883100,80.0,0.0,22.694841,PER,FF_UK0006_20240811_233632_600_0303360.fits,1723419402.212256,N +UM1,2024, 8,11,23,38,21.28,1.72,0.368,84.3649558,65.1296647,72.3223217,56.4901233,278.9690876,43.4957099,275.0770064,33.5390276,UK0006,-1.306160,51.883100,80.0,0.0,28.257322,spo,FF_UK0006_20240811_233815_078_0305920.fits,1723419501.278312,N +UM1,2024, 8,11,23,38,28.84,0.76,0.283,18.0201617,26.6105013,19.5552367,23.0327800,297.9297126,-9.9277556,295.7972795,-13.1482112,UK0006,-1.306160,51.883100,80.0,0.0,13.549450,PER,FF_UK0006_20240811_233825_326_0306176.fits,1723419508.837196,N +UM1,2024, 8,11,23,38,37.46,0.25,0.368,35.8476197,60.9035384,37.6042599,51.0274526,295.7396626,26.3695326,290.5170936,17.7032156,UK0006,-1.306160,51.883100,80.0,0.0,26.934724,PER,FF_UK0006_20240811_233835_573_0306432.fits,1723419517.458760,N +UM1,2024, 8,11,23,38,50.05,2.16,0.163,22.8547366,35.8627578,23.8878718,33.0354695,295.9788913,-0.0033721,294.4606437,-2.5358396,UK0006,-1.306160,51.883100,80.0,0.0,18.159982,PER,FF_UK0006_20240811_233845_821_0306688.fits,1723419530.045804,N +UM1,2024, 8,11,23,39,37.27,1.81,0.163,76.2351360,57.8738964,74.0667811,54.2329883,274.8300252,36.0280476,272.6547927,32.6380119,UK0006,-1.306160,51.883100,80.0,0.0,23.500399,PER,FF_UK0006_20240811_233937_060_0307968.fits,1723419577.267028,N +UM1,2024, 8,11,23,44,34.99,-0.76,0.972,19.5114081,31.6030885,24.1162391,18.6306650,299.1807620,-4.7755666,291.9659886,-16.4111116,UK0006,-1.306160,51.883100,80.0,0.0,14.016388,PER,FF_UK0006_20240811_234434_245_0315392.fits,1723419874.992528,N +UM1,2024, 8,11,23,47,24.53,2.10,0.121,76.4766659,21.0514173,75.8484895,19.6641265,249.9156076,8.5050724,249.5424018,7.0441466,UK0006,-1.306160,51.883100,80.0,0.0,12.428609,PER,FF_UK0006_20240811_234718_209_0319488.fits,1723420044.526176,N +UM1,2024, 8,11,23,47,27.09,2.69,0.203,355.4749995,53.5420083,3.4080421,52.5644494,319.2742768,15.4930745,314.3477186,14.4868145,UK0006,-1.306160,51.883100,80.0,0.0,23.964679,spo,FF_UK0006_20240811_234718_209_0319488.fits,1723420047.092708,N +UM1,2024, 8,11,23,48,52.70,-0.83,0.850,85.1299576,31.3050978,78.8880867,20.3915161,250.7738888,21.3472082,248.0714240,9.3591392,UK0006,-1.306160,51.883100,80.0,0.0,14.423735,PER,FF_UK0006_20240811_234850_438_0321792.fits,1723420132.704632,N +UM1,2024, 8,11,23,50,12.94,0.35,0.121,350.2572865,56.9395636,349.8104576,55.8488751,322.7856698,19.1169019,323.1751220,18.0610394,UK0006,-1.306160,51.883100,80.0,0.0,9.279910,spo,FF_UK0006_20240811_235012_421_0323840.fits,1723420212.941012,N +UM1,2024, 8,11,23,50,19.84,0.44,0.447,55.2905438,40.9156737,54.1161517,32.5510846,277.3023325,14.4583523,273.7558798,6.7963822,UK0006,-1.306160,51.883100,80.0,0.0,18.817441,PER,FF_UK0006_20240811_235012_421_0323840.fits,1723420219.844392,N +UM1,2024, 8,11,23,50,28.82,2.22,0.162,11.4608423,26.2987038,12.5137248,24.2870162,306.7836018,-11.1730516,305.5492490,-13.0425147,UK0006,-1.306160,51.883100,80.0,0.0,13.740304,PER,FF_UK0006_20240811_235022_668_0324096.fits,1723420228.817432,N +UM1,2024, 8,11,23,50,38.10,1.04,0.404,84.1503338,29.8571719,84.2594983,24.2300758,250.8790819,19.7012574,246.9976754,15.4610268,UK0006,-1.306160,51.883100,80.0,0.0,13.910970,spo,FF_UK0006_20240811_235032_916_0324352.fits,1723420238.104052,N +UM1,2024, 8,11,23,50,52.96,3.12,0.203,41.8659955,29.3348471,42.0456047,26.3524395,281.7629955,-0.8766191,280.3862831,-3.5271738,UK0006,-1.306160,51.883100,80.0,0.0,14.745126,PER,FF_UK0006_20240811_235043_164_0324608.fits,1723420252.957168,N +UM1,2024, 8,11,23,54,0.50,1.34,0.202,21.4386621,26.0001777,22.3579949,23.4969946,298.6508874,-9.8760476,297.2268114,-12.1135743,UK0006,-1.306160,51.883100,80.0,0.0,13.043698,PER,FF_UK0006_20240811_235357_871_0329472.fits,1723420440.503600,N +UM1,2024, 8,11,23,54,59.37,2.05,0.162,48.2619156,54.9595130,48.0254169,52.7084067,290.3855334,24.0926132,289.2944437,22.0731152,UK0006,-1.306160,51.883100,80.0,0.0,13.927199,spo,FF_UK0006_20240811_235459_358_0331008.fits,1723420499.369332,N +UM1,2024, 8,11,23,55,41.70,1.03,0.284,28.3539113,31.6007536,29.6468597,27.1435423,294.6604733,-2.8895451,292.2391292,-6.8024171,UK0006,-1.306160,51.883100,80.0,0.0,16.187943,PER,FF_UK0006_20240811_235540_349_0332032.fits,1723420541.698488,N +UM1,2024, 8,11,23,56,4.71,0.63,1.165,61.6787402,41.4990633,72.2890108,33.7186451,274.8911567,17.5765938,263.0138855,16.2927855,UK0006,-1.306160,51.883100,80.0,0.0,9.811196,spo,FF_UK0006_20240811_235600_844_0332544.fits,1723420564.706444,N +UM1,2024, 8,11,23,56,48.30,2.37,0.122,75.8745134,33.2021635,74.9897520,31.2907088,260.4032805,17.7445135,259.7687547,15.7839481,UK0006,-1.306160,51.883100,80.0,0.0,16.855554,PER,FF_UK0006_20240811_235641_835_0333568.fits,1723420608.302400,N +UM1,2024, 8,11,23,58,24.32,1.29,0.764,74.7457212,62.3186932,65.4277132,59.0686773,284.3451200,38.4081687,285.4107871,32.8829975,UK0006,-1.306160,51.883100,80.0,0.0,7.324351,spo,FF_UK0006_20240811_235824_313_0336128.fits,1723420704.316720,N +UM1,2024, 8,11,23,59,27.94,2.02,0.203,44.7660845,38.3446125,44.9721235,34.6188105,285.5690213,8.3010806,283.7748799,5.0252124,UK0006,-1.306160,51.883100,80.0,0.0,18.349228,PER,FF_UK0006_20240811_235925_799_0337664.fits,1723420767.944600,N +UM1,2024, 8,12, 0, 1,27.53,2.57,0.163,32.9953398,60.1801679,34.0804749,56.4621009,302.5885316,25.1593294,300.5033609,21.9201088,UK0006,-1.306160,51.883100,80.0,0.0,23.050625,PER,FF_UK0006_20240812_000118_525_0340480.fits,1723420887.531128,N +UM1,2024, 8,12, 0, 1,54.65,0.90,0.285,91.1891000,37.7489799,87.6418837,33.0777803,254.8930171,29.4577298,253.6106119,24.0861787,UK0006,-1.306160,51.883100,80.0,0.0,19.285821,PER,FF_UK0006_20240812_000149_268_0341248.fits,1723420914.647696,N +UM1,2024, 8,12, 0, 2,9.01,1.57,0.122,9.6511780,39.3949607,11.0130170,37.3709972,312.7233182,1.6650151,311.4386947,-0.2282619,UK0006,-1.306160,51.883100,80.0,0.0,18.751182,PER,FF_UK0006_20240812_000159_516_0341504.fits,1723420929.014460,N +UM1,2024, 8,12, 0, 2,17.85,-0.06,0.491,78.4414604,62.7454941,78.8213120,48.4114909,284.3571882,39.9986406,271.0514013,30.5974710,UK0006,-1.306160,51.883100,80.0,0.0,29.173635,spo,FF_UK0006_20240812_000209_763_0341760.fits,1723420937.845912,N +UM1,2024, 8,12, 0, 2,26.65,1.72,0.242,50.3883820,26.9560221,50.2986851,24.0018518,276.8749593,0.3346421,275.5426640,-2.3029332,UK0006,-1.306160,51.883100,80.0,0.0,12.186243,PER,FF_UK0006_20240812_000220_011_0342016.fits,1723420946.646488,N +UM1,2024, 8,12, 0, 2,41.29,0.34,0.324,109.6739091,29.2376148,106.0808949,25.5914738,235.2000537,34.4449518,234.9301827,29.6068096,UK0006,-1.306160,51.883100,80.0,0.0,14.937218,PER,FF_UK0006_20240812_000240_507_0342528.fits,1723420961.286000,N +UM1,2024, 8,12, 0, 4,30.57,2.96,0.122,17.6518113,35.5290320,18.5400149,33.4706899,306.4717233,-1.2319222,305.3580866,-3.1115541,UK0006,-1.306160,51.883100,80.0,0.0,17.916704,PER,FF_UK0006_20240812_000422_984_0345088.fits,1723421070.567828,N +UM1,2024, 8,12, 0, 6,34.38,1.59,0.163,65.0943324,41.3703070,64.2084804,38.1869786,275.2486948,18.9598053,273.8759289,15.9797298,UK0006,-1.306160,51.883100,80.0,0.0,19.990881,PER,FF_UK0006_20240812_000625_957_0348160.fits,1723421194.379256,N +UM1,2024, 8,12, 0, 6,35.63,2.09,0.162,22.4020306,24.9793100,23.0821536,23.0546581,300.7037141,-10.6648650,299.6110499,-12.3802573,UK0006,-1.306160,51.883100,80.0,0.0,12.502878,PER,FF_UK0006_20240812_000625_957_0348160.fits,1723421195.630676,N +UM1,2024, 8,12, 0, 6,40.39,1.53,0.365,48.8292728,35.5674548,48.7131228,29.3075273,283.1838951,7.3011942,280.3458795,1.7164305,UK0006,-1.306160,51.883100,80.0,0.0,17.133427,PER,FF_UK0006_20240812_000636_205_0348416.fits,1723421200.393116,N +UM1,2024, 8,12, 0, 7,2.92,1.87,0.204,45.6247868,45.1699402,45.9104973,40.6194692,290.0021654,14.6919781,287.6958500,10.7312221,UK0006,-1.306160,51.883100,80.0,0.0,22.332138,PER,FF_UK0006_20240812_000656_701_0348928.fits,1723421222.920712,N +UM1,2024, 8,12, 0, 7,49.14,2.11,0.122,73.7941724,61.0907315,72.6872575,59.1782264,285.9113979,37.2599437,284.6309273,35.5574154,UK0006,-1.306160,51.883100,80.0,0.0,16.357615,PER,FF_UK0006_20240812_000747_939_0350208.fits,1723421269.143788,N +UM1,2024, 8,12, 0, 8,0.80,2.04,0.122,108.5461995,38.0238802,106.8063592,36.2292798,245.4156422,39.7392487,244.8547931,37.5139114,UK0006,-1.306160,51.883100,80.0,0.0,18.593590,PER,FF_UK0006_20240812_000758_187_0350464.fits,1723421280.800244,N +UM1,2024, 8,12, 0, 8,11.16,1.31,0.245,50.5966603,57.9411327,50.2474183,51.9338668,294.1939642,27.3095658,290.9158983,22.0882036,UK0006,-1.306160,51.883100,80.0,0.0,24.518345,PER,FF_UK0006_20240812_000808_435_0350720.fits,1723421291.163816,N +UM1,2024, 8,12, 0, 9,22.47,1.67,0.204,48.5061597,47.5764829,48.3876457,43.1070527,289.9384739,17.7506153,287.7848702,13.7900508,UK0006,-1.306160,51.883100,80.0,0.0,21.923803,PER,FF_UK0006_20240812_000920_169_0352512.fits,1723421362.466692,N +UM1,2024, 8,12, 0, 9,24.96,1.46,0.323,75.6659764,26.6568992,73.5662019,23.8935845,259.5054504,12.4975482,259.3394033,9.1489780,UK0006,-1.306160,51.883100,80.0,0.0,10.388896,spo,FF_UK0006_20240812_000920_169_0352512.fits,1723421364.961832,N +UM1,2024, 8,12, 0, 9,34.23,2.13,0.201,74.1479083,52.8153053,78.9121362,50.8046362,278.9471520,31.6610993,274.8173209,32.3242322,UK0006,-1.306160,51.883100,80.0,0.0,17.746069,NDA,FF_UK0006_20240812_000930_417_0352768.fits,1723421374.228436,N +UM1,2024, 8,12, 0,10,46.41,1.31,0.204,54.9701170,47.8425593,54.4640296,43.3025984,286.4842928,20.2072913,284.2650530,16.1711509,UK0006,-1.306160,51.883100,80.0,0.0,22.325633,PER,FF_UK0006_20240812_001042_151_0354560.fits,1723421446.408400,N +UM1,2024, 8,12, 0,11,23.27,0.16,0.409,83.2912841,54.3883325,77.2702090,45.1476128,276.3261951,36.7001422,271.6274733,27.5045646,UK0006,-1.306160,51.883100,80.0,0.0,24.513737,PER,FF_UK0006_20240812_001123_142_0355584.fits,1723421483.270616,N +UM1,2024, 8,12, 0,15,5.00,0.84,0.203,103.4616864,34.4495794,101.0163601,31.4774797,247.2909525,34.3014562,246.4675022,30.7577640,UK0006,-1.306160,51.883100,80.0,0.0,17.772830,PER,FF_UK0006_20240812_001458_345_0360960.fits,1723421705.002872,N +UM1,2024, 8,12, 0,17,53.82,0.94,0.204,13.4931235,38.9332466,15.4572863,35.2717897,313.6567441,1.5758814,311.5448322,-1.7998377,UK0006,-1.306160,51.883100,80.0,0.0,19.566346,PER,FF_UK0006_20240812_001752_557_0365312.fits,1723421873.816944,N +UM1,2024, 8,12, 0,18,18.18,2.27,0.122,81.5950018,53.1186398,80.0751774,50.5561045,277.6864711,35.1107057,276.1873020,32.6819980,UK0006,-1.306160,51.883100,80.0,0.0,22.306787,PER,FF_UK0006_20240812_001813_053_0365824.fits,1723421898.182936,N +UM1,2024, 8,12, 0,18,28.01,-0.25,0.565,12.9417495,21.3617636,15.8275966,15.8567749,311.7365652,-15.8833447,307.9556586,-20.8731426,UK0006,-1.306160,51.883100,80.0,0.0,10.871791,PER,FF_UK0006_20240812_001823_300_0366080.fits,1723421908.013820,N +UM1,2024, 8,12, 0,18,30.56,0.42,0.365,104.7946454,33.3296829,100.4931220,28.5951394,246.2440215,34.3317209,245.3889802,28.3760797,UK0006,-1.306160,51.883100,80.0,0.0,16.426707,PER,FF_UK0006_20240812_001823_300_0366080.fits,1723421910.558148,N +UM1,2024, 8,12, 0,18,37.97,2.74,0.960,48.9238301,42.8624950,56.7533372,43.0790141,289.6298899,13.7622796,284.6396438,16.8684685,UK0006,-1.306160,51.883100,80.0,0.0,5.968436,CAP,FF_UK0006_20240812_001833_548_0366336.fits,1723421917.969812,N +UM1,2024, 8,12, 0,18,55.48,1.12,0.121,10.4660912,17.6338734,11.0750813,16.6367727,313.7672348,-19.8855683,313.0209334,-20.8034902,UK0006,-1.306160,51.883100,80.0,0.0,9.540220,PER,FF_UK0006_20240812_001854_044_0366848.fits,1723421935.479856,N +UM1,2024, 8,12, 0,19,8.29,0.39,0.161,16.2690128,16.5608473,16.8935454,15.2712231,307.8135661,-20.1036379,306.9241986,-21.2571028,UK0006,-1.306160,51.883100,80.0,0.0,8.823279,PER,FF_UK0006_20240812_001904_291_0367104.fits,1723421948.289644,N +UM1,2024, 8,12, 0,19,31.26,-0.20,0.526,25.1625116,28.9441525,27.3360345,21.8237109,302.5456847,-6.2088443,298.6363000,-12.5071586,UK0006,-1.306160,51.883100,80.0,0.0,14.030963,PER,FF_UK0006_20240812_001924_787_0367616.fits,1723421971.258056,N +UM1,2024, 8,12, 0,22,33.35,-0.19,0.325,97.8355952,33.4263005,94.4838439,28.6067529,252.1421458,30.2402735,250.7155400,24.7752274,UK0006,-1.306160,51.883100,80.0,0.0,17.263994,PER,FF_UK0006_20240812_002229_246_0372224.fits,1723422153.346788,N +UM1,2024, 8,12, 0,24,36.81,2.94,0.121,97.0747189,27.6691972,96.9652710,26.0127393,248.6722535,25.6372722,247.5167028,24.3505728,UK0006,-1.306160,51.883100,80.0,0.0,13.678548,spo,FF_UK0006_20240812_002432_220_0375296.fits,1723422276.805476,N +UM1,2024, 8,12, 0,27,43.90,-0.48,0.571,52.0336910,48.5597582,51.6081800,35.7660603,292.9069851,19.7829943,286.5603262,8.5567330,UK0006,-1.306160,51.883100,80.0,0.0,22.406620,PER,FF_UK0006_20240812_002736_679_0379904.fits,1723422463.895844,N +UM1,2024, 8,12, 0,27,51.24,3.66,0.200,75.6850711,22.5794935,76.2516393,22.4041956,261.5839924,9.2744535,261.0553490,9.4528483,UK0006,-1.306160,51.883100,80.0,0.0,2.756037,spo,FF_UK0006_20240812_002746_927_0380160.fits,1723422471.243148,N +UM1,2024, 8,12, 0,28,39.63,0.23,0.324,102.4794991,22.5226773,100.1012601,19.0127368,241.8474362,25.1238927,241.1571527,21.0180855,UK0006,-1.306160,51.883100,80.0,0.0,12.837104,PER,FF_UK0006_20240812_002838_166_0381440.fits,1723422519.633132,N +UM1,2024, 8,12, 0,29,14.98,0.83,0.283,74.1696855,27.1507204,74.0610908,23.0419652,265.8678666,12.0749737,263.4262880,8.7401577,UK0006,-1.306160,51.883100,80.0,0.0,14.501259,spo,FF_UK0006_20240812_002908_909_0382208.fits,1723422554.981756,N +UM1,2024, 8,12, 0,29,54.81,0.88,0.446,41.8564944,31.1800404,42.5215663,24.5484310,292.3150441,0.8013645,289.0265390,-4.9883165,UK0006,-1.306160,51.883100,80.0,0.0,14.937284,PER,FF_UK0006_20240812_002949_900_0383232.fits,1723422594.811592,N +UM1,2024, 8,12, 0,30,44.53,1.57,0.283,11.0686941,24.4377173,14.3265135,21.6597096,317.0015217,-13.0635266,313.5392316,-15.3941721,UK0006,-1.306160,51.883100,80.0,0.0,14.423500,spo,FF_UK0006_20240812_003041_139_0384512.fits,1723422644.529780,N +UM1,2024, 8,12, 0,31,49.74,2.06,0.202,36.4293442,26.6582572,36.9761065,24.2686303,295.4082126,-5.2132118,294.0557561,-7.2489665,UK0006,-1.306160,51.883100,80.0,0.0,12.073922,PER,FF_UK0006_20240812_003142_625_0386048.fits,1723422709.739888,N +UM1,2024, 8,12, 0,31,53.70,1.22,0.485,39.6836934,36.8988491,37.1554589,30.7485539,296.7736518,5.3064986,296.3517192,-1.1779506,UK0006,-1.306160,51.883100,80.0,0.0,13.398205,spo,FF_UK0006_20240812_003152_873_0386304.fits,1723422713.699532,N +UM1,2024, 8,12, 0,34,55.16,2.06,0.242,78.6121716,22.8487663,77.4857398,20.1943014,261.3515035,11.1384661,260.5419086,8.3987686,UK0006,-1.306160,51.883100,80.0,0.0,11.771809,PER,FF_UK0006_20240812_003447_085_0390656.fits,1723422895.160204,N +UM1,2024, 8,12, 0,35,20.87,-0.06,0.491,56.9205074,60.6277116,55.5348485,47.8123719,299.7238120,31.3570923,292.2893319,20.3869260,UK0006,-1.306160,51.883100,80.0,0.0,26.151297,PER,FF_UK0006_20240812_003517_828_0391424.fits,1723422920.874448,N +UM1,2024, 8,12, 0,35,55.78,0.69,0.244,115.0761599,39.6013585,111.5452501,36.2386243,249.7098213,44.6747380,248.6084817,40.3851512,UK0006,-1.306160,51.883100,80.0,0.0,17.907220,PER,FF_UK0006_20240812_003548_572_0392192.fits,1723422955.781456,N +UM1,2024, 8,12, 0,36,31.89,3.97,0.279,58.7028269,58.0622598,61.7758738,58.7198924,297.3722086,29.8697882,296.3848620,31.3871882,UK0006,-1.306160,51.883100,80.0,0.0,6.226484,CAP,FF_UK0006_20240812_003629_563_0393216.fits,1723422991.891496,N +UM1,2024, 8,12, 0,38,0.22,1.97,0.203,66.5742742,30.9153916,66.3461612,27.7699393,275.7978831,11.1673501,274.1301612,8.4783264,UK0006,-1.306160,51.883100,80.0,0.0,15.549042,spo,FF_UK0006_20240812_003751_545_0395264.fits,1723423080.215964,N +UM1,2024, 8,12, 0,39,6.43,2.66,0.200,87.6775637,24.2221687,88.4785822,23.7051237,256.6498263,17.4560641,255.7147003,17.5352181,UK0006,-1.306160,51.883100,80.0,0.0,4.474084,CAP,FF_UK0006_20240812_003903_279_0397056.fits,1723423146.430476,N +UM1,2024, 8,12, 0,40,24.77,0.12,0.363,87.1504792,19.7100447,85.5373714,15.9711386,254.3671502,13.6772382,253.1838336,9.8054088,UK0006,-1.306160,51.883100,80.0,0.0,11.120897,PER,FF_UK0006_20240812_004015_013_0398848.fits,1723423224.768176,N +UM1,2024, 8,12, 0,41,43.57,1.90,0.204,74.7843917,46.4755672,73.1885213,42.0805706,281.6808330,27.3157419,279.4426676,23.2508684,UK0006,-1.306160,51.883100,80.0,0.0,22.263312,PER,FF_UK0006_20240812_004136_995_0400896.fits,1723423303.571564,N +UM1,2024, 8,12, 0,41,56.60,0.39,0.204,16.0172168,62.9079047,20.3123550,58.2245032,322.1442389,25.4817048,318.8283327,21.3459153,UK0006,-1.306160,51.883100,80.0,0.0,25.135221,PER,FF_UK0006_20240812_004147_243_0401152.fits,1723423316.604840,N +UM1,2024, 8,12, 0,42,20.95,0.12,0.286,102.9334939,52.6544943,97.3759301,47.0953102,273.2445785,45.1756322,269.8388911,39.0674205,UK0006,-1.306160,51.883100,80.0,0.0,23.138298,PER,FF_UK0006_20240812_004217_986_0401920.fits,1723423340.951092,N +UM1,2024, 8,12, 0,42,27.82,2.65,0.162,62.3068691,23.9367755,61.9204120,22.1204266,276.1205424,3.2684176,275.4266155,1.5526032,UK0006,-1.306160,51.883100,80.0,0.0,11.456178,PER,FF_UK0006_20240812_004217_986_0401920.fits,1723423347.823332,N +UM1,2024, 8,12, 0,45,35.59,1.01,0.163,80.8044720,43.8543690,79.3560418,40.7688240,277.1211511,28.2912192,275.6442433,25.3032326,UK0006,-1.306160,51.883100,80.0,0.0,20.055092,PER,FF_UK0006_20240812_004532_694_0406784.fits,1723423535.591556,N +UM1,2024, 8,12, 0,45,39.19,0.72,0.204,9.0243993,43.0007377,11.4178086,39.1740642,324.4614244,5.2052541,322.2455484,1.5999121,UK0006,-1.306160,51.883100,80.0,0.0,20.763141,PER,FF_UK0006_20240812_004532_694_0406784.fits,1723423539.189452,N +UM1,2024, 8,12, 0,48,21.89,1.80,0.202,44.4217412,26.7633739,46.1451847,24.0976489,293.0415007,-2.2551472,290.4693643,-3.9661782,UK0006,-1.306160,51.883100,80.0,0.0,15.254079,spo,FF_UK0006_20240812_004816_658_0410880.fits,1723423701.893500,N +UM1,2024, 8,12, 0,49,20.23,-0.04,0.286,20.5507211,54.5044041,24.6420919,47.8742580,319.6415521,17.7546048,315.3895764,11.9572931,UK0006,-1.306160,51.883100,80.0,0.0,24.833098,PER,FF_UK0006_20240812_004918_144_0412416.fits,1723423760.233064,N +UM1,2024, 8,12, 0,52,53.60,0.45,0.204,19.1821841,48.6449489,21.2719203,44.6670041,320.0748523,11.8506258,317.7780201,8.2783180,UK0006,-1.306160,51.883100,80.0,0.0,20.757236,PER,FF_UK0006_20240812_005253_347_0417792.fits,1723423973.600508,N +UM1,2024, 8,12, 0,56,38.57,0.11,0.204,57.3905426,43.7451827,57.2106397,39.2488749,294.1354957,17.6791990,291.7315646,13.8216604,UK0006,-1.306160,51.883100,80.0,0.0,22.058916,PER,FF_UK0006_20240812_005628_550_0423168.fits,1723424198.570848,N +UM1,2024, 8,12, 0,56,38.82,0.02,0.122,57.2023244,38.4243244,57.0932284,35.9689399,291.2849894,13.1208396,290.0293256,10.9930380,UK0006,-1.306160,51.883100,80.0,0.0,20.116209,PER,FF_UK0006_20240812_005638_798_0423424.fits,1723424198.823468,N +UM1,2024, 8,12, 0,59,59.49,1.21,0.283,35.3952138,34.8568404,34.5960974,30.6460824,306.2711315,2.1060234,305.4095462,-2.0698204,UK0006,-1.306160,51.883100,80.0,0.0,15.040788,spo,FF_UK0006_20240812_005953_505_0428288.fits,1723424399.492824,N +UM1,2024, 8,12, 1, 0,3.90,1.91,0.162,66.5860360,37.0274915,65.8934968,34.1963766,284.9892800,16.1384263,283.7506347,13.5122162,UK0006,-1.306160,51.883100,80.0,0.0,17.762004,PER,FF_UK0006_20240812_010003_753_0428544.fits,1723424403.898788,N +UM1,2024, 8,12, 1, 0,27.88,0.40,0.284,56.4024101,34.9065128,56.5425735,29.9787959,290.9060146,9.7933063,288.2217925,5.6438106,UK0006,-1.306160,51.883100,80.0,0.0,17.341415,PER,FF_UK0006_20240812_010024_249_0429056.fits,1723424427.877544,N +UM1,2024, 8,12, 1, 0,35.76,1.85,0.122,13.5113047,30.3594377,14.2888241,28.5870895,323.1052971,-6.9058973,322.1627065,-8.5569759,UK0006,-1.306160,51.883100,80.0,0.0,15.592168,PER,FF_UK0006_20240812_010034_496_0429312.fits,1723424435.762844,N +UM1,2024, 8,12, 1, 0,56.71,2.43,0.162,23.1583673,21.8583442,23.8250848,19.9075450,312.8600913,-13.5214631,311.7271336,-15.2500198,UK0006,-1.306160,51.883100,80.0,0.0,12.660309,PER,FF_UK0006_20240812_010054_992_0429824.fits,1723424456.708388,N +UM1,2024, 8,12, 1, 2,22.92,1.45,0.122,77.0387323,31.7807124,76.4584416,29.9206431,275.1043626,17.2575873,274.2954401,15.4954963,UK0006,-1.306160,51.883100,80.0,0.0,15.825716,PER,FF_UK0006_20240812_010216_974_0431872.fits,1723424542.922328,N +UM1,2024, 8,12, 1, 3,36.01,2.19,0.122,22.6122948,42.9964182,23.7618592,40.5943935,319.1204180,6.8786027,317.6957077,4.7587645,UK0006,-1.306160,51.883100,80.0,0.0,20.862511,PER,FF_UK0006_20240812_010328_708_0433664.fits,1723424616.006836,N +UM1,2024, 8,12, 1, 4,20.01,0.54,0.245,47.2502940,43.3256931,47.7163691,38.1175460,302.4199861,13.5927262,299.6352246,9.1436262,UK0006,-1.306160,51.883100,80.0,0.0,21.345107,PER,FF_UK0006_20240812_010419_947_0434944.fits,1723424660.008364,N +UM1,2024, 8,12, 1, 4,38.97,-0.10,0.285,1.0800464,36.3252803,4.4906677,31.7126686,334.9675526,-1.7865549,331.9968772,-6.3112976,UK0006,-1.306160,51.883100,80.0,0.0,18.990572,PER,FF_UK0006_20240812_010430_194_0435200.fits,1723424678.971948,N +UM1,2024, 8,12, 1, 6,36.40,0.85,0.284,39.6585676,31.3002480,40.4160456,26.8525130,303.2818014,0.1540809,300.9068107,-3.6644740,UK0006,-1.306160,51.883100,80.0,0.0,15.840792,PER,FF_UK0006_20240812_010633_167_0438272.fits,1723424796.398316,N +UM1,2024, 8,12, 1, 9,30.75,1.44,0.163,25.7000102,55.0294267,27.3039426,51.5328495,321.8144448,19.0206814,319.7939362,15.9500784,UK0006,-1.306160,51.883100,80.0,0.0,22.225667,PER,FF_UK0006_20240812_010927_378_0442624.fits,1723424970.747476,N +UM1,2024, 8,12, 1, 9,56.89,1.88,0.560,97.0602326,40.6984005,105.8844489,35.7144837,270.7967286,34.7882252,260.5303466,36.6151336,UK0006,-1.306160,51.883100,80.0,0.0,15.220337,PAU,FF_UK0006_20240812_010947_874_0443136.fits,1723424996.889552,N +UM1,2024, 8,12, 1,10,2.27,-0.21,0.405,92.8302387,26.0078542,90.3402147,20.8945585,261.9046558,21.8624146,260.1964909,16.5002234,UK0006,-1.306160,51.883100,80.0,0.0,13.831017,PER,FF_UK0006_20240812_010958_122_0443392.fits,1723425002.270328,N +UM1,2024, 8,12, 1,10,47.73,1.02,0.204,54.3828469,45.4112498,54.3106582,41.0500471,300.5208442,17.9351346,298.1984998,14.1879995,UK0006,-1.306160,51.883100,80.0,0.0,21.400604,PER,FF_UK0006_20240812_011039_113_0444416.fits,1723425047.732532,N +UM1,2024, 8,12, 1,11,25.53,1.52,0.121,16.8991804,27.7237365,17.6674553,26.1390894,322.4346070,-9.0215958,321.4531016,-10.4511060,UK0006,-1.306160,51.883100,80.0,0.0,14.206169,PER,FF_UK0006_20240812_011120_104_0445440.fits,1723425085.533972,N +UM1,2024, 8,12, 1,11,36.43,2.07,0.162,47.5284734,27.2670200,47.6771598,25.1855291,296.6107907,-0.5751939,295.5431835,-2.3668432,UK0006,-1.306160,51.883100,80.0,0.0,12.892658,PER,FF_UK0006_20240812_011130_351_0445696.fits,1723425096.426192,N +UM1,2024, 8,12, 1,13,3.96,-0.28,0.366,91.1391000,41.4098607,87.7202683,34.6665888,275.8200112,31.9780240,272.5830027,25.2969745,UK0006,-1.306160,51.883100,80.0,0.0,19.814997,PER,FF_UK0006_20240812_011302_581_0448000.fits,1723425183.957872,N +UM1,2024, 8,12, 1,17,18.38,1.17,0.122,107.5329392,39.4823928,105.9926180,37.5185627,264.9043755,40.0737593,263.9905880,37.8818843,UK0006,-1.306160,51.883100,80.0,0.0,18.885226,PER,FF_UK0006_20240812_011708_526_0454144.fits,1723425438.378644,N +UM1,2024, 8,12, 1,17,38.03,2.12,0.200,47.1092741,57.7031649,44.8651161,57.4260263,313.2402595,26.1400132,314.2520652,25.3057933,UK0006,-1.306160,51.883100,80.0,0.0,6.172751,spo,FF_UK0006_20240812_011729_022_0454656.fits,1723425458.030992,N +UM1,2024, 8,12, 1,17,50.71,-0.32,0.406,76.2238631,31.0367111,74.6681364,24.5639930,279.0591223,16.2419302,276.0897596,10.2893957,UK0006,-1.306160,51.883100,80.0,0.0,16.310675,PER,FF_UK0006_20240812_011749_517_0455168.fits,1723425470.706128,N +UM1,2024, 8,12, 1,19,40.34,0.86,0.162,15.0162162,34.5535815,16.2256171,31.9250800,327.2705773,-2.5672334,325.8328337,-4.9904603,UK0006,-1.306160,51.883100,80.0,0.0,17.332205,PER,FF_UK0006_20240812_011931_995_0457728.fits,1723425580.338912,N +UM1,2024, 8,12, 1,21,0.57,3.09,0.201,80.6964017,29.2252736,79.6745527,28.6255371,275.5256243,17.2798788,275.8499777,16.2485604,UK0006,-1.306160,51.883100,80.0,0.0,5.365468,spo,FF_UK0006_20240812_012053_976_0459776.fits,1723425660.565556,N +UM1,2024, 8,12, 1,21,41.53,-1.25,0.163,351.7133101,57.0647368,355.8245913,53.7896650,344.8689008,19.1602345,342.6722976,15.7303684,UK0006,-1.306160,51.883100,80.0,0.0,24.610911,PER,FF_UK0006_20240812_012134_967_0460800.fits,1723425701.527344,N +UM1,2024, 8,12, 1,21,43.02,2.63,1.119,65.3083990,50.6100102,58.1935240,52.8449015,300.0541749,26.3852679,305.4625951,25.5026243,UK0006,-1.306160,51.883100,80.0,0.0,4.418489,spo,FF_UK0006_20240812_012134_967_0460800.fits,1723425703.021372,N +UM1,2024, 8,12, 1,21,50.56,-0.21,0.447,71.3247889,39.0847076,69.4044163,30.5517203,288.6382320,20.0355650,284.5564196,12.2939898,UK0006,-1.306160,51.883100,80.0,0.0,19.387760,PER,FF_UK0006_20240812_012145_215_0461056.fits,1723425710.558344,N +UM1,2024, 8,12, 1,24,2.44,2.40,0.121,87.6182576,51.5284074,89.4599288,49.1821038,289.7135019,36.8701326,286.5330635,36.2709406,UK0006,-1.306160,51.883100,80.0,0.0,21.615927,spo,FF_UK0006_20240812_012358_435_0464384.fits,1723425842.444936,N +UM1,2024, 8,12, 1,24,24.95,-0.18,0.407,68.0647696,39.2106747,66.8358084,31.2640236,291.4809322,18.5843667,287.4537088,11.5812921,UK0006,-1.306160,51.883100,80.0,0.0,19.681961,PER,FF_UK0006_20240812_012418_931_0464896.fits,1723425864.954736,N +UM1,2024, 8,12, 1,24,59.29,0.16,0.326,31.4654231,45.3952928,33.6600046,38.6215957,319.0127649,10.9777307,315.1661836,5.1442778,UK0006,-1.306160,51.883100,80.0,0.0,21.362731,PER,FF_UK0006_20240812_012449_674_0465664.fits,1723425899.292320,N +UM1,2024, 8,12, 1,27,29.80,0.07,0.244,115.5934750,41.0413663,112.3555381,36.7425542,263.9176632,45.8650265,261.4759614,41.2075077,UK0006,-1.306160,51.883100,80.0,0.0,20.396444,PER,FF_UK0006_20240812_012723_390_0469504.fits,1723426049.798308,N +UM1,2024, 8,12, 1,28,24.39,-0.62,0.408,87.4128572,59.2543889,81.6693890,50.0003504,298.8456667,41.4470164,292.4476767,33.0386727,UK0006,-1.306160,51.883100,80.0,0.0,24.061593,PER,FF_UK0006_20240812_012814_629_0470784.fits,1723426104.393140,N +UM1,2024, 8,12, 1,29,5.38,0.72,0.122,348.8745223,48.5654456,351.0597070,46.5896139,349.4366430,10.8961309,348.1689718,8.7713725,UK0006,-1.306160,51.883100,80.0,0.0,20.186855,PER,FF_UK0006_20240812_012855_620_0471808.fits,1723426145.384776,N +UM1,2024, 8,12, 1,29,36.84,1.24,0.122,93.9689662,28.4798390,93.2101947,26.8131687,267.7962387,24.3756470,267.1180297,22.6897263,UK0006,-1.306160,51.883100,80.0,0.0,14.781685,PER,FF_UK0006_20240812_012936_610_0472832.fits,1723426176.836012,N +UM1,2024, 8,12, 1,29,44.59,0.14,0.285,71.7695108,42.8907438,70.4326562,37.1468540,292.9180792,23.2027574,289.9390882,18.0775849,UK0006,-1.306160,51.883100,80.0,0.0,20.464644,PER,FF_UK0006_20240812_012936_610_0472832.fits,1723426184.590068,N +UM1,2024, 8,12, 1,30,17.10,1.08,0.243,64.9583153,31.9055562,64.5085443,28.1692824,290.6344941,11.1870695,288.8157657,7.8868201,UK0006,-1.306160,51.883100,80.0,0.0,15.443885,PER,FF_UK0006_20240812_013007_354_0473600.fits,1723426217.104352,N +UM1,2024, 8,12, 1,30,34.64,-0.04,0.323,76.2689048,22.6712518,75.4850376,18.7260849,276.9301224,9.6745592,275.1134659,6.0884966,UK0006,-1.306160,51.883100,80.0,0.0,12.408593,PER,FF_UK0006_20240812_013027_849_0474112.fits,1723426234.644940,N +UM1,2024, 8,12, 1,31,35.37,1.55,0.360,79.3112263,23.4916656,81.1497965,22.2491730,275.4481890,12.0411285,273.3029079,12.1220848,UK0006,-1.306160,51.883100,80.0,0.0,5.823486,spo,FF_UK0006_20240812_013129_335_0475648.fits,1723426295.369516,N +UM1,2024, 8,12, 1,31,57.68,0.74,0.163,25.5732953,52.7781987,31.3175748,50.6348432,326.8530515,16.8390267,322.6394728,15.8898227,UK0006,-1.306160,51.883100,80.0,0.0,25.543069,spo,FF_UK0006_20240812_013149_831_0476160.fits,1723426317.682292,N +UM1,2024, 8,12, 1,32,53.48,-0.10,0.204,113.4910722,52.7340524,109.7671553,48.9522700,281.4043071,50.8149655,278.1176027,46.9223978,UK0006,-1.306160,51.883100,80.0,0.0,21.859163,PER,FF_UK0006_20240812_013251_317_0477696.fits,1723426373.478732,N +UM1,2024, 8,12, 1,33,1.60,1.92,0.121,19.9527253,20.5407126,20.4633359,19.2626131,323.5850823,-15.5023282,322.8032390,-16.6420219,UK0006,-1.306160,51.883100,80.0,0.0,11.267081,PER,FF_UK0006_20240812_013301_565_0477952.fits,1723426381.601600,N +UM1,2024, 8,12, 1,35,22.76,-0.56,0.489,78.6004267,42.9972481,75.7224766,32.9577899,290.2560939,26.5709220,285.0594539,17.4743237,UK0006,-1.306160,51.883100,80.0,0.0,21.046266,PER,FF_UK0006_20240812_013514_786_0481280.fits,1723426522.764736,N +UM1,2024, 8,12, 1,36,29.57,2.81,0.440,15.7899653,51.2690229,11.4689628,50.2607261,333.7146630,14.0111288,336.3382185,12.6060269,UK0006,-1.306160,51.883100,80.0,0.0,6.626226,spo,FF_UK0006_20240812_013626_520_0483072.fits,1723426589.570680,N +UM1,2024, 8,12, 1,37,59.32,-0.12,0.204,89.0484070,53.8866555,86.0444215,49.2403443,294.8667331,39.0160797,291.8734176,34.6198821,UK0006,-1.306160,51.883100,80.0,0.0,24.508775,PER,FF_UK0006_20240812_013758_749_0485376.fits,1723426679.316820,N +UM1,2024, 8,12, 1,39,15.83,1.06,0.122,88.9034548,35.6932820,88.0564728,33.7878660,279.1507276,26.7073837,278.2639775,24.8428095,UK0006,-1.306160,51.883100,80.0,0.0,16.657452,PER,FF_UK0006_20240812_013910_484_0487168.fits,1723426755.826032,N +UM1,2024, 8,12, 1,40,4.23,1.19,0.163,62.7478842,40.7211593,62.3925676,37.7661321,299.8009291,17.4000207,298.2824641,14.8158054,UK0006,-1.306160,51.883100,80.0,0.0,18.253346,PER,FF_UK0006_20240812_014001_722_0488448.fits,1723426804.225068,N +UM1,2024, 8,12, 1,41,43.24,0.31,0.163,88.3847016,51.2603748,86.6397825,47.7850557,293.5061881,37.0690504,291.1776051,33.9440087,UK0006,-1.306160,51.883100,80.0,0.0,22.405963,PER,FF_UK0006_20240812_014133_952_0490752.fits,1723426903.241972,N +UM1,2024, 8,12, 1,43,26.20,3.74,0.122,19.0960705,50.4204476,19.9662204,48.3698467,333.1789734,13.5758958,332.1678079,11.6914621,UK0006,-1.306160,51.883100,80.0,0.0,17.459819,PER,FF_UK0006_20240812_014316_429_0493312.fits,1723427006.201060,N +UM1,2024, 8,12, 1,43,31.62,2.46,0.280,40.0758534,39.9624815,43.5823322,40.0771400,315.6768860,8.2386502,313.2558604,9.4614929,UK0006,-1.306160,51.883100,80.0,0.0,9.590139,SDA,FF_UK0006_20240812_014326_677_0493568.fits,1723427011.620916,N +UM1,2024, 8,12, 1,44,17.49,3.08,0.242,49.5033736,45.3107439,47.8599009,43.3570285,311.9519811,16.1063380,312.0498785,13.8282729,UK0006,-1.306160,51.883100,80.0,0.0,9.434231,spo,FF_UK0006_20240812_014407_668_0494592.fits,1723427057.487676,N +UM1,2024, 8,12, 1,46,35.73,2.01,0.162,10.7287901,22.9029090,11.7008659,20.8162408,336.1450558,-14.6246242,334.9462113,-16.5825301,UK0006,-1.306160,51.883100,80.0,0.0,14.033565,PER,FF_UK0006_20240812_014631_136_0498176.fits,1723427195.727856,N +UM1,2024, 8,12, 1,46,56.42,0.35,0.283,91.4087342,23.9952992,90.0046124,20.6388736,270.7722139,19.4999541,269.5259080,16.1026187,UK0006,-1.306160,51.883100,80.0,0.0,12.711356,PER,FF_UK0006_20240812_014651_631_0498688.fits,1723427216.421408,N +UM1,2024, 8,12, 1,47,5.67,1.57,0.201,31.0229495,33.5029474,32.2334281,32.3114815,321.0257789,-0.3906183,319.6792646,-1.1889213,UK0006,-1.306160,51.883100,80.0,0.0,7.779584,spo,FF_UK0006_20240812_014701_879_0498944.fits,1723427225.667360,N +UM1,2024, 8,12, 1,47,6.14,1.73,0.122,67.0445573,42.4566272,66.7148544,40.0182054,299.9080589,20.6994152,298.5575339,18.6044819,UK0006,-1.306160,51.883100,80.0,0.0,20.068279,PER,FF_UK0006_20240812_014701_879_0498944.fits,1723427226.140108,N +UM1,2024, 8,12, 1,50,19.76,-0.15,0.449,46.8124993,48.7507167,47.8461564,38.6936238,316.8806860,18.2390012,311.3457809,9.7012484,UK0006,-1.306160,51.883100,80.0,0.0,22.470239,PER,FF_UK0006_20240812_015016_586_0503808.fits,1723427419.762656,N +UM1,2024, 8,12, 1,52,13.15,0.58,0.122,79.9912169,63.5481064,78.4369272,60.8140585,312.1998304,41.0410074,309.9588166,38.7947363,UK0006,-1.306160,51.883100,80.0,0.0,23.122678,PER,FF_UK0006_20240812_015209_311_0506624.fits,1723427533.153116,N +UM1,2024, 8,12, 1,52,22.03,-0.09,0.283,95.6274747,24.1219889,94.1471421,20.6637525,269.1220909,22.1340363,267.8034875,18.6266191,UK0006,-1.306160,51.883100,80.0,0.0,13.130826,PER,FF_UK0006_20240812_015219_559_0506880.fits,1723427542.027748,N +UM1,2024, 8,12, 1,53,44.75,-0.13,0.244,5.8872534,43.1879866,8.5747011,38.8751535,343.8390810,5.2076418,341.4800034,1.0660553,UK0006,-1.306160,51.883100,80.0,0.0,19.511886,PER,FF_UK0006_20240812_015341_540_0508928.fits,1723427624.754368,N +UM1,2024, 8,12, 1,54,0.07,2.28,0.163,17.1498782,57.4629109,17.8956161,54.3309613,338.4778976,20.2449147,337.3964044,17.2559620,UK0006,-1.306160,51.883100,80.0,0.0,19.434317,spo,FF_UK0006_20240812_015351_788_0509184.fits,1723427640.074144,N +UM1,2024, 8,12, 1,54,26.81,-0.04,0.163,119.3048296,52.0723596,116.5249093,49.4300278,283.3437982,53.7347548,280.7662234,50.9787370,UK0006,-1.306160,51.883100,80.0,0.0,19.523078,PER,FF_UK0006_20240812_015422_531_0509952.fits,1723427666.811112,N +UM1,2024, 8,12, 1,54,39.47,-0.20,0.490,55.4704834,57.3814542,54.8867504,45.6103330,318.0857281,28.2982103,311.3142654,18.2910228,UK0006,-1.306160,51.883100,80.0,0.0,24.025812,PER,FF_UK0006_20240812_015432_779_0510208.fits,1723427679.468224,N +UM1,2024, 8,12, 1,57,5.63,-0.51,0.284,5.2567003,29.8941376,7.1977884,25.8533869,344.3834814,-8.0924899,342.3667057,-12.0069680,UK0006,-1.306160,51.883100,80.0,0.0,15.462511,PER,FF_UK0006_20240812_015656_247_0513792.fits,1723427825.631428,N +UM1,2024, 8,12, 1,57,8.15,0.67,0.163,82.5533365,51.6515566,80.9065167,48.3349790,300.6553822,34.5675407,298.6350781,31.5260457,UK0006,-1.306160,51.883100,80.0,0.0,21.357533,PER,FF_UK0006_20240812_015706_495_0514048.fits,1723427828.145928,N +UM1,2024, 8,12, 1,59,34.88,0.56,0.284,54.8402892,29.7904191,54.9968298,25.2940691,304.2164451,4.7263874,301.8201491,0.9179027,UK0006,-1.306160,51.883100,80.0,0.0,15.849589,PER,FF_UK0006_20240812_015929_963_0517632.fits,1723427974.876000,N +UM1,2024, 8,12, 1,59,53.98,1.10,0.120,86.3511152,59.3606767,89.8001695,58.6470919,307.2691815,41.0635610,305.1400032,42.1249902,UK0006,-1.306160,51.883100,80.0,0.0,15.964609,NDA,FF_UK0006_20240812_015950_459_0518144.fits,1723427993.983264,N +UM1,2024, 8,12, 2, 1,41.98,0.06,0.367,46.5520635,68.5559704,47.6989426,59.7704123,331.1740581,35.2467672,325.1785471,28.0737439,UK0006,-1.306160,51.883100,80.0,0.0,23.959047,PER,FF_UK0006_20240812_020132_936_0520704.fits,1723428101.976028,N +UM1,2024, 8,12, 2, 2,9.16,0.92,0.362,35.1407589,67.9543831,26.9121594,64.9569193,335.3824270,32.6679110,337.6412983,28.6722172,UK0006,-1.306160,51.883100,80.0,0.0,12.284326,spo,FF_UK0006_20240812_020203_679_0521472.fits,1723428129.159064,N +UM1,2024, 8,12, 2, 3,45.69,2.49,0.244,59.8445496,37.8643064,59.6751410,33.3899566,306.0014082,13.7746369,303.6279867,9.9482442,UK0006,-1.306160,51.883100,80.0,0.0,18.355184,PER,FF_UK0006_20240812_020335_909_0523776.fits,1723428225.694788,N +UM1,2024, 8,12, 2, 5,16.48,2.36,0.319,17.7671778,42.8443244,19.6111092,44.1486012,338.0355289,5.9696585,336.9785295,7.5141455,UK0006,-1.306160,51.883100,80.0,0.0,5.847204,SDA,FF_UK0006_20240812_020508_138_0526080.fits,1723428316.475880,N +UM1,2024, 8,12, 2, 6,27.81,0.69,0.122,31.2478984,50.9964798,32.2892077,48.4109833,331.4566197,16.2160691,329.8987312,14.0081871,UK0006,-1.306160,51.883100,80.0,0.0,21.841685,PER,FF_UK0006_20240812_020619_872_0527872.fits,1723428387.805568,N +UM1,2024, 8,12, 2, 6,58.23,-0.50,0.245,93.3095648,48.1938838,90.7422484,42.9450403,294.3188402,37.6042846,290.9007175,32.8107156,UK0006,-1.306160,51.883100,80.0,0.0,22.664116,PER,FF_UK0006_20240812_020650_615_0528640.fits,1723428418.226064,N +UM1,2024, 8,12, 2, 7,48.60,1.78,0.122,39.0147049,33.1642560,39.4143905,31.1782159,319.8553569,1.6563049,318.7690889,-0.0401700,UK0006,-1.306160,51.883100,80.0,0.0,16.547575,PER,FF_UK0006_20240812_020741_854_0529920.fits,1723428468.603672,N +UM1,2024, 8,12, 2,10,56.58,-1.26,0.651,84.7820525,39.8368267,81.3357049,27.9064455,292.9529190,27.4445837,286.7148470,16.6215333,UK0006,-1.306160,51.883100,80.0,0.0,18.852385,PER,FF_UK0006_20240812_021056_561_0534784.fits,1723428656.580888,N +UM1,2024, 8,12, 2,11,47.03,0.73,0.202,70.4914633,26.3364010,70.0882313,23.6022784,293.7536872,9.4563672,292.4310827,7.0286605,UK0006,-1.306160,51.883100,80.0,0.0,13.632365,PER,FF_UK0006_20240812_021137_552_0535808.fits,1723428707.026168,N +UM1,2024, 8,12, 2,12,8.97,1.78,0.122,48.1338239,33.3079980,48.3848568,31.2840071,314.0929948,5.0341343,312.9675135,3.3369156,UK0006,-1.306160,51.883100,80.0,0.0,16.714323,PER,FF_UK0006_20240812_021208_295_0536576.fits,1723428728.965068,N +UM1,2024, 8,12, 2,14,7.33,2.40,0.122,44.6941384,33.0905628,44.9669013,31.3290777,317.0697243,3.5494453,316.0938097,2.0645137,UK0006,-1.306160,51.883100,80.0,0.0,14.617004,PER,FF_UK0006_20240812_021401_020_0539392.fits,1723428847.330140,N +UM1,2024, 8,12, 2,14,11.08,0.49,0.163,55.5031691,44.0168536,56.4251380,40.4816068,314.9283679,17.1745631,312.3736617,14.5435475,UK0006,-1.306160,51.883100,80.0,0.0,22.062600,PER,FF_UK0006_20240812_021401_020_0539392.fits,1723428851.080632,N +UM1,2024, 8,12, 2,14,30.99,0.67,0.243,29.2910659,29.8525298,30.1117909,26.2702064,328.1680745,-4.3180222,326.3685796,-7.5040307,UK0006,-1.306160,51.883100,80.0,0.0,15.029953,PER,FF_UK0006_20240812_021421_516_0539904.fits,1723428870.987132,N +UM1,2024, 8,12, 2,15,32.34,0.44,0.122,103.3765300,31.0770770,102.5324412,29.2196053,274.6601566,31.8989613,273.7467419,30.0634647,UK0006,-1.306160,51.883100,80.0,0.0,16.393448,PER,FF_UK0006_20240812_021523_002_0541440.fits,1723428932.342412,N +UM1,2024, 8,12, 2,17,9.19,1.66,0.122,43.9713205,31.0610831,44.2397771,29.1896759,317.5053105,1.4544731,316.4920079,-0.1356403,UK0006,-1.306160,51.883100,80.0,0.0,15.504585,PER,FF_UK0006_20240812_021705_479_0544000.fits,1723429029.190844,N +UM1,2024, 8,12, 2,18,3.14,0.33,0.162,84.9777754,41.1264379,84.1573343,38.3341002,295.6304050,28.4741074,293.9722177,26.0204099,UK0006,-1.306160,51.883100,80.0,0.0,17.619015,PER,FF_UK0006_20240812_021756_718_0545280.fits,1723429083.136796,N +UM1,2024, 8,12, 2,18,16.58,0.34,0.203,16.6121166,43.0637519,18.4511666,39.3754686,342.1709634,6.0302924,340.1190797,2.6648111,UK0006,-1.306160,51.883100,80.0,0.0,19.358435,PER,FF_UK0006_20240812_021806_966_0545536.fits,1723429096.583440,N +UM1,2024, 8,12, 2,19,17.18,0.22,0.122,347.7833878,48.7828204,350.1366471,47.2950863,2.7201134,11.2034039,1.3144665,9.5375125,UK0006,-1.306160,51.883100,80.0,0.0,17.772015,spo,FF_UK0006_20240812_021908_452_0547072.fits,1723429157.176252,N +UM1,2024, 8,12, 2,20,10.70,-2.22,0.858,355.2337061,58.2765421,10.6604482,40.1464858,357.4408450,20.2281627,346.6386775,2.4965447,UK0006,-1.306160,51.883100,80.0,0.0,24.054247,PER,FF_UK0006_20240812_022009_939_0548608.fits,1723429210.699576,N +UM1,2024, 8,12, 2,20,18.36,2.16,0.162,12.0018271,32.2405495,13.0901861,29.7719414,344.6314557,-5.2193820,343.3668586,-7.5395126,UK0006,-1.306160,51.883100,80.0,0.0,16.255584,PER,FF_UK0006_20240812_022009_939_0548608.fits,1723429218.363868,N +UM1,2024, 8,12, 2,21,24.71,2.09,0.202,56.1775695,24.9461723,56.2580113,22.2973727,306.1941666,1.1630007,304.7726209,-1.0727615,UK0006,-1.306160,51.883100,80.0,0.0,13.103244,PER,FF_UK0006_20240812_022121_673_0550400.fits,1723429284.710016,N +UM1,2024, 8,12, 2,22,38.29,-1.57,0.327,123.7900524,49.1238922,116.7621998,42.8072504,283.7375282,55.0393083,279.0787532,47.6072695,UK0006,-1.306160,51.883100,80.0,0.0,24.426583,PER,FF_UK0006_20240812_022233_407_0552192.fits,1723429358.287104,N +UM1,2024, 8,12, 2,25,9.83,3.09,0.122,53.7858131,32.3603845,54.1069621,30.5309358,312.7144487,6.4914491,311.5543970,5.0462091,UK0006,-1.306160,51.883100,80.0,0.0,15.215975,PER,FF_UK0006_20240812_022507_123_0556032.fits,1723429509.833848,N +UM1,2024, 8,12, 2,27,56.50,0.10,0.323,105.8084785,34.1713479,108.4963910,28.9065671,278.7294133,35.5224981,272.2155735,33.4857728,UK0006,-1.306160,51.883100,80.0,0.0,17.789616,spo,FF_UK0006_20240812_022751_086_0560128.fits,1723429676.503172,N +UM1,2024, 8,12, 2,28,35.97,1.74,0.122,57.8154474,47.2124991,57.9745165,44.9131180,318.9517873,20.7347535,317.4963227,18.8845714,UK0006,-1.306160,51.883100,80.0,0.0,18.870449,PER,FF_UK0006_20240812_022832_077_0561152.fits,1723429715.974848,N +UM1,2024, 8,12, 2,28,53.71,1.25,0.163,81.5612646,38.4314608,80.7661845,35.4982997,298.4186145,24.7126876,296.8114722,22.0992187,UK0006,-1.306160,51.883100,80.0,0.0,18.456141,PER,FF_UK0006_20240812_022852_573_0561664.fits,1723429733.714824,N +UM1,2024, 8,12, 2,29,13.10,-0.28,0.445,41.3920682,27.4713560,42.2903477,21.4051148,321.0707185,-2.7470750,317.8033874,-7.9316143,UK0006,-1.306160,51.883100,80.0,0.0,13.749463,PER,FF_UK0006_20240812_022913_068_0562176.fits,1723429753.102720,N +UM1,2024, 8,12, 2,31,31.15,3.89,0.481,52.8599520,38.8660896,49.8006736,37.8943956,318.2729187,11.7423683,319.9168761,9.7194083,UK0006,-1.306160,51.883100,80.0,0.0,5.383047,spo,FF_UK0006_20240812_023126_288_0565504.fits,1723429891.153248,N +UM1,2024, 8,12, 2,33,50.98,-0.03,0.563,81.5353089,42.9983975,93.9456461,35.1152783,303.1528780,28.0404193,289.0501327,29.1634380,UK0006,-1.306160,51.883100,80.0,0.0,22.077320,spo,FF_UK0006_20240812_023349_757_0569088.fits,1723430030.975096,N +UM1,2024, 8,12, 2,34,55.98,3.25,0.240,82.3319980,46.3082982,81.5324182,45.9099430,305.6284226,30.7958226,305.7552708,30.1218766,UK0006,-1.306160,51.883100,80.0,0.0,2.839006,spo,FF_UK0006_20240812_023451_243_0570624.fits,1723430095.978252,N +UM1,2024, 8,12, 2,36,14.62,2.03,0.121,34.6110581,24.7359678,35.6686708,23.8254703,327.4366101,-7.5971726,326.1990560,-8.1013412,UK0006,-1.306160,51.883100,80.0,0.0,10.964594,spo,FF_UK0006_20240812_023613_225_0572672.fits,1723430174.621256,N +UM1,2024, 8,12, 2,36,41.31,0.28,0.522,50.1174397,28.3079778,58.8610796,25.1840681,316.3947571,1.4106537,308.0739688,2.6324070,UK0006,-1.306160,51.883100,80.0,0.0,16.091988,spo,FF_UK0006_20240812_023633_720_0573184.fits,1723430201.314348,N +UM1,2024, 8,12, 2,36,52.60,1.52,0.121,56.5265148,27.0642428,56.6250222,25.2720401,310.8918283,3.1408211,309.8915430,1.6508458,UK0006,-1.306160,51.883100,80.0,0.0,14.766734,PER,FF_UK0006_20240812_023643_968_0573440.fits,1723430212.603228,N +UM1,2024, 8,12, 2,37,20.51,1.54,0.204,59.2869072,66.9116098,59.1621802,62.5302648,334.1469889,36.8773609,330.7147117,33.5107285,UK0006,-1.306160,51.883100,80.0,0.0,21.522154,PER,FF_UK0006_20240812_023714_711_0574208.fits,1723430240.512236,N +UM1,2024, 8,12, 2,37,43.53,-0.92,0.449,37.9631497,60.8359809,50.0631606,50.3802948,339.5585378,26.7347608,327.6614907,20.6921325,UK0006,-1.306160,51.883100,80.0,0.0,27.701983,spo,FF_UK0006_20240812_023735_207_0574720.fits,1723430263.532996,N +UM1,2024, 8,12, 2,38,57.72,0.07,0.245,73.8241615,51.7459406,72.8027407,46.0691045,315.6967203,30.7534976,311.9163267,26.1027807,UK0006,-1.306160,51.883100,80.0,0.0,23.341256,PER,FF_UK0006_20240812_023857_189_0576768.fits,1723430337.721372,N +UM1,2024, 8,12, 2,39,40.60,-0.84,0.447,96.7561800,41.2333133,93.9389814,32.7048539,293.9633966,34.9723585,288.5998158,27.4369414,UK0006,-1.306160,51.883100,80.0,0.0,19.705993,PER,FF_UK0006_20240812_023938_180_0577792.fits,1723430380.595280,N +UM1,2024, 8,12, 2,39,55.68,1.02,0.122,78.8216607,50.7699922,78.0424757,48.1033833,312.5266186,32.2590830,310.7440732,30.0143675,UK0006,-1.306160,51.883100,80.0,0.0,22.189417,PER,FF_UK0006_20240812_023948_427_0578048.fits,1723430395.679352,N +UM1,2024, 8,12, 2,41,6.53,0.38,0.122,91.7975524,59.1691494,90.4870728,56.8079681,315.3047978,43.2745986,313.1540438,41.3959904,UK0006,-1.306160,51.883100,80.0,0.0,20.172484,PER,FF_UK0006_20240812_024100_162_0579840.fits,1723430466.525356,N +UM1,2024, 8,12, 2,41,30.44,0.55,0.202,104.8546295,25.7855773,103.7958710,23.1412254,275.8207436,28.9948836,274.6061705,26.3942537,UK0006,-1.306160,51.883100,80.0,0.0,13.902539,PER,FF_UK0006_20240812_024120_657_0580352.fits,1723430490.440696,N +UM1,2024, 8,12, 2,41,55.47,0.19,0.243,89.1156855,21.0814605,88.4612893,17.9698789,284.2665274,15.9085066,282.7089109,13.1181665,UK0006,-1.306160,51.883100,80.0,0.0,13.072210,PER,FF_UK0006_20240812_024151_400_0581120.fits,1723430515.473476,N +UM1,2024, 8,12, 2,42,16.63,-0.77,0.285,354.4148076,44.4964446,357.8370688,39.1999131,4.3184056,6.5000679,1.9893251,1.1025433,UK0006,-1.306160,51.883100,80.0,0.0,20.613697,PER,FF_UK0006_20240812_024211_896_0581632.fits,1723430536.625524,N +UM1,2024, 8,12, 2,43,24.91,0.47,0.163,84.2113246,61.6158154,83.6106945,57.4470067,321.4396519,41.4964300,317.2954213,38.7694282,UK0006,-1.306160,51.883100,80.0,0.0,25.600752,spo,FF_UK0006_20240812_024323_630_0583424.fits,1723430604.912960,N +UM1,2024, 8,12, 2,43,28.09,0.37,0.325,56.9298778,40.0461417,57.0330359,33.7648893,319.1377360,14.3801571,315.6734843,9.0927406,UK0006,-1.306160,51.883100,80.0,0.0,19.301676,PER,FF_UK0006_20240812_024323_630_0583424.fits,1723430608.094092,N +UM1,2024, 8,12, 2,44,12.59,-0.09,0.367,32.2621804,61.2745940,35.5150497,53.0947100,344.2049845,26.0441886,339.1325109,19.1111929,UK0006,-1.306160,51.883100,80.0,0.0,22.785933,PER,FF_UK0006_20240812_024404_621_0584448.fits,1723430652.586192,N +UM1,2024, 8,12, 2,44,21.31,1.19,0.121,78.6365222,19.4422088,79.0529679,17.9517679,291.6574480,8.4640432,290.4223479,7.5260363,UK0006,-1.306160,51.883100,80.0,0.0,12.732176,spo,FF_UK0006_20240812_024414_868_0584704.fits,1723430661.305932,N +UM1,2024, 8,12, 2,44,36.19,1.54,0.241,27.3027419,38.7475144,25.5516041,37.1381988,339.8875012,3.7060636,340.7746069,1.7790657,UK0006,-1.306160,51.883100,80.0,0.0,8.799427,KCG,FF_UK0006_20240812_024435_364_0585216.fits,1723430676.187288,N +UM1,2024, 8,12, 2,45,4.68,0.70,0.122,12.5738850,32.6207434,13.4218721,30.7261566,350.4112873,-4.7788378,349.4280162,-6.5541894,UK0006,-1.306160,51.883100,80.0,0.0,16.645704,PER,FF_UK0006_20240812_024455_859_0585728.fits,1723430704.683748,N +UM1,2024, 8,12, 2,46,19.17,1.94,0.477,15.8839210,49.8678303,17.1216888,53.7759512,350.9094412,12.6414236,350.8663623,16.6233206,UK0006,-1.306160,51.883100,80.0,0.0,8.345101,SDA,FF_UK0006_20240812_024617_841_0587776.fits,1723430779.172840,N +UM1,2024, 8,12, 2,48,46.82,1.07,0.122,13.1610071,25.7222642,13.7755479,23.9688552,349.8573716,-11.5391438,349.0289610,-13.1913677,UK0006,-1.306160,51.883100,80.0,0.0,15.130805,PER,FF_UK0006_20240812_024841_309_0591360.fits,1723430926.819444,N +UM1,2024, 8,12, 2,49,43.08,0.37,0.163,62.7751289,68.2739491,62.6354900,64.8306511,337.2009145,38.7801182,334.2479214,36.2554765,UK0006,-1.306160,51.883100,80.0,0.0,21.156685,PER,FF_UK0006_20240812_024942_796_0592896.fits,1723430983.076000,N +UM1,2024, 8,12, 2,50,23.48,0.27,0.285,45.3200672,45.4600835,46.1381790,39.9341640,331.2835119,14.8528137,328.1712516,10.1982873,UK0006,-1.306160,51.883100,80.0,0.0,19.513140,PER,FF_UK0006_20240812_025013_539_0593664.fits,1723431023.478468,N +UM1,2024, 8,12, 2,50,23.81,-0.95,0.367,46.1964846,39.1891435,47.1742740,31.5899535,327.7889522,9.5540228,323.6166012,3.1360020,UK0006,-1.306160,51.883100,80.0,0.0,20.841029,PER,FF_UK0006_20240812_025023_786_0593920.fits,1723431023.810944,N +UM1,2024, 8,12, 2,50,38.10,1.31,0.122,88.2965882,34.8617417,87.6906299,32.9011718,296.8054355,25.7630717,295.7428514,23.9835346,UK0006,-1.306160,51.883100,80.0,0.0,16.623793,PER,FF_UK0006_20240812_025034_034_0594176.fits,1723431038.096888,N +UM1,2024, 8,12, 2,51,46.48,1.29,0.162,93.0345210,25.3137763,92.4888741,22.8475461,286.7648341,21.4651457,285.4352047,19.2798716,UK0006,-1.306160,51.883100,80.0,0.0,15.519511,PER,FF_UK0006_20240812_025145_768_0595968.fits,1723431106.476816,N +UM1,2024, 8,12, 2,52,30.41,0.81,0.285,10.5133136,51.6071927,13.9080938,46.0212760,356.1732770,13.8697883,353.1582496,8.6319340,UK0006,-1.306160,51.883100,80.0,0.0,21.089714,PER,FF_UK0006_20240812_025226_759_0596992.fits,1723431150.408228,N +UM1,2024, 8,12, 2,53,1.33,1.42,0.122,13.5048387,35.0860634,14.3230948,33.0644409,351.9804005,-2.2297921,351.0086216,-4.1281743,UK0006,-1.306160,51.883100,80.0,0.0,17.493368,PER,FF_UK0006_20240812_025257_503_0597760.fits,1723431181.326040,N +UM1,2024, 8,12, 2,53,6.22,1.47,0.121,40.3608265,26.0336661,40.6283664,24.3400592,327.3190187,-4.4344361,326.4125567,-5.8873705,UK0006,-1.306160,51.883100,80.0,0.0,14.086062,PER,FF_UK0006_20240812_025257_503_0597760.fits,1723431186.218836,N +UM1,2024, 8,12, 2,53,55.42,-0.15,0.202,14.8261191,19.9688724,15.5347529,17.7182110,348.6666819,-16.9871863,347.5699849,-19.0910531,UK0006,-1.306160,51.883100,80.0,0.0,11.625101,PER,FF_UK0006_20240812_025348_741_0599040.fits,1723431235.416524,N +UM1,2024, 8,12, 2,53,57.20,1.56,0.402,90.4290125,39.8761974,87.4324375,37.9521879,300.2515458,30.5279479,300.5884447,27.5195794,UK0006,-1.306160,51.883100,80.0,0.0,7.512181,spo,FF_UK0006_20240812_025348_741_0599040.fits,1723431237.199308,N +UM1,2024, 8,12, 2,55,43.72,0.78,0.122,12.3708448,47.3103620,13.6373060,44.9184859,355.2081248,9.7579401,353.9895845,7.5131749,UK0006,-1.306160,51.883100,80.0,0.0,20.846217,PER,FF_UK0006_20240812_025541_466_0601856.fits,1723431343.719000,N +UM1,2024, 8,12, 2,56,3.04,0.68,0.242,12.4849842,18.3836195,13.3040057,15.9740613,351.2416100,-18.8922995,350.0426282,-21.1610577,UK0006,-1.306160,51.883100,80.0,0.0,10.460983,PER,FF_UK0006_20240812_025601_962_0602368.fits,1723431363.037996,N +UM1,2024, 8,12, 2,56,34.57,1.88,0.122,72.6487382,34.8729565,73.6010331,32.4497450,308.7538585,17.3857657,306.5431478,15.9667993,UK0006,-1.306160,51.883100,80.0,0.0,20.919646,spo,FF_UK0006_20240812_025632_705_0603136.fits,1723431394.571660,N +UM1,2024, 8,12, 2,58,30.84,1.20,0.319,37.8948073,61.2141448,42.0135447,63.2337676,344.9838697,27.0629055,344.0726735,29.7299400,UK0006,-1.306160,51.883100,80.0,0.0,8.741973,NDA,FF_UK0006_20240812_025825_430_0605952.fits,1723431510.835676,N +UM1,2024, 8,12, 3, 1,34.44,-0.67,0.323,17.2592034,22.3144252,18.4787964,18.4311248,348.6965561,-14.2769430,346.7344260,-17.8585621,UK0006,-1.306160,51.883100,80.0,0.0,12.514110,PER,FF_UK0006_20240812_030129_889_0610560.fits,1723431694.443424,N +UM1,2024, 8,12, 3, 2,54.85,0.48,0.163,85.7800955,46.2568413,84.7501450,43.0625317,310.6600178,32.4783819,308.5738682,29.7309296,UK0006,-1.306160,51.883100,80.0,0.0,20.128505,PER,FF_UK0006_20240812_030251_871_0612608.fits,1723431774.845508,N +UM1,2024, 8,12, 3, 4,7.14,0.61,0.122,67.3721665,51.2230046,67.1825822,48.7108820,325.0328844,27.6847612,323.3467522,25.6711221,UK0006,-1.306160,51.883100,80.0,0.0,20.589528,PER,FF_UK0006_20240812_030403_605_0614400.fits,1723431847.138648,N +UM1,2024, 8,12, 3, 4,18.07,2.04,0.122,49.4120982,53.1164173,49.7781175,50.4780383,336.1902525,22.8457169,334.5424956,20.6848316,UK0006,-1.306160,51.883100,80.0,0.0,21.654897,PER,FF_UK0006_20240812_030413_853_0614656.fits,1723431858.065948,N +UM1,2024, 8,12, 3, 4,33.19,-0.19,0.244,6.3818224,45.2031984,8.6711262,40.6978642,1.3680097,7.2419325,359.3253821,2.8877946,UK0006,-1.306160,51.883100,80.0,0.0,19.682914,PER,FF_UK0006_20240812_030424_101_0614912.fits,1723431873.193984,N +UM1,2024, 8,12, 3, 6,4.04,-0.16,0.162,74.5747551,26.5116726,74.3478462,24.3164897,304.4893543,11.7870135,303.3024941,9.9159974,UK0006,-1.306160,51.883100,80.0,0.0,13.621051,PER,FF_UK0006_20240812_030556_330_0617216.fits,1723431964.043224,N +UM1,2024, 8,12, 3, 6,35.48,-0.55,0.326,90.1790544,60.0932324,87.0974268,53.1441278,323.3629111,43.0745254,317.2482560,37.6451849,UK0006,-1.306160,51.883100,80.0,0.0,21.945303,PER,FF_UK0006_20240812_030627_073_0617984.fits,1723431995.476016,N +UM1,2024, 8,12, 3, 7,28.96,1.07,0.122,76.6575514,64.1502450,75.6385874,61.9645156,332.8696725,40.2348394,331.0547832,38.4967566,UK0006,-1.306160,51.883100,80.0,0.0,18.335557,PER,FF_UK0006_20240812_030728_560_0619520.fits,1723432048.962092,N +UM1,2024, 8,12, 3, 8,23.00,0.91,0.163,3.6972518,58.8900493,6.2506814,56.1307429,4.8135712,20.8138313,3.1960835,18.1371006,UK0006,-1.306160,51.883100,80.0,0.0,18.952048,PER,FF_UK0006_20240812_030819_798_0620800.fits,1723432103.000304,N +UM1,2024, 8,12, 3, 8,48.05,0.49,0.323,73.4581725,22.7911644,73.0284126,18.7347933,303.7196818,8.2066210,301.6170173,4.7071850,UK0006,-1.306160,51.883100,80.0,0.0,12.604152,PER,FF_UK0006_20240812_030840_294_0621312.fits,1723432128.050488,N +UM1,2024, 8,12, 3, 9,45.50,1.74,0.163,51.3786750,63.9559725,52.0616104,60.4321945,343.1935432,32.5273276,340.5546037,29.8035746,UK0006,-1.306160,51.883100,80.0,0.0,21.713954,PER,FF_UK0006_20240812_030941_780_0622848.fits,1723432185.503808,N +UM1,2024, 8,12, 3,11,38.55,-0.74,0.285,351.7033001,57.1009246,356.3228733,51.7677115,12.4338568,19.1967738,10.0157002,13.6971843,UK0006,-1.306160,51.883100,80.0,0.0,20.952974,PER,FF_UK0006_20240812_031134_505_0625664.fits,1723432298.545332,N +UM1,2024, 8,12, 3,13,16.33,0.61,0.121,76.2042461,25.7018480,76.0542607,24.0209657,304.6057735,12.0387863,303.6683145,10.6252380,UK0006,-1.306160,51.883100,80.0,0.0,13.889340,PER,FF_UK0006_20240812_031306_735_0627968.fits,1723432396.328528,N +UM1,2024, 8,12, 3,15,13.17,0.26,0.163,31.0423530,43.3092109,31.8476707,40.0784347,346.2477662,8.9066567,344.6164033,6.0463589,UK0006,-1.306160,51.883100,80.0,0.0,20.175613,PER,FF_UK0006_20240812_031509_708_0631040.fits,1723432513.168040,N +UM1,2024, 8,12, 3,19,40.85,0.96,0.122,40.6243472,46.3021705,40.9452156,44.1175232,342.0446802,14.1906644,340.9040757,12.2959111,UK0006,-1.306160,51.883100,80.0,0.0,18.014038,PER,FF_UK0006_20240812_031936_149_0637696.fits,1723432780.847488,N +UM1,2024, 8,12, 3,20,33.07,-0.39,0.244,19.6001638,64.6508386,23.2078347,59.8657387,0.5869344,27.5188719,357.4681806,23.3042805,UK0006,-1.306160,51.883100,80.0,0.0,20.758826,PER,FF_UK0006_20240812_032027_387_0638976.fits,1723432833.068084,N +UM1,2024, 8,12, 3,23,21.07,-1.12,0.326,112.3218652,56.1582837,108.1880800,49.2473780,314.5161199,51.6303793,306.9677666,46.2006798,UK0006,-1.306160,51.883100,80.0,0.0,22.558749,PER,FF_UK0006_20240812_032311_351_0643072.fits,1723433001.071076,N diff --git a/archive/lambdas/ftpToUkmon/tests/remoteTest.ps1 b/archive/lambdas/ftpToUkmon/tests/remoteTest.ps1 index a5d86c8a..ada8fd6e 100644 --- a/archive/lambdas/ftpToUkmon/tests/remoteTest.ps1 +++ b/archive/lambdas/ftpToUkmon/tests/remoteTest.ps1 @@ -1,6 +1,5 @@ # test aws lambda invoke --profile ukmda_admin --function-name ftpToUkmon --log-type Tail --cli-binary-format raw-in-base64-out --payload file://tests/testEvent.json --region eu-west-2 ./ftpdetect.log Start-Sleep 2 -aws s3 ls s3://ukmda-shared/matches/single/new/ -aws s3 cp s3://ukmda-shared/matches/single/new/ukmon_UK0006_20230202_173030_429632.csv ./tests/remoteResult.txt +aws s3 cp s3://ukmda-shared/matches/single/new/ukmda_UK0006_20240811_201327_827902.csv ./tests/new_data.txt --profile ukmda_admin bash -c "diff ./tests/expected_results.txt ./test/remoteResult.txt" \ No newline at end of file diff --git a/archive/lambdas/vidUploader/template.yaml b/archive/lambdas/vidUploader/template.yaml index 1f82960c..1ec18886 100644 --- a/archive/lambdas/vidUploader/template.yaml +++ b/archive/lambdas/vidUploader/template.yaml @@ -16,7 +16,7 @@ Resources: FunctionName: videohandler CodeUri: pythoncode/ Handler: app.lambda_handler - Runtime: python3.11 + Runtime: python3.14 Timeout: 900 MemorySize: 512 EphemeralStorage: From 964c3446a2b9425677f03b7dbeed88e86b1db99c Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Sun, 12 Jul 2026 23:33:08 +0100 Subject: [PATCH 134/150] Updating to python 3.14 --- archive/lambdas/fetchECSV/template.yml | 4 ++-- archive/lambdas/fetchECSV/tests/expected_output.txt | 1 + archive/lambdas/fetchECSV/tests/localTest.ps1 | 3 +++ archive/lambdas/fetchECSV/tests/test.json | 8 ++++++++ archive/lambdas/updateDnsRecords/template.yaml | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 archive/lambdas/fetchECSV/tests/expected_output.txt create mode 100644 archive/lambdas/fetchECSV/tests/localTest.ps1 create mode 100644 archive/lambdas/fetchECSV/tests/test.json diff --git a/archive/lambdas/fetchECSV/template.yml b/archive/lambdas/fetchECSV/template.yml index 71107ad6..5a0e78d7 100644 --- a/archive/lambdas/fetchECSV/template.yml +++ b/archive/lambdas/fetchECSV/template.yml @@ -7,7 +7,7 @@ Resources: Type: AWS::Serverless::Function Properties: Handler: fetchECSV.lambda_handler - Runtime: python3.11 + Runtime: python3.14 FunctionName: fetchECSV Description: API backend that retrieves an ECSV file for a detection Timeout: 30 @@ -33,4 +33,4 @@ Resources: billingtag: "ukmda" typetag: "api" Metadata: - BuildMethod: python3.11 + BuildMethod: python3.14 diff --git a/archive/lambdas/fetchECSV/tests/expected_output.txt b/archive/lambdas/fetchECSV/tests/expected_output.txt new file mode 100644 index 00000000..581e18b7 --- /dev/null +++ b/archive/lambdas/fetchECSV/tests/expected_output.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "# %ECSV 0.9\n# ---\n# datatype:\n# - {name: datetime, datatype: string}\n# - {name: ra, unit: deg, datatype: float64}\n# - {name: dec, unit: deg, datatype: float64}\n# - {name: azimuth, datatype: float64}\n# - {name: altitude, datatype: float64}\n# - {name: mag_data, datatype: float64}\n# - {name: x_image, unit: pix, datatype: float64}\n# - {name: y_image, unit: pix, datatype: float64}\n# delimiter: ','\n# meta: !!omap\n# - {obs_latitude: 51.79611}\n# - {obs_longitude: -0.2125}\n# - {obs_elevation: 88.0}\n# - {origin: 'ukmda'}\n# - {camera_id: 'UK005U'}\n# - {cx: 1280}\n# - {cy: 720}\n# - {photometric_band: 'unknown'}\n# - {image_file: ['FF_UK005U_20240809_205337_439_0060160.fits']}\n# - {isodate_start_obs: '2024-08-09T20:53:37.439009'}\n# - {isodate_calib: '2024-08-09T20:53:37.587552'}\n# - {astrometry_number_stars: 20}\n# - {mag_label: 'mag'}\n# - {no_frags: 1}\n# - {obs_az: 179.262997501945}\n# - {obs_ev: 40.22819526220094}\n# - {obs_rot: -0.23185561383642125}\n# - {fov_horiz: 87.40564348973956}\n# - {fov_vert: 44.36805480268697}\n# schema: astropy-2.0\ndatetime,ra,dec,azimuth,altitude,mag_data,x_image,y_image\n2024-08-09T20:53:37.587552,270.300100, -5.466500,181.661800,+32.725900, +0.87, 683.310, 513.920\n2024-08-09T20:53:37.627512,270.380000, -5.425200,181.568400,+32.768800, +1.31, 681.950, 513.250\n2024-08-09T20:53:37.667628,270.443500, -5.548100,181.490700,+32.647100, +0.80, 680.890, 515.330\n2024-08-09T20:53:37.707628,270.542600, -5.545900,181.373900,+32.651100, +0.74, 679.210, 515.320\n2024-08-09T20:53:37.747616,270.635600, -5.530000,181.264500,+32.668500, +0.66, 677.630, 515.080\n2024-08-09T20:53:37.787540,270.740400, -5.446000,181.142300,+32.754100, +1.27, 675.840, 513.700\n2024-08-09T20:53:37.827556,270.820700, -5.463100,181.047100,+32.738100, +0.65, 674.480, 514.010\n2024-08-09T20:53:37.867588,270.923500, -5.494800,180.925200,+32.707700, +1.24, 672.740, 514.570\n2024-08-09T20:53:37.907616,271.001600, -5.522800,180.832700,+32.680700, +1.38, 671.420, 515.060\n2024-08-09T20:53:37.947612,271.094100, -5.518400,180.723600,+32.686200, +0.90, 669.850, 515.010\n2024-08-09T20:53:37.987588,271.158100, -5.490500,180.648400,+32.714600, +1.05, 668.760, 514.560\n2024-08-09T20:53:38.027596,271.247100, -5.499300,180.543100,+32.706700, +1.37, 667.250, 514.730\n2024-08-09T20:53:38.067568,271.329900, -5.465800,180.445700,+32.740800, +1.44, 665.840, 514.190\n2024-08-09T20:53:38.107640,271.429000, -5.543000,180.328000,+32.664200, +1.20, 664.170, 515.510\n2024-08-09T20:53:38.147692,271.523300, -5.600000,180.216400,+32.607700, +1.65, 662.580, 516.490\n2024-08-09T20:53:38.187564,271.579000, -5.459000,180.151600,+32.748900, +0.69, 661.610, 514.140\n2024-08-09T20:53:38.227556,271.617800, -5.448900,180.105800,+32.759200, +0.40, 660.950, 513.980\n2024-08-09T20:53:38.267668,271.641700, -5.570800,180.077300,+32.637400, +0.78, 660.570, 516.030\n2024-08-09T20:53:38.307552,271.828500, -5.444100,179.856800,+32.764500, +0.89, 657.370, 513.950\n2024-08-09T20:53:38.347624,271.901900, -5.520500,179.770100,+32.688100, +0.28, 656.140, 515.250\n2024-08-09T20:53:38.387720,272.012600, -5.620900,179.639600,+32.587600, +1.18, 654.280, 516.960\n2024-08-09T20:53:38.427700,272.119500, -5.597900,179.513400,+32.610400, +0.86, 652.460, 516.600\n2024-08-09T20:53:38.467636,272.208200, -5.526300,179.408600,+32.681600, +1.01, 650.940, 515.420\n2024-08-09T20:53:38.507644,272.285500, -5.536000,179.317400,+32.671600, +0.94, 649.630, 515.600\n2024-08-09T20:53:38.547732,272.370900, -5.627300,179.217300,+32.579900, +1.27, 648.200, 517.150\n2024-08-09T20:53:38.587652,272.473400, -5.541800,179.095700,+32.664600, +1.07, 646.440, 515.740\n2024-08-09T20:53:38.627648,272.552300, -5.537800,179.002600,+32.668000, +1.10, 645.100, 515.690\n2024-08-09T20:53:38.667712,272.639200, -5.602900,178.900700,+32.602200, +0.88, 643.640, 516.800\n2024-08-09T20:53:38.707696,272.720200, -5.585100,178.805000,+32.619100, +1.46, 642.260, 516.520\n2024-08-09T20:53:38.747744,272.812800, -5.635200,178.696400,+32.568000, +1.06, 640.700, 517.380\n2024-08-09T20:53:38.787764,272.846900, -5.658700,178.656800,+32.544200, +0.80, 640.130, 517.780\n2024-08-09T20:53:38.827788,272.962000, -5.679300,178.521400,+32.522000, +0.96, 638.180, 518.150\n2024-08-09T20:53:38.867668,273.037300, -5.550200,178.430500,+32.650100, +1.02, 636.870, 516.000\n2024-08-09T20:53:38.907688,273.134200, -5.573400,178.316600,+32.625400, +1.40, 635.230, 516.410\n2024-08-09T20:53:38.947740,273.204100, -5.627500,178.235400,+32.570200, +0.97, 634.060, 517.330\n2024-08-09T20:53:38.987772,273.304200, -5.660300,178.118100,+32.535700, +0.92, 632.370, 517.900\n2024-08-09T20:53:39.027748,273.388000, -5.633700,178.018700,+32.560800, +0.73, 630.940, 517.470\n2024-08-09T20:53:39.067804,273.503900, -5.692600,177.883600,+32.499600, +1.63, 628.990, 518.480\n2024-08-09T20:53:39.107724,273.571400, -5.604200,177.801900,+32.586600, +1.26, 627.820, 517.010\n2024-08-09T20:53:39.147756,273.619200, -5.638800,177.746500,+32.550900, +1.77, 627.020, 517.600\n2024-08-09T20:53:39.187848,273.727000, -5.738500,177.622200,+32.448800, +1.10, 625.220, 519.290\n2024-08-09T20:53:39.227792,273.837900, -5.675200,177.489800,+32.509400, +1.50, 623.320, 518.250\n2024-08-09T20:53:39.267756,273.940900, -5.633600,177.367200,+32.548500, +1.39, 621.560, 517.570\n2024-08-09T20:53:39.307620,273.918500, -5.489500,177.389500,+32.693100, +0.34, 621.900, 515.150\n2024-08-09T20:53:39.347792,273.993800, -5.674800,177.306500,+32.505900, +0.56, 620.680, 518.270\n2024-08-09T20:53:39.387744,274.044800, -5.621100,177.244800,+32.558100, +0.63, 619.800, 517.380\n2024-08-09T20:53:39.427676,274.209600, -5.547300,177.048000,+32.627300, +0.54, 616.980, 516.170\n2024-08-09T20:53:39.467852,274.304000, -5.736100,176.943500,+32.435700, +0.93, 615.440, 519.350\n2024-08-09T20:53:39.507832,274.401500, -5.713700,176.827900,+32.455100, +0.74, 613.780, 518.990\n2024-08-09T20:53:39.547832,274.501800, -5.712700,176.709900,+32.452800, +1.41, 612.080, 518.990\n2024-08-09T20:53:39.587776,274.571500, -5.652400,176.625500,+32.510800, +0.97, 610.880, 517.990\n2024-08-09T20:53:39.627832,274.629400, -5.712100,176.559900,+32.449000, +1.65, 609.920, 519.000\n2024-08-09T20:53:39.667816,274.740600, -5.692000,176.428300,+32.465200, +0.90, 608.030, 518.680\n2024-08-09T20:53:39.707848,274.818600, -5.724800,176.337900,+32.429600, +0.94, 606.720, 519.240\n2024-08-09T20:53:39.747784,274.934100, -5.655700,176.198900,+32.494300, +1.66, 604.740, 518.100\n2024-08-09T20:53:39.787788,274.979100, -5.658300,176.146100,+32.489900, +1.37, 603.980, 518.150\n2024-08-09T20:53:39.827808,275.091200, -5.682400,176.015300,+32.461400, +1.40, 602.090, 518.570\n2024-08-09T20:53:39.867964,275.092000, -5.847300,176.022600,+32.296600, +0.76, 602.140, 521.330\n2024-08-09T20:53:39.907864,275.205500, -5.739400,175.884000,+32.399700, +0.65, 600.180, 519.540\n2024-08-09T20:53:39.947856,275.295200, -5.731500,175.778200,+32.403800, +0.82, 598.660, 519.420\n2024-08-09T20:53:39.987868,275.391800, -5.741500,175.665200,+32.389600, +1.11, 597.030, 519.600\n2024-08-09T20:53:40.027876,275.464200, -5.750500,175.580600,+32.377400, +1.50, 595.810, 519.760\n2024-08-09T20:53:40.067796,275.563900, -5.664400,175.458700,+32.458900, +0.97, 594.090, 518.330\n2024-08-09T20:53:40.107876,275.642800, -5.749200,175.370700,+32.370400, +0.93, 592.790, 519.760\n2024-08-09T20:53:40.147892,275.727900, -5.767700,175.271900,+32.347900, +1.23, 591.360, 520.080\n2024-08-09T20:53:40.187808,275.822100, -5.674500,175.155700,+32.436400, +1.49, 589.730, 518.530\n2024-08-09T20:53:40.227900,275.877200, -5.773200,175.096900,+32.335000, +1.22, 588.840, 520.190\n2024-08-09T20:53:40.267956,275.974700, -5.834700,174.986400,+32.268600, +1.65, 587.220, 521.230\n2024-08-09T20:53:40.307996,276.085200, -5.873500,174.859100,+32.224100, +2.53, 585.370, 521.890\n2024-08-09T20:53:40.347912,276.183700, -5.783800,174.737900,+32.308400, +2.03, 583.670, 520.400\n2024-08-09T20:53:40.387808,276.143300, -5.674700,174.778500,+32.419500, +0.14, 584.310, 518.570\n2024-08-09T20:53:40.427812,276.224600, -5.676600,174.683200,+32.413200, +0.50, 582.940, 518.610\n2024-08-09T20:53:40.467860,276.265700, -5.728900,174.638500,+32.358700, +0.84, 582.270, 519.490\n2024-08-09T20:53:40.507768,276.432500, -5.628700,174.435600,+32.449300, +0.62, 579.410, 517.830\n2024-08-09T20:53:40.547864,276.516500, -5.733400,174.344300,+32.340000, +0.67, 578.040, 519.590\n2024-08-09T20:53:40.587936,276.657200, -5.809100,174.184500,+32.256000, +1.23, 575.700, 520.870\n2024-08-09T20:53:40.627888,276.698000, -5.754500,174.132800,+32.308100, +1.01, 574.990, 519.960\n2024-08-09T20:53:40.667964,276.790500, -5.837700,174.030500,+32.219300, +1.20, 573.470, 521.360\n2024-08-09T20:53:40.707936,276.873900, -5.805000,173.930300,+32.246800, +1.27, 572.050, 520.820\n2024-08-09T20:53:40.747952,276.957600, -5.821900,173.833600,+32.224600, +1.20, 570.650, 521.110\n2024-08-09T20:53:40.787924,277.027000, -5.794700,173.750300,+32.247300, +1.64, 569.470, 520.660\n2024-08-09T20:53:40.827928,277.108500, -5.794900,173.654900,+32.241800, +0.84, 568.100, 520.670\n2024-08-09T20:53:40.867948,277.196500, -5.816600,173.553500,+32.214200, +1.13, 566.630, 521.040\n2024-08-09T20:53:40.907880,277.310300, -5.743200,173.414100,+32.279800, +1.88, 564.680, 519.820\n2024-08-09T20:53:40.947988,277.303100, -5.861000,173.432400,+32.162700, +0.59, 564.860, 521.790\n2024-08-09T20:53:40.987932,277.420400, -5.801300,173.290100,+32.214200, +1.09, 562.860, 520.800\n2024-08-09T20:53:41.027992,277.489500, -5.863900,173.214500,+32.147000, +0.74, 561.730, 521.850\n2024-08-09T20:53:41.067992,277.617400, -5.861600,173.064600,+32.140100, +1.01, 559.580, 521.820\n2024-08-09T20:53:41.107920,277.679700, -5.787800,172.985500,+32.209200, +1.05, 558.500, 520.590\n2024-08-09T20:53:41.148000,277.774600, -5.873600,172.882000,+32.116600, +1.39, 556.950, 522.030\n2024-08-09T20:53:41.187992,277.848800, -5.863800,172.794400,+32.120900, +0.89, 555.700, 521.870\n2024-08-09T20:53:41.227992,277.942500, -5.864100,172.684900,+32.113500, +1.90, 554.130, 521.880\n2024-08-09T20:53:41.267972,277.986000, -5.841200,172.632100,+32.133000, +1.30, 553.390, 521.500\n2024-08-09T20:53:41.307940,278.088100, -5.804400,172.509300,+32.161700, +1.48, 551.660, 520.890\n2024-08-09T20:53:41.347960,278.207500, -5.826900,172.371700,+32.130000, +1.83, 549.670, 521.270\n2024-08-09T20:53:41.388012,278.276800, -5.882400,172.296100,+32.069100, +1.35, 548.540, 522.200\n2024-08-09T20:53:41.428012,278.357400, -5.881000,172.201800,+32.064000, +1.68, 547.190, 522.180\n2024-08-09T20:53:41.467884,278.393800, -5.743200,172.146000,+32.198300, +0.83, 546.510, 519.880\n2024-08-09T20:53:41.507908,278.387700, -5.771300,172.156100,+32.170800, +0.13, 546.630, 520.350\n2024-08-09T20:53:41.548072,278.433500, -5.949700,172.120100,+31.989300, +1.05, 545.960, 523.330\n2024-08-09T20:53:41.587892,278.637500, -5.753500,171.862200,+32.167700, +0.38, 542.440, 520.060\n2024-08-09T20:53:41.627960,278.724200, -5.826900,171.768300,+32.087100, +0.69, 541.030, 521.290\n2024-08-09T20:53:41.667952,278.836500, -5.818400,171.636300,+32.085900, +1.73, 539.150, 521.150\n2024-08-09T20:53:41.708024,278.913900, -5.896100,171.554100,+32.001700, +1.37, 537.900, 522.450\n2024-08-09T20:53:41.747976,278.975700, -5.841500,171.476400,+32.050600, +0.91, 536.840, 521.540\n2024-08-09T20:53:41.788032,279.062900, -5.903700,171.381300,+31.980800, +1.17, 535.420, 522.580\n2024-08-09T20:53:41.827988,279.162600, -5.855700,171.259800,+32.019600, +1.70, 533.730, 521.780\n2024-08-09T20:53:41.868012,279.213300, -5.879600,171.203400,+31.991100, +1.18, 532.900, 522.180\n2024-08-09T20:53:41.907968,279.271800, -5.835200,171.130400,+32.029900, +1.32, 531.900, 521.440\n2024-08-09T20:53:41.948060,279.346700, -5.935200,171.054200,+31.923400, +1.64, 530.710, 523.110\n2024-08-09T20:53:41.988020,279.395100, -5.889100,170.992900,+31.964800, +2.34, 529.880, 522.340\n2024-08-09T20:53:42.028088,279.471600, -5.964000,170.912200,+31.883000, +0.77, 528.650, 523.590\n2024-08-09T20:53:42.068112,279.542200, -5.989100,170.832900,+31.851200, +0.84, 527.490, 524.010\n2024-08-09T20:53:42.108028,279.631600, -5.898600,170.718500,+31.932700, +0.64, 525.950, 522.500\n2024-08-09T20:53:42.147976,279.745000, -5.841600,170.579700,+31.978200, +1.22, 524.030, 521.550\n2024-08-09T20:53:42.188080,279.853800, -5.953800,170.466400,+31.855900, +1.17, 522.290, 523.420\n2024-08-09T20:53:42.227992,279.948500, -5.858400,170.344800,+31.941200, +1.38, 520.660, 521.830\n2024-08-09T20:53:42.268024,280.007600, -5.892600,170.280200,+31.901200, +1.32, 519.700, 522.400\n2024-08-09T20:53:42.308064,280.032900, -5.937600,170.256400,+31.853800, +1.19, 519.310, 523.150\n2024-08-09T20:53:42.348024,280.133700, -5.892700,170.133700,+31.888100, +1.12, 517.610, 522.400\n2024-08-09T20:53:42.388088,280.247800, -5.962400,170.009600,+31.807000, +1.64, 515.760, 523.560\n2024-08-09T20:53:42.428060,280.301700, -5.934200,169.943500,+31.829300, +1.99, 514.850, 523.090\n2024-08-09T20:53:42.468224,280.332000, -6.109000,169.930300,+31.652400, +3.17, 514.460, 526.000\n2024-08-09T20:53:42.508148,280.482300, -6.028700,169.745800,+31.716200, +2.42, 511.920, 524.660\n2024-08-09T20:53:42.548216,280.526900, -6.102000,169.703500,+31.638500, +2.44, 511.230, 525.880\n2024-08-09T20:53:42.587888,280.505200, -5.748000,169.683600,+31.992800, +0.01, 511.370, 519.980\n2024-08-09T20:53:42.628024,280.580800, -5.894400,169.614500,+31.839000, +0.39, 510.210, 522.420\n2024-08-09T20:53:42.668036,280.719700, -5.907800,169.454800,+31.810500, +0.31, 507.920, 522.640\n2024-08-09T20:53:42.707948,280.825000, -5.814400,169.320200,+31.891600, +0.60, 506.120, 521.080\n2024-08-09T20:53:42.748128,280.896800, -6.007200,169.262600,+31.691900, +1.73, 505.060, 524.290\n2024-08-09T20:53:42.788120,280.991600, -6.000200,169.151700,+31.688200, +1.50, 503.490, 524.170\n2024-08-09T20:53:42.828072,281.087800, -5.948700,169.033300,+31.728200, +1.09, 501.870, 523.310\n2024-08-09T20:53:42.868048,281.152900, -5.923100,168.954300,+31.746200, +1.23, 500.780, 522.880\n2024-08-09T20:53:42.908108,281.251400, -5.987600,168.849100,+31.670700, +0.99, 499.200, 523.950\n2024-08-09T20:53:42.948036,281.350300, -5.911500,168.723900,+31.734500, +1.71, 497.520, 522.680\n2024-08-09T20:53:42.988068,281.397300, -5.945300,168.674200,+31.695500, +1.37, 496.770, 523.240\n2024-08-09T20:53:43.028052,281.487100, -5.927500,168.567700,+31.702400, +2.35, 495.280, 522.940\n2024-08-09T20:53:43.068140,281.521500, -6.021300,168.541300,+31.605100, +1.90, 494.780, 524.500\n2024-08-09T20:53:43.108248,281.593900, -6.137600,168.474300,+31.481000, +2.03, 493.670, 526.430\n2024-08-09T20:53:43.148104,281.600500, -5.985500,168.445000,+31.631100, +0.85, 493.460, 523.900\n2024-08-09T20:53:43.188132,281.756800, -6.013700,168.268200,+31.584100, +0.29, 490.910, 524.360\n2024-08-09T20:53:43.228068,281.784500, -5.944700,168.226200,+31.649200, +0.98, 490.410, 523.210\n2024-08-09T20:53:43.268100,281.956400, -5.979500,168.032300,+31.593100, +1.42, 487.610, 523.780\n2024-08-09T20:53:43.308072,281.996800, -5.952000,167.981600,+31.615300, +1.12, 486.930, 523.320\n2024-08-09T20:53:43.348108,282.089900, -5.988400,167.879500,+31.567400, +1.56, 485.430, 523.920\n2024-08-09T20:53:43.388120,282.151700, -6.004300,167.810600,+31.543800, +1.65, 484.430, 524.180\n2024-08-09T20:53:43.428088,282.208900, -5.969600,167.739300,+31.570800, +2.05, 483.470, 523.600\n2024-08-09T20:53:43.467992,282.272800, -5.865300,167.649500,+31.666000, +2.23, 482.350, 521.860\n2024-08-09T20:53:43.508032,282.418300, -5.909200,167.488000,+31.603500, +3.07, 480.000, 522.580\n2024-08-09T20:53:43.588088,282.445000, -5.968200,167.466600,+31.541500, +2.75, 479.610, 523.560\n2024-08-09T20:53:43.628168,282.607300, -6.056800,167.293100,+31.432200, +2.73, 477.020, 525.020\n2024-08-09T20:53:43.668028,282.524500, -5.906600,167.365400,+31.592100, -0.00, 478.270, 522.530\n2024-08-09T20:53:43.708060,282.600100, -5.941800,167.283600,+31.547100, +0.12, 477.060, 523.110\n2024-08-09T20:53:43.748088,282.657900, -5.972200,167.221800,+31.509300, +0.53, 476.140, 523.610\n2024-08-09T20:53:43.787968,282.862200, -5.843200,166.965100,+31.609300, +0.11, 472.710, 521.450\n2024-08-09T20:53:43.828152,282.980400, -6.041100,166.861000,+31.397100, +1.15, 470.930, 524.730\n2024-08-09T20:53:43.868140,283.060900, -6.028900,166.766200,+31.398000, +2.13, 469.610, 524.520\n2024-08-09T20:53:43.908136,283.108100, -6.023800,166.711100,+31.396600, +1.25, 468.840, 524.430\n2024-08-09T20:53:43.948188,283.211000, -6.082700,166.602400,+31.323800, +1.46, 467.210, 525.400\n2024-08-09T20:53:43.988064,283.262100, -5.948700,166.521400,+31.449200, +1.51, 466.280, 523.170\n2024-08-09T20:53:44.028144,283.322100, -6.033400,166.466500,+31.357000, +1.39, 465.370, 524.570\n2024-08-09T20:53:44.068112,283.403000, -5.998300,166.367600,+31.380100, +1.44, 464.030, 523.980\n2024-08-09T20:53:44.108128,283.487100, -6.017400,166.274100,+31.349100, +1.33, 462.680, 524.290\n2024-08-09T20:53:44.148156,283.520800, -6.049000,166.240900,+31.313100, +2.42, 462.160, 524.810\n2024-08-09T20:53:44.188172,283.692900, -6.065700,166.045800,+31.271500, +2.24, 459.380, 525.070\n2024-08-09T20:53:44.228152,283.647800, -6.045500,166.094400,+31.298000, +0.44, 460.100, 524.740\n2024-08-09T20:53:44.268120,283.741200, -6.010500,165.981100,+31.318900, +0.72, 458.560, 524.150\n2024-08-09T20:53:44.308164,283.862200, -6.060700,165.850800,+31.251400, +0.85, 456.640, 524.970\n2024-08-09T20:53:44.348136,283.962100, -6.030000,165.730700,+31.266900, +1.64, 455.000, 524.450\n2024-08-09T20:53:44.388088,284.036400, -5.979300,165.636400,+31.305800, +1.57, 453.760, 523.600\n2024-08-09T20:53:44.428076,284.082800, -5.963900,165.580500,+31.314000, +2.02, 453.000, 523.340\n2024-08-09T20:53:44.468144,284.135400, -6.037800,165.533400,+31.233100, +1.28, 452.210, 524.560\n2024-08-09T20:53:44.508108,284.210500, -6.002100,165.440900,+31.256800, +1.71, 450.970, 523.960\n2024-08-09T20:53:44.548172,284.206600, -6.072000,165.458000,+31.188400, +2.04, 451.090, 525.120\n2024-08-09T20:53:44.588228,284.361400, -6.131600,165.291300,+31.105700, +2.83, 448.640, 526.090\n2024-08-09T20:53:44.628084,284.479800, -5.978700,165.127700,+31.238400, +2.92, 446.610, 523.540\n2024-08-09T20:53:44.708332,284.531500, -6.248100,165.118300,+30.964300, +4.71, 446.000, 528.000\n2024-08-09T20:53:44.748040,284.568500, -5.930500,165.017500,+31.272100, +0.77, 445.150, 522.730\n2024-08-09T20:53:44.788048,284.590200, -5.939700,164.994500,+31.259700, +0.13, 444.810, 522.880\n2024-08-09T20:53:44.828168,284.608600, -6.070100,164.997600,+31.128000, +0.30, 444.620, 525.040\n2024-08-09T20:53:44.868048,284.804200, -5.941900,164.749500,+31.223500, +0.34, 441.370, 522.890\n2024-08-09T20:53:44.908096,284.940600, -5.992300,164.602800,+31.151700, +0.46, 439.220, 523.710\n2024-08-09T20:53:44.948192,285.032100, -6.099300,164.518500,+31.031400, +1.89, 437.840, 525.470\n2024-08-09T20:53:44.988124,285.103900, -6.025600,164.422400,+31.092400, +1.40, 436.630, 524.240\n2024-08-09T20:53:45.028136,285.168800, -6.037000,164.350400,+31.070500, +1.37, 435.600, 524.420\n2024-08-09T20:53:45.068132,285.260000, -6.035900,164.246000,+31.056600, +1.17, 434.140, 524.390\n2024-08-09T20:53:45.108160,285.311000, -6.065900,164.193700,+31.018600, +1.37, 433.350, 524.880\n2024-08-09T20:53:45.148184,285.390000, -6.092500,164.108700,+30.979200, +1.48, 432.110, 525.310\n2024-08-09T20:53:45.188200,285.447400, -6.111700,164.047100,+30.950700, +1.40, 431.210, 525.620\n2024-08-09T20:53:45.228120,285.527400, -6.025400,163.938800,+31.022300, +1.76, 429.860, 524.180\n2024-08-09T20:53:45.268204,285.522900, -6.114800,163.961800,+30.935000, +1.93, 430.010, 525.660\n2024-08-09T20:53:45.308228,285.642700, -6.141200,163.830400,+30.888700, +0.99, 428.120, 526.080\n2024-08-09T20:53:45.348200,285.699600, -6.114500,163.760200,+30.905400, +0.87, 427.190, 525.630\n2024-08-09T20:53:45.388236,285.800200, -6.152300,163.653300,+30.851000, +0.92, 425.620, 526.240\n2024-08-09T20:53:45.428120,285.853700, -6.025900,163.566800,+30.966300, +1.23, 424.660, 524.140\n2024-08-09T20:53:45.468160,285.939700, -6.069500,163.477800,+30.908400, +1.69, 423.330, 524.850\n2024-08-09T20:53:45.508156,286.020700, -6.067800,163.385200,+30.896000, +1.59, 422.040, 524.810\n2024-08-09T20:53:45.548100,286.096700, -6.006300,163.286000,+30.943300, +1.33, 420.780, 523.780\n2024-08-09T20:53:45.588132,286.162200, -6.042500,163.218900,+30.896200, +1.24, 419.770, 524.370\n2024-08-09T20:53:45.628136,286.216700, -6.047300,163.157900,+30.881900, +2.55, 418.910, 524.440\n2024-08-09T20:53:45.668188,286.235700, -6.104300,163.148200,+30.822500, +3.41, 418.660, 525.380\n2024-08-09T20:53:45.708112,286.361800, -6.025100,162.988300,+30.878000, +1.75, 416.590, 524.050\n2024-08-09T20:53:45.788168,286.591700, -6.084700,162.739400,+30.778100, +3.41, 413.000, 525.000\n2024-08-09T20:53:45.828120,286.598000, -6.035800,162.722000,+30.825100, +1.06, 412.860, 524.190\n2024-08-09T20:53:45.868048,286.551500, -5.955500,162.758200,+30.912400, +0.03, 413.530, 522.870\n2024-08-09T20:53:45.908208,286.581400, -6.128200,162.760900,+30.737300, +0.65, 413.210, 525.720\n2024-08-09T20:53:45.948100,286.701400, -6.014400,162.600300,+30.827300, -0.06, 411.210, 523.820\n2024-08-09T20:53:45.988052,286.852900, -5.963900,162.417100,+30.849200, +0.82, 408.770, 522.960\n2024-08-09T20:53:46.028220,286.947500, -6.145700,162.349200,+30.653000, +1.73, 407.440, 525.950\n2024-08-09T20:53:46.068180,286.988900, -6.102600,162.293000,+30.687800, +1.83, 406.750, 525.230\n2024-08-09T20:53:46.108184,287.100200, -6.108000,162.168000,+30.661800, +1.58, 405.000, 525.300\n2024-08-09T20:53:46.148140,287.118500, -6.060300,162.136900,+30.705100, +1.33, 404.670, 524.510\n2024-08-09T20:53:46.188188,287.204800, -6.113900,162.050900,+30.636400, +1.00, 403.360, 525.380\n2024-08-09T20:53:46.228088,287.311800, -6.006100,161.905800,+30.722100, +1.73, 401.580, 523.580\n2024-08-09T20:53:46.268232,287.294900, -6.161500,161.959600,+30.572700, +1.78, 401.990, 526.150\n2024-08-09T20:53:46.308176,287.414200, -6.102800,161.811500,+30.607700, +2.62, 400.060, 525.160\n2024-08-09T20:53:46.348096,287.480500, -6.015100,161.716900,+30.681100, +2.49, 398.940, 523.700\n2024-08-09T20:53:46.388204,287.580600, -6.136700,161.630900,+30.542600, +1.52, 397.480, 525.690\n2024-08-09T20:53:46.428184,287.571100, -6.112400,161.636400,+30.568300, +0.66, 397.610, 525.290\n2024-08-09T20:53:46.468216,287.643500, -6.150100,161.563100,+30.517400, +0.36, 396.510, 525.900\n2024-08-09T20:53:46.508164,287.762700, -6.093800,161.415600,+30.549400, +1.69, 394.590, 524.950\n2024-08-09T20:53:46.548148,287.846100, -6.077800,161.317700,+30.548900, +1.49, 393.270, 524.670\n2024-08-09T20:53:46.588192,287.908300, -6.124600,161.258100,+30.490900, +1.19, 392.340, 525.430\n2024-08-09T20:53:46.628180,287.997200, -6.113400,161.155200,+30.484300, +1.48, 390.940, 525.230\n"} diff --git a/archive/lambdas/fetchECSV/tests/localTest.ps1 b/archive/lambdas/fetchECSV/tests/localTest.ps1 new file mode 100644 index 00000000..34e513d1 --- /dev/null +++ b/archive/lambdas/fetchECSV/tests/localTest.ps1 @@ -0,0 +1,3 @@ +# Copyright (C) 2018-2023 Mark McIntyre +# sam build --profile ukmonshared --region eu-west-1 +sam local invoke --profile ukmonshared -e $args[0] --region eu-west-1 diff --git a/archive/lambdas/fetchECSV/tests/test.json b/archive/lambdas/fetchECSV/tests/test.json new file mode 100644 index 00000000..1619f9b8 --- /dev/null +++ b/archive/lambdas/fetchECSV/tests/test.json @@ -0,0 +1,8 @@ +{ + "httpMethod": "GET", + "queryStringParameters": { + "stat": "UK005U", + "dt": "2024-08-09T20:53:37.58", + "metcount": 1 + } +} diff --git a/archive/lambdas/updateDnsRecords/template.yaml b/archive/lambdas/updateDnsRecords/template.yaml index f23b62b1..738a3a4c 100644 --- a/archive/lambdas/updateDnsRecords/template.yaml +++ b/archive/lambdas/updateDnsRecords/template.yaml @@ -19,7 +19,7 @@ Resources: - route53:ChangeResourceRecordSets Resource: '*' Effect: Allow - Runtime: python3.11 + Runtime: python3.14 Events: EC2StateChangeEvent: Type: CloudWatchEvent From d56bf9a0d85591a55d3b86e9c21c172d1df8e335 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 11:17:34 +0100 Subject: [PATCH 135/150] adding tests for fetchECSV --- archive/lambdas/fetchECSV/tests/expected_output.txt | 2 +- archive/lambdas/fetchECSV/tests/localTest.ps1 | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/archive/lambdas/fetchECSV/tests/expected_output.txt b/archive/lambdas/fetchECSV/tests/expected_output.txt index 581e18b7..a6fd5ef1 100644 --- a/archive/lambdas/fetchECSV/tests/expected_output.txt +++ b/archive/lambdas/fetchECSV/tests/expected_output.txt @@ -1 +1 @@ -{"statusCode": 200, "body": "# %ECSV 0.9\n# ---\n# datatype:\n# - {name: datetime, datatype: string}\n# - {name: ra, unit: deg, datatype: float64}\n# - {name: dec, unit: deg, datatype: float64}\n# - {name: azimuth, datatype: float64}\n# - {name: altitude, datatype: float64}\n# - {name: mag_data, datatype: float64}\n# - {name: x_image, unit: pix, datatype: float64}\n# - {name: y_image, unit: pix, datatype: float64}\n# delimiter: ','\n# meta: !!omap\n# - {obs_latitude: 51.79611}\n# - {obs_longitude: -0.2125}\n# - {obs_elevation: 88.0}\n# - {origin: 'ukmda'}\n# - {camera_id: 'UK005U'}\n# - {cx: 1280}\n# - {cy: 720}\n# - {photometric_band: 'unknown'}\n# - {image_file: ['FF_UK005U_20240809_205337_439_0060160.fits']}\n# - {isodate_start_obs: '2024-08-09T20:53:37.439009'}\n# - {isodate_calib: '2024-08-09T20:53:37.587552'}\n# - {astrometry_number_stars: 20}\n# - {mag_label: 'mag'}\n# - {no_frags: 1}\n# - {obs_az: 179.262997501945}\n# - {obs_ev: 40.22819526220094}\n# - {obs_rot: -0.23185561383642125}\n# - {fov_horiz: 87.40564348973956}\n# - {fov_vert: 44.36805480268697}\n# schema: astropy-2.0\ndatetime,ra,dec,azimuth,altitude,mag_data,x_image,y_image\n2024-08-09T20:53:37.587552,270.300100, -5.466500,181.661800,+32.725900, +0.87, 683.310, 513.920\n2024-08-09T20:53:37.627512,270.380000, -5.425200,181.568400,+32.768800, +1.31, 681.950, 513.250\n2024-08-09T20:53:37.667628,270.443500, -5.548100,181.490700,+32.647100, +0.80, 680.890, 515.330\n2024-08-09T20:53:37.707628,270.542600, -5.545900,181.373900,+32.651100, +0.74, 679.210, 515.320\n2024-08-09T20:53:37.747616,270.635600, -5.530000,181.264500,+32.668500, +0.66, 677.630, 515.080\n2024-08-09T20:53:37.787540,270.740400, -5.446000,181.142300,+32.754100, +1.27, 675.840, 513.700\n2024-08-09T20:53:37.827556,270.820700, -5.463100,181.047100,+32.738100, +0.65, 674.480, 514.010\n2024-08-09T20:53:37.867588,270.923500, -5.494800,180.925200,+32.707700, +1.24, 672.740, 514.570\n2024-08-09T20:53:37.907616,271.001600, -5.522800,180.832700,+32.680700, +1.38, 671.420, 515.060\n2024-08-09T20:53:37.947612,271.094100, -5.518400,180.723600,+32.686200, +0.90, 669.850, 515.010\n2024-08-09T20:53:37.987588,271.158100, -5.490500,180.648400,+32.714600, +1.05, 668.760, 514.560\n2024-08-09T20:53:38.027596,271.247100, -5.499300,180.543100,+32.706700, +1.37, 667.250, 514.730\n2024-08-09T20:53:38.067568,271.329900, -5.465800,180.445700,+32.740800, +1.44, 665.840, 514.190\n2024-08-09T20:53:38.107640,271.429000, -5.543000,180.328000,+32.664200, +1.20, 664.170, 515.510\n2024-08-09T20:53:38.147692,271.523300, -5.600000,180.216400,+32.607700, +1.65, 662.580, 516.490\n2024-08-09T20:53:38.187564,271.579000, -5.459000,180.151600,+32.748900, +0.69, 661.610, 514.140\n2024-08-09T20:53:38.227556,271.617800, -5.448900,180.105800,+32.759200, +0.40, 660.950, 513.980\n2024-08-09T20:53:38.267668,271.641700, -5.570800,180.077300,+32.637400, +0.78, 660.570, 516.030\n2024-08-09T20:53:38.307552,271.828500, -5.444100,179.856800,+32.764500, +0.89, 657.370, 513.950\n2024-08-09T20:53:38.347624,271.901900, -5.520500,179.770100,+32.688100, +0.28, 656.140, 515.250\n2024-08-09T20:53:38.387720,272.012600, -5.620900,179.639600,+32.587600, +1.18, 654.280, 516.960\n2024-08-09T20:53:38.427700,272.119500, -5.597900,179.513400,+32.610400, +0.86, 652.460, 516.600\n2024-08-09T20:53:38.467636,272.208200, -5.526300,179.408600,+32.681600, +1.01, 650.940, 515.420\n2024-08-09T20:53:38.507644,272.285500, -5.536000,179.317400,+32.671600, +0.94, 649.630, 515.600\n2024-08-09T20:53:38.547732,272.370900, -5.627300,179.217300,+32.579900, +1.27, 648.200, 517.150\n2024-08-09T20:53:38.587652,272.473400, -5.541800,179.095700,+32.664600, +1.07, 646.440, 515.740\n2024-08-09T20:53:38.627648,272.552300, -5.537800,179.002600,+32.668000, +1.10, 645.100, 515.690\n2024-08-09T20:53:38.667712,272.639200, -5.602900,178.900700,+32.602200, +0.88, 643.640, 516.800\n2024-08-09T20:53:38.707696,272.720200, -5.585100,178.805000,+32.619100, +1.46, 642.260, 516.520\n2024-08-09T20:53:38.747744,272.812800, -5.635200,178.696400,+32.568000, +1.06, 640.700, 517.380\n2024-08-09T20:53:38.787764,272.846900, -5.658700,178.656800,+32.544200, +0.80, 640.130, 517.780\n2024-08-09T20:53:38.827788,272.962000, -5.679300,178.521400,+32.522000, +0.96, 638.180, 518.150\n2024-08-09T20:53:38.867668,273.037300, -5.550200,178.430500,+32.650100, +1.02, 636.870, 516.000\n2024-08-09T20:53:38.907688,273.134200, -5.573400,178.316600,+32.625400, +1.40, 635.230, 516.410\n2024-08-09T20:53:38.947740,273.204100, -5.627500,178.235400,+32.570200, +0.97, 634.060, 517.330\n2024-08-09T20:53:38.987772,273.304200, -5.660300,178.118100,+32.535700, +0.92, 632.370, 517.900\n2024-08-09T20:53:39.027748,273.388000, -5.633700,178.018700,+32.560800, +0.73, 630.940, 517.470\n2024-08-09T20:53:39.067804,273.503900, -5.692600,177.883600,+32.499600, +1.63, 628.990, 518.480\n2024-08-09T20:53:39.107724,273.571400, -5.604200,177.801900,+32.586600, +1.26, 627.820, 517.010\n2024-08-09T20:53:39.147756,273.619200, -5.638800,177.746500,+32.550900, +1.77, 627.020, 517.600\n2024-08-09T20:53:39.187848,273.727000, -5.738500,177.622200,+32.448800, +1.10, 625.220, 519.290\n2024-08-09T20:53:39.227792,273.837900, -5.675200,177.489800,+32.509400, +1.50, 623.320, 518.250\n2024-08-09T20:53:39.267756,273.940900, -5.633600,177.367200,+32.548500, +1.39, 621.560, 517.570\n2024-08-09T20:53:39.307620,273.918500, -5.489500,177.389500,+32.693100, +0.34, 621.900, 515.150\n2024-08-09T20:53:39.347792,273.993800, -5.674800,177.306500,+32.505900, +0.56, 620.680, 518.270\n2024-08-09T20:53:39.387744,274.044800, -5.621100,177.244800,+32.558100, +0.63, 619.800, 517.380\n2024-08-09T20:53:39.427676,274.209600, -5.547300,177.048000,+32.627300, +0.54, 616.980, 516.170\n2024-08-09T20:53:39.467852,274.304000, -5.736100,176.943500,+32.435700, +0.93, 615.440, 519.350\n2024-08-09T20:53:39.507832,274.401500, -5.713700,176.827900,+32.455100, +0.74, 613.780, 518.990\n2024-08-09T20:53:39.547832,274.501800, -5.712700,176.709900,+32.452800, +1.41, 612.080, 518.990\n2024-08-09T20:53:39.587776,274.571500, -5.652400,176.625500,+32.510800, +0.97, 610.880, 517.990\n2024-08-09T20:53:39.627832,274.629400, -5.712100,176.559900,+32.449000, +1.65, 609.920, 519.000\n2024-08-09T20:53:39.667816,274.740600, -5.692000,176.428300,+32.465200, +0.90, 608.030, 518.680\n2024-08-09T20:53:39.707848,274.818600, -5.724800,176.337900,+32.429600, +0.94, 606.720, 519.240\n2024-08-09T20:53:39.747784,274.934100, -5.655700,176.198900,+32.494300, +1.66, 604.740, 518.100\n2024-08-09T20:53:39.787788,274.979100, -5.658300,176.146100,+32.489900, +1.37, 603.980, 518.150\n2024-08-09T20:53:39.827808,275.091200, -5.682400,176.015300,+32.461400, +1.40, 602.090, 518.570\n2024-08-09T20:53:39.867964,275.092000, -5.847300,176.022600,+32.296600, +0.76, 602.140, 521.330\n2024-08-09T20:53:39.907864,275.205500, -5.739400,175.884000,+32.399700, +0.65, 600.180, 519.540\n2024-08-09T20:53:39.947856,275.295200, -5.731500,175.778200,+32.403800, +0.82, 598.660, 519.420\n2024-08-09T20:53:39.987868,275.391800, -5.741500,175.665200,+32.389600, +1.11, 597.030, 519.600\n2024-08-09T20:53:40.027876,275.464200, -5.750500,175.580600,+32.377400, +1.50, 595.810, 519.760\n2024-08-09T20:53:40.067796,275.563900, -5.664400,175.458700,+32.458900, +0.97, 594.090, 518.330\n2024-08-09T20:53:40.107876,275.642800, -5.749200,175.370700,+32.370400, +0.93, 592.790, 519.760\n2024-08-09T20:53:40.147892,275.727900, -5.767700,175.271900,+32.347900, +1.23, 591.360, 520.080\n2024-08-09T20:53:40.187808,275.822100, -5.674500,175.155700,+32.436400, +1.49, 589.730, 518.530\n2024-08-09T20:53:40.227900,275.877200, -5.773200,175.096900,+32.335000, +1.22, 588.840, 520.190\n2024-08-09T20:53:40.267956,275.974700, -5.834700,174.986400,+32.268600, +1.65, 587.220, 521.230\n2024-08-09T20:53:40.307996,276.085200, -5.873500,174.859100,+32.224100, +2.53, 585.370, 521.890\n2024-08-09T20:53:40.347912,276.183700, -5.783800,174.737900,+32.308400, +2.03, 583.670, 520.400\n2024-08-09T20:53:40.387808,276.143300, -5.674700,174.778500,+32.419500, +0.14, 584.310, 518.570\n2024-08-09T20:53:40.427812,276.224600, -5.676600,174.683200,+32.413200, +0.50, 582.940, 518.610\n2024-08-09T20:53:40.467860,276.265700, -5.728900,174.638500,+32.358700, +0.84, 582.270, 519.490\n2024-08-09T20:53:40.507768,276.432500, -5.628700,174.435600,+32.449300, +0.62, 579.410, 517.830\n2024-08-09T20:53:40.547864,276.516500, -5.733400,174.344300,+32.340000, +0.67, 578.040, 519.590\n2024-08-09T20:53:40.587936,276.657200, -5.809100,174.184500,+32.256000, +1.23, 575.700, 520.870\n2024-08-09T20:53:40.627888,276.698000, -5.754500,174.132800,+32.308100, +1.01, 574.990, 519.960\n2024-08-09T20:53:40.667964,276.790500, -5.837700,174.030500,+32.219300, +1.20, 573.470, 521.360\n2024-08-09T20:53:40.707936,276.873900, -5.805000,173.930300,+32.246800, +1.27, 572.050, 520.820\n2024-08-09T20:53:40.747952,276.957600, -5.821900,173.833600,+32.224600, +1.20, 570.650, 521.110\n2024-08-09T20:53:40.787924,277.027000, -5.794700,173.750300,+32.247300, +1.64, 569.470, 520.660\n2024-08-09T20:53:40.827928,277.108500, -5.794900,173.654900,+32.241800, +0.84, 568.100, 520.670\n2024-08-09T20:53:40.867948,277.196500, -5.816600,173.553500,+32.214200, +1.13, 566.630, 521.040\n2024-08-09T20:53:40.907880,277.310300, -5.743200,173.414100,+32.279800, +1.88, 564.680, 519.820\n2024-08-09T20:53:40.947988,277.303100, -5.861000,173.432400,+32.162700, +0.59, 564.860, 521.790\n2024-08-09T20:53:40.987932,277.420400, -5.801300,173.290100,+32.214200, +1.09, 562.860, 520.800\n2024-08-09T20:53:41.027992,277.489500, -5.863900,173.214500,+32.147000, +0.74, 561.730, 521.850\n2024-08-09T20:53:41.067992,277.617400, -5.861600,173.064600,+32.140100, +1.01, 559.580, 521.820\n2024-08-09T20:53:41.107920,277.679700, -5.787800,172.985500,+32.209200, +1.05, 558.500, 520.590\n2024-08-09T20:53:41.148000,277.774600, -5.873600,172.882000,+32.116600, +1.39, 556.950, 522.030\n2024-08-09T20:53:41.187992,277.848800, -5.863800,172.794400,+32.120900, +0.89, 555.700, 521.870\n2024-08-09T20:53:41.227992,277.942500, -5.864100,172.684900,+32.113500, +1.90, 554.130, 521.880\n2024-08-09T20:53:41.267972,277.986000, -5.841200,172.632100,+32.133000, +1.30, 553.390, 521.500\n2024-08-09T20:53:41.307940,278.088100, -5.804400,172.509300,+32.161700, +1.48, 551.660, 520.890\n2024-08-09T20:53:41.347960,278.207500, -5.826900,172.371700,+32.130000, +1.83, 549.670, 521.270\n2024-08-09T20:53:41.388012,278.276800, -5.882400,172.296100,+32.069100, +1.35, 548.540, 522.200\n2024-08-09T20:53:41.428012,278.357400, -5.881000,172.201800,+32.064000, +1.68, 547.190, 522.180\n2024-08-09T20:53:41.467884,278.393800, -5.743200,172.146000,+32.198300, +0.83, 546.510, 519.880\n2024-08-09T20:53:41.507908,278.387700, -5.771300,172.156100,+32.170800, +0.13, 546.630, 520.350\n2024-08-09T20:53:41.548072,278.433500, -5.949700,172.120100,+31.989300, +1.05, 545.960, 523.330\n2024-08-09T20:53:41.587892,278.637500, -5.753500,171.862200,+32.167700, +0.38, 542.440, 520.060\n2024-08-09T20:53:41.627960,278.724200, -5.826900,171.768300,+32.087100, +0.69, 541.030, 521.290\n2024-08-09T20:53:41.667952,278.836500, -5.818400,171.636300,+32.085900, +1.73, 539.150, 521.150\n2024-08-09T20:53:41.708024,278.913900, -5.896100,171.554100,+32.001700, +1.37, 537.900, 522.450\n2024-08-09T20:53:41.747976,278.975700, -5.841500,171.476400,+32.050600, +0.91, 536.840, 521.540\n2024-08-09T20:53:41.788032,279.062900, -5.903700,171.381300,+31.980800, +1.17, 535.420, 522.580\n2024-08-09T20:53:41.827988,279.162600, -5.855700,171.259800,+32.019600, +1.70, 533.730, 521.780\n2024-08-09T20:53:41.868012,279.213300, -5.879600,171.203400,+31.991100, +1.18, 532.900, 522.180\n2024-08-09T20:53:41.907968,279.271800, -5.835200,171.130400,+32.029900, +1.32, 531.900, 521.440\n2024-08-09T20:53:41.948060,279.346700, -5.935200,171.054200,+31.923400, +1.64, 530.710, 523.110\n2024-08-09T20:53:41.988020,279.395100, -5.889100,170.992900,+31.964800, +2.34, 529.880, 522.340\n2024-08-09T20:53:42.028088,279.471600, -5.964000,170.912200,+31.883000, +0.77, 528.650, 523.590\n2024-08-09T20:53:42.068112,279.542200, -5.989100,170.832900,+31.851200, +0.84, 527.490, 524.010\n2024-08-09T20:53:42.108028,279.631600, -5.898600,170.718500,+31.932700, +0.64, 525.950, 522.500\n2024-08-09T20:53:42.147976,279.745000, -5.841600,170.579700,+31.978200, +1.22, 524.030, 521.550\n2024-08-09T20:53:42.188080,279.853800, -5.953800,170.466400,+31.855900, +1.17, 522.290, 523.420\n2024-08-09T20:53:42.227992,279.948500, -5.858400,170.344800,+31.941200, +1.38, 520.660, 521.830\n2024-08-09T20:53:42.268024,280.007600, -5.892600,170.280200,+31.901200, +1.32, 519.700, 522.400\n2024-08-09T20:53:42.308064,280.032900, -5.937600,170.256400,+31.853800, +1.19, 519.310, 523.150\n2024-08-09T20:53:42.348024,280.133700, -5.892700,170.133700,+31.888100, +1.12, 517.610, 522.400\n2024-08-09T20:53:42.388088,280.247800, -5.962400,170.009600,+31.807000, +1.64, 515.760, 523.560\n2024-08-09T20:53:42.428060,280.301700, -5.934200,169.943500,+31.829300, +1.99, 514.850, 523.090\n2024-08-09T20:53:42.468224,280.332000, -6.109000,169.930300,+31.652400, +3.17, 514.460, 526.000\n2024-08-09T20:53:42.508148,280.482300, -6.028700,169.745800,+31.716200, +2.42, 511.920, 524.660\n2024-08-09T20:53:42.548216,280.526900, -6.102000,169.703500,+31.638500, +2.44, 511.230, 525.880\n2024-08-09T20:53:42.587888,280.505200, -5.748000,169.683600,+31.992800, +0.01, 511.370, 519.980\n2024-08-09T20:53:42.628024,280.580800, -5.894400,169.614500,+31.839000, +0.39, 510.210, 522.420\n2024-08-09T20:53:42.668036,280.719700, -5.907800,169.454800,+31.810500, +0.31, 507.920, 522.640\n2024-08-09T20:53:42.707948,280.825000, -5.814400,169.320200,+31.891600, +0.60, 506.120, 521.080\n2024-08-09T20:53:42.748128,280.896800, -6.007200,169.262600,+31.691900, +1.73, 505.060, 524.290\n2024-08-09T20:53:42.788120,280.991600, -6.000200,169.151700,+31.688200, +1.50, 503.490, 524.170\n2024-08-09T20:53:42.828072,281.087800, -5.948700,169.033300,+31.728200, +1.09, 501.870, 523.310\n2024-08-09T20:53:42.868048,281.152900, -5.923100,168.954300,+31.746200, +1.23, 500.780, 522.880\n2024-08-09T20:53:42.908108,281.251400, -5.987600,168.849100,+31.670700, +0.99, 499.200, 523.950\n2024-08-09T20:53:42.948036,281.350300, -5.911500,168.723900,+31.734500, +1.71, 497.520, 522.680\n2024-08-09T20:53:42.988068,281.397300, -5.945300,168.674200,+31.695500, +1.37, 496.770, 523.240\n2024-08-09T20:53:43.028052,281.487100, -5.927500,168.567700,+31.702400, +2.35, 495.280, 522.940\n2024-08-09T20:53:43.068140,281.521500, -6.021300,168.541300,+31.605100, +1.90, 494.780, 524.500\n2024-08-09T20:53:43.108248,281.593900, -6.137600,168.474300,+31.481000, +2.03, 493.670, 526.430\n2024-08-09T20:53:43.148104,281.600500, -5.985500,168.445000,+31.631100, +0.85, 493.460, 523.900\n2024-08-09T20:53:43.188132,281.756800, -6.013700,168.268200,+31.584100, +0.29, 490.910, 524.360\n2024-08-09T20:53:43.228068,281.784500, -5.944700,168.226200,+31.649200, +0.98, 490.410, 523.210\n2024-08-09T20:53:43.268100,281.956400, -5.979500,168.032300,+31.593100, +1.42, 487.610, 523.780\n2024-08-09T20:53:43.308072,281.996800, -5.952000,167.981600,+31.615300, +1.12, 486.930, 523.320\n2024-08-09T20:53:43.348108,282.089900, -5.988400,167.879500,+31.567400, +1.56, 485.430, 523.920\n2024-08-09T20:53:43.388120,282.151700, -6.004300,167.810600,+31.543800, +1.65, 484.430, 524.180\n2024-08-09T20:53:43.428088,282.208900, -5.969600,167.739300,+31.570800, +2.05, 483.470, 523.600\n2024-08-09T20:53:43.467992,282.272800, -5.865300,167.649500,+31.666000, +2.23, 482.350, 521.860\n2024-08-09T20:53:43.508032,282.418300, -5.909200,167.488000,+31.603500, +3.07, 480.000, 522.580\n2024-08-09T20:53:43.588088,282.445000, -5.968200,167.466600,+31.541500, +2.75, 479.610, 523.560\n2024-08-09T20:53:43.628168,282.607300, -6.056800,167.293100,+31.432200, +2.73, 477.020, 525.020\n2024-08-09T20:53:43.668028,282.524500, -5.906600,167.365400,+31.592100, -0.00, 478.270, 522.530\n2024-08-09T20:53:43.708060,282.600100, -5.941800,167.283600,+31.547100, +0.12, 477.060, 523.110\n2024-08-09T20:53:43.748088,282.657900, -5.972200,167.221800,+31.509300, +0.53, 476.140, 523.610\n2024-08-09T20:53:43.787968,282.862200, -5.843200,166.965100,+31.609300, +0.11, 472.710, 521.450\n2024-08-09T20:53:43.828152,282.980400, -6.041100,166.861000,+31.397100, +1.15, 470.930, 524.730\n2024-08-09T20:53:43.868140,283.060900, -6.028900,166.766200,+31.398000, +2.13, 469.610, 524.520\n2024-08-09T20:53:43.908136,283.108100, -6.023800,166.711100,+31.396600, +1.25, 468.840, 524.430\n2024-08-09T20:53:43.948188,283.211000, -6.082700,166.602400,+31.323800, +1.46, 467.210, 525.400\n2024-08-09T20:53:43.988064,283.262100, -5.948700,166.521400,+31.449200, +1.51, 466.280, 523.170\n2024-08-09T20:53:44.028144,283.322100, -6.033400,166.466500,+31.357000, +1.39, 465.370, 524.570\n2024-08-09T20:53:44.068112,283.403000, -5.998300,166.367600,+31.380100, +1.44, 464.030, 523.980\n2024-08-09T20:53:44.108128,283.487100, -6.017400,166.274100,+31.349100, +1.33, 462.680, 524.290\n2024-08-09T20:53:44.148156,283.520800, -6.049000,166.240900,+31.313100, +2.42, 462.160, 524.810\n2024-08-09T20:53:44.188172,283.692900, -6.065700,166.045800,+31.271500, +2.24, 459.380, 525.070\n2024-08-09T20:53:44.228152,283.647800, -6.045500,166.094400,+31.298000, +0.44, 460.100, 524.740\n2024-08-09T20:53:44.268120,283.741200, -6.010500,165.981100,+31.318900, +0.72, 458.560, 524.150\n2024-08-09T20:53:44.308164,283.862200, -6.060700,165.850800,+31.251400, +0.85, 456.640, 524.970\n2024-08-09T20:53:44.348136,283.962100, -6.030000,165.730700,+31.266900, +1.64, 455.000, 524.450\n2024-08-09T20:53:44.388088,284.036400, -5.979300,165.636400,+31.305800, +1.57, 453.760, 523.600\n2024-08-09T20:53:44.428076,284.082800, -5.963900,165.580500,+31.314000, +2.02, 453.000, 523.340\n2024-08-09T20:53:44.468144,284.135400, -6.037800,165.533400,+31.233100, +1.28, 452.210, 524.560\n2024-08-09T20:53:44.508108,284.210500, -6.002100,165.440900,+31.256800, +1.71, 450.970, 523.960\n2024-08-09T20:53:44.548172,284.206600, -6.072000,165.458000,+31.188400, +2.04, 451.090, 525.120\n2024-08-09T20:53:44.588228,284.361400, -6.131600,165.291300,+31.105700, +2.83, 448.640, 526.090\n2024-08-09T20:53:44.628084,284.479800, -5.978700,165.127700,+31.238400, +2.92, 446.610, 523.540\n2024-08-09T20:53:44.708332,284.531500, -6.248100,165.118300,+30.964300, +4.71, 446.000, 528.000\n2024-08-09T20:53:44.748040,284.568500, -5.930500,165.017500,+31.272100, +0.77, 445.150, 522.730\n2024-08-09T20:53:44.788048,284.590200, -5.939700,164.994500,+31.259700, +0.13, 444.810, 522.880\n2024-08-09T20:53:44.828168,284.608600, -6.070100,164.997600,+31.128000, +0.30, 444.620, 525.040\n2024-08-09T20:53:44.868048,284.804200, -5.941900,164.749500,+31.223500, +0.34, 441.370, 522.890\n2024-08-09T20:53:44.908096,284.940600, -5.992300,164.602800,+31.151700, +0.46, 439.220, 523.710\n2024-08-09T20:53:44.948192,285.032100, -6.099300,164.518500,+31.031400, +1.89, 437.840, 525.470\n2024-08-09T20:53:44.988124,285.103900, -6.025600,164.422400,+31.092400, +1.40, 436.630, 524.240\n2024-08-09T20:53:45.028136,285.168800, -6.037000,164.350400,+31.070500, +1.37, 435.600, 524.420\n2024-08-09T20:53:45.068132,285.260000, -6.035900,164.246000,+31.056600, +1.17, 434.140, 524.390\n2024-08-09T20:53:45.108160,285.311000, -6.065900,164.193700,+31.018600, +1.37, 433.350, 524.880\n2024-08-09T20:53:45.148184,285.390000, -6.092500,164.108700,+30.979200, +1.48, 432.110, 525.310\n2024-08-09T20:53:45.188200,285.447400, -6.111700,164.047100,+30.950700, +1.40, 431.210, 525.620\n2024-08-09T20:53:45.228120,285.527400, -6.025400,163.938800,+31.022300, +1.76, 429.860, 524.180\n2024-08-09T20:53:45.268204,285.522900, -6.114800,163.961800,+30.935000, +1.93, 430.010, 525.660\n2024-08-09T20:53:45.308228,285.642700, -6.141200,163.830400,+30.888700, +0.99, 428.120, 526.080\n2024-08-09T20:53:45.348200,285.699600, -6.114500,163.760200,+30.905400, +0.87, 427.190, 525.630\n2024-08-09T20:53:45.388236,285.800200, -6.152300,163.653300,+30.851000, +0.92, 425.620, 526.240\n2024-08-09T20:53:45.428120,285.853700, -6.025900,163.566800,+30.966300, +1.23, 424.660, 524.140\n2024-08-09T20:53:45.468160,285.939700, -6.069500,163.477800,+30.908400, +1.69, 423.330, 524.850\n2024-08-09T20:53:45.508156,286.020700, -6.067800,163.385200,+30.896000, +1.59, 422.040, 524.810\n2024-08-09T20:53:45.548100,286.096700, -6.006300,163.286000,+30.943300, +1.33, 420.780, 523.780\n2024-08-09T20:53:45.588132,286.162200, -6.042500,163.218900,+30.896200, +1.24, 419.770, 524.370\n2024-08-09T20:53:45.628136,286.216700, -6.047300,163.157900,+30.881900, +2.55, 418.910, 524.440\n2024-08-09T20:53:45.668188,286.235700, -6.104300,163.148200,+30.822500, +3.41, 418.660, 525.380\n2024-08-09T20:53:45.708112,286.361800, -6.025100,162.988300,+30.878000, +1.75, 416.590, 524.050\n2024-08-09T20:53:45.788168,286.591700, -6.084700,162.739400,+30.778100, +3.41, 413.000, 525.000\n2024-08-09T20:53:45.828120,286.598000, -6.035800,162.722000,+30.825100, +1.06, 412.860, 524.190\n2024-08-09T20:53:45.868048,286.551500, -5.955500,162.758200,+30.912400, +0.03, 413.530, 522.870\n2024-08-09T20:53:45.908208,286.581400, -6.128200,162.760900,+30.737300, +0.65, 413.210, 525.720\n2024-08-09T20:53:45.948100,286.701400, -6.014400,162.600300,+30.827300, -0.06, 411.210, 523.820\n2024-08-09T20:53:45.988052,286.852900, -5.963900,162.417100,+30.849200, +0.82, 408.770, 522.960\n2024-08-09T20:53:46.028220,286.947500, -6.145700,162.349200,+30.653000, +1.73, 407.440, 525.950\n2024-08-09T20:53:46.068180,286.988900, -6.102600,162.293000,+30.687800, +1.83, 406.750, 525.230\n2024-08-09T20:53:46.108184,287.100200, -6.108000,162.168000,+30.661800, +1.58, 405.000, 525.300\n2024-08-09T20:53:46.148140,287.118500, -6.060300,162.136900,+30.705100, +1.33, 404.670, 524.510\n2024-08-09T20:53:46.188188,287.204800, -6.113900,162.050900,+30.636400, +1.00, 403.360, 525.380\n2024-08-09T20:53:46.228088,287.311800, -6.006100,161.905800,+30.722100, +1.73, 401.580, 523.580\n2024-08-09T20:53:46.268232,287.294900, -6.161500,161.959600,+30.572700, +1.78, 401.990, 526.150\n2024-08-09T20:53:46.308176,287.414200, -6.102800,161.811500,+30.607700, +2.62, 400.060, 525.160\n2024-08-09T20:53:46.348096,287.480500, -6.015100,161.716900,+30.681100, +2.49, 398.940, 523.700\n2024-08-09T20:53:46.388204,287.580600, -6.136700,161.630900,+30.542600, +1.52, 397.480, 525.690\n2024-08-09T20:53:46.428184,287.571100, -6.112400,161.636400,+30.568300, +0.66, 397.610, 525.290\n2024-08-09T20:53:46.468216,287.643500, -6.150100,161.563100,+30.517400, +0.36, 396.510, 525.900\n2024-08-09T20:53:46.508164,287.762700, -6.093800,161.415600,+30.549400, +1.69, 394.590, 524.950\n2024-08-09T20:53:46.548148,287.846100, -6.077800,161.317700,+30.548900, +1.49, 393.270, 524.670\n2024-08-09T20:53:46.588192,287.908300, -6.124600,161.258100,+30.490900, +1.19, 392.340, 525.430\n2024-08-09T20:53:46.628180,287.997200, -6.113400,161.155200,+30.484300, +1.48, 390.940, 525.230\n"} +{"statusCode": 200, "body": "# %ECSV 0.9\n# ---\n# datatype:\n# - {name: datetime, datatype: string}\n# - {name: ra, unit: deg, datatype: float64}\n# - {name: dec, unit: deg, datatype: float64}\n# - {name: azimuth, datatype: float64}\n# - {name: altitude, datatype: float64}\n# - {name: mag_data, datatype: float64}\n# - {name: x_image, unit: pix, datatype: float64}\n# - {name: y_image, unit: pix, datatype: float64}\n# delimiter: ','\n# meta: !!omap\n# - {obs_latitude: 51.79611}\n# - {obs_longitude: -0.2125}\n# - {obs_elevation: 88.0}\n# - {origin: 'ukmda'}\n# - {camera_id: 'UK005U'}\n# - {cx: 1280}\n# - {cy: 720}\n# - {photometric_band: 'unknown'}\n# - {image_file: ['FF_UK005U_20240809_205337_439_0060160.fits']}\n# - {isodate_start_obs: '2024-08-09T20:53:37.439009'}\n# - {isodate_calib: '2024-08-09T20:53:37.587552'}\n# - {astrometry_number_stars: 20}\n# - {mag_label: 'mag'}\n# - {no_frags: 1}\n# - {obs_az: 179.262997501945}\n# - {obs_ev: 40.22819526220094}\n# - {obs_rot: -0.23185561383642125}\n# - {fov_horiz: 87.40564348973956}\n# - {fov_vert: 44.36805480268697}\n# schema: astropy-2.0\ndatetime,ra,dec,azimuth,altitude,mag_data,x_image,y_image\n2024-08-09T20:53:37.587552,270.300100, -5.466500,181.661800,+32.725900, +0.87, 683.310, 513.920\n2024-08-09T20:53:37.627512,270.380000, -5.425200,181.568400,+32.768800, +1.31, 681.950, 513.250\n2024-08-09T20:53:37.667628,270.443500, -5.548100,181.490700,+32.647100, +0.80, 680.890, 515.330\n2024-08-09T20:53:37.707628,270.542600, -5.545900,181.373900,+32.651100, +0.74, 679.210, 515.320\n2024-08-09T20:53:37.747616,270.635600, -5.530000,181.264500,+32.668500, +0.66, 677.630, 515.080\n2024-08-09T20:53:37.787540,270.740400, -5.446000,181.142300,+32.754100, +1.27, 675.840, 513.700\n2024-08-09T20:53:37.827556,270.820700, -5.463100,181.047100,+32.738100, +0.65, 674.480, 514.010\n2024-08-09T20:53:37.867588,270.923500, -5.494800,180.925200,+32.707700, +1.24, 672.740, 514.570\n2024-08-09T20:53:37.907616,271.001600, -5.522800,180.832700,+32.680700, +1.38, 671.420, 515.060\n2024-08-09T20:53:37.947612,271.094100, -5.518400,180.723600,+32.686200, +0.90, 669.850, 515.010\n2024-08-09T20:53:37.987588,271.158100, -5.490500,180.648400,+32.714600, +1.05, 668.760, 514.560\n2024-08-09T20:53:38.027596,271.247100, -5.499300,180.543100,+32.706700, +1.37, 667.250, 514.730\n2024-08-09T20:53:38.067568,271.329900, -5.465800,180.445700,+32.740800, +1.44, 665.840, 514.190\n2024-08-09T20:53:38.107640,271.429000, -5.543000,180.328000,+32.664200, +1.20, 664.170, 515.510\n2024-08-09T20:53:38.147692,271.523300, -5.600000,180.216400,+32.607700, +1.65, 662.580, 516.490\n2024-08-09T20:53:38.187564,271.579000, -5.459000,180.151600,+32.748900, +0.69, 661.610, 514.140\n2024-08-09T20:53:38.227556,271.617800, -5.448900,180.105800,+32.759200, +0.40, 660.950, 513.980\n2024-08-09T20:53:38.267668,271.641700, -5.570800,180.077300,+32.637400, +0.78, 660.570, 516.030\n2024-08-09T20:53:38.307552,271.828500, -5.444100,179.856800,+32.764500, +0.89, 657.370, 513.950\n2024-08-09T20:53:38.347624,271.901900, -5.520500,179.770100,+32.688100, +0.28, 656.140, 515.250\n2024-08-09T20:53:38.387720,272.012600, -5.620900,179.639600,+32.587600, +1.18, 654.280, 516.960\n2024-08-09T20:53:38.427700,272.119500, -5.597900,179.513400,+32.610400, +0.86, 652.460, 516.600\n2024-08-09T20:53:38.467636,272.208200, -5.526300,179.408600,+32.681600, +1.01, 650.940, 515.420\n2024-08-09T20:53:38.507644,272.285500, -5.536000,179.317400,+32.671600, +0.94, 649.630, 515.600\n2024-08-09T20:53:38.547732,272.370900, -5.627300,179.217300,+32.579900, +1.27, 648.200, 517.150\n2024-08-09T20:53:38.587652,272.473400, -5.541800,179.095700,+32.664600, +1.07, 646.440, 515.740\n2024-08-09T20:53:38.627648,272.552300, -5.537800,179.002600,+32.668000, +1.10, 645.100, 515.690\n2024-08-09T20:53:38.667712,272.639200, -5.602900,178.900700,+32.602200, +0.88, 643.640, 516.800\n2024-08-09T20:53:38.707696,272.720200, -5.585100,178.805000,+32.619100, +1.46, 642.260, 516.520\n2024-08-09T20:53:38.747744,272.812800, -5.635200,178.696400,+32.568000, +1.06, 640.700, 517.380\n2024-08-09T20:53:38.787764,272.846900, -5.658700,178.656800,+32.544200, +0.80, 640.130, 517.780\n2024-08-09T20:53:38.827788,272.962000, -5.679300,178.521400,+32.522000, +0.96, 638.180, 518.150\n2024-08-09T20:53:38.867668,273.037300, -5.550200,178.430500,+32.650100, +1.02, 636.870, 516.000\n2024-08-09T20:53:38.907688,273.134200, -5.573400,178.316600,+32.625400, +1.40, 635.230, 516.410\n2024-08-09T20:53:38.947740,273.204100, -5.627500,178.235400,+32.570200, +0.97, 634.060, 517.330\n2024-08-09T20:53:38.987772,273.304200, -5.660300,178.118100,+32.535700, +0.92, 632.370, 517.900\n2024-08-09T20:53:39.027748,273.388000, -5.633700,178.018700,+32.560800, +0.73, 630.940, 517.470\n2024-08-09T20:53:39.067804,273.503900, -5.692600,177.883600,+32.499600, +1.63, 628.990, 518.480\n2024-08-09T20:53:39.107724,273.571400, -5.604200,177.801900,+32.586600, +1.26, 627.820, 517.010\n2024-08-09T20:53:39.147756,273.619200, -5.638800,177.746500,+32.550900, +1.77, 627.020, 517.600\n2024-08-09T20:53:39.187848,273.727000, -5.738500,177.622200,+32.448800, +1.10, 625.220, 519.290\n2024-08-09T20:53:39.227792,273.837900, -5.675200,177.489800,+32.509400, +1.50, 623.320, 518.250\n2024-08-09T20:53:39.267756,273.940900, -5.633600,177.367200,+32.548500, +1.39, 621.560, 517.570\n2024-08-09T20:53:39.307620,273.918500, -5.489500,177.389500,+32.693100, +0.34, 621.900, 515.150\n2024-08-09T20:53:39.347792,273.993800, -5.674800,177.306500,+32.505900, +0.56, 620.680, 518.270\n2024-08-09T20:53:39.387744,274.044800, -5.621100,177.244800,+32.558100, +0.63, 619.800, 517.380\n2024-08-09T20:53:39.427676,274.209600, -5.547300,177.048000,+32.627300, +0.54, 616.980, 516.170\n2024-08-09T20:53:39.467852,274.304000, -5.736100,176.943500,+32.435700, +0.93, 615.440, 519.350\n2024-08-09T20:53:39.507832,274.401500, -5.713700,176.827900,+32.455100, +0.74, 613.780, 518.990\n2024-08-09T20:53:39.547832,274.501800, -5.712700,176.709900,+32.452800, +1.41, 612.080, 518.990\n2024-08-09T20:53:39.587776,274.571500, -5.652400,176.625500,+32.510800, +0.97, 610.880, 517.990\n2024-08-09T20:53:39.627832,274.629400, -5.712100,176.559900,+32.449000, +1.65, 609.920, 519.000\n2024-08-09T20:53:39.667816,274.740600, -5.692000,176.428300,+32.465200, +0.90, 608.030, 518.680\n2024-08-09T20:53:39.707848,274.818600, -5.724800,176.337900,+32.429600, +0.94, 606.720, 519.240\n2024-08-09T20:53:39.747784,274.934100, -5.655700,176.198900,+32.494300, +1.66, 604.740, 518.100\n2024-08-09T20:53:39.787788,274.979100, -5.658300,176.146100,+32.489900, +1.37, 603.980, 518.150\n2024-08-09T20:53:39.827808,275.091200, -5.682400,176.015300,+32.461400, +1.40, 602.090, 518.570\n2024-08-09T20:53:39.867964,275.092000, -5.847300,176.022600,+32.296600, +0.76, 602.140, 521.330\n2024-08-09T20:53:39.907864,275.205500, -5.739400,175.884000,+32.399700, +0.65, 600.180, 519.540\n2024-08-09T20:53:39.947856,275.295200, -5.731500,175.778200,+32.403800, +0.82, 598.660, 519.420\n2024-08-09T20:53:39.987868,275.391800, -5.741500,175.665200,+32.389600, +1.11, 597.030, 519.600\n2024-08-09T20:53:40.027876,275.464200, -5.750500,175.580600,+32.377400, +1.50, 595.810, 519.760\n2024-08-09T20:53:40.067796,275.563900, -5.664400,175.458700,+32.458900, +0.97, 594.090, 518.330\n2024-08-09T20:53:40.107876,275.642800, -5.749200,175.370700,+32.370400, +0.93, 592.790, 519.760\n2024-08-09T20:53:40.147892,275.727900, -5.767700,175.271900,+32.347900, +1.23, 591.360, 520.080\n2024-08-09T20:53:40.187808,275.822100, -5.674500,175.155700,+32.436400, +1.49, 589.730, 518.530\n2024-08-09T20:53:40.227900,275.877200, -5.773200,175.096900,+32.335000, +1.22, 588.840, 520.190\n2024-08-09T20:53:40.267956,275.974700, -5.834700,174.986400,+32.268600, +1.65, 587.220, 521.230\n2024-08-09T20:53:40.307996,276.085200, -5.873500,174.859100,+32.224100, +2.53, 585.370, 521.890\n2024-08-09T20:53:40.347912,276.183700, -5.783800,174.737900,+32.308400, +2.03, 583.670, 520.400\n2024-08-09T20:53:40.387808,276.143300, -5.674700,174.778500,+32.419500, +0.14, 584.310, 518.570\n2024-08-09T20:53:40.427812,276.224600, -5.676600,174.683200,+32.413200, +0.50, 582.940, 518.610\n2024-08-09T20:53:40.467860,276.265700, -5.728900,174.638500,+32.358700, +0.84, 582.270, 519.490\n2024-08-09T20:53:40.507768,276.432500, -5.628700,174.435600,+32.449300, +0.62, 579.410, 517.830\n2024-08-09T20:53:40.547864,276.516500, -5.733400,174.344300,+32.340000, +0.67, 578.040, 519.590\n2024-08-09T20:53:40.587936,276.657200, -5.809100,174.184500,+32.256000, +1.23, 575.700, 520.870\n2024-08-09T20:53:40.627888,276.698000, -5.754500,174.132800,+32.308100, +1.01, 574.990, 519.960\n2024-08-09T20:53:40.667964,276.790500, -5.837700,174.030500,+32.219300, +1.20, 573.470, 521.360\n2024-08-09T20:53:40.707936,276.873900, -5.805000,173.930300,+32.246800, +1.27, 572.050, 520.820\n2024-08-09T20:53:40.747952,276.957600, -5.821900,173.833600,+32.224600, +1.20, 570.650, 521.110\n2024-08-09T20:53:40.787924,277.027000, -5.794700,173.750300,+32.247300, +1.64, 569.470, 520.660\n2024-08-09T20:53:40.827928,277.108500, -5.794900,173.654900,+32.241800, +0.84, 568.100, 520.670\n2024-08-09T20:53:40.867948,277.196500, -5.816600,173.553500,+32.214200, +1.13, 566.630, 521.040\n2024-08-09T20:53:40.907880,277.310300, -5.743200,173.414100,+32.279800, +1.88, 564.680, 519.820\n2024-08-09T20:53:40.947988,277.303100, -5.861000,173.432400,+32.162700, +0.59, 564.860, 521.790\n2024-08-09T20:53:40.987932,277.420400, -5.801300,173.290100,+32.214200, +1.09, 562.860, 520.800\n2024-08-09T20:53:41.027992,277.489500, -5.863900,173.214500,+32.147000, +0.74, 561.730, 521.850\n2024-08-09T20:53:41.067992,277.617400, -5.861600,173.064600,+32.140100, +1.01, 559.580, 521.820\n2024-08-09T20:53:41.107920,277.679700, -5.787800,172.985500,+32.209200, +1.05, 558.500, 520.590\n2024-08-09T20:53:41.148000,277.774600, -5.873600,172.882000,+32.116600, +1.39, 556.950, 522.030\n2024-08-09T20:53:41.187992,277.848800, -5.863800,172.794400,+32.120900, +0.89, 555.700, 521.870\n2024-08-09T20:53:41.227992,277.942500, -5.864100,172.684900,+32.113500, +1.90, 554.130, 521.880\n2024-08-09T20:53:41.267972,277.986000, -5.841200,172.632100,+32.133000, +1.30, 553.390, 521.500\n2024-08-09T20:53:41.307940,278.088100, -5.804400,172.509300,+32.161700, +1.48, 551.660, 520.890\n2024-08-09T20:53:41.347960,278.207500, -5.826900,172.371700,+32.130000, +1.83, 549.670, 521.270\n2024-08-09T20:53:41.388012,278.276800, -5.882400,172.296100,+32.069100, +1.35, 548.540, 522.200\n2024-08-09T20:53:41.428012,278.357400, -5.881000,172.201800,+32.064000, +1.68, 547.190, 522.180\n2024-08-09T20:53:41.467884,278.393800, -5.743200,172.146000,+32.198300, +0.83, 546.510, 519.880\n2024-08-09T20:53:41.507908,278.387700, -5.771300,172.156100,+32.170800, +0.13, 546.630, 520.350\n2024-08-09T20:53:41.548072,278.433500, -5.949700,172.120100,+31.989300, +1.05, 545.960, 523.330\n2024-08-09T20:53:41.587892,278.637500, -5.753500,171.862200,+32.167700, +0.38, 542.440, 520.060\n2024-08-09T20:53:41.627960,278.724200, -5.826900,171.768300,+32.087100, +0.69, 541.030, 521.290\n2024-08-09T20:53:41.667952,278.836500, -5.818400,171.636300,+32.085900, +1.73, 539.150, 521.150\n2024-08-09T20:53:41.708024,278.913900, -5.896100,171.554100,+32.001700, +1.37, 537.900, 522.450\n2024-08-09T20:53:41.747976,278.975700, -5.841500,171.476400,+32.050600, +0.91, 536.840, 521.540\n2024-08-09T20:53:41.788032,279.062900, -5.903700,171.381300,+31.980800, +1.17, 535.420, 522.580\n2024-08-09T20:53:41.827988,279.162600, -5.855700,171.259800,+32.019600, +1.70, 533.730, 521.780\n2024-08-09T20:53:41.868012,279.213300, -5.879600,171.203400,+31.991100, +1.18, 532.900, 522.180\n2024-08-09T20:53:41.907968,279.271800, -5.835200,171.130400,+32.029900, +1.32, 531.900, 521.440\n2024-08-09T20:53:41.948060,279.346700, -5.935200,171.054200,+31.923400, +1.64, 530.710, 523.110\n2024-08-09T20:53:41.988020,279.395100, -5.889100,170.992900,+31.964800, +2.34, 529.880, 522.340\n2024-08-09T20:53:42.028088,279.471600, -5.964000,170.912200,+31.883000, +0.77, 528.650, 523.590\n2024-08-09T20:53:42.068112,279.542200, -5.989100,170.832900,+31.851200, +0.84, 527.490, 524.010\n2024-08-09T20:53:42.108028,279.631600, -5.898600,170.718500,+31.932700, +0.64, 525.950, 522.500\n2024-08-09T20:53:42.147976,279.745000, -5.841600,170.579700,+31.978200, +1.22, 524.030, 521.550\n2024-08-09T20:53:42.188080,279.853800, -5.953800,170.466400,+31.855900, +1.17, 522.290, 523.420\n2024-08-09T20:53:42.227992,279.948500, -5.858400,170.344800,+31.941200, +1.38, 520.660, 521.830\n2024-08-09T20:53:42.268024,280.007600, -5.892600,170.280200,+31.901200, +1.32, 519.700, 522.400\n2024-08-09T20:53:42.308064,280.032900, -5.937600,170.256400,+31.853800, +1.19, 519.310, 523.150\n2024-08-09T20:53:42.348024,280.133700, -5.892700,170.133700,+31.888100, +1.12, 517.610, 522.400\n2024-08-09T20:53:42.388088,280.247800, -5.962400,170.009600,+31.807000, +1.64, 515.760, 523.560\n2024-08-09T20:53:42.428060,280.301700, -5.934200,169.943500,+31.829300, +1.99, 514.850, 523.090\n2024-08-09T20:53:42.468224,280.332000, -6.109000,169.930300,+31.652400, +3.17, 514.460, 526.000\n2024-08-09T20:53:42.508148,280.482300, -6.028700,169.745800,+31.716200, +2.42, 511.920, 524.660\n2024-08-09T20:53:42.548216,280.526900, -6.102000,169.703500,+31.638500, +2.44, 511.230, 525.880\n2024-08-09T20:53:42.587888,280.505200, -5.748000,169.683600,+31.992800, +0.01, 511.370, 519.980\n2024-08-09T20:53:42.628024,280.580800, -5.894400,169.614500,+31.839000, +0.39, 510.210, 522.420\n2024-08-09T20:53:42.668036,280.719700, -5.907800,169.454800,+31.810500, +0.31, 507.920, 522.640\n2024-08-09T20:53:42.707948,280.825000, -5.814400,169.320200,+31.891600, +0.60, 506.120, 521.080\n2024-08-09T20:53:42.748128,280.896800, -6.007200,169.262600,+31.691900, +1.73, 505.060, 524.290\n2024-08-09T20:53:42.788120,280.991600, -6.000200,169.151700,+31.688200, +1.50, 503.490, 524.170\n2024-08-09T20:53:42.828072,281.087800, -5.948700,169.033300,+31.728200, +1.09, 501.870, 523.310\n2024-08-09T20:53:42.868048,281.152900, -5.923100,168.954300,+31.746200, +1.23, 500.780, 522.880\n2024-08-09T20:53:42.908108,281.251400, -5.987600,168.849100,+31.670700, +0.99, 499.200, 523.950\n2024-08-09T20:53:42.948036,281.350300, -5.911500,168.723900,+31.734500, +1.71, 497.520, 522.680\n2024-08-09T20:53:42.988068,281.397300, -5.945300,168.674200,+31.695500, +1.37, 496.770, 523.240\n2024-08-09T20:53:43.028052,281.487100, -5.927500,168.567700,+31.702400, +2.35, 495.280, 522.940\n2024-08-09T20:53:43.068140,281.521500, -6.021300,168.541300,+31.605100, +1.90, 494.780, 524.500\n2024-08-09T20:53:43.108248,281.593900, -6.137600,168.474300,+31.481000, +2.03, 493.670, 526.430\n2024-08-09T20:53:43.148104,281.600500, -5.985500,168.445000,+31.631100, +0.85, 493.460, 523.900\n2024-08-09T20:53:43.188132,281.756800, -6.013700,168.268200,+31.584100, +0.29, 490.910, 524.360\n2024-08-09T20:53:43.228068,281.784500, -5.944700,168.226200,+31.649200, +0.98, 490.410, 523.210\n2024-08-09T20:53:43.268100,281.956400, -5.979500,168.032300,+31.593100, +1.42, 487.610, 523.780\n2024-08-09T20:53:43.308072,281.996800, -5.952000,167.981600,+31.615300, +1.12, 486.930, 523.320\n2024-08-09T20:53:43.348108,282.089900, -5.988400,167.879500,+31.567400, +1.56, 485.430, 523.920\n2024-08-09T20:53:43.388120,282.151700, -6.004300,167.810600,+31.543800, +1.65, 484.430, 524.180\n2024-08-09T20:53:43.428088,282.208900, -5.969600,167.739300,+31.570800, +2.05, 483.470, 523.600\n2024-08-09T20:53:43.467992,282.272800, -5.865300,167.649500,+31.666000, +2.23, 482.350, 521.860\n2024-08-09T20:53:43.508032,282.418300, -5.909200,167.488000,+31.603500, +3.07, 480.000, 522.580\n2024-08-09T20:53:43.588088,282.445000, -5.968200,167.466600,+31.541500, +2.75, 479.610, 523.560\n2024-08-09T20:53:43.628168,282.607300, -6.056800,167.293100,+31.432200, +2.73, 477.020, 525.020\n2024-08-09T20:53:43.668028,282.524500, -5.906600,167.365400,+31.592100, -0.00, 478.270, 522.530\n2024-08-09T20:53:43.708060,282.600100, -5.941800,167.283600,+31.547100, +0.12, 477.060, 523.110\n2024-08-09T20:53:43.748088,282.657900, -5.972200,167.221800,+31.509300, +0.53, 476.140, 523.610\n2024-08-09T20:53:43.787968,282.862200, -5.843200,166.965100,+31.609300, +0.11, 472.710, 521.450\n2024-08-09T20:53:43.828152,282.980400, -6.041100,166.861000,+31.397100, +1.15, 470.930, 524.730\n2024-08-09T20:53:43.868140,283.060900, -6.028900,166.766200,+31.398000, +2.13, 469.610, 524.520\n2024-08-09T20:53:43.908136,283.108100, -6.023800,166.711100,+31.396600, +1.25, 468.840, 524.430\n2024-08-09T20:53:43.948188,283.211000, -6.082700,166.602400,+31.323800, +1.46, 467.210, 525.400\n2024-08-09T20:53:43.988064,283.262100, -5.948700,166.521400,+31.449200, +1.51, 466.280, 523.170\n2024-08-09T20:53:44.028144,283.322100, -6.033400,166.466500,+31.357000, +1.39, 465.370, 524.570\n2024-08-09T20:53:44.068112,283.403000, -5.998300,166.367600,+31.380100, +1.44, 464.030, 523.980\n2024-08-09T20:53:44.108128,283.487100, -6.017400,166.274100,+31.349100, +1.33, 462.680, 524.290\n2024-08-09T20:53:44.148156,283.520800, -6.049000,166.240900,+31.313100, +2.42, 462.160, 524.810\n2024-08-09T20:53:44.188172,283.692900, -6.065700,166.045800,+31.271500, +2.24, 459.380, 525.070\n2024-08-09T20:53:44.228152,283.647800, -6.045500,166.094400,+31.298000, +0.44, 460.100, 524.740\n2024-08-09T20:53:44.268120,283.741200, -6.010500,165.981100,+31.318900, +0.72, 458.560, 524.150\n2024-08-09T20:53:44.308164,283.862200, -6.060700,165.850800,+31.251400, +0.85, 456.640, 524.970\n2024-08-09T20:53:44.348136,283.962100, -6.030000,165.730700,+31.266900, +1.64, 455.000, 524.450\n2024-08-09T20:53:44.388088,284.036400, -5.979300,165.636400,+31.305800, +1.57, 453.760, 523.600\n2024-08-09T20:53:44.428076,284.082800, -5.963900,165.580500,+31.314000, +2.02, 453.000, 523.340\n2024-08-09T20:53:44.468144,284.135400, -6.037800,165.533400,+31.233100, +1.28, 452.210, 524.560\n2024-08-09T20:53:44.508108,284.210500, -6.002100,165.440900,+31.256800, +1.71, 450.970, 523.960\n2024-08-09T20:53:44.548172,284.206600, -6.072000,165.458000,+31.188400, +2.04, 451.090, 525.120\n2024-08-09T20:53:44.588228,284.361400, -6.131600,165.291300,+31.105700, +2.83, 448.640, 526.090\n2024-08-09T20:53:44.628084,284.479800, -5.978700,165.127700,+31.238400, +2.92, 446.610, 523.540\n2024-08-09T20:53:44.708332,284.531500, -6.248100,165.118300,+30.964300, +4.71, 446.000, 528.000\n2024-08-09T20:53:44.748040,284.568500, -5.930500,165.017500,+31.272100, +0.77, 445.150, 522.730\n2024-08-09T20:53:44.788048,284.590200, -5.939700,164.994500,+31.259700, +0.13, 444.810, 522.880\n2024-08-09T20:53:44.828168,284.608600, -6.070100,164.997600,+31.128000, +0.30, 444.620, 525.040\n2024-08-09T20:53:44.868048,284.804200, -5.941900,164.749500,+31.223500, +0.34, 441.370, 522.890\n2024-08-09T20:53:44.908096,284.940600, -5.992300,164.602800,+31.151700, +0.46, 439.220, 523.710\n2024-08-09T20:53:44.948192,285.032100, -6.099300,164.518500,+31.031400, +1.89, 437.840, 525.470\n2024-08-09T20:53:44.988124,285.103900, -6.025600,164.422400,+31.092400, +1.40, 436.630, 524.240\n2024-08-09T20:53:45.028136,285.168800, -6.037000,164.350400,+31.070500, +1.37, 435.600, 524.420\n2024-08-09T20:53:45.068132,285.260000, -6.035900,164.246000,+31.056600, +1.17, 434.140, 524.390\n2024-08-09T20:53:45.108160,285.311000, -6.065900,164.193700,+31.018600, +1.37, 433.350, 524.880\n2024-08-09T20:53:45.148184,285.390000, -6.092500,164.108700,+30.979200, +1.48, 432.110, 525.310\n2024-08-09T20:53:45.188200,285.447400, -6.111700,164.047100,+30.950700, +1.40, 431.210, 525.620\n2024-08-09T20:53:45.228120,285.527400, -6.025400,163.938800,+31.022300, +1.76, 429.860, 524.180\n2024-08-09T20:53:45.268204,285.522900, -6.114800,163.961800,+30.935000, +1.93, 430.010, 525.660\n2024-08-09T20:53:45.308228,285.642700, -6.141200,163.830400,+30.888700, +0.99, 428.120, 526.080\n2024-08-09T20:53:45.348200,285.699600, -6.114500,163.760200,+30.905400, +0.87, 427.190, 525.630\n2024-08-09T20:53:45.388236,285.800200, -6.152300,163.653300,+30.851000, +0.92, 425.620, 526.240\n2024-08-09T20:53:45.428120,285.853700, -6.025900,163.566800,+30.966300, +1.23, 424.660, 524.140\n2024-08-09T20:53:45.468160,285.939700, -6.069500,163.477800,+30.908400, +1.69, 423.330, 524.850\n2024-08-09T20:53:45.508156,286.020700, -6.067800,163.385200,+30.896000, +1.59, 422.040, 524.810\n2024-08-09T20:53:45.548100,286.096700, -6.006300,163.286000,+30.943300, +1.33, 420.780, 523.780\n2024-08-09T20:53:45.588132,286.162200, -6.042500,163.218900,+30.896200, +1.24, 419.770, 524.370\n2024-08-09T20:53:45.628136,286.216700, -6.047300,163.157900,+30.881900, +2.55, 418.910, 524.440\n2024-08-09T20:53:45.668188,286.235700, -6.104300,163.148200,+30.822500, +3.41, 418.660, 525.380\n2024-08-09T20:53:45.708112,286.361800, -6.025100,162.988300,+30.878000, +1.75, 416.590, 524.050\n2024-08-09T20:53:45.788168,286.591700, -6.084700,162.739400,+30.778100, +3.41, 413.000, 525.000\n2024-08-09T20:53:45.828120,286.598000, -6.035800,162.722000,+30.825100, +1.06, 412.860, 524.190\n2024-08-09T20:53:45.868048,286.551500, -5.955500,162.758200,+30.912400, +0.03, 413.530, 522.870\n2024-08-09T20:53:45.908208,286.581400, -6.128200,162.760900,+30.737300, +0.65, 413.210, 525.720\n2024-08-09T20:53:45.948100,286.701400, -6.014400,162.600300,+30.827300, -0.06, 411.210, 523.820\n2024-08-09T20:53:45.988052,286.852900, -5.963900,162.417100,+30.849200, +0.82, 408.770, 522.960\n2024-08-09T20:53:46.028220,286.947500, -6.145700,162.349200,+30.653000, +1.73, 407.440, 525.950\n2024-08-09T20:53:46.068180,286.988900, -6.102600,162.293000,+30.687800, +1.83, 406.750, 525.230\n2024-08-09T20:53:46.108184,287.100200, -6.108000,162.168000,+30.661800, +1.58, 405.000, 525.300\n2024-08-09T20:53:46.148140,287.118500, -6.060300,162.136900,+30.705100, +1.33, 404.670, 524.510\n2024-08-09T20:53:46.188188,287.204800, -6.113900,162.050900,+30.636400, +1.00, 403.360, 525.380\n2024-08-09T20:53:46.228088,287.311800, -6.006100,161.905800,+30.722100, +1.73, 401.580, 523.580\n2024-08-09T20:53:46.268232,287.294900, -6.161500,161.959600,+30.572700, +1.78, 401.990, 526.150\n2024-08-09T20:53:46.308176,287.414200, -6.102800,161.811500,+30.607700, +2.62, 400.060, 525.160\n2024-08-09T20:53:46.348096,287.480500, -6.015100,161.716900,+30.681100, +2.49, 398.940, 523.700\n2024-08-09T20:53:46.388204,287.580600, -6.136700,161.630900,+30.542600, +1.52, 397.480, 525.690\n2024-08-09T20:53:46.428184,287.571100, -6.112400,161.636400,+30.568300, +0.66, 397.610, 525.290\n2024-08-09T20:53:46.468216,287.643500, -6.150100,161.563100,+30.517400, +0.36, 396.510, 525.900\n2024-08-09T20:53:46.508164,287.762700, -6.093800,161.415600,+30.549400, +1.69, 394.590, 524.950\n2024-08-09T20:53:46.548148,287.846100, -6.077800,161.317700,+30.548900, +1.49, 393.270, 524.670\n2024-08-09T20:53:46.588192,287.908300, -6.124600,161.258100,+30.490900, +1.19, 392.340, 525.430\n2024-08-09T20:53:46.628180,287.997200, -6.113400,161.155200,+30.484300, +1.48, 390.940, 525.230\n"} \ No newline at end of file diff --git a/archive/lambdas/fetchECSV/tests/localTest.ps1 b/archive/lambdas/fetchECSV/tests/localTest.ps1 index 34e513d1..a2afb380 100644 --- a/archive/lambdas/fetchECSV/tests/localTest.ps1 +++ b/archive/lambdas/fetchECSV/tests/localTest.ps1 @@ -1,3 +1,6 @@ # Copyright (C) 2018-2023 Mark McIntyre +$here=$PSScriptRoot # sam build --profile ukmonshared --region eu-west-1 -sam local invoke --profile ukmonshared -e $args[0] --region eu-west-1 +sam local invoke --profile ukmonshared -e $here/test.json --region eu-west-1 > $here/new_output.txt +windiff $here/expected_output.txt $here/new_output.txt + From a779eb426b709a5c06a78a280f069c7f65d99061 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 11:18:55 +0100 Subject: [PATCH 136/150] add informative messages --- .gitignore | 1 + archive/ukmon_pylib/analysis/stationAnalysis.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index d7b55eed..f5a090ad 100644 --- a/.gitignore +++ b/.gitignore @@ -621,3 +621,4 @@ archive/share/combined_shower_table.parquet archive/share/gmn_shower_table_20230518.txt archive/share/IMO_Working_Meteor_Shower_List.xml **/.aws-sam/** +archive/lambdas/fetchECSV/tests/new_output.txt diff --git a/archive/ukmon_pylib/analysis/stationAnalysis.py b/archive/ukmon_pylib/analysis/stationAnalysis.py index 7e888ae4..8c717d78 100644 --- a/archive/ukmon_pylib/analysis/stationAnalysis.py +++ b/archive/ukmon_pylib/analysis/stationAnalysis.py @@ -288,6 +288,8 @@ def pushToWebsite(fuloutdir, outdir, websitebucket): # set up paths, files etc yr = int(ym[:4]) + + print(f'processing for period {ym}') matchcols = ['_Y_ut','_M_ut','_mag','_mjd','mjd','_stream','orbname','stations'] snglcols = ['ID','Shwr','Dtstamp','Ver', 'M', 'Y'] From 969d0f2fcad2b87c5c4eb515ca897684082b934b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 11:34:51 +0100 Subject: [PATCH 137/150] workaround for missing logins file #487 --- archive/ukmon_pylib/metrics/camMetrics.py | 88 ++++++++++++----------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/archive/ukmon_pylib/metrics/camMetrics.py b/archive/ukmon_pylib/metrics/camMetrics.py index b6198aa5..c59c67b8 100644 --- a/archive/ukmon_pylib/metrics/camMetrics.py +++ b/archive/ukmon_pylib/metrics/camMetrics.py @@ -174,47 +174,51 @@ def backPopulate(stationid): caminfo = camlist.drop(columns=['site','direction','oldcode','active','camtype','eMail', 'humanName']) # process the last-login data from the SSHD log - lastlogs = open(os.path.join(datadir, 'reports', 'lastlogins.txt'),'r').readlines() lodata = [] now = datetime.datetime.now(tz=datetime.timezone.utc) - for li in lastlogs: - spls = li.split('ssh') - # could be ubuntu (auth.log) or amazon linux style log - dtstr = spls[0][spls[0].find(':')+1:][:19] - if ' ' in dtstr: - dtval = datetime.datetime.strptime(f'{now.year} {dtstr[:15]}', '%Y %b %d %H:%M:%S').replace(tzinfo=datetime.timezone.utc) - if dtval > now: - dtval = dtval.replace(year=now.year-1, tzinfo=datetime.timezone.utc) - targhost = 'ukmonhelper2' - else: - dtval = datetime.datetime.strptime(dtstr, '%Y-%m-%dT%H:%M:%S') - dtval = dtval.replace(tzinfo=datetime.timezone.utc) - targhost = 'batchserver' - location = spls[1].split(' for ')[1].split()[0] - lodata.append({'location':location, 'lastseen':dtval,'host': targhost}) - - - if len(lodata) > 0: - logindf = pd.DataFrame(lodata) - logindf = logindf.sort_values(by=['lastseen']) - logindf.drop_duplicates(subset=['location'], inplace=True, keep='last') - - # create a merged dataframe with siteid and stationid - intdf = pd.merge(logindf,caminfo, on=['location'], how='outer') - - df = pd.merge(intdf, fulldf, on=['stationid']) - df['uploadtime']=df.uploadtime.astype("str").str.pad(6,fillchar="0") - df['lastupload']=df.upddate.astype('str') + '_' +df.uploadtime - df.lastupload = [datetime.datetime.strptime(x, '%Y%m%d_%H%M%S') for x in df.lastupload] - df = df.drop(columns=['manual','rundate', 'upddate','uploadtime']) - df = df.sort_values(by=['lastupload']) - - outfile=os.path.join(datadir, 'reports', 'stationlogins.txt') - zerodate = datetime.datetime(1970,1,1,0,0,0) - with open(outfile,'w') as outf: - outf.write(f'{"Last Upload":19s} {"Last Connect":19s} {"StationID":20s} {"GMN ID":10s} Via\n') - for _,rw in df.iterrows(): - lastup = '> 1 month ago' if pd.isnull(rw.lastupload) else rw.lastupload.strftime('%Y-%m-%dT%H:%M:%S') - lastlo = '> 1 month ago' if pd.isnull(rw.lastseen) else rw.lastseen.strftime('%Y-%m-%dT%H:%M:%S') - via = 'ukmonhelper2' if pd.isnull(rw.host) else rw.host - outf.write(f'{lastup:19s} {lastlo:19s} {rw.location:20s} {rw.stationid:10s} {via}\n') + loginfile = os.path.join(datadir, 'reports', 'lastlogins.txt') + if os.path.isfile(loginfile): + lastlogs = open(loginfile,'r').readlines() + for li in lastlogs: + spls = li.split('ssh') + # could be ubuntu (auth.log) or amazon linux style log + dtstr = spls[0][spls[0].find(':')+1:][:19] + if ' ' in dtstr: + dtval = datetime.datetime.strptime(f'{now.year} {dtstr[:15]}', '%Y %b %d %H:%M:%S').replace(tzinfo=datetime.timezone.utc) + if dtval > now: + dtval = dtval.replace(year=now.year-1, tzinfo=datetime.timezone.utc) + targhost = 'ukmonhelper2' + else: + dtval = datetime.datetime.strptime(dtstr, '%Y-%m-%dT%H:%M:%S') + dtval = dtval.replace(tzinfo=datetime.timezone.utc) + targhost = 'batchserver' + location = spls[1].split(' for ')[1].split()[0] + lodata.append({'location':location, 'lastseen':dtval,'host': targhost}) + + + if len(lodata) > 0: + logindf = pd.DataFrame(lodata) + logindf = logindf.sort_values(by=['lastseen']) + logindf.drop_duplicates(subset=['location'], inplace=True, keep='last') + + # create a merged dataframe with siteid and stationid + intdf = pd.merge(logindf,caminfo, on=['location'], how='outer') + + df = pd.merge(intdf, fulldf, on=['stationid']) + df['uploadtime']=df.uploadtime.astype("str").str.pad(6,fillchar="0") + df['lastupload']=df.upddate.astype('str') + '_' +df.uploadtime + df.lastupload = [datetime.datetime.strptime(x, '%Y%m%d_%H%M%S') for x in df.lastupload] + df = df.drop(columns=['manual','rundate', 'upddate','uploadtime']) + df = df.sort_values(by=['lastupload']) + + outfile=os.path.join(datadir, 'reports', 'stationlogins.txt') + zerodate = datetime.datetime(1970,1,1,0,0,0) + with open(outfile,'w') as outf: + outf.write(f'{"Last Upload":19s} {"Last Connect":19s} {"StationID":20s} {"GMN ID":10s} Via\n') + for _,rw in df.iterrows(): + lastup = '> 1 month ago' if pd.isnull(rw.lastupload) else rw.lastupload.strftime('%Y-%m-%dT%H:%M:%S') + lastlo = '> 1 month ago' if pd.isnull(rw.lastseen) else rw.lastseen.strftime('%Y-%m-%dT%H:%M:%S') + via = 'ukmonhelper2' if pd.isnull(rw.host) else rw.host + outf.write(f'{lastup:19s} {lastlo:19s} {rw.location:20s} {rw.stationid:10s} {via}\n') + else: + print(f'camera login times file missing, not updating report') \ No newline at end of file From 81501ca0a827abf3bce4bc39f8a41eb4157d7a04 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 11:45:12 +0100 Subject: [PATCH 138/150] fix for issue #486 invalid escape seq in costMetrics.py --- archive/ukmon_pylib/metrics/README.md | 6 +++--- archive/ukmon_pylib/metrics/costMetrics.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/archive/ukmon_pylib/metrics/README.md b/archive/ukmon_pylib/metrics/README.md index 9f5c1717..68364135 100644 --- a/archive/ukmon_pylib/metrics/README.md +++ b/archive/ukmon_pylib/metrics/README.md @@ -2,9 +2,9 @@ routines that create cost and other metrics for managing the account -* camMetrics.py - -* costMetrics.py - -* timingMetrics.py - +* camMetrics.py - generate metrics and status reports for cameras +* costMetrics.py - produce cost analysis and charts +* timingMetrics.py - produce batch timing charts * volumeMetrics.py - * getMatchStats.py - Extract statistics on the matching process from the logfiles diff --git a/archive/ukmon_pylib/metrics/costMetrics.py b/archive/ukmon_pylib/metrics/costMetrics.py index 9b0236fe..03b6789e 100644 --- a/archive/ukmon_pylib/metrics/costMetrics.py +++ b/archive/ukmon_pylib/metrics/costMetrics.py @@ -165,10 +165,10 @@ def drawBarChart(costsfile, typflag, accid): ax.set_ylabel('Cost ($)') ax.set_xlabel('Day of Month') if typflag == 0: - ax.set_title(f'{accid}: cost for month starting {mthdate}: total \${totcost:.2f}') # noqa:W605 + ax.set_title(f'{accid}: cost for month starting {mthdate}: total ${totcost:.2f}') else: avg = totcost/typflag - title = f'{accid}: cost for last {typflag} days: total \${totcost:.2f}, average \${avg:.2f}' # noqa:W605 + title = f'{accid}: cost for last {typflag} days: total ${totcost:.2f}, average ${avg:.2f}' ax.set_title(title) ax.legend() tickbase = 7 From 3fdfc9344d0011a150702d8f9adf13f69970fb5a Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 13:27:44 +0100 Subject: [PATCH 139/150] update fireballapi to python 3.14 and create test case --- .gitignore | 2 +- archive/lambdas/fireballApi/template.yml | 4 ++-- archive/lambdas/fireballApi/tests/localTest.ps1 | 8 ++++++++ archive/lambdas/fireballApi/tests/test.json | 6 ++++++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 archive/lambdas/fireballApi/tests/localTest.ps1 create mode 100644 archive/lambdas/fireballApi/tests/test.json diff --git a/.gitignore b/.gitignore index f5a090ad..4bc0d59a 100644 --- a/.gitignore +++ b/.gitignore @@ -621,4 +621,4 @@ archive/share/combined_shower_table.parquet archive/share/gmn_shower_table_20230518.txt archive/share/IMO_Working_Meteor_Shower_List.xml **/.aws-sam/** -archive/lambdas/fetchECSV/tests/new_output.txt +archive/lambdas/*/tests/new_output.txt diff --git a/archive/lambdas/fireballApi/template.yml b/archive/lambdas/fireballApi/template.yml index 7cb9cc53..fff0183d 100644 --- a/archive/lambdas/fireballApi/template.yml +++ b/archive/lambdas/fireballApi/template.yml @@ -14,7 +14,7 @@ Resources: Type: AWS::Serverless::Function Properties: Handler: getFireballFiles.lambda_handler - Runtime: python3.11 + Runtime: python3.14 FunctionName: getFireballFiles Description: API backend that retrieves fireball files matching a pattern if available Timeout: 120 @@ -35,7 +35,7 @@ Resources: Tags: billingtag: "ukmda" Metadata: - BuildMethod: python3.11 + BuildMethod: python3.14 uploadResource: Type: AWS::ApiGateway::Resource Properties: diff --git a/archive/lambdas/fireballApi/tests/localTest.ps1 b/archive/lambdas/fireballApi/tests/localTest.ps1 new file mode 100644 index 00000000..1672ea36 --- /dev/null +++ b/archive/lambdas/fireballApi/tests/localTest.ps1 @@ -0,0 +1,8 @@ +# Copyright (C) 2018-2023 Mark McIntyre +$here=$PSScriptRoot +# sam build --profile ukmonshared --region eu-west-1 +sam local invoke --profile ukmonshared -e $here/test.json > $here/new_output.txt + +Write-Output "the URLs will be different each time this is run, but you should be able to ctrl-click on a link" + +Get-Content $here/new_output.txt diff --git a/archive/lambdas/fireballApi/tests/test.json b/archive/lambdas/fireballApi/tests/test.json new file mode 100644 index 00000000..1c998934 --- /dev/null +++ b/archive/lambdas/fireballApi/tests/test.json @@ -0,0 +1,6 @@ +{ + "httpMethod": "GET", + "queryStringParameters": { + "pattern": "UK005U_20240809_205337" + } +} From f578a377d961bcd3274db7ad9123dbba28251ccb Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 13:42:05 +0100 Subject: [PATCH 140/150] migrate searcharchive to python3.14 update test --- archive/lambdas/searchArchive/template.yml | 4 +- archive/lambdas/searchArchive/testEvent.json | 59 ------------------- .../searchArchive/tests/expected_output.txt | 1 + .../lambdas/searchArchive/tests/localTest.ps1 | 6 ++ archive/lambdas/searchArchive/tests/test.json | 12 ++++ 5 files changed, 21 insertions(+), 61 deletions(-) delete mode 100644 archive/lambdas/searchArchive/testEvent.json create mode 100644 archive/lambdas/searchArchive/tests/expected_output.txt create mode 100644 archive/lambdas/searchArchive/tests/localTest.ps1 create mode 100644 archive/lambdas/searchArchive/tests/test.json diff --git a/archive/lambdas/searchArchive/template.yml b/archive/lambdas/searchArchive/template.yml index e3352710..63ef3362 100644 --- a/archive/lambdas/searchArchive/template.yml +++ b/archive/lambdas/searchArchive/template.yml @@ -7,7 +7,7 @@ Resources: Type: AWS::Serverless::Function Properties: Handler: searchArchive.lambda_handler - Runtime: python3.11 + Runtime: python3.14 FunctionName: searchArchive Policies: AmazonS3ReadOnlyAccess Timeout: 60 @@ -29,4 +29,4 @@ Resources: Tags: billingtag: "ukmda" Metadata: - BuildMethod: python3.11 + BuildMethod: python3.14 diff --git a/archive/lambdas/searchArchive/testEvent.json b/archive/lambdas/searchArchive/testEvent.json deleted file mode 100644 index a6489de8..00000000 --- a/archive/lambdas/searchArchive/testEvent.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "resource": "/", - "path": "/", - "httpMethod": "GET", - "headers": null, - "multiValueHeaders": null, - "queryStringParameters": { - "a": "2022-04-21T19:15:00.000Z", - "op": "s:LYR_t:", - "b": "2022-04-26T01:30:00.000Z" - }, - "multiValueQueryStringParameters": { - "a": [ - "1" - ], - "op": [ - "add" - ], - "b": [ - "2" - ] - }, - "pathParameters": null, - "stageVariables": null, - "requestContext": { - "resourceId": "cpjymxv245", - "resourcePath": "/", - "httpMethod": "GET", - "extendedRequestId": "av09zEwVjoEFyAg=", - "requestTime": "14/Feb/2021:18:13:44 +0000", - "path": "/", - "accountId": "317976261112", - "protocol": "HTTP/1.1", - "stage": "test-invoke-stage", - "domainPrefix": "testPrefix", - "requestTimeEpoch": 1613326424220, - "requestId": "74cdc6d7-b552-4817-a969-cfd530aef36e", - "identity": { - "cognitoIdentityPoolId": null, - "cognitoIdentityId": null, - "apiKey": "test-invoke-api-key", - "principalOrgId": null, - "cognitoAuthenticationType": null, - "userArn": "arn:aws:iam::317976261112:user/Mark", - "apiKeyId": "test-invoke-api-key-id", - "userAgent": "aws-internal/3 aws-sdk-java/1.11.946 Linux/4.9.230-0.1.ac.223.84.332.metal1.x86_64 OpenJDK_64-Bit_Server_VM/25.282-b08 java/1.8.0_282 vendor/Oracle_Corporation", - "accountId": "317976261112", - "caller": "AIDAJ2JJOJM36MVBCIYL4", - "sourceIp": "test-invoke-source-ip", - "accessKey": "ASIAUUCG4WH4LRHSMJEK", - "cognitoAuthenticationProvider": null, - "user": "AIDAJ2JJOJM36MVBCIYL4" - }, - "domainName": "testPrefix.testDomainName", - "apiId": "0zbnc358p0" - }, - "body": null, - "isBase64Encoded": false -} \ No newline at end of file diff --git a/archive/lambdas/searchArchive/tests/expected_output.txt b/archive/lambdas/searchArchive/tests/expected_output.txt new file mode 100644 index 00000000..59020d03 --- /dev/null +++ b/archive/lambdas/searchArchive/tests/expected_output.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "myFunc([\"1682035507.505272,1Matched,LYR,1.63,UK000P;UK008H;,/reports/2023/orbits/202304/20230421/20230421_000507.505_UK/index.html,/reports/2023/orbits/202304/20230421/20230421_000507.505_UK/20230421_000507_ground_track.png\", \"1682035670.529091,1Matched,LYR,0.78,UK000P;UK008H;,/reports/2023/orbits/202304/20230421/20230421_000750.529_UK/index.html,/reports/2023/orbits/202304/20230421/20230421_000750.529_UK/20230421_000750_ground_track.png\", \"1682036818.882428,1Matched,LYR,-0.54,UK000H;UK0021;UK003E;UK007Q;,/reports/2023/orbits/202304/20230421/20230421_002658.882_UK/index.html,/reports/2023/orbits/202304/20230421/20230421_002658.882_UK/20230421_002658_ground_track.png\", \"1682036885.038899,1Matched,LYR,1.41,UK002L;UK007Z;,/reports/2023/orbits/202304/20230421/20230421_002805.038_UK/index.html,/reports/2023/orbits/202304/20230421/20230421_002805.038_UK/20230421_002805_ground_track.png\"])"} \ No newline at end of file diff --git a/archive/lambdas/searchArchive/tests/localTest.ps1 b/archive/lambdas/searchArchive/tests/localTest.ps1 new file mode 100644 index 00000000..a2afb380 --- /dev/null +++ b/archive/lambdas/searchArchive/tests/localTest.ps1 @@ -0,0 +1,6 @@ +# Copyright (C) 2018-2023 Mark McIntyre +$here=$PSScriptRoot +# sam build --profile ukmonshared --region eu-west-1 +sam local invoke --profile ukmonshared -e $here/test.json --region eu-west-1 > $here/new_output.txt +windiff $here/expected_output.txt $here/new_output.txt + diff --git a/archive/lambdas/searchArchive/tests/test.json b/archive/lambdas/searchArchive/tests/test.json new file mode 100644 index 00000000..7a15e5d3 --- /dev/null +++ b/archive/lambdas/searchArchive/tests/test.json @@ -0,0 +1,12 @@ +{ + "resource": "/", + "path": "/", + "httpMethod": "GET", + "headers": null, + "multiValueHeaders": null, + "queryStringParameters": { + "d1": "2023-04-21T00:00:00.000Z", + "opts": "s:LYR_t:", + "d2": "2023-04-21T00:30:00.000Z" + } +} \ No newline at end of file From 4744bb03038d1ff11a7397a435e5b97a20f3288b Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 14:27:34 +0100 Subject: [PATCH 141/150] update getLiveImages to python 3.14 --- archive/lambdas/camDetails/template.yml | 4 ++-- .../lambdas/camDetails/tests/expected_output.txt | 1 + archive/lambdas/camDetails/tests/localTest.ps1 | 8 ++++++++ archive/lambdas/camDetails/tests/test.json | 6 ++++++ archive/lambdas/getLiveImages/getLiveImages.py | 11 +++++++++-- archive/lambdas/getLiveImages/template.yml | 4 ++-- .../getLiveImages/tests/expected_output_1.txt | 1 + .../getLiveImages/tests/expected_output_2.txt | 1 + archive/lambdas/getLiveImages/tests/localTest.ps1 | 14 ++++++++++++++ archive/lambdas/getLiveImages/tests/test1.json | 6 ++++++ archive/lambdas/getLiveImages/tests/test2.json | 7 +++++++ 11 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 archive/lambdas/camDetails/tests/expected_output.txt create mode 100644 archive/lambdas/camDetails/tests/localTest.ps1 create mode 100644 archive/lambdas/camDetails/tests/test.json create mode 100644 archive/lambdas/getLiveImages/tests/expected_output_1.txt create mode 100644 archive/lambdas/getLiveImages/tests/expected_output_2.txt create mode 100644 archive/lambdas/getLiveImages/tests/localTest.ps1 create mode 100644 archive/lambdas/getLiveImages/tests/test1.json create mode 100644 archive/lambdas/getLiveImages/tests/test2.json diff --git a/archive/lambdas/camDetails/template.yml b/archive/lambdas/camDetails/template.yml index 11c93202..c7f58cdd 100644 --- a/archive/lambdas/camDetails/template.yml +++ b/archive/lambdas/camDetails/template.yml @@ -7,7 +7,7 @@ Resources: Type: AWS::Serverless::Function Properties: Handler: camDetails.lambda_handler - Runtime: python3.11 + Runtime: python3.14 FunctionName: camDetails Description: API backend that retrieves camera details Timeout: 30 @@ -26,5 +26,5 @@ Resources: billingtag: "ukmda" typetag: "api" Metadata: - BuildMethod: python3.11 + BuildMethod: python3.14 diff --git a/archive/lambdas/camDetails/tests/expected_output.txt b/archive/lambdas/camDetails/tests/expected_output.txt new file mode 100644 index 00000000..956acd7f --- /dev/null +++ b/archive/lambdas/camDetails/tests/expected_output.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "[{\"stationid\": \"UK005U\", \"eMail\": \"steve.carter@outlook.com\", \"humanName\": \"Steve Carter\", \"active\": \"1\", \"direction\": \"SE\", \"camtype\": \"2\", \"created\": \"20220222\", \"oldcode\": \"UK005U\", \"site\": \"WelwynGardenCity\"}]"} \ No newline at end of file diff --git a/archive/lambdas/camDetails/tests/localTest.ps1 b/archive/lambdas/camDetails/tests/localTest.ps1 new file mode 100644 index 00000000..de7f8b08 --- /dev/null +++ b/archive/lambdas/camDetails/tests/localTest.ps1 @@ -0,0 +1,8 @@ +# Copyright (C) 2018-2023 Mark McIntyre +$here=$PSScriptRoot +# sam build --profile ukmonshared --region eu-west-1 +sam local invoke --profile ukmonshared -e $here/test.json --region eu-west-1 > $here/new_output.txt +Write-Outpute-Output "any differences will appear between the lines" +Write-Output "======" +Compare-Object (Get-Content $here/expected_output.txt) (Get-Content $here/new_output.txt) +Write-Output "======" diff --git a/archive/lambdas/camDetails/tests/test.json b/archive/lambdas/camDetails/tests/test.json new file mode 100644 index 00000000..6563f92d --- /dev/null +++ b/archive/lambdas/camDetails/tests/test.json @@ -0,0 +1,6 @@ +{ + "httpMethod": "GET", + "queryStringParameters": { + "camid": "UK005U" + } +} diff --git a/archive/lambdas/getLiveImages/getLiveImages.py b/archive/lambdas/getLiveImages/getLiveImages.py index 5d589131..f467826d 100644 --- a/archive/lambdas/getLiveImages/getLiveImages.py +++ b/archive/lambdas/getLiveImages/getLiveImages.py @@ -51,8 +51,14 @@ def getTrueImgs(dtstr, dtstr2, statid, ddb=None): if ddb is None: ddb = boto3.resource('dynamodb', region_name='eu-west-2') table = ddb.Table('LiveBrightness') - d1 = datetime.datetime.strptime(dtstr, '%Y-%m-%dT%H:%M:%S.000Z') - d2 = datetime.datetime.strptime(dtstr2, '%Y-%m-%dT%H:%M:%S.000Z') + if dtstr == 'latest': + d2 = datetime.datetime.now() + d1 = datetime.datetime.now() - datetime.timedelta(days=1) + maxitems = 100 + else: + d1 = datetime.datetime.strptime(dtstr, '%Y-%m-%dT%H:%M:%S.000Z') + d2 = datetime.datetime.strptime(dtstr2, '%Y-%m-%dT%H:%M:%S.000Z') + maxitems = 2000 if d1.hour < 13: capnight=(d1 + datetime.timedelta(days=-1)).strftime('%Y%m%d') else: @@ -61,6 +67,7 @@ def getTrueImgs(dtstr, dtstr2, statid, ddb=None): hv=Decimal(f'{d2.timestamp():.0f}') resp = table.query(KeyConditionExpression=Key('CaptureNight').eq(int(capnight)) & Key('Timestamp').between(lv, hv), ProjectionExpression='ffname', + Limit=maxitems, ScanIndexForward = False) if statid is not None: imglist = [x['ffname'] for x in resp['Items'] if statid in x['ffname']] diff --git a/archive/lambdas/getLiveImages/template.yml b/archive/lambdas/getLiveImages/template.yml index 472a261a..a25c1ddb 100644 --- a/archive/lambdas/getLiveImages/template.yml +++ b/archive/lambdas/getLiveImages/template.yml @@ -7,7 +7,7 @@ Resources: Type: AWS::Serverless::Function Properties: Handler: getLiveImages.lambda_handler - Runtime: python3.11 + Runtime: python3.14 FunctionName: getLiveImages Description: API backend that retrieves a list of livestream images matching a pattern Timeout: 30 @@ -23,4 +23,4 @@ Resources: Tags: billingtag: "ukmda" Metadata: - BuildMethod: python3.11 + BuildMethod: python3.14 diff --git a/archive/lambdas/getLiveImages/tests/expected_output_1.txt b/archive/lambdas/getLiveImages/tests/expected_output_1.txt new file mode 100644 index 00000000..af3d7fc7 --- /dev/null +++ b/archive/lambdas/getLiveImages/tests/expected_output_1.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "[{\"image_name\": \"M20260423_010001_church_cro_s_UK0022P.jpg\"}, {\"image_name\": \"M20260423_010002_catherington_sw_UK008DP.jpg\"}, {\"image_name\": \"M20260423_010003_exeter_c2_UK0021P.jpg\"}, {\"image_name\": \"M20260423_010003_nlobservatory_s_UK00A2P.jpg\"}, {\"image_name\": \"M20260423_010003_trowbridge_s_UK00B5P.jpg\"}, {\"image_name\": \"M20260423_010004_sark_s_UK00APP.jpg\"}, {\"image_name\": \"M20260423_010004_tackley_sw_UK0006P.jpg\"}, {\"image_name\": \"M20260423_010004_whiteparish_w_UK003ZP.jpg\"}, {\"image_name\": \"M20260423_010005_chard_w_UK0024P.jpg\"}, {\"image_name\": \"M20260423_010005_church_cro_sw_UK0009P.jpg\"}, {\"image_name\": \"M20260423_010005_kintbury_w_UK000DP.jpg\"}, {\"image_name\": \"M20260423_010006_bannaunp_se_UK008VP.jpg\"}, {\"image_name\": \"M20260423_010006_llanon_s_UK0089P.jpg\"}, {\"image_name\": \"M20260423_010008_corntown_s_UK000TP.jpg\"}, {\"image_name\": \"M20260423_010008_ringwood_e_UK0001P.jpg\"}, {\"image_name\": \"M20260423_010009_burnley_n_UK005KP.jpg\"}, {\"image_name\": \"M20260423_010009_church_cro_w_UK009WP.jpg\"}, {\"image_name\": \"M20260423_010010_tytherington_w_UK007QP.jpg\"}, {\"image_name\": \"M20260423_010010_wilcot_sw_UK003EP.jpg\"}, {\"image_name\": \"M20260423_010011_bagber_sw_UK00AUP.jpg\"}, {\"image_name\": \"M20260423_010011_garddfotaneg_se_UK00DHP.jpg\"}, {\"image_name\": \"M20260423_010012_corntown_sw_UK001KP.jpg\"}, {\"image_name\": \"M20260423_010012_ringwood_w_UK000HP.jpg\"}, {\"image_name\": \"M20260423_010012_whitchurchhill_w_UK00BWP.jpg\"}, {\"image_name\": \"M20260423_010014_kirkcolm_n_UK0096P.jpg\"}, {\"image_name\": \"M20260423_010014_lochearnhead_w_UK0080P.jpg\"}, {\"image_name\": \"M20260423_010014_moulshamlodge_w_UK0092P.jpg\"}, {\"image_name\": \"M20260423_010019_burnley_n_UK005KP.jpg\"}, {\"image_name\": \"M20260423_010020_johnstone_nnw_UK002LP.jpg\"}, {\"image_name\": \"M20260423_010021_midmar_w_UK007ZP.jpg\"}, {\"image_name\": \"M20260423_010024_moulshamlodge_w_UK0092P.jpg\"}, {\"image_name\": \"M20260423_010028_tissington_sse_UK003UP.jpg\"}, {\"image_name\": \"M20260423_010028_tissington_wsw_UK003TP.jpg\"}, {\"image_name\": \"M20260423_010038_deddington_se_UK009VP.jpg\"}, {\"image_name\": \"M20260423_010038_eastmey_s_UK0057P.jpg\"}, {\"image_name\": \"M20260423_010039_burnley_n_UK005KP.jpg\"}, {\"image_name\": \"M20260423_010040_midmar_s_UK007GP.jpg\"}, {\"image_name\": \"M20260423_010041_peterhead_1_UK000BP.jpg\"}, {\"image_name\": \"M20260423_010048_deddington_se_UK009VP.jpg\"}, {\"image_name\": \"M20260423_010049_eastmey_n_UK00A7P.jpg\"}, {\"image_name\": \"M20260423_010053_cirencester_w_UK00BKP.jpg\"}]"} \ No newline at end of file diff --git a/archive/lambdas/getLiveImages/tests/expected_output_2.txt b/archive/lambdas/getLiveImages/tests/expected_output_2.txt new file mode 100644 index 00000000..9ceb1933 --- /dev/null +++ b/archive/lambdas/getLiveImages/tests/expected_output_2.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "{\"images\": [\"FF_UK00BB_20260713_030133_091_0530944.fits\", \"FF_UK00C6_20260713_030132_108_0527360.fits\"]}"} \ No newline at end of file diff --git a/archive/lambdas/getLiveImages/tests/localTest.ps1 b/archive/lambdas/getLiveImages/tests/localTest.ps1 new file mode 100644 index 00000000..4b5520b6 --- /dev/null +++ b/archive/lambdas/getLiveImages/tests/localTest.ps1 @@ -0,0 +1,14 @@ +# Copyright (C) 2018-2023 Mark McIntyre +$here=$PSScriptRoot +# sam build --profile ukmonshared --region eu-west-1 +sam local invoke --profile ukmonshared -e $here/test1.json --region eu-west-1 > $here/new_output.txt +Write-Output "any differences will appear between the lines" +write-output "======" +Compare-Object (Get-Content $here/expected_output_1.txt) (Get-Content $here/new_output.txt) +write-output "======" + +sam local invoke --profile ukmonshared -e $here/test2.json --region eu-west-1 > $here/new_output.txt +write-output "any differences will appear between the lines" +write-output "======" +Compare-Object (Get-Content $here/expected_output_2.txt) (Get-Content $here/new_output.txt) +write-output "======" diff --git a/archive/lambdas/getLiveImages/tests/test1.json b/archive/lambdas/getLiveImages/tests/test1.json new file mode 100644 index 00000000..0feefd07 --- /dev/null +++ b/archive/lambdas/getLiveImages/tests/test1.json @@ -0,0 +1,6 @@ +{ + "httpMethod": "GET", + "queryStringParameters": { + "pattern": "20260423_0100" + } +} diff --git a/archive/lambdas/getLiveImages/tests/test2.json b/archive/lambdas/getLiveImages/tests/test2.json new file mode 100644 index 00000000..9ee5d165 --- /dev/null +++ b/archive/lambdas/getLiveImages/tests/test2.json @@ -0,0 +1,7 @@ +{ + "httpMethod": "GET", + "queryStringParameters": { + "fmt": "trueimg", + "dtstr": "2026-07-13T03:00:00.000Z" + } +} From 18920fc2d4d77876eefc7f0a79f263f02c4220b2 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 14:39:37 +0100 Subject: [PATCH 142/150] Update matchdataapi to py314 --- archive/lambdas/matchDataApi/template.yml | 4 ++-- archive/lambdas/matchDataApi/tests/detail.txt | 1 + archive/lambdas/matchDataApi/{ => tests}/localTest.ps1 | 6 +++--- archive/lambdas/matchDataApi/tests/matches.txt | 1 + archive/lambdas/matchDataApi/tests/matchesperiod.txt | 1 + archive/lambdas/matchDataApi/tests/points.txt | 1 + archive/lambdas/matchDataApi/tests/station.txt | 1 + archive/lambdas/matchDataApi/tests/summary.txt | 1 + archive/lambdas/matchDataApi/tests/sumperiod.txt | 1 + archive/lambdas/matchDataApi/{ => tests}/testDetail.json | 0 archive/lambdas/matchDataApi/{ => tests}/testMatches.json | 0 .../lambdas/matchDataApi/{ => tests}/testMatchesPeriod.json | 0 archive/lambdas/matchDataApi/{ => tests}/testPoints.json | 0 archive/lambdas/matchDataApi/{ => tests}/testStation.json | 0 archive/lambdas/matchDataApi/{ => tests}/testSumPeriod.json | 0 archive/lambdas/matchDataApi/{ => tests}/testSummary.json | 0 16 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 archive/lambdas/matchDataApi/tests/detail.txt rename archive/lambdas/matchDataApi/{ => tests}/localTest.ps1 (98%) create mode 100644 archive/lambdas/matchDataApi/tests/matches.txt create mode 100644 archive/lambdas/matchDataApi/tests/matchesperiod.txt create mode 100644 archive/lambdas/matchDataApi/tests/points.txt create mode 100644 archive/lambdas/matchDataApi/tests/station.txt create mode 100644 archive/lambdas/matchDataApi/tests/summary.txt create mode 100644 archive/lambdas/matchDataApi/tests/sumperiod.txt rename archive/lambdas/matchDataApi/{ => tests}/testDetail.json (100%) rename archive/lambdas/matchDataApi/{ => tests}/testMatches.json (100%) rename archive/lambdas/matchDataApi/{ => tests}/testMatchesPeriod.json (100%) rename archive/lambdas/matchDataApi/{ => tests}/testPoints.json (100%) rename archive/lambdas/matchDataApi/{ => tests}/testStation.json (100%) rename archive/lambdas/matchDataApi/{ => tests}/testSumPeriod.json (100%) rename archive/lambdas/matchDataApi/{ => tests}/testSummary.json (100%) diff --git a/archive/lambdas/matchDataApi/template.yml b/archive/lambdas/matchDataApi/template.yml index 83f98f96..06593aaa 100644 --- a/archive/lambdas/matchDataApi/template.yml +++ b/archive/lambdas/matchDataApi/template.yml @@ -7,7 +7,7 @@ Resources: Type: AWS::Serverless::Function Properties: Handler: matchDataApi.lambda_handler - Runtime: python3.11 + Runtime: python3.14 FunctionName: matchDataApi Description: API backend that fetches match data Timeout: 120 @@ -37,4 +37,4 @@ Resources: billingtag: "ukmda" typetag: "api" Metadata: - BuildMethod: python3.11 + BuildMethod: python3.14 diff --git a/archive/lambdas/matchDataApi/tests/detail.txt b/archive/lambdas/matchDataApi/tests/detail.txt new file mode 100644 index 00000000..63706250 --- /dev/null +++ b/archive/lambdas/matchDataApi/tests/detail.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "{\"_dbver\": \"RMS\", \"_num\": 0, \"_localtime\": \"_20251008_235928\", \"_mjd\": 60957.0, \"_sol\": 195.603, \"_ID1\": \"_(UNIFIED_2)\", \"_ID2\": \"_\", \"_amag\": 0.213341, \"_ra_o\": 336.732, \"_dc_o\": 24.0106, \"_ra_t\": 335.843, \"_dc_t\": 23.2035, \"_elng\": 347.339, \"_elat\": 30.7371, \"_vo\": 38.449, \"_vi\": 38.449, \"_vg\": 36.8066, \"_vs\": 56.2422, \"_a\": -0.639545, \"_q\": 0.811785, \"_e\": 2.26932, \"_p\": 0.0, \"_peri\": 223.11, \"_node\": 195.604, \"_incl\": 22.7894, \"_stream\": \"spo\", \"_dr\": -1.0, \"_dvpct\": -1.0, \"_mag\": 1.35, \"_Qo\": 0.0, \"_dur\": 0.209149, \"_av\": 0.0, \"_Voa\": 0.0, \"_Pra\": 0.0, \"_Pdc\": 0.0, \"_GPlng\": 0.0, \"_GPlat\": 0.0, \"_ra1\": 0.0, \"_dc1\": 0.0, \"_az1\": 0.0, \"_ev1\": 0.0, \"_lng1\": -4.7401, \"_lat1\": 49.7523, \"_H1\": 84.1274, \"_LD1\": 0.0, \"_Qr1\": 0.0, \"_Qd1\": 0.0, \"_ra2\": 0.0, \"_dc2\": 0.0, \"_lng2\": -4.68556, \"_lat2\": 49.7722, \"_H2\": 78.2479, \"_LD2\": 0.0, \"_Qr2\": 0.0, \"_Qd2\": 0.0, \"_LD21\": 4.66997, \"_az1r\": 241.018, \"_ev1r\": 51.855, \"_evro\": 0.0, \"_evrt\": 0.0, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_rstar\": 0.0, \"_ddeg\": 0.0, \"_cdeg\": 0.0, \"_drop\": 0.0, \"_inout\": 0.0, \"_tme\": 1.0, \"_dt\": 0.000131, \"_GD\": 0.0, \"_Qc\": 0.0, \"_dGP\": 0.0, \"_Gmpct\": 0.0, \"_dv12pct\": 0.0, \"_zmv\": 0.0, \"_Ed\": 0.0, \"_Ex\": 0.0, \"_QA\": 1.0, \"_Y_ut\": 2025, \"_M_ut\": 10, \"_D_ut\": 8, \"_h_ut\": 23, \"_mi_ut\": 59, \"_s_ut\": 28.5028, \"_Nops\": 2.0, \"_Qp\": 0.0, \"_pdeg_sd\": 0.0, \"_rao_sd\": 0.0, \"_dco_sd\": 0.0, \"_vo_sd\": 0.0, \"_rat_sd\": 0.0, \"_dct_sd\": 0.0, \"_vg_sd\": 0.0, \"_a_sd\": 0.0, \"_1_a\": -1.56361, \"_1_a_sd\": 0.0, \"_q_sd\": 0.0, \"_e_sd\": 0.0, \"_peri_sd\": 0.0, \"_node_sd\": 0.0, \"_incl_sd\": 0.0, \"_Er_sd\": 0.0, \"_ZF\": 0.0, \"_OH\": 0.0, \"_ZHR\": 0.0, \"Dummy\": \"0\", \"d2\": \"0\", \"d3\": \"0\", \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_235928.502_UK\", \"src\": \"1Matched\", \"urlstr\": \"https://archive.ukmeteors.co.uk/reports/2025/orbits/202510/20251008/20251008_235928.502_UK/index.html\", \"imgstr\": \"https://archive.ukmeteors.co.uk/reports/2025/orbits/202510/20251008/20251008_235928.502_UK/20251008_235928_ground_track.png\", \"dateval\": \"20251008_235928\", \"mjd\": 60957.0, \"id\": \"_(UNIFIED_2)\", \"iau\": -1, \"shwrname\": \"Sporadic\", \"mass\": 2.4e-05, \"pi\": 58.7142, \"Q\": -2.09087, \"true_anom\": 316.89, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -6.82072, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.060695, \"Jacchia2\": 42.0522, \"numstats\": 2, \"stations\": \"UK0021;UK00A1;\", \"isfb\": 0, \"status\": 1, \"traj_id\": null}"} \ No newline at end of file diff --git a/archive/lambdas/matchDataApi/localTest.ps1 b/archive/lambdas/matchDataApi/tests/localTest.ps1 similarity index 98% rename from archive/lambdas/matchDataApi/localTest.ps1 rename to archive/lambdas/matchDataApi/tests/localTest.ps1 index c71174de..34e513d1 100644 --- a/archive/lambdas/matchDataApi/localTest.ps1 +++ b/archive/lambdas/matchDataApi/tests/localTest.ps1 @@ -1,3 +1,3 @@ -# Copyright (C) 2018-2023 Mark McIntyre -# sam build --profile ukmonshared --region eu-west-1 -sam local invoke --profile ukmonshared -e $args[0] --region eu-west-1 +# Copyright (C) 2018-2023 Mark McIntyre +# sam build --profile ukmonshared --region eu-west-1 +sam local invoke --profile ukmonshared -e $args[0] --region eu-west-1 diff --git a/archive/lambdas/matchDataApi/tests/matches.txt b/archive/lambdas/matchDataApi/tests/matches.txt new file mode 100644 index 00000000..bad0c1c4 --- /dev/null +++ b/archive/lambdas/matchDataApi/tests/matches.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "{\"orbname\": \"20251008_000418.973_UK\"}\n{\"orbname\": \"20251008_001033.396_UK\"}\n{\"orbname\": \"20251008_002024.548_UK\"}\n{\"orbname\": \"20251008_004135.691_UK\"}\n{\"orbname\": \"20251008_004303.341_UK\"}\n{\"orbname\": \"20251008_004521.255_UK\"}\n{\"orbname\": \"20251008_005128.925_UK\"}\n{\"orbname\": \"20251008_005349.606_UK\"}\n{\"orbname\": \"20251008_005903.321_UK\"}\n{\"orbname\": \"20251008_010622.104_UK\"}\n{\"orbname\": \"20251008_021041.984_UK\"}\n{\"orbname\": \"20251008_050816.651_UK\"}\n{\"orbname\": \"20251008_184728.564_UK\"}\n{\"orbname\": \"20251008_185133.618_UK\"}\n{\"orbname\": \"20251008_185412.528_UK\"}\n{\"orbname\": \"20251008_185546.471_UK\"}\n{\"orbname\": \"20251008_185753.409_UK\"}\n{\"orbname\": \"20251008_185915.805_UK\"}\n{\"orbname\": \"20251008_190019.072_UK\"}\n{\"orbname\": \"20251008_190524.632_UK\"}\n{\"orbname\": \"20251008_190534.668_UK\"}\n{\"orbname\": \"20251008_190712.595_UK\"}\n{\"orbname\": \"20251008_190712.932_UK\"}\n{\"orbname\": \"20251008_190805.969_UK\"}\n{\"orbname\": \"20251008_191209.095_UK\"}\n{\"orbname\": \"20251008_191233.265_UK\"}\n{\"orbname\": \"20251008_191519.672_UK\"}\n{\"orbname\": \"20251008_192031.562_UK\"}\n{\"orbname\": \"20251008_193352.793_UK\"}\n{\"orbname\": \"20251008_193515.910_UK\"}\n{\"orbname\": \"20251008_193727.462_UK\"}\n{\"orbname\": \"20251008_193749.099_UK\"}\n{\"orbname\": \"20251008_193819.314_UK\"}\n{\"orbname\": \"20251008_193819.357_UK\"}\n{\"orbname\": \"20251008_194042.180_UK\"}\n{\"orbname\": \"20251008_194409.057_UK\"}\n{\"orbname\": \"20251008_194853.383_UK\"}\n{\"orbname\": \"20251008_194900.942_UK\"}\n{\"orbname\": \"20251008_194910.005_UK\"}\n{\"orbname\": \"20251008_195043.369_UK\"}\n{\"orbname\": \"20251008_195255.427_UK\"}\n{\"orbname\": \"20251008_200203.933_UK\"}\n{\"orbname\": \"20251008_200257.381_UK\"}\n{\"orbname\": \"20251008_200317.614_UK\"}\n{\"orbname\": \"20251008_200346.367_UK\"}\n{\"orbname\": \"20251008_200350.468_UK\"}\n{\"orbname\": \"20251008_200425.504_UK\"}\n{\"orbname\": \"20251008_200706.623_UK\"}\n{\"orbname\": \"20251008_201625.134_UK\"}\n{\"orbname\": \"20251008_201948.314_UK\"}\n{\"orbname\": \"20251008_202048.705_UK\"}\n{\"orbname\": \"20251008_202209.896_UK\"}\n{\"orbname\": \"20251008_202327.467_UK\"}\n{\"orbname\": \"20251008_202518.237_UK\"}\n{\"orbname\": \"20251008_202820.153_UK\"}\n{\"orbname\": \"20251008_203044.373_UK\"}\n{\"orbname\": \"20251008_203118.448_UK\"}\n{\"orbname\": \"20251008_204242.481_UK\"}\n{\"orbname\": \"20251008_204343.676_UK\"}\n{\"orbname\": \"20251008_204935.536_UK\"}\n{\"orbname\": \"20251008_210602.062_UK\"}\n{\"orbname\": \"20251008_211017.523_UK\"}\n{\"orbname\": \"20251008_211122.738_UK\"}\n{\"orbname\": \"20251008_211407.649_UK\"}\n{\"orbname\": \"20251008_211806.932_UK\"}\n{\"orbname\": \"20251008_211836.808_UK\"}\n{\"orbname\": \"20251008_212312.677_UK\"}\n{\"orbname\": \"20251008_212414.140_UK\"}\n{\"orbname\": \"20251008_212536.018_UK\"}\n{\"orbname\": \"20251008_212617.976_UK\"}\n{\"orbname\": \"20251008_212724.007_UK\"}\n{\"orbname\": \"20251008_212739.469_UK\"}\n{\"orbname\": \"20251008_212825.818_UK\"}\n{\"orbname\": \"20251008_212908.235_UK\"}\n{\"orbname\": \"20251008_213233.986_UK\"}\n{\"orbname\": \"20251008_213329.236_UK\"}\n{\"orbname\": \"20251008_213418.276_UK\"}\n{\"orbname\": \"20251008_213703.406_UK\"}\n{\"orbname\": \"20251008_214049.982_UK\"}\n{\"orbname\": \"20251008_214314.133_UK\"}\n{\"orbname\": \"20251008_214405.959_UK\"}\n{\"orbname\": \"20251008_214835.578_UK\"}\n{\"orbname\": \"20251008_214954.907_UK\"}\n{\"orbname\": \"20251008_215036.002_UK\"}\n{\"orbname\": \"20251008_215640.317_UK\"}\n{\"orbname\": \"20251008_220413.588_UK\"}\n{\"orbname\": \"20251008_220624.949_UK\"}\n{\"orbname\": \"20251008_221057.252_UK\"}\n{\"orbname\": \"20251008_221312.957_UK\"}\n{\"orbname\": \"20251008_221606.134_UK\"}\n{\"orbname\": \"20251008_222158.388_UK\"}\n{\"orbname\": \"20251008_222515.236_UK\"}\n{\"orbname\": \"20251008_222648.711_UK\"}\n{\"orbname\": \"20251008_222719.738_UK\"}\n{\"orbname\": \"20251008_222845.638_UK\"}\n{\"orbname\": \"20251008_222926.138_UK\"}\n{\"orbname\": \"20251008_223014.004_UK\"}\n{\"orbname\": \"20251008_223239.727_UK\"}\n{\"orbname\": \"20251008_223310.336_UK\"}\n{\"orbname\": \"20251008_223627.952_UK\"}\n{\"orbname\": \"20251008_223656.958_UK\"}\n{\"orbname\": \"20251008_223914.969_UK\"}\n{\"orbname\": \"20251008_223956.645_UK\"}\n{\"orbname\": \"20251008_224255.075_UK\"}\n{\"orbname\": \"20251008_224421.619_UK\"}\n{\"orbname\": \"20251008_224522.617_UK\"}\n{\"orbname\": \"20251008_224806.274_UK\"}\n{\"orbname\": \"20251008_224814.515_UK\"}\n{\"orbname\": \"20251008_224858.003_UK\"}\n{\"orbname\": \"20251008_224954.491_UK\"}\n{\"orbname\": \"20251008_225108.231_UK\"}\n{\"orbname\": \"20251008_225542.231_UK\"}\n{\"orbname\": \"20251008_225620.147_UK\"}\n{\"orbname\": \"20251008_225635.400_UK\"}\n{\"orbname\": \"20251008_225740.845_UK\"}\n{\"orbname\": \"20251008_230622.931_UK\"}\n{\"orbname\": \"20251008_230708.508_UK\"}\n{\"orbname\": \"20251008_230748.915_UK\"}\n{\"orbname\": \"20251008_231040.812_UK\"}\n{\"orbname\": \"20251008_231236.627_UK\"}\n{\"orbname\": \"20251008_231924.053_UK\"}\n{\"orbname\": \"20251008_232010.833_UK\"}\n{\"orbname\": \"20251008_232024.494_UK\"}\n{\"orbname\": \"20251008_232424.021_UK\"}\n{\"orbname\": \"20251008_232428.526_UK\"}\n{\"orbname\": \"20251008_232546.693_UK\"}\n{\"orbname\": \"20251008_232603.446_UK\"}\n{\"orbname\": \"20251008_232857.047_UK\"}\n{\"orbname\": \"20251008_232938.549_UK\"}\n{\"orbname\": \"20251008_233059.894_UK\"}\n{\"orbname\": \"20251008_233417.510_UK\"}\n{\"orbname\": \"20251008_233849.806_UK\"}\n{\"orbname\": \"20251008_234446.968_UK\"}\n{\"orbname\": \"20251008_234540.266_UK\"}\n{\"orbname\": \"20251008_234750.677_UK\"}\n{\"orbname\": \"20251008_234942.825_UK\"}\n{\"orbname\": \"20251008_235115.269_UK\"}\n{\"orbname\": \"20251008_235203.045_UK\"}\n{\"orbname\": \"20251008_235539.114_UK\"}\n{\"orbname\": \"20251008_235735.169_UK\"}\n{\"orbname\": \"20251008_235928.502_UK\"}\n{\"orbname\": \"20251008_235956.670_UK\"}\n"} \ No newline at end of file diff --git a/archive/lambdas/matchDataApi/tests/matchesperiod.txt b/archive/lambdas/matchDataApi/tests/matchesperiod.txt new file mode 100644 index 00000000..661da443 --- /dev/null +++ b/archive/lambdas/matchDataApi/tests/matchesperiod.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "{\"orbname\": \"20251213_000000.224_UK\"}\n{\"orbname\": \"20251213_000001.422_UK\"}\n{\"orbname\": \"20251213_000001.423_UK\"}\n{\"orbname\": \"20251213_000002.482_UK\"}\n{\"orbname\": \"20251213_000018.384_UK\"}\n{\"orbname\": \"20251213_000026.864_UK\"}\n{\"orbname\": \"20251213_000039.416_UK\"}\n{\"orbname\": \"20251213_000056.469_UK\"}\n{\"orbname\": \"20251213_000057.468_UK\"}\n{\"orbname\": \"20251213_000103.822_UK\"}\n{\"orbname\": \"20251213_000106.383_UK\"}\n{\"orbname\": \"20251213_000125.380_UK\"}\n{\"orbname\": \"20251213_000132.477_UK\"}\n{\"orbname\": \"20251213_000134.883_UK\"}\n{\"orbname\": \"20251213_000135.145_UK\"}\n{\"orbname\": \"20251213_000140.928_UK\"}\n{\"orbname\": \"20251213_000148.948_UK\"}\n{\"orbname\": \"20251213_000154.119_UK\"}\n{\"orbname\": \"20251213_000154.189_UK\"}\n{\"orbname\": \"20251213_000154.350_UK\"}\n{\"orbname\": \"20251213_000155.437_UK\"}\n{\"orbname\": \"20251213_000159.398_UK\"}\n{\"orbname\": \"20251213_000206.655_UK\"}\n{\"orbname\": \"20251213_000208.037_UK\"}\n{\"orbname\": \"20251213_000230.982_UK\"}\n{\"orbname\": \"20251213_000234.818_UK\"}\n{\"orbname\": \"20251213_000304.633_UK\"}\n{\"orbname\": \"20251213_000310.314_UK\"}\n{\"orbname\": \"20251213_000311.324_UK\"}\n{\"orbname\": \"20251213_000312.216_UK\"}\n{\"orbname\": \"20251213_000314.691_UK\"}\n{\"orbname\": \"20251213_000316.760_UK\"}\n{\"orbname\": \"20251213_000322.961_UK\"}\n{\"orbname\": \"20251213_000342.541_UK\"}\n{\"orbname\": \"20251213_000344.653_UK\"}\n{\"orbname\": \"20251213_000350.745_UK\"}\n{\"orbname\": \"20251213_000356.993_UK\"}\n{\"orbname\": \"20251213_000358.221_UK\"}\n{\"orbname\": \"20251213_000358.301_UK\"}\n{\"orbname\": \"20251213_000401.263_UK\"}\n{\"orbname\": \"20251213_000401.373_UK\"}\n{\"orbname\": \"20251213_000402.183_UK\"}\n{\"orbname\": \"20251213_000402.569_UK\"}\n{\"orbname\": \"20251213_000407.440_UK\"}\n{\"orbname\": \"20251213_000408.134_UK\"}\n{\"orbname\": \"20251213_000408.164_UK\"}\n{\"orbname\": \"20251213_000419.408_UK\"}\n{\"orbname\": \"20251213_000423.874_UK\"}\n{\"orbname\": \"20251213_000427.218_UK\"}\n{\"orbname\": \"20251213_000427.219_UK\"}\n{\"orbname\": \"20251213_000430.614_UK\"}\n{\"orbname\": \"20251213_000433.152_UK\"}\n{\"orbname\": \"20251213_000445.348_UK\"}\n{\"orbname\": \"20251213_000445.349_UK\"}\n{\"orbname\": \"20251213_000453.516_UK\"}\n{\"orbname\": \"20251213_000500.587_UK\"}\n{\"orbname\": \"20251213_000504.221_UK\"}\n{\"orbname\": \"20251213_000525.604_UK\"}\n{\"orbname\": \"20251213_000525.684_UK\"}\n{\"orbname\": \"20251213_000526.689_UK\"}\n{\"orbname\": \"20251213_000540.090_UK\"}\n{\"orbname\": \"20251213_000542.753_UK\"}\n{\"orbname\": \"20251213_000544.379_UK\"}\n{\"orbname\": \"20251213_000545.444_UK\"}\n{\"orbname\": \"20251213_000545.611_UK\"}\n{\"orbname\": \"20251213_000550.860_UK\"}\n{\"orbname\": \"20251213_000550.864_UK\"}\n{\"orbname\": \"20251213_000554.349_UK\"}\n{\"orbname\": \"20251213_000609.872_UK\"}\n{\"orbname\": \"20251213_000610.658_UK\"}\n{\"orbname\": \"20251213_000612.765_UK\"}\n{\"orbname\": \"20251213_000614.167_UK\"}\n{\"orbname\": \"20251213_000614.168_UK\"}\n{\"orbname\": \"20251213_000622.594_UK\"}\n{\"orbname\": \"20251213_000623.264_UK\"}\n{\"orbname\": \"20251213_000623.320_UK\"}\n{\"orbname\": \"20251213_000637.886_UK\"}\n{\"orbname\": \"20251213_000637.887_UK\"}\n{\"orbname\": \"20251213_000710.515_UK\"}\n{\"orbname\": \"20251213_000710.544_UK\"}\n{\"orbname\": \"20251213_000725.288_UK\"}\n{\"orbname\": \"20251213_000725.290_UK\"}\n{\"orbname\": \"20251213_000731.060_UK\"}\n{\"orbname\": \"20251213_000731.383_UK\"}\n{\"orbname\": \"20251213_000731.386_UK\"}\n{\"orbname\": \"20251213_000759.145_UK\"}\n{\"orbname\": \"20251213_000800.073_UK\"}\n{\"orbname\": \"20251213_000809.554_UK\"}\n{\"orbname\": \"20251213_000816.484_UK\"}\n{\"orbname\": \"20251213_000816.488_UK\"}\n{\"orbname\": \"20251213_000825.518_UK\"}\n{\"orbname\": \"20251213_000844.017_UK\"}\n{\"orbname\": \"20251213_000847.323_UK\"}\n{\"orbname\": \"20251213_000906.912_UK\"}\n{\"orbname\": \"20251213_000914.999_UK\"}\n{\"orbname\": \"20251213_000918.353_UK\"}\n{\"orbname\": \"20251213_000927.369_UK\"}\n{\"orbname\": \"20251213_000927.377_UK\"}\n{\"orbname\": \"20251213_000935.923_UK\"}\n{\"orbname\": \"20251213_000939.550_UK\"}\n{\"orbname\": \"20251213_000943.026_UK\"}\n{\"orbname\": \"20251213_000954.742_UK\"}\n{\"orbname\": \"20251213_001002.766_UK\"}\n{\"orbname\": \"20251213_001003.652_UK\"}\n{\"orbname\": \"20251213_001006.216_UK\"}\n{\"orbname\": \"20251213_001009.117_UK\"}\n{\"orbname\": \"20251213_001048.565_UK\"}\n{\"orbname\": \"20251213_001051.418_UK\"}\n{\"orbname\": \"20251213_001051.420_UK\"}\n{\"orbname\": \"20251213_001100.058_UK\"}\n{\"orbname\": \"20251213_001109.182_UK\"}\n{\"orbname\": \"20251213_001109.235_UK\"}\n{\"orbname\": \"20251213_001109.238_UK\"}\n{\"orbname\": \"20251213_001109.939_UK\"}\n{\"orbname\": \"20251213_001110.233_UK\"}\n{\"orbname\": \"20251213_001135.977_UK\"}\n{\"orbname\": \"20251213_001137.073_UK\"}\n{\"orbname\": \"20251213_001139.883_UK\"}\n{\"orbname\": \"20251213_001149.281_UK\"}\n{\"orbname\": \"20251213_001153.345_UK\"}\n{\"orbname\": \"20251213_001153.346_UK\"}\n{\"orbname\": \"20251213_001154.287_UK\"}\n{\"orbname\": \"20251213_001154.288_UK\"}\n{\"orbname\": \"20251213_001155.466_UK\"}\n{\"orbname\": \"20251213_001155.467_UK\"}\n{\"orbname\": \"20251213_001209.778_UK\"}\n{\"orbname\": \"20251213_001216.885_UK\"}\n{\"orbname\": \"20251213_001220.330_UK\"}\n{\"orbname\": \"20251213_001221.241_UK\"}\n{\"orbname\": \"20251213_001221.244_UK\"}\n{\"orbname\": \"20251213_001244.662_UK\"}\n{\"orbname\": \"20251213_001244.663_UK\"}\n{\"orbname\": \"20251213_001246.432_UK\"}\n{\"orbname\": \"20251213_001246.433_UK\"}\n{\"orbname\": \"20251213_001257.027_UK\"}\n{\"orbname\": \"20251213_001257.028_UK\"}\n{\"orbname\": \"20251213_001308.359_UK\"}\n{\"orbname\": \"20251213_001308.840_UK\"}\n{\"orbname\": \"20251213_001308.877_UK\"}\n{\"orbname\": \"20251213_001308.878_UK\"}\n{\"orbname\": \"20251213_001312.723_UK\"}\n{\"orbname\": \"20251213_001315.811_UK\"}\n{\"orbname\": \"20251213_001318.346_UK\"}\n{\"orbname\": \"20251213_001338.769_UK\"}\n{\"orbname\": \"20251213_001413.887_UK\"}\n{\"orbname\": \"20251213_001417.403_UK\"}\n{\"orbname\": \"20251213_001417.408_UK\"}\n{\"orbname\": \"20251213_001432.342_UK\"}\n{\"orbname\": \"20251213_001436.068_UK\"}\n{\"orbname\": \"20251213_001442.524_UK\"}\n{\"orbname\": \"20251213_001442.525_UK\"}\n{\"orbname\": \"20251213_001443.246_UK\"}\n{\"orbname\": \"20251213_001446.231_UK\"}\n{\"orbname\": \"20251213_001504.441_UK\"}\n{\"orbname\": \"20251213_001514.430_UK\"}\n{\"orbname\": \"20251213_001518.673_UK\"}\n{\"orbname\": \"20251213_001521.445_UK\"}\n{\"orbname\": \"20251213_001522.288_UK\"}\n{\"orbname\": \"20251213_001525.135_UK\"}\n{\"orbname\": \"20251213_001534.153_UK\"}\n{\"orbname\": \"20251213_001553.020_UK\"}\n{\"orbname\": \"20251213_001617.222_UK\"}\n{\"orbname\": \"20251213_001618.420_UK\"}\n{\"orbname\": \"20251213_001620.138_UK\"}\n{\"orbname\": \"20251213_001620.745_UK\"}\n{\"orbname\": \"20251213_001624.862_UK\"}\n{\"orbname\": \"20251213_001628.339_UK\"}\n{\"orbname\": \"20251213_001635.895_UK\"}\n{\"orbname\": \"20251213_001658.030_UK\"}\n{\"orbname\": \"20251213_001658.032_UK\"}\n{\"orbname\": \"20251213_001713.521_UK\"}\n{\"orbname\": \"20251213_001722.567_UK\"}\n{\"orbname\": \"20251213_001722.838_UK\"}\n{\"orbname\": \"20251213_001722.839_UK\"}\n{\"orbname\": \"20251213_001725.523_UK\"}\n{\"orbname\": \"20251213_001751.389_UK\"}\n{\"orbname\": \"20251213_001801.225_UK\"}\n{\"orbname\": \"20251213_001810.266_UK\"}\n{\"orbname\": \"20251213_001813.533_UK\"}\n{\"orbname\": \"20251213_001830.903_UK\"}\n{\"orbname\": \"20251213_001832.819_UK\"}\n{\"orbname\": \"20251213_001842.353_UK\"}\n{\"orbname\": \"20251213_001845.198_UK\"}\n{\"orbname\": \"20251213_001849.307_UK\"}\n{\"orbname\": \"20251213_001852.339_UK\"}\n{\"orbname\": \"20251213_001859.268_UK\"}\n{\"orbname\": \"20251213_001900.572_UK\"}\n{\"orbname\": \"20251213_001905.013_UK\"}\n{\"orbname\": \"20251213_001909.119_UK\"}\n{\"orbname\": \"20251213_001916.851_UK\"}\n{\"orbname\": \"20251213_001920.314_UK\"}\n{\"orbname\": \"20251213_001924.064_UK\"}\n{\"orbname\": \"20251213_001952.608_UK\"}\n{\"orbname\": \"20251213_002006.772_UK\"}\n{\"orbname\": \"20251213_002006.774_UK\"}\n{\"orbname\": \"20251213_002038.867_UK\"}\n{\"orbname\": \"20251213_002039.303_UK\"}\n{\"orbname\": \"20251213_002044.306_UK\"}\n{\"orbname\": \"20251213_002044.439_UK\"}\n{\"orbname\": \"20251213_002058.274_UK\"}\n{\"orbname\": \"20251213_002058.321_UK\"}\n{\"orbname\": \"20251213_002058.322_UK\"}\n{\"orbname\": \"20251213_002107.250_UK\"}\n{\"orbname\": \"20251213_002107.251_\"}\n{\"orbname\": \"20251213_002114.603_UK\"}\n{\"orbname\": \"20251213_002127.249_UK\"}\n{\"orbname\": \"20251213_002134.667_UK\"}\n{\"orbname\": \"20251213_002138.442_UK\"}\n{\"orbname\": \"20251213_002153.589_UK\"}\n{\"orbname\": \"20251213_002217.264_UK\"}\n{\"orbname\": \"20251213_002227.040_UK\"}\n{\"orbname\": \"20251213_002243.531_UK\"}\n{\"orbname\": \"20251213_002245.420_UK\"}\n{\"orbname\": \"20251213_002249.575_UK\"}\n{\"orbname\": \"20251213_002249.576_UK\"}\n{\"orbname\": \"20251213_002304.931_UK\"}\n{\"orbname\": \"20251213_002306.785_UK\"}\n{\"orbname\": \"20251213_002330.353_UK\"}\n{\"orbname\": \"20251213_002331.277_UK\"}\n{\"orbname\": \"20251213_002331.340_UK\"}\n{\"orbname\": \"20251213_002344.283_UK\"}\n{\"orbname\": \"20251213_002359.556_UK\"}\n{\"orbname\": \"20251213_002404.009_UK\"}\n{\"orbname\": \"20251213_002404.054_UK\"}\n{\"orbname\": \"20251213_002404.056_UK\"}\n{\"orbname\": \"20251213_002408.392_UK\"}\n{\"orbname\": \"20251213_002409.762_UK\"}\n{\"orbname\": \"20251213_002410.498_UK\"}\n{\"orbname\": \"20251213_002413.515_UK\"}\n{\"orbname\": \"20251213_002428.856_UK\"}\n{\"orbname\": \"20251213_002431.108_UK\"}\n{\"orbname\": \"20251213_002432.740_UK\"}\n{\"orbname\": \"20251213_002442.106_UK\"}\n{\"orbname\": \"20251213_002443.060_UK\"}\n{\"orbname\": \"20251213_002446.749_UK\"}\n{\"orbname\": \"20251213_002446.750_UK\"}\n{\"orbname\": \"20251213_002446.906_UK\"}\n{\"orbname\": \"20251213_002450.290_UK\"}\n{\"orbname\": \"20251213_002451.541_UK\"}\n{\"orbname\": \"20251213_002456.589_UK\"}\n{\"orbname\": \"20251213_002456.926_UK\"}\n{\"orbname\": \"20251213_002506.032_UK\"}\n{\"orbname\": \"20251213_002507.300_UK\"}\n{\"orbname\": \"20251213_002508.317_UK\"}\n{\"orbname\": \"20251213_002522.932_UK\"}\n{\"orbname\": \"20251213_002524.849_UK\"}\n{\"orbname\": \"20251213_002539.813_UK\"}\n{\"orbname\": \"20251213_002545.189_UK\"}\n{\"orbname\": \"20251213_002545.191_UK\"}\n{\"orbname\": \"20251213_002557.789_UK\"}\n{\"orbname\": \"20251213_002558.824_UK\"}\n{\"orbname\": \"20251213_002613.820_UK\"}\n{\"orbname\": \"20251213_002615.663_UK\"}\n{\"orbname\": \"20251213_002619.923_UK\"}\n{\"orbname\": \"20251213_002626.119_UK\"}\n{\"orbname\": \"20251213_002639.498_UK\"}\n{\"orbname\": \"20251213_002640.865_UK\"}\n{\"orbname\": \"20251213_002651.342_UK\"}\n{\"orbname\": \"20251213_002656.671_UK\"}\n{\"orbname\": \"20251213_002705.260_UK\"}\n{\"orbname\": \"20251213_002705.263_UK\"}\n{\"orbname\": \"20251213_002713.795_\"}\n{\"orbname\": \"20251213_002728.222_UK\"}\n{\"orbname\": \"20251213_002728.464_UK\"}\n{\"orbname\": \"20251213_002735.695_UK\"}\n{\"orbname\": \"20251213_002736.697_UK\"}\n{\"orbname\": \"20251213_002739.898_UK\"}\n{\"orbname\": \"20251213_002744.815_UK\"}\n{\"orbname\": \"20251213_002747.732_UK\"}\n{\"orbname\": \"20251213_002758.288_UK\"}\n{\"orbname\": \"20251213_002759.081_UK\"}\n{\"orbname\": \"20251213_002800.242_UK\"}\n{\"orbname\": \"20251213_002801.343_UK\"}\n{\"orbname\": \"20251213_002805.061_UK\"}\n{\"orbname\": \"20251213_002807.674_UK\"}\n{\"orbname\": \"20251213_002807.675_UK\"}\n{\"orbname\": \"20251213_002811.858_UK\"}\n{\"orbname\": \"20251213_002814.824_UK\"}\n{\"orbname\": \"20251213_002822.593_UK\"}\n{\"orbname\": \"20251213_002833.994_UK\"}\n{\"orbname\": \"20251213_002834.295_UK\"}\n{\"orbname\": \"20251213_002834.591_UK\"}\n{\"orbname\": \"20251213_002834.592_UK\"}\n{\"orbname\": \"20251213_002838.978_UK\"}\n{\"orbname\": \"20251213_002847.306_UK\"}\n{\"orbname\": \"20251213_002847.310_UK\"}\n{\"orbname\": \"20251213_002855.723_UK\"}\n{\"orbname\": \"20251213_002900.992_UK\"}\n{\"orbname\": \"20251213_002901.088_UK\"}\n{\"orbname\": \"20251213_002908.424_UK\"}\n{\"orbname\": \"20251213_002908.622_UK\"}\n{\"orbname\": \"20251213_002922.267_UK\"}\n{\"orbname\": \"20251213_002924.113_UK\"}\n{\"orbname\": \"20251213_002950.008_UK\"}\n{\"orbname\": \"20251213_002950.038_UK\"}\n{\"orbname\": \"20251213_003003.445_UK\"}\n{\"orbname\": \"20251213_003013.197_UK\"}\n{\"orbname\": \"20251213_003013.226_UK\"}\n{\"orbname\": \"20251213_003016.741_UK\"}\n{\"orbname\": \"20251213_003020.626_UK\"}\n{\"orbname\": \"20251213_003020.642_UK\"}\n{\"orbname\": \"20251213_003023.662_UK\"}\n{\"orbname\": \"20251213_003032.074_UK\"}\n{\"orbname\": \"20251213_003036.413_UK\"}\n{\"orbname\": \"20251213_003038.629_UK\"}\n{\"orbname\": \"20251213_003050.101_UK\"}\n{\"orbname\": \"20251213_003054.471_UK\"}\n{\"orbname\": \"20251213_003054.472_UK\"}\n{\"orbname\": \"20251213_003118.403_UK\"}\n{\"orbname\": \"20251213_003124.219_UK\"}\n{\"orbname\": \"20251213_003126.808_UK\"}\n{\"orbname\": \"20251213_003126.810_UK\"}\n{\"orbname\": \"20251213_003135.547_UK\"}\n{\"orbname\": \"20251213_003135.623_UK\"}\n{\"orbname\": \"20251213_003137.591_UK\"}\n{\"orbname\": \"20251213_003137.645_UK\"}\n{\"orbname\": \"20251213_003138.612_UK\"}\n{\"orbname\": \"20251213_003149.303_UK\"}\n{\"orbname\": \"20251213_003152.833_UK\"}\n{\"orbname\": \"20251213_003154.713_UK\"}\n{\"orbname\": \"20251213_003225.702_UK\"}\n{\"orbname\": \"20251213_003228.997_UK\"}\n{\"orbname\": \"20251213_003242.493_UK\"}\n{\"orbname\": \"20251213_003242.610_UK\"}\n{\"orbname\": \"20251213_003251.096_UK\"}\n{\"orbname\": \"20251213_003254.724_UK\"}\n{\"orbname\": \"20251213_003255.189_UK\"}\n{\"orbname\": \"20251213_003313.657_UK\"}\n{\"orbname\": \"20251213_003314.897_UK\"}\n{\"orbname\": \"20251213_003324.247_UK\"}\n{\"orbname\": \"20251213_003324.365_UK\"}\n{\"orbname\": \"20251213_003354.084_UK\"}\n{\"orbname\": \"20251213_003405.821_UK\"}\n{\"orbname\": \"20251213_003415.551_UK\"}\n{\"orbname\": \"20251213_003422.874_UK\"}\n{\"orbname\": \"20251213_003426.201_UK\"}\n{\"orbname\": \"20251213_003427.814_UK\"}\n{\"orbname\": \"20251213_003430.143_UK\"}\n{\"orbname\": \"20251213_003435.098_UK\"}\n{\"orbname\": \"20251213_003450.681_UK\"}\n{\"orbname\": \"20251213_003509.987_UK\"}\n{\"orbname\": \"20251213_003509.988_UK\"}\n{\"orbname\": \"20251213_003516.913_UK\"}\n{\"orbname\": \"20251213_003519.479_UK\"}\n{\"orbname\": \"20251213_003539.541_UK\"}\n{\"orbname\": \"20251213_003539.542_UK\"}\n{\"orbname\": \"20251213_003540.042_UK\"}\n{\"orbname\": \"20251213_003550.046_UK\"}\n{\"orbname\": \"20251213_003550.910_UK\"}\n{\"orbname\": \"20251213_003556.338_UK\"}\n{\"orbname\": \"20251213_003556.768_UK\"}\n{\"orbname\": \"20251213_003557.473_UK\"}\n{\"orbname\": \"20251213_003600.349_UK\"}\n{\"orbname\": \"20251213_003600.971_UK\"}\n{\"orbname\": \"20251213_003612.707_UK\"}\n{\"orbname\": \"20251213_003619.445_UK\"}\n{\"orbname\": \"20251213_003622.306_UK\"}\n{\"orbname\": \"20251213_003625.215_UK\"}\n{\"orbname\": \"20251213_003625.715_UK\"}\n{\"orbname\": \"20251213_003625.716_UK\"}\n{\"orbname\": \"20251213_003646.356_UK\"}\n{\"orbname\": \"20251213_003646.899_UK\"}\n{\"orbname\": \"20251213_003650.850_UK\"}\n{\"orbname\": \"20251213_003650.978_UK\"}\n{\"orbname\": \"20251213_003714.819_UK\"}\n{\"orbname\": \"20251213_003717.133_UK\"}\n{\"orbname\": \"20251213_003737.909_UK\"}\n{\"orbname\": \"20251213_003754.325_UK\"}\n{\"orbname\": \"20251213_003755.641_UK\"}\n{\"orbname\": \"20251213_003806.542_UK\"}\n{\"orbname\": \"20251213_003808.373_UK\"}\n{\"orbname\": \"20251213_003809.154_UK\"}\n{\"orbname\": \"20251213_003811.910_UK\"}\n{\"orbname\": \"20251213_003812.589_UK\"}\n{\"orbname\": \"20251213_003829.655_UK\"}\n{\"orbname\": \"20251213_003830.250_UK\"}\n{\"orbname\": \"20251213_003843.314_UK\"}\n{\"orbname\": \"20251213_003844.427_UK\"}\n{\"orbname\": \"20251213_003844.892_UK\"}\n{\"orbname\": \"20251213_003845.275_UK\"}\n{\"orbname\": \"20251213_003845.276_UK\"}\n{\"orbname\": \"20251213_003846.193_UK\"}\n{\"orbname\": \"20251213_003916.125_UK\"}\n{\"orbname\": \"20251213_003923.673_UK\"}\n{\"orbname\": \"20251213_003924.339_UK\"}\n{\"orbname\": \"20251213_003924.583_UK\"}\n{\"orbname\": \"20251213_003925.168_UK\"}\n{\"orbname\": \"20251213_003925.169_UK\"}\n{\"orbname\": \"20251213_003931.460_UK\"}\n{\"orbname\": \"20251213_003931.463_UK\"}\n{\"orbname\": \"20251213_003933.435_UK\"}\n{\"orbname\": \"20251213_003957.507_UK\"}\n{\"orbname\": \"20251213_003959.574_UK\"}\n{\"orbname\": \"20251213_004003.132_UK\"}\n{\"orbname\": \"20251213_004017.429_UK\"}\n{\"orbname\": \"20251213_004026.759_UK\"}\n{\"orbname\": \"20251213_004029.194_UK\"}\n{\"orbname\": \"20251213_004029.195_UK\"}\n{\"orbname\": \"20251213_004029.303_UK\"}\n{\"orbname\": \"20251213_004037.399_UK\"}\n{\"orbname\": \"20251213_004039.609_UK\"}\n{\"orbname\": \"20251213_004040.722_UK\"}\n{\"orbname\": \"20251213_004044.575_UK\"}\n{\"orbname\": \"20251213_004044.578_UK\"}\n{\"orbname\": \"20251213_004047.521_UK\"}\n{\"orbname\": \"20251213_004047.522_UK\"}\n{\"orbname\": \"20251213_004048.867_UK\"}\n{\"orbname\": \"20251213_004048.868_UK\"}\n{\"orbname\": \"20251213_004054.581_UK\"}\n{\"orbname\": \"20251213_004054.582_UK\"}\n{\"orbname\": \"20251213_004100.189_UK\"}\n{\"orbname\": \"20251213_004105.008_UK\"}\n{\"orbname\": \"20251213_004116.345_UK\"}\n{\"orbname\": \"20251213_004120.931_UK\"}\n{\"orbname\": \"20251213_004129.624_UK\"}\n{\"orbname\": \"20251213_004147.956_UK\"}\n{\"orbname\": \"20251213_004151.002_UK\"}\n{\"orbname\": \"20251213_004159.780_UK\"}\n{\"orbname\": \"20251213_004200.862_UK\"}\n{\"orbname\": \"20251213_004216.775_UK\"}\n{\"orbname\": \"20251213_004219.054_UK\"}\n{\"orbname\": \"20251213_004219.277_UK\"}\n{\"orbname\": \"20251213_004236.972_UK\"}\n{\"orbname\": \"20251213_004237.939_UK\"}\n{\"orbname\": \"20251213_004240.585_UK\"}\n{\"orbname\": \"20251213_004247.077_UK\"}\n{\"orbname\": \"20251213_004247.289_UK\"}\n{\"orbname\": \"20251213_004249.795_UK\"}\n{\"orbname\": \"20251213_004253.520_UK\"}\n{\"orbname\": \"20251213_004300.658_UK\"}\n{\"orbname\": \"20251213_004301.259_UK\"}\n{\"orbname\": \"20251213_004309.633_UK\"}\n{\"orbname\": \"20251213_004309.634_UK\"}\n{\"orbname\": \"20251213_004310.566_UK\"}\n{\"orbname\": \"20251213_004313.669_UK\"}\n{\"orbname\": \"20251213_004332.064_UK\"}\n{\"orbname\": \"20251213_004333.128_UK\"}\n{\"orbname\": \"20251213_004333.131_UK\"}\n{\"orbname\": \"20251213_004333.415_UK\"}\n{\"orbname\": \"20251213_004338.428_UK\"}\n{\"orbname\": \"20251213_004357.777_UK\"}\n{\"orbname\": \"20251213_004358.878_UK\"}\n{\"orbname\": \"20251213_004400.031_UK\"}\n{\"orbname\": \"20251213_004405.922_UK\"}\n{\"orbname\": \"20251213_004412.095_UK\"}\n{\"orbname\": \"20251213_004413.929_UK\"}\n{\"orbname\": \"20251213_004414.779_UK\"}\n{\"orbname\": \"20251213_004422.926_UK\"}\n{\"orbname\": \"20251213_004425.103_UK\"}\n{\"orbname\": \"20251213_004433.758_UK\"}\n{\"orbname\": \"20251213_004446.236_UK\"}\n{\"orbname\": \"20251213_004458.230_UK\"}\n{\"orbname\": \"20251213_004508.017_UK\"}\n{\"orbname\": \"20251213_004508.082_UK\"}\n{\"orbname\": \"20251213_004512.677_UK\"}\n{\"orbname\": \"20251213_004517.828_UK\"}\n{\"orbname\": \"20251213_004517.829_UK\"}\n{\"orbname\": \"20251213_004525.096_UK\"}\n{\"orbname\": \"20251213_004531.341_UK\"}\n{\"orbname\": \"20251213_004531.342_UK\"}\n{\"orbname\": \"20251213_004556.919_UK\"}\n{\"orbname\": \"20251213_004608.612_UK\"}\n{\"orbname\": \"20251213_004647.157_UK\"}\n{\"orbname\": \"20251213_004653.024_UK\"}\n{\"orbname\": \"20251213_004653.334_UK\"}\n{\"orbname\": \"20251213_004653.339_UK\"}\n{\"orbname\": \"20251213_004654.182_UK\"}\n{\"orbname\": \"20251213_004708.211_UK\"}\n{\"orbname\": \"20251213_004729.567_UK\"}\n{\"orbname\": \"20251213_004729.655_UK\"}\n{\"orbname\": \"20251213_004729.656_UK\"}\n{\"orbname\": \"20251213_004732.973_UK\"}\n{\"orbname\": \"20251213_004739.631_UK\"}\n{\"orbname\": \"20251213_004739.814_UK\"}\n{\"orbname\": \"20251213_004740.597_UK\"}\n{\"orbname\": \"20251213_004746.509_UK\"}\n{\"orbname\": \"20251213_004746.671_UK\"}\n{\"orbname\": \"20251213_004750.861_UK\"}\n{\"orbname\": \"20251213_004751.252_UK\"}\n{\"orbname\": \"20251213_004803.834_UK\"}\n{\"orbname\": \"20251213_004803.835_UK\"}\n{\"orbname\": \"20251213_004809.842_UK\"}\n{\"orbname\": \"20251213_004813.238_UK\"}\n{\"orbname\": \"20251213_004831.512_UK\"}\n{\"orbname\": \"20251213_004834.947_UK\"}\n{\"orbname\": \"20251213_004840.733_UK\"}\n{\"orbname\": \"20251213_004840.887_UK\"}\n{\"orbname\": \"20251213_004900.931_UK\"}\n{\"orbname\": \"20251213_004901.306_UK\"}\n{\"orbname\": \"20251213_004905.003_UK\"}\n{\"orbname\": \"20251213_004906.513_UK\"}\n{\"orbname\": \"20251213_004908.290_UK\"}\n{\"orbname\": \"20251213_004910.445_UK\"}\n{\"orbname\": \"20251213_004910.446_UK\"}\n{\"orbname\": \"20251213_004913.823_UK\"}\n{\"orbname\": \"20251213_004915.822_UK\"}\n{\"orbname\": \"20251213_004919.757_UK\"}\n{\"orbname\": \"20251213_004919.758_UK\"}\n{\"orbname\": \"20251213_004921.263_UK\"}\n{\"orbname\": \"20251213_004934.978_UK\"}\n{\"orbname\": \"20251213_004941.728_UK\"}\n{\"orbname\": \"20251213_005001.521_UK\"}\n{\"orbname\": \"20251213_005002.147_UK\"}\n{\"orbname\": \"20251213_005003.315_UK\"}\n{\"orbname\": \"20251213_005003.317_UK\"}\n{\"orbname\": \"20251213_005008.189_UK\"}\n{\"orbname\": \"20251213_005018.571_UK\"}\n{\"orbname\": \"20251213_005022.437_UK\"}\n{\"orbname\": \"20251213_005029.403_UK\"}\n{\"orbname\": \"20251213_005039.934_UK\"}\n{\"orbname\": \"20251213_005040.327_UK\"}\n{\"orbname\": \"20251213_005047.603_UK\"}\n{\"orbname\": \"20251213_005049.708_UK\"}\n{\"orbname\": \"20251213_005057.298_UK\"}\n{\"orbname\": \"20251213_005057.300_UK\"}\n{\"orbname\": \"20251213_005058.843_UK\"}\n{\"orbname\": \"20251213_005111.564_UK\"}\n{\"orbname\": \"20251213_005111.726_UK\"}\n{\"orbname\": \"20251213_005125.675_UK\"}\n{\"orbname\": \"20251213_005129.197_UK\"}\n{\"orbname\": \"20251213_005140.764_UK\"}\n{\"orbname\": \"20251213_005144.505_UK\"}\n{\"orbname\": \"20251213_005158.632_UK\"}\n{\"orbname\": \"20251213_005246.961_UK\"}\n{\"orbname\": \"20251213_005250.218_UK\"}\n{\"orbname\": \"20251213_005259.038_UK\"}\n{\"orbname\": \"20251213_005300.909_UK\"}\n{\"orbname\": \"20251213_005303.603_UK\"}\n{\"orbname\": \"20251213_005315.336_UK\"}\n{\"orbname\": \"20251213_005336.667_UK\"}\n{\"orbname\": \"20251213_005342.595_UK\"}\n{\"orbname\": \"20251213_005353.136_UK\"}\n{\"orbname\": \"20251213_005359.357_UK\"}\n{\"orbname\": \"20251213_005406.583_UK\"}\n{\"orbname\": \"20251213_005435.680_UK\"}\n{\"orbname\": \"20251213_005441.554_UK\"}\n{\"orbname\": \"20251213_005448.002_UK\"}\n{\"orbname\": \"20251213_005504.984_UK\"}\n{\"orbname\": \"20251213_005511.519_UK\"}\n{\"orbname\": \"20251213_005511.521_UK\"}\n{\"orbname\": \"20251213_005526.034_UK\"}\n{\"orbname\": \"20251213_005528.947_UK\"}\n{\"orbname\": \"20251213_005535.017_UK\"}\n{\"orbname\": \"20251213_005555.502_UK\"}\n{\"orbname\": \"20251213_005555.503_UK\"}\n{\"orbname\": \"20251213_005555.661_UK\"}\n{\"orbname\": \"20251213_005617.393_UK\"}\n{\"orbname\": \"20251213_005617.825_UK\"}\n{\"orbname\": \"20251213_005626.837_UK\"}\n{\"orbname\": \"20251213_005626.904_UK\"}\n{\"orbname\": \"20251213_005649.688_UK\"}\n{\"orbname\": \"20251213_005650.184_UK\"}\n{\"orbname\": \"20251213_005655.228_UK\"}\n{\"orbname\": \"20251213_005656.602_UK\"}\n{\"orbname\": \"20251213_005704.084_UK\"}\n{\"orbname\": \"20251213_005718.048_UK\"}\n{\"orbname\": \"20251213_005732.220_UK\"}\n{\"orbname\": \"20251213_005733.537_UK\"}\n{\"orbname\": \"20251213_005737.425_UK\"}\n{\"orbname\": \"20251213_005800.020_UK\"}\n{\"orbname\": \"20251213_005809.836_UK\"}\n{\"orbname\": \"20251213_005813.117_UK\"}\n{\"orbname\": \"20251213_005831.493_UK\"}\n{\"orbname\": \"20251213_005831.494_UK\"}\n{\"orbname\": \"20251213_005833.126_UK\"}\n{\"orbname\": \"20251213_005843.927_UK\"}\n{\"orbname\": \"20251213_005843.930_UK\"}\n{\"orbname\": \"20251213_005849.678_UK\"}\n{\"orbname\": \"20251213_005849.679_UK\"}\n{\"orbname\": \"20251213_005905.891_UK\"}\n{\"orbname\": \"20251213_005931.182_UK\"}\n{\"orbname\": \"20251213_005931.225_UK\"}\n{\"orbname\": \"20251213_005931.226_UK\"}\n{\"orbname\": \"20251213_005932.672_UK\"}\n{\"orbname\": \"20251213_005956.426_UK\"}\n{\"orbname\": \"20251213_010008.862_UK\"}\n{\"orbname\": \"20251213_010012.393_UK\"}\n{\"orbname\": \"20251213_010015.017_UK\"}\n{\"orbname\": \"20251213_010015.098_UK\"}\n{\"orbname\": \"20251213_010020.979_UK\"}\n{\"orbname\": \"20251213_010026.352_UK\"}\n{\"orbname\": \"20251213_010026.438_UK\"}\n{\"orbname\": \"20251213_010026.630_UK\"}\n{\"orbname\": \"20251213_010026.631_UK\"}\n{\"orbname\": \"20251213_010027.059_UK\"}\n{\"orbname\": \"20251213_010030.424_UK\"}\n{\"orbname\": \"20251213_010030.425_UK\"}\n{\"orbname\": \"20251213_010036.349_UK\"}\n{\"orbname\": \"20251213_010056.264_UK\"}\n{\"orbname\": \"20251213_010101.593_UK\"}\n{\"orbname\": \"20251213_010101.619_UK\"}\n{\"orbname\": \"20251213_010104.200_UK\"}\n{\"orbname\": \"20251213_010113.394_UK\"}\n{\"orbname\": \"20251213_010122.020_UK\"}\n{\"orbname\": \"20251213_010122.695_UK\"}\n{\"orbname\": \"20251213_010127.424_UK\"}\n{\"orbname\": \"20251213_010136.565_UK\"}\n{\"orbname\": \"20251213_010138.283_UK\"}\n{\"orbname\": \"20251213_010141.809_UK\"}\n{\"orbname\": \"20251213_010142.505_UK\"}\n{\"orbname\": \"20251213_010214.442_UK\"}\n{\"orbname\": \"20251213_010219.635_UK\"}\n{\"orbname\": \"20251213_010232.001_UK\"}\n{\"orbname\": \"20251213_010249.983_UK\"}\n{\"orbname\": \"20251213_010253.057_UK\"}\n{\"orbname\": \"20251213_010254.575_UK\"}\n{\"orbname\": \"20251213_010306.032_UK\"}\n{\"orbname\": \"20251213_010306.354_UK\"}\n{\"orbname\": \"20251213_010311.298_UK\"}\n{\"orbname\": \"20251213_010311.559_UK\"}\n{\"orbname\": \"20251213_010315.034_UK\"}\n{\"orbname\": \"20251213_010315.143_UK\"}\n{\"orbname\": \"20251213_010331.555_UK\"}\n{\"orbname\": \"20251213_010331.556_UK\"}\n{\"orbname\": \"20251213_010331.582_UK\"}\n{\"orbname\": \"20251213_010334.939_UK\"}\n{\"orbname\": \"20251213_010337.920_UK\"}\n{\"orbname\": \"20251213_010343.500_UK\"}\n{\"orbname\": \"20251213_010355.265_UK\"}\n{\"orbname\": \"20251213_010400.688_UK\"}\n{\"orbname\": \"20251213_010407.572_UK\"}\n{\"orbname\": \"20251213_010407.602_UK\"}\n{\"orbname\": \"20251213_010409.065_UK\"}\n{\"orbname\": \"20251213_010415.107_UK\"}\n{\"orbname\": \"20251213_010421.506_UK\"}\n{\"orbname\": \"20251213_010438.261_UK\"}\n{\"orbname\": \"20251213_010446.169_UK\"}\n{\"orbname\": \"20251213_010447.491_UK\"}\n{\"orbname\": \"20251213_010449.271_UK\"}\n{\"orbname\": \"20251213_010451.805_UK\"}\n{\"orbname\": \"20251213_010451.808_UK\"}\n{\"orbname\": \"20251213_010453.888_UK\"}\n{\"orbname\": \"20251213_010453.995_UK\"}\n{\"orbname\": \"20251213_010505.973_UK\"}\n{\"orbname\": \"20251213_010505.977_UK\"}\n{\"orbname\": \"20251213_010525.585_UK\"}\n{\"orbname\": \"20251213_010528.959_UK\"}\n{\"orbname\": \"20251213_010529.773_UK\"}\n{\"orbname\": \"20251213_010545.997_UK\"}\n{\"orbname\": \"20251213_010547.817_UK\"}\n{\"orbname\": \"20251213_010547.819_UK\"}\n{\"orbname\": \"20251213_010548.480_UK\"}\n{\"orbname\": \"20251213_010554.320_UK\"}\n{\"orbname\": \"20251213_010610.097_UK\"}\n{\"orbname\": \"20251213_010616.345_UK\"}\n{\"orbname\": \"20251213_010616.347_UK\"}\n{\"orbname\": \"20251213_010643.100_UK\"}\n{\"orbname\": \"20251213_010648.248_UK\"}\n{\"orbname\": \"20251213_010648.305_UK\"}\n{\"orbname\": \"20251213_010648.753_UK\"}\n{\"orbname\": \"20251213_010650.195_UK\"}\n{\"orbname\": \"20251213_010650.314_UK\"}\n{\"orbname\": \"20251213_010651.610_UK\"}\n{\"orbname\": \"20251213_010651.611_UK\"}\n{\"orbname\": \"20251213_010706.725_UK\"}\n{\"orbname\": \"20251213_010706.727_UK\"}\n{\"orbname\": \"20251213_010721.147_UK\"}\n{\"orbname\": \"20251213_010723.821_UK\"}\n{\"orbname\": \"20251213_010728.821_UK\"}\n{\"orbname\": \"20251213_010732.369_UK\"}\n{\"orbname\": \"20251213_010735.007_UK\"}\n{\"orbname\": \"20251213_010735.248_UK\"}\n{\"orbname\": \"20251213_010741.827_UK\"}\n{\"orbname\": \"20251213_010743.369_UK\"}\n{\"orbname\": \"20251213_010743.370_UK\"}\n{\"orbname\": \"20251213_010749.324_UK\"}\n{\"orbname\": \"20251213_010749.328_UK\"}\n{\"orbname\": \"20251213_010758.463_UK\"}\n{\"orbname\": \"20251213_010758.946_UK\"}\n{\"orbname\": \"20251213_010801.054_UK\"}\n{\"orbname\": \"20251213_010808.547_UK\"}\n{\"orbname\": \"20251213_010812.438_UK\"}\n{\"orbname\": \"20251213_010812.439_UK\"}\n{\"orbname\": \"20251213_010815.527_UK\"}\n{\"orbname\": \"20251213_010821.514_UK\"}\n{\"orbname\": \"20251213_010840.337_UK\"}\n{\"orbname\": \"20251213_010840.353_UK\"}\n{\"orbname\": \"20251213_010842.234_UK\"}\n{\"orbname\": \"20251213_010845.038_UK\"}\n{\"orbname\": \"20251213_010847.572_UK\"}\n{\"orbname\": \"20251213_010847.575_UK\"}\n{\"orbname\": \"20251213_010854.800_UK\"}\n{\"orbname\": \"20251213_010855.578_UK\"}\n{\"orbname\": \"20251213_010857.673_UK\"}\n{\"orbname\": \"20251213_010904.688_UK\"}\n{\"orbname\": \"20251213_010905.663_UK\"}\n{\"orbname\": \"20251213_010905.784_UK\"}\n{\"orbname\": \"20251213_010908.646_UK\"}\n{\"orbname\": \"20251213_010917.738_UK\"}\n{\"orbname\": \"20251213_010921.115_UK\"}\n{\"orbname\": \"20251213_010923.701_UK\"}\n{\"orbname\": \"20251213_010936.821_UK\"}\n{\"orbname\": \"20251213_010936.930_UK\"}\n{\"orbname\": \"20251213_010939.544_UK\"}\n{\"orbname\": \"20251213_010940.593_UK\"}\n{\"orbname\": \"20251213_010942.953_UK\"}\n{\"orbname\": \"20251213_010942.976_UK\"}\n{\"orbname\": \"20251213_010950.375_UK\"}\n{\"orbname\": \"20251213_010950.527_UK\"}\n{\"orbname\": \"20251213_010959.330_UK\"}\n{\"orbname\": \"20251213_010959.630_UK\"}\n{\"orbname\": \"20251213_011000.806_UK\"}\n{\"orbname\": \"20251213_011007.586_UK\"}\n{\"orbname\": \"20251213_011009.119_UK\"}\n{\"orbname\": \"20251213_011021.965_UK\"}\n{\"orbname\": \"20251213_011024.041_UK\"}\n{\"orbname\": \"20251213_011028.521_UK\"}\n{\"orbname\": \"20251213_011029.039_UK\"}\n{\"orbname\": \"20251213_011034.508_UK\"}\n{\"orbname\": \"20251213_011038.507_UK\"}\n{\"orbname\": \"20251213_011045.330_UK\"}\n{\"orbname\": \"20251213_011049.792_UK\"}\n{\"orbname\": \"20251213_011049.793_UK\"}\n{\"orbname\": \"20251213_011056.589_UK\"}\n{\"orbname\": \"20251213_011058.726_UK\"}\n{\"orbname\": \"20251213_011114.869_UK\"}\n{\"orbname\": \"20251213_011132.779_UK\"}\n{\"orbname\": \"20251213_011132.844_UK\"}\n{\"orbname\": \"20251213_011133.093_UK\"}\n{\"orbname\": \"20251213_011139.744_UK\"}\n{\"orbname\": \"20251213_011143.930_UK\"}\n{\"orbname\": \"20251213_011144.966_UK\"}\n{\"orbname\": \"20251213_011144.967_UK\"}\n{\"orbname\": \"20251213_011144.984_UK\"}\n{\"orbname\": \"20251213_011152.044_UK\"}\n{\"orbname\": \"20251213_011152.721_UK\"}\n{\"orbname\": \"20251213_011155.363_UK\"}\n{\"orbname\": \"20251213_011210.904_UK\"}\n{\"orbname\": \"20251213_011210.906_UK\"}\n{\"orbname\": \"20251213_011211.104_UK\"}\n{\"orbname\": \"20251213_011226.119_UK\"}\n{\"orbname\": \"20251213_011253.281_UK\"}\n{\"orbname\": \"20251213_011303.175_UK\"}\n{\"orbname\": \"20251213_011303.222_UK\"}\n{\"orbname\": \"20251213_011310.374_UK\"}\n{\"orbname\": \"20251213_011313.953_UK\"}\n{\"orbname\": \"20251213_011318.688_UK\"}\n{\"orbname\": \"20251213_011318.918_UK\"}\n{\"orbname\": \"20251213_011324.985_UK\"}\n{\"orbname\": \"20251213_011330.860_UK\"}\n{\"orbname\": \"20251213_011344.639_UK\"}\n{\"orbname\": \"20251213_011358.831_UK\"}\n{\"orbname\": \"20251213_011400.338_UK\"}\n{\"orbname\": \"20251213_011427.422_UK\"}\n{\"orbname\": \"20251213_011429.243_UK\"}\n{\"orbname\": \"20251213_011456.942_UK\"}\n{\"orbname\": \"20251213_011501.914_UK\"}\n{\"orbname\": \"20251213_011512.557_UK\"}\n{\"orbname\": \"20251213_011515.983_UK\"}\n{\"orbname\": \"20251213_011525.391_UK\"}\n{\"orbname\": \"20251213_011525.393_UK\"}\n{\"orbname\": \"20251213_011528.153_UK\"}\n{\"orbname\": \"20251213_011537.188_UK\"}\n{\"orbname\": \"20251213_011537.283_UK\"}\n{\"orbname\": \"20251213_011539.061_UK\"}\n{\"orbname\": \"20251213_011539.711_UK\"}\n{\"orbname\": \"20251213_011603.488_UK\"}\n{\"orbname\": \"20251213_011604.609_UK\"}\n{\"orbname\": \"20251213_011604.610_UK\"}\n{\"orbname\": \"20251213_011605.867_UK\"}\n{\"orbname\": \"20251213_011611.982_UK\"}\n{\"orbname\": \"20251213_011613.055_UK\"}\n{\"orbname\": \"20251213_011615.257_UK\"}\n{\"orbname\": \"20251213_011622.891_UK\"}\n{\"orbname\": \"20251213_011622.892_UK\"}\n{\"orbname\": \"20251213_011634.986_UK\"}\n{\"orbname\": \"20251213_011640.786_UK\"}\n{\"orbname\": \"20251213_011642.505_UK\"}\n{\"orbname\": \"20251213_011701.319_UK\"}\n{\"orbname\": \"20251213_011705.524_UK\"}\n{\"orbname\": \"20251213_011705.525_UK\"}\n{\"orbname\": \"20251213_011708.363_UK\"}\n{\"orbname\": \"20251213_011722.973_UK\"}\n{\"orbname\": \"20251213_011727.561_UK\"}\n{\"orbname\": \"20251213_011731.852_UK\"}\n{\"orbname\": \"20251213_011736.990_UK\"}\n{\"orbname\": \"20251213_011753.768_UK\"}\n{\"orbname\": \"20251213_011757.091_UK\"}\n{\"orbname\": \"20251213_011800.207_UK\"}\n{\"orbname\": \"20251213_011800.209_UK\"}\n{\"orbname\": \"20251213_011803.955_UK\"}\n{\"orbname\": \"20251213_011803.966_UK\"}\n{\"orbname\": \"20251213_011806.841_UK\"}\n{\"orbname\": \"20251213_011806.843_UK\"}\n{\"orbname\": \"20251213_011809.464_UK\"}\n{\"orbname\": \"20251213_011809.757_UK\"}\n{\"orbname\": \"20251213_011811.346_UK\"}\n{\"orbname\": \"20251213_011819.554_UK\"}\n{\"orbname\": \"20251213_011833.926_UK\"}\n{\"orbname\": \"20251213_011835.890_UK\"}\n{\"orbname\": \"20251213_011841.450_UK\"}\n{\"orbname\": \"20251213_011842.963_UK\"}\n{\"orbname\": \"20251213_011845.554_UK\"}\n{\"orbname\": \"20251213_011857.724_UK\"}\n{\"orbname\": \"20251213_011905.240_UK\"}\n{\"orbname\": \"20251213_011906.243_UK\"}\n{\"orbname\": \"20251213_011906.787_UK\"}\n{\"orbname\": \"20251213_011906.791_UK\"}\n{\"orbname\": \"20251213_011927.935_UK\"}\n{\"orbname\": \"20251213_011927.936_UK\"}\n{\"orbname\": \"20251213_011929.078_UK\"}\n{\"orbname\": \"20251213_011936.345_UK\"}\n{\"orbname\": \"20251213_011936.346_UK\"}\n{\"orbname\": \"20251213_011943.340_UK\"}\n{\"orbname\": \"20251213_011952.049_UK\"}\n{\"orbname\": \"20251213_011957.477_UK\"}\n{\"orbname\": \"20251213_012001.136_UK\"}\n{\"orbname\": \"20251213_012004.569_UK\"}\n{\"orbname\": \"20251213_012013.743_UK\"}\n{\"orbname\": \"20251213_012039.149_UK\"}\n{\"orbname\": \"20251213_012039.150_UK\"}\n{\"orbname\": \"20251213_012039.337_UK\"}\n{\"orbname\": \"20251213_012040.471_UK\"}\n{\"orbname\": \"20251213_012041.357_UK\"}\n{\"orbname\": \"20251213_012041.471_UK\"}\n{\"orbname\": \"20251213_012048.232_UK\"}\n{\"orbname\": \"20251213_012049.742_UK\"}\n{\"orbname\": \"20251213_012049.868_UK\"}\n{\"orbname\": \"20251213_012059.821_UK\"}\n{\"orbname\": \"20251213_012103.541_UK\"}\n{\"orbname\": \"20251213_012104.693_UK\"}\n{\"orbname\": \"20251213_012104.799_UK\"}\n{\"orbname\": \"20251213_012107.790_UK\"}\n{\"orbname\": \"20251213_012113.982_UK\"}\n{\"orbname\": \"20251213_012116.067_UK\"}\n{\"orbname\": \"20251213_012124.618_UK\"}\n{\"orbname\": \"20251213_012137.354_UK\"}\n{\"orbname\": \"20251213_012144.544_UK\"}\n{\"orbname\": \"20251213_012200.152_UK\"}\n{\"orbname\": \"20251213_012200.153_UK\"}\n{\"orbname\": \"20251213_012202.609_UK\"}\n{\"orbname\": \"20251213_012247.501_UK\"}\n{\"orbname\": \"20251213_012255.396_UK\"}\n{\"orbname\": \"20251213_012301.752_UK\"}\n{\"orbname\": \"20251213_012303.806_UK\"}\n{\"orbname\": \"20251213_012305.352_UK\"}\n{\"orbname\": \"20251213_012311.622_UK\"}\n{\"orbname\": \"20251213_012313.748_UK\"}\n{\"orbname\": \"20251213_012317.021_UK\"}\n{\"orbname\": \"20251213_012323.909_UK\"}\n{\"orbname\": \"20251213_012325.279_UK\"}\n{\"orbname\": \"20251213_012325.742_UK\"}\n{\"orbname\": \"20251213_012325.750_UK\"}\n{\"orbname\": \"20251213_012329.818_UK\"}\n{\"orbname\": \"20251213_012330.141_UK\"}\n{\"orbname\": \"20251213_012332.722_UK\"}\n{\"orbname\": \"20251213_012335.541_UK\"}\n{\"orbname\": \"20251213_012342.536_UK\"}\n{\"orbname\": \"20251213_012352.905_UK\"}\n{\"orbname\": \"20251213_012400.625_UK\"}\n{\"orbname\": \"20251213_012401.154_UK\"}\n{\"orbname\": \"20251213_012405.059_UK\"}\n{\"orbname\": \"20251213_012421.330_UK\"}\n{\"orbname\": \"20251213_012421.757_UK\"}\n{\"orbname\": \"20251213_012424.686_UK\"}\n{\"orbname\": \"20251213_012432.232_UK\"}\n{\"orbname\": \"20251213_012432.989_UK\"}\n{\"orbname\": \"20251213_012435.140_UK\"}\n{\"orbname\": \"20251213_012435.238_UK\"}\n{\"orbname\": \"20251213_012456.331_UK\"}\n{\"orbname\": \"20251213_012458.117_UK\"}\n{\"orbname\": \"20251213_012459.418_UK\"}\n{\"orbname\": \"20251213_012511.956_UK\"}\n{\"orbname\": \"20251213_012519.946_UK\"}\n{\"orbname\": \"20251213_012522.466_UK\"}\n{\"orbname\": \"20251213_012522.470_UK\"}\n{\"orbname\": \"20251213_012522.517_UK\"}\n{\"orbname\": \"20251213_012539.015_UK\"}\n{\"orbname\": \"20251213_012542.167_UK\"}\n{\"orbname\": \"20251213_012553.787_UK\"}\n{\"orbname\": \"20251213_012553.850_UK\"}\n{\"orbname\": \"20251213_012605.641_UK\"}\n{\"orbname\": \"20251213_012605.651_UK\"}\n{\"orbname\": \"20251213_012607.092_UK\"}\n{\"orbname\": \"20251213_012613.164_UK\"}\n{\"orbname\": \"20251213_012624.395_UK\"}\n{\"orbname\": \"20251213_012625.090_UK\"}\n{\"orbname\": \"20251213_012625.581_UK\"}\n{\"orbname\": \"20251213_012627.074_UK\"}\n{\"orbname\": \"20251213_012644.962_UK\"}\n{\"orbname\": \"20251213_012647.445_UK\"}\n{\"orbname\": \"20251213_012653.618_UK\"}\n{\"orbname\": \"20251213_012653.653_UK\"}\n{\"orbname\": \"20251213_012659.651_UK\"}\n{\"orbname\": \"20251213_012703.280_UK\"}\n{\"orbname\": \"20251213_012703.346_UK\"}\n{\"orbname\": \"20251213_012704.335_UK\"}\n{\"orbname\": \"20251213_012707.029_UK\"}\n{\"orbname\": \"20251213_012707.597_UK\"}\n{\"orbname\": \"20251213_012713.088_UK\"}\n{\"orbname\": \"20251213_012714.638_UK\"}\n{\"orbname\": \"20251213_012732.580_UK\"}\n{\"orbname\": \"20251213_012736.195_UK\"}\n{\"orbname\": \"20251213_012740.422_UK\"}\n{\"orbname\": \"20251213_012740.465_UK\"}\n{\"orbname\": \"20251213_012746.317_UK\"}\n{\"orbname\": \"20251213_012747.421_UK\"}\n{\"orbname\": \"20251213_012747.590_UK\"}\n{\"orbname\": \"20251213_012757.031_UK\"}\n{\"orbname\": \"20251213_012800.537_UK\"}\n{\"orbname\": \"20251213_012800.637_UK\"}\n{\"orbname\": \"20251213_012816.823_UK\"}\n{\"orbname\": \"20251213_012824.026_UK\"}\n{\"orbname\": \"20251213_012826.388_UK\"}\n{\"orbname\": \"20251213_012835.818_UK\"}\n{\"orbname\": \"20251213_012847.633_UK\"}\n{\"orbname\": \"20251213_012855.041_UK\"}\n{\"orbname\": \"20251213_012855.042_UK\"}\n{\"orbname\": \"20251213_012856.528_UK\"}\n{\"orbname\": \"20251213_012901.065_UK\"}\n{\"orbname\": \"20251213_012901.484_UK\"}\n{\"orbname\": \"20251213_012909.415_UK\"}\n{\"orbname\": \"20251213_012911.950_UK\"}\n{\"orbname\": \"20251213_012913.920_UK\"}\n{\"orbname\": \"20251213_012913.921_UK\"}\n{\"orbname\": \"20251213_012914.358_UK\"}\n{\"orbname\": \"20251213_012914.402_UK\"}\n{\"orbname\": \"20251213_012921.337_UK\"}\n{\"orbname\": \"20251213_012921.406_UK\"}\n{\"orbname\": \"20251213_012921.461_UK\"}\n{\"orbname\": \"20251213_012924.065_UK\"}\n{\"orbname\": \"20251213_012924.071_UK\"}\n{\"orbname\": \"20251213_012926.971_UK\"}\n{\"orbname\": \"20251213_012929.030_UK\"}\n{\"orbname\": \"20251213_012935.525_UK\"}\n{\"orbname\": \"20251213_012936.204_UK\"}\n{\"orbname\": \"20251213_012947.436_UK\"}\n{\"orbname\": \"20251213_012956.218_UK\"}\n{\"orbname\": \"20251213_012958.990_UK\"}\n{\"orbname\": \"20251213_013004.398_UK\"}\n{\"orbname\": \"20251213_013012.948_UK\"}\n{\"orbname\": \"20251213_013016.979_UK\"}\n{\"orbname\": \"20251213_013027.682_UK\"}\n{\"orbname\": \"20251213_013037.510_UK\"}\n{\"orbname\": \"20251213_013102.970_UK\"}\n{\"orbname\": \"20251213_013114.588_UK\"}\n{\"orbname\": \"20251213_013117.931_UK\"}\n{\"orbname\": \"20251213_013122.555_UK\"}\n{\"orbname\": \"20251213_013127.839_UK\"}\n{\"orbname\": \"20251213_013130.961_UK\"}\n{\"orbname\": \"20251213_013140.564_UK\"}\n{\"orbname\": \"20251213_013140.565_UK\"}\n{\"orbname\": \"20251213_013141.164_UK\"}\n{\"orbname\": \"20251213_013141.165_UK\"}\n{\"orbname\": \"20251213_013144.481_UK\"}\n{\"orbname\": \"20251213_013144.482_UK\"}\n{\"orbname\": \"20251213_013145.312_UK\"}\n{\"orbname\": \"20251213_013203.272_UK\"}\n{\"orbname\": \"20251213_013203.273_UK\"}\n{\"orbname\": \"20251213_013203.468_UK\"}\n{\"orbname\": \"20251213_013204.186_UK\"}\n{\"orbname\": \"20251213_013212.864_UK\"}\n{\"orbname\": \"20251213_013226.456_UK\"}\n{\"orbname\": \"20251213_013226.605_UK\"}\n{\"orbname\": \"20251213_013231.371_UK\"}\n{\"orbname\": \"20251213_013242.376_UK\"}\n{\"orbname\": \"20251213_013248.604_UK\"}\n{\"orbname\": \"20251213_013249.712_UK\"}\n{\"orbname\": \"20251213_013253.487_UK\"}\n{\"orbname\": \"20251213_013254.914_UK\"}\n{\"orbname\": \"20251213_013254.919_UK\"}\n{\"orbname\": \"20251213_013303.565_UK\"}\n{\"orbname\": \"20251213_013303.748_UK\"}\n{\"orbname\": \"20251213_013305.835_UK\"}\n{\"orbname\": \"20251213_013314.516_UK\"}\n{\"orbname\": \"20251213_013320.228_UK\"}\n{\"orbname\": \"20251213_013326.567_UK\"}\n{\"orbname\": \"20251213_013331.800_UK\"}\n{\"orbname\": \"20251213_013334.837_UK\"}\n{\"orbname\": \"20251213_013339.709_UK\"}\n{\"orbname\": \"20251213_013342.609_UK\"}\n{\"orbname\": \"20251213_013342.610_UK\"}\n{\"orbname\": \"20251213_013352.108_UK\"}\n{\"orbname\": \"20251213_013352.109_UK\"}\n{\"orbname\": \"20251213_013358.648_UK\"}\n{\"orbname\": \"20251213_013358.649_UK\"}\n{\"orbname\": \"20251213_013403.701_UK\"}\n{\"orbname\": \"20251213_013403.984_UK\"}\n{\"orbname\": \"20251213_013410.482_UK\"}\n{\"orbname\": \"20251213_013410.483_UK\"}\n{\"orbname\": \"20251213_013411.501_UK\"}\n{\"orbname\": \"20251213_013415.915_UK\"}\n{\"orbname\": \"20251213_013421.201_UK\"}\n{\"orbname\": \"20251213_013433.840_UK\"}\n{\"orbname\": \"20251213_013435.406_UK\"}\n{\"orbname\": \"20251213_013435.407_UK\"}\n{\"orbname\": \"20251213_013435.625_UK\"}\n{\"orbname\": \"20251213_013435.627_UK\"}\n{\"orbname\": \"20251213_013439.342_UK\"}\n{\"orbname\": \"20251213_013443.233_UK\"}\n{\"orbname\": \"20251213_013443.562_UK\"}\n{\"orbname\": \"20251213_013450.232_UK\"}\n{\"orbname\": \"20251213_013450.233_UK\"}\n{\"orbname\": \"20251213_013450.785_UK\"}\n{\"orbname\": \"20251213_013505.211_UK\"}\n{\"orbname\": \"20251213_013506.149_UK\"}\n{\"orbname\": \"20251213_013508.055_UK\"}\n{\"orbname\": \"20251213_013508.056_UK\"}\n{\"orbname\": \"20251213_013514.807_UK\"}\n{\"orbname\": \"20251213_013517.352_UK\"}\n{\"orbname\": \"20251213_013530.491_UK\"}\n{\"orbname\": \"20251213_013534.032_UK\"}\n{\"orbname\": \"20251213_013535.259_UK\"}\n{\"orbname\": \"20251213_013547.165_UK\"}\n{\"orbname\": \"20251213_013557.090_UK\"}\n{\"orbname\": \"20251213_013607.343_UK\"}\n{\"orbname\": \"20251213_013610.302_UK\"}\n{\"orbname\": \"20251213_013620.718_UK\"}\n{\"orbname\": \"20251213_013621.591_UK\"}\n{\"orbname\": \"20251213_013632.971_UK\"}\n{\"orbname\": \"20251213_013647.379_UK\"}\n{\"orbname\": \"20251213_013652.235_UK\"}\n{\"orbname\": \"20251213_013653.013_UK\"}\n{\"orbname\": \"20251213_013700.511_UK\"}\n{\"orbname\": \"20251213_013700.536_UK\"}\n{\"orbname\": \"20251213_013701.972_UK\"}\n{\"orbname\": \"20251213_013702.209_UK\"}\n{\"orbname\": \"20251213_013702.210_UK\"}\n{\"orbname\": \"20251213_013705.527_UK\"}\n{\"orbname\": \"20251213_013705.533_UK\"}\n{\"orbname\": \"20251213_013705.974_UK\"}\n{\"orbname\": \"20251213_013708.598_UK\"}\n{\"orbname\": \"20251213_013714.361_UK\"}\n{\"orbname\": \"20251213_013729.819_UK\"}\n{\"orbname\": \"20251213_013736.251_UK\"}\n{\"orbname\": \"20251213_013736.252_UK\"}\n{\"orbname\": \"20251213_013737.529_UK\"}\n{\"orbname\": \"20251213_013738.072_UK\"}\n{\"orbname\": \"20251213_013743.089_UK\"}\n{\"orbname\": \"20251213_013745.248_UK\"}\n{\"orbname\": \"20251213_013757.236_UK\"}\n{\"orbname\": \"20251213_013757.470_UK\"}\n{\"orbname\": \"20251213_013757.646_UK\"}\n{\"orbname\": \"20251213_013802.322_UK\"}\n{\"orbname\": \"20251213_013814.954_UK\"}\n{\"orbname\": \"20251213_013822.600_UK\"}\n{\"orbname\": \"20251213_013822.603_UK\"}\n{\"orbname\": \"20251213_013831.509_UK\"}\n{\"orbname\": \"20251213_013834.952_UK\"}\n{\"orbname\": \"20251213_013843.732_UK\"}\n{\"orbname\": \"20251213_013843.851_UK\"}\n{\"orbname\": \"20251213_013845.790_UK\"}\n{\"orbname\": \"20251213_013852.285_UK\"}\n{\"orbname\": \"20251213_013853.536_UK\"}\n{\"orbname\": \"20251213_013857.650_UK\"}\n{\"orbname\": \"20251213_013901.704_UK\"}\n{\"orbname\": \"20251213_013903.867_UK\"}\n{\"orbname\": \"20251213_013903.898_UK\"}\n{\"orbname\": \"20251213_013905.614_UK\"}\n{\"orbname\": \"20251213_013914.807_UK\"}\n{\"orbname\": \"20251213_013921.941_UK\"}\n{\"orbname\": \"20251213_013928.452_UK\"}\n{\"orbname\": \"20251213_013929.326_UK\"}\n{\"orbname\": \"20251213_013930.224_UK\"}\n{\"orbname\": \"20251213_013930.678_UK\"}\n{\"orbname\": \"20251213_013933.729_UK\"}\n{\"orbname\": \"20251213_013934.096_UK\"}\n{\"orbname\": \"20251213_013938.158_UK\"}\n{\"orbname\": \"20251213_013947.774_UK\"}\n{\"orbname\": \"20251213_013948.899_UK\"}\n{\"orbname\": \"20251213_013950.709_\"}\n{\"orbname\": \"20251213_013950.709_UK\"}\n{\"orbname\": \"20251213_013952.143_UK\"}\n{\"orbname\": \"20251213_013953.500_UK\"}\n{\"orbname\": \"20251213_013953.501_UK\"}\n{\"orbname\": \"20251213_014013.246_UK\"}\n{\"orbname\": \"20251213_014014.949_UK\"}\n{\"orbname\": \"20251213_014032.861_UK\"}\n{\"orbname\": \"20251213_014033.430_UK\"}\n{\"orbname\": \"20251213_014042.332_UK\"}\n{\"orbname\": \"20251213_014051.287_UK\"}\n{\"orbname\": \"20251213_014058.613_UK\"}\n{\"orbname\": \"20251213_014058.638_UK\"}\n{\"orbname\": \"20251213_014059.572_UK\"}\n{\"orbname\": \"20251213_014103.486_UK\"}\n{\"orbname\": \"20251213_014105.052_UK\"}\n{\"orbname\": \"20251213_014110.019_UK\"}\n{\"orbname\": \"20251213_014110.039_UK\"}\n{\"orbname\": \"20251213_014115.946_UK\"}\n{\"orbname\": \"20251213_014137.059_UK\"}\n{\"orbname\": \"20251213_014150.506_UK\"}\n{\"orbname\": \"20251213_014152.045_UK\"}\n{\"orbname\": \"20251213_014203.519_UK\"}\n{\"orbname\": \"20251213_014221.250_UK\"}\n{\"orbname\": \"20251213_014221.367_UK\"}\n{\"orbname\": \"20251213_014252.969_UK\"}\n{\"orbname\": \"20251213_014303.187_UK\"}\n{\"orbname\": \"20251213_014313.249_UK\"}\n{\"orbname\": \"20251213_014317.473_UK\"}\n{\"orbname\": \"20251213_014325.424_UK\"}\n{\"orbname\": \"20251213_014325.488_UK\"}\n{\"orbname\": \"20251213_014326.339_UK\"}\n{\"orbname\": \"20251213_014329.344_UK\"}\n{\"orbname\": \"20251213_014332.734_UK\"}\n{\"orbname\": \"20251213_014400.918_UK\"}\n{\"orbname\": \"20251213_014408.020_UK\"}\n{\"orbname\": \"20251213_014408.022_UK\"}\n{\"orbname\": \"20251213_014411.256_UK\"}\n{\"orbname\": \"20251213_014417.405_UK\"}\n{\"orbname\": \"20251213_014431.136_UK\"}\n{\"orbname\": \"20251213_014434.573_UK\"}\n{\"orbname\": \"20251213_014453.451_UK\"}\n{\"orbname\": \"20251213_014457.109_UK\"}\n{\"orbname\": \"20251213_014529.793_UK\"}\n{\"orbname\": \"20251213_014532.643_UK\"}\n{\"orbname\": \"20251213_014539.794_UK\"}\n{\"orbname\": \"20251213_014543.531_UK\"}\n{\"orbname\": \"20251213_014552.556_UK\"}\n{\"orbname\": \"20251213_014555.168_UK\"}\n{\"orbname\": \"20251213_014556.348_UK\"}\n{\"orbname\": \"20251213_014606.577_UK\"}\n{\"orbname\": \"20251213_014608.080_UK\"}\n{\"orbname\": \"20251213_014609.661_UK\"}\n{\"orbname\": \"20251213_014611.772_UK\"}\n{\"orbname\": \"20251213_014619.193_UK\"}\n{\"orbname\": \"20251213_014632.971_UK\"}\n{\"orbname\": \"20251213_014641.407_UK\"}\n{\"orbname\": \"20251213_014642.182_UK\"}\n{\"orbname\": \"20251213_014648.314_UK\"}\n{\"orbname\": \"20251213_014654.870_UK\"}\n{\"orbname\": \"20251213_014710.272_UK\"}\n{\"orbname\": \"20251213_014714.377_UK\"}\n{\"orbname\": \"20251213_014717.841_UK\"}\n{\"orbname\": \"20251213_014717.875_UK\"}\n{\"orbname\": \"20251213_014719.135_UK\"}\n{\"orbname\": \"20251213_014719.735_UK\"}\n{\"orbname\": \"20251213_014719.778_UK\"}\n{\"orbname\": \"20251213_014719.779_UK\"}\n{\"orbname\": \"20251213_014736.741_UK\"}\n{\"orbname\": \"20251213_014736.812_UK\"}\n{\"orbname\": \"20251213_014737.331_UK\"}\n{\"orbname\": \"20251213_014738.605_UK\"}\n{\"orbname\": \"20251213_014744.113_UK\"}\n{\"orbname\": \"20251213_014801.806_UK\"}\n{\"orbname\": \"20251213_014801.864_UK\"}\n{\"orbname\": \"20251213_014801.906_UK\"}\n{\"orbname\": \"20251213_014804.552_UK\"}\n{\"orbname\": \"20251213_014817.550_UK\"}\n{\"orbname\": \"20251213_014817.552_UK\"}\n{\"orbname\": \"20251213_014822.686_UK\"}\n{\"orbname\": \"20251213_014823.915_UK\"}\n{\"orbname\": \"20251213_014829.756_UK\"}\n{\"orbname\": \"20251213_014831.488_UK\"}\n{\"orbname\": \"20251213_014831.664_UK\"}\n{\"orbname\": \"20251213_014831.666_UK\"}\n{\"orbname\": \"20251213_014832.491_UK\"}\n{\"orbname\": \"20251213_014840.599_UK\"}\n{\"orbname\": \"20251213_014846.370_UK\"}\n{\"orbname\": \"20251213_014855.478_UK\"}\n{\"orbname\": \"20251213_014858.942_UK\"}\n{\"orbname\": \"20251213_014900.847_UK\"}\n{\"orbname\": \"20251213_014904.267_UK\"}\n{\"orbname\": \"20251213_014918.717_UK\"}\n{\"orbname\": \"20251213_014937.264_UK\"}\n{\"orbname\": \"20251213_014939.751_UK\"}\n{\"orbname\": \"20251213_014947.633_UK\"}\n{\"orbname\": \"20251213_015001.817_UK\"}\n{\"orbname\": \"20251213_015001.823_UK\"}\n{\"orbname\": \"20251213_015019.126_UK\"}\n{\"orbname\": \"20251213_015019.127_UK\"}\n{\"orbname\": \"20251213_015031.414_UK\"}\n{\"orbname\": \"20251213_015035.943_UK\"}\n{\"orbname\": \"20251213_015036.653_UK\"}\n{\"orbname\": \"20251213_015101.464_UK\"}\n{\"orbname\": \"20251213_015106.629_UK\"}\n{\"orbname\": \"20251213_015107.345_UK\"}\n{\"orbname\": \"20251213_015108.930_UK\"}\n{\"orbname\": \"20251213_015130.841_UK\"}\n{\"orbname\": \"20251213_015133.788_UK\"}\n{\"orbname\": \"20251213_015137.640_UK\"}\n{\"orbname\": \"20251213_015141.402_UK\"}\n{\"orbname\": \"20251213_015143.234_UK\"}\n{\"orbname\": \"20251213_015143.373_UK\"}\n{\"orbname\": \"20251213_015143.377_UK\"}\n{\"orbname\": \"20251213_015144.328_UK\"}\n{\"orbname\": \"20251213_015149.218_UK\"}\n{\"orbname\": \"20251213_015151.211_UK\"}\n{\"orbname\": \"20251213_015151.243_UK\"}\n{\"orbname\": \"20251213_015154.940_UK\"}\n{\"orbname\": \"20251213_015159.095_UK\"}\n{\"orbname\": \"20251213_015200.775_UK\"}\n{\"orbname\": \"20251213_015220.703_UK\"}\n{\"orbname\": \"20251213_015220.822_UK\"}\n{\"orbname\": \"20251213_015222.878_UK\"}\n{\"orbname\": \"20251213_015222.879_UK\"}\n{\"orbname\": \"20251213_015228.707_UK\"}\n{\"orbname\": \"20251213_015237.756_UK\"}\n{\"orbname\": \"20251213_015257.877_UK\"}\n{\"orbname\": \"20251213_015300.740_UK\"}\n{\"orbname\": \"20251213_015303.619_UK\"}\n{\"orbname\": \"20251213_015303.620_UK\"}\n{\"orbname\": \"20251213_015305.415_UK\"}\n{\"orbname\": \"20251213_015313.164_UK\"}\n{\"orbname\": \"20251213_015315.113_UK\"}\n{\"orbname\": \"20251213_015315.188_UK\"}\n{\"orbname\": \"20251213_015315.640_UK\"}\n{\"orbname\": \"20251213_015315.644_UK\"}\n{\"orbname\": \"20251213_015322.551_UK\"}\n{\"orbname\": \"20251213_015325.081_UK\"}\n{\"orbname\": \"20251213_015326.494_UK\"}\n{\"orbname\": \"20251213_015329.654_UK\"}\n{\"orbname\": \"20251213_015329.655_UK\"}\n{\"orbname\": \"20251213_015331.027_UK\"}\n{\"orbname\": \"20251213_015337.571_UK\"}\n{\"orbname\": \"20251213_015338.909_UK\"}\n{\"orbname\": \"20251213_015409.459_UK\"}\n{\"orbname\": \"20251213_015432.355_UK\"}\n{\"orbname\": \"20251213_015437.912_UK\"}\n{\"orbname\": \"20251213_015440.425_UK\"}\n{\"orbname\": \"20251213_015441.010_UK\"}\n{\"orbname\": \"20251213_015448.764_UK\"}\n{\"orbname\": \"20251213_015448.765_UK\"}\n{\"orbname\": \"20251213_015451.119_UK\"}\n{\"orbname\": \"20251213_015451.264_UK\"}\n{\"orbname\": \"20251213_015451.267_UK\"}\n{\"orbname\": \"20251213_015459.167_UK\"}\n{\"orbname\": \"20251213_015501.179_UK\"}\n{\"orbname\": \"20251213_015501.695_UK\"}\n{\"orbname\": \"20251213_015504.961_UK\"}\n{\"orbname\": \"20251213_015513.405_UK\"}\n{\"orbname\": \"20251213_015515.351_UK\"}\n{\"orbname\": \"20251213_015515.354_UK\"}\n{\"orbname\": \"20251213_015521.009_UK\"}\n{\"orbname\": \"20251213_015524.300_UK\"}\n{\"orbname\": \"20251213_015545.266_UK\"}\n{\"orbname\": \"20251213_015546.866_UK\"}\n{\"orbname\": \"20251213_015552.226_UK\"}\n{\"orbname\": \"20251213_015554.981_UK\"}\n{\"orbname\": \"20251213_015556.148_UK\"}\n{\"orbname\": \"20251213_015616.040_UK\"}\n{\"orbname\": \"20251213_015619.400_UK\"}\n{\"orbname\": \"20251213_015632.120_UK\"}\n{\"orbname\": \"20251213_015637.512_UK\"}\n{\"orbname\": \"20251213_015637.541_UK\"}\n{\"orbname\": \"20251213_015641.608_UK\"}\n{\"orbname\": \"20251213_015641.609_UK\"}\n{\"orbname\": \"20251213_015643.765_UK\"}\n{\"orbname\": \"20251213_015644.480_UK\"}\n{\"orbname\": \"20251213_015649.263_UK\"}\n{\"orbname\": \"20251213_015701.593_UK\"}\n{\"orbname\": \"20251213_015701.595_UK\"}\n{\"orbname\": \"20251213_015712.741_UK\"}\n{\"orbname\": \"20251213_015717.529_UK\"}\n{\"orbname\": \"20251213_015721.682_UK\"}\n{\"orbname\": \"20251213_015721.684_UK\"}\n{\"orbname\": \"20251213_015722.953_UK\"}\n{\"orbname\": \"20251213_015724.018_UK\"}\n{\"orbname\": \"20251213_015748.642_UK\"}\n{\"orbname\": \"20251213_015750.048_UK\"}\n{\"orbname\": \"20251213_015752.583_UK\"}\n{\"orbname\": \"20251213_015753.029_UK\"}\n{\"orbname\": \"20251213_015759.411_UK\"}\n{\"orbname\": \"20251213_015800.469_UK\"}\n{\"orbname\": \"20251213_015800.500_UK\"}\n{\"orbname\": \"20251213_015814.906_UK\"}\n{\"orbname\": \"20251213_015817.078_UK\"}\n{\"orbname\": \"20251213_015829.619_UK\"}\n{\"orbname\": \"20251213_015831.752_UK\"}\n{\"orbname\": \"20251213_015836.256_UK\"}\n{\"orbname\": \"20251213_015837.898_UK\"}\n{\"orbname\": \"20251213_015839.025_UK\"}\n{\"orbname\": \"20251213_015839.308_UK\"}\n{\"orbname\": \"20251213_015843.501_UK\"}\n{\"orbname\": \"20251213_015858.725_UK\"}\n{\"orbname\": \"20251213_015907.339_UK\"}\n{\"orbname\": \"20251213_015924.385_UK\"}\n{\"orbname\": \"20251213_015926.230_UK\"}\n{\"orbname\": \"20251213_015928.475_UK\"}\n{\"orbname\": \"20251213_015929.674_UK\"}\n{\"orbname\": \"20251213_015931.692_UK\"}\n{\"orbname\": \"20251213_015931.693_UK\"}\n{\"orbname\": \"20251213_015937.442_UK\"}\n{\"orbname\": \"20251213_015938.585_UK\"}\n{\"orbname\": \"20251213_015940.011_UK\"}\n{\"orbname\": \"20251213_015940.520_UK\"}\n{\"orbname\": \"20251213_015942.759_UK\"}\n{\"orbname\": \"20251213_015942.989_UK\"}\n{\"orbname\": \"20251213_015945.560_UK\"}\n{\"orbname\": \"20251213_015945.611_UK\"}\n{\"orbname\": \"20251213_015955.616_UK\"}\n{\"orbname\": \"20251213_015955.617_UK\"}\n{\"orbname\": \"20251213_015959.774_UK\"}\n{\"orbname\": \"20251213_020003.498_UK\"}\n{\"orbname\": \"20251213_020004.016_UK\"}\n{\"orbname\": \"20251213_020004.019_UK\"}\n{\"orbname\": \"20251213_020021.701_UK\"}\n{\"orbname\": \"20251213_020027.031_UK\"}\n{\"orbname\": \"20251213_020027.956_UK\"}\n{\"orbname\": \"20251213_020028.970_UK\"}\n{\"orbname\": \"20251213_020028.972_UK\"}\n{\"orbname\": \"20251213_020029.945_UK\"}\n{\"orbname\": \"20251213_020033.726_UK\"}\n{\"orbname\": \"20251213_020033.796_UK\"}\n{\"orbname\": \"20251213_020047.316_UK\"}\n{\"orbname\": \"20251213_020047.641_UK\"}\n{\"orbname\": \"20251213_020047.643_UK\"}\n{\"orbname\": \"20251213_020105.768_UK\"}\n{\"orbname\": \"20251213_020110.615_UK\"}\n{\"orbname\": \"20251213_020110.616_UK\"}\n{\"orbname\": \"20251213_020115.754_UK\"}\n{\"orbname\": \"20251213_020122.168_UK\"}\n{\"orbname\": \"20251213_020132.580_UK\"}\n{\"orbname\": \"20251213_020136.961_UK\"}\n{\"orbname\": \"20251213_020136.962_UK\"}\n{\"orbname\": \"20251213_020138.695_UK\"}\n{\"orbname\": \"20251213_020138.833_UK\"}\n{\"orbname\": \"20251213_020151.919_UK\"}\n{\"orbname\": \"20251213_020151.957_UK\"}\n{\"orbname\": \"20251213_020155.308_UK\"}\n{\"orbname\": \"20251213_020158.125_UK\"}\n{\"orbname\": \"20251213_020159.915_UK\"}\n{\"orbname\": \"20251213_020200.044_UK\"}\n{\"orbname\": \"20251213_020204.662_UK\"}\n{\"orbname\": \"20251213_020208.107_UK\"}\n{\"orbname\": \"20251213_020213.696_UK\"}\n{\"orbname\": \"20251213_020220.726_UK\"}\n{\"orbname\": \"20251213_020221.873_UK\"}\n{\"orbname\": \"20251213_020223.451_UK\"}\n{\"orbname\": \"20251213_020231.879_UK\"}\n{\"orbname\": \"20251213_020240.729_UK\"}\n{\"orbname\": \"20251213_020250.237_UK\"}\n{\"orbname\": \"20251213_020250.487_UK\"}\n{\"orbname\": \"20251213_020252.069_UK\"}\n{\"orbname\": \"20251213_020311.743_UK\"}\n{\"orbname\": \"20251213_020314.394_UK\"}\n{\"orbname\": \"20251213_020316.383_UK\"}\n{\"orbname\": \"20251213_020332.760_UK\"}\n{\"orbname\": \"20251213_020345.050_UK\"}\n{\"orbname\": \"20251213_020345.063_UK\"}\n{\"orbname\": \"20251213_020346.168_UK\"}\n{\"orbname\": \"20251213_020347.844_UK\"}\n{\"orbname\": \"20251213_020349.630_UK\"}\n{\"orbname\": \"20251213_020353.750_UK\"}\n{\"orbname\": \"20251213_020402.233_UK\"}\n{\"orbname\": \"20251213_020403.103_UK\"}\n{\"orbname\": \"20251213_020409.993_UK\"}\n{\"orbname\": \"20251213_020426.101_UK\"}\n{\"orbname\": \"20251213_020430.866_UK\"}\n{\"orbname\": \"20251213_020450.989_UK\"}\n{\"orbname\": \"20251213_020451.983_UK\"}\n{\"orbname\": \"20251213_020455.225_UK\"}\n{\"orbname\": \"20251213_020459.225_UK\"}\n{\"orbname\": \"20251213_020500.463_UK\"}\n{\"orbname\": \"20251213_020500.466_UK\"}\n{\"orbname\": \"20251213_020519.315_UK\"}\n{\"orbname\": \"20251213_020521.822_UK\"}\n{\"orbname\": \"20251213_020527.290_UK\"}\n{\"orbname\": \"20251213_020527.427_UK\"}\n{\"orbname\": \"20251213_020535.973_UK\"}\n{\"orbname\": \"20251213_020536.094_UK\"}\n{\"orbname\": \"20251213_020536.496_UK\"}\n{\"orbname\": \"20251213_020552.764_UK\"}\n{\"orbname\": \"20251213_020552.765_UK\"}\n{\"orbname\": \"20251213_020553.141_UK\"}\n{\"orbname\": \"20251213_020556.297_UK\"}\n{\"orbname\": \"20251213_020557.833_UK\"}\n{\"orbname\": \"20251213_020601.368_UK\"}\n{\"orbname\": \"20251213_020609.838_UK\"}\n{\"orbname\": \"20251213_020611.492_UK\"}\n{\"orbname\": \"20251213_020616.900_UK\"}\n{\"orbname\": \"20251213_020619.228_UK\"}\n{\"orbname\": \"20251213_020619.463_UK\"}\n{\"orbname\": \"20251213_020630.024_UK\"}\n{\"orbname\": \"20251213_020641.050_UK\"}\n{\"orbname\": \"20251213_020641.051_UK\"}\n{\"orbname\": \"20251213_020641.922_UK\"}\n{\"orbname\": \"20251213_020644.751_UK\"}\n{\"orbname\": \"20251213_020702.521_UK\"}\n{\"orbname\": \"20251213_020702.850_UK\"}\n{\"orbname\": \"20251213_020721.864_UK\"}\n{\"orbname\": \"20251213_020740.086_UK\"}\n{\"orbname\": \"20251213_020744.449_UK\"}\n{\"orbname\": \"20251213_020747.451_UK\"}\n{\"orbname\": \"20251213_020747.760_UK\"}\n{\"orbname\": \"20251213_020809.939_UK\"}\n{\"orbname\": \"20251213_020818.827_UK\"}\n{\"orbname\": \"20251213_020822.264_UK\"}\n{\"orbname\": \"20251213_020824.304_UK\"}\n{\"orbname\": \"20251213_020837.871_UK\"}\n{\"orbname\": \"20251213_020841.232_UK\"}\n{\"orbname\": \"20251213_020841.235_UK\"}\n{\"orbname\": \"20251213_020850.787_UK\"}\n{\"orbname\": \"20251213_020900.387_UK\"}\n{\"orbname\": \"20251213_020900.595_UK\"}\n{\"orbname\": \"20251213_020902.904_UK\"}\n{\"orbname\": \"20251213_020905.016_UK\"}\n{\"orbname\": \"20251213_020917.721_UK\"}\n{\"orbname\": \"20251213_020923.965_UK\"}\n{\"orbname\": \"20251213_020923.966_UK\"}\n{\"orbname\": \"20251213_020924.025_UK\"}\n{\"orbname\": \"20251213_020937.357_UK\"}\n{\"orbname\": \"20251213_021006.199_UK\"}\n{\"orbname\": \"20251213_021019.442_UK\"}\n{\"orbname\": \"20251213_021030.788_UK\"}\n{\"orbname\": \"20251213_021043.376_UK\"}\n{\"orbname\": \"20251213_021055.504_UK\"}\n{\"orbname\": \"20251213_021057.284_UK\"}\n{\"orbname\": \"20251213_021057.937_UK\"}\n{\"orbname\": \"20251213_021057.940_UK\"}\n{\"orbname\": \"20251213_021100.595_UK\"}\n{\"orbname\": \"20251213_021102.416_UK\"}\n{\"orbname\": \"20251213_021102.505_UK\"}\n{\"orbname\": \"20251213_021102.970_UK\"}\n{\"orbname\": \"20251213_021103.058_UK\"}\n{\"orbname\": \"20251213_021106.596_UK\"}\n{\"orbname\": \"20251213_021106.597_UK\"}\n{\"orbname\": \"20251213_021112.555_UK\"}\n{\"orbname\": \"20251213_021128.479_UK\"}\n{\"orbname\": \"20251213_021142.341_UK\"}\n{\"orbname\": \"20251213_021201.889_UK\"}\n{\"orbname\": \"20251213_021206.518_UK\"}\n{\"orbname\": \"20251213_021206.520_UK\"}\n{\"orbname\": \"20251213_021220.450_UK\"}\n{\"orbname\": \"20251213_021224.266_UK\"}\n{\"orbname\": \"20251213_021224.783_UK\"}\n{\"orbname\": \"20251213_021238.155_UK\"}\n{\"orbname\": \"20251213_021239.099_UK\"}\n{\"orbname\": \"20251213_021245.824_UK\"}\n{\"orbname\": \"20251213_021255.240_UK\"}\n{\"orbname\": \"20251213_021309.832_UK\"}\n{\"orbname\": \"20251213_021311.756_UK\"}\n{\"orbname\": \"20251213_021313.313_UK\"}\n{\"orbname\": \"20251213_021323.940_UK\"}\n{\"orbname\": \"20251213_021326.057_UK\"}\n{\"orbname\": \"20251213_021326.058_UK\"}\n{\"orbname\": \"20251213_021330.594_UK\"}\n{\"orbname\": \"20251213_021330.838_UK\"}\n{\"orbname\": \"20251213_021332.496_UK\"}\n{\"orbname\": \"20251213_021335.060_UK\"}\n{\"orbname\": \"20251213_021336.594_UK\"}\n{\"orbname\": \"20251213_021337.211_UK\"}\n{\"orbname\": \"20251213_021339.699_UK\"}\n{\"orbname\": \"20251213_021343.382_UK\"}\n{\"orbname\": \"20251213_021343.391_UK\"}\n{\"orbname\": \"20251213_021350.971_UK\"}\n{\"orbname\": \"20251213_021354.997_UK\"}\n{\"orbname\": \"20251213_021355.454_UK\"}\n{\"orbname\": \"20251213_021359.805_UK\"}\n{\"orbname\": \"20251213_021413.225_UK\"}\n{\"orbname\": \"20251213_021414.287_UK\"}\n{\"orbname\": \"20251213_021431.510_UK\"}\n{\"orbname\": \"20251213_021433.058_UK\"}\n{\"orbname\": \"20251213_021433.110_UK\"}\n{\"orbname\": \"20251213_021433.111_UK\"}\n{\"orbname\": \"20251213_021439.916_UK\"}\n{\"orbname\": \"20251213_021446.033_UK\"}\n{\"orbname\": \"20251213_021449.308_UK\"}\n{\"orbname\": \"20251213_021500.213_UK\"}\n{\"orbname\": \"20251213_021501.768_UK\"}\n{\"orbname\": \"20251213_021508.371_UK\"}\n{\"orbname\": \"20251213_021519.052_UK\"}\n{\"orbname\": \"20251213_021535.973_UK\"}\n{\"orbname\": \"20251213_021537.281_UK\"}\n{\"orbname\": \"20251213_021543.082_UK\"}\n{\"orbname\": \"20251213_021551.754_UK\"}\n{\"orbname\": \"20251213_021551.755_UK\"}\n{\"orbname\": \"20251213_021552.241_UK\"}\n{\"orbname\": \"20251213_021557.743_UK\"}\n{\"orbname\": \"20251213_021558.580_UK\"}\n{\"orbname\": \"20251213_021607.946_UK\"}\n{\"orbname\": \"20251213_021611.071_UK\"}\n{\"orbname\": \"20251213_021613.066_UK\"}\n{\"orbname\": \"20251213_021616.551_UK\"}\n{\"orbname\": \"20251213_021627.544_UK\"}\n{\"orbname\": \"20251213_021632.205_UK\"}\n{\"orbname\": \"20251213_021637.029_UK\"}\n{\"orbname\": \"20251213_021637.268_UK\"}\n{\"orbname\": \"20251213_021647.026_UK\"}\n{\"orbname\": \"20251213_021650.924_UK\"}\n{\"orbname\": \"20251213_021659.287_UK\"}\n{\"orbname\": \"20251213_021718.847_UK\"}\n{\"orbname\": \"20251213_021723.914_UK\"}\n{\"orbname\": \"20251213_021725.099_UK\"}\n{\"orbname\": \"20251213_021725.297_UK\"}\n{\"orbname\": \"20251213_021729.427_UK\"}\n{\"orbname\": \"20251213_021751.331_UK\"}\n{\"orbname\": \"20251213_021751.332_UK\"}\n{\"orbname\": \"20251213_021755.433_UK\"}\n{\"orbname\": \"20251213_021757.569_UK\"}\n{\"orbname\": \"20251213_021804.630_UK\"}\n{\"orbname\": \"20251213_021806.277_UK\"}\n{\"orbname\": \"20251213_021814.600_UK\"}\n{\"orbname\": \"20251213_021819.504_UK\"}\n{\"orbname\": \"20251213_021825.383_UK\"}\n{\"orbname\": \"20251213_021825.948_UK\"}\n{\"orbname\": \"20251213_021830.503_UK\"}\n{\"orbname\": \"20251213_021844.232_UK\"}\n{\"orbname\": \"20251213_021844.249_UK\"}\n{\"orbname\": \"20251213_021856.974_UK\"}\n{\"orbname\": \"20251213_021900.506_UK\"}\n{\"orbname\": \"20251213_021907.296_UK\"}\n{\"orbname\": \"20251213_021912.698_UK\"}\n{\"orbname\": \"20251213_021925.003_UK\"}\n{\"orbname\": \"20251213_021925.578_UK\"}\n{\"orbname\": \"20251213_021930.985_UK\"}\n{\"orbname\": \"20251213_021931.070_UK\"}\n{\"orbname\": \"20251213_021937.785_UK\"}\n{\"orbname\": \"20251213_021944.273_UK\"}\n{\"orbname\": \"20251213_021947.385_UK\"}\n{\"orbname\": \"20251213_021947.390_UK\"}\n{\"orbname\": \"20251213_021949.228_UK\"}\n{\"orbname\": \"20251213_021949.229_UK\"}\n{\"orbname\": \"20251213_022003.740_UK\"}\n{\"orbname\": \"20251213_022013.786_UK\"}\n{\"orbname\": \"20251213_022024.851_UK\"}\n{\"orbname\": \"20251213_022025.791_UK\"}\n{\"orbname\": \"20251213_022046.219_UK\"}\n{\"orbname\": \"20251213_022046.942_UK\"}\n{\"orbname\": \"20251213_022053.682_UK\"}\n{\"orbname\": \"20251213_022056.854_UK\"}\n{\"orbname\": \"20251213_022057.915_UK\"}\n{\"orbname\": \"20251213_022100.610_UK\"}\n{\"orbname\": \"20251213_022100.695_UK\"}\n{\"orbname\": \"20251213_022101.653_UK\"}\n{\"orbname\": \"20251213_022103.303_UK\"}\n{\"orbname\": \"20251213_022109.701_UK\"}\n{\"orbname\": \"20251213_022110.383_UK\"}\n{\"orbname\": \"20251213_022113.989_UK\"}\n{\"orbname\": \"20251213_022118.791_UK\"}\n{\"orbname\": \"20251213_022126.368_UK\"}\n{\"orbname\": \"20251213_022129.870_UK\"}\n{\"orbname\": \"20251213_022137.237_UK\"}\n{\"orbname\": \"20251213_022141.471_UK\"}\n{\"orbname\": \"20251213_022144.782_UK\"}\n{\"orbname\": \"20251213_022217.651_UK\"}\n{\"orbname\": \"20251213_022224.199_UK\"}\n{\"orbname\": \"20251213_022242.424_UK\"}\n{\"orbname\": \"20251213_022250.333_UK\"}\n{\"orbname\": \"20251213_022252.215_UK\"}\n{\"orbname\": \"20251213_022256.216_UK\"}\n{\"orbname\": \"20251213_022306.865_UK\"}\n{\"orbname\": \"20251213_022306.866_UK\"}\n{\"orbname\": \"20251213_022311.376_UK\"}\n{\"orbname\": \"20251213_022315.427_UK\"}\n{\"orbname\": \"20251213_022324.225_UK\"}\n{\"orbname\": \"20251213_022337.367_UK\"}\n{\"orbname\": \"20251213_022343.710_UK\"}\n{\"orbname\": \"20251213_022347.958_UK\"}\n{\"orbname\": \"20251213_022350.925_UK\"}\n{\"orbname\": \"20251213_022412.968_UK\"}\n{\"orbname\": \"20251213_022416.452_UK\"}\n{\"orbname\": \"20251213_022423.555_UK\"}\n{\"orbname\": \"20251213_022429.563_UK\"}\n{\"orbname\": \"20251213_022433.667_UK\"}\n{\"orbname\": \"20251213_022437.825_UK\"}\n{\"orbname\": \"20251213_022444.712_UK\"}\n{\"orbname\": \"20251213_022502.548_UK\"}\n{\"orbname\": \"20251213_022512.943_UK\"}\n{\"orbname\": \"20251213_022512.949_UK\"}\n{\"orbname\": \"20251213_022517.247_UK\"}\n{\"orbname\": \"20251213_022523.166_UK\"}\n{\"orbname\": \"20251213_022523.856_UK\"}\n{\"orbname\": \"20251213_022526.270_UK\"}\n{\"orbname\": \"20251213_022527.052_UK\"}\n{\"orbname\": \"20251213_022540.077_UK\"}\n{\"orbname\": \"20251213_022541.217_UK\"}\n{\"orbname\": \"20251213_022546.878_UK\"}\n{\"orbname\": \"20251213_022552.023_UK\"}\n{\"orbname\": \"20251213_022552.031_UK\"}\n{\"orbname\": \"20251213_022556.244_UK\"}\n{\"orbname\": \"20251213_022605.110_UK\"}\n{\"orbname\": \"20251213_022636.733_UK\"}\n{\"orbname\": \"20251213_022636.741_UK\"}\n{\"orbname\": \"20251213_022639.070_UK\"}\n{\"orbname\": \"20251213_022639.995_UK\"}\n{\"orbname\": \"20251213_022650.164_UK\"}\n{\"orbname\": \"20251213_022651.762_UK\"}\n{\"orbname\": \"20251213_022652.733_UK\"}\n{\"orbname\": \"20251213_022652.840_UK\"}\n{\"orbname\": \"20251213_022653.572_UK\"}\n{\"orbname\": \"20251213_022701.604_UK\"}\n{\"orbname\": \"20251213_022702.366_UK\"}\n{\"orbname\": \"20251213_022702.374_UK\"}\n{\"orbname\": \"20251213_022703.465_UK\"}\n{\"orbname\": \"20251213_022703.519_UK\"}\n{\"orbname\": \"20251213_022706.515_UK\"}\n{\"orbname\": \"20251213_022710.668_UK\"}\n{\"orbname\": \"20251213_022717.904_UK\"}\n{\"orbname\": \"20251213_022725.369_UK\"}\n{\"orbname\": \"20251213_022729.939_UK\"}\n{\"orbname\": \"20251213_022733.694_UK\"}\n{\"orbname\": \"20251213_022743.626_UK\"}\n{\"orbname\": \"20251213_022744.102_UK\"}\n{\"orbname\": \"20251213_022803.881_UK\"}\n{\"orbname\": \"20251213_022806.833_UK\"}\n{\"orbname\": \"20251213_022810.705_UK\"}\n{\"orbname\": \"20251213_022810.706_UK\"}\n{\"orbname\": \"20251213_022816.440_UK\"}\n{\"orbname\": \"20251213_022821.449_UK\"}\n{\"orbname\": \"20251213_022823.918_UK\"}\n{\"orbname\": \"20251213_022824.671_UK\"}\n{\"orbname\": \"20251213_022824.672_UK\"}\n{\"orbname\": \"20251213_022826.647_UK\"}\n{\"orbname\": \"20251213_022841.184_UK\"}\n{\"orbname\": \"20251213_022848.150_UK\"}\n{\"orbname\": \"20251213_022856.376_UK\"}\n{\"orbname\": \"20251213_022856.379_UK\"}\n{\"orbname\": \"20251213_022912.081_UK\"}\n{\"orbname\": \"20251213_022919.791_UK\"}\n{\"orbname\": \"20251213_022923.140_UK\"}\n{\"orbname\": \"20251213_022941.179_UK\"}\n{\"orbname\": \"20251213_022941.245_UK\"}\n{\"orbname\": \"20251213_022942.027_UK\"}\n{\"orbname\": \"20251213_022950.547_UK\"}\n{\"orbname\": \"20251213_022951.113_UK\"}\n{\"orbname\": \"20251213_023018.350_UK\"}\n{\"orbname\": \"20251213_023026.862_UK\"}\n{\"orbname\": \"20251213_023032.992_UK\"}\n{\"orbname\": \"20251213_023032.993_UK\"}\n{\"orbname\": \"20251213_023033.587_UK\"}\n{\"orbname\": \"20251213_023036.587_UK\"}\n{\"orbname\": \"20251213_023041.853_UK\"}\n{\"orbname\": \"20251213_023043.683_UK\"}\n{\"orbname\": \"20251213_023043.908_UK\"}\n{\"orbname\": \"20251213_023043.909_UK\"}\n{\"orbname\": \"20251213_023046.821_UK\"}\n{\"orbname\": \"20251213_023049.030_UK\"}\n{\"orbname\": \"20251213_023053.438_IE_UK\"}\n{\"orbname\": \"20251213_023053.474_UK\"}\n{\"orbname\": \"20251213_023056.666_UK\"}\n{\"orbname\": \"20251213_023104.207_UK\"}\n{\"orbname\": \"20251213_023114.250_UK\"}\n{\"orbname\": \"20251213_023117.907_UK\"}\n{\"orbname\": \"20251213_023117.935_UK\"}\n{\"orbname\": \"20251213_023118.300_UK\"}\n{\"orbname\": \"20251213_023128.336_UK\"}\n{\"orbname\": \"20251213_023142.536_UK\"}\n{\"orbname\": \"20251213_023150.825_UK\"}\n{\"orbname\": \"20251213_023152.723_UK\"}\n{\"orbname\": \"20251213_023157.193_UK\"}\n{\"orbname\": \"20251213_023159.078_UK\"}\n{\"orbname\": \"20251213_023205.412_UK\"}\n{\"orbname\": \"20251213_023205.844_UK\"}\n{\"orbname\": \"20251213_023209.233_UK\"}\n{\"orbname\": \"20251213_023215.689_UK\"}\n{\"orbname\": \"20251213_023219.382_UK\"}\n{\"orbname\": \"20251213_023221.484_UK\"}\n{\"orbname\": \"20251213_023227.763_UK\"}\n{\"orbname\": \"20251213_023237.499_UK\"}\n{\"orbname\": \"20251213_023241.300_UK\"}\n{\"orbname\": \"20251213_023243.245_UK\"}\n{\"orbname\": \"20251213_023243.251_UK\"}\n{\"orbname\": \"20251213_023243.824_UK\"}\n{\"orbname\": \"20251213_023251.198_UK\"}\n{\"orbname\": \"20251213_023301.731_UK\"}\n{\"orbname\": \"20251213_023308.442_UK\"}\n{\"orbname\": \"20251213_023312.161_UK\"}\n{\"orbname\": \"20251213_023312.751_UK\"}\n{\"orbname\": \"20251213_023316.233_UK\"}\n{\"orbname\": \"20251213_023317.667_UK\"}\n{\"orbname\": \"20251213_023318.579_UK\"}\n{\"orbname\": \"20251213_023328.048_UK\"}\n{\"orbname\": \"20251213_023335.989_UK\"}\n{\"orbname\": \"20251213_023402.623_UK\"}\n{\"orbname\": \"20251213_023420.170_UK\"}\n{\"orbname\": \"20251213_023424.078_UK\"}\n{\"orbname\": \"20251213_023424.079_UK\"}\n{\"orbname\": \"20251213_023437.036_UK\"}\n{\"orbname\": \"20251213_023439.188_UK\"}\n{\"orbname\": \"20251213_023445.771_UK\"}\n{\"orbname\": \"20251213_023445.772_UK\"}\n{\"orbname\": \"20251213_023505.069_UK\"}\n{\"orbname\": \"20251213_023508.250_UK\"}\n{\"orbname\": \"20251213_023513.572_UK\"}\n{\"orbname\": \"20251213_023519.765_UK\"}\n{\"orbname\": \"20251213_023528.010_UK\"}\n{\"orbname\": \"20251213_023528.516_UK\"}\n{\"orbname\": \"20251213_023536.091_UK\"}\n{\"orbname\": \"20251213_023540.772_UK\"}\n{\"orbname\": \"20251213_023542.612_UK\"}\n{\"orbname\": \"20251213_023546.308_UK\"}\n{\"orbname\": \"20251213_023600.578_UK\"}\n{\"orbname\": \"20251213_023601.110_UK\"}\n{\"orbname\": \"20251213_023618.503_UK\"}\n{\"orbname\": \"20251213_023625.553_UK\"}\n{\"orbname\": \"20251213_023631.529_UK\"}\n{\"orbname\": \"20251213_023641.438_UK\"}\n{\"orbname\": \"20251213_023644.729_UK\"}\n{\"orbname\": \"20251213_023654.399_UK\"}\n{\"orbname\": \"20251213_023654.401_UK\"}\n{\"orbname\": \"20251213_023709.874_UK\"}\n{\"orbname\": \"20251213_023729.695_UK\"}\n{\"orbname\": \"20251213_023736.840_UK\"}\n{\"orbname\": \"20251213_023746.121_UK\"}\n{\"orbname\": \"20251213_023747.656_UK\"}\n{\"orbname\": \"20251213_023750.049_UK\"}\n{\"orbname\": \"20251213_023805.596_UK\"}\n{\"orbname\": \"20251213_023807.306_UK\"}\n{\"orbname\": \"20251213_023807.308_UK\"}\n{\"orbname\": \"20251213_023810.282_UK\"}\n{\"orbname\": \"20251213_023812.671_UK\"}\n{\"orbname\": \"20251213_023816.558_UK\"}\n{\"orbname\": \"20251213_023816.880_UK\"}\n{\"orbname\": \"20251213_023822.818_UK\"}\n{\"orbname\": \"20251213_023824.613_UK\"}\n{\"orbname\": \"20251213_023824.614_UK\"}\n{\"orbname\": \"20251213_023826.552_UK\"}\n{\"orbname\": \"20251213_023828.617_UK\"}\n{\"orbname\": \"20251213_023830.257_UK\"}\n{\"orbname\": \"20251213_023845.384_UK\"}\n{\"orbname\": \"20251213_023845.385_UK\"}\n{\"orbname\": \"20251213_023900.604_UK\"}\n{\"orbname\": \"20251213_023903.043_UK\"}\n{\"orbname\": \"20251213_023905.676_UK\"}\n{\"orbname\": \"20251213_023913.382_UK\"}\n{\"orbname\": \"20251213_023917.990_UK\"}\n{\"orbname\": \"20251213_023922.582_UK\"}\n{\"orbname\": \"20251213_023923.244_UK\"}\n{\"orbname\": \"20251213_023925.432_UK\"}\n{\"orbname\": \"20251213_023929.665_UK\"}\n{\"orbname\": \"20251213_023929.666_UK\"}\n{\"orbname\": \"20251213_023935.852_UK\"}\n{\"orbname\": \"20251213_023935.853_UK\"}\n{\"orbname\": \"20251213_023937.401_UK\"}\n{\"orbname\": \"20251213_023944.995_UK\"}\n{\"orbname\": \"20251213_023951.004_UK\"}\n{\"orbname\": \"20251213_023951.005_UK\"}\n{\"orbname\": \"20251213_023951.380_UK\"}\n{\"orbname\": \"20251213_024010.018_UK\"}\n{\"orbname\": \"20251213_024010.917_UK\"}\n{\"orbname\": \"20251213_024015.153_UK\"}\n{\"orbname\": \"20251213_024018.348_UK\"}\n{\"orbname\": \"20251213_024018.349_UK\"}\n{\"orbname\": \"20251213_024030.334_UK\"}\n{\"orbname\": \"20251213_024036.648_UK\"}\n{\"orbname\": \"20251213_024054.846_UK\"}\n{\"orbname\": \"20251213_024058.151_UK\"}\n{\"orbname\": \"20251213_024108.465_UK\"}\n{\"orbname\": \"20251213_024109.219_UK\"}\n{\"orbname\": \"20251213_024111.042_UK\"}\n{\"orbname\": \"20251213_024111.646_UK\"}\n{\"orbname\": \"20251213_024120.053_UK\"}\n{\"orbname\": \"20251213_024120.112_UK\"}\n{\"orbname\": \"20251213_024147.053_UK\"}\n{\"orbname\": \"20251213_024151.146_UK\"}\n{\"orbname\": \"20251213_024205.482_UK\"}\n{\"orbname\": \"20251213_024208.505_UK\"}\n{\"orbname\": \"20251213_024208.506_UK\"}\n{\"orbname\": \"20251213_024214.110_UK\"}\n{\"orbname\": \"20251213_024216.577_UK\"}\n{\"orbname\": \"20251213_024217.734_UK\"}\n{\"orbname\": \"20251213_024219.057_UK\"}\n{\"orbname\": \"20251213_024220.724_UK\"}\n{\"orbname\": \"20251213_024223.160_UK\"}\n{\"orbname\": \"20251213_024234.781_UK\"}\n{\"orbname\": \"20251213_024241.256_UK\"}\n{\"orbname\": \"20251213_024241.258_UK\"}\n{\"orbname\": \"20251213_024245.245_UK\"}\n{\"orbname\": \"20251213_024245.250_UK\"}\n{\"orbname\": \"20251213_024253.954_UK\"}\n{\"orbname\": \"20251213_024256.513_UK\"}\n{\"orbname\": \"20251213_024256.566_UK\"}\n{\"orbname\": \"20251213_024259.031_UK\"}\n{\"orbname\": \"20251213_024259.033_UK\"}\n{\"orbname\": \"20251213_024303.076_UK\"}\n{\"orbname\": \"20251213_024303.767_UK\"}\n{\"orbname\": \"20251213_024313.879_UK\"}\n{\"orbname\": \"20251213_024316.916_UK\"}\n{\"orbname\": \"20251213_024318.853_UK\"}\n{\"orbname\": \"20251213_024322.180_UK\"}\n{\"orbname\": \"20251213_024329.142_UK\"}\n{\"orbname\": \"20251213_024342.859_UK\"}\n{\"orbname\": \"20251213_024345.523_UK\"}\n{\"orbname\": \"20251213_024345.525_UK\"}\n{\"orbname\": \"20251213_024354.982_UK\"}\n{\"orbname\": \"20251213_024357.922_UK\"}\n{\"orbname\": \"20251213_024358.491_UK\"}\n{\"orbname\": \"20251213_024400.668_UK\"}\n{\"orbname\": \"20251213_024402.574_UK\"}\n{\"orbname\": \"20251213_024408.001_UK\"}\n{\"orbname\": \"20251213_024409.305_UK\"}\n{\"orbname\": \"20251213_024413.816_UK\"}\n{\"orbname\": \"20251213_024416.350_UK\"}\n{\"orbname\": \"20251213_024416.440_UK\"}\n{\"orbname\": \"20251213_024417.186_UK\"}\n{\"orbname\": \"20251213_024417.352_UK\"}\n{\"orbname\": \"20251213_024420.442_UK\"}\n{\"orbname\": \"20251213_024421.825_UK\"}\n{\"orbname\": \"20251213_024435.333_UK\"}\n{\"orbname\": \"20251213_024437.044_UK\"}\n{\"orbname\": \"20251213_024445.121_UK\"}\n{\"orbname\": \"20251213_024448.954_UK\"}\n{\"orbname\": \"20251213_024449.815_UK\"}\n{\"orbname\": \"20251213_024451.631_UK\"}\n{\"orbname\": \"20251213_024502.100_UK\"}\n{\"orbname\": \"20251213_024502.101_UK\"}\n{\"orbname\": \"20251213_024502.264_UK\"}\n{\"orbname\": \"20251213_024504.223_UK\"}\n{\"orbname\": \"20251213_024509.978_UK\"}\n{\"orbname\": \"20251213_024510.521_UK\"}\n{\"orbname\": \"20251213_024510.546_UK\"}\n{\"orbname\": \"20251213_024512.276_UK\"}\n{\"orbname\": \"20251213_024525.873_UK\"}\n{\"orbname\": \"20251213_024530.801_UK\"}\n{\"orbname\": \"20251213_024535.345_UK\"}\n{\"orbname\": \"20251213_024537.249_UK\"}\n{\"orbname\": \"20251213_024558.917_UK\"}\n{\"orbname\": \"20251213_024606.134_UK\"}\n{\"orbname\": \"20251213_024606.136_UK\"}\n{\"orbname\": \"20251213_024611.425_UK\"}\n{\"orbname\": \"20251213_024611.426_UK\"}\n{\"orbname\": \"20251213_024614.206_UK\"}\n{\"orbname\": \"20251213_024616.262_UK\"}\n{\"orbname\": \"20251213_024616.283_UK\"}\n{\"orbname\": \"20251213_024625.463_UK\"}\n{\"orbname\": \"20251213_024633.238_UK\"}\n{\"orbname\": \"20251213_024659.292_UK\"}\n{\"orbname\": \"20251213_024702.700_UK\"}\n{\"orbname\": \"20251213_024702.701_UK\"}\n{\"orbname\": \"20251213_024705.229_UK\"}\n{\"orbname\": \"20251213_024709.607_UK\"}\n{\"orbname\": \"20251213_024718.780_UK\"}\n{\"orbname\": \"20251213_024718.781_UK\"}\n{\"orbname\": \"20251213_024724.630_UK\"}\n{\"orbname\": \"20251213_024733.426_UK\"}\n{\"orbname\": \"20251213_024733.427_UK\"}\n{\"orbname\": \"20251213_024733.567_UK\"}\n{\"orbname\": \"20251213_024733.808_UK\"}\n{\"orbname\": \"20251213_024733.809_UK\"}\n{\"orbname\": \"20251213_024801.675_UK\"}\n{\"orbname\": \"20251213_024801.985_UK\"}\n{\"orbname\": \"20251213_024802.102_UK\"}\n{\"orbname\": \"20251213_024805.906_UK\"}\n{\"orbname\": \"20251213_024805.907_UK\"}\n{\"orbname\": \"20251213_024812.241_UK\"}\n{\"orbname\": \"20251213_024812.752_UK\"}\n{\"orbname\": \"20251213_024817.329_UK\"}\n{\"orbname\": \"20251213_024823.354_UK\"}\n{\"orbname\": \"20251213_024832.292_UK\"}\n{\"orbname\": \"20251213_024832.308_UK\"}\n{\"orbname\": \"20251213_024833.613_UK\"}\n{\"orbname\": \"20251213_024837.733_UK\"}\n{\"orbname\": \"20251213_024841.722_UK\"}\n{\"orbname\": \"20251213_024844.173_UK\"}\n{\"orbname\": \"20251213_024904.307_UK\"}\n{\"orbname\": \"20251213_024904.308_UK\"}\n{\"orbname\": \"20251213_024913.103_UK\"}\n{\"orbname\": \"20251213_024918.606_UK\"}\n{\"orbname\": \"20251213_024924.291_UK\"}\n{\"orbname\": \"20251213_024924.730_UK\"}\n{\"orbname\": \"20251213_024929.659_UK\"}\n{\"orbname\": \"20251213_024931.538_UK\"}\n{\"orbname\": \"20251213_024933.126_UK\"}\n{\"orbname\": \"20251213_024933.933_UK\"}\n{\"orbname\": \"20251213_024939.695_UK\"}\n{\"orbname\": \"20251213_024939.846_UK\"}\n{\"orbname\": \"20251213_024942.994_UK\"}\n{\"orbname\": \"20251213_024947.438_UK\"}\n{\"orbname\": \"20251213_025000.258_UK\"}\n{\"orbname\": \"20251213_025001.051_UK\"}\n{\"orbname\": \"20251213_025010.859_UK\"}\n{\"orbname\": \"20251213_025012.540_UK\"}\n{\"orbname\": \"20251213_025014.732_UK\"}\n{\"orbname\": \"20251213_025014.733_UK\"}\n{\"orbname\": \"20251213_025015.479_UK\"}\n{\"orbname\": \"20251213_025015.487_UK\"}\n{\"orbname\": \"20251213_025031.817_UK\"}\n{\"orbname\": \"20251213_025042.698_UK\"}\n{\"orbname\": \"20251213_025046.840_UK\"}\n{\"orbname\": \"20251213_025046.873_UK\"}\n{\"orbname\": \"20251213_025053.560_UK\"}\n{\"orbname\": \"20251213_025053.562_UK\"}\n{\"orbname\": \"20251213_025057.591_UK\"}\n{\"orbname\": \"20251213_025059.813_UK\"}\n{\"orbname\": \"20251213_025100.212_UK\"}\n{\"orbname\": \"20251213_025117.379_UK\"}\n{\"orbname\": \"20251213_025117.630_UK\"}\n{\"orbname\": \"20251213_025120.629_UK\"}\n{\"orbname\": \"20251213_025129.721_UK\"}\n{\"orbname\": \"20251213_025132.461_UK\"}\n{\"orbname\": \"20251213_025133.160_UK\"}\n{\"orbname\": \"20251213_025134.784_UK\"}\n{\"orbname\": \"20251213_025145.331_UK\"}\n{\"orbname\": \"20251213_025145.863_UK\"}\n{\"orbname\": \"20251213_025153.352_UK\"}\n{\"orbname\": \"20251213_025153.387_UK\"}\n{\"orbname\": \"20251213_025156.451_UK\"}\n{\"orbname\": \"20251213_025204.365_UK\"}\n{\"orbname\": \"20251213_025212.292_UK\"}\n{\"orbname\": \"20251213_025218.045_UK\"}\n{\"orbname\": \"20251213_025230.433_UK\"}\n{\"orbname\": \"20251213_025246.101_UK\"}\n{\"orbname\": \"20251213_025248.639_UK\"}\n{\"orbname\": \"20251213_025256.976_UK\"}\n{\"orbname\": \"20251213_025257.046_UK\"}\n{\"orbname\": \"20251213_025257.047_UK\"}\n{\"orbname\": \"20251213_025259.752_UK\"}\n{\"orbname\": \"20251213_025313.752_UK\"}\n{\"orbname\": \"20251213_025318.239_UK\"}\n{\"orbname\": \"20251213_025318.288_UK\"}\n{\"orbname\": \"20251213_025321.242_UK\"}\n{\"orbname\": \"20251213_025321.938_UK\"}\n{\"orbname\": \"20251213_025321.940_UK\"}\n{\"orbname\": \"20251213_025326.942_UK\"}\n{\"orbname\": \"20251213_025326.943_UK\"}\n{\"orbname\": \"20251213_025331.647_UK\"}\n{\"orbname\": \"20251213_025332.634_UK\"}\n{\"orbname\": \"20251213_025332.636_UK\"}\n{\"orbname\": \"20251213_025335.849_UK\"}\n{\"orbname\": \"20251213_025335.852_UK\"}\n{\"orbname\": \"20251213_025337.027_UK\"}\n{\"orbname\": \"20251213_025341.835_UK\"}\n{\"orbname\": \"20251213_025345.038_UK\"}\n{\"orbname\": \"20251213_025345.039_UK\"}\n{\"orbname\": \"20251213_025345.786_UK\"}\n{\"orbname\": \"20251213_025347.467_UK\"}\n{\"orbname\": \"20251213_025351.361_UK\"}\n{\"orbname\": \"20251213_025351.498_UK\"}\n{\"orbname\": \"20251213_025356.802_UK\"}\n{\"orbname\": \"20251213_025404.794_UK\"}\n{\"orbname\": \"20251213_025419.476_UK\"}\n{\"orbname\": \"20251213_025428.532_UK\"}\n{\"orbname\": \"20251213_025431.918_UK\"}\n{\"orbname\": \"20251213_025439.950_UK\"}\n{\"orbname\": \"20251213_025442.422_UK\"}\n{\"orbname\": \"20251213_025454.410_UK\"}\n{\"orbname\": \"20251213_025454.412_UK\"}\n{\"orbname\": \"20251213_025457.067_UK\"}\n{\"orbname\": \"20251213_025517.350_UK\"}\n{\"orbname\": \"20251213_025518.871_UK\"}\n{\"orbname\": \"20251213_025524.833_UK\"}\n{\"orbname\": \"20251213_025524.944_UK\"}\n{\"orbname\": \"20251213_025525.978_UK\"}\n{\"orbname\": \"20251213_025525.979_UK\"}\n{\"orbname\": \"20251213_025530.659_UK\"}\n{\"orbname\": \"20251213_025535.935_UK\"}\n{\"orbname\": \"20251213_025536.239_UK\"}\n{\"orbname\": \"20251213_025539.663_UK\"}\n{\"orbname\": \"20251213_025551.882_UK\"}\n{\"orbname\": \"20251213_025551.966_UK\"}\n{\"orbname\": \"20251213_025554.884_UK\"}\n{\"orbname\": \"20251213_025606.895_UK\"}\n{\"orbname\": \"20251213_025609.019_UK\"}\n{\"orbname\": \"20251213_025614.553_UK\"}\n{\"orbname\": \"20251213_025620.817_UK\"}\n{\"orbname\": \"20251213_025623.663_UK\"}\n{\"orbname\": \"20251213_025627.059_UK\"}\n{\"orbname\": \"20251213_025628.445_UK\"}\n{\"orbname\": \"20251213_025635.910_UK\"}\n{\"orbname\": \"20251213_025645.983_UK\"}\n{\"orbname\": \"20251213_025646.563_UK\"}\n{\"orbname\": \"20251213_025646.564_UK\"}\n{\"orbname\": \"20251213_025651.934_UK\"}\n{\"orbname\": \"20251213_025651.936_UK\"}\n{\"orbname\": \"20251213_025655.197_UK\"}\n{\"orbname\": \"20251213_025655.829_UK\"}\n{\"orbname\": \"20251213_025657.293_UK\"}\n{\"orbname\": \"20251213_025701.666_UK\"}\n{\"orbname\": \"20251213_025716.093_UK\"}\n{\"orbname\": \"20251213_025716.094_UK\"}\n{\"orbname\": \"20251213_025719.402_UK\"}\n{\"orbname\": \"20251213_025720.971_UK\"}\n{\"orbname\": \"20251213_025727.633_UK\"}\n{\"orbname\": \"20251213_025734.278_UK\"}\n{\"orbname\": \"20251213_025742.678_UK\"}\n{\"orbname\": \"20251213_025745.714_UK\"}\n{\"orbname\": \"20251213_025747.477_UK\"}\n{\"orbname\": \"20251213_025758.068_UK\"}\n{\"orbname\": \"20251213_025758.078_UK\"}\n{\"orbname\": \"20251213_025821.720_UK\"}\n{\"orbname\": \"20251213_025828.361_UK\"}\n{\"orbname\": \"20251213_025834.586_UK\"}\n{\"orbname\": \"20251213_025837.971_UK\"}\n{\"orbname\": \"20251213_025841.060_UK\"}\n{\"orbname\": \"20251213_025841.398_UK\"}\n{\"orbname\": \"20251213_025842.523_UK\"}\n{\"orbname\": \"20251213_025842.524_UK\"}\n{\"orbname\": \"20251213_025850.691_UK\"}\n{\"orbname\": \"20251213_025850.949_UK\"}\n{\"orbname\": \"20251213_025851.505_UK\"}\n{\"orbname\": \"20251213_025852.449_UK\"}\n{\"orbname\": \"20251213_025855.140_UK\"}\n{\"orbname\": \"20251213_025855.142_UK\"}\n{\"orbname\": \"20251213_025900.074_UK\"}\n{\"orbname\": \"20251213_025928.492_UK\"}\n{\"orbname\": \"20251213_025928.494_UK\"}\n{\"orbname\": \"20251213_025929.537_UK\"}\n{\"orbname\": \"20251213_025947.572_UK\"}\n{\"orbname\": \"20251213_025947.573_UK\"}\n{\"orbname\": \"20251213_025949.835_UK\"}\n{\"orbname\": \"20251213_025952.453_UK\"}\n{\"orbname\": \"20251213_025952.454_UK\"}\n{\"orbname\": \"20251213_025953.845_UK\"}\n"} \ No newline at end of file diff --git a/archive/lambdas/matchDataApi/tests/points.txt b/archive/lambdas/matchDataApi/tests/points.txt new file mode 100644 index 00000000..0e805c83 --- /dev/null +++ b/archive/lambdas/matchDataApi/tests/points.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "{\"points\": [{\"No\": \"0\",\"statid\": \"UK0021\",\"ign\": \"0\",\"t\": \"0.000000\",\"jd\": \"2460957.499635449145\",\"m1\": \"340.46777\",\"m2\": \"-0.95258\",\"az\": \"220.35502\",\"alt\": \"30.91577\",\"azl\": \"220.32162\",\"altl\": \"30.93076\",\"rao\": \"340.46777\",\"deco\": \"-0.95258\",\"ral\": \"340.50005\",\"decl\": \"-0.95066\",\"X\": \"4075009.65\",\"Y\": \"941260.12\",\"Z\": \"4909315.70\",\"lat\": \"49.759344\",\"lon\": \"-4.729344\",\"H\": \"83495.33\",\"range\": \"159589.97\",\"length\": \"0.00\",\"svd\": \"29.07\",\"lag\": \"146.75\",\"vel\": \"0.00\",\"pvel\": \"23869.79\",\"hres\": \"-33.64\",\"vres\": \"-83.56\",\"ares\": \"116.42\",\"vmag\": \"+4.95\",\"amag\": \"+3.93\"},{\"No\": \"1\",\"statid\": \"UK0021\",\"ign\": \"0\",\"t\": \"0.040136\",\"jd\": \"2460957.499635913875\",\"m1\": \"340.50619\",\"m2\": \"-1.15592\",\"az\": \"220.21720\",\"alt\": \"30.74602\",\"azl\": \"220.21461\",\"altl\": \"30.74718\",\"rao\": \"340.50619\",\"deco\": \"-1.15592\",\"ral\": \"340.50886\",\"decl\": \"-1.15577\",\"X\": \"4074412.10\",\"Y\": \"941508.11\",\"Z\": \"4908757.17\",\"lat\": \"49.759708\",\"lon\": \"-4.724358\",\"H\": \"82728.94\",\"range\": \"158960.86\",\"length\": \"854.71\",\"svd\": \"825.63\",\"lag\": \"-23.62\",\"vel\": \"21295.22\",\"pvel\": \"23869.79\",\"hres\": \"-2.60\",\"vres\": \"-6.45\",\"ares\": \"9.03\",\"vmag\": \"+2.24\",\"amag\": \"+1.23\"},{\"No\": \"2\",\"statid\": \"UK0021\",\"ign\": \"0\",\"t\": \"0.080308\",\"jd\": \"2460957.499636378605\",\"m1\": \"340.52632\",\"m2\": \"-1.39516\",\"az\": \"220.08224\",\"alt\": \"30.53588\",\"azl\": \"220.08938\",\"altl\": \"30.53267\",\"rao\": \"340.52632\",\"deco\": \"-1.39516\",\"ral\": \"340.51973\",\"decl\": \"-1.39558\",\"X\": \"4073719.42\",\"Y\": \"941795.58\",\"Z\": \"4908109.74\",\"lat\": \"49.760130\",\"lon\": \"-4.718551\",\"H\": \"81840.58\",\"range\": \"158233.15\",\"length\": \"1845.47\",\"svd\": \"1816.40\",\"lag\": \"-0.65\",\"vel\": \"24663.07\",\"pvel\": \"23869.79\",\"hres\": \"7.17\",\"vres\": \"17.76\",\"ares\": \"24.96\",\"vmag\": \"+1.75\",\"amag\": \"+0.75\"},{\"No\": \"3\",\"statid\": \"UK0021\",\"ign\": \"0\",\"t\": \"0.120504\",\"jd\": \"2460957.499636843801\",\"m1\": \"340.50592\",\"m2\": \"-1.64631\",\"az\": \"219.98511\",\"alt\": \"30.29823\",\"azl\": \"219.95968\",\"altl\": \"30.30963\",\"rao\": \"340.50592\",\"deco\": \"-1.64631\",\"ral\": \"340.53113\",\"decl\": \"-1.64484\",\"X\": \"4073006.12\",\"Y\": \"942091.59\",\"Z\": \"4907443.03\",\"lat\": \"49.760564\",\"lon\": \"-4.712564\",\"H\": \"80925.80\",\"range\": \"157486.50\",\"length\": \"2865.74\",\"svd\": \"2836.67\",\"lag\": \"51.24\",\"vel\": \"25382.39\",\"pvel\": \"23869.79\",\"hres\": \"-25.39\",\"vres\": \"-63.08\",\"ares\": \"89.06\",\"vmag\": \"+1.35\",\"amag\": \"+0.36\"},{\"No\": \"4\",\"statid\": \"UK0021\",\"ign\": \"0\",\"t\": \"0.160664\",\"jd\": \"2460957.499637308531\",\"m1\": \"340.55884\",\"m2\": \"-1.88751\",\"az\": \"219.81574\",\"alt\": \"30.09936\",\"azl\": \"219.83356\",\"altl\": \"30.09137\",\"rao\": \"340.55884\",\"deco\": \"-1.88751\",\"ral\": \"340.54217\",\"decl\": \"-1.88856\",\"X\": \"4072315.14\",\"Y\": \"942378.34\",\"Z\": \"4906797.18\",\"lat\": \"49.760984\",\"lon\": \"-4.706768\",\"H\": \"80039.67\",\"range\": \"156766.30\",\"length\": \"3854.08\",\"svd\": \"3825.00\",\"lag\": \"72.07\",\"vel\": \"24609.99\",\"pvel\": \"24195.55\",\"hres\": \"17.78\",\"vres\": \"44.05\",\"ares\": \"62.50\",\"vmag\": \"+1.39\",\"amag\": \"+0.41\"},{\"No\": \"5\",\"statid\": \"UK0021\",\"ign\": \"0\",\"t\": \"0.200820\",\"jd\": \"2460957.499637773260\",\"m1\": \"340.54777\",\"m2\": \"-2.09156\",\"az\": \"219.73187\",\"alt\": \"29.90836\",\"azl\": \"219.72970\",\"altl\": \"29.90934\",\"rao\": \"340.54777\",\"deco\": \"-2.09156\",\"ral\": \"340.55073\",\"decl\": \"-2.09143\",\"X\": \"4071744.73\",\"Y\": \"942615.04\",\"Z\": \"4906264.02\",\"lat\": \"49.761331\",\"lon\": \"-4.702011\",\"H\": \"79308.18\",\"range\": \"156175.07\",\"length\": \"4669.97\",\"svd\": \"4640.90\",\"lag\": \"-79.44\",\"vel\": \"20318.18\",\"pvel\": \"23734.91\",\"hres\": \"-2.16\",\"vres\": \"-5.36\",\"ares\": \"7.64\",\"vmag\": \"+2.17\",\"amag\": \"+1.20\"},{\"No\": \"0\",\"statid\": \"UK00A1\",\"ign\": \"0\",\"t\": \"0.048597\",\"jd\": \"2460957.499636013526\",\"m1\": \"334.59354\",\"m2\": \"-1.10623\",\"az\": \"226.66049\",\"alt\": \"28.08871\",\"azl\": \"226.66646\",\"altl\": \"28.08634\",\"rao\": \"334.59354\",\"deco\": \"-1.10623\",\"ral\": \"334.58798\",\"decl\": \"-1.10590\",\"X\": \"4074161.75\",\"Y\": \"941612.01\",\"Z\": \"4908523.18\",\"lat\": \"49.759861\",\"lon\": \"-4.722235\",\"H\": \"82407.86\",\"range\": \"170934.89\",\"length\": \"0.00\",\"svd\": \"1183.72\",\"lag\": \"130.62\",\"vel\": \"0.00\",\"pvel\": \"23546.99\",\"hres\": \"3.92\",\"vres\": \"16.79\",\"ares\": \"20.80\",\"vmag\": \"+3.40\",\"amag\": \"+2.24\"},{\"No\": \"1\",\"statid\": \"UK00A1\",\"ign\": \"0\",\"t\": \"0.088721\",\"jd\": \"2460957.499636477791\",\"m1\": \"334.55132\",\"m2\": \"-1.26845\",\"az\": \"226.61828\",\"alt\": \"27.92528\",\"azl\": \"226.59354\",\"altl\": \"27.93507\",\"rao\": \"334.55132\",\"deco\": \"-1.26845\",\"ral\": \"334.57560\",\"decl\": \"-1.26982\",\"X\": \"4073651.32\",\"Y\": \"941823.84\",\"Z\": \"4908046.09\",\"lat\": \"49.760171\",\"lon\": \"-4.717999\",\"H\": \"81753.24\",\"range\": \"170400.56\",\"length\": \"730.09\",\"svd\": \"1913.81\",\"lag\": \"-105.93\",\"vel\": \"18195.92\",\"pvel\": \"23546.99\",\"hres\": \"-16.13\",\"vres\": \"-69.38\",\"ares\": \"86.23\",\"vmag\": \"+2.53\",\"amag\": \"+1.37\"},{\"No\": \"2\",\"statid\": \"UK00A1\",\"ign\": \"0\",\"t\": \"0.128873\",\"jd\": \"2460957.499636942521\",\"m1\": \"334.57329\",\"m2\": \"-1.52926\",\"az\": \"226.46058\",\"alt\": \"27.70381\",\"azl\": \"226.47711\",\"altl\": \"27.69726\",\"rao\": \"334.57329\",\"deco\": \"-1.52926\",\"ral\": \"334.55782\",\"decl\": \"-1.52835\",\"X\": \"4072852.85\",\"Y\": \"942155.20\",\"Z\": \"4907299.77\",\"lat\": \"49.760657\",\"lon\": \"-4.711277\",\"H\": \"80729.24\",\"range\": \"169563.25\",\"length\": \"1872.18\",\"svd\": \"3055.90\",\"lag\": \"68.85\",\"vel\": \"28444.16\",\"pvel\": \"23546.99\",\"hres\": \"10.79\",\"vres\": \"46.21\",\"ares\": \"57.72\",\"vmag\": \"+1.36\",\"amag\": \"+0.21\"},{\"No\": \"3\",\"statid\": \"UK00A1\",\"ign\": \"0\",\"t\": \"0.169021\",\"jd\": \"2460957.499637407251\",\"m1\": \"334.53341\",\"m2\": \"-1.73286\",\"az\": \"226.39504\",\"alt\": \"27.50463\",\"azl\": \"226.38584\",\"altl\": \"27.50827\",\"rao\": \"334.53341\",\"deco\": \"-1.73286\",\"ral\": \"334.54305\",\"decl\": \"-1.73337\",\"X\": \"4072225.13\",\"Y\": \"942415.69\",\"Z\": \"4906713.05\",\"lat\": \"49.761039\",\"lon\": \"-4.706027\",\"H\": \"79924.24\",\"range\": \"168909.09\",\"length\": \"2770.05\",\"svd\": \"3953.77\",\"lag\": \"-0.51\",\"vel\": \"22363.82\",\"pvel\": \"23546.99\",\"hres\": \"-5.98\",\"vres\": \"-25.67\",\"ares\": \"32.19\",\"vmag\": \"+1.69\",\"amag\": \"+0.55\"},{\"No\": \"4\",\"statid\": \"UK00A1\",\"ign\": \"0\",\"t\": \"0.209149\",\"jd\": \"2460957.499637871515\",\"m1\": \"334.52059\",\"m2\": \"-1.92271\",\"az\": \"226.30978\",\"alt\": \"27.33005\",\"azl\": \"226.30189\",\"altl\": \"27.33317\",\"rao\": \"334.52059\",\"deco\": \"-1.92271\",\"ral\": \"334.52912\",\"decl\": \"-1.92315\",\"X\": \"4071648.37\",\"Y\": \"942655.02\",\"Z\": \"4906173.96\",\"lat\": \"49.761390\",\"lon\": \"-4.701215\",\"H\": \"79184.62\",\"range\": \"168310.59\",\"length\": \"3595.01\",\"svd\": \"4778.73\",\"lag\": \"-142.27\",\"vel\": \"20558.44\",\"pvel\": \"22994.40\",\"hres\": \"-5.11\",\"vres\": \"-21.94\",\"ares\": \"27.60\",\"vmag\": \"+3.62\",\"amag\": \"+2.49\"}]}"} \ No newline at end of file diff --git a/archive/lambdas/matchDataApi/tests/station.txt b/archive/lambdas/matchDataApi/tests/station.txt new file mode 100644 index 00000000..ba7f1eba --- /dev/null +++ b/archive/lambdas/matchDataApi/tests/station.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "{\"orbname\": \"20251008_185412.528_UK\"}\n{\"orbname\": \"20251008_203118.448_UK\"}\n{\"orbname\": \"20251008_210602.062_UK\"}\n{\"orbname\": \"20251008_212536.018_UK\"}\n{\"orbname\": \"20251008_212908.235_UK\"}\n{\"orbname\": \"20251008_213329.236_UK\"}\n{\"orbname\": \"20251008_223239.727_UK\"}\n{\"orbname\": \"20251008_223627.952_UK\"}\n{\"orbname\": \"20251008_223914.969_UK\"}\n{\"orbname\": \"20251008_223956.645_UK\"}\n{\"orbname\": \"20251008_224522.617_UK\"}\n{\"orbname\": \"20251008_224806.274_UK\"}\n{\"orbname\": \"20251008_225108.231_UK\"}\n{\"orbname\": \"20251008_231040.812_UK\"}\n{\"orbname\": \"20251008_233417.510_UK\"}\n{\"orbname\": \"20251008_234446.968_UK\"}\n{\"orbname\": \"20251008_234540.266_UK\"}\n{\"orbname\": \"20251008_234750.677_UK\"}\n{\"orbname\": \"20251008_234942.825_UK\"}\n{\"orbname\": \"20251008_235203.045_UK\"}\n"} \ No newline at end of file diff --git a/archive/lambdas/matchDataApi/tests/summary.txt b/archive/lambdas/matchDataApi/tests/summary.txt new file mode 100644 index 00000000..20c43974 --- /dev/null +++ b/archive/lambdas/matchDataApi/tests/summary.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "[{\"_localtime\": \"_20251008_000418\", \"_mjd\": 60956.0, \"_sol\": 194.62, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -2.17033, \"_ra_o\": 34.9729, \"_dc_o\": 16.2578, \"_ra_t\": 34.9481, \"_dc_t\": 15.2521, \"_elng\": 37.7225, \"_elat\": 1.23435, \"_vo\": 37.6021, \"_vi\": 37.6021, \"_vg\": 35.9258, \"_vs\": 37.0304, \"_a\": 2.19417, \"_q\": 0.143704, \"_e\": 0.934507, \"_p\": 3.25017, \"_peri\": 320.56, \"_node\": 194.629, \"_incl\": 2.83127, \"_stream\": \"ZPI\", \"_mag\": -0.35, \"_dur\": 0.923679, \"_lng1\": -3.59353, \"_lat1\": 52.6593, \"_H1\": 100.673, \"_lng2\": -3.75305, \"_lat2\": 52.8116, \"_H2\": 76.5111, \"_LD21\": 29.9507, \"_az1r\": 148.202, \"_ev1r\": 50.1599, \"_Nts\": 91.0, \"_Nos\": 5.0, \"_leap\": 94.5055, \"_tme\": 1.0, \"_dt\": 0.000143, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_000418.973_UK\", \"iau\": 706, \"name\": \"zeta Piscids \", \"mass\": 0.000453, \"pi\": 155.189, \"Q\": 4.24464, \"true_anom\": 219.431, \"EA\": -54.3559, \"MA\": 349.156, \"Tj\": 2.83354, \"T\": 3.25017, \"last_peri\": \"2022-08-13\", \"jacchia1\": 0.0004, \"Jacchia2\": 14.8613, \"numstats\": 5, \"stations\": \"UK001Z;UK0031;UK009D;UK009S;UK00BA;\"},\n{\"_localtime\": \"_20251008_001033\", \"_mjd\": 60956.0, \"_sol\": 194.624, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.323047, \"_ra_o\": 15.0982, \"_dc_o\": 14.1163, \"_ra_t\": 14.7753, \"_dc_t\": 13.2099, \"_elng\": 18.7034, \"_elat\": 6.36782, \"_vo\": 39.2799, \"_vi\": 39.2799, \"_vg\": 37.6775, \"_vs\": 46.7485, \"_a\": -2.16449, \"_q\": 0.388997, \"_e\": 1.17972, \"_p\": 0.0, \"_peri\": 277.375, \"_node\": 194.627, \"_incl\": 8.76263, \"_stream\": \"spo\", \"_mag\": 1.02, \"_dur\": 0.41818, \"_lng1\": -5.47711, \"_lat1\": 49.9784, \"_H1\": 99.1036, \"_lng2\": -5.48266, \"_lat2\": 50.0596, \"_H2\": 86.4447, \"_LD21\": 13.4246, \"_az1r\": 178.266, \"_ev1r\": 54.1279, \"_Nts\": 16.0, \"_Nos\": 2.0, \"_leap\": 87.5, \"_tme\": 1.0, \"_dt\": 0.00237, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_001033.396_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.5e-05, \"pi\": 112.002, \"Q\": -4.71797, \"true_anom\": 262.623, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -1.60653, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.018528, \"Jacchia2\": 25.4381, \"numstats\": 2, \"stations\": \"UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_002024\", \"_mjd\": 60956.0, \"_sol\": 194.631, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -2.03309, \"_ra_o\": 37.8186, \"_dc_o\": 13.6702, \"_ra_t\": 37.8198, \"_dc_t\": 12.6387, \"_elng\": 39.5259, \"_elat\": -2.13385, \"_vo\": 38.3158, \"_vi\": 38.3158, \"_vg\": 36.6684, \"_vs\": 36.6878, \"_a\": 2.06515, \"_q\": 0.1207, \"_e\": 0.941554, \"_p\": 2.96774, \"_peri\": 144.394, \"_node\": 14.6274, \"_incl\": 5.42007, \"_stream\": \"spo\", \"_mag\": 0.21, \"_dur\": 0.244955, \"_lng1\": -6.83915, \"_lat1\": 52.3352, \"_H1\": 88.73, \"_lng2\": -6.88845, \"_lat2\": 52.3798, \"_H2\": 82.1943, \"_LD21\": 8.76191, \"_az1r\": 146.491, \"_ev1r\": 47.3056, \"_Nts\": 13.0, \"_Nos\": 2.0, \"_leap\": 84.6154, \"_tme\": 1.0, \"_dt\": 0.000433, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_002024.548_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000188, \"pi\": 159.021, \"Q\": 4.00959, \"true_anom\": 215.61, \"EA\": -56.7585, \"MA\": 348.361, \"Tj\": 2.94255, \"T\": 2.96774, \"last_peri\": \"2022-11-24\", \"jacchia1\": 24.6777, \"Jacchia2\": 12.8497, \"numstats\": 2, \"stations\": \"UK009D;UK00C6;\"},\n{\"_localtime\": \"_20251008_004135\", \"_mjd\": 60956.0, \"_sol\": 194.645, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -1.14536, \"_ra_o\": 130.019, \"_dc_o\": 45.1176, \"_ra_t\": 130.067, \"_dc_t\": 44.8186, \"_elng\": 120.394, \"_elat\": 25.5176, \"_vo\": 65.5461, \"_vi\": 65.5461, \"_vg\": 64.6004, \"_vs\": 41.2602, \"_a\": 12.1242, \"_q\": 0.856041, \"_e\": 0.929394, \"_p\": 42.2164, \"_peri\": 134.625, \"_node\": 194.646, \"_incl\": 133.402, \"_stream\": \"spo\", \"_mag\": 0.05, \"_dur\": 0.455191, \"_lng1\": -3.17759, \"_lat1\": 51.8663, \"_H1\": 112.118, \"_lng2\": -3.44391, \"_lat2\": 51.7232, \"_H2\": 100.179, \"_LD21\": 28.8113, \"_az1r\": 49.0235, \"_ev1r\": 25.9785, \"_Nts\": 84.0, \"_Nos\": 8.0, \"_leap\": 90.4762, \"_tme\": 1.0, \"_dt\": 0.002643, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_004135.691_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.8e-05, \"pi\": 329.271, \"Q\": 23.3924, \"true_anom\": 45.3747, \"EA\": 9.14465, \"MA\": 0.681703, \"Tj\": -0.344922, \"T\": 42.2164, \"last_peri\": \"2025-09-08\", \"jacchia1\": 1e-05, \"Jacchia2\": 40.2883, \"numstats\": 8, \"stations\": \"UK001Z;UK0020;UK003Z;UK007A;UK009D;UK009G;UK009S;UK00B0;\"},\n{\"_localtime\": \"_20251008_004303\", \"_mjd\": 60956.0, \"_sol\": 194.646, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -2.92009, \"_ra_o\": 2.88071, \"_dc_o\": 28.1366, \"_ra_t\": 1.99379, \"_dc_t\": 26.9004, \"_elng\": 13.1625, \"_elat\": 23.7515, \"_vo\": 28.3008, \"_vi\": 28.3008, \"_vg\": 26.025, \"_vs\": 40.3145, \"_a\": 5.90172, \"_q\": 0.61415, \"_e\": 0.895937, \"_p\": 14.3373, \"_peri\": 259.37, \"_node\": 194.648, \"_incl\": 19.0247, \"_stream\": \"spo\", \"_mag\": -0.51, \"_dur\": 1.0441, \"_lng1\": -6.23608, \"_lat1\": 52.7301, \"_H1\": 83.1667, \"_lng2\": -6.12594, \"_lat2\": 52.8239, \"_H2\": 58.708, \"_LD21\": 35.7475, \"_az1r\": 216.471, \"_ev1r\": 61.8258, \"_Nts\": 33.0, \"_Nos\": 2.0, \"_leap\": 93.9394, \"_tme\": 1.0, \"_dt\": 0.002981, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_004303.341_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.004841, \"pi\": 94.018, \"Q\": 11.1893, \"true_anom\": 280.629, \"EA\": -22.0025, \"MA\": 357.229, \"Tj\": 1.77617, \"T\": 14.3373, \"last_peri\": \"2011-07-17\", \"jacchia1\": 18.9564, \"Jacchia2\": 4.2246, \"numstats\": 2, \"stations\": \"UK007A;UK009D;\"},\n{\"_localtime\": \"_20251008_004521\", \"_mjd\": 60956.0, \"_sol\": 194.648, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -0.059918, \"_ra_o\": 65.4411, \"_dc_o\": -4.81863, \"_ra_t\": 65.4596, \"_dc_t\": -5.55271, \"_elng\": 62.4438, \"_elat\": -26.6733, \"_vo\": 55.6196, \"_vi\": 55.6196, \"_vg\": 54.5014, \"_vs\": 41.7233, \"_a\": 25.5342, \"_q\": 0.361593, \"_e\": 0.985839, \"_p\": 129.028, \"_peri\": 106.586, \"_node\": 14.6488, \"_incl\": 104.41, \"_stream\": \"XIE\", \"_mag\": 0.64, \"_dur\": 0.957725, \"_lng1\": -3.19686, \"_lat1\": 51.4772, \"_H1\": 107.658, \"_lng2\": -3.43576, \"_lat2\": 51.6245, \"_H2\": 97.1986, \"_LD21\": 26.8744, \"_az1r\": 135.036, \"_ev1r\": 24.0341, \"_Nts\": 66.0, \"_Nos\": 9.0, \"_leap\": 86.3636, \"_tme\": 1.0, \"_dt\": 0.000263, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_004521.255_UK\", \"iau\": 825, \"name\": \"xi Eridanids \", \"mass\": 1e-05, \"pi\": 121.234, \"Q\": 50.7067, \"true_anom\": 253.415, \"EA\": -12.9238, \"MA\": 359.709, \"Tj\": 0.018936, \"T\": 129.028, \"last_peri\": \"1896-11-02\", \"jacchia1\": 0.536709, \"Jacchia2\": 13.8478, \"numstats\": 9, \"stations\": \"UK000S;UK001Z;UK0020;UK007A;UK009D;UK009G;UK009S;UK00B0;UK00CQ;\"},\n{\"_localtime\": \"_20251008_005128\", \"_mjd\": 60956.0, \"_sol\": 194.652, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.017697, \"_ra_o\": 329.056, \"_dc_o\": 14.3854, \"_ra_t\": 321.099, \"_dc_t\": 4.27266, \"_elng\": 324.925, \"_elat\": 18.5082, \"_vo\": 14.9277, \"_vi\": 14.9277, \"_vg\": 9.96187, \"_vs\": 37.7143, \"_a\": 2.51162, \"_q\": 0.959086, \"_e\": 0.618141, \"_p\": 3.98045, \"_peri\": 206.518, \"_node\": 194.656, \"_incl\": 4.88935, \"_stream\": \"spo\", \"_mag\": 1.26, \"_dur\": 0.659996, \"_lng1\": -5.13703, \"_lat1\": 51.4729, \"_H1\": 84.6966, \"_lng2\": -5.03329, \"_lat2\": 51.4956, \"_H2\": 79.6876, \"_LD21\": 9.36388, \"_az1r\": 251.113, \"_ev1r\": 32.3626, \"_Nts\": 32.0, \"_Nos\": 2.0, \"_leap\": 93.75, \"_tme\": 1.0, \"_dt\": 0.03229, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_005128.925_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000283, \"pi\": 41.174, \"Q\": 4.06416, \"true_anom\": 333.479, \"EA\": -13.0617, \"MA\": 354.943, \"Tj\": 3.16026, \"T\": 3.98045, \"last_peri\": \"2021-11-04\", \"jacchia1\": 0.564249, \"Jacchia2\": 10.2961, \"numstats\": 2, \"stations\": \"UK0024;UK00A1;\"},\n{\"_localtime\": \"_20251008_005349\", \"_mjd\": 60956.0, \"_sol\": 194.654, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.879673, \"_ra_o\": 95.1604, \"_dc_o\": 30.4331, \"_ra_t\": 95.0936, \"_dc_t\": 30.1591, \"_elng\": 94.4339, \"_elat\": 6.79979, \"_vo\": 66.1343, \"_vi\": 66.1343, \"_vg\": 65.1952, \"_vs\": 36.7923, \"_a\": 2.10267, \"_q\": 0.854803, \"_e\": 0.593468, \"_p\": 3.049, \"_peri\": 232.275, \"_node\": 194.654, \"_incl\": 167.175, \"_stream\": \"spo\", \"_mag\": -0.27, \"_dur\": 0.166649, \"_lng1\": -3.77987, \"_lat1\": 51.4925, \"_H1\": 98.0627, \"_lng2\": -3.89748, \"_lat2\": 51.4862, \"_H2\": 91.9855, \"_LD21\": 10.2627, \"_az1r\": 85.0999, \"_ev1r\": 36.3386, \"_Nts\": 14.0, \"_Nos\": 3.0, \"_leap\": 78.5714, \"_tme\": 1.0, \"_dt\": 0.0, \"dtstamp\": 1759880000.0, \"orbname\": \"20251008_005349.606_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.8e-05, \"pi\": 66.9284, \"Q\": 3.35054, \"true_anom\": 307.724, \"EA\": -27.8416, \"MA\": 348.039, \"Tj\": 1.47741, \"T\": 3.049, \"last_peri\": \"2022-10-27\", \"jacchia1\": 0.0, \"Jacchia2\": 196.941, \"numstats\": 3, \"stations\": \"UK0020;UK007A;UK009D;\"},\n{\"_localtime\": \"_20251008_005903\", \"_mjd\": 60956.0, \"_sol\": 194.657, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -1.32612, \"_ra_o\": 126.13, \"_dc_o\": 54.6529, \"_ra_t\": 126.35, \"_dc_t\": 54.3656, \"_elng\": 114.613, \"_elat\": 33.9903, \"_vo\": 58.6513, \"_vi\": 58.6513, \"_vg\": 57.5914, \"_vs\": 37.3408, \"_a\": 2.3269, \"_q\": 0.941104, \"_e\": 0.595555, \"_p\": 3.5495, \"_peri\": 147.575, \"_node\": 194.658, \"_incl\": 118.168, \"_stream\": \"spo\", \"_mag\": 1.14, \"_dur\": 0.282028, \"_lng1\": -7.25238, \"_lat1\": 51.0131, \"_H1\": 105.478, \"_lng2\": -7.38338, \"_lat2\": 50.9255, \"_H2\": 96.3286, \"_LD21\": 16.3564, \"_az1r\": 43.1502, \"_ev1r\": 34.0711, \"_Nts\": 15.0, \"_Nos\": 2.0, \"_leap\": 86.6667, \"_tme\": 1.0, \"_dt\": 0.009488, \"dtstamp\": 1759890000.0, \"orbname\": \"20251008_005903.321_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.1e-05, \"pi\": 342.233, \"Q\": 3.7127, \"true_anom\": 32.4249, \"EA\": 16.6568, \"MA\": 6.8759, \"Tj\": 1.72943, \"T\": 3.5495, \"last_peri\": \"2025-09-13\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_010622\", \"_mjd\": 60956.0, \"_sol\": 194.662, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.111152, \"_ra_o\": 91.3177, \"_dc_o\": 13.5139, \"_ra_t\": 91.2309, \"_dc_t\": 13.1875, \"_elng\": 91.2178, \"_elat\": -10.245, \"_vo\": 69.8614, \"_vi\": 69.8614, \"_vg\": 68.9752, \"_vs\": 41.5642, \"_a\": 18.4818, \"_q\": 0.84237, \"_e\": 0.954422, \"_p\": 79.4543, \"_peri\": 47.2736, \"_node\": 14.6638, \"_incl\": 161.295, \"_stream\": \"spo\", \"_mag\": 1.12, \"_dur\": 0.317668, \"_lng1\": -1.84979, \"_lat1\": 50.5382, \"_H1\": 113.596, \"_lng2\": -2.11001, \"_lat2\": 50.5832, \"_H2\": 102.683, \"_LD21\": 23.2182, \"_az1r\": 105.38, \"_ev1r\": 29.5166, \"_Nts\": 21.0, \"_Nos\": 4.0, \"_leap\": 80.9524, \"_tme\": 1.0, \"_dt\": 0.000281, \"dtstamp\": 1759890000.0, \"orbname\": \"20251008_010622.104_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 61.9374, \"Q\": 36.1212, \"true_anom\": 312.727, \"EA\": -7.64721, \"MA\": 359.63, \"Tj\": -0.783889, \"T\": 79.4543, \"last_peri\": \"1946-05-24\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"UK007B;UK008Q;UK009S;UK00AK;\"},\n{\"_localtime\": \"_20251008_021041\", \"_mjd\": 60956.1, \"_sol\": 194.706, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.121655, \"_ra_o\": 99.6956, \"_dc_o\": 5.43916, \"_ra_t\": 99.5767, \"_dc_t\": 5.11352, \"_elng\": 100.034, \"_elat\": -17.9913, \"_vo\": 72.116, \"_vi\": 72.116, \"_vg\": 71.257, \"_vs\": 44.1144, \"_a\": -5.20409, \"_q\": 0.982129, \"_e\": 1.18872, \"_p\": 0.0, \"_peri\": 14.4236, \"_node\": 14.7079, \"_incl\": 149.764, \"_stream\": \"spo\", \"_mag\": 1.6, \"_dur\": 0.243155, \"_lng1\": -0.465737, \"_lat1\": 52.1153, \"_H1\": 107.946, \"_lng2\": -0.657808, \"_lat2\": 52.1827, \"_H2\": 99.9559, \"_LD21\": 17.3104, \"_az1r\": 119.877, \"_ev1r\": 27.6147, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.000676, \"dtstamp\": 1759890000.0, \"orbname\": \"20251008_021041.984_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 8e-06, \"pi\": 29.1315, \"Q\": -11.3903, \"true_anom\": 345.577, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.11055, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 6.62197, \"Jacchia2\": 18.7686, \"numstats\": 2, \"stations\": \"UK000S;UK005M;\"},\n{\"_localtime\": \"_20251008_050816\", \"_mjd\": 60956.2, \"_sol\": 194.828, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -1.64622, \"_ra_o\": 78.6165, \"_dc_o\": -27.0681, \"_ra_t\": 78.0726, \"_dc_t\": -28.4953, \"_elng\": 73.1357, \"_elat\": -51.237, \"_vo\": 46.6193, \"_vi\": 46.6193, \"_vg\": 45.2708, \"_vs\": 38.9194, \"_a\": 3.39914, \"_q\": 0.817464, \"_e\": 0.759509, \"_p\": 6.26692, \"_peri\": 54.6421, \"_node\": 14.8301, \"_incl\": 80.867, \"_stream\": \"spo\", \"_mag\": -1.93, \"_dur\": 0.464053, \"_lng1\": 1.14535, \"_lat1\": 52.1775, \"_H1\": 68.4639, \"_lng2\": 1.2223, \"_lat2\": 52.3576, \"_H2\": 65.0203, \"_LD21\": 19.4222, \"_az1r\": 195.025, \"_ev1r\": 9.41551, \"_Nts\": 22.0, \"_Nos\": 2.0, \"_leap\": 90.9091, \"_tme\": 1.0, \"_dt\": 0.047077, \"dtstamp\": 1759900000.0, \"orbname\": \"20251008_050816.651_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000109, \"pi\": 69.4722, \"Q\": 5.98082, \"true_anom\": 305.358, \"EA\": -21.6255, \"MA\": 354.412, \"Tj\": 1.69794, \"T\": 6.26692, \"last_peri\": \"2019-08-07\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK006P;UK009M;\"},\n{\"_localtime\": \"_20251008_184728\", \"_mjd\": 60956.8, \"_sol\": 195.389, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.799462, \"_ra_o\": 273.244, \"_dc_o\": 51.0295, \"_ra_t\": 271.235, \"_dc_t\": 50.8491, \"_elng\": 272.879, \"_elat\": 74.2745, \"_vo\": 21.3494, \"_vi\": 21.3494, \"_vg\": 18.2365, \"_vs\": 38.8233, \"_a\": 3.30101, \"_q\": 0.998752, \"_e\": 0.697441, \"_p\": 5.99752, \"_peri\": 177.918, \"_node\": 195.391, \"_incl\": 26.889, \"_stream\": \"spo\", \"_mag\": 1.54, \"_dur\": 0.899299, \"_lng1\": -2.50329, \"_lat1\": 50.8485, \"_H1\": 103.923, \"_lng2\": -2.44602, \"_lat2\": 50.8417, \"_H2\": 87.3142, \"_LD21\": 16.8689, \"_az1r\": 279.965, \"_ev1r\": 75.0826, \"_Nts\": 43.0, \"_Nos\": 2.0, \"_leap\": 95.3488, \"_tme\": 1.0, \"_dt\": 0.00096, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_184728.564_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000105, \"pi\": 13.3088, \"Q\": 5.60328, \"true_anom\": 2.07954, \"EA\": 0.87804, \"MA\": 0.265683, \"Tj\": 2.59465, \"T\": 5.99752, \"last_peri\": \"2025-10-07\", \"jacchia1\": 25.4334, \"Jacchia2\": 4.76258, \"numstats\": 2, \"stations\": \"UK000T;UK003Z;\"},\n{\"_localtime\": \"_20251008_185133\", \"_mjd\": 60956.8, \"_sol\": 195.392, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 1.83738, \"_ra_o\": 250.052, \"_dc_o\": 5.80627, \"_ra_t\": 242.696, \"_dc_t\": -6.1421, \"_elng\": 241.872, \"_elat\": 14.6694, \"_vo\": 14.652, \"_vi\": 14.652, \"_vg\": 9.54828, \"_vs\": 37.043, \"_a\": 2.19691, \"_q\": 0.963995, \"_e\": 0.561204, \"_p\": 3.25625, \"_peri\": 154.469, \"_node\": 195.407, \"_incl\": 3.79462, \"_stream\": \"spo\", \"_mag\": 1.74, \"_dur\": 0.66341, \"_lng1\": -4.36045, \"_lat1\": 52.8032, \"_H1\": 89.5647, \"_lng2\": -4.26457, \"_lat2\": 52.8438, \"_H2\": 84.8959, \"_LD21\": 8.95351, \"_az1r\": 235.769, \"_ev1r\": 29.8272, \"_Nts\": 60.0, \"_Nos\": 4.0, \"_leap\": 93.3333, \"_tme\": 1.0, \"_dt\": 0.004463, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_185133.618_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.5e-05, \"pi\": 349.876, \"Q\": 3.42982, \"true_anom\": 25.5158, \"EA\": 13.6899, \"MA\": 6.07996, \"Tj\": 3.44207, \"T\": 3.25625, \"last_peri\": \"2025-09-18\", \"jacchia1\": 0.001713, \"Jacchia2\": 18.3366, \"numstats\": 4, \"stations\": \"UK0042;UK004M;UK00C9;UK00D9;\"},\n{\"_localtime\": \"_20251008_185412\", \"_mjd\": 60956.8, \"_sol\": 195.394, \"_ID1\": \"_(UNIFIED_16)\", \"_amag\": 0.285486, \"_ra_o\": 309.986, \"_dc_o\": 51.4325, \"_ra_t\": 310.729, \"_dc_t\": 51.2569, \"_elng\": 342.993, \"_elat\": 64.7216, \"_vo\": 21.2528, \"_vi\": 21.2528, \"_vg\": 18.1175, \"_vs\": 38.3389, \"_a\": 2.89794, \"_q\": 0.957133, \"_e\": 0.66972, \"_p\": 4.93328, \"_peri\": 206.43, \"_node\": 195.395, \"_incl\": 25.768, \"_stream\": \"spo\", \"_mag\": 0.6, \"_dur\": 0.497213, \"_lng1\": -3.16055, \"_lat1\": 51.9942, \"_H1\": 92.2857, \"_lng2\": -3.17793, \"_lat2\": 51.9942, \"_H2\": 83.8817, \"_LD21\": 9.77114, \"_az1r\": 89.6375, \"_ev1r\": 82.5923, \"_Nts\": 161.0, \"_Nos\": 16.0, \"_leap\": 90.0621, \"_tme\": 1.0, \"_dt\": 0.000595, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_185412.528_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 9.7e-05, \"pi\": 41.8251, \"Q\": 4.83876, \"true_anom\": 333.568, \"EA\": -11.9255, \"MA\": 356.004, \"Tj\": 2.79394, \"T\": 4.93328, \"last_peri\": \"2020-11-21\", \"jacchia1\": 0.000464, \"Jacchia2\": 30.07, \"numstats\": 16, \"stations\": \"UK0006;UK000S;UK001L;UK001Z;UK0029;UK003Z;UK007A;UK007P;UK0089;UK008J;UK009D;UK009G;UK00B0;UK00BA;UK00CQ;UK00DA;\"},\n{\"_localtime\": \"_20251008_185546\", \"_mjd\": 60956.8, \"_sol\": 195.395, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -1.20927, \"_ra_o\": 257.521, \"_dc_o\": 84.1055, \"_ra_t\": 250.319, \"_dc_t\": 84.7519, \"_elng\": 95.5492, \"_elat\": 71.4242, \"_vo\": 34.4064, \"_vi\": 34.4064, \"_vg\": 32.5642, \"_vs\": 36.624, \"_a\": 2.0409, \"_q\": 0.993382, \"_e\": 0.513263, \"_p\": 2.91564, \"_peri\": 190.468, \"_node\": 195.395, \"_incl\": 57.6196, \"_stream\": \"spo\", \"_mag\": -0.14, \"_dur\": 0.53182, \"_lng1\": -0.096574, \"_lat1\": 50.7191, \"_H1\": 95.1395, \"_lng2\": -0.082251, \"_lat2\": 50.6355, \"_H2\": 81.7095, \"_LD21\": 17.6667, \"_az1r\": 352.899, \"_ev1r\": 54.7664, \"_Nts\": 77.0, \"_Nos\": 9.0, \"_leap\": 88.3117, \"_tme\": 1.0, \"_dt\": 0.000416, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_185546.471_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000102, \"pi\": 25.863, \"Q\": 3.08842, \"true_anom\": 349.531, \"EA\": -5.94871, \"MA\": 357.099, \"Tj\": 3.12563, \"T\": 2.91564, \"last_peri\": \"2022-11-17\", \"jacchia1\": 0.013016, \"Jacchia2\": 20.0292, \"numstats\": 9, \"stations\": \"UK002Q;UK003D;UK003N;UK0078;UK007H;UK007R;UK0092;UK00A6;UK00AK;\"},\n{\"_localtime\": \"_20251008_185753\", \"_mjd\": 60956.8, \"_sol\": 195.396, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": -1.12387, \"_ra_o\": 296.21, \"_dc_o\": 78.752, \"_ra_t\": 295.902, \"_dc_t\": 79.5369, \"_elng\": 71.7984, \"_elat\": 75.2878, \"_vo\": 32.6175, \"_vi\": 32.6175, \"_vg\": 30.6694, \"_vs\": 38.0322, \"_a\": 2.69202, \"_q\": 0.978522, \"_e\": 0.63651, \"_p\": 4.4169, \"_peri\": 198.693, \"_node\": 195.397, \"_incl\": 51.8428, \"_stream\": \"spo\", \"_mag\": 0.19, \"_dur\": 0.765804, \"_lng1\": 0.149108, \"_lat1\": 51.7047, \"_H1\": 98.2761, \"_lng2\": 0.152724, \"_lat2\": 51.6157, \"_H2\": 78.6863, \"_LD21\": 24.8403, \"_az1r\": 357.406, \"_ev1r\": 62.8789, \"_Nts\": 75.0, \"_Nos\": 6.0, \"_leap\": 92.0, \"_tme\": 1.0, \"_dt\": 0.000148, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_185753.409_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000263, \"pi\": 34.0899, \"Q\": 4.40551, \"true_anom\": 341.305, \"EA\": -8.87176, \"MA\": 356.753, \"Tj\": 2.61864, \"T\": 4.4169, \"last_peri\": \"2021-05-24\", \"jacchia1\": 0.03586, \"Jacchia2\": 11.4736, \"numstats\": 6, \"stations\": \"UK0034;UK0035;UK008F;UK0098;UK00A0;UK00AN;\"},\n{\"_localtime\": \"_20251008_185915\", \"_mjd\": 60956.8, \"_sol\": 195.397, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.48883, \"_ra_o\": 323.434, \"_dc_o\": 23.3666, \"_ra_t\": 325.69, \"_dc_t\": 18.6651, \"_elng\": 335.135, \"_elat\": 30.4003, \"_vo\": 16.6048, \"_vi\": 16.6048, \"_vg\": 12.3381, \"_vs\": 38.1862, \"_a\": 2.79139, \"_q\": 0.935181, \"_e\": 0.664977, \"_p\": 4.66371, \"_peri\": 212.854, \"_node\": 195.403, \"_incl\": 9.66502, \"_stream\": \"spo\", \"_mag\": 2.14, \"_dur\": 0.960048, \"_lng1\": -3.99162, \"_lat1\": 51.6636, \"_H1\": 90.3756, \"_lng2\": -4.08315, \"_lat2\": 51.7207, \"_H2\": 77.2966, \"_LD21\": 15.411, \"_az1r\": 136.417, \"_ev1r\": 55.8293, \"_Nts\": 52.0, \"_Nos\": 3.0, \"_leap\": 94.2308, \"_tme\": 1.0, \"_dt\": 0.003067, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_185915.805_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000103, \"pi\": 48.2564, \"Q\": 4.6476, \"true_anom\": 327.14, \"EA\": -15.0703, \"MA\": 354.836, \"Tj\": 2.94283, \"T\": 4.66371, \"last_peri\": \"2021-03-04\", \"jacchia1\": -0.018392, \"Jacchia2\": 9.98094, \"numstats\": 3, \"stations\": \"UK007A;UK0089;UK009D;\"},\n{\"_localtime\": \"_20251008_190019\", \"_mjd\": 60956.8, \"_sol\": 195.398, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.54487, \"_ra_o\": 266.596, \"_dc_o\": 56.2767, \"_ra_t\": 264.221, \"_dc_t\": 56.1148, \"_elng\": 252.563, \"_elat\": 79.2022, \"_vo\": 23.2518, \"_vi\": 23.2518, \"_vg\": 20.4292, \"_vs\": 38.6671, \"_a\": 3.15874, \"_q\": 0.996959, \"_e\": 0.684381, \"_p\": 5.61399, \"_peri\": 174.22, \"_node\": 195.399, \"_incl\": 31.2973, \"_stream\": \"DRA\", \"_mag\": 2.63, \"_dur\": 0.602216, \"_lng1\": -2.14051, \"_lat1\": 53.9821, \"_H1\": 101.4, \"_lng2\": -2.08338, \"_lat2\": 53.9688, \"_H2\": 89.3421, \"_LD21\": 12.7844, \"_az1r\": 290.62, \"_ev1r\": 70.6251, \"_Nts\": 28.0, \"_Nos\": 2.0, \"_leap\": 92.8571, \"_tme\": 1.0, \"_dt\": 0.000319, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_190019.072_UK\", \"iau\": 9, \"name\": \"October Draconids \", \"mass\": 3.8e-05, \"pi\": 9.61962, \"Q\": 5.32052, \"true_anom\": 5.77767, \"EA\": 2.50273, \"MA\": 0.790454, \"Tj\": 2.61834, \"T\": 5.61399, \"last_peri\": \"2025-10-04\", \"jacchia1\": 9.25883, \"Jacchia2\": 7.44789, \"numstats\": 2, \"stations\": \"UK002Z;UK00AM;\"},\n{\"_localtime\": \"_20251008_190524\", \"_mjd\": 60956.8, \"_sol\": 195.402, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.533796, \"_ra_o\": 4.01614, \"_dc_o\": 23.4565, \"_ra_t\": 6.1035, \"_dc_t\": 20.8572, \"_elng\": 14.0642, \"_elat\": 16.6871, \"_vo\": 24.3759, \"_vi\": 24.3759, \"_vg\": 21.6939, \"_vs\": 37.524, \"_a\": 2.41107, \"_q\": 0.616466, \"_e\": 0.744319, \"_p\": 3.74383, \"_peri\": 264.106, \"_node\": 195.406, \"_incl\": 11.628, \"_stream\": \"spo\", \"_mag\": 0.87, \"_dur\": 0.361824, \"_lng1\": 0.391008, \"_lat1\": 51.1324, \"_H1\": 86.3091, \"_lng2\": 0.296455, \"_lat2\": 51.1406, \"_H2\": 81.3019, \"_LD21\": 8.33399, \"_az1r\": 98.0263, \"_ev1r\": 36.954, \"_Nts\": 18.0, \"_Nos\": 2.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.004418, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_190524.632_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6.8e-05, \"pi\": 99.5121, \"Q\": 4.20568, \"true_anom\": 275.889, \"EA\": -38.1097, \"MA\": 348.21, \"Tj\": 3.04894, \"T\": 3.74383, \"last_peri\": \"2022-02-24\", \"jacchia1\": 0.024624, \"Jacchia2\": 25.118, \"numstats\": 2, \"stations\": \"UK005U;UK007H;\"},\n{\"_localtime\": \"_20251008_190534\", \"_mjd\": 60956.8, \"_sol\": 195.402, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -1.90746, \"_ra_o\": 81.3858, \"_dc_o\": 72.824, \"_ra_t\": 81.547, \"_dc_t\": 72.2772, \"_elng\": 86.0926, \"_elat\": 48.9541, \"_vo\": 52.9422, \"_vi\": 52.9422, \"_vg\": 51.766, \"_vs\": 40.8318, \"_a\": 8.15653, \"_q\": 0.911327, \"_e\": 0.88827, \"_p\": 23.2948, \"_peri\": 215.569, \"_node\": 195.401, \"_incl\": 93.3478, \"_stream\": \"spo\", \"_mag\": 0.1, \"_dur\": 0.488045, \"_lng1\": -3.71458, \"_lat1\": 54.7942, \"_H1\": 108.048, \"_lng2\": -3.78257, \"_lat2\": 54.6417, \"_H2\": 92.9533, \"_LD21\": 25.9267, \"_az1r\": 14.1189, \"_ev1r\": 40.4229, \"_Nts\": 67.0, \"_Nos\": 7.0, \"_leap\": 89.5522, \"_tme\": 1.0, \"_dt\": 0.001805, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_190534.668_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000149, \"pi\": 50.9705, \"Q\": 15.4017, \"true_anom\": 324.43, \"EA\": -8.92344, \"MA\": 358.971, \"Tj\": 0.57089, \"T\": 23.2948, \"last_peri\": \"2002-07-17\", \"jacchia1\": 0.003811, \"Jacchia2\": 24.6246, \"numstats\": 7, \"stations\": \"UK002Z;UK006T;UK0083;UK00AM;UK00B0;UK00DE;UK00DF;\"},\n{\"_localtime\": \"_20251008_190712\", \"_mjd\": 60956.8, \"_sol\": 195.403, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -1.33077, \"_ra_o\": 99.3705, \"_dc_o\": 52.6553, \"_ra_t\": 99.1477, \"_dc_t\": 52.0867, \"_elng\": 96.4037, \"_elat\": 28.8522, \"_vo\": 64.5798, \"_vi\": 64.5798, \"_vg\": 63.6186, \"_vs\": 40.7965, \"_a\": 7.94647, \"_q\": 0.944691, \"_e\": 0.881118, \"_p\": 22.4007, \"_peri\": 207.883, \"_node\": 195.402, \"_incl\": 129.423, \"_stream\": \"spo\", \"_mag\": -0.03, \"_dur\": 0.62721, \"_lng1\": 2.18184, \"_lat1\": 53.6736, \"_H1\": 105.42, \"_lng2\": 2.00855, \"_lat2\": 53.3408, \"_H2\": 92.2151, \"_LD21\": 36.5559, \"_az1r\": 17.073, \"_ev1r\": 18.7311, \"_Nts\": 39.0, \"_Nos\": 4.0, \"_leap\": 89.7436, \"_tme\": 1.0, \"_dt\": 0.009625, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_190712.595_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.1e-05, \"pi\": 43.2846, \"Q\": 14.9482, \"true_anom\": 332.116, \"EA\": -7.14232, \"MA\": 359.135, \"Tj\": -0.08725, \"T\": 22.4007, \"last_peri\": \"2003-06-04\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"UK002K;UK008F;UK009M;UK00A0;\"},\n{\"_localtime\": \"_20251008_190712\", \"_mjd\": 60956.8, \"_sol\": 195.403, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.933936, \"_ra_o\": 264.283, \"_dc_o\": 57.3509, \"_ra_t\": 262.058, \"_dc_t\": 57.41, \"_elng\": 244.254, \"_elat\": 80.1351, \"_vo\": 25.5253, \"_vi\": 25.5253, \"_vg\": 22.9815, \"_vs\": 39.881, \"_a\": 4.78236, \"_q\": 0.995888, \"_e\": 0.791758, \"_p\": 10.4584, \"_peri\": 173.17, \"_node\": 195.404, \"_incl\": 34.6513, \"_stream\": \"spo\", \"_mag\": 1.28, \"_dur\": 0.28054, \"_lng1\": -4.87468, \"_lat1\": 50.842, \"_H1\": 95.2191, \"_lng2\": -4.84933, \"_lat2\": 50.8317, \"_H2\": 89.5637, \"_LD21\": 5.98705, \"_az1r\": 301.397, \"_ev1r\": 68.5717, \"_Nts\": 18.0, \"_Nos\": 3.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 0.004023, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_190712.932_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.5e-05, \"pi\": 8.57328, \"Q\": 8.56883, \"true_anom\": 6.82858, \"EA\": 2.3304, \"MA\": 0.485795, \"Tj\": 2.0516, \"T\": 10.4584, \"last_peri\": \"2025-10-03\", \"jacchia1\": 0.013239, \"Jacchia2\": 39.6428, \"numstats\": 3, \"stations\": \"UK001K;UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_190805\", \"_mjd\": 60956.8, \"_sol\": 195.403, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -0.578244, \"_ra_o\": 35.4297, \"_dc_o\": 78.9393, \"_ra_t\": 37.766, \"_dc_t\": 78.6073, \"_elng\": 72.6857, \"_elat\": 58.353, \"_vo\": 46.4437, \"_vi\": 46.4437, \"_vg\": 45.0986, \"_vs\": 41.8128, \"_a\": 32.0429, \"_q\": 0.89677, \"_e\": 0.972013, \"_p\": 181.384, \"_peri\": 217.593, \"_node\": 195.403, \"_incl\": 75.5574, \"_stream\": \"spo\", \"_mag\": 0.3, \"_dur\": 0.524496, \"_lng1\": -5.01046, \"_lat1\": 50.8563, \"_H1\": 108.792, \"_lng2\": -5.0761, \"_lat2\": 50.7224, \"_H2\": 90.9789, \"_LD21\": 23.8061, \"_az1r\": 16.7449, \"_ev1r\": 48.5065, \"_Nts\": 90.0, \"_Nos\": 8.0, \"_leap\": 91.1111, \"_tme\": 1.0, \"_dt\": 0.00052, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_190805.969_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6.3e-05, \"pi\": 52.996, \"Q\": 63.1891, \"true_anom\": 322.406, \"EA\": -4.64392, \"MA\": 359.865, \"Tj\": 0.453191, \"T\": 181.384, \"last_peri\": \"1844-06-12\", \"jacchia1\": 1.2e-05, \"Jacchia2\": 33.8286, \"numstats\": 8, \"stations\": \"UK001K;UK0024;UK007Q;UK0089;UK00A1;UK00AU;UK00BB;UK00BW;\"},\n{\"_localtime\": \"_20251008_191209\", \"_mjd\": 60956.8, \"_sol\": 195.406, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.64933, \"_ra_o\": 265.472, \"_dc_o\": 58.8608, \"_ra_t\": 262.261, \"_dc_t\": 58.9394, \"_elng\": 241.571, \"_elat\": 81.6083, \"_vo\": 22.5422, \"_vi\": 22.5422, \"_vg\": 19.6159, \"_vs\": 37.3375, \"_a\": 2.32291, \"_q\": 0.996828, \"_e\": 0.570871, \"_p\": 3.54037, \"_peri\": 173.698, \"_node\": 195.407, \"_incl\": 31.3473, \"_stream\": \"DRA\", \"_mag\": 2.2, \"_dur\": 0.3211, \"_lng1\": -2.18397, \"_lat1\": 51.1099, \"_H1\": 96.6072, \"_lng2\": -2.1542, \"_lat2\": 51.0963, \"_H2\": 90.2149, \"_LD21\": 6.93471, \"_az1r\": 304.665, \"_ev1r\": 67.1992, \"_Nts\": 16.0, \"_Nos\": 2.0, \"_leap\": 87.5, \"_tme\": 1.0, \"_dt\": 0.004377, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_191209.095_UK\", \"iau\": 9, \"name\": \"October Draconids \", \"mass\": 2e-05, \"pi\": 9.10534, \"Q\": 3.64898, \"true_anom\": 6.29998, \"EA\": 3.2952, \"MA\": 1.4151, \"Tj\": 3.17733, \"T\": 3.54037, \"last_peri\": \"2025-10-03\", \"jacchia1\": 3.33161, \"Jacchia2\": 14.7821, \"numstats\": 2, \"stations\": \"UK007B;UK00BW;\"},\n{\"_localtime\": \"_20251008_191233\", \"_mjd\": 60956.8, \"_sol\": 195.407, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.960524, \"_ra_o\": 349.724, \"_dc_o\": 62.7793, \"_ra_t\": 350.015, \"_dc_t\": 62.6498, \"_elng\": 31.7688, \"_elat\": 57.8455, \"_vo\": 54.9535, \"_vi\": 54.9535, \"_vg\": 53.8213, \"_vs\": 57.7162, \"_a\": -0.57044, \"_q\": 0.829894, \"_e\": 2.45483, \"_p\": 0.0, \"_peri\": 220.381, \"_node\": 195.406, \"_incl\": 64.5075, \"_stream\": \"spo\", \"_mag\": 1.24, \"_dur\": 0.317743, \"_lng1\": -0.142864, \"_lat1\": 53.0734, \"_H1\": 108.127, \"_lng2\": -0.225082, \"_lat2\": 53.0318, \"_H2\": 92.4092, \"_LD21\": 15.5265, \"_az1r\": 49.5201, \"_ev1r\": 65.2802, \"_Nts\": 18.0, \"_Nos\": 3.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 6.3e-05, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_191233.265_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 55.7871, \"Q\": -1.97077, \"true_anom\": 319.618, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -8.48434, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.611444, \"Jacchia2\": 19.7058, \"numstats\": 3, \"stations\": \"UK008F;UK0098;UK00A0;\"},\n{\"_localtime\": \"_20251008_191519\", \"_mjd\": 60956.8, \"_sol\": 195.408, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.39979, \"_ra_o\": 275.455, \"_dc_o\": 33.3846, \"_ra_t\": 272.055, \"_dc_t\": 30.3155, \"_elng\": 273.0, \"_elat\": 53.7318, \"_vo\": 16.6215, \"_vi\": 16.6215, \"_vg\": 12.3601, \"_vs\": 38.2745, \"_a\": 2.85196, \"_q\": 0.998011, \"_e\": 0.650062, \"_p\": 4.81634, \"_peri\": 175.893, \"_node\": 195.411, \"_incl\": 15.1018, \"_stream\": \"spo\", \"_mag\": 2.59, \"_dur\": 0.638414, \"_lng1\": -2.27289, \"_lat1\": 50.7952, \"_H1\": 89.3336, \"_lng2\": -2.21571, \"_lat2\": 50.8159, \"_H2\": 79.8886, \"_LD21\": 9.39637, \"_az1r\": 241.383, \"_ev1r\": 62.7482, \"_Nts\": 24.0, \"_Nos\": 2.0, \"_leap\": 91.6667, \"_tme\": 1.0, \"_dt\": 7.1e-05, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_191519.672_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.1e-05, \"pi\": 11.3042, \"Q\": 4.70592, \"true_anom\": 4.10342, \"EA\": 1.89033, \"MA\": 0.661722, \"Tj\": 2.91099, \"T\": 4.81634, \"last_peri\": \"2025-10-05\", \"jacchia1\": 7.14505, \"Jacchia2\": 3.92175, \"numstats\": 2, \"stations\": \"UK0025;UK007B;\"},\n{\"_localtime\": \"_20251008_192031\", \"_mjd\": 60956.8, \"_sol\": 195.412, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.13549, \"_ra_o\": 201.573, \"_dc_o\": 78.676, \"_ra_t\": 197.848, \"_dc_t\": 78.4179, \"_elng\": 119.837, \"_elat\": 67.4115, \"_vo\": 40.6947, \"_vi\": 40.6947, \"_vg\": 39.1482, \"_vs\": 39.3612, \"_a\": 3.91332, \"_q\": 0.99103, \"_e\": 0.746754, \"_p\": 7.74138, \"_peri\": 168.9, \"_node\": 195.412, \"_incl\": 67.1476, \"_stream\": \"spo\", \"_mag\": 0.86, \"_dur\": 0.331652, \"_lng1\": -2.66477, \"_lat1\": 53.5116, \"_H1\": 90.7853, \"_lng2\": -2.63851, \"_lat2\": 53.4587, \"_H2\": 83.4634, \"_LD21\": 11.0598, \"_az1r\": 342.889, \"_ev1r\": 49.553, \"_Nts\": 27.0, \"_Nos\": 4.0, \"_leap\": 85.1852, \"_tme\": 1.0, \"_dt\": 0.013265, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_192031.562_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2e-05, \"pi\": 4.3118, \"Q\": 6.83561, \"true_anom\": 11.099, \"EA\": 4.23742, \"MA\": 1.07599, \"Tj\": 1.77785, \"T\": 7.74138, \"last_peri\": \"2025-09-30\", \"jacchia1\": 0.12921, \"Jacchia2\": 29.3088, \"numstats\": 4, \"stations\": \"UK003U;UK0042;UK0083;UK00AM;\"},\n{\"_localtime\": \"_20251008_193352\", \"_mjd\": 60956.8, \"_sol\": 195.421, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.695178, \"_ra_o\": 265.27, \"_dc_o\": 52.4043, \"_ra_t\": 262.214, \"_dc_t\": 51.6386, \"_elng\": 251.568, \"_elat\": 74.578, \"_vo\": 22.2553, \"_vi\": 22.2553, \"_vg\": 19.287, \"_vs\": 38.8743, \"_a\": 3.35037, \"_q\": 0.994537, \"_e\": 0.703156, \"_p\": 6.13252, \"_peri\": 171.544, \"_node\": 195.422, \"_incl\": 28.6347, \"_stream\": \"DRA\", \"_mag\": 1.16, \"_dur\": 0.641244, \"_lng1\": -0.210364, \"_lat1\": 54.5295, \"_H1\": 100.721, \"_lng2\": -0.128711, \"_lat2\": 54.5169, \"_H2\": 89.3952, \"_LD21\": 12.6899, \"_az1r\": 284.466, \"_ev1r\": 63.2094, \"_Nts\": 33.0, \"_Nos\": 3.0, \"_leap\": 90.9091, \"_tme\": 1.0, \"_dt\": 0.008031, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_193352.793_UK\", \"iau\": 9, \"name\": \"October Draconids \", \"mass\": 9.4e-05, \"pi\": 6.96686, \"Q\": 5.7062, \"true_anom\": 8.45358, \"EA\": 3.53451, \"MA\": 1.05077, \"Tj\": 2.5548, \"T\": 6.13252, \"last_peri\": \"2025-10-02\", \"jacchia1\": 26.0424, \"Jacchia2\": 6.24946, \"numstats\": 3, \"stations\": \"UK004B;UK006V;UK00AM;\"},\n{\"_localtime\": \"_20251008_193515\", \"_mjd\": 60956.8, \"_sol\": 195.422, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.183705, \"_ra_o\": 217.477, \"_dc_o\": 62.7801, \"_ra_t\": 208.086, \"_dc_t\": 60.1685, \"_elng\": 163.48, \"_elat\": 62.7568, \"_vo\": 19.2856, \"_vi\": 19.2856, \"_vg\": 15.7609, \"_vs\": 30.0515, \"_a\": 1.01629, \"_q\": 0.825108, \"_e\": 0.188117, \"_p\": 1.02453, \"_peri\": 84.2896, \"_node\": 195.423, \"_incl\": 28.3449, \"_stream\": \"spo\", \"_mag\": 2.23, \"_dur\": 0.360984, \"_lng1\": -3.47748, \"_lat1\": 48.8441, \"_H1\": 87.2674, \"_lng2\": -3.44728, \"_lat2\": 48.8172, \"_H2\": 83.8349, \"_LD21\": 5.90703, \"_az1r\": 322.146, \"_ev1r\": 41.8101, \"_Nts\": 16.0, \"_Nos\": 2.0, \"_leap\": 87.5, \"_tme\": 1.0, \"_dt\": 0.000569, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_193515.910_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000126, \"pi\": 279.713, \"Q\": 1.20747, \"true_anom\": 95.7085, \"EA\": 84.8168, \"MA\": 74.0825, \"Tj\": 5.88481, \"T\": 1.02453, \"last_peri\": \"2025-07-23\", \"jacchia1\": 2.35794, \"Jacchia2\": 17.7322, \"numstats\": 2, \"stations\": \"UK00A2;UK00AK;\"},\n{\"_localtime\": \"_20251008_193727\", \"_mjd\": 60956.8, \"_sol\": 195.424, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": 0.154957, \"_ra_o\": 266.701, \"_dc_o\": 56.6242, \"_ra_t\": 263.521, \"_dc_t\": 56.4539, \"_elng\": 250.102, \"_elat\": 79.4432, \"_vo\": 23.6208, \"_vi\": 23.6208, \"_vg\": 20.8471, \"_vs\": 38.8118, \"_a\": 3.28998, \"_q\": 0.996639, \"_e\": 0.697068, \"_p\": 5.96747, \"_peri\": 173.825, \"_node\": 195.424, \"_incl\": 31.9123, \"_stream\": \"DRA\", \"_mag\": 0.68, \"_dur\": 0.557937, \"_lng1\": -0.961296, \"_lat1\": 50.2906, \"_H1\": 96.7677, \"_lng2\": -0.905889, \"_lat2\": 50.2685, \"_H2\": 87.1432, \"_LD21\": 11.1442, \"_az1r\": 300.983, \"_ev1r\": 63.3306, \"_Nts\": 68.0, \"_Nos\": 7.0, \"_leap\": 89.7059, \"_tme\": 1.0, \"_dt\": 0.000289, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_193727.462_UK\", \"iau\": 9, \"name\": \"October Draconids \", \"mass\": 0.000117, \"pi\": 9.24978, \"Q\": 5.58331, \"true_anom\": 6.17293, \"EA\": 2.61012, \"MA\": 0.791317, \"Tj\": 2.5497, \"T\": 5.96747, \"last_peri\": \"2025-10-04\", \"jacchia1\": 0.449623, \"Jacchia2\": 13.9801, \"numstats\": 7, \"stations\": \"UK0001;UK0025;UK003N;UK005N;UK0079;UK00A6;UK00AK;\"},\n{\"_localtime\": \"_20251008_193749\", \"_mjd\": 60956.8, \"_sol\": 195.424, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.966368, \"_ra_o\": 228.2, \"_dc_o\": 66.9343, \"_ra_t\": 225.711, \"_dc_t\": 66.6867, \"_elng\": 159.131, \"_elat\": 72.7974, \"_vo\": 36.2237, \"_vi\": 36.2237, \"_vg\": 34.4812, \"_vs\": 41.3452, \"_a\": 13.3247, \"_q\": 0.962755, \"_e\": 0.927746, \"_p\": 48.639, \"_peri\": 157.604, \"_node\": 195.424, \"_incl\": 54.1965, \"_stream\": \"spo\", \"_mag\": 1.23, \"_dur\": 0.534223, \"_lng1\": -4.6339, \"_lat1\": 52.6882, \"_H1\": 105.673, \"_lng2\": -4.53355, \"_lat2\": 52.607, \"_H2\": 91.4772, \"_LD21\": 18.2896, \"_az1r\": 322.398, \"_ev1r\": 50.8801, \"_Nts\": 36.0, \"_Nos\": 4.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.003789, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_193749.099_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.5e-05, \"pi\": 353.028, \"Q\": 25.6866, \"true_anom\": 22.3951, \"EA\": 4.38959, \"MA\": 0.321146, \"Tj\": 1.08928, \"T\": 48.639, \"last_peri\": \"2025-09-22\", \"jacchia1\": 53.2239, \"Jacchia2\": 5.75233, \"numstats\": 4, \"stations\": \"UK0042;UK004M;UK00C9;UK00D9;\"},\n{\"_localtime\": \"_20251008_193819\", \"_mjd\": 60956.8, \"_sol\": 195.424, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.494733, \"_ra_o\": 7.49338, \"_dc_o\": 58.1069, \"_ra_t\": 8.49183, \"_dc_t\": 57.7728, \"_elng\": 37.7734, \"_elat\": 48.1438, \"_vo\": 39.0392, \"_vi\": 39.0392, \"_vg\": 37.4276, \"_vs\": 41.783, \"_a\": 29.3913, \"_q\": 0.676809, \"_e\": 0.976972, \"_p\": 159.341, \"_peri\": 249.674, \"_node\": 195.424, \"_incl\": 53.9392, \"_stream\": \"spo\", \"_mag\": 0.04, \"_dur\": 0.6504, \"_lng1\": -4.67377, \"_lat1\": 50.9411, \"_H1\": 102.207, \"_lng2\": -4.82836, \"_lat2\": 50.8718, \"_H2\": 82.6226, \"_LD21\": 25.0633, \"_az1r\": 54.2437, \"_ev1r\": 55.7236, \"_Nts\": 25.0, \"_Nos\": 2.0, \"_leap\": 92.0, \"_tme\": 1.0, \"_dt\": 0.000824, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_193819.314_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000127, \"pi\": 85.0978, \"Q\": 58.1057, \"true_anom\": 290.325, \"EA\": -8.59136, \"MA\": 359.771, \"Tj\": 0.774016, \"T\": 159.341, \"last_peri\": \"1866-07-11\", \"jacchia1\": -0.001956, \"Jacchia2\": 17.5672, \"numstats\": 2, \"stations\": \"UK0020;UK0051;\"},\n{\"_localtime\": \"_20251008_193819\", \"_mjd\": 60956.8, \"_sol\": 195.424, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -0.543098, \"_ra_o\": 7.76612, \"_dc_o\": 57.854, \"_ra_t\": 8.76745, \"_dc_t\": 57.5108, \"_elng\": 37.7217, \"_elat\": 47.8452, \"_vo\": 38.9265, \"_vi\": 38.9265, \"_vg\": 37.31, \"_vs\": 41.6755, \"_a\": 22.6558, \"_q\": 0.672087, \"_e\": 0.970335, \"_p\": 107.838, \"_peri\": 250.396, \"_node\": 195.424, \"_incl\": 53.7309, \"_stream\": \"spo\", \"_mag\": -0.27, \"_dur\": 0.673093, \"_lng1\": -4.66187, \"_lat1\": 50.9464, \"_H1\": 103.541, \"_lng2\": -4.83099, \"_lat2\": 50.8715, \"_H2\": 82.3776, \"_LD21\": 24.91, \"_az1r\": 54.611, \"_ev1r\": 55.5191, \"_Nts\": 107.0, \"_Nos\": 8.0, \"_leap\": 92.5234, \"_tme\": 1.0, \"_dt\": 0.000102, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_193819.357_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000108, \"pi\": 85.8207, \"Q\": 44.6396, \"true_anom\": 289.602, \"EA\": -9.89359, \"MA\": 359.659, \"Tj\": 0.826533, \"T\": 107.838, \"last_peri\": \"1918-01-12\", \"jacchia1\": 0.00409, \"Jacchia2\": 17.3884, \"numstats\": 8, \"stations\": \"UK001K;UK0024;UK0051;UK007Q;UK0089;UK00A1;UK00AU;UK00BB;\"},\n{\"_localtime\": \"_20251008_194042\", \"_mjd\": 60956.8, \"_sol\": 195.426, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.472132, \"_ra_o\": 4.07482, \"_dc_o\": 16.333, \"_ra_t\": 6.30579, \"_dc_t\": 13.1011, \"_elng\": 11.0076, \"_elat\": 9.52157, \"_vo\": 23.3296, \"_vi\": 23.3296, \"_vg\": 20.5152, \"_vs\": 37.7053, \"_a\": 2.50382, \"_q\": 0.641777, \"_e\": 0.743681, \"_p\": 3.96192, \"_peri\": 260.693, \"_node\": 195.434, \"_incl\": 6.18083, \"_stream\": \"spo\", \"_mag\": 1.52, \"_dur\": 0.451121, \"_lng1\": -5.51191, \"_lat1\": 51.144, \"_H1\": 95.0288, \"_lng2\": -5.63375, \"_lat2\": 51.1659, \"_H2\": 89.2084, \"_LD21\": 9.12748, \"_az1r\": 106.235, \"_ev1r\": 33.3209, \"_Nts\": 27.0, \"_Nos\": 3.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.001634, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_194042.180_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6.9e-05, \"pi\": 96.1271, \"Q\": 4.36586, \"true_anom\": 279.298, \"EA\": -36.0847, \"MA\": 349.012, \"Tj\": 3.00056, \"T\": 3.96192, \"last_peri\": \"2021-12-05\", \"jacchia1\": -3.79616, \"Jacchia2\": 9.35505, \"numstats\": 3, \"stations\": \"UK001K;UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_194409\", \"_mjd\": 60956.8, \"_sol\": 195.428, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -0.817709, \"_ra_o\": 248.491, \"_dc_o\": 62.1575, \"_ra_t\": 245.799, \"_dc_t\": 61.9351, \"_elng\": 192.494, \"_elat\": 78.6067, \"_vo\": 31.3961, \"_vi\": 31.3961, \"_vg\": 29.3677, \"_vs\": 41.5611, \"_a\": 18.2256, \"_q\": 0.982296, \"_e\": 0.946104, \"_p\": 77.8079, \"_peri\": 164.92, \"_node\": 195.428, \"_incl\": 44.3034, \"_stream\": \"spo\", \"_mag\": 0.04, \"_dur\": 0.612763, \"_lng1\": -0.132088, \"_lat1\": 50.4336, \"_H1\": 101.337, \"_lng2\": -0.037581, \"_lat2\": 50.3735, \"_H2\": 88.0568, \"_LD21\": 18.5219, \"_az1r\": 314.174, \"_ev1r\": 53.7975, \"_Nts\": 98.0, \"_Nos\": 8.0, \"_leap\": 91.8367, \"_tme\": 1.0, \"_dt\": 0.000333, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_194409.057_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000133, \"pi\": 0.348397, \"Q\": 35.4689, \"true_anom\": 15.0788, \"EA\": 2.52355, \"MA\": 0.136782, \"Tj\": 1.15302, \"T\": 77.8079, \"last_peri\": \"2025-09-28\", \"jacchia1\": 0.003394, \"Jacchia2\": 19.8659, \"numstats\": 8, \"stations\": \"UK0022;UK003N;UK005P;UK0078;UK0079;UK007H;UK0092;UK00AK;\"},\n{\"_localtime\": \"_20251008_194853\", \"_mjd\": 60956.8, \"_sol\": 195.431, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": -2.66064, \"_ra_o\": 120.213, \"_dc_o\": 44.4339, \"_ra_t\": 119.846, \"_dc_t\": 43.8218, \"_elng\": 112.911, \"_elat\": 22.7291, \"_vo\": 67.9647, \"_vi\": 67.9647, \"_vg\": 67.0538, \"_vs\": 41.4995, \"_a\": 16.489, \"_q\": 0.964834, \"_e\": 0.941486, \"_p\": 66.9561, \"_peri\": 158.347, \"_node\": 195.43, \"_incl\": 140.581, \"_stream\": \"spo\", \"_mag\": -0.35, \"_dur\": 1.9339, \"_lng1\": -6.72042, \"_lat1\": 52.2529, \"_H1\": 116.601, \"_lng2\": -6.90426, \"_lat2\": 51.1499, \"_H2\": 102.564, \"_LD21\": 129.575, \"_az1r\": 5.73958, \"_ev1r\": 6.97236, \"_Nts\": 244.0, \"_Nos\": 11.0, \"_leap\": 95.4918, \"_tme\": 1.0, \"_dt\": 0.003867, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_194853.383_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000652, \"pi\": 353.777, \"Q\": 32.0131, \"true_anom\": 21.6515, \"EA\": 3.80279, \"MA\": 0.225145, \"Tj\": -0.611332, \"T\": 66.9561, \"last_peri\": \"2025-09-23\", \"jacchia1\": 2.4e-05, \"Jacchia2\": 8.56061, \"numstats\": 11, \"stations\": \"UK0024;UK008S;UK009D;UK00A1;UK00AU;UK00B0;UK00BB;UK00BW;UK00C1;UK00C9;UK00CQ;\"},\n{\"_localtime\": \"_20251008_194900\", \"_mjd\": 60956.8, \"_sol\": 195.432, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.15242, \"_ra_o\": 312.768, \"_dc_o\": 57.3474, \"_ra_t\": 312.8, \"_dc_t\": 57.5873, \"_elng\": 356.065, \"_elat\": 68.5891, \"_vo\": 25.822, \"_vi\": 25.822, \"_vg\": 23.312, \"_vs\": 40.0965, \"_a\": 5.27193, \"_q\": 0.948927, \"_e\": 0.820004, \"_p\": 12.1047, \"_peri\": 207.286, \"_node\": 195.432, \"_incl\": 33.6406, \"_stream\": \"spo\", \"_mag\": 1.11, \"_dur\": 0.442904, \"_lng1\": -5.41425, \"_lat1\": 50.8827, \"_H1\": 96.5839, \"_lng2\": -5.4197, \"_lat2\": 50.8734, \"_H2\": 87.4345, \"_LD21\": 11.3382, \"_az1r\": 15.0389, \"_ev1r\": 83.2672, \"_Nts\": 37.0, \"_Nos\": 4.0, \"_leap\": 89.1892, \"_tme\": 1.0, \"_dt\": 0.000467, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_194900.942_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.7e-05, \"pi\": 42.7178, \"Q\": 9.59494, \"true_anom\": 332.713, \"EA\": -8.73036, \"MA\": 358.401, \"Tj\": 1.94635, \"T\": 12.1047, \"last_peri\": \"2013-09-20\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"UK001K;UK00A1;UK00AU;UK00BB;\"},\n{\"_localtime\": \"_20251008_194910\", \"_mjd\": 60956.8, \"_sol\": 195.432, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.860711, \"_ra_o\": 349.142, \"_dc_o\": 15.2303, \"_ra_t\": 351.312, \"_dc_t\": 10.364, \"_elng\": 356.189, \"_elat\": 12.9536, \"_vo\": 18.6034, \"_vi\": 18.6034, \"_vg\": 14.9145, \"_vs\": 37.5436, \"_a\": 2.4207, \"_q\": 0.817139, \"_e\": 0.662437, \"_p\": 3.76627, \"_peri\": 237.095, \"_node\": 195.44, \"_incl\": 5.52474, \"_stream\": \"spo\", \"_mag\": 0.57, \"_dur\": 0.683901, \"_lng1\": 1.00116, \"_lat1\": 52.93, \"_H1\": 82.896, \"_lng2\": 0.904982, \"_lat2\": 52.9819, \"_H2\": 74.515, \"_LD21\": 8.38153, \"_az1r\": 132.657, \"_ev1r\": 44.1502, \"_Nts\": 21.0, \"_Nos\": 2.0, \"_leap\": 90.4762, \"_tme\": 1.0, \"_dt\": 0.000609, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_194910.005_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.7e-05, \"pi\": 72.5354, \"Q\": 4.02426, \"true_anom\": 302.896, \"EA\": -27.5536, \"MA\": 350.003, \"Tj\": 3.16697, \"T\": 3.76627, \"last_peri\": \"2022-02-09\", \"jacchia1\": 29.8007, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK0026;UK007Y;\"},\n{\"_localtime\": \"_20251008_195043\", \"_mjd\": 60956.8, \"_sol\": 195.433, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -1.19858, \"_ra_o\": 342.897, \"_dc_o\": 85.8706, \"_ra_t\": 348.435, \"_dc_t\": 86.2877, \"_elng\": 80.6441, \"_elat\": 67.0332, \"_vo\": 42.2439, \"_vi\": 42.2439, \"_vg\": 40.7601, \"_vs\": 41.1793, \"_a\": 11.0529, \"_q\": 0.967365, \"_e\": 0.912478, \"_p\": 36.7462, \"_peri\": 200.997, \"_node\": 195.432, \"_incl\": 67.7453, \"_stream\": \"spo\", \"_mag\": -0.42, \"_dur\": 0.409648, \"_lng1\": -0.314138, \"_lat1\": 50.5999, \"_H1\": 106.099, \"_lng2\": -0.321843, \"_lat2\": 50.5298, \"_H2\": 95.1064, \"_LD21\": 16.2686, \"_az1r\": 3.296, \"_ev1r\": 54.2141, \"_Nts\": 66.0, \"_Nos\": 9.0, \"_leap\": 86.3636, \"_tme\": 1.0, \"_dt\": 0.000178, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_195043.369_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.8e-05, \"pi\": 36.4293, \"Q\": 21.1384, \"true_anom\": 339.002, \"EA\": -4.54051, \"MA\": 359.598, \"Tj\": 0.922465, \"T\": 36.7462, \"last_peri\": \"1989-01-24\", \"jacchia1\": -0.00019, \"Jacchia2\": 38.7476, \"numstats\": 9, \"stations\": \"UK0001;UK0009;UK0022;UK005P;UK0078;UK007H;UK0092;UK00AF;UK00AK;\"},\n{\"_localtime\": \"_20251008_195255\", \"_mjd\": 60956.8, \"_sol\": 195.434, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": 0.865593, \"_ra_o\": 211.0, \"_dc_o\": 77.8341, \"_ra_t\": 207.684, \"_dc_t\": 77.6037, \"_elng\": 122.624, \"_elat\": 69.3534, \"_vo\": 42.4371, \"_vi\": 42.4371, \"_vg\": 40.9602, \"_vs\": 41.7084, \"_a\": 24.3631, \"_q\": 0.990651, \"_e\": 0.959338, \"_p\": 120.254, \"_peri\": 169.388, \"_node\": 195.434, \"_incl\": 67.3445, \"_stream\": \"spo\", \"_mag\": 1.02, \"_dur\": 0.502218, \"_lng1\": -3.17396, \"_lat1\": 51.6346, \"_H1\": 106.991, \"_lng2\": -3.11348, \"_lat2\": 51.5138, \"_H2\": 91.2618, \"_LD21\": 21.8288, \"_az1r\": 342.141, \"_ev1r\": 47.718, \"_Nts\": 100.0, \"_Nos\": 9.0, \"_leap\": 91.0, \"_tme\": 1.0, \"_dt\": 0.001234, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_195255.427_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.6e-05, \"pi\": 4.82166, \"Q\": 47.7356, \"true_anom\": 10.6114, \"EA\": 1.53295, \"MA\": 0.062508, \"Tj\": 0.684092, \"T\": 120.254, \"last_peri\": \"2025-10-01\", \"jacchia1\": 44.2886, \"Jacchia2\": 0.0, \"numstats\": 9, \"stations\": \"UK000S;UK001Z;UK007A;UK0089;UK008V;UK009D;UK009G;UK00B0;UK00BA;\"},\n{\"_localtime\": \"_20251008_200203\", \"_mjd\": 60956.8, \"_sol\": 195.44, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 0.718314, \"_ra_o\": 357.958, \"_dc_o\": -5.12202, \"_ra_t\": 1.17263, \"_dc_t\": -11.8672, \"_elng\": 356.291, \"_elat\": -11.3407, \"_vo\": 19.3572, \"_vi\": 19.3572, \"_vg\": 15.8519, \"_vs\": 38.179, \"_a\": 2.78647, \"_q\": 0.807392, \"_e\": 0.710245, \"_p\": 4.65138, \"_peri\": 57.4538, \"_node\": 15.4301, \"_incl\": 5.10102, \"_stream\": \"spo\", \"_mag\": 0.91, \"_dur\": 1.35446, \"_lng1\": -2.55859, \"_lat1\": 50.8232, \"_H1\": 93.917, \"_lng2\": -2.80571, \"_lat2\": 50.9657, \"_H2\": 83.7926, \"_LD21\": 24.904, \"_az1r\": 133.111, \"_ev1r\": 23.3392, \"_Nts\": 135.0, \"_Nos\": 6.0, \"_leap\": 95.5556, \"_tme\": 1.0, \"_dt\": 0.004794, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_200203.933_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000151, \"pi\": 72.8839, \"Q\": 4.76555, \"true_anom\": 302.556, \"EA\": -25.4213, \"MA\": 352.047, \"Tj\": 2.89381, \"T\": 4.65138, \"last_peri\": \"2021-03-22\", \"jacchia1\": 1.7184, \"Jacchia2\": 4.27667, \"numstats\": 6, \"stations\": \"UK000H;UK000T;UK003Z;UK008V;UK009G;UK009W;\"},\n{\"_localtime\": \"_20251008_200257\", \"_mjd\": 60956.8, \"_sol\": 195.441, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.55217, \"_ra_o\": 54.0664, \"_dc_o\": 83.0376, \"_ra_t\": 56.126, \"_dc_t\": 82.8066, \"_elng\": 81.8937, \"_elat\": 60.3333, \"_vo\": 53.5436, \"_vi\": 53.5436, \"_vg\": 52.3795, \"_vs\": 47.178, \"_a\": -1.97248, \"_q\": 0.954735, \"_e\": 1.48403, \"_p\": 0.0, \"_peri\": 202.208, \"_node\": 195.441, \"_incl\": 82.4526, \"_stream\": \"spo\", \"_mag\": 2.76, \"_dur\": 0.274977, \"_lng1\": -4.27127, \"_lat1\": 53.606, \"_H1\": 100.857, \"_lng2\": -4.29505, \"_lat2\": 53.5376, \"_H2\": 90.8337, \"_LD21\": 11.022, \"_az1r\": 11.1528, \"_ev1r\": 51.8755, \"_Nts\": 13.0, \"_Nos\": 2.0, \"_leap\": 84.6154, \"_tme\": 1.0, \"_dt\": 0.000795, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_200257.381_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 37.6488, \"Q\": -4.8997, \"true_anom\": 337.791, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.46111, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK0042;UK00D9;\"},\n{\"_localtime\": \"_20251008_200317\", \"_mjd\": 60956.8, \"_sol\": 195.441, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.05046, \"_ra_o\": 9.77798, \"_dc_o\": 10.4964, \"_ra_t\": 14.2664, \"_dc_t\": 3.82592, \"_elng\": 14.6139, \"_elat\": -2.09635, \"_vo\": 17.7552, \"_vi\": 17.7552, \"_vg\": 13.846, \"_vs\": 33.2463, \"_a\": 1.32272, \"_q\": 0.682243, \"_e\": 0.484212, \"_p\": 1.52126, \"_peri\": 88.4433, \"_node\": 15.389, \"_incl\": 0.963126, \"_stream\": \"spo\", \"_mag\": 2.33, \"_dur\": 0.519388, \"_lng1\": -2.78859, \"_lat1\": 50.8292, \"_H1\": 87.6007, \"_lng2\": -2.88691, \"_lat2\": 50.8546, \"_H2\": 83.2356, \"_LD21\": 10.5686, \"_az1r\": 112.681, \"_ev1r\": 30.3957, \"_Nts\": 18.0, \"_Nos\": 2.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.009633, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_200317.614_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.5e-05, \"pi\": 103.832, \"Q\": 1.9632, \"true_anom\": 271.608, \"EA\": -59.6413, \"MA\": 324.298, \"Tj\": 4.8166, \"T\": 1.52126, \"last_peri\": \"2024-05-26\", \"jacchia1\": 32.0564, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000H;UK000T;\"},\n{\"_localtime\": \"_20251008_200346\", \"_mjd\": 60956.8, \"_sol\": 195.442, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 1.33766, \"_ra_o\": 249.957, \"_dc_o\": 27.6128, \"_ra_t\": 243.897, \"_dc_t\": 21.8258, \"_elng\": 236.495, \"_elat\": 42.2751, \"_vo\": 17.1249, \"_vi\": 17.1249, \"_vg\": 13.03, \"_vs\": 37.791, \"_a\": 2.55033, \"_q\": 0.957084, \"_e\": 0.624722, \"_p\": 4.07282, \"_peri\": 152.976, \"_node\": 195.445, \"_incl\": 13.6406, \"_stream\": \"spo\", \"_mag\": 1.25, \"_dur\": 1.11894, \"_lng1\": -3.3044, \"_lat1\": 52.8605, \"_H1\": 90.397, \"_lng2\": -3.10027, \"_lat2\": 52.8626, \"_H2\": 79.9549, \"_LD21\": 19.0801, \"_az1r\": 268.966, \"_ev1r\": 36.3302, \"_Nts\": 86.0, \"_Nos\": 5.0, \"_leap\": 94.1861, \"_tme\": 1.0, \"_dt\": 0.00122, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_200346.367_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000113, \"pi\": 348.42, \"Q\": 4.14358, \"true_anom\": 27.0206, \"EA\": 13.174, \"MA\": 5.01625, \"Tj\": 3.10303, \"T\": 4.07282, \"last_peri\": \"2025-09-18\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 5, \"stations\": \"UK0042;UK008S;UK00C1;UK00CQ;UK00D9;\"},\n{\"_localtime\": \"_20251008_200350\", \"_mjd\": 60956.8, \"_sol\": 195.442, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.513104, \"_ra_o\": 323.146, \"_dc_o\": 28.302, \"_ra_t\": 323.811, \"_dc_t\": 24.5705, \"_elng\": 335.968, \"_elat\": 36.5192, \"_vo\": 16.8587, \"_vi\": 16.8587, \"_vg\": 12.6733, \"_vs\": 37.9783, \"_a\": 2.65883, \"_q\": 0.937288, \"_e\": 0.647482, \"_p\": 4.33548, \"_peri\": 212.56, \"_node\": 195.446, \"_incl\": 11.7492, \"_stream\": \"spo\", \"_mag\": 1.93, \"_dur\": 0.733352, \"_lng1\": -5.26558, \"_lat1\": 53.2397, \"_H1\": 85.044, \"_lng2\": -5.29553, \"_lat2\": 53.2842, \"_H2\": 74.1015, \"_LD21\": 11.9676, \"_az1r\": 160.087, \"_ev1r\": 64.0482, \"_Nts\": 43.0, \"_Nos\": 3.0, \"_leap\": 93.0233, \"_tme\": 1.0, \"_dt\": 5.3e-05, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_200350.468_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000105, \"pi\": 48.0054, \"Q\": 4.38038, \"true_anom\": 327.436, \"EA\": -15.3892, \"MA\": 354.456, \"Tj\": 3.02395, \"T\": 4.33548, \"last_peri\": \"2021-07-02\", \"jacchia1\": 0.000228, \"Jacchia2\": 18.3528, \"numstats\": 3, \"stations\": \"UK0042;UK00C9;UK00D9;\"},\n{\"_localtime\": \"_20251008_200425\", \"_mjd\": 60956.8, \"_sol\": 195.442, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.67454, \"_ra_o\": 255.06, \"_dc_o\": 29.4493, \"_ra_t\": 249.873, \"_dc_t\": 24.9261, \"_elng\": 243.044, \"_elat\": 46.4981, \"_vo\": 18.0313, \"_vi\": 18.0313, \"_vg\": 14.1986, \"_vs\": 38.903, \"_a\": 3.37877, \"_q\": 0.96949, \"_e\": 0.713064, \"_p\": 6.21068, \"_peri\": 158.276, \"_node\": 195.445, \"_incl\": 15.5521, \"_stream\": \"spo\", \"_mag\": 1.45, \"_dur\": 0.846169, \"_lng1\": -2.43217, \"_lat1\": 52.2333, \"_H1\": 88.5102, \"_lng2\": -2.27589, \"_lat2\": 52.2369, \"_H2\": 79.1906, \"_LD21\": 13.5113, \"_az1r\": 267.808, \"_ev1r\": 40.1358, \"_Nts\": 46.0, \"_Nos\": 3.0, \"_leap\": 93.4783, \"_tme\": 1.0, \"_dt\": 0.001306, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_200425.504_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.9e-05, \"pi\": 353.721, \"Q\": 5.78806, \"true_anom\": 21.7206, \"EA\": 8.97909, \"MA\": 2.6026, \"Tj\": 2.62874, \"T\": 6.21068, \"last_peri\": \"2025-09-22\", \"jacchia1\": 11.9204, \"Jacchia2\": 4.78977, \"numstats\": 3, \"stations\": \"UK0067;UK00B6;UK00CQ;\"},\n{\"_localtime\": \"_20251008_200706\", \"_mjd\": 60956.8, \"_sol\": 195.444, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.88444, \"_ra_o\": 3.58141, \"_dc_o\": 3.81562, \"_ra_t\": 6.89097, \"_dc_t\": -2.00588, \"_elng\": 5.53185, \"_elat\": -4.57749, \"_vo\": 19.3659, \"_vi\": 19.3659, \"_vg\": 15.8557, \"_vs\": 36.2896, \"_a\": 1.93246, \"_q\": 0.735763, \"_e\": 0.619261, \"_p\": 2.68637, \"_peri\": 71.9049, \"_node\": 15.4213, \"_incl\": 2.22466, \"_stream\": \"spo\", \"_mag\": 2.76, \"_dur\": 0.359696, \"_lng1\": -3.52701, \"_lat1\": 50.3406, \"_H1\": 82.2536, \"_lng2\": -3.59388, \"_lat2\": 50.3676, \"_H2\": 79.1867, \"_LD21\": 6.5286, \"_az1r\": 122.814, \"_ev1r\": 28.7148, \"_Nts\": 17.0, \"_Nos\": 3.0, \"_leap\": 82.3529, \"_tme\": 1.0, \"_dt\": 0.000824, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_200706.623_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.4e-05, \"pi\": 87.3262, \"Q\": 3.12915, \"true_anom\": 288.117, \"EA\": -38.7378, \"MA\": 343.465, \"Tj\": 3.64929, \"T\": 2.68637, \"last_peri\": \"2023-03-17\", \"jacchia1\": 0.99329, \"Jacchia2\": 17.3786, \"numstats\": 3, \"stations\": \"UK000T;UK0025;UK00AU;\"},\n{\"_localtime\": \"_20251008_201625\", \"_mjd\": 60956.8, \"_sol\": 195.45, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.559633, \"_ra_o\": 239.719, \"_dc_o\": 86.6633, \"_ra_t\": 229.219, \"_dc_t\": 86.7898, \"_elng\": 95.83, \"_elat\": 68.8945, \"_vo\": 42.7229, \"_vi\": 42.7229, \"_vg\": 41.2535, \"_vs\": 41.4702, \"_a\": 15.7767, \"_q\": 0.993702, \"_e\": 0.937014, \"_p\": 62.6649, \"_peri\": 188.501, \"_node\": 195.45, \"_incl\": 68.5124, \"_stream\": \"spo\", \"_mag\": 1.14, \"_dur\": 0.200896, \"_lng1\": -4.77589, \"_lat1\": 51.1893, \"_H1\": 94.8418, \"_lng2\": -4.76974, \"_lat2\": 51.1416, \"_H2\": 87.9824, \"_LD21\": 8.73094, \"_az1r\": 354.731, \"_ev1r\": 51.8064, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.000403, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_201625.134_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1e-05, \"pi\": 23.9512, \"Q\": 30.5597, \"true_anom\": 351.498, \"EA\": -1.53585, \"MA\": 359.903, \"Tj\": 0.775406, \"T\": 62.6649, \"last_peri\": \"1963-02-14\", \"jacchia1\": 31.0075, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK001K;UK00BB;\"},\n{\"_localtime\": \"_20251008_201948\", \"_mjd\": 60956.8, \"_sol\": 195.453, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.71207, \"_ra_o\": 297.217, \"_dc_o\": 33.8306, \"_ra_t\": 294.372, \"_dc_t\": 30.5645, \"_elng\": 304.482, \"_elat\": 51.1251, \"_vo\": 16.0402, \"_vi\": 16.0402, \"_vg\": 11.5657, \"_vs\": 37.8577, \"_a\": 2.58787, \"_q\": 0.991547, \"_e\": 0.616849, \"_p\": 4.16308, \"_peri\": 191.356, \"_node\": 195.456, \"_incl\": 13.803, \"_stream\": \"spo\", \"_mag\": 2.3, \"_dur\": 0.60224, \"_lng1\": -3.74462, \"_lat1\": 51.6855, \"_H1\": 88.5357, \"_lng2\": -3.70687, \"_lat2\": 51.7067, \"_H2\": 80.1385, \"_LD21\": 9.23911, \"_az1r\": 229.717, \"_ev1r\": 66.2508, \"_Nts\": 30.0, \"_Nos\": 3.0, \"_leap\": 90.0, \"_tme\": 1.0, \"_dt\": 0.001014, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_201948.314_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-05, \"pi\": 26.8116, \"Q\": 4.1842, \"true_anom\": 348.64, \"EA\": -5.54371, \"MA\": 357.871, \"Tj\": 3.08901, \"T\": 4.16308, \"last_peri\": \"2021-08-19\", \"jacchia1\": 0.309058, \"Jacchia2\": 12.8614, \"numstats\": 3, \"stations\": \"UK007A;UK0089;UK009D;\"},\n{\"_localtime\": \"_20251008_202048\", \"_mjd\": 60956.8, \"_sol\": 195.453, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.338492, \"_ra_o\": 99.8278, \"_dc_o\": 55.5932, \"_ra_t\": 99.7223, \"_dc_t\": 55.1262, \"_elng\": 96.5312, \"_elat\": 31.9087, \"_vo\": 65.5559, \"_vi\": 65.5559, \"_vg\": 64.609, \"_vs\": 42.9182, \"_a\": -13.448, \"_q\": 0.956565, \"_e\": 1.07113, \"_p\": 0.0, \"_peri\": 203.387, \"_node\": 195.452, \"_incl\": 125.527, \"_stream\": \"spo\", \"_mag\": 0.39, \"_dur\": 0.19996, \"_lng1\": -1.10383, \"_lat1\": 52.4604, \"_H1\": 102.922, \"_lng2\": -1.17755, \"_lat2\": 52.3617, \"_H2\": 97.6221, \"_LD21\": 14.0704, \"_az1r\": 24.3369, \"_ev1r\": 23.4696, \"_Nts\": 15.0, \"_Nos\": 3.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.000587, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_202048.705_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 9e-06, \"pi\": 38.839, \"Q\": -27.8525, \"true_anom\": 336.612, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -1.10405, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 45.0136, \"Jacchia2\": 10.0581, \"numstats\": 3, \"stations\": \"UK000S;UK006L;UK009D;\"},\n{\"_localtime\": \"_20251008_202209\", \"_mjd\": 60956.8, \"_sol\": 195.454, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.599688, \"_ra_o\": 243.452, \"_dc_o\": 77.7178, \"_ra_t\": 239.7, \"_dc_t\": 77.7536, \"_elng\": 115.872, \"_elat\": 75.8033, \"_vo\": 38.2736, \"_vi\": 38.2736, \"_vg\": 36.6276, \"_vs\": 41.2525, \"_a\": 11.9498, \"_q\": 0.998225, \"_e\": 0.916465, \"_p\": 41.3086, \"_peri\": 176.708, \"_node\": 195.454, \"_incl\": 59.4465, \"_stream\": \"spo\", \"_mag\": 1.38, \"_dur\": 0.320988, \"_lng1\": -4.90164, \"_lat1\": 51.2608, \"_H1\": 99.6307, \"_lng2\": -4.87081, \"_lat2\": 51.2052, \"_H2\": 90.835, \"_LD21\": 13.7387, \"_az1r\": 340.124, \"_ev1r\": 52.837, \"_Nts\": 23.0, \"_Nos\": 3.0, \"_leap\": 86.9565, \"_tme\": 1.0, \"_dt\": 0.003746, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_202209.896_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.9e-05, \"pi\": 12.1626, \"Q\": 22.9013, \"true_anom\": 3.29067, \"EA\": 0.687199, \"MA\": 0.05742, \"Tj\": 1.05192, \"T\": 41.3086, \"last_peri\": \"2025-10-06\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK001K;UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_202327\", \"_mjd\": 60956.9, \"_sol\": 195.455, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.7212, \"_ra_o\": 311.113, \"_dc_o\": 60.7571, \"_ra_t\": 310.386, \"_dc_t\": 61.0543, \"_elng\": 1.79612, \"_elat\": 71.7151, \"_vo\": 28.4092, \"_vi\": 28.4092, \"_vg\": 26.1487, \"_vs\": 41.1738, \"_a\": 10.989, \"_q\": 0.954791, \"_e\": 0.913114, \"_p\": 36.4281, \"_peri\": 204.87, \"_node\": 195.456, \"_incl\": 38.0413, \"_stream\": \"spo\", \"_mag\": 1.71, \"_dur\": 0.441809, \"_lng1\": -1.56507, \"_lat1\": 50.9705, \"_H1\": 98.2396, \"_lng2\": -1.55095, \"_lat2\": 50.9512, \"_H2\": 86.179, \"_LD21\": 12.4017, \"_az1r\": 332.407, \"_ev1r\": 78.4909, \"_Nts\": 28.0, \"_Nos\": 3.0, \"_leap\": 89.2857, \"_tme\": 1.0, \"_dt\": 0.005184, \"dtstamp\": 1759950000.0, \"orbname\": \"20251008_202327.467_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.7e-05, \"pi\": 40.3257, \"Q\": 21.0232, \"true_anom\": 335.129, \"EA\": -5.38121, \"MA\": 359.525, \"Tj\": 1.40676, \"T\": 36.4281, \"last_peri\": \"1989-05-22\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK0001;UK0084;UK00A5;\"},\n{\"_localtime\": \"_20251008_202518\", \"_mjd\": 60956.9, \"_sol\": 195.456, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.387433, \"_ra_o\": 27.9814, \"_dc_o\": 29.05, \"_ra_t\": 28.479, \"_dc_t\": 28.1399, \"_elng\": 36.492, \"_elat\": 15.3949, \"_vo\": 40.9387, \"_vi\": 40.9387, \"_vg\": 39.4031, \"_vs\": 40.7792, \"_a\": 7.84625, \"_q\": 0.211329, \"_e\": 0.973066, \"_p\": 21.9783, \"_peri\": 306.779, \"_node\": 195.457, \"_incl\": 32.9181, \"_stream\": \"spo\", \"_mag\": 0.99, \"_dur\": 0.373955, \"_lng1\": -2.01246, \"_lat1\": 52.5728, \"_H1\": 96.0824, \"_lng2\": -2.1728, \"_lat2\": 52.5712, \"_H2\": 87.8503, \"_LD21\": 14.9082, \"_az1r\": 89.1406, \"_ev1r\": 37.0341, \"_Nts\": 26.0, \"_Nos\": 3.0, \"_leap\": 88.4615, \"_tme\": 1.0, \"_dt\": 5.5e-05, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_202518.237_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.8e-05, \"pi\": 142.236, \"Q\": 15.4812, \"true_anom\": 233.22, \"EA\": -26.2553, \"MA\": 358.408, \"Tj\": 1.1385, \"T\": 21.9783, \"last_peri\": \"2003-11-21\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK001L;UK00B0;UK00C1;\"},\n{\"_localtime\": \"_20251008_202820\", \"_mjd\": 60956.9, \"_sol\": 195.458, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.85778, \"_ra_o\": 248.664, \"_dc_o\": 53.9735, \"_ra_t\": 244.554, \"_dc_t\": 52.6765, \"_elng\": 215.53, \"_elat\": 71.3306, \"_vo\": 24.0202, \"_vi\": 24.0202, \"_vg\": 21.2967, \"_vs\": 38.4047, \"_a\": 2.94639, \"_q\": 0.969492, \"_e\": 0.670956, \"_p\": 5.0575, \"_peri\": 157.88, \"_node\": 195.459, \"_incl\": 32.1243, \"_stream\": \"spo\", \"_mag\": 2.79, \"_dur\": 0.418479, \"_lng1\": -1.61139, \"_lat1\": 51.5237, \"_H1\": 93.7913, \"_lng2\": -1.54454, \"_lat2\": 51.4949, \"_H2\": 87.5669, \"_LD21\": 8.82961, \"_az1r\": 303.863, \"_ev1r\": 46.9492, \"_Nts\": 18.0, \"_Nos\": 2.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.000919, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_202820.153_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-06, \"pi\": 353.34, \"Q\": 4.92329, \"true_anom\": 22.1183, \"EA\": 9.91405, \"MA\": 3.2953, \"Tj\": 2.71133, \"T\": 5.0575, \"last_peri\": \"2025-09-21\", \"jacchia1\": 0.236977, \"Jacchia2\": 20.7629, \"numstats\": 2, \"stations\": \"UK008X;UK00A5;\"},\n{\"_localtime\": \"_20251008_203044\", \"_mjd\": 60956.9, \"_sol\": 195.46, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 1.48876, \"_ra_o\": 291.787, \"_dc_o\": 39.075, \"_ra_t\": 287.942, \"_dc_t\": 36.7187, \"_elng\": 298.13, \"_elat\": 58.417, \"_vo\": 16.4825, \"_vi\": 16.4825, \"_vg\": 12.1715, \"_vs\": 37.5279, \"_a\": 2.41284, \"_q\": 0.99559, \"_e\": 0.587379, \"_p\": 3.74795, \"_peri\": 187.8, \"_node\": 195.462, \"_incl\": 16.0637, \"_stream\": \"spo\", \"_mag\": 1.98, \"_dur\": 0.504022, \"_lng1\": -3.35466, \"_lat1\": 50.5359, \"_H1\": 88.0058, \"_lng2\": -3.31703, \"_lat2\": 50.5434, \"_H2\": 81.3789, \"_LD21\": 7.57415, \"_az1r\": 253.353, \"_ev1r\": 65.8947, \"_Nts\": 45.0, \"_Nos\": 4.0, \"_leap\": 91.1111, \"_tme\": 1.0, \"_dt\": 0.00308, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_203044.373_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6.6e-05, \"pi\": 23.2626, \"Q\": 3.83009, \"true_anom\": 352.197, \"EA\": -3.98288, \"MA\": 358.355, \"Tj\": 3.216, \"T\": 3.74795, \"last_peri\": \"2022-01-15\", \"jacchia1\": 2.18464, \"Jacchia2\": 11.2918, \"numstats\": 4, \"stations\": \"UK000H;UK000T;UK001K;UK00AU;\"},\n{\"_localtime\": \"_20251008_203118\", \"_mjd\": 60956.9, \"_sol\": 195.46, \"_ID1\": \"_(UNIFIED_12)\", \"_amag\": 1.02923, \"_ra_o\": 358.626, \"_dc_o\": 19.1695, \"_ra_t\": 0.086661, \"_dc_t\": 16.2658, \"_elng\": 6.69819, \"_elat\": 14.857, \"_vo\": 22.1203, \"_vi\": 22.1203, \"_vg\": 19.1251, \"_vs\": 37.9431, \"_a\": 2.63766, \"_q\": 0.706437, \"_e\": 0.732172, \"_p\": 4.28379, \"_peri\": 252.107, \"_node\": 195.466, \"_incl\": 8.55472, \"_stream\": \"spo\", \"_mag\": 0.94, \"_dur\": 0.801574, \"_lng1\": -2.22691, \"_lat1\": 51.825, \"_H1\": 86.199, \"_lng2\": -2.3535, \"_lat2\": 51.8814, \"_H2\": 74.6189, \"_LD21\": 17.6649, \"_az1r\": 126.455, \"_ev1r\": 47.2841, \"_Nts\": 119.0, \"_Nos\": 12.0, \"_leap\": 89.916, \"_tme\": 1.0, \"_dt\": 0.013977, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_203118.448_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6.5e-05, \"pi\": 87.573, \"Q\": 4.56887, \"true_anom\": 287.887, \"EA\": -31.9509, \"MA\": 350.249, \"Tj\": 2.93208, \"T\": 4.28379, \"last_peri\": \"2021-08-08\", \"jacchia1\": 3e-06, \"Jacchia2\": 22.4011, \"numstats\": 12, \"stations\": \"UK0006;UK000S;UK001Z;UK0049;UK0067;UK008X;UK009D;UK009G;UK00B0;UK00B2;UK00B6;UK00CQ;\"},\n{\"_localtime\": \"_20251008_204242\", \"_mjd\": 60956.9, \"_sol\": 195.468, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -2.03176, \"_ra_o\": 281.953, \"_dc_o\": 82.4752, \"_ra_t\": 277.721, \"_dc_t\": 82.8902, \"_elng\": 86.6275, \"_elat\": 73.5814, \"_vo\": 36.2575, \"_vi\": 36.2575, \"_vg\": 34.5114, \"_vs\": 39.1438, \"_a\": 3.63907, \"_q\": 0.988748, \"_e\": 0.728297, \"_p\": 6.94203, \"_peri\": 192.676, \"_node\": 195.469, \"_incl\": 58.1518, \"_stream\": \"spo\", \"_mag\": 0.18, \"_dur\": 0.42067, \"_lng1\": -1.72226, \"_lat1\": 54.6189, \"_H1\": 87.1176, \"_lng2\": -1.7036, \"_lat2\": 54.555, \"_H2\": 74.6626, \"_LD21\": 14.7774, \"_az1r\": 349.518, \"_ev1r\": 59.5599, \"_Nts\": 61.0, \"_Nos\": 7.0, \"_leap\": 88.5246, \"_tme\": 1.0, \"_dt\": 4.8e-05, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_204242.481_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.00012, \"pi\": 28.1444, \"Q\": 6.2894, \"true_anom\": 347.323, \"EA\": -5.04366, \"MA\": 358.625, \"Tj\": 2.03484, \"T\": 6.94203, \"last_peri\": \"2018-11-08\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 7, \"stations\": \"UK001L;UK003T;UK006C;UK006V;UK00AM;UK00B0;UK00CD;\"},\n{\"_localtime\": \"_20251008_204343\", \"_mjd\": 60956.9, \"_sol\": 195.469, \"_ID1\": \"_(UNIFIED_10)\", \"_amag\": -0.950708, \"_ra_o\": 353.26, \"_dc_o\": 82.9412, \"_ra_t\": 355.651, \"_dc_t\": 83.2917, \"_elng\": 73.2452, \"_elat\": 66.1682, \"_vo\": 41.563, \"_vi\": 41.563, \"_vg\": 40.053, \"_vs\": 41.0502, \"_a\": 9.76001, \"_q\": 0.947034, \"_e\": 0.902968, \"_p\": 30.4913, \"_peri\": 207.082, \"_node\": 195.469, \"_incl\": 66.2701, \"_stream\": \"spo\", \"_mag\": -0.46, \"_dur\": 0.466302, \"_lng1\": -1.3777, \"_lat1\": 53.1843, \"_H1\": 103.851, \"_lng2\": -1.39311, \"_lat2\": 53.107, \"_H2\": 89.0204, \"_LD21\": 19.5115, \"_az1r\": 6.06815, \"_ev1r\": 59.3956, \"_Nts\": 97.0, \"_Nos\": 10.0, \"_leap\": 89.6907, \"_tme\": 1.0, \"_dt\": 0.000588, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_204343.676_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7e-05, \"pi\": 42.5507, \"Q\": 18.573, \"true_anom\": 332.918, \"EA\": -6.22581, \"MA\": 359.385, \"Tj\": 1.00685, \"T\": 30.4913, \"last_peri\": \"1995-05-01\", \"jacchia1\": 0.112641, \"Jacchia2\": 18.3413, \"numstats\": 10, \"stations\": \"UK001L;UK0035;UK005H;UK006L;UK007A;UK0087;UK008J;UK009D;UK00AL;UK00BF;\"},\n{\"_localtime\": \"_20251008_204935\", \"_mjd\": 60956.9, \"_sol\": 195.473, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.947792, \"_ra_o\": 273.037, \"_dc_o\": 50.9987, \"_ra_t\": 269.913, \"_dc_t\": 50.0982, \"_elng\": 269.803, \"_elat\": 73.5358, \"_vo\": 23.2232, \"_vi\": 23.2232, \"_vg\": 20.3955, \"_vs\": 40.4272, \"_a\": 6.2624, \"_q\": 0.998243, \"_e\": 0.840597, \"_p\": 15.6715, \"_peri\": 176.677, \"_node\": 195.474, \"_incl\": 28.9498, \"_stream\": \"spo\", \"_mag\": 2.09, \"_dur\": 0.629863, \"_lng1\": -5.03991, \"_lat1\": 53.1935, \"_H1\": 98.6107, \"_lng2\": -4.94949, \"_lat2\": 53.1759, \"_H2\": 87.7735, \"_LD21\": 12.6942, \"_az1r\": 287.425, \"_ev1r\": 58.6546, \"_Nts\": 30.0, \"_Nos\": 2.0, \"_leap\": 93.3333, \"_tme\": 1.0, \"_dt\": 0.001061, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_204935.536_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 8.8e-05, \"pi\": 12.1515, \"Q\": 11.5266, \"true_anom\": 3.32094, \"EA\": 0.977552, \"MA\": 0.155864, \"Tj\": 1.8709, \"T\": 15.6715, \"last_peri\": \"2025-10-06\", \"jacchia1\": 41.6526, \"Jacchia2\": 6.21527, \"numstats\": 2, \"stations\": \"UK00C9;UK00D9;\"},\n{\"_localtime\": \"_20251008_210602\", \"_mjd\": 60956.9, \"_sol\": 195.484, \"_ID1\": \"_(UNIFIED_13)\", \"_amag\": 0.266482, \"_ra_o\": 30.2264, \"_dc_o\": 10.0073, \"_ra_t\": 31.3288, \"_dc_t\": 7.90826, \"_elng\": 31.9295, \"_elat\": -4.50857, \"_vo\": 30.8103, \"_vi\": 30.8103, \"_vg\": 28.7398, \"_vs\": 35.4641, \"_a\": 1.71156, \"_q\": 0.292388, \"_e\": 0.829169, \"_p\": 2.23919, \"_peri\": 124.089, \"_node\": 15.4768, \"_incl\": 5.94196, \"_stream\": \"STA\", \"_mag\": 0.45, \"_dur\": 1.3133, \"_lng1\": -2.28017, \"_lat1\": 52.3003, \"_H1\": 100.712, \"_lng2\": -2.75789, \"_lat2\": 52.4041, \"_H2\": 83.1232, \"_LD21\": 38.3597, \"_az1r\": 109.937, \"_ev1r\": 27.0256, \"_Nts\": 265.0, \"_Nos\": 13.0, \"_leap\": 95.0943, \"_tme\": 1.0, \"_dt\": 0.000113, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_210602.062_UK\", \"iau\": 2, \"name\": \"Southern Taurids \", \"mass\": 0.000119, \"pi\": 139.565, \"Q\": 3.13074, \"true_anom\": 235.919, \"EA\": -59.8615, \"MA\": 341.224, \"Tj\": 3.67835, \"T\": 2.23919, \"last_peri\": \"2023-08-25\", \"jacchia1\": 0.047725, \"Jacchia2\": 7.27494, \"numstats\": 13, \"stations\": \"UK0006;UK000S;UK000Z;UK001L;UK0050;UK0062;UK0067;UK0083;UK008J;UK009D;UK00B0;UK00BK;UK00CQ;\"},\n{\"_localtime\": \"_20251008_211017\", \"_mjd\": 60956.9, \"_sol\": 195.487, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.233613, \"_ra_o\": 16.2964, \"_dc_o\": 41.052, \"_ra_t\": 16.4803, \"_dc_t\": 40.6662, \"_elng\": 32.1199, \"_elat\": 30.817, \"_vo\": 46.6926, \"_vi\": 46.6926, \"_vg\": 45.3526, \"_vs\": 48.1387, \"_a\": -1.63883, \"_q\": 0.440203, \"_e\": 1.26861, \"_p\": 0.0, \"_peri\": 270.015, \"_node\": 195.487, \"_incl\": 51.2499, \"_stream\": \"spo\", \"_mag\": 0.76, \"_dur\": 0.283744, \"_lng1\": -4.16724, \"_lat1\": 49.7297, \"_H1\": 97.2205, \"_lng2\": -4.25991, \"_lat2\": 49.7276, \"_H2\": 86.6551, \"_LD21\": 12.2154, \"_az1r\": 88.0023, \"_ev1r\": 57.6654, \"_Nts\": 15.0, \"_Nos\": 2.0, \"_leap\": 86.6667, \"_tme\": 1.0, \"_dt\": 0.000213, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_211017.523_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.9e-05, \"pi\": 105.503, \"Q\": -3.71785, \"true_anom\": 269.984, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.62723, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.047425, \"Jacchia2\": 33.3692, \"numstats\": 2, \"stations\": \"UK0021;UK00A1;\"},\n{\"_localtime\": \"_20251008_211122\", \"_mjd\": 60956.9, \"_sol\": 195.488, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": -0.336077, \"_ra_o\": 359.509, \"_dc_o\": 5.22074, \"_ra_t\": 1.02906, \"_dc_t\": 0.832007, \"_elng\": 1.27505, \"_elat\": 0.354092, \"_vo\": 20.5847, \"_vi\": 20.5847, \"_vg\": 17.3295, \"_vs\": 38.1904, \"_a\": 2.79402, \"_q\": 0.753998, \"_e\": 0.730139, \"_p\": 4.6703, \"_peri\": 245.015, \"_node\": 195.711, \"_incl\": 0.183885, \"_stream\": \"spo\", \"_mag\": -0.09, \"_dur\": 0.869894, \"_lng1\": -4.51399, \"_lat1\": 49.7982, \"_H1\": 91.4978, \"_lng2\": -4.61067, \"_lat2\": 49.8761, \"_H2\": 82.366, \"_LD21\": 16.8106, \"_az1r\": 142.171, \"_ev1r\": 39.4259, \"_Nts\": 97.0, \"_Nos\": 6.0, \"_leap\": 93.8144, \"_tme\": 1.0, \"_dt\": 0.002835, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_211122.738_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000222, \"pi\": 80.7258, \"Q\": 4.83404, \"true_anom\": 294.762, \"EA\": -28.3699, \"MA\": 351.508, \"Tj\": 2.86397, \"T\": 4.6703, \"last_peri\": \"2021-03-18\", \"jacchia1\": 0.00177, \"Jacchia2\": 13.5025, \"numstats\": 6, \"stations\": \"UK000H;UK0021;UK0024;UK003K;UK00A1;UK00AU;\"},\n{\"_localtime\": \"_20251008_211407\", \"_mjd\": 60956.9, \"_sol\": 195.49, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -0.079844, \"_ra_o\": 4.23406, \"_dc_o\": 2.09842, \"_ra_t\": 4.87264, \"_dc_t\": -0.810264, \"_elng\": 4.15067, \"_elat\": -2.67993, \"_vo\": 26.3341, \"_vi\": 26.3341, \"_vg\": 23.8771, \"_vs\": 41.9605, \"_a\": 57.8569, \"_q\": 0.673638, \"_e\": 0.988357, \"_p\": 440.082, \"_peri\": 69.8539, \"_node\": 15.4677, \"_incl\": 1.85062, \"_stream\": \"spo\", \"_mag\": -0.01, \"_dur\": 0.970257, \"_lng1\": 1.34519, \"_lat1\": 52.866, \"_H1\": 97.1731, \"_lng2\": 1.18298, \"_lat2\": 53.0108, \"_H2\": 83.4154, \"_LD21\": 22.8761, \"_az1r\": 147.042, \"_ev1r\": 34.6536, \"_Nts\": 66.0, \"_Nos\": 5.0, \"_leap\": 92.4242, \"_tme\": 1.0, \"_dt\": 0.000289, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_211407.649_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000195, \"pi\": 85.3215, \"Q\": 115.04, \"true_anom\": 290.168, \"EA\": -6.11502, \"MA\": 359.917, \"Tj\": 1.10406, \"T\": 440.082, \"last_peri\": \"1585-10-10\", \"jacchia1\": 0.003529, \"Jacchia2\": 13.2796, \"numstats\": 5, \"stations\": \"UK002F;UK006P;UK007Y;UK008F;UK009M;\"},\n{\"_localtime\": \"_20251008_211806\", \"_mjd\": 60956.9, \"_sol\": 195.493, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.150085, \"_ra_o\": 92.2169, \"_dc_o\": 58.8106, \"_ra_t\": 92.312, \"_dc_t\": 58.4241, \"_elng\": 91.4776, \"_elat\": 34.9983, \"_vo\": 60.783, \"_vi\": 60.783, \"_vg\": 59.7616, \"_vs\": 40.5062, \"_a\": 6.55847, \"_q\": 0.898754, \"_e\": 0.862963, \"_p\": 16.7959, \"_peri\": 218.43, \"_node\": 195.492, \"_incl\": 117.31, \"_stream\": \"ACL\", \"_mag\": 0.88, \"_dur\": 0.279452, \"_lng1\": 0.611696, \"_lat1\": 52.9551, \"_H1\": 110.336, \"_lng2\": 0.497271, \"_lat2\": 52.8554, \"_H2\": 101.246, \"_LD21\": 16.4227, \"_az1r\": 34.5408, \"_ev1r\": 33.6633, \"_Nts\": 15.0, \"_Nos\": 2.0, \"_leap\": 86.6667, \"_tme\": 1.0, \"_dt\": 0.002148, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_211806.932_UK\", \"iau\": 715, \"name\": \"alpha Camelopardalids \", \"mass\": 1.9e-05, \"pi\": 53.9222, \"Q\": 12.2182, \"true_anom\": 321.569, \"EA\": -10.8002, \"MA\": 358.465, \"Tj\": 0.273048, \"T\": 16.7959, \"last_peri\": \"2009-01-17\", \"jacchia1\": 0.054781, \"Jacchia2\": 31.174, \"numstats\": 2, \"stations\": \"UK002F;UK006P;\"},\n{\"_localtime\": \"_20251008_211836\", \"_mjd\": 60956.9, \"_sol\": 195.493, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.226989, \"_ra_o\": 29.8487, \"_dc_o\": 9.06306, \"_ra_t\": 30.9097, \"_dc_t\": 6.85441, \"_elng\": 31.1759, \"_elat\": -5.35689, \"_vo\": 30.4682, \"_vi\": 30.4682, \"_vg\": 28.3724, \"_vs\": 35.5633, \"_a\": 1.73514, \"_q\": 0.307445, \"_e\": 0.822813, \"_p\": 2.28562, \"_peri\": 122.253, \"_node\": 15.4863, \"_incl\": 6.8106, \"_stream\": \"STA\", \"_mag\": 1.03, \"_dur\": 1.20839, \"_lng1\": -3.84083, \"_lat1\": 53.6681, \"_H1\": 100.064, \"_lng2\": -4.25011, \"_lat2\": 53.7691, \"_H2\": 85.253, \"_LD21\": 36.8788, \"_az1r\": 112.981, \"_ev1r\": 26.8529, \"_Nts\": 48.0, \"_Nos\": 2.0, \"_leap\": 95.8333, \"_tme\": 1.0, \"_dt\": 0.00107, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_211836.808_UK\", \"iau\": 2, \"name\": \"Southern Taurids \", \"mass\": 0.000175, \"pi\": 137.74, \"Q\": 3.16284, \"true_anom\": 237.753, \"EA\": -58.9616, \"MA\": 341.432, \"Tj\": 3.651, \"T\": 2.28562, \"last_peri\": \"2023-08-09\", \"jacchia1\": -1.1e-05, \"Jacchia2\": 15.7368, \"numstats\": 2, \"stations\": \"UK00C9;UK00D9;\"},\n{\"_localtime\": \"_20251008_212312\", \"_mjd\": 60956.9, \"_sol\": 195.496, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.021812, \"_ra_o\": 3.69965, \"_dc_o\": 15.6743, \"_ra_t\": 5.0052, \"_dc_t\": 12.6857, \"_elng\": 9.66083, \"_elat\": 9.64997, \"_vo\": 21.9122, \"_vi\": 21.9122, \"_vg\": 18.8815, \"_vs\": 37.0895, \"_a\": 2.21568, \"_q\": 0.672642, \"_e\": 0.696417, \"_p\": 3.29807, \"_peri\": 258.21, \"_node\": 195.503, \"_incl\": 5.70742, \"_stream\": \"spo\", \"_mag\": 0.67, \"_dur\": 0.986792, \"_lng1\": -5.22229, \"_lat1\": 49.7829, \"_H1\": 81.5541, \"_lng2\": -5.29607, \"_lat2\": 49.8267, \"_H2\": 73.596, \"_LD21\": 10.9768, \"_az1r\": 133.389, \"_ev1r\": 47.9684, \"_Nts\": 31.0, \"_Nos\": 3.0, \"_leap\": 90.3226, \"_tme\": 1.0, \"_dt\": 0.005642, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212312.677_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000423, \"pi\": 93.7123, \"Q\": 3.75871, \"true_anom\": 281.783, \"EA\": -37.9552, \"MA\": 346.586, \"Tj\": 3.2807, \"T\": 3.29807, \"last_peri\": \"2022-08-06\", \"jacchia1\": -0.511061, \"Jacchia2\": 11.7728, \"numstats\": 3, \"stations\": \"UK0021;UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_212414\", \"_mjd\": 60956.9, \"_sol\": 195.497, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.07501, \"_ra_o\": 300.701, \"_dc_o\": 37.1759, \"_ra_t\": 296.199, \"_dc_t\": 33.7052, \"_elng\": 308.355, \"_elat\": 53.7101, \"_vo\": 16.0499, \"_vi\": 16.0499, \"_vg\": 11.5777, \"_vs\": 37.4321, \"_a\": 2.36655, \"_q\": 0.989364, \"_e\": 0.581939, \"_p\": 3.64061, \"_peri\": 193.151, \"_node\": 195.499, \"_incl\": 14.4928, \"_stream\": \"spo\", \"_mag\": 2.06, \"_dur\": 0.752175, \"_lng1\": -2.07667, \"_lat1\": 52.7763, \"_H1\": 87.3378, \"_lng2\": -1.99896, \"_lat2\": 52.7916, \"_H2\": 77.0833, \"_LD21\": 10.9346, \"_az1r\": 252.536, \"_ev1r\": 60.5637, \"_Nts\": 47.0, \"_Nos\": 3.0, \"_leap\": 93.617, \"_tme\": 1.0, \"_dt\": 0.000562, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212414.140_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000128, \"pi\": 28.6503, \"Q\": 3.74374, \"true_anom\": 346.846, \"EA\": -6.78393, \"MA\": 357.155, \"Tj\": 3.26098, \"T\": 3.64061, \"last_peri\": \"2022-02-27\", \"jacchia1\": 0.042848, \"Jacchia2\": 12.6593, \"numstats\": 3, \"stations\": \"UK001L;UK0098;UK00BF;\"},\n{\"_localtime\": \"_20251008_212536\", \"_mjd\": 60956.9, \"_sol\": 195.498, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 1.3529, \"_ra_o\": 325.11, \"_dc_o\": 23.7341, \"_ra_t\": 324.0, \"_dc_t\": 20.8888, \"_elng\": 334.407, \"_elat\": 33.0632, \"_vo\": 19.3298, \"_vi\": 19.3298, \"_vg\": 15.8229, \"_vs\": 40.8384, \"_a\": 8.19573, \"_q\": 0.928923, \"_e\": 0.886658, \"_p\": 23.4629, \"_peri\": 211.706, \"_node\": 195.5, \"_incl\": 12.6367, \"_stream\": \"spo\", \"_mag\": 2.06, \"_dur\": 0.85015, \"_lng1\": -2.80443, \"_lat1\": 50.3201, \"_H1\": 100.934, \"_lng2\": -2.77243, \"_lat2\": 50.3754, \"_H2\": 88.2477, \"_LD21\": 14.3785, \"_az1r\": 202.362, \"_ev1r\": 62.011, \"_Nts\": 66.0, \"_Nos\": 4.0, \"_leap\": 93.9394, \"_tme\": 1.0, \"_dt\": 0.007719, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212536.018_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.8e-05, \"pi\": 47.2067, \"Q\": 15.4625, \"true_anom\": 328.291, \"EA\": -7.96384, \"MA\": 359.075, \"Tj\": 1.76749, \"T\": 23.4629, \"last_peri\": \"2002-05-14\", \"jacchia1\": 5.01004, \"Jacchia2\": 7.15604, \"numstats\": 4, \"stations\": \"UK0006;UK000H;UK000T;UK0025;\"},\n{\"_localtime\": \"_20251008_212617\", \"_mjd\": 60956.9, \"_sol\": 195.498, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.084124, \"_ra_o\": 340.097, \"_dc_o\": 37.5909, \"_ra_t\": 340.305, \"_dc_t\": 35.6291, \"_elng\": 358.532, \"_elat\": 40.0477, \"_vo\": 17.391, \"_vi\": 17.391, \"_vg\": 13.3697, \"_vs\": 35.4195, \"_a\": 1.70117, \"_q\": 0.86733, \"_e\": 0.490156, \"_p\": 2.21881, \"_peri\": 233.178, \"_node\": 195.501, \"_incl\": 14.7063, \"_stream\": \"spo\", \"_mag\": 0.17, \"_dur\": 0.206996, \"_lng1\": -4.18673, \"_lat1\": 51.5791, \"_H1\": 79.44, \"_lng2\": -4.19098, \"_lat2\": 51.5866, \"_H2\": 76.0524, \"_LD21\": 3.51403, \"_az1r\": 164.072, \"_ev1r\": 75.5835, \"_Nts\": 22.0, \"_Nos\": 4.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.000642, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212617.976_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 9.2e-05, \"pi\": 68.6791, \"Q\": 2.535, \"true_anom\": 306.819, \"EA\": -32.6391, \"MA\": 342.508, \"Tj\": 4.02327, \"T\": 2.21881, \"last_peri\": \"2023-08-29\", \"jacchia1\": 0.376218, \"Jacchia2\": 22.6222, \"numstats\": 4, \"stations\": \"UK007A;UK009D;UK009S;UK00BD;\"},\n{\"_localtime\": \"_20251008_212724\", \"_mjd\": 60956.9, \"_sol\": 195.499, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": -0.359914, \"_ra_o\": 74.2971, \"_dc_o\": 33.3958, \"_ra_t\": 74.3224, \"_dc_t\": 32.916, \"_elng\": 76.6742, \"_elat\": 10.2006, \"_vo\": 65.4303, \"_vi\": 65.4303, \"_vg\": 64.4834, \"_vs\": 41.9854, \"_a\": 66.9585, \"_q\": 0.449398, \"_e\": 0.993288, \"_p\": 547.911, \"_peri\": 275.969, \"_node\": 195.497, \"_incl\": 156.123, \"_stream\": \"spo\", \"_mag\": 0.53, \"_dur\": 0.40372, \"_lng1\": -4.56168, \"_lat1\": 52.3923, \"_H1\": 115.345, \"_lng2\": -4.87366, \"_lat2\": 52.2898, \"_H2\": 106.139, \"_LD21\": 26.286, \"_az1r\": 61.7831, \"_ev1r\": 20.7438, \"_Nts\": 43.0, \"_Nos\": 6.0, \"_leap\": 86.0465, \"_tme\": 1.0, \"_dt\": 0.000962, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212724.007_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1e-05, \"pi\": 111.466, \"Q\": 133.468, \"true_anom\": 264.029, \"EA\": -7.37094, \"MA\": 359.93, \"Tj\": -0.681022, \"T\": 547.911, \"last_peri\": \"1477-12-11\", \"jacchia1\": 0.012986, \"Jacchia2\": 26.5603, \"numstats\": 6, \"stations\": \"UK008J;UK009D;UK00BK;UK00C9;UK00CQ;UK00D9;\"},\n{\"_localtime\": \"_20251008_212739\", \"_mjd\": 60956.9, \"_sol\": 195.499, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.0545, \"_ra_o\": 150.004, \"_dc_o\": 64.7535, \"_ra_t\": 149.63, \"_dc_t\": 64.024, \"_elng\": 123.976, \"_elat\": 47.4533, \"_vo\": 51.6448, \"_vi\": 51.6448, \"_vg\": 50.4389, \"_vs\": 38.6523, \"_a\": 3.14558, \"_q\": 0.912974, \"_e\": 0.70976, \"_p\": 5.57894, \"_peri\": 142.424, \"_node\": 195.499, \"_incl\": 93.9258, \"_stream\": \"spo\", \"_mag\": 1.53, \"_dur\": 0.279008, \"_lng1\": -5.32096, \"_lat1\": 50.8391, \"_H1\": 110.753, \"_lng2\": -5.32851, \"_lat2\": 50.7263, \"_H2\": 104.641, \"_LD21\": 14.1527, \"_az1r\": 2.05779, \"_ev1r\": 25.6423, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.000223, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212739.469_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-06, \"pi\": 337.923, \"Q\": 5.37819, \"true_anom\": 37.5756, \"EA\": 15.9575, \"MA\": 4.77737, \"Tj\": 1.57948, \"T\": 5.57894, \"last_peri\": \"2025-09-11\", \"jacchia1\": 2e-06, \"Jacchia2\": 69.472, \"numstats\": 2, \"stations\": \"UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20251008_212825\", \"_mjd\": 60956.9, \"_sol\": 195.5, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.52598, \"_ra_o\": 91.9837, \"_dc_o\": 50.6231, \"_ra_t\": 91.9448, \"_dc_t\": 50.2718, \"_elng\": 91.393, \"_elat\": 26.8435, \"_vo\": 69.1088, \"_vi\": 69.1088, \"_vg\": 68.2113, \"_vs\": 45.1437, \"_a\": -3.38681, \"_q\": 0.895784, \"_e\": 1.26449, \"_p\": 0.0, \"_peri\": 215.415, \"_node\": 195.499, \"_incl\": 133.497, \"_stream\": \"spo\", \"_mag\": 2.04, \"_dur\": 0.278175, \"_lng1\": -1.29236, \"_lat1\": 51.5713, \"_H1\": 102.952, \"_lng2\": -1.44355, \"_lat2\": 51.4621, \"_H2\": 94.8131, \"_LD21\": 18.1746, \"_az1r\": 40.6583, \"_ev1r\": 26.6726, \"_Nts\": 12.0, \"_Nos\": 2.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 6.2e-05, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212825.818_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2e-06, \"pi\": 50.9143, \"Q\": -7.66941, \"true_anom\": 324.584, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.39608, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000S;UK009G;\"},\n{\"_localtime\": \"_20251008_212908\", \"_mjd\": 60956.9, \"_sol\": 195.5, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -0.731106, \"_ra_o\": 80.1331, \"_dc_o\": 78.5929, \"_ra_t\": 81.8114, \"_dc_t\": 78.3131, \"_elng\": 87.1198, \"_elat\": 54.9573, \"_vo\": 49.193, \"_vi\": 49.193, \"_vg\": 47.9251, \"_vs\": 40.4646, \"_a\": 6.39906, \"_q\": 0.943266, \"_e\": 0.852593, \"_p\": 16.1873, \"_peri\": 208.506, \"_node\": 195.5, \"_incl\": 84.637, \"_stream\": \"spo\", \"_mag\": 0.16, \"_dur\": 0.295665, \"_lng1\": -2.21839, \"_lat1\": 50.1798, \"_H1\": 108.441, \"_lng2\": -2.2592, \"_lat2\": 50.0929, \"_H2\": 97.6503, \"_LD21\": 14.2244, \"_az1r\": 16.3167, \"_ev1r\": 46.5434, \"_Nts\": 43.0, \"_Nos\": 7.0, \"_leap\": 83.7209, \"_tme\": 1.0, \"_dt\": 0.00013, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_212908.235_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.4e-05, \"pi\": 44.0061, \"Q\": 11.8548, \"true_anom\": 331.493, \"EA\": -8.19721, \"MA\": 358.768, \"Tj\": 0.921607, \"T\": 16.1873, \"last_peri\": \"2009-08-21\", \"jacchia1\": 7.33643, \"Jacchia2\": 4.50653, \"numstats\": 7, \"stations\": \"UK0006;UK000H;UK000T;UK0025;UK00B5;UK00BW;UK00CE;\"},\n{\"_localtime\": \"_20251008_213233\", \"_mjd\": 60956.9, \"_sol\": 195.502, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": -0.697079, \"_ra_o\": 235.413, \"_dc_o\": 72.9688, \"_ra_t\": 231.647, \"_dc_t\": 72.3078, \"_elng\": 139.637, \"_elat\": 75.6712, \"_vo\": 33.4174, \"_vi\": 33.4174, \"_vg\": 31.5193, \"_vs\": 38.6351, \"_a\": 3.13086, \"_q\": 0.986566, \"_e\": 0.684889, \"_p\": 5.53981, \"_peri\": 165.781, \"_node\": 195.503, \"_incl\": 52.6111, \"_stream\": \"spo\", \"_mag\": 0.27, \"_dur\": 0.920556, \"_lng1\": -2.22712, \"_lat1\": 52.657, \"_H1\": 101.361, \"_lng2\": -2.11356, \"_lat2\": 52.4982, \"_H2\": 81.0688, \"_LD21\": 30.6188, \"_az1r\": 335.764, \"_ev1r\": 46.0142, \"_Nts\": 158.0, \"_Nos\": 11.0, \"_leap\": 93.038, \"_tme\": 1.0, \"_dt\": 0.005296, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_213233.986_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000121, \"pi\": 1.28427, \"Q\": 5.27514, \"true_anom\": 14.2178, \"EA\": 6.17438, \"MA\": 1.95379, \"Tj\": 2.3486, \"T\": 5.53981, \"last_peri\": \"2025-09-27\", \"jacchia1\": -0.30256, \"Jacchia2\": 8.77221, \"numstats\": 11, \"stations\": \"UK000S;UK000Z;UK001L;UK001Z;UK0030;UK006L;UK007A;UK008J;UK0098;UK009D;UK00BF;\"},\n{\"_localtime\": \"_20251008_213329\", \"_mjd\": 60956.9, \"_sol\": 195.503, \"_ID1\": \"_(UNIFIED_13)\", \"_amag\": -0.467386, \"_ra_o\": 258.518, \"_dc_o\": 51.2951, \"_ra_t\": 253.772, \"_dc_t\": 49.2575, \"_elng\": 236.31, \"_elat\": 70.8028, \"_vo\": 22.4304, \"_vi\": 22.4304, \"_vg\": 19.485, \"_vs\": 38.8932, \"_a\": 3.36879, \"_q\": 0.983863, \"_e\": 0.707948, \"_p\": 6.18317, \"_peri\": 164.456, \"_node\": 195.504, \"_incl\": 28.4369, \"_stream\": \"spo\", \"_mag\": -0.22, \"_dur\": 1.01985, \"_lng1\": -1.4866, \"_lat1\": 51.3497, \"_H1\": 89.732, \"_lng2\": -1.32649, \"_lat2\": 51.2811, \"_H2\": 77.2191, \"_LD21\": 26.1005, \"_az1r\": 303.682, \"_ev1r\": 42.0622, \"_Nts\": 237.0, \"_Nos\": 13.0, \"_leap\": 94.5148, \"_tme\": 1.0, \"_dt\": 0.000246, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_213329.236_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000266, \"pi\": 359.96, \"Q\": 5.75372, \"true_anom\": 15.5425, \"EA\": 6.45996, \"MA\": 1.89633, \"Tj\": 2.54419, \"T\": 6.18317, \"last_peri\": \"2025-09-27\", \"jacchia1\": 0.466932, \"Jacchia2\": 6.43361, \"numstats\": 13, \"stations\": \"UK0001;UK0006;UK000S;UK001Z;UK003D;UK0041;UK0049;UK007B;UK009G;UK009V;UK00A5;UK00B2;UK00B6;\"},\n{\"_localtime\": \"_20251008_213418\", \"_mjd\": 60956.9, \"_sol\": 195.504, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.324535, \"_ra_o\": 279.874, \"_dc_o\": 51.7252, \"_ra_t\": 274.672, \"_dc_t\": 50.1142, \"_elng\": 280.522, \"_elat\": 73.3813, \"_vo\": 19.1154, \"_vi\": 19.1154, \"_vg\": 15.5537, \"_vs\": 37.3346, \"_a\": 2.32137, \"_q\": 0.998993, \"_e\": 0.569654, \"_p\": 3.53686, \"_peri\": 180.441, \"_node\": 195.505, \"_incl\": 23.5324, \"_stream\": \"spo\", \"_mag\": 1.71, \"_dur\": 0.828735, \"_lng1\": -5.0313, \"_lat1\": 53.0409, \"_H1\": 91.2555, \"_lng2\": -4.91817, \"_lat2\": 53.0139, \"_H2\": 78.4839, \"_LD21\": 15.338, \"_az1r\": 291.022, \"_ev1r\": 56.4291, \"_Nts\": 70.0, \"_Nos\": 5.0, \"_leap\": 92.8571, \"_tme\": 1.0, \"_dt\": 0.00254, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_213418.276_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000172, \"pi\": 15.9461, \"Q\": 3.64375, \"true_anom\": 359.557, \"EA\": -0.231818, \"MA\": 359.9, \"Tj\": 3.24841, \"T\": 3.53686, \"last_peri\": \"2022-03-27\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 5, \"stations\": \"UK001L;UK008J;UK00BK;UK00C9;UK00D9;\"},\n{\"_localtime\": \"_20251008_213703\", \"_mjd\": 60956.9, \"_sol\": 195.506, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.602085, \"_ra_o\": 29.3449, \"_dc_o\": 9.43887, \"_ra_t\": 30.3935, \"_dc_t\": 7.37606, \"_elng\": 30.8728, \"_elat\": -4.69102, \"_vo\": 30.4354, \"_vi\": 30.4354, \"_vg\": 28.3368, \"_vs\": 35.6625, \"_a\": 1.75945, \"_q\": 0.310472, \"_e\": 0.82354, \"_p\": 2.33381, \"_peri\": 121.75, \"_node\": 15.4986, \"_incl\": 5.92415, \"_stream\": \"STA\", \"_mag\": 1.15, \"_dur\": 1.05791, \"_lng1\": -6.1654, \"_lat1\": 51.4127, \"_H1\": 98.2484, \"_lng2\": -6.52926, \"_lat2\": 51.5131, \"_H2\": 82.5403, \"_LD21\": 30.4762, \"_az1r\": 114.221, \"_ev1r\": 29.6273, \"_Nts\": 44.0, \"_Nos\": 3.0, \"_leap\": 93.1818, \"_tme\": 1.0, \"_dt\": 0.002167, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_213703.406_UK\", \"iau\": 2, \"name\": \"Southern Taurids \", \"mass\": 8.9e-05, \"pi\": 137.249, \"Q\": 3.20842, \"true_anom\": 238.257, \"EA\": -58.3442, \"MA\": 341.821, \"Tj\": 3.61403, \"T\": 2.33381, \"last_peri\": \"2023-07-22\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK00A1;UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20251008_214049\", \"_mjd\": 60956.9, \"_sol\": 195.508, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -0.858649, \"_ra_o\": 288.994, \"_dc_o\": 45.3131, \"_ra_t\": 283.046, \"_dc_t\": 43.0724, \"_elng\": 293.388, \"_elat\": 65.4543, \"_vo\": 17.0843, \"_vi\": 17.0843, \"_vg\": 12.9732, \"_vs\": 37.0863, \"_a\": 2.21432, \"_q\": 0.997455, \"_e\": 0.549544, \"_p\": 3.29505, \"_peri\": 185.358, \"_node\": 195.51, \"_incl\": 18.5685, \"_stream\": \"spo\", \"_mag\": -1.31, \"_dur\": 2.57882, \"_lng1\": -4.24735, \"_lat1\": 50.0595, \"_H1\": 85.0938, \"_lng2\": -3.95865, \"_lat2\": 50.0204, \"_H2\": 51.3997, \"_LD21\": 41.2951, \"_az1r\": 281.373, \"_ev1r\": 56.8145, \"_Nts\": 463.0, \"_Nos\": 9.0, \"_leap\": 98.0562, \"_tme\": 1.0, \"_dt\": 0.00042, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_214049.982_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.002556, \"pi\": 20.8674, \"Q\": 3.43119, \"true_anom\": 354.64, \"EA\": -2.89118, \"MA\": 358.697, \"Tj\": 3.38347, \"T\": 3.29505, \"last_peri\": \"2022-06-27\", \"jacchia1\": 1.65449, \"Jacchia2\": 2.88613, \"numstats\": 9, \"stations\": \"UK000H;UK0021;UK0024;UK003K;UK00A1;UK00AU;UK00B5;UK00BK;UK00BW;\"},\n{\"_localtime\": \"_20251008_214314\", \"_mjd\": 60956.9, \"_sol\": 195.51, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.507122, \"_ra_o\": 261.938, \"_dc_o\": 52.319, \"_ra_t\": 260.13, \"_dc_t\": 51.7478, \"_elng\": 246.774, \"_elat\": 74.3897, \"_vo\": 35.6393, \"_vi\": 35.6393, \"_vg\": 33.8607, \"_vs\": 49.5262, \"_a\": -1.31074, \"_q\": 0.990321, \"_e\": 1.75554, \"_p\": 0.0, \"_peri\": 170.524, \"_node\": 195.51, \"_incl\": 41.4678, \"_stream\": \"spo\", \"_mag\": 1.96, \"_dur\": 0.322851, \"_lng1\": -7.35943, \"_lat1\": 51.4519, \"_H1\": 83.6876, \"_lng2\": -7.27215, \"_lat2\": 51.4177, \"_H2\": 76.0497, \"_LD21\": 7.67427, \"_az1r\": 301.72, \"_ev1r\": 46.2319, \"_Nts\": 15.0, \"_Nos\": 2.0, \"_leap\": 86.6667, \"_tme\": 1.0, \"_dt\": 0.001412, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_214314.133_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.5e-05, \"pi\": 6.03487, \"Q\": -3.61181, \"true_anom\": 9.47447, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.88526, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": -0.000116, \"Jacchia2\": 46.4832, \"numstats\": 2, \"stations\": \"UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_214405\", \"_mjd\": 60956.9, \"_sol\": 195.51, \"_ID1\": \"_(UNIFIED_10)\", \"_amag\": -1.46309, \"_ra_o\": 92.807, \"_dc_o\": 30.1005, \"_ra_t\": 92.7554, \"_dc_t\": 29.6453, \"_elng\": 92.4088, \"_elat\": 6.23062, \"_vo\": 70.7498, \"_vi\": 70.7498, \"_vg\": 69.875, \"_vs\": 41.8838, \"_a\": 40.7368, \"_q\": 0.84728, \"_e\": 0.979201, \"_p\": 260.005, \"_peri\": 226.126, \"_node\": 195.507, \"_incl\": 168.669, \"_stream\": \"EGE\", \"_mag\": -0.18, \"_dur\": 0.860543, \"_lng1\": -0.839658, \"_lat1\": 54.8035, \"_H1\": 114.252, \"_lng2\": -1.51219, \"_lat2\": 54.5487, \"_H2\": 101.455, \"_LD21\": 58.774, \"_az1r\": 57.0389, \"_ev1r\": 13.977, \"_Nts\": 185.0, \"_Nos\": 10.0, \"_leap\": 94.5946, \"_tme\": 1.0, \"_dt\": 0.000129, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_214405.959_UK\", \"iau\": 23, \"name\": \"epsilon Geminids \", \"mass\": 7.9e-05, \"pi\": 61.6333, \"Q\": 80.6263, \"true_anom\": 313.87, \"EA\": -4.99887, \"MA\": 359.89, \"Tj\": -0.985412, \"T\": 260.005, \"last_peri\": \"1765-11-01\", \"jacchia1\": 0.0, \"Jacchia2\": 36.6089, \"numstats\": 10, \"stations\": \"UK001L;UK002Z;UK003T;UK005H;UK006C;UK006T;UK006V;UK007Y;UK008G;UK00AM;\"},\n{\"_localtime\": \"_20251008_214835\", \"_mjd\": 60956.9, \"_sol\": 195.513, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.297012, \"_ra_o\": 235.369, \"_dc_o\": 77.0822, \"_ra_t\": 230.649, \"_dc_t\": 76.4099, \"_elng\": 124.118, \"_elat\": 74.5959, \"_vo\": 33.8334, \"_vi\": 33.8334, \"_vg\": 31.9583, \"_vs\": 37.7825, \"_a\": 2.54551, \"_q\": 0.994459, \"_e\": 0.609328, \"_p\": 4.06128, \"_peri\": 171.108, \"_node\": 195.514, \"_incl\": 54.7793, \"_stream\": \"spo\", \"_mag\": 0.86, \"_dur\": 0.484524, \"_lng1\": -0.504284, \"_lat1\": 50.8686, \"_H1\": 96.7816, \"_lng2\": -0.458088, \"_lat2\": 50.7713, \"_H2\": 85.2088, \"_LD21\": 16.9117, \"_az1r\": 342.538, \"_ev1r\": 45.2365, \"_Nts\": 20.0, \"_Nos\": 2.0, \"_leap\": 90.0, \"_tme\": 1.0, \"_dt\": 0.001637, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_214835.578_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.8e-05, \"pi\": 6.62189, \"Q\": 4.09656, \"true_anom\": 8.89122, \"EA\": 4.38738, \"MA\": 1.71664, \"Tj\": 2.68413, \"T\": 4.06128, \"last_peri\": \"2025-10-01\", \"jacchia1\": 0.000145, \"Jacchia2\": 29.1699, \"numstats\": 2, \"stations\": \"UK009V;UK00B6;\"},\n{\"_localtime\": \"_20251008_214954\", \"_mjd\": 60956.9, \"_sol\": 195.514, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.38048, \"_ra_o\": 285.949, \"_dc_o\": 65.8189, \"_ra_t\": 282.301, \"_dc_t\": 65.8323, \"_elng\": 357.298, \"_elat\": 84.9905, \"_vo\": 26.8841, \"_vi\": 26.8841, \"_vg\": 24.4826, \"_vs\": 39.1088, \"_a\": 3.59843, \"_q\": 0.994056, \"_e\": 0.723753, \"_p\": 6.82607, \"_peri\": 188.807, \"_node\": 195.515, \"_incl\": 38.6809, \"_stream\": \"spo\", \"_mag\": 1.87, \"_dur\": 0.480564, \"_lng1\": -5.66496, \"_lat1\": 50.4999, \"_H1\": 96.6861, \"_lng2\": -5.61146, \"_lat2\": 50.4579, \"_H2\": 86.3251, \"_LD21\": 12.617, \"_az1r\": 319.982, \"_ev1r\": 59.1349, \"_Nts\": 22.0, \"_Nos\": 2.0, \"_leap\": 90.9091, \"_tme\": 1.0, \"_dt\": 0.000825, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_214954.907_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.5e-05, \"pi\": 24.3222, \"Q\": 6.20281, \"true_anom\": 351.192, \"EA\": -3.53198, \"MA\": 359.023, \"Tj\": 2.34213, \"T\": 6.82607, \"last_peri\": \"2018-12-18\", \"jacchia1\": 46.5222, \"Jacchia2\": 3.7785, \"numstats\": 2, \"stations\": \"UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20251008_215036\", \"_mjd\": 60956.9, \"_sol\": 195.515, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.885699, \"_ra_o\": 356.146, \"_dc_o\": 60.6265, \"_ra_t\": 356.464, \"_dc_t\": 60.719, \"_elng\": 33.1845, \"_elat\": 54.3177, \"_vo\": 31.3437, \"_vi\": 31.3437, \"_vg\": 29.31, \"_vs\": 38.1324, \"_a\": 2.75552, \"_q\": 0.765982, \"_e\": 0.722018, \"_p\": 4.57409, \"_peri\": 243.659, \"_node\": 195.515, \"_incl\": 44.0544, \"_stream\": \"spo\", \"_mag\": 1.55, \"_dur\": 0.4847, \"_lng1\": -4.42064, \"_lat1\": 52.7252, \"_H1\": 97.9674, \"_lng2\": -4.45073, \"_lat2\": 52.7051, \"_H2\": 83.2626, \"_LD21\": 15.951, \"_az1r\": 40.3059, \"_ev1r\": 78.5788, \"_Nts\": 24.0, \"_Nos\": 2.0, \"_leap\": 91.6667, \"_tme\": 1.0, \"_dt\": 0.001922, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_215036.002_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.6e-05, \"pi\": 79.1749, \"Q\": 4.74505, \"true_anom\": 296.34, \"EA\": -28.0086, \"MA\": 351.418, \"Tj\": 2.6123, \"T\": 4.57409, \"last_peri\": \"2021-04-22\", \"jacchia1\": 42.7413, \"Jacchia2\": 5.377, \"numstats\": 2, \"stations\": \"UK00C9;UK00D9;\"},\n{\"_localtime\": \"_20251008_215640\", \"_mjd\": 60956.9, \"_sol\": 195.519, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -2.20933, \"_ra_o\": 81.9988, \"_dc_o\": 52.5006, \"_ra_t\": 81.9812, \"_dc_t\": 52.1861, \"_elng\": 84.3935, \"_elat\": 28.9043, \"_vo\": 64.0345, \"_vi\": 64.0345, \"_vg\": 63.066, \"_vs\": 42.6146, \"_a\": -22.1929, \"_q\": 0.774141, \"_e\": 1.03488, \"_p\": 0.0, \"_peri\": 236.122, \"_node\": 195.519, \"_incl\": 125.446, \"_stream\": \"spo\", \"_mag\": 0.74, \"_dur\": 0.406375, \"_lng1\": -0.577996, \"_lat1\": 55.6714, \"_H1\": 112.449, \"_lng2\": -0.792199, \"_lat2\": 55.5724, \"_H2\": 98.4965, \"_LD21\": 23.5333, \"_az1r\": 50.6534, \"_ev1r\": 38.4273, \"_Nts\": 41.0, \"_Nos\": 5.0, \"_leap\": 87.8049, \"_tme\": 1.0, \"_dt\": 0.000859, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_215640.317_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 8.1e-05, \"pi\": 71.6403, \"Q\": -45.16, \"true_anom\": 303.877, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -0.872627, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.447718, \"Jacchia2\": 19.5979, \"numstats\": 5, \"stations\": \"UK001L;UK003T;UK005H;UK006C;UK00AM;\"},\n{\"_localtime\": \"_20251008_220413\", \"_mjd\": 60956.9, \"_sol\": 195.524, \"_ID1\": \"_(UNIFIED_10)\", \"_amag\": -0.711001, \"_ra_o\": 0.115782, \"_dc_o\": 2.83021, \"_ra_t\": 0.652786, \"_dc_t\": -2.19179, \"_elng\": 359.727, \"_elat\": -2.2705, \"_vo\": 19.9082, \"_vi\": 19.9082, \"_vg\": 16.5203, \"_vs\": 38.0065, \"_a\": 2.67582, \"_q\": 0.773494, \"_e\": 0.710931, \"_p\": 4.37708, \"_peri\": 62.8532, \"_node\": 15.4933, \"_incl\": 1.08968, \"_stream\": \"spo\", \"_mag\": 0.46, \"_dur\": 1.38347, \"_lng1\": -1.18864, \"_lat1\": 51.8111, \"_H1\": 94.414, \"_lng2\": -1.27608, \"_lat2\": 51.9836, \"_H2\": 77.4932, \"_LD21\": 23.7043, \"_az1r\": 163.681, \"_ev1r\": 39.9235, \"_Nts\": 206.0, \"_Nos\": 10.0, \"_leap\": 95.1456, \"_tme\": 1.0, \"_dt\": 0.007224, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_220413.588_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000428, \"pi\": 78.3465, \"Q\": 4.57814, \"true_anom\": 297.178, \"EA\": -28.1814, \"MA\": 351.056, \"Tj\": 2.95329, \"T\": 4.37708, \"last_peri\": \"2021-07-02\", \"jacchia1\": 0.003085, \"Jacchia2\": 8.59959, \"numstats\": 10, \"stations\": \"UK000S;UK001Z;UK003D;UK0041;UK007A;UK0092;UK009G;UK00A5;UK00B6;UK00BF;\"},\n{\"_localtime\": \"_20251008_220624\", \"_mjd\": 60956.9, \"_sol\": 195.526, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": 0.111827, \"_ra_o\": 268.852, \"_dc_o\": 69.7077, \"_ra_t\": 264.802, \"_dc_t\": 69.2513, \"_elng\": 123.631, \"_elat\": 86.6779, \"_vo\": 29.4731, \"_vi\": 29.4731, \"_vg\": 27.2957, \"_vs\": 39.2845, \"_a\": 3.81131, \"_q\": 0.999, \"_e\": 0.737886, \"_p\": 7.44068, \"_peri\": 179.997, \"_node\": 195.526, \"_incl\": 43.9248, \"_stream\": \"spo\", \"_mag\": 0.49, \"_dur\": 0.302566, \"_lng1\": -1.35987, \"_lat1\": 53.2214, \"_H1\": 84.7701, \"_lng2\": -1.32424, \"_lat2\": 53.1884, \"_H2\": 79.006, \"_LD21\": 7.64927, \"_az1r\": 326.23, \"_ev1r\": 52.2061, \"_Nts\": 51.0, \"_Nos\": 8.0, \"_leap\": 84.3137, \"_tme\": 1.0, \"_dt\": 0.007807, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_220624.949_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.1e-05, \"pi\": 15.5232, \"Q\": 6.62363, \"true_anom\": 0.002293, \"EA\": 0.00089, \"MA\": 0.000233, \"Tj\": 2.19749, \"T\": 7.44068, \"last_peri\": \"2025-10-08\", \"jacchia1\": 2.18633, \"Jacchia2\": 20.1283, \"numstats\": 8, \"stations\": \"UK001L;UK002Z;UK005H;UK006L;UK0087;UK0098;UK00AL;UK00BF;\"},\n{\"_localtime\": \"_20251008_221057\", \"_mjd\": 60956.9, \"_sol\": 195.529, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": -0.013823, \"_ra_o\": 95.6894, \"_dc_o\": 57.7991, \"_ra_t\": 95.7834, \"_dc_t\": 57.4679, \"_elng\": 93.7525, \"_elat\": 34.1055, \"_vo\": 61.6264, \"_vi\": 61.6264, \"_vg\": 60.6192, \"_vs\": 40.555, \"_a\": 6.75541, \"_q\": 0.923425, \"_e\": 0.863306, \"_p\": 17.5581, \"_peri\": 213.204, \"_node\": 195.529, \"_incl\": 119.636, \"_stream\": \"ACL\", \"_mag\": 0.36, \"_dur\": 0.331703, \"_lng1\": -2.06264, \"_lat1\": 52.668, \"_H1\": 108.619, \"_lng2\": -2.19021, \"_lat2\": 52.5713, \"_H2\": 98.7692, \"_LD21\": 19.1838, \"_az1r\": 38.5703, \"_ev1r\": 35.2672, \"_Nts\": 77.0, \"_Nos\": 11.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.00075, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_221057.252_UK\", \"iau\": 715, \"name\": \"alpha Camelopardalids \", \"mass\": 1.2e-05, \"pi\": 48.7323, \"Q\": 12.5874, \"true_anom\": 326.796, \"EA\": -9.23393, \"MA\": 358.703, \"Tj\": 0.201736, \"T\": 17.5581, \"last_peri\": \"2008-04-10\", \"jacchia1\": 1e-06, \"Jacchia2\": 60.5097, \"numstats\": 11, \"stations\": \"UK000S;UK000Z;UK001L;UK001Z;UK0050;UK007A;UK007P;UK0098;UK009D;UK00B0;UK00BF;\"},\n{\"_localtime\": \"_20251008_221312\", \"_mjd\": 60956.9, \"_sol\": 195.53, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.38568, \"_ra_o\": 120.825, \"_dc_o\": 43.829, \"_ra_t\": 120.991, \"_dc_t\": 43.0707, \"_elng\": 113.966, \"_elat\": 22.1772, \"_vo\": 53.4381, \"_vi\": 53.4381, \"_vg\": 52.2711, \"_vs\": 27.5693, \"_a\": 0.873184, \"_q\": 0.630815, \"_e\": 0.27757, \"_p\": 0.815943, \"_peri\": 45.8652, \"_node\": 195.53, \"_incl\": 132.5, \"_stream\": \"spo\", \"_mag\": 2.4, \"_dur\": 0.229551, \"_lng1\": -0.147764, \"_lat1\": 53.9576, \"_H1\": 97.9799, \"_lng2\": -0.255954, \"_lat2\": 53.868, \"_H2\": 94.2675, \"_LD21\": 10.151, \"_az1r\": 35.3172, \"_ev1r\": 16.727, \"_Nts\": 10.0, \"_Nos\": 2.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.018559, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_221312.957_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2e-06, \"pi\": 241.395, \"Q\": 1.11555, \"true_anom\": 134.134, \"EA\": 121.272, \"MA\": 107.679, \"Tj\": 5.42839, \"T\": 0.815943, \"last_peri\": \"2025-07-11\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK004B;UK00AM;\"},\n{\"_localtime\": \"_20251008_221606\", \"_mjd\": 60956.9, \"_sol\": 195.532, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 0.020766, \"_ra_o\": 81.8871, \"_dc_o\": 11.5526, \"_ra_t\": 81.9498, \"_dc_t\": 10.9761, \"_elng\": 81.9131, \"_elat\": -12.2359, \"_vo\": 66.45, \"_vi\": 66.45, \"_vg\": 65.5176, \"_vs\": 41.3471, \"_a\": 13.3504, \"_q\": 0.590193, \"_e\": 0.955792, \"_p\": 48.7798, \"_peri\": 80.6411, \"_node\": 15.5338, \"_incl\": 154.315, \"_stream\": \"spo\", \"_mag\": 0.5, \"_dur\": 0.73249, \"_lng1\": -0.667092, \"_lat1\": 54.1184, \"_H1\": 114.52, \"_lng2\": -1.39601, \"_lat2\": 54.0606, \"_H2\": 107.057, \"_LD21\": 46.4843, \"_az1r\": 82.5832, \"_ev1r\": 8.91215, \"_Nts\": 92.0, \"_Nos\": 6.0, \"_leap\": 93.4783, \"_tme\": 1.0, \"_dt\": 0.000244, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_221606.134_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.2e-05, \"pi\": 96.1749, \"Q\": 26.1105, \"true_anom\": 279.36, \"EA\": -14.5423, \"MA\": 359.208, \"Tj\": -0.459017, \"T\": 48.7798, \"last_peri\": \"1977-02-04\", \"jacchia1\": 25.7688, \"Jacchia2\": 0.0, \"numstats\": 6, \"stations\": \"UK000Y;UK002Z;UK005H;UK006C;UK006V;UK00AM;\"},\n{\"_localtime\": \"_20251008_222158\", \"_mjd\": 60956.9, \"_sol\": 195.536, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.32272, \"_ra_o\": 16.7206, \"_dc_o\": 35.3508, \"_ra_t\": 16.9038, \"_dc_t\": 34.6984, \"_elng\": 29.5384, \"_elat\": 25.2902, \"_vo\": 35.0304, \"_vi\": 35.0304, \"_vg\": 33.2226, \"_vs\": 39.8426, \"_a\": 4.70372, \"_q\": 0.417384, \"_e\": 0.911265, \"_p\": 10.2015, \"_peri\": 282.772, \"_node\": 195.537, \"_incl\": 32.2124, \"_stream\": \"spo\", \"_mag\": 2.49, \"_dur\": 0.201912, \"_lng1\": -3.46632, \"_lat1\": 52.0257, \"_H1\": 95.5827, \"_lng2\": -3.50592, \"_lat2\": 52.0398, \"_H2\": 88.9786, \"_LD21\": 7.31264, \"_az1r\": 120.51, \"_ev1r\": 64.6447, \"_Nts\": 8.0, \"_Nos\": 2.0, \"_leap\": 75.0, \"_tme\": 1.0, \"_dt\": 0.000697, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_222158.388_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 118.309, \"Q\": 8.99006, \"true_anom\": 257.227, \"EA\": -30.196, \"MA\": 356.064, \"Tj\": 1.76892, \"T\": 10.2015, \"last_peri\": \"2015-09-06\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK008J;UK00BK;\"},\n{\"_localtime\": \"_20251008_222515\", \"_mjd\": 60956.9, \"_sol\": 195.539, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -3.16721, \"_ra_o\": 121.587, \"_dc_o\": 44.2897, \"_ra_t\": 121.574, \"_dc_t\": 43.8685, \"_elng\": 114.219, \"_elat\": 23.0494, \"_vo\": 67.7614, \"_vi\": 67.7614, \"_vg\": 66.8479, \"_vs\": 41.5207, \"_a\": 17.0391, \"_q\": 0.95287, \"_e\": 0.944077, \"_p\": 70.3349, \"_peri\": 154.811, \"_node\": 195.538, \"_incl\": 139.831, \"_stream\": \"spo\", \"_mag\": -1.38, \"_dur\": 1.25788, \"_lng1\": 1.60832, \"_lat1\": 50.8204, \"_H1\": 116.671, \"_lng2\": 0.944036, \"_lat2\": 50.2604, \"_H2\": 94.4221, \"_LD21\": 85.034, \"_az1r\": 37.1473, \"_ev1r\": 16.0664, \"_Nts\": 76.0, \"_Nos\": 3.0, \"_leap\": 96.0526, \"_tme\": 1.0, \"_dt\": 0.000287, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_222515.236_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000875, \"pi\": 350.349, \"Q\": 33.1254, \"true_anom\": 25.1883, \"EA\": 4.34012, \"MA\": 0.246628, \"Tj\": -0.606375, \"T\": 70.3349, \"last_peri\": \"2025-09-21\", \"jacchia1\": 0.00159, \"Jacchia2\": 9.55735, \"numstats\": 3, \"stations\": \"UK0041;UK007H;UK007R;\"},\n{\"_localtime\": \"_20251008_222648\", \"_mjd\": 60956.9, \"_sol\": 195.54, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.60265, \"_ra_o\": 335.459, \"_dc_o\": 1.47369, \"_ra_t\": 332.023, \"_dc_t\": -11.1817, \"_elng\": 330.041, \"_elat\": 0.294024, \"_vo\": 14.156, \"_vi\": 14.156, \"_vg\": 8.75669, \"_vs\": 36.6482, \"_a\": 2.04906, \"_q\": 0.951835, \"_e\": 0.535476, \"_p\": 2.93313, \"_peri\": 209.771, \"_node\": 195.929, \"_incl\": 0.075145, \"_stream\": \"spo\", \"_mag\": 1.09, \"_dur\": 0.800564, \"_lng1\": -2.0744, \"_lat1\": 50.8633, \"_H1\": 78.4284, \"_lng2\": -2.03368, \"_lat2\": 50.9324, \"_H2\": 71.7393, \"_LD21\": 10.9647, \"_az1r\": 201.916, \"_ev1r\": 38.567, \"_Nts\": 40.0, \"_Nos\": 2.0, \"_leap\": 95.0, \"_tme\": 1.0, \"_dt\": 0.000784, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_222648.711_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000164, \"pi\": 45.6998, \"Q\": 3.14628, \"true_anom\": 329.84, \"EA\": -16.86, \"MA\": 352.038, \"Tj\": 3.59971, \"T\": 2.93313, \"last_peri\": \"2022-11-26\", \"jacchia1\": -4.9e-05, \"Jacchia2\": 20.5119, \"numstats\": 2, \"stations\": \"UK003Z;UK009K;\"},\n{\"_localtime\": \"_20251008_222719\", \"_mjd\": 60956.9, \"_sol\": 195.54, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.57974, \"_ra_o\": 354.163, \"_dc_o\": 53.0633, \"_ra_t\": 353.874, \"_dc_t\": 52.936, \"_elng\": 23.3238, \"_elat\": 49.2625, \"_vo\": 28.6088, \"_vi\": 28.6088, \"_vg\": 26.3649, \"_vs\": 38.2261, \"_a\": 2.81803, \"_q\": 0.74826, \"_e\": 0.734474, \"_p\": 4.73063, \"_peri\": 245.965, \"_node\": 195.541, \"_incl\": 36.0306, \"_stream\": \"spo\", \"_mag\": 2.1, \"_dur\": 0.24176, \"_lng1\": -1.00108, \"_lat1\": 52.8693, \"_H1\": 97.7487, \"_lng2\": -1.00264, \"_lat2\": 52.869, \"_H2\": 91.034, \"_LD21\": 6.71484, \"_az1r\": 58.3786, \"_ev1r\": 89.6276, \"_Nts\": 13.0, \"_Nos\": 2.0, \"_leap\": 84.6154, \"_tme\": 1.0, \"_dt\": 0.000441, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_222719.738_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.2e-05, \"pi\": 81.5057, \"Q\": 4.8878, \"true_anom\": 294.034, \"EA\": -28.4952, \"MA\": 351.582, \"Tj\": 2.65447, \"T\": 4.73063, \"last_peri\": \"2021-02-24\", \"jacchia1\": 2.08929, \"Jacchia2\": 15.45, \"numstats\": 2, \"stations\": \"UK0098;UK00AL;\"},\n{\"_localtime\": \"_20251008_222845\", \"_mjd\": 60956.9, \"_sol\": 195.541, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.237315, \"_ra_o\": 56.5987, \"_dc_o\": 65.5659, \"_ra_t\": 57.3207, \"_dc_t\": 65.3916, \"_elng\": 71.784, \"_elat\": 44.0073, \"_vo\": 45.9122, \"_vi\": 45.9122, \"_vg\": 44.5501, \"_vs\": 36.0948, \"_a\": 1.87473, \"_q\": 0.6611, \"_e\": 0.647363, \"_p\": 2.5669, \"_peri\": 261.993, \"_node\": 195.541, \"_incl\": 84.1748, \"_stream\": \"spo\", \"_mag\": 0.71, \"_dur\": 0.202116, \"_lng1\": -5.018, \"_lat1\": 51.4327, \"_H1\": 104.567, \"_lng2\": -5.07022, \"_lat2\": 51.3955, \"_H2\": 96.7853, \"_LD21\": 9.76993, \"_az1r\": 40.8393, \"_ev1r\": 54.5062, \"_Nts\": 15.0, \"_Nos\": 3.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.002624, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_222845.638_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.7e-05, \"pi\": 97.5343, \"Q\": 3.08836, \"true_anom\": 278.006, \"EA\": -43.8147, \"MA\": 341.865, \"Tj\": 2.86886, \"T\": 2.5669, \"last_peri\": \"2023-05-02\", \"jacchia1\": 30.2557, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK001K;UK00A1;UK00BB;\"},\n{\"_localtime\": \"_20251008_222926\", \"_mjd\": 60956.9, \"_sol\": 195.541, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -0.228094, \"_ra_o\": 33.6148, \"_dc_o\": 11.3612, \"_ra_t\": 34.3463, \"_dc_t\": 9.38733, \"_elng\": 35.2451, \"_elat\": -4.11469, \"_vo\": 29.6338, \"_vi\": 29.6338, \"_vg\": 27.4746, \"_vs\": 33.4321, \"_a\": 1.34753, \"_q\": 0.266229, \"_e\": 0.802432, \"_p\": 1.56426, \"_peri\": 130.367, \"_node\": 15.5359, \"_incl\": 5.47138, \"_stream\": \"STA\", \"_mag\": -0.25, \"_dur\": 2.1105, \"_lng1\": -2.05828, \"_lat1\": 52.8433, \"_H1\": 99.0274, \"_lng2\": -2.34686, \"_lat2\": 52.971, \"_H2\": 80.6288, \"_LD21\": 32.6871, \"_az1r\": 126.739, \"_ev1r\": 37.4032, \"_Nts\": 136.0, \"_Nos\": 9.0, \"_leap\": 93.3824, \"_tme\": 1.0, \"_dt\": 8.1e-05, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_222926.138_UK\", \"iau\": 2, \"name\": \"Southern Taurids \", \"mass\": 0.000574, \"pi\": 145.903, \"Q\": 2.42884, \"true_anom\": 229.639, \"EA\": -71.1961, \"MA\": 332.326, \"Tj\": 4.46661, \"T\": 1.56426, \"last_peri\": \"2024-04-29\", \"jacchia1\": 0.006355, \"Jacchia2\": 9.76292, \"numstats\": 9, \"stations\": \"UK000Z;UK001L;UK002Z;UK0050;UK0083;UK008J;UK0098;UK00B0;UK00CQ;\"},\n{\"_localtime\": \"_20251008_223014\", \"_mjd\": 60956.9, \"_sol\": 195.542, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -1.36846, \"_ra_o\": 273.807, \"_dc_o\": 56.6827, \"_ra_t\": 270.508, \"_dc_t\": 55.8399, \"_elng\": 271.532, \"_elat\": 79.2749, \"_vo\": 27.6848, \"_vi\": 27.6848, \"_vg\": 25.3555, \"_vs\": 42.4609, \"_a\": -32.9899, \"_q\": 0.998765, \"_e\": 1.03027, \"_p\": 0.0, \"_peri\": 178.267, \"_node\": 195.543, \"_incl\": 35.9334, \"_stream\": \"spo\", \"_mag\": 0.21, \"_dur\": 1.40679, \"_lng1\": -7.32621, \"_lat1\": 50.3497, \"_H1\": 85.9979, \"_lng2\": -7.06068, \"_lat2\": 50.2117, \"_H2\": 58.7355, \"_LD21\": 38.5083, \"_az1r\": 308.348, \"_ev1r\": 47.6244, \"_Nts\": 119.0, \"_Nos\": 4.0, \"_leap\": 96.6387, \"_tme\": 1.0, \"_dt\": 0.009681, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_223014.004_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.00089, \"pi\": 13.8094, \"Q\": -66.9785, \"true_anom\": 1.73247, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": 0.853088, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 32.2632, \"Jacchia2\": 2.88388, \"numstats\": 4, \"stations\": \"UK00A1;UK00AU;UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20251008_223239\", \"_mjd\": 60956.9, \"_sol\": 195.544, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": 0.810986, \"_ra_o\": 30.1595, \"_dc_o\": 5.8477, \"_ra_t\": 30.7907, \"_dc_t\": 3.83741, \"_elng\": 30.019, \"_elat\": -8.14915, \"_vo\": 30.2813, \"_vi\": 30.2813, \"_vg\": 28.1717, \"_vs\": 35.9564, \"_a\": 1.83604, \"_q\": 0.332109, \"_e\": 0.819117, \"_p\": 2.48785, \"_peri\": 118.854, \"_node\": 15.5409, \"_incl\": 9.91739, \"_stream\": \"spo\", \"_mag\": 1.21, \"_dur\": 0.981884, \"_lng1\": -1.86532, \"_lat1\": 51.3032, \"_H1\": 99.2754, \"_lng2\": -2.10456, \"_lat2\": 51.4446, \"_H2\": 82.8279, \"_LD21\": 29.164, \"_az1r\": 133.931, \"_ev1r\": 35.6159, \"_Nts\": 136.0, \"_Nos\": 9.0, \"_leap\": 93.3824, \"_tme\": 1.0, \"_dt\": 0.000328, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_223239.727_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.9e-05, \"pi\": 134.395, \"Q\": 3.33998, \"true_anom\": 241.149, \"EA\": -56.181, \"MA\": 342.81, \"Tj\": 3.50575, \"T\": 2.48785, \"last_peri\": \"2023-05-27\", \"jacchia1\": 0.009348, \"Jacchia2\": 10.9548, \"numstats\": 9, \"stations\": \"UK0006;UK000S;UK001Z;UK003Z;UK007A;UK009D;UK009K;UK00A5;UK00BW;\"},\n{\"_localtime\": \"_20251008_223310\", \"_mjd\": 60956.9, \"_sol\": 195.544, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.699462, \"_ra_o\": 21.6937, \"_dc_o\": 3.53659, \"_ra_t\": 23.0837, \"_dc_t\": -0.547429, \"_elng\": 21.1517, \"_elat\": -9.48024, \"_vo\": 21.5248, \"_vi\": 21.5248, \"_vg\": 18.4357, \"_vs\": 33.7624, \"_a\": 1.39456, \"_q\": 0.558802, \"_e\": 0.599297, \"_p\": 1.64685, \"_peri\": 100.135, \"_node\": 15.5397, \"_incl\": 6.18008, \"_stream\": \"spo\", \"_mag\": 2.12, \"_dur\": 0.390401, \"_lng1\": -3.2252, \"_lat1\": 49.4952, \"_H1\": 92.0445, \"_lng2\": -3.27986, \"_lat2\": 49.54, \"_H2\": 87.0737, \"_LD21\": 6.46778, \"_az1r\": 142.405, \"_ev1r\": 37.9434, \"_Nts\": 17.0, \"_Nos\": 2.0, \"_leap\": 88.2353, \"_tme\": 1.0, \"_dt\": 0.018354, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_223310.336_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.3e-05, \"pi\": 115.675, \"Q\": 2.23031, \"true_anom\": 259.869, \"EA\": -61.7515, \"MA\": 328.496, \"Tj\": 4.55582, \"T\": 1.64685, \"last_peri\": \"2024-04-08\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000H;UK00AU;\"},\n{\"_localtime\": \"_20251008_223627\", \"_mjd\": 60956.9, \"_sol\": 195.546, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.33603, \"_ra_o\": 140.155, \"_dc_o\": 61.8452, \"_ra_t\": 140.213, \"_dc_t\": 61.323, \"_elng\": 120.313, \"_elat\": 43.0635, \"_vo\": 56.6411, \"_vi\": 56.6411, \"_vg\": 55.5441, \"_vs\": 40.3085, \"_a\": 5.8648, \"_q\": 0.933629, \"_e\": 0.840808, \"_p\": 14.203, \"_peri\": 148.953, \"_node\": 195.546, \"_incl\": 103.979, \"_stream\": \"spo\", \"_mag\": 1.71, \"_dur\": 0.242738, \"_lng1\": -2.49819, \"_lat1\": 52.2065, \"_H1\": 112.651, \"_lng2\": -2.54223, \"_lat2\": 52.1217, \"_H2\": 107.48, \"_LD21\": 10.8609, \"_az1r\": 17.3899, \"_ev1r\": 27.2435, \"_Nts\": 17.0, \"_Nos\": 3.0, \"_leap\": 82.3529, \"_tme\": 1.0, \"_dt\": 0.001034, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_223627.952_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 344.499, \"Q\": 10.796, \"true_anom\": 31.0467, \"EA\": 9.33945, \"MA\": 1.52149, \"Tj\": 0.609736, \"T\": 14.203, \"last_peri\": \"2025-09-17\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK0006;UK0067;UK00B0;\"},\n{\"_localtime\": \"_20251008_223656\", \"_mjd\": 60956.9, \"_sol\": 195.547, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.243, \"_ra_o\": 357.06, \"_dc_o\": -2.47426, \"_ra_t\": 356.788, \"_dc_t\": -8.43947, \"_elng\": 353.689, \"_elat\": -6.46564, \"_vo\": 19.6471, \"_vi\": 19.6471, \"_vg\": 16.2037, \"_vs\": 39.021, \"_a\": 3.50087, \"_q\": 0.81806, \"_e\": 0.766327, \"_p\": 6.55035, \"_peri\": 54.3812, \"_node\": 15.5364, \"_incl\": 2.91472, \"_stream\": \"spo\", \"_mag\": 1.21, \"_dur\": 0.766016, \"_lng1\": -0.787642, \"_lat1\": 53.5, \"_H1\": 93.1246, \"_lng2\": -0.793944, \"_lat2\": 53.6096, \"_H2\": 84.7853, \"_LD21\": 14.9224, \"_az1r\": 179.036, \"_ev1r\": 34.0214, \"_Nts\": 38.0, \"_Nos\": 2.0, \"_leap\": 94.7368, \"_tme\": 1.0, \"_dt\": 0.000444, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_223656.958_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000123, \"pi\": 69.9176, \"Q\": 6.18368, \"true_anom\": 305.629, \"EA\": -21.1629, \"MA\": 354.689, \"Tj\": 2.53905, \"T\": 6.55035, \"last_peri\": \"2019-04-26\", \"jacchia1\": 0.005928, \"Jacchia2\": 13.8804, \"numstats\": 2, \"stations\": \"UK005H;UK00AM;\"},\n{\"_localtime\": \"_20251008_223914\", \"_mjd\": 60956.9, \"_sol\": 195.548, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": 0.068083, \"_ra_o\": 243.882, \"_dc_o\": 65.75, \"_ra_t\": 239.396, \"_dc_t\": 64.0887, \"_elng\": 176.736, \"_elat\": 77.1249, \"_vo\": 27.2497, \"_vi\": 27.2497, \"_vg\": 24.883, \"_vs\": 37.3598, \"_a\": 2.33281, \"_q\": 0.976911, \"_e\": 0.58123, \"_p\": 3.56304, \"_peri\": 160.027, \"_node\": 195.549, \"_incl\": 40.8958, \"_stream\": \"spo\", \"_mag\": 0.62, \"_dur\": 0.483299, \"_lng1\": -3.59359, \"_lat1\": 50.5853, \"_H1\": 95.382, \"_lng2\": -3.53173, \"_lat2\": 50.5128, \"_H2\": 88.0879, \"_LD21\": 12.9396, \"_az1r\": 330.739, \"_ev1r\": 37.9207, \"_Nts\": 74.0, \"_Nos\": 9.0, \"_leap\": 87.8378, \"_tme\": 1.0, \"_dt\": 0.001124, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_223914.969_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.4e-05, \"pi\": 355.576, \"Q\": 3.68871, \"true_anom\": 19.9726, \"EA\": 10.3554, \"MA\": 4.36925, \"Tj\": 3.05454, \"T\": 3.56304, \"last_peri\": \"2025-09-23\", \"jacchia1\": 0.420765, \"Jacchia2\": 15.0281, \"numstats\": 9, \"stations\": \"UK0006;UK000D;UK000H;UK001K;UK0024;UK007Q;UK00AU;UK00B5;UK00BK;\"},\n{\"_localtime\": \"_20251008_223956\", \"_mjd\": 60956.9, \"_sol\": 195.549, \"_ID1\": \"_(UNIFIED_12)\", \"_amag\": -0.409205, \"_ra_o\": 82.78, \"_dc_o\": 32.0908, \"_ra_t\": 82.76, \"_dc_t\": 31.7083, \"_elng\": 83.7778, \"_elat\": 8.42682, \"_vo\": 67.1191, \"_vi\": 67.1191, \"_vg\": 66.1958, \"_vs\": 40.8635, \"_a\": 8.35231, \"_q\": 0.616697, \"_e\": 0.926165, \"_p\": 24.1385, \"_peri\": 258.22, \"_node\": 195.547, \"_incl\": 162.626, \"_stream\": \"FAR\", \"_mag\": 0.43, \"_dur\": 0.3667, \"_lng1\": -3.23551, \"_lat1\": 52.3717, \"_H1\": 111.313, \"_lng2\": -3.52941, \"_lat2\": 52.3071, \"_H2\": 100.898, \"_LD21\": 23.9212, \"_az1r\": 70.2815, \"_ev1r\": 25.9016, \"_Nts\": 94.0, \"_Nos\": 12.0, \"_leap\": 87.234, \"_tme\": 1.0, \"_dt\": 1e-06, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_223956.645_UK\", \"iau\": 608, \"name\": \"14 Aurigids \", \"mass\": 1e-05, \"pi\": 93.7671, \"Q\": 16.0879, \"true_anom\": 281.778, \"EA\": -18.0883, \"MA\": 358.388, \"Tj\": -0.28882, \"T\": 24.1385, \"last_peri\": \"2001-09-27\", \"jacchia1\": 1.9e-05, \"Jacchia2\": 47.8667, \"numstats\": 12, \"stations\": \"UK0006;UK001L;UK001Z;UK0030;UK003U;UK0050;UK0067;UK008J;UK009D;UK00B0;UK00BK;UK00CQ;\"},\n{\"_localtime\": \"_20251008_224255\", \"_mjd\": 60956.9, \"_sol\": 195.551, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 1.906, \"_ra_o\": 4.65355, \"_dc_o\": 14.1801, \"_ra_t\": 4.66313, \"_dc_t\": 11.1641, \"_elng\": 8.73217, \"_elat\": 8.39061, \"_vo\": 22.5172, \"_vi\": 22.5172, \"_vg\": 19.5849, \"_vs\": 37.7854, \"_a\": 2.54696, \"_q\": 0.673084, \"_e\": 0.73573, \"_p\": 4.06475, \"_peri\": 256.677, \"_node\": 195.557, \"_incl\": 5.0917, \"_stream\": \"spo\", \"_mag\": 2.04, \"_dur\": 0.388132, \"_lng1\": -1.09312, \"_lat1\": 53.8026, \"_H1\": 92.83, \"_lng2\": -1.10873, \"_lat2\": 53.8456, \"_H2\": 86.9513, \"_LD21\": 6.67484, \"_az1r\": 169.105, \"_ev1r\": 49.9733, \"_Nts\": 20.0, \"_Nos\": 3.0, \"_leap\": 85.0, \"_tme\": 1.0, \"_dt\": 0.000242, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_224255.075_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.6e-05, \"pi\": 92.2338, \"Q\": 4.42084, \"true_anom\": 283.317, \"EA\": -34.3021, \"MA\": 349.454, \"Tj\": 2.98719, \"T\": 4.06475, \"last_peri\": \"2021-10-28\", \"jacchia1\": 0.215764, \"Jacchia2\": 21.0024, \"numstats\": 3, \"stations\": \"UK002Z;UK008G;UK00AM;\"},\n{\"_localtime\": \"_20251008_224421\", \"_mjd\": 60956.9, \"_sol\": 195.552, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -0.512796, \"_ra_o\": 31.6725, \"_dc_o\": 41.6066, \"_ra_t\": 31.7486, \"_dc_t\": 41.1652, \"_elng\": 44.3248, \"_elat\": 26.5106, \"_vo\": 42.018, \"_vi\": 42.018, \"_vg\": 40.5242, \"_vs\": 39.0052, \"_a\": 3.48384, \"_q\": 0.281128, \"_e\": 0.919305, \"_p\": 6.50261, \"_peri\": 300.016, \"_node\": 195.552, \"_incl\": 55.6935, \"_stream\": \"OCH\", \"_mag\": 0.51, \"_dur\": 0.364024, \"_lng1\": -1.43805, \"_lat1\": 54.8147, \"_H1\": 100.917, \"_lng2\": -1.51439, \"_lat2\": 54.8274, \"_H2\": 90.4407, \"_LD21\": 14.8856, \"_az1r\": 106.284, \"_ev1r\": 64.0302, \"_Nts\": 36.0, \"_Nos\": 5.0, \"_leap\": 86.1111, \"_tme\": 1.0, \"_dt\": 0.000399, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_224421.619_UK\", \"iau\": 716, \"name\": \"October chi Andromedids \", \"mass\": 4.5e-05, \"pi\": 135.568, \"Q\": 6.68655, \"true_anom\": 239.983, \"EA\": -39.1172, \"MA\": 354.114, \"Tj\": 1.85679, \"T\": 6.50261, \"last_peri\": \"2019-05-17\", \"jacchia1\": -1.48914, \"Jacchia2\": 12.4598, \"numstats\": 5, \"stations\": \"UK002Z;UK006C;UK006V;UK008G;UK00AM;\"},\n{\"_localtime\": \"_20251008_224522\", \"_mjd\": 60956.9, \"_sol\": 195.552, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.75362, \"_ra_o\": 24.345, \"_dc_o\": 8.07485, \"_ra_t\": 24.7378, \"_dc_t\": 6.27057, \"_elng\": 25.2136, \"_elat\": -3.74049, \"_vo\": 30.6642, \"_vi\": 30.6642, \"_vg\": 28.5804, \"_vs\": 38.0441, \"_a\": 2.69902, \"_q\": 0.380698, \"_e\": 0.85895, \"_p\": 4.43416, \"_peri\": 109.851, \"_node\": 15.5462, \"_incl\": 4.25826, \"_stream\": \"spo\", \"_mag\": 2.41, \"_dur\": 0.636501, \"_lng1\": -3.04098, \"_lat1\": 51.0134, \"_H1\": 91.4268, \"_lng2\": -3.16265, \"_lat2\": 51.1078, \"_H2\": 79.5611, \"_LD21\": 16.4985, \"_az1r\": 141.553, \"_ev1r\": 41.1546, \"_Nts\": 24.0, \"_Nos\": 2.0, \"_leap\": 91.6667, \"_tme\": 1.0, \"_dt\": 0.005003, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_224522.617_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.5e-05, \"pi\": 125.397, \"Q\": 5.01735, \"true_anom\": 250.155, \"EA\": -42.8362, \"MA\": 350.625, \"Tj\": 2.66369, \"T\": 4.43416, \"last_peri\": \"2021-06-14\", \"jacchia1\": 0.790082, \"Jacchia2\": 9.27397, \"numstats\": 2, \"stations\": \"UK0006;UK00BK;\"},\n{\"_localtime\": \"_20251008_224806\", \"_mjd\": 60956.9, \"_sol\": 195.554, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": 0.665468, \"_ra_o\": 18.6434, \"_dc_o\": 12.1029, \"_ra_t\": 19.167, \"_dc_t\": 9.59966, \"_elng\": 21.3124, \"_elat\": 1.38906, \"_vo\": 24.5757, \"_vi\": 24.5757, \"_vg\": 21.9214, \"_vs\": 35.4837, \"_a\": 1.71609, \"_q\": 0.502077, \"_e\": 0.707429, \"_p\": 2.24807, \"_peri\": 281.546, \"_node\": 195.578, \"_incl\": 1.10763, \"_stream\": \"spo\", \"_mag\": 0.76, \"_dur\": 0.779651, \"_lng1\": -2.07169, \"_lat1\": 50.7339, \"_H1\": 93.936, \"_lng2\": -2.16503, \"_lat2\": 50.8281, \"_H2\": 80.2574, \"_LD21\": 17.9983, \"_az1r\": 148.776, \"_ev1r\": 47.7809, \"_Nts\": 121.0, \"_Nos\": 9.0, \"_leap\": 92.562, \"_tme\": 1.0, \"_dt\": 0.002124, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_224806.274_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-05, \"pi\": 117.124, \"Q\": 2.9301, \"true_anom\": 258.431, \"EA\": -53.7947, \"MA\": 338.911, \"Tj\": 3.8442, \"T\": 2.24807, \"last_peri\": \"2023-08-27\", \"jacchia1\": 0.016257, \"Jacchia2\": 12.359, \"numstats\": 9, \"stations\": \"UK0006;UK0009;UK0022;UK003Z;UK009K;UK009W;UK00A5;UK00B5;UK00BW;\"},\n{\"_localtime\": \"_20251008_224814\", \"_mjd\": 60956.9, \"_sol\": 195.554, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -0.109529, \"_ra_o\": 27.2341, \"_dc_o\": 33.3921, \"_ra_t\": 27.6092, \"_dc_t\": 32.5135, \"_elng\": 37.4502, \"_elat\": 19.7373, \"_vo\": 30.4429, \"_vi\": 30.4429, \"_vg\": 28.3428, \"_vs\": 33.5101, \"_a\": 1.3583, \"_q\": 0.308135, \"_e\": 0.773146, \"_p\": 1.58304, \"_peri\": 305.874, \"_node\": 195.556, \"_incl\": 25.7485, \"_stream\": \"spo\", \"_mag\": 0.48, \"_dur\": 0.392399, \"_lng1\": -0.365536, \"_lat1\": 51.4451, \"_H1\": 92.1658, \"_lng2\": -0.426147, \"_lat2\": 51.4674, \"_H2\": 82.6434, \"_LD21\": 10.687, \"_az1r\": 121.172, \"_ev1r\": 63.0045, \"_Nts\": 42.0, \"_Nos\": 5.0, \"_leap\": 88.0952, \"_tme\": 1.0, \"_dt\": 0.000205, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_224814.515_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4e-05, \"pi\": 141.43, \"Q\": 2.40846, \"true_anom\": 234.125, \"EA\": -69.9927, \"MA\": 331.632, \"Tj\": 4.41515, \"T\": 1.58304, \"last_peri\": \"2024-04-24\", \"jacchia1\": 1.90328, \"Jacchia2\": 16.5264, \"numstats\": 5, \"stations\": \"UK000S;UK003D;UK005N;UK007H;UK0092;\"},\n{\"_localtime\": \"_20251008_224858\", \"_mjd\": 60956.9, \"_sol\": 195.555, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.765732, \"_ra_o\": 120.172, \"_dc_o\": 44.9237, \"_ra_t\": 120.148, \"_dc_t\": 44.5261, \"_elng\": 112.975, \"_elat\": 23.4636, \"_vo\": 68.8393, \"_vi\": 68.8393, \"_vg\": 67.9382, \"_vs\": 42.5795, \"_a\": -23.9956, \"_q\": 0.96813, \"_e\": 1.04035, \"_p\": 0.0, \"_peri\": 159.952, \"_node\": 195.554, \"_incl\": 139.789, \"_stream\": \"spo\", \"_mag\": 1.39, \"_dur\": 0.257553, \"_lng1\": -4.53969, \"_lat1\": 50.7834, \"_H1\": 102.225, \"_lng2\": -4.68479, \"_lat2\": 50.6641, \"_H2\": 97.0545, \"_LD21\": 16.579, \"_az1r\": 37.5255, \"_ev1r\": 17.0123, \"_Nts\": 19.0, \"_Nos\": 3.0, \"_leap\": 84.2105, \"_tme\": 1.0, \"_dt\": 0.002852, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_224858.003_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 355.506, \"Q\": -48.9593, \"true_anom\": 20.0476, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -1.15785, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK001K;UK0051;UK00A1;\"},\n{\"_localtime\": \"_20251008_224954\", \"_mjd\": 60957.0, \"_sol\": 195.555, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -1.21046, \"_ra_o\": 189.067, \"_dc_o\": 42.2344, \"_ra_t\": 188.566, \"_dc_t\": 40.6201, \"_elng\": 168.316, \"_elat\": 39.9632, \"_vo\": 43.1727, \"_vi\": 43.1727, \"_vg\": 41.7218, \"_vs\": 41.5792, \"_a\": 18.791, \"_q\": 0.5411, \"_e\": 0.971204, \"_p\": 81.4566, \"_peri\": 93.9962, \"_node\": 195.556, \"_incl\": 60.5022, \"_stream\": \"spo\", \"_mag\": 0.02, \"_dur\": 2.63468, \"_lng1\": 0.922754, \"_lat1\": 53.7198, \"_H1\": 107.342, \"_lng2\": 1.05257, \"_lat2\": 52.8974, \"_H2\": 97.8586, \"_LD21\": 82.3091, \"_az1r\": 354.159, \"_ev1r\": 6.22279, \"_Nts\": 308.0, \"_Nos\": 9.0, \"_leap\": 97.0779, \"_tme\": 1.0, \"_dt\": 0.000696, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_224954.491_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000337, \"pi\": 289.552, \"Q\": 37.0409, \"true_anom\": 86.0033, \"EA\": 12.8618, \"MA\": 0.47501, \"Tj\": 0.72278, \"T\": 81.4566, \"last_peri\": \"2025-08-30\", \"jacchia1\": 0.000356, \"Jacchia2\": 6.58361, \"numstats\": 9, \"stations\": \"UK002F;UK002K;UK003X;UK006P;UK007Y;UK0087;UK008F;UK009M;UK00AL;\"},\n{\"_localtime\": \"_20251008_225108\", \"_mjd\": 60957.0, \"_sol\": 195.556, \"_ID1\": \"_(UNIFIED_12)\", \"_amag\": 0.144869, \"_ra_o\": 355.132, \"_dc_o\": 55.1429, \"_ra_t\": 354.751, \"_dc_t\": 55.1569, \"_elng\": 26.081, \"_elat\": 50.6959, \"_vo\": 28.4805, \"_vi\": 28.4805, \"_vg\": 26.2261, \"_vs\": 37.5669, \"_a\": 2.43201, \"_q\": 0.750374, \"_e\": 0.691459, \"_p\": 3.79269, \"_peri\": 246.969, \"_node\": 195.557, \"_incl\": 37.1739, \"_stream\": \"spo\", \"_mag\": 1.23, \"_dur\": 0.389084, \"_lng1\": -3.94511, \"_lat1\": 51.5122, \"_H1\": 98.4548, \"_lng2\": -3.94454, \"_lat2\": 51.5065, \"_H2\": 88.3162, \"_LD21\": 9.76843, \"_az1r\": 346.506, \"_ev1r\": 86.2567, \"_Nts\": 86.0, \"_Nos\": 12.0, \"_leap\": 86.0465, \"_tme\": 1.0, \"_dt\": 0.000886, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_225108.231_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.2e-05, \"pi\": 82.5267, \"Q\": 4.11364, \"true_anom\": 293.03, \"EA\": -31.5531, \"MA\": 349.178, \"Tj\": 2.9269, \"T\": 3.79269, \"last_peri\": \"2022-02-03\", \"jacchia1\": 0.297314, \"Jacchia2\": 21.12, \"numstats\": 12, \"stations\": \"UK0006;UK000D;UK001Z;UK0024;UK007A;UK009D;UK009G;UK009S;UK00AU;UK00B0;UK00BK;UK00BW;\"},\n{\"_localtime\": \"_20251008_225542\", \"_mjd\": 60957.0, \"_sol\": 195.559, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 1.08726, \"_ra_o\": 337.701, \"_dc_o\": 14.2829, \"_ra_t\": 332.844, \"_dc_t\": 2.41941, \"_elng\": 335.689, \"_elat\": 12.7155, \"_vo\": 13.2641, \"_vi\": 13.2641, \"_vg\": 7.22405, \"_vs\": 34.8556, \"_a\": 1.58097, \"_q\": 0.948054, \"_e\": 0.400334, \"_p\": 1.98786, \"_peri\": 214.741, \"_node\": 195.569, \"_incl\": 2.6569, \"_stream\": \"spo\", \"_mag\": 0.91, \"_dur\": 0.241691, \"_lng1\": -1.80601, \"_lat1\": 51.2751, \"_H1\": 75.8532, \"_lng2\": -1.79652, \"_lat2\": 51.2846, \"_H2\": 74.3792, \"_LD21\": 2.62509, \"_az1r\": 213.918, \"_ev1r\": 48.9094, \"_Nts\": 24.0, \"_Nos\": 5.0, \"_leap\": 79.1667, \"_tme\": 1.0, \"_dt\": 0.000425, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_225542.231_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.6e-05, \"pi\": 50.3105, \"Q\": 2.21389, \"true_anom\": 325.249, \"EA\": -23.1444, \"MA\": 345.871, \"Tj\": 4.30087, \"T\": 1.98786, \"last_peri\": \"2023-11-11\", \"jacchia1\": 0.0, \"Jacchia2\": 124.751, \"numstats\": 5, \"stations\": \"UK000S;UK008X;UK009G;UK009K;UK009W;\"},\n{\"_localtime\": \"_20251008_225620\", \"_mjd\": 60957.0, \"_sol\": 195.56, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.499486, \"_ra_o\": 244.858, \"_dc_o\": 71.1669, \"_ra_t\": 240.944, \"_dc_t\": 69.9449, \"_elng\": 149.373, \"_elat\": 78.8401, \"_vo\": 30.1535, \"_vi\": 30.1535, \"_vg\": 28.0322, \"_vs\": 37.9093, \"_a\": 2.61741, \"_q\": 0.98932, \"_e\": 0.622023, \"_p\": 4.23455, \"_peri\": 167.098, \"_node\": 195.561, \"_incl\": 46.7394, \"_stream\": \"spo\", \"_mag\": 0.33, \"_dur\": 0.518612, \"_lng1\": -1.77878, \"_lat1\": 53.3902, \"_H1\": 94.2117, \"_lng2\": -1.71876, \"_lat2\": 53.3041, \"_H2\": 84.4782, \"_LD21\": 14.48, \"_az1r\": 336.615, \"_ev1r\": 42.6528, \"_Nts\": 43.0, \"_Nos\": 5.0, \"_leap\": 88.3721, \"_tme\": 1.0, \"_dt\": 0.0018, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_225620.147_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.5e-05, \"pi\": 2.65823, \"Q\": 4.24549, \"true_anom\": 12.9018, \"EA\": 6.24834, \"MA\": 2.36943, \"Tj\": 2.74942, \"T\": 4.23455, \"last_peri\": \"2025-09-28\", \"jacchia1\": 0.000253, \"Jacchia2\": 29.0897, \"numstats\": 5, \"stations\": \"UK000Y;UK002Z;UK0098;UK00AM;UK00BF;\"},\n{\"_localtime\": \"_20251008_225635\", \"_mjd\": 60957.0, \"_sol\": 195.56, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -1.12153, \"_ra_o\": 137.814, \"_dc_o\": 53.3108, \"_ra_t\": 137.837, \"_dc_t\": 52.7913, \"_elng\": 123.039, \"_elat\": 34.6996, \"_vo\": 58.5061, \"_vi\": 58.5061, \"_vg\": 57.4436, \"_vs\": 38.5948, \"_a\": 3.09654, \"_q\": 0.848667, \"_e\": 0.72593, \"_p\": 5.44898, \"_peri\": 129.958, \"_node\": 195.56, \"_incl\": 114.998, \"_stream\": \"spo\", \"_mag\": 0.37, \"_dur\": 0.457227, \"_lng1\": -2.2197, \"_lat1\": 54.8799, \"_H1\": 107.004, \"_lng2\": -2.38486, \"_lat2\": 54.6844, \"_H2\": 96.3372, \"_LD21\": 25.9018, \"_az1r\": 25.8314, \"_ev1r\": 23.5925, \"_Nts\": 74.0, \"_Nos\": 7.0, \"_leap\": 90.5405, \"_tme\": 1.0, \"_dt\": 0.002829, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_225635.400_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.8e-05, \"pi\": 325.518, \"Q\": 5.34441, \"true_anom\": 50.0411, \"EA\": 21.0725, \"MA\": 6.11788, \"Tj\": 1.2323, \"T\": 5.44898, \"last_peri\": \"2025-09-05\", \"jacchia1\": 0.000494, \"Jacchia2\": 29.3226, \"numstats\": 7, \"stations\": \"UK001L;UK002Z;UK003T;UK004B;UK006V;UK008G;UK00AM;\"},\n{\"_localtime\": \"_20251008_225740\", \"_mjd\": 60957.0, \"_sol\": 195.561, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.757644, \"_ra_o\": 36.0722, \"_dc_o\": 8.75135, \"_ra_t\": 36.6318, \"_dc_t\": 7.03204, \"_elng\": 36.6242, \"_elat\": -7.07784, \"_vo\": 31.7606, \"_vi\": 31.7606, \"_vg\": 29.7541, \"_vs\": 34.1769, \"_a\": 1.45913, \"_q\": 0.233257, \"_e\": 0.84014, \"_p\": 1.76256, \"_peri\": 132.757, \"_node\": 15.5587, \"_incl\": 10.8117, \"_stream\": \"spo\", \"_mag\": 1.02, \"_dur\": 0.202308, \"_lng1\": -3.83906, \"_lat1\": 51.1034, \"_H1\": 93.2112, \"_lng2\": -3.89293, \"_lat2\": 51.1317, \"_H2\": 89.4131, \"_LD21\": 6.23239, \"_az1r\": 130.365, \"_ev1r\": 37.5659, \"_Nts\": 24.0, \"_Nos\": 5.0, \"_leap\": 79.1667, \"_tme\": 1.0, \"_dt\": 0.000185, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_225740.845_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.3e-05, \"pi\": 148.316, \"Q\": 2.68501, \"true_anom\": 227.245, \"EA\": -67.9537, \"MA\": 336.663, \"Tj\": 4.13086, \"T\": 1.76256, \"last_peri\": \"2024-02-14\", \"jacchia1\": -0.095103, \"Jacchia2\": 37.2938, \"numstats\": 5, \"stations\": \"UK0024;UK007A;UK009D;UK009S;UK00AU;\"},\n{\"_localtime\": \"_20251008_230622\", \"_mjd\": 60957.0, \"_sol\": 195.567, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.945, \"_ra_o\": 5.32975, \"_dc_o\": 20.9123, \"_ra_t\": 5.04169, \"_dc_t\": 19.0117, \"_elng\": 12.3267, \"_elat\": 15.4166, \"_vo\": 24.4473, \"_vi\": 24.4473, \"_vg\": 21.7796, \"_vs\": 38.1295, \"_a\": 2.75347, \"_q\": 0.631267, \"_e\": 0.770738, \"_p\": 4.569, \"_peri\": 261.121, \"_node\": 195.569, \"_incl\": 10.588, \"_stream\": \"spo\", \"_mag\": 1.58, \"_dur\": 0.68398, \"_lng1\": -0.222956, \"_lat1\": 50.8757, \"_H1\": 97.2652, \"_lng2\": -0.229191, \"_lat2\": 50.9395, \"_H2\": 84.7913, \"_LD21\": 16.2861, \"_az1r\": 177.894, \"_ev1r\": 60.0321, \"_Nts\": 31.0, \"_Nos\": 2.0, \"_leap\": 93.5484, \"_tme\": 1.0, \"_dt\": 0.00644, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_230622.931_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.6e-05, \"pi\": 96.69, \"Q\": 4.87568, \"true_anom\": 278.877, \"EA\": -34.2362, \"MA\": 350.608, \"Tj\": 2.8012, \"T\": 4.569, \"last_peri\": \"2021-04-27\", \"jacchia1\": -3.6e-05, \"Jacchia2\": 23.2502, \"numstats\": 2, \"stations\": \"UK003N;UK005N;\"},\n{\"_localtime\": \"_20251008_230708\", \"_mjd\": 60957.0, \"_sol\": 195.567, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.804003, \"_ra_o\": 298.575, \"_dc_o\": 50.5891, \"_ra_t\": 292.918, \"_dc_t\": 48.7465, \"_elng\": 314.841, \"_elat\": 68.6449, \"_vo\": 19.3867, \"_vi\": 19.3867, \"_vg\": 15.8876, \"_vs\": 38.0028, \"_a\": 2.67344, \"_q\": 0.989125, \"_e\": 0.630018, \"_p\": 4.37125, \"_peri\": 192.979, \"_node\": 195.569, \"_incl\": 23.0116, \"_stream\": \"spo\", \"_mag\": 1.04, \"_dur\": 0.399964, \"_lng1\": -3.69662, \"_lat1\": 50.5002, \"_H1\": 93.1531, \"_lng2\": -3.64438, \"_lat2\": 50.4841, \"_H2\": 87.7492, \"_LD21\": 6.8975, \"_az1r\": 295.153, \"_ev1r\": 51.5918, \"_Nts\": 18.0, \"_Nos\": 2.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 4.9e-05, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_230708.508_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.4e-05, \"pi\": 28.5478, \"Q\": 4.35775, \"true_anom\": 347.02, \"EA\": -6.20464, \"MA\": 357.697, \"Tj\": 2.97127, \"T\": 4.37125, \"last_peri\": \"2021-06-05\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK0024;UK00AU;\"},\n{\"_localtime\": \"_20251008_230748\", \"_mjd\": 60957.0, \"_sol\": 195.568, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -1.04385, \"_ra_o\": 69.233, \"_dc_o\": 41.1289, \"_ra_t\": 69.3193, \"_dc_t\": 40.7714, \"_elng\": 73.6184, \"_elat\": 18.5025, \"_vo\": 56.2447, \"_vi\": 56.2447, \"_vg\": 55.1369, \"_vs\": 36.2133, \"_a\": 1.90926, \"_q\": 0.318122, \"_e\": 0.833379, \"_p\": 2.63814, \"_peri\": 299.958, \"_node\": 195.568, \"_incl\": 129.776, \"_stream\": \"spo\", \"_mag\": 0.26, \"_dur\": 0.186825, \"_lng1\": -5.98268, \"_lat1\": 51.3591, \"_H1\": 95.5662, \"_lng2\": -6.07358, \"_lat2\": 51.3421, \"_H2\": 89.5419, \"_LD21\": 9.26738, \"_az1r\": 73.2456, \"_ev1r\": 42.1675, \"_Nts\": 23.0, \"_Nos\": 5.0, \"_leap\": 78.2609, \"_tme\": 1.0, \"_dt\": 0.000313, \"dtstamp\": 1759960000.0, \"orbname\": \"20251008_230748.915_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.5e-05, \"pi\": 135.526, \"Q\": 3.50039, \"true_anom\": 240.041, \"EA\": -55.1041, \"MA\": 344.059, \"Tj\": 2.29745, \"T\": 2.63814, \"last_peri\": \"2023-04-02\", \"jacchia1\": 0.002892, \"Jacchia2\": 71.277, \"numstats\": 5, \"stations\": \"UK0024;UK00A1;UK00AU;UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20251008_231040\", \"_mjd\": 60957.0, \"_sol\": 195.57, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": 1.53474, \"_ra_o\": 25.0476, \"_dc_o\": 16.7302, \"_ra_t\": 25.3862, \"_dc_t\": 14.9747, \"_elng\": 28.9491, \"_elat\": 4.1485, \"_vo\": 27.9631, \"_vi\": 27.9631, \"_vg\": 25.6616, \"_vs\": 34.9025, \"_a\": 1.59023, \"_q\": 0.364335, \"_e\": 0.770891, \"_p\": 2.00535, \"_peri\": 297.343, \"_node\": 195.576, \"_incl\": 4.4511, \"_stream\": \"spo\", \"_mag\": 1.69, \"_dur\": 0.668336, \"_lng1\": -3.09248, \"_lat1\": 51.838, \"_H1\": 94.2363, \"_lng2\": -3.19215, \"_lat2\": 51.922, \"_H2\": 80.1005, \"_LD21\": 17.0079, \"_az1r\": 144.519, \"_ev1r\": 50.5778, \"_Nts\": 69.0, \"_Nos\": 7.0, \"_leap\": 89.8551, \"_tme\": 1.0, \"_dt\": 0.000913, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_231040.812_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.3e-05, \"pi\": 132.919, \"Q\": 2.81612, \"true_anom\": 242.651, \"EA\": -61.1649, \"MA\": 337.527, \"Tj\": 3.97473, \"T\": 2.00535, \"last_peri\": \"2023-11-22\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 7, \"stations\": \"UK0006;UK007A;UK008J;UK009P;UK00B0;UK00BA;UK00BK;\"},\n{\"_localtime\": \"_20251008_231236\", \"_mjd\": 60957.0, \"_sol\": 195.571, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 1.35007, \"_ra_o\": 132.246, \"_dc_o\": 55.4795, \"_ra_t\": 132.324, \"_dc_t\": 55.0798, \"_elng\": 118.346, \"_elat\": 35.7294, \"_vo\": 62.0072, \"_vi\": 62.0072, \"_vg\": 61.0061, \"_vs\": 41.4843, \"_a\": 16.1008, \"_q\": 0.93352, \"_e\": 0.94202, \"_p\": 64.6058, \"_peri\": 149.87, \"_node\": 195.571, \"_incl\": 117.44, \"_stream\": \"spo\", \"_mag\": 1.81, \"_dur\": 0.290564, \"_lng1\": -1.65109, \"_lat1\": 51.6669, \"_H1\": 107.868, \"_lng2\": -1.76932, \"_lat2\": 51.5388, \"_H2\": 99.952, \"_LD21\": 17.5841, \"_az1r\": 29.6915, \"_ev1r\": 25.4894, \"_Nts\": 29.0, \"_Nos\": 4.0, \"_leap\": 86.2069, \"_tme\": 1.0, \"_dt\": 0.000415, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_231236.627_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 345.441, \"Q\": 31.2681, \"true_anom\": 30.1295, \"EA\": 5.32553, \"MA\": 0.315994, \"Tj\": -0.22074, \"T\": 64.6058, \"last_peri\": \"2025-09-18\", \"jacchia1\": 1.4604, \"Jacchia2\": 17.3367, \"numstats\": 4, \"stations\": \"UK000S;UK008X;UK009D;UK009G;\"},\n{\"_localtime\": \"_20251008_231924\", \"_mjd\": 60957.0, \"_sol\": 195.576, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -0.988154, \"_ra_o\": 56.0062, \"_dc_o\": 36.3501, \"_ra_t\": 56.0087, \"_dc_t\": 36.0177, \"_elng\": 61.9646, \"_elat\": 15.8295, \"_vo\": 56.2578, \"_vi\": 56.2578, \"_vg\": 55.1524, \"_vs\": 40.9433, \"_a\": 8.89814, \"_q\": 0.170768, \"_e\": 0.980809, \"_p\": 26.543, \"_peri\": 312.402, \"_node\": 195.576, \"_incl\": 119.806, \"_stream\": \"spo\", \"_mag\": -0.23, \"_dur\": 0.33861, \"_lng1\": -5.80112, \"_lat1\": 49.8823, \"_H1\": 106.557, \"_lng2\": -5.94822, \"_lat2\": 49.8792, \"_H2\": 94.2123, \"_LD21\": 18.0189, \"_az1r\": 88.1755, \"_ev1r\": 49.2495, \"_Nts\": 53.0, \"_Nos\": 7.0, \"_leap\": 86.7924, \"_tme\": 1.0, \"_dt\": 0.000103, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_231924.053_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.4e-05, \"pi\": 147.978, \"Q\": 17.6255, \"true_anom\": 227.597, \"EA\": -25.1631, \"MA\": 358.731, \"Tj\": 0.331423, \"T\": 26.543, \"last_peri\": \"1999-04-28\", \"jacchia1\": 17.3851, \"Jacchia2\": 0.0, \"numstats\": 7, \"stations\": \"UK001K;UK0021;UK0024;UK00A1;UK00AU;UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20251008_232010\", \"_mjd\": 60957.0, \"_sol\": 195.576, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.767649, \"_ra_o\": 119.743, \"_dc_o\": 46.8276, \"_ra_t\": 119.694, \"_dc_t\": 46.5167, \"_elng\": 112.158, \"_elat\": 25.3371, \"_vo\": 70.7727, \"_vi\": 70.7727, \"_vg\": 69.8979, \"_vs\": 45.0197, \"_a\": -3.53836, \"_q\": 0.978955, \"_e\": 1.27667, \"_p\": 0.0, \"_peri\": 164.63, \"_node\": 195.576, \"_incl\": 137.772, \"_stream\": \"spo\", \"_mag\": 2.63, \"_dur\": 0.164304, \"_lng1\": -4.89589, \"_lat1\": 52.0095, \"_H1\": 113.289, \"_lng2\": -5.00097, \"_lat2\": 51.9406, \"_H2\": 109.133, \"_LD21\": 11.4521, \"_az1r\": 41.4573, \"_ev1r\": 22.6552, \"_Nts\": 9.0, \"_Nos\": 2.0, \"_leap\": 77.7778, \"_tme\": 1.0, \"_dt\": 0.001634, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232010.833_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 0.206567, \"Q\": -8.05568, \"true_anom\": 15.369, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.43997, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK009D;UK00BK;\"},\n{\"_localtime\": \"_20251008_232024\", \"_mjd\": 60957.0, \"_sol\": 195.576, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -1.51905, \"_ra_o\": 350.396, \"_dc_o\": 42.1964, \"_ra_t\": 349.72, \"_dc_t\": 41.831, \"_elng\": 11.0573, \"_elat\": 41.667, \"_vo\": 32.3734, \"_vi\": 32.3734, \"_vg\": 30.4079, \"_vs\": 44.066, \"_a\": -5.35177, \"_q\": 0.74001, \"_e\": 1.13827, \"_p\": 0.0, \"_peri\": 239.135, \"_node\": 195.577, \"_incl\": 32.6202, \"_stream\": \"spo\", \"_mag\": 0.8, \"_dur\": 0.482448, \"_lng1\": -4.30272, \"_lat1\": 48.7939, \"_H1\": 94.1641, \"_lng2\": -4.2707, \"_lat2\": 48.8071, \"_H2\": 79.5405, \"_LD21\": 14.9167, \"_az1r\": 239.475, \"_ev1r\": 78.6372, \"_Nts\": 24.0, \"_Nos\": 2.0, \"_leap\": 91.6667, \"_tme\": 1.0, \"_dt\": 0.000854, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232024.494_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000274, \"pi\": 74.7123, \"Q\": -11.4436, \"true_anom\": 300.864, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -0.043582, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 7.55151, \"Jacchia2\": 8.78893, \"numstats\": 2, \"stations\": \"UK0021;UK00AU;\"},\n{\"_localtime\": \"_20251008_232424\", \"_mjd\": 60957.0, \"_sol\": 195.579, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 0.553117, \"_ra_o\": 356.27, \"_dc_o\": 19.088, \"_ra_t\": 355.417, \"_dc_t\": 16.1596, \"_elng\": 2.40907, \"_elat\": 16.6114, \"_vo\": 20.4629, \"_vi\": 20.4629, \"_vg\": 17.1836, \"_vs\": 37.7203, \"_a\": 2.51149, \"_q\": 0.762473, \"_e\": 0.696406, \"_p\": 3.98014, \"_peri\": 244.956, \"_node\": 195.582, \"_incl\": 8.33383, \"_stream\": \"spo\", \"_mag\": 1.02, \"_dur\": 0.882828, \"_lng1\": -4.27357, \"_lat1\": 50.2242, \"_H1\": 91.8627, \"_lng2\": -4.24429, \"_lat2\": 50.3021, \"_H2\": 77.2358, \"_LD21\": 17.2259, \"_az1r\": 195.165, \"_ev1r\": 58.1524, \"_Nts\": 98.0, \"_Nos\": 6.0, \"_leap\": 93.8775, \"_tme\": 1.0, \"_dt\": 0.000735, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232424.021_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000129, \"pi\": 80.5378, \"Q\": 4.26051, \"true_anom\": 295.042, \"EA\": -30.1433, \"MA\": 349.894, \"Tj\": 3.05873, \"T\": 3.98014, \"last_peri\": \"2021-11-26\", \"jacchia1\": 5.64357, \"Jacchia2\": 5.29555, \"numstats\": 6, \"stations\": \"UK000H;UK001K;UK0021;UK0024;UK00A1;UK00AU;\"},\n{\"_localtime\": \"_20251008_232428\", \"_mjd\": 60957.0, \"_sol\": 195.579, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.295323, \"_ra_o\": 32.5648, \"_dc_o\": 11.7473, \"_ra_t\": 32.8948, \"_dc_t\": 10.3507, \"_elng\": 34.2139, \"_elat\": -2.73144, \"_vo\": 32.9559, \"_vi\": 32.9559, \"_vg\": 31.0285, \"_vs\": 35.9104, \"_a\": 1.82351, \"_q\": 0.239614, \"_e\": 0.868598, \"_p\": 2.46243, \"_peri\": 129.446, \"_node\": 15.5745, \"_incl\": 4.2442, \"_stream\": \"STA\", \"_mag\": 1.15, \"_dur\": 0.552704, \"_lng1\": -6.66308, \"_lat1\": 49.6564, \"_H1\": 98.3122, \"_lng2\": -6.7858, \"_lat2\": 49.7374, \"_H2\": 85.7988, \"_LD21\": 17.0107, \"_az1r\": 136.096, \"_ev1r\": 44.636, \"_Nts\": 40.0, \"_Nos\": 3.0, \"_leap\": 92.5, \"_tme\": 1.0, \"_dt\": 0.000388, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232428.526_UK\", \"iau\": 2, \"name\": \"Southern Taurids \", \"mass\": 0.000122, \"pi\": 145.02, \"Q\": 3.40741, \"true_anom\": 230.559, \"EA\": -58.6297, \"MA\": 343.862, \"Tj\": 3.439, \"T\": 2.46243, \"last_peri\": \"2023-06-02\", \"jacchia1\": 6.09239, \"Jacchia2\": 7.64494, \"numstats\": 3, \"stations\": \"UK00A1;UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20251008_232546\", \"_mjd\": 60957.0, \"_sol\": 195.58, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -1.04572, \"_ra_o\": 8.15709, \"_dc_o\": 24.9269, \"_ra_t\": 7.74672, \"_dc_t\": 23.3398, \"_elng\": 16.595, \"_elat\": 18.3166, \"_vo\": 26.1653, \"_vi\": 26.1653, \"_vg\": 23.6853, \"_vs\": 38.0466, \"_a\": 2.70047, \"_q\": 0.579579, \"_e\": 0.785379, \"_p\": 4.43773, \"_peri\": 267.384, \"_node\": 195.582, \"_incl\": 14.2115, \"_stream\": \"spo\", \"_mag\": -0.32, \"_dur\": 0.285509, \"_lng1\": 0.948246, \"_lat1\": 53.5433, \"_H1\": 83.8533, \"_lng2\": 0.950519, \"_lat2\": 53.5732, \"_H2\": 77.6767, \"_LD21\": 7.03988, \"_az1r\": 183.934, \"_ev1r\": 61.3412, \"_Nts\": 33.0, \"_Nos\": 5.0, \"_leap\": 84.8485, \"_tme\": 1.0, \"_dt\": 0.002869, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232546.693_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000115, \"pi\": 102.967, \"Q\": 4.82137, \"true_anom\": 272.614, \"EA\": -36.6545, \"MA\": 350.209, \"Tj\": 2.79168, \"T\": 4.43773, \"last_peri\": \"2021-06-15\", \"jacchia1\": 0.428432, \"Jacchia2\": 22.9684, \"numstats\": 5, \"stations\": \"UK0026;UK002K;UK006C;UK006P;UK007Y;\"},\n{\"_localtime\": \"_20251008_232603\", \"_mjd\": 60957.0, \"_sol\": 195.58, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.804862, \"_ra_o\": 339.661, \"_dc_o\": 26.3237, \"_ra_t\": 336.514, \"_dc_t\": 22.2929, \"_elng\": 347.545, \"_elat\": 29.6505, \"_vo\": 16.6718, \"_vi\": 16.6718, \"_vg\": 12.4207, \"_vs\": 36.7996, \"_a\": 2.10299, \"_q\": 0.89624, \"_e\": 0.573826, \"_p\": 3.04969, \"_peri\": 224.116, \"_node\": 195.583, \"_incl\": 9.99685, \"_stream\": \"spo\", \"_mag\": 1.43, \"_dur\": 0.750534, \"_lng1\": -2.8835, \"_lat1\": 49.9852, \"_H1\": 80.0809, \"_lng2\": -2.81693, \"_lat2\": 50.0216, \"_H2\": 69.4151, \"_LD21\": 11.7137, \"_az1r\": 230.991, \"_ev1r\": 58.6449, \"_Nts\": 37.0, \"_Nos\": 2.0, \"_leap\": 94.5946, \"_tme\": 1.0, \"_dt\": 0.001145, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232603.446_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000179, \"pi\": 59.6988, \"Q\": 3.30974, \"true_anom\": 315.882, \"EA\": -23.8149, \"MA\": 349.461, \"Tj\": 3.50011, \"T\": 3.04969, \"last_peri\": \"2022-10-23\", \"jacchia1\": -0.05132, \"Jacchia2\": 11.9467, \"numstats\": 2, \"stations\": \"UK000H;UK00AU;\"},\n{\"_localtime\": \"_20251008_232857\", \"_mjd\": 60957.0, \"_sol\": 195.582, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.856164, \"_ra_o\": 92.5182, \"_dc_o\": 18.1914, \"_ra_t\": 92.4969, \"_dc_t\": 17.8089, \"_elng\": 92.3886, \"_elat\": -5.60814, \"_vo\": 70.211, \"_vi\": 70.211, \"_vg\": 69.3294, \"_vs\": 41.3116, \"_a\": 12.7818, \"_q\": 0.839169, \"_e\": 0.934346, \"_p\": 45.6969, \"_peri\": 48.0276, \"_node\": 15.5847, \"_incl\": 169.729, \"_stream\": \"spo\", \"_mag\": -0.01, \"_dur\": 0.520338, \"_lng1\": 0.501342, \"_lat1\": 51.4271, \"_H1\": 112.646, \"_lng2\": 0.096714, \"_lat2\": 51.4022, \"_H2\": 102.8, \"_LD21\": 35.987, \"_az1r\": 84.5695, \"_ev1r\": 19.1476, \"_Nts\": 34.0, \"_Nos\": 3.0, \"_leap\": 91.1765, \"_tme\": 1.0, \"_dt\": 0.000827, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232857.047_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.7e-05, \"pi\": 63.6123, \"Q\": 24.7244, \"true_anom\": 311.974, \"EA\": -9.384, \"MA\": 359.345, \"Tj\": -0.69191, \"T\": 45.6969, \"last_peri\": \"1980-02-27\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK002F;UK003X;UK009L;\"},\n{\"_localtime\": \"_20251008_232938\", \"_mjd\": 60957.0, \"_sol\": 195.583, \"_ID1\": \"_(UNIFIED_10)\", \"_amag\": -1.08482, \"_ra_o\": 320.47, \"_dc_o\": 38.7172, \"_ra_t\": 316.331, \"_dc_t\": 36.2464, \"_elng\": 334.7, \"_elat\": 49.8157, \"_vo\": 18.3108, \"_vi\": 18.3108, \"_vg\": 14.5506, \"_vs\": 38.3819, \"_a\": 2.92891, \"_q\": 0.950439, \"_e\": 0.675497, \"_p\": 5.01255, \"_peri\": 208.421, \"_node\": 195.584, \"_incl\": 17.1886, \"_stream\": \"spo\", \"_mag\": -0.17, \"_dur\": 2.12486, \"_lng1\": -5.67301, \"_lat1\": 51.1281, \"_H1\": 85.2478, \"_lng2\": -5.41297, \"_lat2\": 51.1414, \"_H2\": 55.9996, \"_LD21\": 36.6781, \"_az1r\": 265.405, \"_ev1r\": 56.9894, \"_Nts\": 389.0, \"_Nos\": 10.0, \"_leap\": 97.4293, \"_tme\": 1.0, \"_dt\": 0.001478, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_232938.549_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.0015, \"pi\": 44.0058, \"Q\": 4.90737, \"true_anom\": 331.577, \"EA\": -12.7189, \"MA\": 355.802, \"Tj\": 2.83378, \"T\": 5.01255, \"last_peri\": \"2020-10-25\", \"jacchia1\": 2.4722, \"Jacchia2\": 3.17784, \"numstats\": 10, \"stations\": \"UK000D;UK001K;UK0024;UK0051;UK009K;UK00A1;UK00AU;UK00BB;UK00BW;UK00C6;\"},\n{\"_localtime\": \"_20251008_233059\", \"_mjd\": 60957.0, \"_sol\": 195.584, \"_ID1\": \"_(UNIFIED_13)\", \"_amag\": -1.62667, \"_ra_o\": 317.738, \"_dc_o\": 43.1712, \"_ra_t\": 313.696, \"_dc_t\": 41.3078, \"_elng\": 335.568, \"_elat\": 55.2517, \"_vo\": 19.4773, \"_vi\": 19.4773, \"_vg\": 15.9987, \"_vs\": 38.7364, \"_a\": 3.21955, \"_q\": 0.953888, \"_e\": 0.70372, \"_p\": 5.77689, \"_peri\": 207.037, \"_node\": 195.585, \"_incl\": 20.2379, \"_stream\": \"spo\", \"_mag\": -0.27, \"_dur\": 1.15184, \"_lng1\": -4.93092, \"_lat1\": 51.1932, \"_H1\": 93.685, \"_lng2\": -4.77752, \"_lat2\": 51.1843, \"_H2\": 76.3505, \"_LD21\": 20.6941, \"_az1r\": 275.056, \"_ev1r\": 57.0832, \"_Nts\": 288.0, \"_Nos\": 13.0, \"_leap\": 95.4861, \"_tme\": 1.0, \"_dt\": 0.000751, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_233059.894_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000684, \"pi\": 42.6223, \"Q\": 5.48522, \"true_anom\": 332.962, \"EA\": -11.4511, \"MA\": 356.554, \"Tj\": 2.66509, \"T\": 5.77689, \"last_peri\": \"2020-01-19\", \"jacchia1\": 0.000875, \"Jacchia2\": 12.3176, \"numstats\": 13, \"stations\": \"UK000D;UK001K;UK0024;UK0051;UK009K;UK009S;UK009W;UK00A1;UK00AU;UK00BB;UK00BK;UK00BW;UK00CQ;\"},\n{\"_localtime\": \"_20251008_233417\", \"_mjd\": 60957.0, \"_sol\": 195.586, \"_ID1\": \"_(UNIFIED_10)\", \"_amag\": 1.18506, \"_ra_o\": 354.932, \"_dc_o\": 39.9274, \"_ra_t\": 354.158, \"_dc_t\": 39.2714, \"_elng\": 13.1185, \"_elat\": 37.7422, \"_vo\": 28.4025, \"_vi\": 28.4025, \"_vg\": 26.1414, \"_vs\": 40.558, \"_a\": 6.76644, \"_q\": 0.711175, \"_e\": 0.894897, \"_p\": 17.6012, \"_peri\": 247.047, \"_node\": 195.587, \"_incl\": 27.5411, \"_stream\": \"spo\", \"_mag\": 1.66, \"_dur\": 0.383808, \"_lng1\": -2.9621, \"_lat1\": 51.7066, \"_H1\": 98.8348, \"_lng2\": -2.93721, \"_lat2\": 51.7237, \"_H2\": 88.8777, \"_LD21\": 10.5371, \"_az1r\": 223.744, \"_ev1r\": 74.9621, \"_Nts\": 66.0, \"_Nos\": 10.0, \"_leap\": 84.8485, \"_tme\": 1.0, \"_dt\": 0.001127, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_233417.510_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.2e-05, \"pi\": 82.6346, \"Q\": 12.8217, \"true_anom\": 292.952, \"EA\": -17.7362, \"MA\": 357.884, \"Tj\": 1.67153, \"T\": 17.6012, \"last_peri\": \"2008-04-09\", \"jacchia1\": 0.040828, \"Jacchia2\": 25.1525, \"numstats\": 10, \"stations\": \"UK0006;UK001Z;UK007A;UK007P;UK008X;UK009D;UK009G;UK00B0;UK00BA;UK00BK;\"},\n{\"_localtime\": \"_20251008_233849\", \"_mjd\": 60957.0, \"_sol\": 195.589, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -1.88702, \"_ra_o\": 28.8356, \"_dc_o\": 25.8205, \"_ra_t\": 28.7303, \"_dc_t\": 25.1429, \"_elng\": 35.5965, \"_elat\": 12.5178, \"_vo\": 39.2975, \"_vi\": 39.2975, \"_vg\": 37.6931, \"_vs\": 39.9075, \"_a\": 4.83582, \"_q\": 0.208645, \"_e\": 0.956854, \"_p\": 10.6342, \"_peri\": 308.167, \"_node\": 195.59, \"_incl\": 25.401, \"_stream\": \"spo\", \"_mag\": -0.61, \"_dur\": 0.284301, \"_lng1\": -0.624761, \"_lat1\": 51.0263, \"_H1\": 88.1776, \"_lng2\": -0.664584, \"_lat2\": 51.0631, \"_H2\": 78.9552, \"_LD21\": 10.2655, \"_az1r\": 146.52, \"_ev1r\": 61.6828, \"_Nts\": 52.0, \"_Nos\": 8.0, \"_leap\": 84.6154, \"_tme\": 1.0, \"_dt\": 0.000859, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_233849.806_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 9.1e-05, \"pi\": 143.757, \"Q\": 9.463, \"true_anom\": 231.833, \"EA\": -33.9838, \"MA\": 356.66, \"Tj\": 1.58222, \"T\": 10.6342, \"last_peri\": \"2015-03-27\", \"jacchia1\": 0.000245, \"Jacchia2\": 51.4937, \"numstats\": 8, \"stations\": \"UK0001;UK000S;UK007H;UK007R;UK0084;UK0092;UK009S;UK00A5;\"},\n{\"_localtime\": \"_20251008_234446\", \"_mjd\": 60957.0, \"_sol\": 195.593, \"_ID1\": \"_(UNIFIED_15)\", \"_amag\": -0.62688, \"_ra_o\": 260.844, \"_dc_o\": 77.0154, \"_ra_t\": 255.419, \"_dc_t\": 76.0973, \"_elng\": 109.298, \"_elat\": 79.4535, \"_vo\": 31.0487, \"_vi\": 31.0487, \"_vg\": 28.9938, \"_vs\": 37.5904, \"_a\": 2.44372, \"_q\": 0.998964, \"_e\": 0.591212, \"_p\": 3.82013, \"_peri\": 180.605, \"_node\": 195.594, \"_incl\": 49.3189, \"_stream\": \"spo\", \"_mag\": -0.19, \"_dur\": 0.781658, \"_lng1\": -2.96563, \"_lat1\": 51.0657, \"_H1\": 95.814, \"_lng2\": -2.90037, \"_lat2\": 50.9278, \"_H2\": 79.4647, \"_LD21\": 23.1721, \"_az1r\": 342.603, \"_ev1r\": 45.1632, \"_Nts\": 251.0, \"_Nos\": 15.0, \"_leap\": 94.0239, \"_tme\": 1.0, \"_dt\": 0.000418, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_234446.968_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000156, \"pi\": 16.1985, \"Q\": 3.88847, \"true_anom\": 359.395, \"EA\": -0.306614, \"MA\": 359.875, \"Tj\": 2.85015, \"T\": 3.82013, \"last_peri\": \"2021-12-14\", \"jacchia1\": 4.1e-05, \"Jacchia2\": 21.4443, \"numstats\": 15, \"stations\": \"UK0006;UK0009;UK000D;UK000H;UK003Z;UK007Q;UK008D;UK008X;UK009G;UK009K;UK009S;UK009W;UK00A5;UK00BK;UK00BW;\"},\n{\"_localtime\": \"_20251008_234540\", \"_mjd\": 60957.0, \"_sol\": 195.594, \"_ID1\": \"_(UNIFIED_13)\", \"_amag\": -1.25313, \"_ra_o\": 73.1955, \"_dc_o\": 34.197, \"_ra_t\": 73.1746, \"_dc_t\": 33.8745, \"_elng\": 75.8157, \"_elat\": 11.2615, \"_vo\": 60.5575, \"_vi\": 60.5575, \"_vg\": 59.5321, \"_vs\": 37.9551, \"_a\": 2.64444, \"_q\": 0.343527, \"_e\": 0.870095, \"_p\": 4.30032, \"_peri\": 294.217, \"_node\": 195.594, \"_incl\": 150.883, \"_stream\": \"spo\", \"_mag\": -0.64, \"_dur\": 0.424446, \"_lng1\": -4.53206, \"_lat1\": 50.7289, \"_H1\": 108.619, \"_lng2\": -4.78596, \"_lat2\": 50.7136, \"_H2\": 92.3037, \"_LD21\": 24.89, \"_az1r\": 84.6274, \"_ev1r\": 41.998, \"_Nts\": 111.0, \"_Nos\": 13.0, \"_leap\": 88.2883, \"_tme\": 1.0, \"_dt\": 0.000195, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_234540.266_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.9e-05, \"pi\": 129.811, \"Q\": 4.94535, \"true_anom\": 245.782, \"EA\": -44.346, \"MA\": 350.501, \"Tj\": 1.35411, \"T\": 4.30032, \"last_peri\": \"2021-08-01\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 13, \"stations\": \"UK0006;UK000D;UK000H;UK001K;UK0024;UK0051;UK007Q;UK008X;UK009K;UK00A1;UK00BK;UK00BW;UK00CQ;\"},\n{\"_localtime\": \"_20251008_234750\", \"_mjd\": 60957.0, \"_sol\": 195.595, \"_ID1\": \"_(UNIFIED_20)\", \"_amag\": -2.35318, \"_ra_o\": 32.9261, \"_dc_o\": 35.8952, \"_ra_t\": 32.8095, \"_dc_t\": 35.4901, \"_elng\": 42.8902, \"_elat\": 20.9272, \"_vo\": 45.0272, \"_vi\": 45.0272, \"_vg\": 43.6355, \"_vs\": 41.4003, \"_a\": 14.291, \"_q\": 0.207595, \"_e\": 0.985474, \"_p\": 54.0251, \"_peri\": 306.588, \"_node\": 195.596, \"_incl\": 54.5236, \"_stream\": \"spo\", \"_mag\": -1.03, \"_dur\": 0.454799, \"_lng1\": -4.2513, \"_lat1\": 52.1634, \"_H1\": 95.7538, \"_lng2\": -4.34275, \"_lat2\": 52.2048, \"_H2\": 77.2041, \"_LD21\": 19.3886, \"_az1r\": 126.981, \"_ev1r\": 67.3103, \"_Nts\": 192.0, \"_Nos\": 20.0, \"_leap\": 89.5833, \"_tme\": 1.0, \"_dt\": 0.0, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_234750.677_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000144, \"pi\": 142.184, \"Q\": 28.3745, \"true_anom\": 233.411, \"EA\": -19.2989, \"MA\": 359.362, \"Tj\": 0.690822, \"T\": 54.0251, \"last_peri\": \"1971-11-03\", \"jacchia1\": -1e-06, \"Jacchia2\": 43.7838, \"numstats\": 20, \"stations\": \"UK0006;UK001L;UK001Z;UK0050;UK0051;UK0062;UK0067;UK007A;UK007P;UK008J;UK009D;UK009K;UK009P;UK009S;UK009W;UK00BA;UK00BD;UK00BK;UK00BW;UK00CQ;\"},\n{\"_localtime\": \"_20251008_234942\", \"_mjd\": 60957.0, \"_sol\": 195.596, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -1.8386, \"_ra_o\": 14.9227, \"_dc_o\": 7.51543, \"_ra_t\": 14.7912, \"_dc_t\": 4.76822, \"_elng\": 15.4602, \"_elat\": -1.42836, \"_vo\": 24.7301, \"_vi\": 24.7301, \"_vg\": 22.0888, \"_vs\": 37.4287, \"_a\": 2.36472, \"_q\": 0.570123, \"_e\": 0.758905, \"_p\": 3.63638, \"_peri\": 89.7305, \"_node\": 15.5787, \"_incl\": 1.05238, \"_stream\": \"spo\", \"_mag\": -0.18, \"_dur\": 0.582124, \"_lng1\": -5.28503, \"_lat1\": 51.5897, \"_H1\": 80.5598, \"_lng2\": -5.30372, \"_lat2\": 51.6729, \"_H2\": 70.8861, \"_LD21\": 13.6692, \"_az1r\": 173.004, \"_ev1r\": 45.7436, \"_Nts\": 102.0, \"_Nos\": 8.0, \"_leap\": 92.1569, \"_tme\": 1.0, \"_dt\": 0.001169, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_234942.825_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000449, \"pi\": 105.309, \"Q\": 4.15931, \"true_anom\": 270.288, \"EA\": -40.4452, \"MA\": 347.762, \"Tj\": 3.07857, \"T\": 3.63638, \"last_peri\": \"2022-04-04\", \"jacchia1\": 0.033621, \"Jacchia2\": 15.1787, \"numstats\": 8, \"stations\": \"UK0006;UK000D;UK0024;UK0051;UK009D;UK009K;UK00BD;UK00BW;\"},\n{\"_localtime\": \"_20251008_235115\", \"_mjd\": 60957.0, \"_sol\": 195.598, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 1.10723, \"_ra_o\": 21.9348, \"_dc_o\": 7.45871, \"_ra_t\": 21.8767, \"_dc_t\": 5.22209, \"_elng\": 22.1744, \"_elat\": -3.67427, \"_vo\": 27.5226, \"_vi\": 27.5226, \"_vg\": 25.1786, \"_vs\": 37.0828, \"_a\": 2.21268, \"_q\": 0.456124, \"_e\": 0.793859, \"_p\": 3.29139, \"_peri\": 103.181, \"_node\": 15.5928, \"_incl\": 3.42525, \"_stream\": \"spo\", \"_mag\": 1.19, \"_dur\": 0.253624, \"_lng1\": -2.382, \"_lat1\": 52.2872, \"_H1\": 88.4844, \"_lng2\": -2.39701, \"_lat2\": 52.3271, \"_H2\": 83.9424, \"_LD21\": 6.13616, \"_az1r\": 167.919, \"_ev1r\": 44.6146, \"_Nts\": 20.0, \"_Nos\": 4.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.000843, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_235115.269_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.4e-05, \"pi\": 118.773, \"Q\": 3.96924, \"true_anom\": 256.825, \"EA\": -46.2944, \"MA\": 346.587, \"Tj\": 3.14362, \"T\": 3.29139, \"last_peri\": \"2022-08-08\", \"jacchia1\": 1.82958, \"Jacchia2\": 21.8042, \"numstats\": 4, \"stations\": \"UK001L;UK0050;UK0067;UK009P;\"},\n{\"_localtime\": \"_20251008_235203\", \"_mjd\": 60957.0, \"_sol\": 195.598, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": -0.06876, \"_ra_o\": 82.436, \"_dc_o\": 10.8571, \"_ra_t\": 82.4485, \"_dc_t\": 10.3999, \"_elng\": 82.3817, \"_elat\": -12.8383, \"_vo\": 65.4978, \"_vi\": 65.4978, \"_vg\": 64.5507, \"_vs\": 40.3994, \"_a\": 6.1627, \"_q\": 0.585804, \"_e\": 0.904944, \"_p\": 15.2988, \"_peri\": 82.5683, \"_node\": 15.5993, \"_incl\": 152.914, \"_stream\": \"spo\", \"_mag\": 0.92, \"_dur\": 0.467675, \"_lng1\": -2.8369, \"_lat1\": 50.8407, \"_H1\": 105.554, \"_lng2\": -3.16155, \"_lat2\": 50.8734, \"_H2\": 96.4483, \"_LD21\": 28.8865, \"_az1r\": 99.2372, \"_ev1r\": 21.3879, \"_Nts\": 110.0, \"_Nos\": 11.0, \"_leap\": 90.0, \"_tme\": 1.0, \"_dt\": 0.000212, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_235203.045_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.2e-05, \"pi\": 98.1676, \"Q\": 11.7396, \"true_anom\": 277.432, \"EA\": -22.1937, \"MA\": 357.392, \"Tj\": 0.019932, \"T\": 15.2988, \"last_peri\": \"2010-08-01\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 11, \"stations\": \"UK0006;UK000D;UK000H;UK003Z;UK007Q;UK009G;UK009K;UK009S;UK00A5;UK00BK;UK00BW;\"},\n{\"_localtime\": \"_20251008_235539\", \"_mjd\": 60957.0, \"_sol\": 195.601, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -2.2463, \"_ra_o\": 138.939, \"_dc_o\": 55.2059, \"_ra_t\": 139.017, \"_dc_t\": 54.8356, \"_elng\": 122.913, \"_elat\": 36.8568, \"_vo\": 61.0138, \"_vi\": 61.0138, \"_vg\": 59.997, \"_vs\": 41.7443, \"_a\": 26.4966, \"_q\": 0.887995, \"_e\": 0.966486, \"_p\": 136.391, \"_peri\": 140.709, \"_node\": 195.601, \"_incl\": 114.012, \"_stream\": \"spo\", \"_mag\": -0.28, \"_dur\": 0.690273, \"_lng1\": -2.34462, \"_lat1\": 54.5577, \"_H1\": 111.527, \"_lng2\": -2.5938, \"_lat2\": 54.3307, \"_H2\": 94.9084, \"_LD21\": 38.5788, \"_az1r\": 32.4912, \"_ev1r\": 28.8443, \"_Nts\": 107.0, \"_Nos\": 8.0, \"_leap\": 92.5234, \"_tme\": 1.0, \"_dt\": 0.000429, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_235539.114_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.00014, \"pi\": 336.311, \"Q\": 52.1051, \"true_anom\": 39.2902, \"EA\": 5.33625, \"MA\": 0.18629, \"Tj\": -0.275011, \"T\": 136.391, \"last_peri\": \"2025-09-13\", \"jacchia1\": 0.0, \"Jacchia2\": 41.611, \"numstats\": 8, \"stations\": \"UK001L;UK002Z;UK0050;UK005H;UK0087;UK008G;UK009P;UK00AM;\"},\n{\"_localtime\": \"_20251008_235735\", \"_mjd\": 60957.0, \"_sol\": 195.602, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.62755, \"_ra_o\": 34.2125, \"_dc_o\": 19.9009, \"_ra_t\": 34.1064, \"_dc_t\": 18.8547, \"_elng\": 38.1455, \"_elat\": 4.90137, \"_vo\": 35.3809, \"_vi\": 35.3809, \"_vg\": 33.5931, \"_vs\": 35.809, \"_a\": 1.79659, \"_q\": 0.175101, \"_e\": 0.902537, \"_p\": 2.4081, \"_peri\": 317.602, \"_node\": 195.605, \"_incl\": 9.60865, \"_stream\": \"spo\", \"_mag\": 1.03, \"_dur\": 0.656472, \"_lng1\": 2.66813, \"_lat1\": 54.107, \"_H1\": 100.779, \"_lng2\": 2.58367, \"_lat2\": 54.2181, \"_H2\": 81.9378, \"_LD21\": 23.0963, \"_az1r\": 156.7, \"_ev1r\": 54.0944, \"_Nts\": 24.0, \"_Nos\": 2.0, \"_leap\": 91.6667, \"_tme\": 1.0, \"_dt\": 6.5e-05, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_235735.169_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000162, \"pi\": 153.206, \"Q\": 3.41809, \"true_anom\": 222.396, \"EA\": -60.5344, \"MA\": 344.488, \"Tj\": 3.39566, \"T\": 2.4081, \"last_peri\": \"2023-06-20\", \"jacchia1\": 45.9369, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK002K;UK007Y;\"},\n{\"_localtime\": \"_20251008_235928\", \"_mjd\": 60957.0, \"_sol\": 195.603, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.213341, \"_ra_o\": 336.732, \"_dc_o\": 24.0106, \"_ra_t\": 335.843, \"_dc_t\": 23.2035, \"_elng\": 347.339, \"_elat\": 30.7371, \"_vo\": 38.449, \"_vi\": 38.449, \"_vg\": 36.8066, \"_vs\": 56.2422, \"_a\": -0.639545, \"_q\": 0.811785, \"_e\": 2.26932, \"_p\": 0.0, \"_peri\": 223.11, \"_node\": 195.604, \"_incl\": 22.7894, \"_stream\": \"spo\", \"_mag\": 1.35, \"_dur\": 0.209149, \"_lng1\": -4.7401, \"_lat1\": 49.7523, \"_H1\": 84.1274, \"_lng2\": -4.68556, \"_lat2\": 49.7722, \"_H2\": 78.2479, \"_LD21\": 4.66997, \"_az1r\": 241.018, \"_ev1r\": 51.855, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.000131, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_235928.502_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.4e-05, \"pi\": 58.7142, \"Q\": -2.09087, \"true_anom\": 316.89, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -6.82072, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.060695, \"Jacchia2\": 42.0522, \"numstats\": 2, \"stations\": \"UK0021;UK00A1;\"},\n{\"_localtime\": \"_20251008_235956\", \"_mjd\": 60957.0, \"_sol\": 195.604, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": -2.21655, \"_ra_o\": 86.3766, \"_dc_o\": 17.9015, \"_ra_t\": 86.3073, \"_dc_t\": 17.5074, \"_elng\": 86.4599, \"_elat\": -5.8849, \"_vo\": 67.8543, \"_vi\": 67.8543, \"_vg\": 66.9415, \"_vs\": 40.5177, \"_a\": 6.60142, \"_q\": 0.677784, \"_e\": 0.897328, \"_p\": 16.9612, \"_peri\": 71.329, \"_node\": 15.606, \"_incl\": 168.291, \"_stream\": \"spo\", \"_mag\": -0.6, \"_dur\": 0.44895, \"_lng1\": -1.22639, \"_lat1\": 54.875, \"_H1\": 114.704, \"_lng2\": -1.59572, \"_lat2\": 54.8964, \"_H2\": 102.909, \"_LD21\": 30.42, \"_az1r\": 95.9172, \"_ev1r\": 26.1619, \"_Nts\": 58.0, \"_Nos\": 6.0, \"_leap\": 89.6552, \"_tme\": 1.0, \"_dt\": 0.00052, \"dtstamp\": 1759970000.0, \"orbname\": \"20251008_235956.670_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6.9e-05, \"pi\": 86.9351, \"Q\": 12.525, \"true_anom\": 288.673, \"EA\": -18.9544, \"MA\": 357.745, \"Tj\": -0.185142, \"T\": 16.9612, \"last_peri\": \"2008-11-30\", \"jacchia1\": 0.075414, \"Jacchia2\": 21.7428, \"numstats\": 6, \"stations\": \"UK001L;UK002Z;UK005H;UK006C;UK007Y;UK00AM;\"}]"} \ No newline at end of file diff --git a/archive/lambdas/matchDataApi/tests/sumperiod.txt b/archive/lambdas/matchDataApi/tests/sumperiod.txt new file mode 100644 index 00000000..b50d04a6 --- /dev/null +++ b/archive/lambdas/matchDataApi/tests/sumperiod.txt @@ -0,0 +1 @@ +{"statusCode": 200, "body": "[{\"_localtime\": \"_20260515_000110\", \"_mjd\": 61175.0, \"_sol\": 53.8286, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 0.080857, \"_ra_o\": 270.251, \"_dc_o\": 32.6735, \"_ra_t\": 270.636, \"_dc_t\": 32.1272, \"_elng\": 270.953, \"_elat\": 55.5628, \"_vo\": 38.306, \"_vi\": 38.306, \"_vg\": 36.659, \"_vs\": 38.2451, \"_a\": 3.03134, \"_q\": 0.796733, \"_e\": 0.737168, \"_p\": 5.27779, \"_peri\": 239.93, \"_node\": 53.8309, \"_incl\": 60.7021, \"_stream\": \"spo\", \"_mag\": 0.48, \"_dur\": 0.206737, \"_lng1\": -1.38101, \"_lat1\": 51.6135, \"_H1\": 91.4423, \"_lng2\": -1.44209, \"_lat2\": 51.6264, \"_H2\": 84.7507, \"_LD21\": 8.04775, \"_az1r\": 108.961, \"_ev1r\": 56.2695, \"_Nts\": 32.0, \"_Nos\": 6.0, \"_leap\": 81.25, \"_tme\": 1.0, \"_dt\": 0.001977, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000110.026_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.2e-05, \"pi\": 293.76, \"Q\": 5.26594, \"true_anom\": 300.065, \"EA\": -25.2823, \"MA\": 352.756, \"Tj\": 2.22154, \"T\": 5.27779, \"last_peri\": \"2021-03-13\", \"jacchia1\": 13.077, \"Jacchia2\": 0.0, \"numstats\": 6, \"stations\": \"UK0001;UK000S;UK007R;UK009G;UK00B1;UK00DG;\"},\n{\"_localtime\": \"_20260515_000234\", \"_mjd\": 61175.0, \"_sol\": 53.8296, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.00481, \"_ra_o\": 302.323, \"_dc_o\": 48.2628, \"_ra_t\": 303.103, \"_dc_t\": 47.8052, \"_elng\": 328.871, \"_elat\": 64.6259, \"_vo\": 43.73, \"_vi\": 43.73, \"_vg\": 42.298, \"_vs\": 39.9359, \"_a\": 5.52843, \"_q\": 1.00804, \"_e\": 0.817662, \"_p\": 12.9988, \"_peri\": 173.711, \"_node\": 53.8306, \"_incl\": 73.362, \"_stream\": \"spo\", \"_mag\": 1.27, \"_dur\": 0.242712, \"_lng1\": 0.241888, \"_lat1\": 50.3811, \"_H1\": 105.266, \"_lng2\": 0.151951, \"_lat2\": 50.3545, \"_H2\": 97.7174, \"_LD21\": 10.3594, \"_az1r\": 64.9759, \"_ev1r\": 46.8052, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.000238, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000234.429_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-06, \"pi\": 227.541, \"Q\": 10.0488, \"true_anom\": 6.28381, \"EA\": 1.99204, \"MA\": 0.363553, \"Tj\": 1.28115, \"T\": 12.9988, \"last_peri\": \"2026-05-10\", \"jacchia1\": 0.000803, \"Jacchia2\": 52.1886, \"numstats\": 2, \"stations\": \"UK0079;UK008C;\"},\n{\"_localtime\": \"_20260515_000357\", \"_mjd\": 61175.0, \"_sol\": 53.8305, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": 1.78724, \"_ra_o\": 216.666, \"_dc_o\": 16.8109, \"_ra_t\": 215.152, \"_dc_t\": 12.6838, \"_elng\": 208.218, \"_elat\": 25.1426, \"_vo\": 18.157, \"_vi\": 18.157, \"_vg\": 14.3538, \"_vs\": 37.38, \"_a\": 2.4775, \"_q\": 0.890661, \"_e\": 0.640501, \"_p\": 3.89962, \"_peri\": 225.893, \"_node\": 53.8591, \"_incl\": 9.85641, \"_stream\": \"spo\", \"_mag\": 1.76, \"_dur\": 0.282615, \"_lng1\": -2.51102, \"_lat1\": 51.4639, \"_H1\": 82.2769, \"_lng2\": -2.49539, \"_lat2\": 51.4877, \"_H2\": 78.3303, \"_LD21\": 4.8101, \"_az1r\": 203.836, \"_ev1r\": 53.4621, \"_Nts\": 48.0, \"_Nos\": 8.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 0.000863, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000357.901_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.3e-05, \"pi\": 279.752, \"Q\": 4.06435, \"true_anom\": 314.078, \"EA\": -22.4361, \"MA\": 351.57, \"Tj\": 3.1447, \"T\": 3.89962, \"last_peri\": \"2022-07-23\", \"jacchia1\": 0.185127, \"Jacchia2\": 27.254, \"numstats\": 8, \"stations\": \"UK0006;UK000S;UK0031;UK007P;UK008X;UK009G;UK009K;UK00DG;\"},\n{\"_localtime\": \"_20260515_000615\", \"_mjd\": 61175.0, \"_sol\": 53.8321, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.10698, \"_ra_o\": 305.427, \"_dc_o\": 28.7226, \"_ra_t\": 305.759, \"_dc_t\": 28.1039, \"_elng\": 317.68, \"_elat\": 45.8005, \"_vo\": 52.0241, \"_vi\": 52.0241, \"_vg\": 50.8265, \"_vs\": 37.0475, \"_a\": 2.31733, \"_q\": 0.998882, \"_e\": 0.568951, \"_p\": 3.52763, \"_peri\": 194.631, \"_node\": 53.8306, \"_incl\": 98.9734, \"_stream\": \"spo\", \"_mag\": 1.98, \"_dur\": 0.15982, \"_lng1\": -3.88964, \"_lat1\": 51.2288, \"_H1\": 106.566, \"_lng2\": -3.99, \"_lat2\": 51.2196, \"_H2\": 102.252, \"_LD21\": 8.35425, \"_az1r\": 81.6681, \"_ev1r\": 31.1141, \"_Nts\": 9.0, \"_Nos\": 2.0, \"_leap\": 77.7778, \"_tme\": 1.0, \"_dt\": 0.000809, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000615.693_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4e-06, \"pi\": 248.461, \"Q\": 3.63578, \"true_anom\": 345.364, \"EA\": -7.70185, \"MA\": 356.667, \"Tj\": 2.07462, \"T\": 3.52763, \"last_peri\": \"2022-11-15\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK009S;UK00AU;\"},\n{\"_localtime\": \"_20260515_000632\", \"_mjd\": 61175.0, \"_sol\": 53.8322, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 1.15973, \"_ra_o\": 233.269, \"_dc_o\": 9.7757, \"_ra_t\": 233.221, \"_dc_t\": 3.16939, \"_elng\": 229.972, \"_elat\": 21.6427, \"_vo\": 16.5236, \"_vi\": 16.5236, \"_vg\": 12.2215, \"_vs\": 32.4782, \"_a\": 1.2664, \"_q\": 0.776122, \"_e\": 0.387144, \"_p\": 1.42514, \"_peri\": 260.283, \"_node\": 53.8657, \"_incl\": 8.47538, \"_stream\": \"spo\", \"_mag\": 1.02, \"_dur\": 0.249865, \"_lng1\": -3.81101, \"_lat1\": 52.6238, \"_H1\": 81.6342, \"_lng2\": -3.81466, \"_lat2\": 52.6473, \"_H2\": 78.7825, \"_LD21\": 3.82644, \"_az1r\": 176.09, \"_ev1r\": 47.096, \"_Nts\": 23.0, \"_Nos\": 4.0, \"_leap\": 82.6087, \"_tme\": 1.0, \"_dt\": 0.000217, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000632.774_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.1e-05, \"pi\": 314.148, \"Q\": 1.75668, \"true_anom\": 279.683, \"EA\": -58.5746, \"MA\": 320.354, \"Tj\": 5.00921, \"T\": 1.42514, \"last_peri\": \"2025-02-05\", \"jacchia1\": 2.97458, \"Jacchia2\": 18.8485, \"numstats\": 4, \"stations\": \"UK0042;UK00BZ;UK00D9;UK00DA;\"},\n{\"_localtime\": \"_20260515_000714\", \"_mjd\": 61175.0, \"_sol\": 53.8327, \"_ID1\": \"_(UNIFIED_10)\", \"_amag\": -2.29398, \"_ra_o\": 200.761, \"_dc_o\": 18.281, \"_ra_t\": 197.039, \"_dc_t\": 12.2284, \"_elng\": 190.814, \"_elat\": 17.953, \"_vo\": 15.8374, \"_vi\": 15.8374, \"_vg\": 11.2894, \"_vs\": 37.7151, \"_a\": 2.66473, \"_q\": 0.959754, \"_e\": 0.639831, \"_p\": 4.34992, \"_peri\": 209.414, \"_node\": 53.8856, \"_incl\": 5.3999, \"_stream\": \"spo\", \"_mag\": -0.63, \"_dur\": 2.73746, \"_lng1\": -4.63552, \"_lat1\": 51.2956, \"_H1\": 95.8698, \"_lng2\": -4.37833, \"_lat2\": 51.4586, \"_H2\": 64.8225, \"_LD21\": 38.5657, \"_az1r\": 225.728, \"_ev1r\": 49.7596, \"_Nts\": 474.0, \"_Nos\": 10.0, \"_leap\": 97.8903, \"_tme\": 1.0, \"_dt\": 0.001475, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000714.398_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.005618, \"pi\": 263.3, \"Q\": 4.36971, \"true_anom\": 330.532, \"EA\": -14.0523, \"MA\": 354.849, \"Tj\": 3.04798, \"T\": 4.34992, \"last_peri\": \"2022-01-29\", \"jacchia1\": 3.32528, \"Jacchia2\": 2.20077, \"numstats\": 10, \"stations\": \"UK0006;UK000D;UK0024;UK003E;UK0051;UK007Q;UK009S;UK00A1;UK00AP;UK00AU;\"},\n{\"_localtime\": \"_20260515_000753\", \"_mjd\": 61175.0, \"_sol\": 53.8331, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 1.84539, \"_ra_o\": 225.145, \"_dc_o\": -3.82101, \"_ra_t\": 224.373, \"_dc_t\": -8.42094, \"_elng\": 224.422, \"_elat\": 8.09403, \"_vo\": 21.4669, \"_vi\": 21.4669, \"_vg\": 18.3684, \"_vs\": 36.9875, \"_a\": 2.29074, \"_q\": 0.724884, \"_e\": 0.683559, \"_p\": 3.46708, \"_peri\": 252.276, \"_node\": 53.8964, \"_incl\": 4.55357, \"_stream\": \"spo\", \"_mag\": 2.36, \"_dur\": 0.419116, \"_lng1\": -2.83633, \"_lat1\": 51.9301, \"_H1\": 93.5263, \"_lng2\": -2.82344, \"_lat2\": 51.9935, \"_H2\": 88.6602, \"_LD21\": 8.50096, \"_az1r\": 188.11, \"_ev1r\": 33.9553, \"_Nts\": 42.0, \"_Nos\": 6.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.000157, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000753.121_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.4e-05, \"pi\": 306.172, \"Q\": 3.85659, \"true_anom\": 287.66, \"EA\": -35.1726, \"MA\": 347.388, \"Tj\": 3.23731, \"T\": 3.46708, \"last_peri\": \"2023-01-08\", \"jacchia1\": 1e-06, \"Jacchia2\": 46.0297, \"numstats\": 6, \"stations\": \"UK005L;UK008J;UK00B0;UK00BA;UK00BZ;UK00DG;\"},\n{\"_localtime\": \"_20260515_000856\", \"_mjd\": 61175.0, \"_sol\": 53.8338, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.53934, \"_ra_o\": 197.785, \"_dc_o\": 78.8517, \"_ra_t\": 183.516, \"_dc_t\": 80.9434, \"_elng\": 112.255, \"_elat\": 65.4908, \"_vo\": 19.1323, \"_vi\": 19.1323, \"_vg\": 15.5691, \"_vs\": 37.9253, \"_a\": 2.79841, \"_q\": 0.998074, \"_e\": 0.643342, \"_p\": 4.68131, \"_peri\": 165.43, \"_node\": 53.8458, \"_incl\": 22.0478, \"_stream\": \"spo\", \"_mag\": 3.07, \"_dur\": 0.211792, \"_lng1\": -2.71544, \"_lat1\": 51.7537, \"_H1\": 82.1844, \"_lng2\": -2.71047, \"_lat2\": 51.7377, \"_H2\": 78.9433, \"_LD21\": 4.53858, \"_az1r\": 347.211, \"_ev1r\": 60.3656, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.003408, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_000856.122_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 9e-06, \"pi\": 219.276, \"Q\": 4.59874, \"true_anom\": 14.5567, \"EA\": 6.81016, \"MA\": 2.43921, \"Tj\": 2.9004, \"T\": 4.68131, \"last_peri\": \"2026-05-03\", \"jacchia1\": 0.483871, \"Jacchia2\": 29.5553, \"numstats\": 2, \"stations\": \"UK008J;UK00DG;\"},\n{\"_localtime\": \"_20260515_001006\", \"_mjd\": 61175.0, \"_sol\": 53.8346, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.523256, \"_ra_o\": 220.492, \"_dc_o\": -27.1202, \"_ra_t\": 219.209, \"_dc_t\": -32.5364, \"_elng\": 227.097, \"_elat\": -16.3488, \"_vo\": 23.9167, \"_vi\": 23.9167, \"_vg\": 21.1792, \"_vs\": 37.984, \"_a\": 2.83836, \"_q\": 0.688506, \"_e\": 0.757428, \"_p\": 4.78191, \"_peri\": 74.9444, \"_node\": 233.807, \"_incl\": 10.602, \"_stream\": \"spo\", \"_mag\": 1.04, \"_dur\": 1.47713, \"_lng1\": -3.11554, \"_lat1\": 49.9306, \"_H1\": 91.3415, \"_lng2\": -3.03883, \"_lat2\": 50.2132, \"_H2\": 84.3728, \"_LD21\": 35.4074, \"_az1r\": 190.61, \"_ev1r\": 12.2745, \"_Nts\": 133.0, \"_Nos\": 4.0, \"_leap\": 96.9925, \"_tme\": 1.0, \"_dt\": 0.001382, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_001006.937_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000199, \"pi\": 308.751, \"Q\": 4.98821, \"true_anom\": 285.083, \"EA\": -31.7779, \"MA\": 351.076, \"Tj\": 2.78145, \"T\": 4.78191, \"last_peri\": \"2021-09-14\", \"jacchia1\": 2.3e-05, \"Jacchia2\": 11.1138, \"numstats\": 4, \"stations\": \"UK000T;UK003C;UK008Q;UK00AP;\"},\n{\"_localtime\": \"_20260515_001010\", \"_mjd\": 61175.0, \"_sol\": 53.8347, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.426798, \"_ra_o\": 173.462, \"_dc_o\": 28.9953, \"_ra_t\": 166.884, \"_dc_t\": 22.7312, \"_elng\": 158.949, \"_elat\": 15.7403, \"_vo\": 16.1904, \"_vi\": 16.1904, \"_vg\": 11.7604, \"_vs\": 40.6114, \"_a\": 8.36461, \"_q\": 1.00644, \"_e\": 0.879678, \"_p\": 24.1919, \"_peri\": 187.695, \"_node\": 53.899, \"_incl\": 4.51404, \"_stream\": \"spo\", \"_mag\": 0.79, \"_dur\": 0.215804, \"_lng1\": -0.461057, \"_lat1\": 53.8012, \"_H1\": 73.8826, \"_lng2\": -0.423434, \"_lat2\": 53.8028, \"_H2\": 71.7475, \"_LD21\": 3.07473, \"_az1r\": 266.13, \"_ev1r\": 39.6943, \"_Nts\": 17.0, \"_Nos\": 3.0, \"_leap\": 82.3529, \"_tme\": 1.0, \"_dt\": 0.000952, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_001010.937_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000152, \"pi\": 241.594, \"Q\": 15.7228, \"true_anom\": 352.24, \"EA\": -1.96622, \"MA\": 359.763, \"Tj\": 1.82427, \"T\": 24.1919, \"last_peri\": \"2002-03-11\", \"jacchia1\": 5.60994, \"Jacchia2\": 18.2451, \"numstats\": 3, \"stations\": \"UK00A3;UK00C2;UK00DU;\"},\n{\"_localtime\": \"_20260515_001108\", \"_mjd\": 61175.0, \"_sol\": 53.8353, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.489832, \"_ra_o\": 275.008, \"_dc_o\": 12.0546, \"_ra_t\": 275.04, \"_dc_t\": 11.369, \"_elng\": 276.014, \"_elat\": 34.7015, \"_vo\": 50.4172, \"_vi\": 50.4172, \"_vg\": 49.1785, \"_vs\": 40.7964, \"_a\": 9.74838, \"_q\": 0.465505, \"_e\": 0.952248, \"_p\": 30.4368, \"_peri\": 276.078, \"_node\": 53.8352, \"_incl\": 85.2445, \"_stream\": \"spo\", \"_mag\": 2.56, \"_dur\": 0.242092, \"_lng1\": -3.15551, \"_lat1\": 57.3333, \"_H1\": 98.5775, \"_lng2\": -3.28257, \"_lat2\": 57.3839, \"_H2\": 92.0338, \"_LD21\": 11.5726, \"_az1r\": 126.658, \"_ev1r\": 34.3432, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.005579, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_001108.208_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-06, \"pi\": 329.913, \"Q\": 19.0313, \"true_anom\": 263.917, \"EA\": -19.7356, \"MA\": 358.688, \"Tj\": 0.603147, \"T\": 30.4368, \"last_peri\": \"1996-01-16\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK0066;UK007J;\"},\n{\"_localtime\": \"_20260515_001432\", \"_mjd\": 61175.0, \"_sol\": 53.8376, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.55707, \"_ra_o\": 244.745, \"_dc_o\": -3.51341, \"_ra_t\": 244.775, \"_dc_t\": -5.85022, \"_elng\": 243.922, \"_elat\": 15.3331, \"_vo\": 28.6173, \"_vi\": 28.6173, \"_vg\": 26.3707, \"_vs\": 35.8172, \"_a\": 1.87765, \"_q\": 0.440125, \"_e\": 0.765597, \"_p\": 2.57289, \"_peri\": 287.558, \"_node\": 53.8553, \"_incl\": 15.5663, \"_stream\": \"spo\", \"_mag\": 2.78, \"_dur\": 0.341598, \"_lng1\": -3.22259, \"_lat1\": 50.6069, \"_H1\": 87.3499, \"_lng2\": -3.25098, \"_lat2\": 50.6748, \"_H2\": 81.8336, \"_LD21\": 8.01255, \"_az1r\": 165.845, \"_ev1r\": 34.9723, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.000613, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_001432.794_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 341.413, \"Q\": 3.31517, \"true_anom\": 252.423, \"EA\": -52.9128, \"MA\": 342.08, \"Tj\": 3.51618, \"T\": 2.57289, \"last_peri\": \"2023-12-04\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK009S;UK00AU;\"},\n{\"_localtime\": \"_20260515_001725\", \"_mjd\": 61175.0, \"_sol\": 53.8395, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.688123, \"_ra_o\": 271.844, \"_dc_o\": 26.601, \"_ra_t\": 272.155, \"_dc_t\": 25.9992, \"_elng\": 272.978, \"_elat\": 49.4146, \"_vo\": 39.8668, \"_vi\": 39.8668, \"_vg\": 38.2868, \"_vs\": 37.3271, \"_a\": 2.45047, \"_q\": 0.693956, \"_e\": 0.716807, \"_p\": 3.83596, \"_peri\": 255.56, \"_node\": 53.8414, \"_incl\": 64.6831, \"_stream\": \"spo\", \"_mag\": 0.9, \"_dur\": 0.123879, \"_lng1\": -3.90691, \"_lat1\": 50.1821, \"_H1\": 89.8028, \"_lng2\": -3.9462, \"_lat2\": 50.1932, \"_H2\": 85.8264, \"_LD21\": 5.02707, \"_az1r\": 114.092, \"_ev1r\": 52.2916, \"_Nts\": 8.0, \"_Nos\": 2.0, \"_leap\": 75.0, \"_tme\": 1.0, \"_dt\": 0.000648, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_001725.572_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.7e-05, \"pi\": 309.401, \"Q\": 4.20698, \"true_anom\": 284.435, \"EA\": -34.9523, \"MA\": 348.576, \"Tj\": 2.53299, \"T\": 3.83596, \"last_peri\": \"2022-08-27\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000D;UK001K;\"},\n{\"_localtime\": \"_20260515_001904\", \"_mjd\": 61175.0, \"_sol\": 53.8406, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.020917, \"_ra_o\": 293.339, \"_dc_o\": 35.0467, \"_ra_t\": 293.694, \"_dc_t\": 34.5415, \"_elng\": 305.357, \"_elat\": 55.1086, \"_vo\": 46.2391, \"_vi\": 46.2391, \"_vg\": 44.8865, \"_vs\": 37.9737, \"_a\": 2.83122, \"_q\": 0.957575, \"_e\": 0.661781, \"_p\": 4.76389, \"_peri\": 209.787, \"_node\": 53.8409, \"_incl\": 82.0757, \"_stream\": \"spo\", \"_mag\": 0.96, \"_dur\": 0.404093, \"_lng1\": -0.075189, \"_lat1\": 52.6706, \"_H1\": 102.826, \"_lng2\": -0.239248, \"_lat2\": 52.6729, \"_H2\": 90.743, \"_LD21\": 18.0716, \"_az1r\": 91.422, \"_ev1r\": 47.3075, \"_Nts\": 34.0, \"_Nos\": 4.0, \"_leap\": 88.2353, \"_tme\": 1.0, \"_dt\": 0.004065, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_001904.904_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.2e-05, \"pi\": 263.628, \"Q\": 4.70487, \"true_anom\": 330.207, \"EA\": -13.6865, \"MA\": 355.285, \"Tj\": 1.99064, \"T\": 4.76389, \"last_peri\": \"2021-08-31\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"UK000S;UK002F;UK009L;UK00B1;\"},\n{\"_localtime\": \"_20260515_002131\", \"_mjd\": 61175.0, \"_sol\": 53.8423, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.109228, \"_ra_o\": 290.227, \"_dc_o\": 13.3768, \"_ra_t\": 290.226, \"_dc_t\": 12.8193, \"_elng\": 294.168, \"_elat\": 34.5756, \"_vo\": 58.8515, \"_vi\": 58.8515, \"_vg\": 57.7944, \"_vs\": 41.8788, \"_a\": 586.905, \"_q\": 0.700876, \"_e\": 0.998806, \"_p\": 14218.4, \"_peri\": 247.261, \"_node\": 53.8399, \"_incl\": 109.897, \"_stream\": \"spo\", \"_mag\": 1.93, \"_dur\": 0.283657, \"_lng1\": -0.594007, \"_lat1\": 57.1111, \"_H1\": 101.953, \"_lng2\": -0.794618, \"_lat2\": 57.1627, \"_H2\": 93.8251, \"_LD21\": 15.5529, \"_az1r\": 115.532, \"_ev1r\": 30.9653, \"_Nts\": 15.0, \"_Nos\": 2.0, \"_leap\": 86.6667, \"_tme\": 1.0, \"_dt\": 0.000968, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_002131.120_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.9e-05, \"pi\": 301.101, \"Q\": 1173.11, \"true_anom\": 292.733, \"EA\": -1.86312, \"MA\": 359.997, \"Tj\": -0.344276, \"T\": 14218.4, \"last_peri\": \"1-01-01\", \"jacchia1\": 5.2e-05, \"Jacchia2\": 58.3027, \"numstats\": 2, \"stations\": \"UK0066;UK0081;\"},\n{\"_localtime\": \"_20260515_002405\", \"_mjd\": 61175.0, \"_sol\": 53.844, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.405921, \"_ra_o\": 352.53, \"_dc_o\": 49.7361, \"_ra_t\": 353.205, \"_dc_t\": 48.623, \"_elng\": 19.0545, \"_elat\": 46.0193, \"_vo\": 43.1301, \"_vi\": 43.1301, \"_vg\": 41.6748, \"_vs\": 40.6252, \"_a\": 8.45398, \"_q\": 0.638821, \"_e\": 0.924435, \"_p\": 24.5806, \"_peri\": 103.524, \"_node\": 53.8457, \"_incl\": 66.6214, \"_stream\": \"spo\", \"_mag\": 1.34, \"_dur\": 0.438427, \"_lng1\": -2.45645, \"_lat1\": 56.8348, \"_H1\": 96.251, \"_lng2\": -2.63038, \"_lat2\": 56.7276, \"_H2\": 87.3819, \"_LD21\": 18.8306, \"_az1r\": 41.4569, \"_ev1r\": 28.8555, \"_Nts\": 32.0, \"_Nos\": 3.0, \"_leap\": 90.625, \"_tme\": 1.0, \"_dt\": 0.000397, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_002405.138_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.3e-05, \"pi\": 157.369, \"Q\": 16.2691, \"true_anom\": 76.4707, \"EA\": 17.7481, \"MA\": 1.60225, \"Tj\": 1.00132, \"T\": 24.5806, \"last_peri\": \"2026-04-05\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK0066;UK007J;UK0081;\"},\n{\"_localtime\": \"_20260515_002450\", \"_mjd\": 61175.0, \"_sol\": 53.8445, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.23892, \"_ra_o\": 209.77, \"_dc_o\": 24.5562, \"_ra_t\": 207.211, \"_dc_t\": 20.0528, \"_elng\": 197.144, \"_elat\": 29.0417, \"_vo\": 16.9777, \"_vi\": 16.9777, \"_vg\": 12.8348, \"_vs\": 37.7123, \"_a\": 2.66309, \"_q\": 0.943232, \"_e\": 0.645812, \"_p\": 4.34589, \"_peri\": 213.901, \"_node\": 53.8738, \"_incl\": 9.76893, \"_stream\": \"spo\", \"_mag\": 1.01, \"_dur\": 0.921793, \"_lng1\": -4.42807, \"_lat1\": 55.0448, \"_H1\": 90.4856, \"_lng2\": -4.3443, \"_lat2\": 55.1026, \"_H2\": 78.3963, \"_LD21\": 14.2411, \"_az1r\": 220.97, \"_ev1r\": 54.4686, \"_Nts\": 34.0, \"_Nos\": 2.0, \"_leap\": 94.1176, \"_tme\": 1.0, \"_dt\": 0.004507, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_002450.001_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000137, \"pi\": 267.775, \"Q\": 4.38294, \"true_anom\": 326.068, \"EA\": -16.1108, \"MA\": 354.157, \"Tj\": 3.0307, \"T\": 4.34589, \"last_peri\": \"2022-02-03\", \"jacchia1\": 1.96248, \"Jacchia2\": 6.55602, \"numstats\": 2, \"stations\": \"UK000P;UK009C;\"},\n{\"_localtime\": \"_20260515_002739\", \"_mjd\": 61175.0, \"_sol\": 53.8464, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -1.10135, \"_ra_o\": 313.636, \"_dc_o\": 40.1166, \"_ra_t\": 314.009, \"_dc_t\": 39.5844, \"_elng\": 334.525, \"_elat\": 53.6213, \"_vo\": 51.5877, \"_vi\": 51.5877, \"_vg\": 50.3796, \"_vs\": 40.9905, \"_a\": 11.8099, \"_q\": 0.988783, \"_e\": 0.916275, \"_p\": 40.5856, \"_peri\": 162.643, \"_node\": 53.846, \"_incl\": 89.841, \"_stream\": \"spo\", \"_mag\": 0.13, \"_dur\": 0.601544, \"_lng1\": -1.25475, \"_lat1\": 53.5176, \"_H1\": 107.21, \"_lng2\": -1.57183, \"_lat2\": 53.4598, \"_H2\": 89.0682, \"_LD21\": 29.896, \"_az1r\": 72.9891, \"_ev1r\": 39.3533, \"_Nts\": 85.0, \"_Nos\": 8.0, \"_leap\": 90.5882, \"_tme\": 1.0, \"_dt\": 0.000793, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_002739.896_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.9e-05, \"pi\": 216.489, \"Q\": 22.6311, \"true_anom\": 17.3519, \"EA\": 3.65371, \"MA\": 0.308174, \"Tj\": 0.444019, \"T\": 40.5856, \"last_peri\": \"2026-05-02\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 8, \"stations\": \"UK000Y;UK0030;UK007A;UK008J;UK00AS;UK00B0;UK00DG;UK00DU;\"},\n{\"_localtime\": \"_20260515_002929\", \"_mjd\": 61175.0, \"_sol\": 53.8476, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.91354, \"_ra_o\": 214.918, \"_dc_o\": 11.3536, \"_ra_t\": 212.45, \"_dc_t\": 6.48426, \"_elng\": 207.916, \"_elat\": 18.4012, \"_vo\": 18.1449, \"_vi\": 18.1449, \"_vg\": 14.344, \"_vs\": 37.6341, \"_a\": 2.61684, \"_q\": 0.883806, \"_e\": 0.662262, \"_p\": 4.23317, \"_peri\": 226.748, \"_node\": 53.8873, \"_incl\": 7.28115, \"_stream\": \"spo\", \"_mag\": 1.6, \"_dur\": 0.877808, \"_lng1\": 0.055071, \"_lat1\": 50.4182, \"_H1\": 89.4278, \"_lng2\": 0.138351, \"_lat2\": 50.492, \"_H2\": 78.7577, \"_LD21\": 15.6538, \"_az1r\": 216.873, \"_ev1r\": 45.7838, \"_Nts\": 41.0, \"_Nos\": 2.0, \"_leap\": 95.1219, \"_tme\": 1.0, \"_dt\": 0.002164, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_002929.570_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.8e-05, \"pi\": 280.635, \"Q\": 4.34987, \"true_anom\": 313.212, \"EA\": -22.0688, \"MA\": 352.188, \"Tj\": 3.04281, \"T\": 4.23317, \"last_peri\": \"2022-03-24\", \"jacchia1\": 0.004527, \"Jacchia2\": 12.7397, \"numstats\": 2, \"stations\": \"UK0079;UK008C;\"},\n{\"_localtime\": \"_20260515_003012\", \"_mjd\": 61175.0, \"_sol\": 53.8481, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.773986, \"_ra_o\": 280.643, \"_dc_o\": 46.0065, \"_ra_t\": 281.065, \"_dc_t\": 45.6496, \"_elng\": 291.249, \"_elat\": 68.2727, \"_vo\": 40.6436, \"_vi\": 40.6436, \"_vg\": 39.097, \"_vs\": 40.9, \"_a\": 10.7488, \"_q\": 0.975833, \"_e\": 0.909215, \"_p\": 35.2406, \"_peri\": 201.96, \"_node\": 53.8502, \"_incl\": 64.5514, \"_stream\": \"spo\", \"_mag\": 0.81, \"_dur\": 0.40216, \"_lng1\": -0.728584, \"_lat1\": 56.543, \"_H1\": 99.6456, \"_lng2\": -0.832638, \"_lat2\": 56.5479, \"_H2\": 87.1914, \"_LD21\": 15.5331, \"_az1r\": 95.0575, \"_ev1r\": 62.7458, \"_Nts\": 21.0, \"_Nos\": 2.0, \"_leap\": 90.4762, \"_tme\": 1.0, \"_dt\": 0.002865, \"dtstamp\": 1778800000.0, \"orbname\": \"20260515_003012.295_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6.6e-05, \"pi\": 255.81, \"Q\": 20.5219, \"true_anom\": 338.034, \"EA\": -4.84654, \"MA\": 359.555, \"Tj\": 0.998369, \"T\": 35.2406, \"last_peri\": \"1991-03-04\", \"jacchia1\": 0.495302, \"Jacchia2\": 17.5128, \"numstats\": 2, \"stations\": \"UK0066;UK008A;\"},\n{\"_localtime\": \"_20260515_003223\", \"_mjd\": 61175.0, \"_sol\": 53.8496, \"_ID1\": \"_(UNIFIED_15)\", \"_amag\": -0.006847, \"_ra_o\": 277.608, \"_dc_o\": 52.3033, \"_ra_t\": 278.665, \"_dc_t\": 52.0911, \"_elng\": 290.817, \"_elat\": 74.9026, \"_vo\": 32.0948, \"_vi\": 32.0948, \"_vg\": 30.1095, \"_vs\": 37.2118, \"_a\": 2.39365, \"_q\": 0.995717, \"_e\": 0.584017, \"_p\": 3.70333, \"_peri\": 196.339, \"_node\": 53.8532, \"_incl\": 51.7685, \"_stream\": \"spo\", \"_mag\": 0.13, \"_dur\": 0.265797, \"_lng1\": -2.02553, \"_lat1\": 51.799, \"_H1\": 90.1655, \"_lng2\": -2.07287, \"_lat2\": 51.7904, \"_H2\": 82.4316, \"_LD21\": 7.75196, \"_az1r\": 73.3259, \"_ev1r\": 66.4378, \"_Nts\": 91.0, \"_Nos\": 15.0, \"_leap\": 83.5165, \"_tme\": 1.0, \"_dt\": 0.000596, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003223.622_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.1e-05, \"pi\": 250.192, \"Q\": 3.79159, \"true_anom\": 343.655, \"EA\": -8.41844, \"MA\": 356.48, \"Tj\": 2.85556, \"T\": 3.70333, \"last_peri\": \"2022-09-13\", \"jacchia1\": 0.002402, \"Jacchia2\": 44.3294, \"numstats\": 15, \"stations\": \"UK0006;UK000S;UK0049;UK007A;UK007B;UK007P;UK007R;UK008K;UK008X;UK009K;UK009S;UK00B0;UK00BZ;UK00DA;UK00DG;\"},\n{\"_localtime\": \"_20260515_003253\", \"_mjd\": 61175.0, \"_sol\": 53.8499, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.89119, \"_ra_o\": 302.045, \"_dc_o\": 56.0029, \"_ra_t\": 303.443, \"_dc_t\": 55.5695, \"_elng\": 341.411, \"_elat\": 70.807, \"_vo\": 36.2693, \"_vi\": 36.2693, \"_vg\": 34.5272, \"_vs\": 37.7588, \"_a\": 2.69148, \"_q\": 0.997505, \"_e\": 0.629385, \"_p\": 4.41559, \"_peri\": 165.011, \"_node\": 53.8524, \"_incl\": 60.227, \"_stream\": \"spo\", \"_mag\": 2.97, \"_dur\": 0.26381, \"_lng1\": -3.57711, \"_lat1\": 51.8599, \"_H1\": 98.5547, \"_lng2\": -3.64327, \"_lat2\": 51.834, \"_H2\": 91.3547, \"_LD21\": 8.33505, \"_az1r\": 57.3577, \"_ev1r\": 53.1276, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 2.5e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003253.367_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-06, \"pi\": 218.863, \"Q\": 4.38546, \"true_anom\": 14.9836, \"EA\": 7.17763, \"MA\": 2.67195, \"Tj\": 2.48861, \"T\": 4.41559, \"last_peri\": \"2026-05-03\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK001Z;UK007A;\"},\n{\"_localtime\": \"_20260515_003305\", \"_mjd\": 61175.0, \"_sol\": 53.85, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -3.09623, \"_ra_o\": 300.701, \"_dc_o\": 8.56701, \"_ra_t\": 300.692, \"_dc_t\": 8.04397, \"_elng\": 304.86, \"_elat\": 27.8434, \"_vo\": 64.1076, \"_vi\": 64.1076, \"_vg\": 63.1399, \"_vs\": 41.5888, \"_a\": 34.5039, \"_q\": 0.823568, \"_e\": 0.976131, \"_p\": 202.676, \"_peri\": 231.308, \"_node\": 53.8457, \"_incl\": 128.333, \"_stream\": \"spo\", \"_mag\": -0.21, \"_dur\": 0.934957, \"_lng1\": 2.13479, \"_lat1\": 53.0183, \"_H1\": 107.884, \"_lng2\": 1.4433, \"_lat2\": 53.1819, \"_H2\": 83.6013, \"_LD21\": 58.1379, \"_az1r\": 111.874, \"_ev1r\": 26.0216, \"_Nts\": 62.0, \"_Nos\": 3.0, \"_leap\": 95.1613, \"_tme\": 1.0, \"_dt\": 0.00102, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003305.237_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000478, \"pi\": 285.154, \"Q\": 68.1842, \"true_anom\": 308.685, \"EA\": -6.04389, \"MA\": 359.845, \"Tj\": -0.542844, \"T\": 202.676, \"last_peri\": \"1823-10-10\", \"jacchia1\": 0.012464, \"Jacchia2\": 12.0077, \"numstats\": 3, \"stations\": \"UK008K;UK009L;UK00B1;\"},\n{\"_localtime\": \"_20260515_003359\", \"_mjd\": 61175.0, \"_sol\": 53.8506, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -1.27017, \"_ra_o\": 277.167, \"_dc_o\": 40.7576, \"_ra_t\": 277.491, \"_dc_t\": 40.4334, \"_elng\": 282.866, \"_elat\": 63.537, \"_vo\": 41.2597, \"_vi\": 41.2597, \"_vg\": 39.7386, \"_vs\": 40.6354, \"_a\": 8.5223, \"_q\": 0.928725, \"_e\": 0.891024, \"_p\": 24.8792, \"_peri\": 214.13, \"_node\": 53.8526, \"_incl\": 65.6381, \"_stream\": \"spo\", \"_mag\": 0.38, \"_dur\": 0.442272, \"_lng1\": 0.283859, \"_lat1\": 51.987, \"_H1\": 104.212, \"_lng2\": 0.178542, \"_lat2\": 51.999, \"_H2\": 89.5971, \"_LD21\": 17.308, \"_az1r\": 100.668, \"_ev1r\": 63.3288, \"_Nts\": 72.0, \"_Nos\": 8.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.000359, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003359.473_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.4e-05, \"pi\": 267.983, \"Q\": 16.1159, \"true_anom\": 325.864, \"EA\": -8.43058, \"MA\": 359.054, \"Tj\": 1.08992, \"T\": 24.8792, \"last_peri\": \"2001-07-21\", \"jacchia1\": 0.004551, \"Jacchia2\": 25.8064, \"numstats\": 8, \"stations\": \"UK000S;UK002F;UK0031;UK006D;UK007R;UK009L;UK00A4;UK00B1;\"},\n{\"_localtime\": \"_20260515_003513\", \"_mjd\": 61175.0, \"_sol\": 53.8515, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 1.08988, \"_ra_o\": 322.644, \"_dc_o\": 43.1903, \"_ra_t\": 323.258, \"_dc_t\": 42.5308, \"_elng\": 347.069, \"_elat\": 52.7076, \"_vo\": 46.8569, \"_vi\": 46.8569, \"_vg\": 45.5231, \"_vs\": 38.1478, \"_a\": 2.95633, \"_q\": 0.903027, \"_e\": 0.694545, \"_p\": 5.08312, \"_peri\": 137.718, \"_node\": 53.8517, \"_incl\": 83.497, \"_stream\": \"spo\", \"_mag\": 1.5, \"_dur\": 0.240168, \"_lng1\": -1.77905, \"_lat1\": 51.7578, \"_H1\": 104.761, \"_lng2\": -1.89566, \"_lat2\": 51.7227, \"_H2\": 98.1108, \"_LD21\": 11.2123, \"_az1r\": 64.0252, \"_ev1r\": 36.4177, \"_Nts\": 33.0, \"_Nos\": 6.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.0058, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003513.643_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 8e-06, \"pi\": 191.57, \"Q\": 5.00963, \"true_anom\": 42.2764, \"EA\": 18.6442, \"MA\": 5.9223, \"Tj\": 1.88321, \"T\": 5.08312, \"last_peri\": \"2026-04-14\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 6, \"stations\": \"UK000S;UK007P;UK007R;UK009K;UK00BA;UK00DG;\"},\n{\"_localtime\": \"_20260515_003540\", \"_mjd\": 61175.0, \"_sol\": 53.8518, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.217658, \"_ra_o\": 198.612, \"_dc_o\": 53.9553, \"_ra_t\": 190.469, \"_dc_t\": 53.0575, \"_elng\": 159.778, \"_elat\": 50.9623, \"_vo\": 15.6221, \"_vi\": 15.6221, \"_vg\": 10.9784, \"_vs\": 37.149, \"_a\": 2.3639, \"_q\": 1.00846, \"_e\": 0.57339, \"_p\": 3.6345, \"_peri\": 186.408, \"_node\": 53.8732, \"_incl\": 13.2807, \"_stream\": \"spo\", \"_mag\": 0.74, \"_dur\": 0.805037, \"_lng1\": 0.773163, \"_lat1\": 50.0519, \"_H1\": 87.7738, \"_lng2\": 0.839441, \"_lat2\": 50.0306, \"_H2\": 76.7188, \"_LD21\": 12.3576, \"_az1r\": 295.433, \"_ev1r\": 63.1705, \"_Nts\": 58.0, \"_Nos\": 3.0, \"_leap\": 94.8276, \"_tme\": 1.0, \"_dt\": 0.005208, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003540.802_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000284, \"pi\": 240.282, \"Q\": 3.71934, \"true_anom\": 353.569, \"EA\": -3.35106, \"MA\": 358.569, \"Tj\": 3.27635, \"T\": 3.6345, \"last_peri\": \"2022-09-30\", \"jacchia1\": 0.040673, \"Jacchia2\": 11.2477, \"numstats\": 3, \"stations\": \"UK0079;UK008C;UK008T;\"},\n{\"_localtime\": \"_20260515_003541\", \"_mjd\": 61175.0, \"_sol\": 53.8518, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.521705, \"_ra_o\": 290.385, \"_dc_o\": 25.1522, \"_ra_t\": 290.47, \"_dc_t\": 24.7068, \"_elng\": 297.334, \"_elat\": 46.221, \"_vo\": 55.6034, \"_vi\": 55.6034, \"_vg\": 54.4837, \"_vs\": 42.8506, \"_a\": -10.9743, \"_q\": 0.867169, \"_e\": 1.07902, \"_p\": 0.0, \"_peri\": 223.422, \"_node\": 53.8508, \"_incl\": 96.1726, \"_stream\": \"spo\", \"_mag\": 1.12, \"_dur\": 0.244572, \"_lng1\": -2.88681, \"_lat1\": 53.34, \"_H1\": 103.072, \"_lng2\": -3.00569, \"_lat2\": 53.3596, \"_H2\": 95.4674, \"_LD21\": 12.4999, \"_az1r\": 105.554, \"_ev1r\": 42.5908, \"_Nts\": 12.0, \"_Nos\": 2.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 6e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003541.395_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1e-05, \"pi\": 277.273, \"Q\": -22.8157, \"true_anom\": 316.573, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -0.600797, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK003U;UK008J;\"},\n{\"_localtime\": \"_20260515_003559\", \"_mjd\": 61175.0, \"_sol\": 53.852, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.265783, \"_ra_o\": 310.21, \"_dc_o\": 18.4834, \"_ra_t\": 310.307, \"_dc_t\": 17.9209, \"_elng\": 318.564, \"_elat\": 34.8143, \"_vo\": 61.3249, \"_vi\": 61.3249, \"_vg\": 60.3127, \"_vs\": 39.9549, \"_a\": 5.58162, \"_q\": 0.998469, \"_e\": 0.821115, \"_p\": 13.1868, \"_peri\": 193.341, \"_node\": 53.8486, \"_incl\": 119.938, \"_stream\": \"GAQ\", \"_mag\": 0.91, \"_dur\": 0.378267, \"_lng1\": -3.43467, \"_lat1\": 53.3757, \"_H1\": 110.454, \"_lng2\": -3.71653, \"_lat2\": 53.3842, \"_H2\": 101.43, \"_LD21\": 22.5432, \"_az1r\": 93.0198, \"_ev1r\": 25.4909, \"_Nts\": 24.0, \"_Nos\": 3.0, \"_leap\": 87.5, \"_tme\": 1.0, \"_dt\": 0.00048, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_003559.189_UK\", \"iau\": 531, \"name\": \"gamma Aquilids \", \"mass\": 1.1e-05, \"pi\": 247.19, \"Q\": 10.1648, \"true_anom\": 346.653, \"EA\": -4.2003, \"MA\": 359.246, \"Tj\": 0.34241, \"T\": 13.1868, \"last_peri\": \"2013-03-17\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK003U;UK00BZ;UK00DE;\"},\n{\"_localtime\": \"_20260515_004003\", \"_mjd\": 61175.0, \"_sol\": 53.8547, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.007829, \"_ra_o\": 318.525, \"_dc_o\": 28.8946, \"_ra_t\": 318.74, \"_dc_t\": 28.3188, \"_elng\": 332.536, \"_elat\": 41.7709, \"_vo\": 57.7509, \"_vi\": 57.7509, \"_vg\": 56.6748, \"_vs\": 40.2808, \"_a\": 6.68055, \"_q\": 0.979895, \"_e\": 0.853321, \"_p\": 17.2671, \"_peri\": 159.003, \"_node\": 53.8526, \"_incl\": 108.057, \"_stream\": \"spo\", \"_mag\": 0.7, \"_dur\": 0.396828, \"_lng1\": -3.8116, \"_lat1\": 52.2777, \"_H1\": 108.907, \"_lng2\": -4.09237, \"_lat2\": 52.2435, \"_H2\": 98.1606, \"_LD21\": 22.3535, \"_az1r\": 78.8252, \"_ev1r\": 28.6407, \"_Nts\": 34.0, \"_Nos\": 4.0, \"_leap\": 88.2353, \"_tme\": 1.0, \"_dt\": 0.000383, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004003.517_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.5e-05, \"pi\": 212.856, \"Q\": 12.3812, \"true_anom\": 20.9912, \"EA\": 5.96691, \"MA\": 0.884418, \"Tj\": 0.41282, \"T\": 17.2671, \"last_peri\": \"2026-04-29\", \"jacchia1\": 0.001635, \"Jacchia2\": 31.9042, \"numstats\": 4, \"stations\": \"UK005L;UK007A;UK00BA;UK00BZ;\"},\n{\"_localtime\": \"_20260515_004012\", \"_mjd\": 61175.0, \"_sol\": 53.8548, \"_ID1\": \"_(UNIFIED_13)\", \"_amag\": -0.165311, \"_ra_o\": 296.444, \"_dc_o\": 7.16879, \"_ra_t\": 296.457, \"_dc_t\": 6.62821, \"_elng\": 299.887, \"_elat\": 27.3625, \"_vo\": 62.1263, \"_vi\": 62.1263, \"_vg\": 61.1277, \"_vs\": 40.7963, \"_a\": 9.7497, \"_q\": 0.713977, \"_e\": 0.926769, \"_p\": 30.443, \"_peri\": 247.069, \"_node\": 53.8508, \"_incl\": 125.625, \"_stream\": \"spo\", \"_mag\": 0.31, \"_dur\": 0.516988, \"_lng1\": -2.67215, \"_lat1\": 51.9111, \"_H1\": 110.344, \"_lng2\": -3.01675, \"_lat2\": 52.0019, \"_H2\": 97.7231, \"_LD21\": 31.9853, \"_az1r\": 113.374, \"_ev1r\": 25.9875, \"_Nts\": 122.0, \"_Nos\": 13.0, \"_leap\": 89.3443, \"_tme\": 1.0, \"_dt\": 0.000414, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004012.002_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2e-05, \"pi\": 300.92, \"Q\": 18.7854, \"true_anom\": 292.925, \"EA\": -14.7261, \"MA\": 358.772, \"Tj\": -0.065159, \"T\": 30.443, \"last_peri\": \"1996-01-11\", \"jacchia1\": 0.00015, \"Jacchia2\": 29.7694, \"numstats\": 13, \"stations\": \"UK000S;UK001Z;UK0031;UK005L;UK007P;UK008J;UK009G;UK009S;UK00B0;UK00BA;UK00BZ;UK00DA;UK00DG;\"},\n{\"_localtime\": \"_20260515_004116\", \"_mjd\": 61175.0, \"_sol\": 53.8555, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.548454, \"_ra_o\": 255.606, \"_dc_o\": -20.8593, \"_ra_t\": 255.584, \"_dc_t\": -22.5867, \"_elng\": 256.711, \"_elat\": 0.188433, \"_vo\": 38.7002, \"_vi\": 38.7002, \"_vg\": 37.0712, \"_vs\": 36.993, \"_a\": 2.29324, \"_q\": 0.134878, \"_e\": 0.941185, \"_p\": 3.47276, \"_peri\": 321.283, \"_node\": 54.5036, \"_incl\": 0.450793, \"_stream\": \"spo\", \"_mag\": 1.09, \"_dur\": 0.440916, \"_lng1\": -4.01677, \"_lat1\": 50.0615, \"_H1\": 92.9049, \"_lng2\": -4.07435, \"_lat2\": 50.185, \"_H2\": 88.3227, \"_LD21\": 16.399, \"_az1r\": 163.799, \"_ev1r\": 17.5818, \"_Nts\": 39.0, \"_Nos\": 5.0, \"_leap\": 87.1795, \"_tme\": 1.0, \"_dt\": 0.000831, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004116.642_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.6e-05, \"pi\": 15.7866, \"Q\": 4.4516, \"true_anom\": 218.068, \"EA\": -53.5457, \"MA\": 349.829, \"Tj\": 2.71798, \"T\": 3.47276, \"last_peri\": \"2022-12-29\", \"jacchia1\": 0.248523, \"Jacchia2\": 18.115, \"numstats\": 5, \"stations\": \"UK001K;UK003C;UK00A1;UK00AP;UK00AU;\"},\n{\"_localtime\": \"_20260515_004227\", \"_mjd\": 61175.0, \"_sol\": 53.8563, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.571756, \"_ra_o\": 312.555, \"_dc_o\": 41.4137, \"_ra_t\": 312.999, \"_dc_t\": 40.9251, \"_elng\": 334.44, \"_elat\": 55.1669, \"_vo\": 50.1509, \"_vi\": 50.1509, \"_vg\": 48.9076, \"_vs\": 40.5706, \"_a\": 8.11203, \"_q\": 0.990861, \"_e\": 0.877853, \"_p\": 23.1044, \"_peri\": 163.299, \"_node\": 53.8562, \"_incl\": 87.125, \"_stream\": \"spo\", \"_mag\": 1.52, \"_dur\": 0.242436, \"_lng1\": -2.2632, \"_lat1\": 50.8366, \"_H1\": 107.262, \"_lng2\": -2.38538, \"_lat2\": 50.8114, \"_H2\": 99.1715, \"_LD21\": 12.114, \"_az1r\": 71.8805, \"_ev1r\": 41.5801, \"_Nts\": 15.0, \"_Nos\": 3.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.000582, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004227.228_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 8e-06, \"pi\": 217.155, \"Q\": 15.2332, \"true_anom\": 16.6963, \"EA\": 4.28664, \"MA\": 0.52711, \"Tj\": 0.70153, \"T\": 23.1044, \"last_peri\": \"2026-05-02\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK000T;UK008D;UK00DH;\"},\n{\"_localtime\": \"_20260515_004353\", \"_mjd\": 61175.0, \"_sol\": 53.8573, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.10229, \"_ra_o\": 246.393, \"_dc_o\": -9.95265, \"_ra_t\": 246.236, \"_dc_t\": -12.7165, \"_elng\": 246.56, \"_elat\": 8.80847, \"_vo\": 28.9013, \"_vi\": 28.9013, \"_vg\": 26.6823, \"_vs\": 34.9225, \"_a\": 1.65585, \"_q\": 0.374872, \"_e\": 0.773608, \"_p\": 2.13075, \"_peri\": 296.224, \"_node\": 53.8868, \"_incl\": 9.78463, \"_stream\": \"spo\", \"_mag\": 1.29, \"_dur\": 1.13564, \"_lng1\": -3.60249, \"_lat1\": 53.4993, \"_H1\": 98.6873, \"_lng2\": -3.65358, \"_lat2\": 53.7298, \"_H2\": 85.7788, \"_LD21\": 32.5289, \"_az1r\": 173.127, \"_ev1r\": 26.3252, \"_Nts\": 38.0, \"_Nos\": 2.0, \"_leap\": 94.7368, \"_tme\": 1.0, \"_dt\": 0.000139, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004353.983_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.6e-05, \"pi\": 350.111, \"Q\": 2.93683, \"true_anom\": 243.745, \"EA\": -59.7631, \"MA\": 338.531, \"Tj\": 3.84742, \"T\": 2.13075, \"last_peri\": \"2024-05-13\", \"jacchia1\": 0.659233, \"Jacchia2\": 6.13518, \"numstats\": 2, \"stations\": \"UK003V;UK00CD;\"},\n{\"_localtime\": \"_20260515_004404\", \"_mjd\": 61175.0, \"_sol\": 53.8574, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.982618, \"_ra_o\": 314.343, \"_dc_o\": 26.2677, \"_ra_t\": 314.579, \"_dc_t\": 25.7035, \"_elng\": 326.643, \"_elat\": 40.7838, \"_vo\": 57.1027, \"_vi\": 57.1027, \"_vg\": 56.012, \"_vs\": 38.8663, \"_a\": 3.62484, \"_q\": 1.00604, \"_e\": 0.722459, \"_p\": 6.90133, \"_peri\": 171.417, \"_node\": 53.8552, \"_incl\": 109.401, \"_stream\": \"MUC\", \"_mag\": 0.21, \"_dur\": 0.161676, \"_lng1\": -5.65775, \"_lat1\": 49.7496, \"_H1\": 95.2582, \"_lng2\": -5.76882, \"_lat2\": 49.7394, \"_H2\": 90.8532, \"_LD21\": 9.2677, \"_az1r\": 81.9697, \"_ev1r\": 28.4144, \"_Nts\": 13.0, \"_Nos\": 3.0, \"_leap\": 76.9231, \"_tme\": 1.0, \"_dt\": 0.000351, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004404.138_UK\", \"iau\": 665, \"name\": \"May upsilon Cygnids \", \"mass\": 2.6e-05, \"pi\": 225.272, \"Q\": 6.24363, \"true_anom\": 8.57742, \"EA\": 3.44848, \"MA\": 0.958598, \"Tj\": 1.05238, \"T\": 6.90133, \"last_peri\": \"2026-05-08\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK00A1;UK00AU;UK00BB;\"},\n{\"_localtime\": \"_20260515_004728\", \"_mjd\": 61175.0, \"_sol\": 53.8597, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": 0.507126, \"_ra_o\": 308.722, \"_dc_o\": -14.4874, \"_ra_t\": 308.773, \"_dc_t\": -15.1662, \"_elng\": 307.264, \"_elat\": 3.39779, \"_vo\": 69.5474, \"_vi\": 69.5474, \"_vg\": 68.6565, \"_vs\": 41.1801, \"_a\": 14.9018, \"_q\": 0.784995, \"_e\": 0.947322, \"_p\": 57.5255, \"_peri\": 237.214, \"_node\": 53.8135, \"_incl\": 173.59, \"_stream\": \"spo\", \"_mag\": 1.09, \"_dur\": 1.63282, \"_lng1\": -2.95518, \"_lat1\": 52.1726, \"_H1\": 109.102, \"_lng2\": -4.40775, \"_lat2\": 52.6098, \"_H2\": 106.244, \"_LD21\": 107.07, \"_az1r\": 116.904, \"_ev1r\": 1.97765, \"_Nts\": 185.0, \"_Nos\": 7.0, \"_leap\": 96.2162, \"_tme\": 1.0, \"_dt\": 0.00031, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004728.164_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.6e-05, \"pi\": 291.028, \"Q\": 29.0187, \"true_anom\": 302.74, \"EA\": -10.2612, \"MA\": 359.408, \"Tj\": -0.727921, \"T\": 57.5255, \"last_peri\": \"1968-12-08\", \"jacchia1\": 19.7576, \"Jacchia2\": 1.05795, \"numstats\": 7, \"stations\": \"UK005L;UK007A;UK008J;UK00B0;UK00BA;UK00BZ;UK00CQ;\"},\n{\"_localtime\": \"_20260515_004745\", \"_mjd\": 61175.0, \"_sol\": 53.8599, \"_ID1\": \"_(UNIFIED_15)\", \"_amag\": -0.179155, \"_ra_o\": 234.755, \"_dc_o\": 0.197786, \"_ra_t\": 234.166, \"_dc_t\": -2.32254, \"_elng\": 232.391, \"_elat\": 16.56, \"_vo\": 27.0173, \"_vi\": 27.0173, \"_vg\": 24.6285, \"_vs\": 38.6432, \"_a\": 3.38555, \"_q\": 0.603137, \"_e\": 0.821849, \"_p\": 6.22937, \"_peri\": 263.893, \"_node\": 53.8816, \"_incl\": 13.1309, \"_stream\": \"spo\", \"_mag\": 1.09, \"_dur\": 0.825778, \"_lng1\": -2.91394, \"_lat1\": 52.6208, \"_H1\": 96.8347, \"_lng2\": -2.88548, \"_lat2\": 52.7424, \"_H2\": 86.2933, \"_LD21\": 19.988, \"_az1r\": 188.859, \"_ev1r\": 37.2466, \"_Nts\": 203.0, \"_Nos\": 15.0, \"_leap\": 92.6108, \"_tme\": 1.0, \"_dt\": 0.119093, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004745.523_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000106, \"pi\": 317.775, \"Q\": 6.16796, \"true_anom\": 276.084, \"EA\": -31.4064, \"MA\": 353.132, \"Tj\": 2.43217, \"T\": 6.22937, \"last_peri\": \"2020-04-04\", \"jacchia1\": 6.95785, \"Jacchia2\": 6.57931, \"numstats\": 15, \"stations\": \"UK000S;UK001Z;UK0030;UK0031;UK005L;UK007A;UK008J;UK00B0;UK00BA;UK00BZ;UK00C1;UK00CQ;UK00DA;UK00DG;UK00BD;\"},\n{\"_localtime\": \"_20260515_004947\", \"_mjd\": 61175.0, \"_sol\": 53.8612, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.195136, \"_ra_o\": 218.186, \"_dc_o\": 16.6024, \"_ra_t\": 215.799, \"_dc_t\": 12.7103, \"_elng\": 208.859, \"_elat\": 25.3933, \"_vo\": 19.0203, \"_vi\": 19.0203, \"_vg\": 15.4361, \"_vs\": 38.0147, \"_a\": 2.85975, \"_q\": 0.881459, \"_e\": 0.69177, \"_p\": 4.83606, \"_peri\": 226.571, \"_node\": 53.8886, \"_incl\": 10.5981, \"_stream\": \"spo\", \"_mag\": 0.65, \"_dur\": 1.01903, \"_lng1\": 1.23106, \"_lat1\": 51.3321, \"_H1\": 89.7109, \"_lng2\": 1.34283, \"_lat2\": 51.4087, \"_H2\": 76.2277, \"_LD21\": 17.2064, \"_az1r\": 223.365, \"_ev1r\": 48.6298, \"_Nts\": 72.0, \"_Nos\": 4.0, \"_leap\": 94.4444, \"_tme\": 1.0, \"_dt\": 0.001643, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_004947.383_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000498, \"pi\": 280.459, \"Q\": 4.83803, \"true_anom\": 313.401, \"EA\": -20.8318, \"MA\": 353.264, \"Tj\": 2.87216, \"T\": 4.83606, \"last_peri\": \"2021-08-15\", \"jacchia1\": 0.535841, \"Jacchia2\": 7.07174, \"numstats\": 4, \"stations\": \"UK006D;UK009L;UK00A4;UK00B1;\"},\n{\"_localtime\": \"_20260515_005020\", \"_mjd\": 61175.0, \"_sol\": 53.8616, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 1.51065, \"_ra_o\": 218.727, \"_dc_o\": -4.49908, \"_ra_t\": 216.081, \"_dc_t\": -11.4221, \"_elng\": 217.525, \"_elat\": 2.74633, \"_vo\": 18.2905, \"_vi\": 18.2905, \"_vg\": 14.5225, \"_vs\": 36.1919, \"_a\": 1.99142, \"_q\": 0.815768, \"_e\": 0.590358, \"_p\": 2.81025, \"_peri\": 241.05, \"_node\": 54.1091, \"_incl\": 1.18538, \"_stream\": \"spo\", \"_mag\": 2.25, \"_dur\": 0.339123, \"_lng1\": -2.52567, \"_lat1\": 50.652, \"_H1\": 82.2397, \"_lng2\": -2.49412, \"_lat2\": 50.6907, \"_H2\": 79.252, \"_LD21\": 5.62745, \"_az1r\": 208.389, \"_ev1r\": 31.0834, \"_Nts\": 33.0, \"_Nos\": 5.0, \"_leap\": 84.8485, \"_tme\": 1.0, \"_dt\": 0.001008, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_005020.807_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.9e-05, \"pi\": 295.159, \"Q\": 3.16707, \"true_anom\": 298.702, \"EA\": -33.4755, \"MA\": 345.182, \"Tj\": 3.61171, \"T\": 2.81025, \"last_peri\": \"2023-09-03\", \"jacchia1\": 0.331343, \"Jacchia2\": 20.91, \"numstats\": 5, \"stations\": \"UK000H;UK000T;UK003Z;UK009K;UK009S;\"},\n{\"_localtime\": \"_20260515_005038\", \"_mjd\": 61175.0, \"_sol\": 53.8618, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.206302, \"_ra_o\": 337.097, \"_dc_o\": 49.3847, \"_ra_t\": 338.098, \"_dc_t\": 48.5751, \"_elng\": 6.67078, \"_elat\": 51.825, \"_vo\": 42.4886, \"_vi\": 42.4886, \"_vg\": 41.0122, \"_vs\": 38.3115, \"_a\": 3.08505, \"_q\": 0.76052, \"_e\": 0.753482, \"_p\": 5.41868, \"_peri\": 115.07, \"_node\": 53.8633, \"_incl\": 71.3529, \"_stream\": \"spo\", \"_mag\": 1.33, \"_dur\": 0.616038, \"_lng1\": -0.481158, \"_lat1\": 49.672, \"_H1\": 100.427, \"_lng2\": -0.668532, \"_lat2\": 49.5774, \"_H2\": 88.6898, \"_LD21\": 23.4939, \"_az1r\": 51.9149, \"_ev1r\": 34.2606, \"_Nts\": 44.0, \"_Nos\": 4.0, \"_leap\": 90.9091, \"_tme\": 1.0, \"_dt\": 0.000617, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_005038.680_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.9e-05, \"pi\": 168.933, \"Q\": 5.40958, \"true_anom\": 64.9249, \"EA\": 26.8315, \"MA\": 7.34533, \"Tj\": 2.01064, \"T\": 5.41868, \"last_peri\": \"2026-04-04\", \"jacchia1\": 0.737945, \"Jacchia2\": 10.3605, \"numstats\": 4, \"stations\": \"UK0079;UK008C;UK008T;UK00CE;\"},\n{\"_localtime\": \"_20260515_005155\", \"_mjd\": 61175.0, \"_sol\": 53.8626, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.804692, \"_ra_o\": 311.206, \"_dc_o\": 3.9567, \"_ra_t\": 311.221, \"_dc_t\": 3.37783, \"_elng\": 314.668, \"_elat\": 20.6536, \"_vo\": 67.6266, \"_vi\": 67.6266, \"_vg\": 66.7106, \"_vs\": 40.9756, \"_a\": 11.6216, \"_q\": 0.952858, \"_e\": 0.918009, \"_p\": 39.6185, \"_peri\": 208.316, \"_node\": 53.8553, \"_incl\": 143.797, \"_stream\": \"spo\", \"_mag\": 0.08, \"_dur\": 0.532396, \"_lng1\": -3.72596, \"_lat1\": 53.2223, \"_H1\": 113.033, \"_lng2\": -4.18689, \"_lat2\": 53.293, \"_H2\": 104.187, \"_LD21\": 36.5846, \"_az1r\": 104.627, \"_ev1r\": 15.5484, \"_Nts\": 49.0, \"_Nos\": 4.0, \"_leap\": 91.8367, \"_tme\": 1.0, \"_dt\": 6.9e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_005155.105_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.4e-05, \"pi\": 262.171, \"Q\": 22.2903, \"true_anom\": 331.675, \"EA\": -5.97316, \"MA\": 359.5, \"Tj\": -0.508562, \"T\": 39.6185, \"last_peri\": \"1986-10-21\", \"jacchia1\": 4.98721, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"UK008J;UK00BZ;UK00C0;UK00D9;\"},\n{\"_localtime\": \"_20260515_005229\", \"_mjd\": 61175.0, \"_sol\": 53.863, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.44783, \"_ra_o\": 258.795, \"_dc_o\": 21.3731, \"_ra_t\": 258.753, \"_dc_t\": 20.7842, \"_elng\": 255.402, \"_elat\": 43.6536, \"_vo\": 40.057, \"_vi\": 40.057, \"_vg\": 38.4873, \"_vs\": 41.5677, \"_a\": 32.3089, \"_q\": 0.62587, \"_e\": 0.980629, \"_p\": 183.647, \"_peri\": 256.646, \"_node\": 53.8665, \"_incl\": 54.0681, \"_stream\": \"spo\", \"_mag\": 2.72, \"_dur\": 0.226438, \"_lng1\": -3.78266, \"_lat1\": 50.7775, \"_H1\": 100.365, \"_lng2\": -3.81589, \"_lat2\": 50.8128, \"_H2\": 93.0572, \"_LD21\": 8.17243, \"_az1r\": 149.878, \"_ev1r\": 57.8233, \"_Nts\": 10.0, \"_Nos\": 2.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.00096, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_005229.833_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 310.512, \"Q\": 63.9919, \"true_anom\": 283.348, \"EA\": -8.94019, \"MA\": 359.791, \"Tj\": 0.733877, \"T\": 183.647, \"last_peri\": \"1842-10-27\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000T;UK0024;\"},\n{\"_localtime\": \"_20260515_005314\", \"_mjd\": 61175.0, \"_sol\": 53.8635, \"_ID1\": \"_(UNIFIED_12)\", \"_amag\": -1.01642, \"_ra_o\": 225.451, \"_dc_o\": 60.3388, \"_ra_t\": 222.806, \"_dc_t\": 61.2664, \"_elng\": 172.081, \"_elat\": 69.1395, \"_vo\": 17.9091, \"_vi\": 17.9091, \"_vg\": 14.0438, \"_vs\": 36.3894, \"_a\": 2.05763, \"_q\": 1.00633, \"_e\": 0.510929, \"_p\": 2.95155, \"_peri\": 189.247, \"_node\": 53.8765, \"_incl\": 21.1713, \"_stream\": \"spo\", \"_mag\": 0.19, \"_dur\": 2.89152, \"_lng1\": -4.40008, \"_lat1\": 52.3871, \"_H1\": 88.7354, \"_lng2\": -4.3262, \"_lat2\": 52.3285, \"_H2\": 47.0306, \"_LD21\": 43.4395, \"_az1r\": 318.059, \"_ev1r\": 78.0556, \"_Nts\": 485.0, \"_Nos\": 12.0, \"_leap\": 97.5258, \"_tme\": 1.0, \"_dt\": 0.00232, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_005314.158_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.001878, \"pi\": 243.124, \"Q\": 3.10893, \"true_anom\": 350.739, \"EA\": -5.27695, \"MA\": 357.415, \"Tj\": 3.53733, \"T\": 2.95155, \"last_peri\": \"2023-06-09\", \"jacchia1\": 18.5444, \"Jacchia2\": 2.14907, \"numstats\": 12, \"stations\": \"UK005L;UK007A;UK007P;UK008J;UK009S;UK00AP;UK00B0;UK00BA;UK00BK;UK00BZ;UK00C0;UK00D9;\"},\n{\"_localtime\": \"_20260515_005500\", \"_mjd\": 61175.0, \"_sol\": 53.8647, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.75915, \"_ra_o\": 262.312, \"_dc_o\": 43.3996, \"_ra_t\": 266.418, \"_dc_t\": 41.0149, \"_elng\": 263.742, \"_elat\": 64.3749, \"_vo\": 13.6272, \"_vi\": 13.6272, \"_vg\": 7.8747, \"_vs\": 28.7878, \"_a\": 0.957412, \"_q\": 0.856643, \"_e\": 0.105252, \"_p\": 0.936805, \"_peri\": 306.947, \"_node\": 53.8845, \"_incl\": 14.3362, \"_stream\": \"spo\", \"_mag\": 2.02, \"_dur\": 0.160728, \"_lng1\": -3.40918, \"_lat1\": 50.7083, \"_H1\": 79.5906, \"_lng2\": -3.41651, \"_lat2\": 50.71, \"_H2\": 77.6635, \"_LD21\": 1.99436, \"_az1r\": 111.887, \"_ev1r\": 75.0829, \"_Nts\": 9.0, \"_Nos\": 2.0, \"_leap\": 77.7778, \"_tme\": 1.0, \"_dt\": 0.002017, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_005500.247_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.6e-05, \"pi\": 0.831581, \"Q\": 1.05818, \"true_anom\": 233.032, \"EA\": -121.981, \"MA\": 243.134, \"Tj\": 6.26226, \"T\": 0.936805, \"last_peri\": \"2025-09-25\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000T;UK00AU;\"},\n{\"_localtime\": \"_20260515_005529\", \"_mjd\": 61175.0, \"_sol\": 53.865, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.309293, \"_ra_o\": 275.578, \"_dc_o\": 37.531, \"_ra_t\": 275.874, \"_dc_t\": 37.155, \"_elng\": 279.505, \"_elat\": 60.399, \"_vo\": 40.2372, \"_vi\": 40.2372, \"_vg\": 38.6745, \"_vs\": 39.3618, \"_a\": 4.30694, \"_q\": 0.886366, \"_e\": 0.794201, \"_p\": 8.93829, \"_peri\": 223.781, \"_node\": 53.8672, \"_incl\": 64.8073, \"_stream\": \"spo\", \"_mag\": 1.15, \"_dur\": 0.344108, \"_lng1\": -4.70471, \"_lat1\": 51.3246, \"_H1\": 99.3663, \"_lng2\": -4.78671, \"_lat2\": 51.3401, \"_H2\": 87.8577, \"_LD21\": 12.7284, \"_az1r\": 107.059, \"_ev1r\": 62.648, \"_Nts\": 40.0, \"_Nos\": 5.0, \"_leap\": 87.5, \"_tme\": 1.0, \"_dt\": 7.5e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_005529.185_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2e-05, \"pi\": 277.648, \"Q\": 7.72752, \"true_anom\": 316.214, \"EA\": -15.5008, \"MA\": 356.66, \"Tj\": 1.67895, \"T\": 8.93829, \"last_peri\": \"2017-07-06\", \"jacchia1\": 0.0, \"Jacchia2\": 96.3245, \"numstats\": 5, \"stations\": \"UK0024;UK0051;UK009S;UK00AU;UK00BK;\"},\n{\"_localtime\": \"_20260515_010227\", \"_mjd\": 61175.0, \"_sol\": 53.8697, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.693513, \"_ra_o\": 299.058, \"_dc_o\": 4.54329, \"_ra_t\": 299.064, \"_dc_t\": 3.93704, \"_elng\": 302.095, \"_elat\": 24.1947, \"_vo\": 58.9344, \"_vi\": 58.9344, \"_vg\": 57.8799, \"_vs\": 36.247, \"_a\": 2.00943, \"_q\": 0.648882, \"_e\": 0.677082, \"_p\": 2.84846, \"_peri\": 263.496, \"_node\": 53.8653, \"_incl\": 129.5, \"_stream\": \"spo\", \"_mag\": 1.12, \"_dur\": 0.273443, \"_lng1\": 0.731836, \"_lat1\": 52.1213, \"_H1\": 107.173, \"_lng2\": 0.554908, \"_lat2\": 52.186, \"_H2\": 99.8803, \"_LD21\": 14.5332, \"_az1r\": 120.973, \"_ev1r\": 27.1638, \"_Nts\": 21.0, \"_Nos\": 3.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.001105, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_010227.369_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 317.361, \"Q\": 3.36998, \"true_anom\": 276.498, \"EA\": -42.7769, \"MA\": 343.57, \"Tj\": 2.0082, \"T\": 2.84846, \"last_peri\": \"2023-08-26\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK002F;UK005E;UK00A4;\"},\n{\"_localtime\": \"_20260515_010237\", \"_mjd\": 61175.0, \"_sol\": 53.8698, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.260893, \"_ra_o\": 283.31, \"_dc_o\": 26.0768, \"_ra_t\": 283.932, \"_dc_t\": 24.8225, \"_elng\": 288.818, \"_elat\": 47.3542, \"_vo\": 31.5064, \"_vi\": 31.5064, \"_vg\": 29.4817, \"_vs\": 27.6685, \"_a\": 0.896283, \"_q\": 0.521939, \"_e\": 0.417663, \"_p\": 0.848533, \"_peri\": 309.903, \"_node\": 53.8726, \"_incl\": 58.813, \"_stream\": \"spo\", \"_mag\": 1.07, \"_dur\": 0.361316, \"_lng1\": -6.46942, \"_lat1\": 55.9507, \"_H1\": 92.2835, \"_lng2\": -6.57041, \"_lat2\": 55.98, \"_H2\": 84.42, \"_LD21\": 10.6053, \"_az1r\": 117.784, \"_ev1r\": 47.8835, \"_Nts\": 23.0, \"_Nos\": 3.0, \"_leap\": 86.9565, \"_tme\": 1.0, \"_dt\": 4e-06, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_010237.075_IE_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.3e-05, \"pi\": 3.77531, \"Q\": 1.27063, \"true_anom\": 230.091, \"EA\": -107.81, \"MA\": 274.973, \"Tj\": 6.19701, \"T\": 0.848533, \"last_peri\": \"2025-09-20\", \"jacchia1\": 2.63104, \"Jacchia2\": 15.4286, \"numstats\": 3, \"stations\": \"IE000J;UK005Y;UK0080;\"},\n{\"_localtime\": \"_20260515_010257\", \"_mjd\": 61175.0, \"_sol\": 53.87, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 1.19191, \"_ra_o\": 223.253, \"_dc_o\": 13.4436, \"_ra_t\": 221.628, \"_dc_t\": 10.114, \"_elng\": 215.772, \"_elat\": 24.9128, \"_vo\": 20.8392, \"_vi\": 20.8392, \"_vg\": 17.6265, \"_vs\": 38.2217, \"_a\": 3.01305, \"_q\": 0.82882, \"_e\": 0.724923, \"_p\": 5.2301, \"_peri\": 235.111, \"_node\": 53.8937, \"_incl\": 12.1629, \"_stream\": \"spo\", \"_mag\": 1.55, \"_dur\": 0.230342, \"_lng1\": -3.20176, \"_lat1\": 51.6224, \"_H1\": 85.7727, \"_lng2\": -3.17801, \"_lat2\": 51.6461, \"_H2\": 82.2561, \"_LD21\": 4.41526, \"_az1r\": 213.017, \"_ev1r\": 47.8895, \"_Nts\": 26.0, \"_Nos\": 5.0, \"_leap\": 80.7692, \"_tme\": 1.0, \"_dt\": 0.002998, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_010257.293_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.9e-05, \"pi\": 289.004, \"Q\": 5.19728, \"true_anom\": 304.865, \"EA\": -23.5528, \"MA\": 353.044, \"Tj\": 2.75196, \"T\": 5.2301, \"last_peri\": \"2021-03-28\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 5, \"stations\": \"UK001Z;UK0031;UK00BK;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_010337\", \"_mjd\": 61175.0, \"_sol\": 53.8705, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.45108, \"_ra_o\": 223.487, \"_dc_o\": 33.5149, \"_ra_t\": 221.626, \"_dc_t\": 31.4017, \"_elng\": 206.128, \"_elat\": 44.7133, \"_vo\": 18.9541, \"_vi\": 18.9541, \"_vg\": 15.3517, \"_vs\": 37.3725, \"_a\": 2.4737, \"_q\": 0.929257, \"_e\": 0.624346, \"_p\": 3.89065, \"_peri\": 217.782, \"_node\": 53.8868, \"_incl\": 17.3562, \"_stream\": \"spo\", \"_mag\": 2.34, \"_dur\": 0.24072, \"_lng1\": -4.39397, \"_lat1\": 52.9467, \"_H1\": 85.9917, \"_lng2\": -4.37633, \"_lat2\": 52.9577, \"_H2\": 82.0914, \"_LD21\": 4.77681, \"_az1r\": 225.675, \"_ev1r\": 65.5424, \"_Nts\": 12.0, \"_Nos\": 2.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 0.001763, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_010337.655_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.2e-05, \"pi\": 271.669, \"Q\": 4.01815, \"true_anom\": 322.2, \"EA\": -18.6995, \"MA\": 352.769, \"Tj\": 3.1319, \"T\": 3.89065, \"last_peri\": \"2022-07-22\", \"jacchia1\": 0.00331, \"Jacchia2\": 46.2465, \"numstats\": 2, \"stations\": \"UK00BZ;UK00C0;\"},\n{\"_localtime\": \"_20260515_010636\", \"_mjd\": 61175.0, \"_sol\": 53.8725, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -2.24018, \"_ra_o\": 314.449, \"_dc_o\": 16.5899, \"_ra_t\": 314.533, \"_dc_t\": 16.062, \"_elng\": 322.43, \"_elat\": 31.7568, \"_vo\": 60.609, \"_vi\": 60.609, \"_vg\": 59.5833, \"_vs\": 37.8473, \"_a\": 2.74731, \"_q\": 1.01005, \"_e\": 0.63235, \"_p\": 4.55367, \"_peri\": 183.506, \"_node\": 53.869, \"_incl\": 124.024, \"_stream\": \"spo\", \"_mag\": -0.56, \"_dur\": 0.370739, \"_lng1\": 1.80709, \"_lat1\": 50.0346, \"_H1\": 100.719, \"_lng2\": 1.5454, \"_lat2\": 50.0632, \"_H2\": 89.7857, \"_LD21\": 22.0837, \"_az1r\": 99.7981, \"_ev1r\": 29.7584, \"_Nts\": 44.0, \"_Nos\": 5.0, \"_leap\": 88.6364, \"_tme\": 1.0, \"_dt\": 0.000995, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_010636.620_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.2e-05, \"pi\": 237.375, \"Q\": 4.48457, \"true_anom\": 356.487, \"EA\": -1.66746, \"MA\": 359.387, \"Tj\": 1.26444, \"T\": 4.55367, \"last_peri\": \"2021-10-27\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 5, \"stations\": \"UK000F;UK008C;UK008T;UK00D6;UK00DH;\"},\n{\"_localtime\": \"_20260515_010942\", \"_mjd\": 61175.0, \"_sol\": 53.8746, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": -0.642913, \"_ra_o\": 326.903, \"_dc_o\": 34.591, \"_ra_t\": 327.167, \"_dc_t\": 34.0449, \"_elng\": 344.773, \"_elat\": 43.8161, \"_vo\": 56.2546, \"_vi\": 56.2546, \"_vg\": 55.1494, \"_vs\": 41.5882, \"_a\": 34.4585, \"_q\": 0.885067, \"_e\": 0.974315, \"_p\": 202.277, \"_peri\": 138.409, \"_node\": 53.8734, \"_incl\": 101.401, \"_stream\": \"spo\", \"_mag\": -0.22, \"_dur\": 0.404157, \"_lng1\": -2.12714, \"_lat1\": 51.3087, \"_H1\": 107.58, \"_lng2\": -2.35983, \"_lat2\": 51.2671, \"_H2\": 96.5901, \"_LD21\": 22.6736, \"_az1r\": 74.1083, \"_ev1r\": 32.902, \"_Nts\": 94.0, \"_Nos\": 11.0, \"_leap\": 88.2979, \"_tme\": 1.0, \"_dt\": 0.000639, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_010942.236_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.6e-05, \"pi\": 192.283, \"Q\": 68.032, \"true_anom\": 41.5854, \"EA\": 4.95992, \"MA\": 0.133429, \"Tj\": -0.078058, \"T\": 202.277, \"last_peri\": \"2026-04-17\", \"jacchia1\": 7.2e-05, \"Jacchia2\": 37.914, \"numstats\": 11, \"stations\": \"UK0006;UK000S;UK005S;UK007A;UK007B;UK008K;UK009S;UK00A5;UK00AP;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_011002\", \"_mjd\": 61175.0, \"_sol\": 53.8748, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -1.57928, \"_ra_o\": 277.825, \"_dc_o\": -9.22267, \"_ra_t\": 277.735, \"_dc_t\": -10.0197, \"_elng\": 277.824, \"_elat\": 13.2082, \"_vo\": 56.3061, \"_vi\": 56.3061, \"_vg\": 55.2016, \"_vs\": 41.0857, \"_a\": 13.1832, \"_q\": 0.1274, \"_e\": 0.990336, \"_p\": 47.8666, \"_peri\": 319.146, \"_node\": 53.8712, \"_incl\": 121.813, \"_stream\": \"spo\", \"_mag\": 0.44, \"_dur\": 0.805963, \"_lng1\": -7.05013, \"_lat1\": 56.9193, \"_H1\": 109.618, \"_lng2\": -7.4653, \"_lat2\": 57.2251, \"_H2\": 95.8155, \"_LD21\": 43.3234, \"_az1r\": 143.909, \"_ev1r\": 18.0173, \"_Nts\": 40.0, \"_Nos\": 3.0, \"_leap\": 92.5, \"_tme\": 1.0, \"_dt\": 0.00227, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_011002.499_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.0002, \"pi\": 13.0169, \"Q\": 26.239, \"true_anom\": 220.848, \"EA\": -21.1977, \"MA\": 359.32, \"Tj\": 0.162049, \"T\": 47.8666, \"last_peri\": \"1978-08-04\", \"jacchia1\": 0.338554, \"Jacchia2\": 7.86507, \"numstats\": 3, \"stations\": \"UK002L;UK005Y;UK0080;\"},\n{\"_localtime\": \"_20260515_011358\", \"_mjd\": 61175.1, \"_sol\": 53.8774, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.39406, \"_ra_o\": 203.616, \"_dc_o\": -0.94798, \"_ra_t\": 196.947, \"_dc_t\": -13.722, \"_elng\": 200.862, \"_elat\": -6.0279, \"_vo\": 15.0778, \"_vi\": 15.0778, \"_vg\": 10.1812, \"_vs\": 35.9363, \"_a\": 1.91229, \"_q\": 0.933728, \"_e\": 0.511723, \"_p\": 2.64443, \"_peri\": 39.3835, \"_node\": 233.707, \"_incl\": 1.75174, \"_stream\": \"spo\", \"_mag\": 2.75, \"_dur\": 0.307452, \"_lng1\": -4.5214, \"_lat1\": 54.9961, \"_H1\": 81.5714, \"_lng2\": -4.48319, \"_lat2\": 55.0162, \"_H2\": 80.0636, \"_LD21\": 3.50106, \"_az1r\": 228.401, \"_ev1r\": 23.8859, \"_Nts\": 13.0, \"_Nos\": 2.0, \"_leap\": 84.6154, \"_tme\": 1.0, \"_dt\": 0.010143, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_011358.313_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.9e-05, \"pi\": 273.091, \"Q\": 2.89085, \"true_anom\": 320.786, \"EA\": -22.8894, \"MA\": 348.515, \"Tj\": 3.76259, \"T\": 2.64443, \"last_peri\": \"2023-10-22\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK009C;UK00CS;\"},\n{\"_localtime\": \"_20260515_011407\", \"_mjd\": 61175.1, \"_sol\": 53.8775, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.9713, \"_ra_o\": 300.254, \"_dc_o\": 3.15188, \"_ra_t\": 300.243, \"_dc_t\": 2.59709, \"_elng\": 303.034, \"_elat\": 22.6336, \"_vo\": 62.0208, \"_vi\": 62.0208, \"_vg\": 61.0201, \"_vs\": 38.3964, \"_a\": 3.1566, \"_q\": 0.705067, \"_e\": 0.776637, \"_p\": 5.60828, \"_peri\": 252.048, \"_node\": 53.8723, \"_incl\": 134.604, \"_stream\": \"spo\", \"_mag\": 2.4, \"_dur\": 0.239632, \"_lng1\": -2.00261, \"_lat1\": 50.3882, \"_H1\": 109.185, \"_lng2\": -2.16427, \"_lat2\": 50.4476, \"_H2\": 102.564, \"_LD21\": 14.9553, \"_az1r\": 120.118, \"_ev1r\": 26.3321, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.001169, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_011407.855_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4e-06, \"pi\": 305.92, \"Q\": 5.60813, \"true_anom\": 287.945, \"EA\": -28.9201, \"MA\": 352.599, \"Tj\": 0.959678, \"T\": 5.60828, \"last_peri\": \"2020-11-15\", \"jacchia1\": 3.3364, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000T;UK008Q;\"},\n{\"_localtime\": \"_20260515_011509\", \"_mjd\": 61175.1, \"_sol\": 53.8782, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.61662, \"_ra_o\": 240.038, \"_dc_o\": -14.6737, \"_ra_t\": 239.361, \"_dc_t\": -17.6509, \"_elng\": 240.91, \"_elat\": 2.74631, \"_vo\": 28.2117, \"_vi\": 28.2117, \"_vg\": 25.9339, \"_vs\": 36.539, \"_a\": 2.11108, \"_q\": 0.446577, \"_e\": 0.788461, \"_p\": 3.06731, \"_peri\": 285.325, \"_node\": 53.9872, \"_incl\": 2.69894, \"_stream\": \"NOP\", \"_mag\": 1.94, \"_dur\": 0.399752, \"_lng1\": -4.04927, \"_lat1\": 50.0856, \"_H1\": 97.8721, \"_lng2\": -4.03167, \"_lat2\": 50.1737, \"_H2\": 93.2166, \"_LD21\": 11.6703, \"_az1r\": 187.994, \"_ev1r\": 24.9061, \"_Nts\": 15.0, \"_Nos\": 2.0, \"_leap\": 86.6667, \"_tme\": 1.0, \"_dt\": 0.001402, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_011509.308_UK\", \"iau\": 149, \"name\": \"Northern May Ophiuchids \", \"mass\": 1.6e-05, \"pi\": 339.312, \"Q\": 3.77559, \"true_anom\": 254.565, \"EA\": -48.6212, \"MA\": 345.276, \"Tj\": 3.24784, \"T\": 3.06731, \"last_peri\": \"2023-06-05\", \"jacchia1\": 13.7953, \"Jacchia2\": 8.42735, \"numstats\": 2, \"stations\": \"UK003C;UK00A1;\"},\n{\"_localtime\": \"_20260515_011718\", \"_mjd\": 61175.1, \"_sol\": 53.8797, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.52131, \"_ra_o\": 315.093, \"_dc_o\": 35.0187, \"_ra_t\": 316.504, \"_dc_t\": 33.65, \"_elng\": 333.181, \"_elat\": 47.4169, \"_vo\": 29.8072, \"_vi\": 29.8072, \"_vg\": 27.6584, \"_vs\": 23.3977, \"_a\": 0.734455, \"_q\": 0.44094, \"_e\": 0.399636, \"_p\": 0.629432, \"_peri\": 12.9716, \"_node\": 53.8824, \"_incl\": 61.6094, \"_stream\": \"spo\", \"_mag\": 1.79, \"_dur\": 0.199908, \"_lng1\": -0.420739, \"_lat1\": 52.3963, \"_H1\": 90.9001, \"_lng2\": -0.490933, \"_lat2\": 52.3928, \"_H2\": 86.4679, \"_LD21\": 6.5354, \"_az1r\": 85.3464, \"_ev1r\": 42.7198, \"_Nts\": 10.0, \"_Nos\": 2.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.002317, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_011718.043_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7e-06, \"pi\": 66.854, \"Q\": 1.02797, \"true_anom\": 167.022, \"EA\": 160.296, \"MA\": 152.577, \"Tj\": 7.41336, \"T\": 0.629432, \"last_peri\": \"2026-02-06\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK002F;UK00AN;\"},\n{\"_localtime\": \"_20260515_012500\", \"_mjd\": 61175.1, \"_sol\": 53.8848, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -1.63468, \"_ra_o\": 282.303, \"_dc_o\": 29.912, \"_ra_t\": 282.357, \"_dc_t\": 29.4557, \"_elng\": 287.674, \"_elat\": 52.138, \"_vo\": 48.0742, \"_vi\": 48.0742, \"_vg\": 46.7754, \"_vs\": 40.9692, \"_a\": 11.5433, \"_q\": 0.83862, \"_e\": 0.92735, \"_p\": 39.2191, \"_peri\": 229.754, \"_node\": 53.8855, \"_incl\": 80.2997, \"_stream\": \"spo\", \"_mag\": -0.71, \"_dur\": 0.546252, \"_lng1\": -5.94532, \"_lat1\": 56.3351, \"_H1\": 107.63, \"_lng2\": -6.14869, \"_lat2\": 56.4083, \"_H2\": 86.6638, \"_LD21\": 25.4292, \"_az1r\": 123.32, \"_ev1r\": 54.3367, \"_Nts\": 65.0, \"_Nos\": 5.0, \"_leap\": 92.3077, \"_tme\": 1.0, \"_dt\": 9.6e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_012500.556_IE_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.00018, \"pi\": 283.639, \"Q\": 22.2481, \"true_anom\": 310.241, \"EA\": -10.2897, \"MA\": 359.201, \"Tj\": 0.638648, \"T\": 39.2191, \"last_peri\": \"1987-03-27\", \"jacchia1\": 0.0, \"Jacchia2\": 75.9037, \"numstats\": 5, \"stations\": \"IE000J;UK002L;UK005Y;UK007Z;UK0080;\"},\n{\"_localtime\": \"_20260515_012559\", \"_mjd\": 61175.1, \"_sol\": 53.8855, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.132681, \"_ra_o\": 343.203, \"_dc_o\": 2.4013, \"_ra_t\": 343.318, \"_dc_t\": 1.68411, \"_elng\": 345.279, \"_elat\": 8.11119, \"_vo\": 67.243, \"_vi\": 67.243, \"_vg\": 66.3211, \"_vs\": 41.0083, \"_a\": 12.0466, \"_q\": 0.644815, \"_e\": 0.946473, \"_p\": 41.8117, \"_peri\": 104.778, \"_node\": 53.8679, \"_incl\": 163.53, \"_stream\": \"ETA\", \"_mag\": 1.02, \"_dur\": 0.593428, \"_lng1\": 3.02053, \"_lat1\": 52.1405, \"_H1\": 109.71, \"_lng2\": 2.45856, \"_lat2\": 52.1498, \"_H2\": 106.815, \"_LD21\": 37.5895, \"_az1r\": 91.7724, \"_ev1r\": 4.41839, \"_Nts\": 27.0, \"_Nos\": 2.0, \"_leap\": 92.5926, \"_tme\": 1.0, \"_dt\": 0.002461, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_012559.072_NL_UK\", \"iau\": 31, \"name\": \"eta Aquariids \", \"mass\": 2.2e-05, \"pi\": 158.646, \"Q\": 23.4484, \"true_anom\": 75.2032, \"EA\": 14.556, \"MA\": 0.926856, \"Tj\": -0.50987, \"T\": 41.8117, \"last_peri\": \"2026-04-05\", \"jacchia1\": 10.59, \"Jacchia2\": 6.34851, \"numstats\": 2, \"stations\": \"NL000M;UK00A4;\"},\n{\"_localtime\": \"_20260515_012745\", \"_mjd\": 61175.1, \"_sol\": 53.8867, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -3.58659, \"_ra_o\": 232.16, \"_dc_o\": 8.69783, \"_ra_t\": 231.558, \"_dc_t\": 7.86875, \"_elng\": 226.868, \"_elat\": 25.735, \"_vo\": 38.1608, \"_vi\": 38.1608, \"_vg\": 36.5086, \"_vs\": 49.1322, \"_a\": -1.34687, \"_q\": 0.639067, \"_e\": 1.47448, \"_p\": 0.0, \"_peri\": 247.479, \"_node\": 53.8974, \"_incl\": 25.323, \"_stream\": \"spo\", \"_mag\": -0.45, \"_dur\": 0.481336, \"_lng1\": -6.05807, \"_lat1\": 47.9684, \"_H1\": 94.6052, \"_lng2\": -5.99723, \"_lat2\": 48.0585, \"_H2\": 82.0408, \"_LD21\": 13.7522, \"_az1r\": 205.003, \"_ev1r\": 48.3239, \"_Nts\": 24.0, \"_Nos\": 2.0, \"_leap\": 91.6667, \"_tme\": 1.0, \"_dt\": 0.007543, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_012745.668_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000778, \"pi\": 301.376, \"Q\": -3.33281, \"true_anom\": 292.509, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.86744, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 10.5979, \"Jacchia2\": 7.13655, \"numstats\": 2, \"stations\": \"UK00A1;UK00AU;\"},\n{\"_localtime\": \"_20260515_012751\", \"_mjd\": 61175.1, \"_sol\": 53.8867, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.444059, \"_ra_o\": 319.359, \"_dc_o\": 6.82752, \"_ra_t\": 319.344, \"_dc_t\": 6.26325, \"_elng\": 323.856, \"_elat\": 20.9584, \"_vo\": 68.6472, \"_vi\": 68.6472, \"_vg\": 67.7446, \"_vs\": 41.5789, \"_a\": 33.4503, \"_q\": 1.01072, \"_e\": 0.969785, \"_p\": 193.464, \"_peri\": 179.031, \"_node\": 53.8793, \"_incl\": 144.352, \"_stream\": \"spo\", \"_mag\": 1.06, \"_dur\": 0.441057, \"_lng1\": -3.41466, \"_lat1\": 54.7433, \"_H1\": 111.501, \"_lng2\": -3.83308, \"_lat2\": 54.804, \"_H2\": 102.347, \"_LD21\": 29.6269, \"_az1r\": 104.316, \"_ev1r\": 18.1603, \"_Nts\": 22.0, \"_Nos\": 2.0, \"_leap\": 90.9091, \"_tme\": 1.0, \"_dt\": 0.00118, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_012751.056_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.2e-05, \"pi\": 232.91, \"Q\": 65.8899, \"true_anom\": 0.960207, \"EA\": 0.118927, \"MA\": 0.003594, \"Tj\": -0.849635, \"T\": 193.464, \"last_peri\": \"2026-05-14\", \"jacchia1\": 0.661775, \"Jacchia2\": 15.9802, \"numstats\": 2, \"stations\": \"UK0074;UK009C;\"},\n{\"_localtime\": \"_20260515_012840\", \"_mjd\": 61175.1, \"_sol\": 53.8873, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": 0.082805, \"_ra_o\": 303.947, \"_dc_o\": 54.242, \"_ra_t\": 304.596, \"_dc_t\": 54.0058, \"_elng\": 339.909, \"_elat\": 69.1873, \"_vo\": 42.6548, \"_vi\": 42.6548, \"_vg\": 41.1839, \"_vs\": 41.7012, \"_a\": 54.3045, \"_q\": 0.99935, \"_e\": 0.981597, \"_p\": 400.179, \"_peri\": 167.726, \"_node\": 53.8894, \"_incl\": 68.1825, \"_stream\": \"spo\", \"_mag\": 0.96, \"_dur\": 0.171312, \"_lng1\": 0.672383, \"_lat1\": 53.0712, \"_H1\": 100.184, \"_lng2\": 0.625057, \"_lat2\": 53.0598, \"_H2\": 93.7698, \"_LD21\": 7.68243, \"_az1r\": 67.9379, \"_ev1r\": 61.9127, \"_Nts\": 15.0, \"_Nos\": 3.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.004154, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_012840.742_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.7e-05, \"pi\": 221.615, \"Q\": 107.61, \"true_anom\": 12.2688, \"EA\": 1.18682, \"MA\": 0.021924, \"Tj\": 0.554348, \"T\": 400.179, \"last_peri\": \"2026-05-06\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 3, \"stations\": \"UK002F;UK005M;UK00AN;\"},\n{\"_localtime\": \"_20260515_012842\", \"_mjd\": 61175.1, \"_sol\": 53.8873, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": -1.90723, \"_ra_o\": 334.398, \"_dc_o\": 23.8138, \"_ra_t\": 334.569, \"_dc_t\": 23.216, \"_elng\": 346.107, \"_elat\": 31.2415, \"_vo\": 60.0271, \"_vi\": 60.0271, \"_vg\": 58.9903, \"_vs\": 40.1345, \"_a\": 6.13744, \"_q\": 0.756327, \"_e\": 0.876768, \"_p\": 15.2048, \"_peri\": 117.454, \"_node\": 53.8844, \"_incl\": 119.364, \"_stream\": \"spo\", \"_mag\": -0.88, \"_dur\": 0.260942, \"_lng1\": -0.28013, \"_lat1\": 50.5618, \"_H1\": 94.2431, \"_lng2\": -0.413074, \"_lat2\": 50.5496, \"_H2\": 89.8611, \"_LD21\": 14.1198, \"_az1r\": 81.7918, \"_ev1r\": 24.5827, \"_Nts\": 48.0, \"_Nos\": 8.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 0.00245, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_012842.896_BE_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.4e-05, \"pi\": 171.338, \"Q\": 11.5185, \"true_anom\": 62.5401, \"EA\": 17.6904, \"MA\": 2.42528, \"Tj\": 0.335779, \"T\": 15.2048, \"last_peri\": \"2026-04-07\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 8, \"stations\": \"BE000H;UK000F;UK002Q;UK003N;UK008K;UK00CA;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_012932\", \"_mjd\": 61175.1, \"_sol\": 53.8879, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.36736, \"_ra_o\": 27.214, \"_dc_o\": 65.199, \"_ra_t\": 34.9977, \"_dc_t\": 58.1847, \"_elng\": 54.9411, \"_elat\": 41.2524, \"_vo\": 17.5976, \"_vi\": 17.5976, \"_vg\": 13.6397, \"_vs\": 32.7706, \"_a\": 1.3019, \"_q\": 0.797698, \"_e\": 0.387279, \"_p\": 1.48547, \"_peri\": 104.154, \"_node\": 53.905, \"_incl\": 16.8674, \"_stream\": \"spo\", \"_mag\": 2.03, \"_dur\": 0.55996, \"_lng1\": 0.289153, \"_lat1\": 52.0142, \"_H1\": 82.9211, \"_lng2\": 0.244603, \"_lat2\": 51.9493, \"_H2\": 77.8227, \"_LD21\": 8.92045, \"_az1r\": 21.8945, \"_ev1r\": 32.9283, \"_Nts\": 21.0, \"_Nos\": 2.0, \"_leap\": 90.4762, \"_tme\": 1.0, \"_dt\": 0.001374, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_012932.212_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 9.3e-05, \"pi\": 158.059, \"Q\": 1.80609, \"true_anom\": 75.8277, \"EA\": 54.7342, \"MA\": 36.6169, \"Tj\": 4.88003, \"T\": 1.48547, \"last_peri\": \"2026-03-20\", \"jacchia1\": 6.69939, \"Jacchia2\": 7.1709, \"numstats\": 2, \"stations\": \"UK002F;UK00A4;\"},\n{\"_localtime\": \"_20260515_013011\", \"_mjd\": 61175.1, \"_sol\": 53.8883, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -3.01948, \"_ra_o\": 301.667, \"_dc_o\": 31.6093, \"_ra_t\": 301.808, \"_dc_t\": 31.2143, \"_elng\": 314.376, \"_elat\": 49.8685, \"_vo\": 54.3036, \"_vi\": 54.3036, \"_vg\": 53.1579, \"_vs\": 41.211, \"_a\": 15.5705, \"_q\": 0.993587, \"_e\": 0.936188, \"_p\": 61.4406, \"_peri\": 195.241, \"_node\": 53.8877, \"_incl\": 96.0611, \"_stream\": \"spo\", \"_mag\": -1.77, \"_dur\": 1.0089, \"_lng1\": -4.83635, \"_lat1\": 50.9955, \"_H1\": 106.482, \"_lng2\": -5.28536, \"_lat2\": 51.0307, \"_H2\": 71.1491, \"_LD21\": 50.5011, \"_az1r\": 97.3549, \"_ev1r\": 48.0565, \"_Nts\": 137.0, \"_Nos\": 7.0, \"_leap\": 94.8905, \"_tme\": 1.0, \"_dt\": 1e-06, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013011.735_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000638, \"pi\": 249.129, \"Q\": 30.1475, \"true_anom\": 344.754, \"EA\": -2.78372, \"MA\": 359.821, \"Tj\": 0.205845, \"T\": 61.4406, \"last_peri\": \"1964-12-15\", \"jacchia1\": 0.067487, \"Jacchia2\": 9.61238, \"numstats\": 7, \"stations\": \"UK0006;UK001K;UK0051;UK005S;UK007Q;UK00AP;UK00AU;\"},\n{\"_localtime\": \"_20260515_013012\", \"_mjd\": 61175.1, \"_sol\": 53.8883, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -2.46473, \"_ra_o\": 302.368, \"_dc_o\": 30.9348, \"_ra_t\": 302.508, \"_dc_t\": 30.5302, \"_elng\": 314.907, \"_elat\": 49.026, \"_vo\": 54.5112, \"_vi\": 54.5112, \"_vg\": 53.3694, \"_vs\": 40.9311, \"_a\": 11.0942, \"_q\": 0.994403, \"_e\": 0.910367, \"_p\": 36.9526, \"_peri\": 194.982, \"_node\": 53.8876, \"_incl\": 97.1997, \"_stream\": \"spo\", \"_mag\": -1.82, \"_dur\": 0.90626, \"_lng1\": -4.86485, \"_lat1\": 50.9982, \"_H1\": 103.381, \"_lng2\": -5.28916, \"_lat2\": 51.032, \"_H2\": 71.0348, \"_LD21\": 40.9744, \"_az1r\": 97.4525, \"_ev1r\": 47.1367, \"_Nts\": 28.0, \"_Nos\": 2.0, \"_leap\": 92.8571, \"_tme\": 1.0, \"_dt\": 0.000936, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013012.119_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000598, \"pi\": 248.869, \"Q\": 21.194, \"true_anom\": 345.013, \"EA\": -3.26407, \"MA\": 359.706, \"Tj\": 0.317658, \"T\": 36.9526, \"last_peri\": \"1989-06-11\", \"jacchia1\": 0.046396, \"Jacchia2\": 10.6115, \"numstats\": 2, \"stations\": \"UK007Q;UK00BB;\"},\n{\"_localtime\": \"_20260515_013145\", \"_mjd\": 61175.1, \"_sol\": 53.8894, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -0.823222, \"_ra_o\": 297.244, \"_dc_o\": 0.95289, \"_ra_t\": 297.175, \"_dc_t\": 0.422678, \"_elng\": 299.317, \"_elat\": 21.1373, \"_vo\": 64.0799, \"_vi\": 64.0799, \"_vg\": 63.1118, \"_vs\": 40.9575, \"_a\": 11.4019, \"_q\": 0.650026, \"_e\": 0.94299, \"_p\": 38.5008, \"_peri\": 254.649, \"_node\": 53.8838, \"_incl\": 136.594, \"_stream\": \"spo\", \"_mag\": 0.0, \"_dur\": 0.496913, \"_lng1\": -3.94743, \"_lat1\": 51.3452, \"_H1\": 107.06, \"_lng2\": -4.21351, \"_lat2\": 51.4695, \"_H2\": 95.2969, \"_LD21\": 30.5386, \"_az1r\": 127.062, \"_ev1r\": 26.8537, \"_Nts\": 93.0, \"_Nos\": 9.0, \"_leap\": 90.3226, \"_tme\": 1.0, \"_dt\": 0.000234, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013145.894_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.4e-05, \"pi\": 308.533, \"Q\": 22.1539, \"true_anom\": 285.343, \"EA\": -14.8842, \"MA\": 358.994, \"Tj\": -0.259357, \"T\": 38.5008, \"last_peri\": \"1987-12-22\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 9, \"stations\": \"UK0006;UK0051;UK007A;UK007P;UK009S;UK00AP;UK00B0;UK00BA;UK00BK;\"},\n{\"_localtime\": \"_20260515_013419\", \"_mjd\": 61175.1, \"_sol\": 53.8911, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.412499, \"_ra_o\": 248.984, \"_dc_o\": -15.9577, \"_ra_t\": 248.489, \"_dc_t\": -18.0021, \"_elng\": 249.54, \"_elat\": 3.92084, \"_vo\": 34.8713, \"_vi\": 34.8713, \"_vg\": 33.0556, \"_vs\": 37.5916, \"_a\": 2.5925, \"_q\": 0.259854, \"_e\": 0.899767, \"_p\": 4.17425, \"_peri\": 304.605, \"_node\": 53.9385, \"_incl\": 6.25886, \"_stream\": \"spo\", \"_mag\": 1.88, \"_dur\": 0.8347, \"_lng1\": -2.85344, \"_lat1\": 52.9998, \"_H1\": 98.864, \"_lng2\": -2.82395, \"_lat2\": 53.2414, \"_H2\": 88.4556, \"_LD21\": 27.9928, \"_az1r\": 184.68, \"_ev1r\": 20.9309, \"_Nts\": 73.0, \"_Nos\": 5.0, \"_leap\": 93.1507, \"_tme\": 1.0, \"_dt\": 0.000393, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013419.264_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.4e-05, \"pi\": 358.543, \"Q\": 4.92514, \"true_anom\": 235.347, \"EA\": -47.3065, \"MA\": 350.584, \"Tj\": 2.61974, \"T\": 4.17425, \"last_peri\": \"2022-04-21\", \"jacchia1\": 8.59809, \"Jacchia2\": 4.47689, \"numstats\": 5, \"stations\": \"UK001L;UK0030;UK005L;UK008J;UK00B0;\"},\n{\"_localtime\": \"_20260515_013503\", \"_mjd\": 61175.1, \"_sol\": 53.8916, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -0.222175, \"_ra_o\": 333.105, \"_dc_o\": 10.914, \"_ra_t\": 333.183, \"_dc_t\": 10.3206, \"_elng\": 339.061, \"_elat\": 19.9324, \"_vo\": 66.5658, \"_vi\": 66.5658, \"_vg\": 65.635, \"_vs\": 40.9682, \"_a\": 11.5327, \"_q\": 0.839846, \"_e\": 0.927177, \"_p\": 39.1651, \"_peri\": 130.419, \"_node\": 53.8846, \"_incl\": 143.351, \"_stream\": \"spo\", \"_mag\": 0.68, \"_dur\": 0.525811, \"_lng1\": -1.75233, \"_lat1\": 50.3485, \"_H1\": 112.025, \"_lng2\": -2.18473, \"_lat2\": 50.3571, \"_H2\": 103.261, \"_LD21\": 33.8025, \"_az1r\": 91.9762, \"_ev1r\": 15.867, \"_Nts\": 83.0, \"_Nos\": 9.0, \"_leap\": 89.1566, \"_tme\": 1.0, \"_dt\": 0.001388, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013503.917_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.4e-05, \"pi\": 184.303, \"Q\": 22.2256, \"true_anom\": 49.5728, \"EA\": 10.2588, \"MA\": 0.797813, \"Tj\": -0.443595, \"T\": 39.1651, \"last_peri\": \"2026-04-13\", \"jacchia1\": 7.29108, \"Jacchia2\": 7.33645, \"numstats\": 9, \"stations\": \"UK000T;UK002J;UK003C;UK0089;UK008Q;UK00A6;UK00AP;UK00B5;UK00DH;\"},\n{\"_localtime\": \"_20260515_013540\", \"_mjd\": 61175.1, \"_sol\": 53.892, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": 0.276353, \"_ra_o\": 330.927, \"_dc_o\": 11.0322, \"_ra_t\": 331.05, \"_dc_t\": 10.3575, \"_elng\": 337.001, \"_elat\": 20.7536, \"_vo\": 61.6296, \"_vi\": 61.6296, \"_vg\": 60.6225, \"_vs\": 36.0413, \"_a\": 1.944, \"_q\": 0.820148, \"_e\": 0.578112, \"_p\": 2.71046, \"_peri\": 119.014, \"_node\": 53.8857, \"_incl\": 140.147, \"_stream\": \"spo\", \"_mag\": 0.82, \"_dur\": 0.598787, \"_lng1\": -2.57964, \"_lat1\": 52.0752, \"_H1\": 109.982, \"_lng2\": -3.05612, \"_lat2\": 52.0924, \"_H2\": 100.086, \"_LD21\": 36.6259, \"_az1r\": 93.5557, \"_ev1r\": 16.7895, \"_Nts\": 130.0, \"_Nos\": 11.0, \"_leap\": 91.5385, \"_tme\": 1.0, \"_dt\": 0.000641, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013540.352_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.3e-05, \"pi\": 172.9, \"Q\": 3.06784, \"true_anom\": 60.9775, \"EA\": 33.8633, \"MA\": 15.4065, \"Tj\": 1.91141, \"T\": 2.71046, \"last_peri\": \"2026-04-02\", \"jacchia1\": 0.000617, \"Jacchia2\": 24.2475, \"numstats\": 11, \"stations\": \"UK0031;UK005L;UK005S;UK007A;UK007P;UK008J;UK00BA;UK00BK;UK00BW;UK00BZ;UK00DG;\"},\n{\"_localtime\": \"_20260515_013544\", \"_mjd\": 61175.1, \"_sol\": 53.892, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.648107, \"_ra_o\": 240.008, \"_dc_o\": -1.69913, \"_ra_t\": 239.072, \"_dc_t\": -4.95491, \"_elng\": 237.969, \"_elat\": 15.1102, \"_vo\": 24.4231, \"_vi\": 24.4231, \"_vg\": 21.7505, \"_vs\": 35.1873, \"_a\": 1.71534, \"_q\": 0.561217, \"_e\": 0.672825, \"_p\": 2.24661, \"_peri\": 276.049, \"_node\": 53.9176, \"_incl\": 11.4499, \"_stream\": \"spo\", \"_mag\": 1.1, \"_dur\": 0.727521, \"_lng1\": -3.80377, \"_lat1\": 51.421, \"_H1\": 93.3265, \"_lng2\": -3.75824, \"_lat2\": 51.5259, \"_H2\": 84.4719, \"_LD21\": 17.5765, \"_az1r\": 195.988, \"_ev1r\": 35.775, \"_Nts\": 72.0, \"_Nos\": 5.0, \"_leap\": 93.0556, \"_tme\": 1.0, \"_dt\": 0.000621, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013544.055_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7e-05, \"pi\": 329.966, \"Q\": 2.86947, \"true_anom\": 263.925, \"EA\": -52.3767, \"MA\": 338.157, \"Tj\": 3.8665, \"T\": 2.24661, \"last_peri\": \"2024-04-04\", \"jacchia1\": -0.000171, \"Jacchia2\": 19.5582, \"numstats\": 5, \"stations\": \"UK0006;UK007A;UK009S;UK00BA;UK00BK;\"},\n{\"_localtime\": \"_20260515_013605\", \"_mjd\": 61175.1, \"_sol\": 53.8923, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.44193, \"_ra_o\": 216.68, \"_dc_o\": 14.5008, \"_ra_t\": 212.671, \"_dc_t\": 7.79409, \"_elng\": 207.64, \"_elat\": 19.7034, \"_vo\": 16.3174, \"_vi\": 16.3174, \"_vg\": 11.9386, \"_vs\": 36.013, \"_a\": 1.93533, \"_q\": 0.903561, \"_e\": 0.533124, \"_p\": 2.69236, \"_peri\": 225.933, \"_node\": 53.9366, \"_incl\": 6.66269, \"_stream\": \"spo\", \"_mag\": 0.89, \"_dur\": 0.320616, \"_lng1\": -5.27925, \"_lat1\": 52.8426, \"_H1\": 78.3528, \"_lng2\": -5.24433, \"_lat2\": 52.8616, \"_H2\": 75.3341, \"_LD21\": 4.73951, \"_az1r\": 228.96, \"_ev1r\": 42.7919, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.000162, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013605.644_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000138, \"pi\": 279.87, \"Q\": 2.9671, \"true_anom\": 314.022, \"EA\": -26.3531, \"MA\": 347.206, \"Tj\": 3.71397, \"T\": 2.69236, \"last_peri\": \"2023-10-09\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK004M;UK00C9;\"},\n{\"_localtime\": \"_20260515_013622\", \"_mjd\": 61175.1, \"_sol\": 53.8924, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.33448, \"_ra_o\": 318.392, \"_dc_o\": 32.8574, \"_ra_t\": 318.569, \"_dc_t\": 32.4064, \"_elng\": 334.686, \"_elat\": 45.5542, \"_vo\": 57.0689, \"_vi\": 57.0689, \"_vg\": 55.979, \"_vs\": 41.6921, \"_a\": 51.9042, \"_q\": 0.97583, \"_e\": 0.981199, \"_p\": 373.942, \"_peri\": 158.456, \"_node\": 53.8913, \"_incl\": 102.731, \"_stream\": \"spo\", \"_mag\": 2.03, \"_dur\": 0.240508, \"_lng1\": -3.32755, \"_lat1\": 51.1029, \"_H1\": 104.276, \"_lng2\": -3.46971, \"_lat2\": 51.0955, \"_H2\": 95.7455, \"_LD21\": 12.9878, \"_az1r\": 85.2978, \"_ev1r\": 40.291, \"_Nts\": 13.0, \"_Nos\": 2.0, \"_leap\": 84.6154, \"_tme\": 1.0, \"_dt\": 0.001077, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013622.604_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 212.347, \"Q\": 102.833, \"true_anom\": 21.539, \"EA\": 2.12303, \"MA\": 0.040391, \"Tj\": -0.168362, \"T\": 373.942, \"last_peri\": \"2026-04-29\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK009S;UK00DH;\"},\n{\"_localtime\": \"_20260515_013916\", \"_mjd\": 61175.1, \"_sol\": 53.8944, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.525453, \"_ra_o\": 157.44, \"_dc_o\": 64.8504, \"_ra_t\": 153.406, \"_dc_t\": 63.9654, \"_elng\": 126.128, \"_elat\": 48.2658, \"_vo\": 30.393, \"_vi\": 30.393, \"_vg\": 28.2836, \"_vs\": 52.2521, \"_a\": -0.909906, \"_q\": 1.00054, \"_e\": 2.0996, \"_p\": 0.0, \"_peri\": 170.059, \"_node\": 53.906, \"_incl\": 24.0002, \"_stream\": \"spo\", \"_mag\": 0.48, \"_dur\": 0.817835, \"_lng1\": -3.58851, \"_lat1\": 50.4371, \"_H1\": 72.7364, \"_lng2\": -3.4751, \"_lat2\": 50.3287, \"_H2\": 59.546, \"_LD21\": 24.3223, \"_az1r\": 325.479, \"_ev1r\": 41.8415, \"_Nts\": 38.0, \"_Nos\": 2.0, \"_leap\": 94.7368, \"_tme\": 1.0, \"_dt\": 0.006475, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013916.282_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000226, \"pi\": 223.965, \"Q\": -2.82035, \"true_anom\": 9.92824, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -4.30914, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.064309, \"Jacchia2\": 12.3023, \"numstats\": 2, \"stations\": \"UK0069;UK008E;\"},\n{\"_localtime\": \"_20260515_013921\", \"_mjd\": 61175.1, \"_sol\": 53.8944, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -0.276642, \"_ra_o\": 168.033, \"_dc_o\": 60.99, \"_ra_t\": 147.167, \"_dc_t\": 52.8368, \"_elng\": 129.421, \"_elat\": 36.9337, \"_vo\": 13.3908, \"_vi\": 13.3908, \"_vg\": 7.45306, \"_vs\": 35.5768, \"_a\": 1.81192, \"_q\": 1.00626, \"_e\": 0.444647, \"_p\": 2.43899, \"_peri\": 170.168, \"_node\": 53.9351, \"_incl\": 7.24151, \"_stream\": \"spo\", \"_mag\": 0.18, \"_dur\": 2.0987, \"_lng1\": -3.61265, \"_lat1\": 50.4376, \"_H1\": 74.7289, \"_lng2\": -3.45444, \"_lat2\": 50.3203, \"_H2\": 57.5116, \"_LD21\": 25.0212, \"_az1r\": 317.655, \"_ev1r\": 44.0929, \"_Nts\": 232.0, \"_Nos\": 7.0, \"_leap\": 96.9828, \"_tme\": 1.0, \"_dt\": 0.00047, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_013921.723_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.001702, \"pi\": 224.103, \"Q\": 2.61759, \"true_anom\": 9.79134, \"EA\": 6.07991, \"MA\": 3.38157, \"Tj\": 3.92083, \"T\": 2.43899, \"last_peri\": \"2026-05-06\", \"jacchia1\": 5.24377, \"Jacchia2\": 2.91448, \"numstats\": 7, \"stations\": \"UK000H;UK000T;UK002J;UK003C;UK007Q;UK008Q;UK00DH;\"},\n{\"_localtime\": \"_20260515_014055\", \"_mjd\": 61175.1, \"_sol\": 53.8955, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.985856, \"_ra_o\": 227.992, \"_dc_o\": 79.1059, \"_ra_t\": 219.78, \"_dc_t\": 81.1707, \"_elng\": 111.276, \"_elat\": 71.0291, \"_vo\": 19.6079, \"_vi\": 19.6079, \"_vg\": 16.1498, \"_vs\": 37.3178, \"_a\": 2.44585, \"_q\": 1.00072, \"_e\": 0.59085, \"_p\": 3.82512, \"_peri\": 166.69, \"_node\": 53.907, \"_incl\": 24.2537, \"_stream\": \"spo\", \"_mag\": 1.37, \"_dur\": 0.232761, \"_lng1\": -6.46719, \"_lat1\": 55.7717, \"_H1\": 83.2278, \"_lng2\": -6.46303, \"_lat2\": 55.756, \"_H2\": 79.29, \"_LD21\": 4.5772, \"_az1r\": 349.53, \"_ev1r\": 65.4134, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.006333, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014055.781_IE_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.2e-05, \"pi\": 220.596, \"Q\": 3.89098, \"true_anom\": 13.2978, \"EA\": 6.76638, \"MA\": 2.77775, \"Tj\": 3.13633, \"T\": 3.82512, \"last_peri\": \"2026-05-04\", \"jacchia1\": -0.732213, \"Jacchia2\": 23.4267, \"numstats\": 2, \"stations\": \"IE000J;UK0080;\"},\n{\"_localtime\": \"_20260515_014231\", \"_mjd\": 61175.1, \"_sol\": 53.8966, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.217244, \"_ra_o\": 260.545, \"_dc_o\": 34.2671, \"_ra_t\": 260.438, \"_dc_t\": 33.752, \"_elng\": 255.428, \"_elat\": 56.7071, \"_vo\": 35.1482, \"_vi\": 35.1482, \"_vg\": 33.3469, \"_vs\": 39.6487, \"_a\": 4.83967, \"_q\": 0.814049, \"_e\": 0.831797, \"_p\": 10.6469, \"_peri\": 235.148, \"_node\": 53.9008, \"_incl\": 50.7678, \"_stream\": \"spo\", \"_mag\": 1.07, \"_dur\": 0.260828, \"_lng1\": -4.99029, \"_lat1\": 54.55, \"_H1\": 97.2379, \"_lng2\": -5.00327, \"_lat2\": 54.5735, \"_H2\": 89.9957, \"_LD21\": 8.72663, \"_az1r\": 163.357, \"_ev1r\": 69.1188, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.000745, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014231.259_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.7e-05, \"pi\": 289.049, \"Q\": 8.8653, \"true_anom\": 304.845, \"EA\": -17.9866, \"MA\": 356.73, \"Tj\": 1.75243, \"T\": 10.6469, \"last_peri\": \"2015-10-26\", \"jacchia1\": 0.068564, \"Jacchia2\": 36.241, \"numstats\": 2, \"stations\": \"UK009C;UK00CS;\"},\n{\"_localtime\": \"_20260515_014239\", \"_mjd\": 61175.1, \"_sol\": 53.8967, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.945731, \"_ra_o\": 287.966, \"_dc_o\": 44.2716, \"_ra_t\": 288.445, \"_dc_t\": 43.9859, \"_elng\": 303.042, \"_elat\": 65.3216, \"_vo\": 38.1704, \"_vi\": 38.1704, \"_vg\": 36.5196, \"_vs\": 36.8581, \"_a\": 2.23574, \"_q\": 0.984254, \"_e\": 0.559764, \"_p\": 3.34298, \"_peri\": 202.046, \"_node\": 53.899, \"_incl\": 65.3507, \"_stream\": \"spo\", \"_mag\": 1.26, \"_dur\": 0.323964, \"_lng1\": -5.57137, \"_lat1\": 50.0355, \"_H1\": 99.756, \"_lng2\": -5.63534, \"_lat2\": 50.0355, \"_H2\": 89.6506, \"_LD21\": 12.2624, \"_az1r\": 90.1172, \"_ev1r\": 65.7114, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.005166, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014239.989_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.7e-05, \"pi\": 255.945, \"Q\": 3.48723, \"true_anom\": 337.949, \"EA\": -11.8198, \"MA\": 354.75, \"Tj\": 2.7808, \"T\": 3.34298, \"last_peri\": \"2023-01-27\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20260515_014359\", \"_mjd\": 61175.1, \"_sol\": 53.8975, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": 0.75067, \"_ra_o\": 314.301, \"_dc_o\": 33.9064, \"_ra_t\": 314.564, \"_dc_t\": 33.4214, \"_elng\": 330.86, \"_elat\": 47.8912, \"_vo\": 50.6031, \"_vi\": 50.6031, \"_vg\": 49.3707, \"_vs\": 37.0439, \"_a\": 2.31586, \"_q\": 0.991249, \"_e\": 0.571975, \"_p\": 3.52428, \"_peri\": 161.234, \"_node\": 53.8971, \"_incl\": 95.28, \"_stream\": \"spo\", \"_mag\": 1.07, \"_dur\": 0.252238, \"_lng1\": -2.84652, \"_lat1\": 51.1293, \"_H1\": 104.579, \"_lng2\": -2.97174, \"_lat2\": 51.1281, \"_H2\": 95.7459, \"_LD21\": 12.1647, \"_az1r\": 89.115, \"_ev1r\": 45.0479, \"_Nts\": 36.0, \"_Nos\": 7.0, \"_leap\": 80.5556, \"_tme\": 1.0, \"_dt\": 0.000133, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014359.565_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-06, \"pi\": 215.131, \"Q\": 3.64048, \"true_anom\": 18.7607, \"EA\": 9.85356, \"MA\": 4.24532, \"Tj\": 2.14652, \"T\": 3.52428, \"last_peri\": \"2026-04-29\", \"jacchia1\": 0.000179, \"Jacchia2\": 60.005, \"numstats\": 7, \"stations\": \"UK002J;UK008Q;UK009S;UK00A5;UK00BW;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_014424\", \"_mjd\": 61175.1, \"_sol\": 53.8978, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": -0.985229, \"_ra_o\": 283.911, \"_dc_o\": 1.5203, \"_ra_t\": 283.808, \"_dc_t\": 0.923857, \"_elng\": 285.1, \"_elat\": 23.6407, \"_vo\": 55.1545, \"_vi\": 55.1545, \"_vg\": 54.0244, \"_vs\": 38.6036, \"_a\": 3.34664, \"_q\": 0.334532, \"_e\": 0.900039, \"_p\": 6.1223, \"_peri\": 294.349, \"_node\": 53.8957, \"_incl\": 112.777, \"_stream\": \"spo\", \"_mag\": 0.28, \"_dur\": 0.199824, \"_lng1\": -3.84655, \"_lat1\": 50.0656, \"_H1\": 95.4553, \"_lng2\": -3.91857, \"_lat2\": 50.1278, \"_H2\": 89.2183, \"_LD21\": 10.1399, \"_az1r\": 143.611, \"_ev1r\": 35.6212, \"_Nts\": 28.0, \"_Nos\": 6.0, \"_leap\": 78.5714, \"_tme\": 1.0, \"_dt\": 0.000527, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014424.704_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.5e-05, \"pi\": 348.245, \"Q\": 6.35875, \"true_anom\": 245.645, \"EA\": -39.1508, \"MA\": 353.408, \"Tj\": 1.28448, \"T\": 6.1223, \"last_peri\": \"2020-05-10\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 6, \"stations\": \"UK000T;UK001K;UK003C;UK007Q;UK00AP;UK00DH;\"},\n{\"_localtime\": \"_20260515_014436\", \"_mjd\": 61175.1, \"_sol\": 53.898, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 0.565099, \"_ra_o\": 326.129, \"_dc_o\": 3.67447, \"_ra_t\": 326.169, \"_dc_t\": 3.07007, \"_elng\": 329.492, \"_elat\": 15.68, \"_vo\": 66.8427, \"_vi\": 66.8427, \"_vg\": 65.9153, \"_vs\": 38.6662, \"_a\": 3.40886, \"_q\": 0.975777, \"_e\": 0.713753, \"_p\": 6.29382, \"_peri\": 156.456, \"_node\": 53.8882, \"_incl\": 152.127, \"_stream\": \"spo\", \"_mag\": 1.1, \"_dur\": 0.318882, \"_lng1\": -2.72775, \"_lat1\": 51.2353, \"_H1\": 109.729, \"_lng2\": -3.00232, \"_lat2\": 51.2765, \"_H2\": 104.283, \"_LD21\": 20.0824, \"_az1r\": 103.636, \"_ev1r\": 15.3521, \"_Nts\": 43.0, \"_Nos\": 6.0, \"_leap\": 86.0465, \"_tme\": 1.0, \"_dt\": 0.000541, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014436.055_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4e-06, \"pi\": 210.344, \"Q\": 5.84194, \"true_anom\": 23.5327, \"EA\": 9.7317, \"MA\": 2.81902, \"Tj\": 0.524514, \"T\": 6.29382, \"last_peri\": \"2026-04-27\", \"jacchia1\": -3.05314, \"Jacchia2\": 5.13301, \"numstats\": 6, \"stations\": \"UK0006;UK007A;UK0089;UK009S;UK00BK;UK00DG;\"},\n{\"_localtime\": \"_20260515_014612\", \"_mjd\": 61175.1, \"_sol\": 53.899, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": -1.21394, \"_ra_o\": 304.906, \"_dc_o\": 17.067, \"_ra_t\": 304.876, \"_dc_t\": 16.6196, \"_elng\": 312.048, \"_elat\": 35.1066, \"_vo\": 62.1971, \"_vi\": 62.1971, \"_vg\": 61.1991, \"_vs\": 41.4476, \"_a\": 23.7128, \"_q\": 0.951842, \"_e\": 0.95986, \"_p\": 115.471, \"_peri\": 208.24, \"_node\": 53.8962, \"_incl\": 119.018, \"_stream\": \"spo\", \"_mag\": -0.42, \"_dur\": 0.373189, \"_lng1\": -2.48061, \"_lat1\": 52.4509, \"_H1\": 106.673, \"_lng2\": -2.68808, \"_lat2\": 52.5087, \"_H2\": 94.2554, \"_LD21\": 25.1306, \"_az1r\": 114.798, \"_ev1r\": 38.5049, \"_Nts\": 100.0, \"_Nos\": 11.0, \"_leap\": 89.0, \"_tme\": 1.0, \"_dt\": 5.2e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014612.581_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.3e-05, \"pi\": 262.136, \"Q\": 46.4737, \"true_anom\": 331.754, \"EA\": -4.12443, \"MA\": 359.831, \"Tj\": -0.361371, \"T\": 115.471, \"last_peri\": \"1910-12-13\", \"jacchia1\": 2.6e-05, \"Jacchia2\": 46.0054, \"numstats\": 11, \"stations\": \"UK0031;UK005L;UK007A;UK007P;UK008J;UK009P;UK009S;UK00B0;UK00BA;UK00BZ;UK00BD;\"},\n{\"_localtime\": \"_20260515_014746\", \"_mjd\": 61175.1, \"_sol\": 53.9001, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.490156, \"_ra_o\": 1.85149, \"_dc_o\": 38.8041, \"_ra_t\": 2.3176, \"_dc_t\": 37.8425, \"_elng\": 19.1054, \"_elat\": 33.3789, \"_vo\": 48.6927, \"_vi\": 48.6927, \"_vg\": 47.4089, \"_vs\": 42.5377, \"_a\": -16.3865, \"_q\": 0.413914, \"_e\": 1.02526, \"_p\": 0.0, \"_peri\": 80.4126, \"_node\": 53.9015, \"_incl\": 75.2145, \"_stream\": \"spo\", \"_mag\": 1.4, \"_dur\": 0.2877, \"_lng1\": -3.9919, \"_lat1\": 53.6078, \"_H1\": 97.2374, \"_lng2\": -4.14481, \"_lat2\": 53.5419, \"_H2\": 92.1208, \"_LD21\": 13.3866, \"_az1r\": 53.9192, \"_ev1r\": 22.106, \"_Nts\": 16.0, \"_Nos\": 2.0, \"_leap\": 87.5, \"_tme\": 1.0, \"_dt\": 5.8e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014746.610_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.7e-05, \"pi\": 134.314, \"Q\": -33.187, \"true_anom\": 99.5821, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -0.112749, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK004M;UK00BZ;\"},\n{\"_localtime\": \"_20260515_014922\", \"_mjd\": 61175.1, \"_sol\": 53.9011, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.534477, \"_ra_o\": 290.366, \"_dc_o\": 35.9523, \"_ra_t\": 290.501, \"_dc_t\": 35.5117, \"_elng\": 301.321, \"_elat\": 56.7416, \"_vo\": 44.5299, \"_vi\": 44.5299, \"_vg\": 43.1247, \"_vs\": 37.8741, \"_a\": 2.76472, \"_q\": 0.943304, \"_e\": 0.658806, \"_p\": 4.59702, \"_peri\": 213.7, \"_node\": 53.9022, \"_incl\": 78.0398, \"_stream\": \"spo\", \"_mag\": 1.05, \"_dur\": 0.333709, \"_lng1\": -3.29582, \"_lat1\": 55.9678, \"_H1\": 107.224, \"_lng2\": -3.3908, \"_lat2\": 55.9949, \"_H2\": 95.7413, \"_LD21\": 14.5135, \"_az1r\": 117.325, \"_ev1r\": 59.8117, \"_Nts\": 17.0, \"_Nos\": 2.0, \"_leap\": 88.2353, \"_tme\": 1.0, \"_dt\": 2.6e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_014922.033_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.6e-05, \"pi\": 267.603, \"Q\": 4.58613, \"true_anom\": 326.294, \"EA\": -15.6451, \"MA\": 354.534, \"Tj\": 2.10965, \"T\": 4.59702, \"last_peri\": \"2021-11-03\", \"jacchia1\": 91.2739, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000P;UK004V;\"},\n{\"_localtime\": \"_20260515_015123\", \"_mjd\": 61175.1, \"_sol\": 53.9025, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 2.16246, \"_ra_o\": 176.518, \"_dc_o\": 45.3205, \"_ra_t\": 163.374, \"_dc_t\": 36.36, \"_elng\": 149.905, \"_elat\": 26.891, \"_vo\": 14.0162, \"_vi\": 14.0162, \"_vg\": 8.53801, \"_vs\": 37.252, \"_a\": 2.41325, \"_q\": 1.01062, \"_e\": 0.581223, \"_p\": 3.74891, \"_peri\": 181.696, \"_node\": 53.9525, \"_incl\": 5.95006, \"_stream\": \"spo\", \"_mag\": 2.5, \"_dur\": 0.88002, \"_lng1\": -2.9339, \"_lat1\": 52.3767, \"_H1\": 87.132, \"_lng2\": -2.81208, \"_lat2\": 52.3381, \"_H2\": 79.2996, \"_LD21\": 13.7718, \"_az1r\": 296.666, \"_ev1r\": 38.9599, \"_Nts\": 58.0, \"_Nos\": 5.0, \"_leap\": 91.3793, \"_tme\": 1.0, \"_dt\": 0.011494, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015123.152_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3.7e-05, \"pi\": 235.648, \"Q\": 3.81589, \"true_anom\": 358.254, \"EA\": -0.898504, \"MA\": 359.624, \"Tj\": 3.25882, \"T\": 3.74891, \"last_peri\": \"2022-08-16\", \"jacchia1\": 3.33658, \"Jacchia2\": 5.81159, \"numstats\": 5, \"stations\": \"UK005L;UK008J;UK009P;UK00BA;UK00BZ;\"},\n{\"_localtime\": \"_20260515_015329\", \"_mjd\": 61175.1, \"_sol\": 53.9039, \"_ID1\": \"_(UNIFIED_12)\", \"_amag\": 0.514816, \"_ra_o\": 104.941, \"_dc_o\": 59.451, \"_ra_t\": 98.4859, \"_dc_t\": 46.2178, \"_elng\": 96.3669, \"_elat\": 22.9675, \"_vo\": 15.3896, \"_vi\": 15.3896, \"_vg\": 10.6368, \"_vs\": 37.113, \"_a\": 2.34724, \"_q\": 0.953539, \"_e\": 0.593761, \"_p\": 3.59614, \"_peri\": 147.946, \"_node\": 53.9492, \"_incl\": 6.56156, \"_stream\": \"spo\", \"_mag\": 0.98, \"_dur\": 1.42949, \"_lng1\": -2.96878, \"_lat1\": 51.8846, \"_H1\": 79.397, \"_lng2\": -2.91354, \"_lat2\": 51.7376, \"_H2\": 72.0178, \"_LD21\": 19.0426, \"_az1r\": 345.579, \"_ev1r\": 23.4127, \"_Nts\": 330.0, \"_Nos\": 12.0, \"_leap\": 96.3636, \"_tme\": 1.0, \"_dt\": 0.001645, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015329.431_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000381, \"pi\": 201.895, \"Q\": 3.74094, \"true_anom\": 32.0084, \"EA\": 16.4794, \"MA\": 6.8289, \"Tj\": 3.29087, \"T\": 3.59614, \"last_peri\": \"2026-04-20\", \"jacchia1\": 0.440766, \"Jacchia2\": 6.47543, \"numstats\": 12, \"stations\": \"UK005L;UK007P;UK0089;UK008J;UK009G;UK009S;UK00BA;UK00BK;UK00BW;UK00BZ;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_015519\", \"_mjd\": 61175.1, \"_sol\": 53.9051, \"_ID1\": \"_(UNIFIED_13)\", \"_amag\": -0.11238, \"_ra_o\": 343.225, \"_dc_o\": 30.8648, \"_ra_t\": 343.488, \"_dc_t\": 30.2169, \"_elng\": 358.261, \"_elat\": 34.0169, \"_vo\": 55.249, \"_vi\": 55.249, \"_vg\": 54.1231, \"_vs\": 40.425, \"_a\": 7.32343, \"_q\": 0.584205, \"_e\": 0.920228, \"_p\": 19.8186, \"_peri\": 96.8494, \"_node\": 53.904, \"_incl\": 104.017, \"_stream\": \"spo\", \"_mag\": 0.42, \"_dur\": 0.526091, \"_lng1\": -1.12196, \"_lat1\": 51.5505, \"_H1\": 108.171, \"_lng2\": -1.44971, \"_lat2\": 51.4943, \"_H2\": 95.5483, \"_LD21\": 28.7925, \"_az1r\": 74.66, \"_ev1r\": 28.0092, \"_Nts\": 135.0, \"_Nos\": 13.0, \"_leap\": 90.3704, \"_tme\": 1.0, \"_dt\": 0.000604, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015519.556_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.6e-05, \"pi\": 150.753, \"Q\": 14.0627, \"true_anom\": 83.1452, \"EA\": 20.4952, \"MA\": 2.0346, \"Tj\": 0.485728, \"T\": 19.8186, \"last_peri\": \"2026-04-04\", \"jacchia1\": 46.9724, \"Jacchia2\": -1.8e-05, \"numstats\": 13, \"stations\": \"UK000S;UK0031;UK003X;UK005N;UK007B;UK007R;UK008K;UK009G;UK00A5;UK00B1;UK00BA;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_015523\", \"_mjd\": 61175.1, \"_sol\": 53.9052, \"_ID1\": \"_(UNIFIED_8)\", \"_amag\": 0.576659, \"_ra_o\": 298.762, \"_dc_o\": 15.6035, \"_ra_t\": 298.729, \"_dc_t\": 15.1129, \"_elng\": 304.586, \"_elat\": 35.1653, \"_vo\": 57.1545, \"_vi\": 57.1545, \"_vg\": 56.067, \"_vs\": 38.0931, \"_a\": 2.91596, \"_q\": 0.826941, \"_e\": 0.716408, \"_p\": 4.97935, \"_peri\": 235.646, \"_node\": 53.9031, \"_incl\": 113.107, \"_stream\": \"spo\", \"_mag\": 1.28, \"_dur\": 0.260794, \"_lng1\": -2.88743, \"_lat1\": 52.3769, \"_H1\": 109.531, \"_lng2\": -3.01549, \"_lat2\": 52.4296, \"_H2\": 100.134, \"_LD21\": 13.672, \"_az1r\": 124.184, \"_ev1r\": 41.5726, \"_Nts\": 43.0, \"_Nos\": 8.0, \"_leap\": 81.3953, \"_tme\": 1.0, \"_dt\": 0.000242, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015523.899_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 289.549, \"Q\": 5.00498, \"true_anom\": 304.349, \"EA\": -24.2178, \"MA\": 352.62, \"Tj\": 1.37484, \"T\": 4.97935, \"last_peri\": \"2021-06-28\", \"jacchia1\": 2.27076, \"Jacchia2\": 21.0526, \"numstats\": 8, \"stations\": \"UK0030;UK005L;UK008J;UK009P;UK00B0;UK00BA;UK00BZ;UK00DG;\"},\n{\"_localtime\": \"_20260515_015622\", \"_mjd\": 61175.1, \"_sol\": 53.9058, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": -1.26657, \"_ra_o\": 298.029, \"_dc_o\": 31.4388, \"_ra_t\": 298.083, \"_dc_t\": 31.0911, \"_elng\": 309.571, \"_elat\": 50.7422, \"_vo\": 53.6366, \"_vi\": 53.6366, \"_vg\": 52.4763, \"_vs\": 41.4702, \"_a\": 24.9609, \"_q\": 0.973874, \"_e\": 0.960984, \"_p\": 124.707, \"_peri\": 202.255, \"_node\": 53.9056, \"_incl\": 93.7987, \"_stream\": \"spo\", \"_mag\": -0.71, \"_dur\": 0.386077, \"_lng1\": -2.24747, \"_lat1\": 51.151, \"_H1\": 107.856, \"_lng2\": -2.36717, \"_lat2\": 51.1782, \"_H2\": 94.7531, \"_LD21\": 18.9048, \"_az1r\": 110.114, \"_ev1r\": 55.6829, \"_Nts\": 60.0, \"_Nos\": 7.0, \"_leap\": 88.3333, \"_tme\": 1.0, \"_dt\": 0.000922, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015622.530_BE_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.2e-05, \"pi\": 256.161, \"Q\": 48.9479, \"true_anom\": 337.74, \"EA\": -3.17917, \"MA\": 359.874, \"Tj\": 0.128232, \"T\": 124.707, \"last_peri\": \"1901-09-14\", \"jacchia1\": 1.65407, \"Jacchia2\": 14.8865, \"numstats\": 7, \"stations\": \"BE000H;UK007B;UK008Q;UK009G;UK00A5;UK00BW;UK00DG;\"},\n{\"_localtime\": \"_20260515_015741\", \"_mjd\": 61175.1, \"_sol\": 53.9067, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.715989, \"_ra_o\": 284.103, \"_dc_o\": 73.9663, \"_ra_t\": 289.224, \"_dc_t\": 75.2141, \"_elng\": 62.7974, \"_elat\": 79.4078, \"_vo\": 22.4979, \"_vi\": 22.4979, \"_vg\": 19.5589, \"_vs\": 35.8743, \"_a\": 1.89416, \"_q\": 0.991925, \"_e\": 0.476324, \"_p\": 2.6069, \"_peri\": 160.406, \"_node\": 53.9149, \"_incl\": 32.6267, \"_stream\": \"spo\", \"_mag\": 2.0, \"_dur\": 0.401976, \"_lng1\": -6.29055, \"_lat1\": 51.1068, \"_H1\": 84.0548, \"_lng2\": -6.30644, \"_lat2\": 51.078, \"_H2\": 77.0038, \"_LD21\": 8.50826, \"_az1r\": 17.4756, \"_ev1r\": 64.2832, \"_Nts\": 18.0, \"_Nos\": 2.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.000887, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015741.589_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.8e-05, \"pi\": 214.321, \"Q\": 2.79639, \"true_anom\": 19.5843, \"EA\": 11.7377, \"MA\": 6.18576, \"Tj\": 3.64104, \"T\": 2.6069, \"last_peri\": \"2026-04-28\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK00A1;UK00C6;\"},\n{\"_localtime\": \"_20260515_015756\", \"_mjd\": 61175.1, \"_sol\": 53.9069, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.366816, \"_ra_o\": 329.472, \"_dc_o\": 1.03627, \"_ra_t\": 329.483, \"_dc_t\": 0.442276, \"_elng\": 331.753, \"_elat\": 12.0668, \"_vo\": 68.604, \"_vi\": 68.604, \"_vg\": 67.6993, \"_vs\": 39.9092, \"_a\": 5.45669, \"_q\": 0.948567, \"_e\": 0.826165, \"_p\": 12.7466, \"_peri\": 149.747, \"_node\": 53.8938, \"_incl\": 158.596, \"_stream\": \"BAQ\", \"_mag\": 1.41, \"_dur\": 0.246707, \"_lng1\": 0.262851, \"_lat1\": 51.3317, \"_H1\": 99.1496, \"_lng2\": 0.047571, \"_lat2\": 51.3745, \"_H2\": 94.9022, \"_LD21\": 13.2254, \"_az1r\": 107.779, \"_ev1r\": 15.0202, \"_Nts\": 22.0, \"_Nos\": 4.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 0.002226, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015756.239_BE_UK\", \"iau\": 519, \"name\": \"beta Aquariids \", \"mass\": 5e-06, \"pi\": 203.64, \"Q\": 9.96482, \"true_anom\": 30.2392, \"EA\": 9.53047, \"MA\": 1.69299, \"Tj\": -0.120542, \"T\": 12.7466, \"last_peri\": \"2026-04-23\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"BE000H;UK007B;UK007R;UK00CA;\"},\n{\"_localtime\": \"_20260515_015913\", \"_mjd\": 61175.1, \"_sol\": 53.9077, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.499856, \"_ra_o\": 292.906, \"_dc_o\": 20.2432, \"_ra_t\": 292.925, \"_dc_t\": 19.7839, \"_elng\": 299.027, \"_elat\": 40.9393, \"_vo\": 52.5574, \"_vi\": 52.5574, \"_vg\": 51.3723, \"_vs\": 37.6866, \"_a\": 2.64788, \"_q\": 0.788859, \"_e\": 0.702079, \"_p\": 4.3087, \"_peri\": 242.109, \"_node\": 53.9069, \"_incl\": 99.6593, \"_stream\": \"spo\", \"_mag\": 0.77, \"_dur\": 0.236533, \"_lng1\": -6.6821, \"_lat1\": 49.9238, \"_H1\": 106.408, \"_lng2\": -6.75608, \"_lat2\": 49.9532, \"_H2\": 99.3453, \"_LD21\": 10.1401, \"_az1r\": 121.882, \"_ev1r\": 48.3671, \"_Nts\": 21.0, \"_Nos\": 4.0, \"_leap\": 80.9524, \"_tme\": 1.0, \"_dt\": 0.001293, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_015913.354_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2e-05, \"pi\": 296.016, \"Q\": 4.50689, \"true_anom\": 297.885, \"EA\": -28.283, \"MA\": 350.777, \"Tj\": 1.795, \"T\": 4.3087, \"last_peri\": \"2022-03-03\", \"jacchia1\": 0.0, \"Jacchia2\": 169.553, \"numstats\": 4, \"stations\": \"UK00A1;UK00AU;UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20260515_020012\", \"_mjd\": 61175.1, \"_sol\": 53.9084, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -0.181612, \"_ra_o\": 207.719, \"_dc_o\": -4.60428, \"_ra_t\": 200.304, \"_dc_t\": -15.4353, \"_elng\": 204.54, \"_elat\": -6.3816, \"_vo\": 16.3743, \"_vi\": 16.3743, \"_vg\": 12.0202, \"_vs\": 36.755, \"_a\": 2.19377, \"_q\": 0.907823, \"_e\": 0.586181, \"_p\": 3.24928, \"_peri\": 43.7227, \"_node\": 233.771, \"_incl\": 2.16736, \"_stream\": \"spo\", \"_mag\": 0.8, \"_dur\": 2.24762, \"_lng1\": -0.224363, \"_lat1\": 52.1141, \"_H1\": 83.0545, \"_lng2\": 0.188896, \"_lat2\": 52.2727, \"_H2\": 72.808, \"_LD21\": 35.7843, \"_az1r\": 238.429, \"_ev1r\": 16.7593, \"_Nts\": 193.0, \"_Nos\": 5.0, \"_leap\": 97.4093, \"_tme\": 1.0, \"_dt\": 0.00191, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_020012.559_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.001056, \"pi\": 277.494, \"Q\": 3.47972, \"true_anom\": 316.415, \"EA\": -23.0842, \"MA\": 350.084, \"Tj\": 3.42357, \"T\": 3.24928, \"last_peri\": \"2023-03-17\", \"jacchia1\": 0.362014, \"Jacchia2\": 3.52618, \"numstats\": 5, \"stations\": \"UK0031;UK003X;UK007R;UK00AN;UK00B1;\"},\n{\"_localtime\": \"_20260515_020316\", \"_mjd\": 61175.1, \"_sol\": 53.9105, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.40775, \"_ra_o\": 183.451, \"_dc_o\": 74.3439, \"_ra_t\": 167.499, \"_dc_t\": 73.4751, \"_elng\": 122.386, \"_elat\": 58.7718, \"_vo\": 18.1964, \"_vi\": 18.1964, \"_vg\": 14.4077, \"_vs\": 38.5781, \"_a\": 3.32197, \"_q\": 1.00275, \"_e\": 0.698145, \"_p\": 6.05473, \"_peri\": 168.697, \"_node\": 53.9259, \"_incl\": 18.6874, \"_stream\": \"spo\", \"_mag\": 2.67, \"_dur\": 0.641716, \"_lng1\": -5.17558, \"_lat1\": 52.1384, \"_H1\": 88.557, \"_lng2\": -5.13471, \"_lat2\": 52.0833, \"_H2\": 79.2489, \"_LD21\": 11.5947, \"_az1r\": 334.06, \"_ev1r\": 53.4204, \"_Nts\": 23.0, \"_Nos\": 2.0, \"_leap\": 91.3044, \"_tme\": 1.0, \"_dt\": 0.00037, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_020316.181_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 9.3e-05, \"pi\": 222.623, \"Q\": 5.64119, \"true_anom\": 11.2871, \"EA\": 4.77144, \"MA\": 1.44413, \"Tj\": 2.65033, \"T\": 6.05473, \"last_peri\": \"2026-05-06\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK005L;UK00C9;\"},\n{\"_localtime\": \"_20260515_020646\", \"_mjd\": 61175.1, \"_sol\": 53.9128, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -1.74798, \"_ra_o\": 326.304, \"_dc_o\": 16.8485, \"_ra_t\": 326.343, \"_dc_t\": 16.3545, \"_elng\": 334.795, \"_elat\": 28.0258, \"_vo\": 64.906, \"_vi\": 64.906, \"_vg\": 63.9511, \"_vs\": 41.2151, \"_a\": 15.6663, \"_q\": 0.936034, \"_e\": 0.940252, \"_p\": 62.0083, \"_peri\": 147.921, \"_node\": 53.9085, \"_incl\": 130.825, \"_stream\": \"spo\", \"_mag\": -0.98, \"_dur\": 0.424654, \"_lng1\": -3.45313, \"_lat1\": 49.5742, \"_H1\": 112.728, \"_lng2\": -3.77872, \"_lat2\": 49.6022, \"_H2\": 99.6245, \"_LD21\": 26.0398, \"_az1r\": 97.6827, \"_ev1r\": 28.7254, \"_Nts\": 74.0, \"_Nos\": 9.0, \"_leap\": 87.8378, \"_tme\": 1.0, \"_dt\": 0.00114, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_020646.769_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.8e-05, \"pi\": 201.83, \"Q\": 30.3965, \"true_anom\": 32.0721, \"EA\": 5.77491, \"MA\": 0.35423, \"Tj\": -0.440198, \"T\": 62.0083, \"last_peri\": \"2026-04-22\", \"jacchia1\": -0.0, \"Jacchia2\": 74.9449, \"numstats\": 9, \"stations\": \"UK000H;UK003C;UK003E;UK006H;UK007Q;UK008Q;UK00AP;UK00AU;UK00B5;\"},\n{\"_localtime\": \"_20260515_020749\", \"_mjd\": 61175.1, \"_sol\": 53.9135, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 2.1516, \"_ra_o\": 288.128, \"_dc_o\": 46.2978, \"_ra_t\": 288.603, \"_dc_t\": 45.9957, \"_elng\": 304.874, \"_elat\": 67.1947, \"_vo\": 33.541, \"_vi\": 33.541, \"_vg\": 31.648, \"_vs\": 34.4082, \"_a\": 1.55259, \"_q\": 0.989523, \"_e\": 0.362661, \"_p\": 1.93457, \"_peri\": 202.929, \"_node\": 53.9169, \"_incl\": 58.4962, \"_stream\": \"spo\", \"_mag\": 2.77, \"_dur\": 0.24835, \"_lng1\": -2.98209, \"_lat1\": 52.3599, \"_H1\": 95.4301, \"_lng2\": -3.02066, \"_lat2\": 52.3635, \"_H2\": 87.3918, \"_LD21\": 8.09673, \"_az1r\": 99.0575, \"_ev1r\": 71.9225, \"_Nts\": 23.0, \"_Nos\": 4.0, \"_leap\": 82.6087, \"_tme\": 1.0, \"_dt\": 0.002622, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_020749.234_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 3e-06, \"pi\": 256.846, \"Q\": 2.11565, \"true_anom\": 337.064, \"EA\": -15.7976, \"MA\": 349.859, \"Tj\": 3.88397, \"T\": 1.93457, \"last_peri\": \"2024-06-27\", \"jacchia1\": 2e-06, \"Jacchia2\": 72.6637, \"numstats\": 4, \"stations\": \"UK008J;UK009P;UK00BZ;UK00DG;\"},\n{\"_localtime\": \"_20260515_020932\", \"_mjd\": 61175.1, \"_sol\": 53.9147, \"_ID1\": \"_(UNIFIED_14)\", \"_amag\": 0.312983, \"_ra_o\": 239.194, \"_dc_o\": -32.6234, \"_ra_t\": 237.624, \"_dc_t\": -36.1635, \"_elng\": 243.32, \"_elat\": -15.6764, \"_vo\": 30.8471, \"_vi\": 30.8471, \"_vg\": 28.7786, \"_vs\": 37.5437, \"_a\": 2.56554, \"_q\": 0.429151, \"_e\": 0.832725, \"_p\": 4.10932, \"_peri\": 105.471, \"_node\": 233.898, \"_incl\": 17.3175, \"_stream\": \"spo\", \"_mag\": 1.11, \"_dur\": 2.99066, \"_lng1\": -2.77507, \"_lat1\": 51.6186, \"_H1\": 98.4949, \"_lng2\": -2.35585, \"_lat2\": 52.3661, \"_H2\": 93.8793, \"_LD21\": 80.0285, \"_az1r\": 199.447, \"_ev1r\": 3.31821, \"_Nts\": 395.0, \"_Nos\": 14.0, \"_leap\": 96.4557, \"_tme\": 1.0, \"_dt\": 0.000213, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_020932.445_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000172, \"pi\": 339.369, \"Q\": 4.70194, \"true_anom\": 254.547, \"EA\": -43.3022, \"MA\": 349.421, \"Tj\": 2.77079, \"T\": 4.10932, \"last_peri\": \"2022-05-19\", \"jacchia1\": 0.525185, \"Jacchia2\": 2.69632, \"numstats\": 14, \"stations\": \"UK000S;UK0030;UK0031;UK005L;UK007A;UK008K;UK008X;UK009G;UK009K;UK009S;UK00B0;UK00BK;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_021026\", \"_mjd\": 61175.1, \"_sol\": 53.9153, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.696434, \"_ra_o\": 326.662, \"_dc_o\": 34.4761, \"_ra_t\": 326.883, \"_dc_t\": 33.9317, \"_elng\": 344.411, \"_elat\": 43.8248, \"_vo\": 52.6145, \"_vi\": 52.6145, \"_vg\": 51.4294, \"_vs\": 38.4042, \"_a\": 3.16341, \"_q\": 0.864546, \"_e\": 0.726705, \"_p\": 5.62644, \"_peri\": 131.007, \"_node\": 53.9146, \"_incl\": 98.4328, \"_stream\": \"spo\", \"_mag\": 1.66, \"_dur\": 0.204174, \"_lng1\": -4.39615, \"_lat1\": 54.5416, \"_H1\": 101.139, \"_lng2\": -4.52612, \"_lat2\": 54.5364, \"_H2\": 93.7067, \"_LD21\": 11.0249, \"_az1r\": 86.0982, \"_ev1r\": 41.1837, \"_Nts\": 11.0, \"_Nos\": 2.0, \"_leap\": 81.8182, \"_tme\": 1.0, \"_dt\": 5.2e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021026.167_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.4e-05, \"pi\": 184.922, \"Q\": 5.46228, \"true_anom\": 48.9876, \"EA\": 20.5471, \"MA\": 5.93341, \"Tj\": 1.48806, \"T\": 5.62644, \"last_peri\": \"2026-04-11\", \"jacchia1\": 27.3453, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK004V;UK00BZ;\"},\n{\"_localtime\": \"_20260515_021218\", \"_mjd\": 61175.1, \"_sol\": 53.9165, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.162729, \"_ra_o\": 314.989, \"_dc_o\": 6.32421, \"_ra_t\": 314.971, \"_dc_t\": 5.75229, \"_elng\": 319.247, \"_elat\": 21.8351, \"_vo\": 62.884, \"_vi\": 62.884, \"_vg\": 61.8953, \"_vs\": 36.3403, \"_a\": 2.04078, \"_q\": 0.989909, \"_e\": 0.514937, \"_p\": 2.91539, \"_peri\": 200.071, \"_node\": 53.9104, \"_incl\": 140.361, \"_stream\": \"spo\", \"_mag\": 0.3, \"_dur\": 0.16094, \"_lng1\": -4.30447, \"_lat1\": 52.5247, \"_H1\": 96.937, \"_lng2\": -4.41952, \"_lat2\": 52.5599, \"_H2\": 92.5233, \"_LD21\": 9.86297, \"_az1r\": 116.823, \"_ev1r\": 26.6198, \"_Nts\": 9.0, \"_Nos\": 2.0, \"_leap\": 77.7778, \"_tme\": 1.0, \"_dt\": 0.000128, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021218.339_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.1e-05, \"pi\": 253.981, \"Q\": 3.09166, \"true_anom\": 339.921, \"EA\": -11.4412, \"MA\": 354.411, \"Tj\": 1.72337, \"T\": 2.91539, \"last_peri\": \"2023-07-01\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK00BZ;UK00D9;\"},\n{\"_localtime\": \"_20260515_021223\", \"_mjd\": 61175.1, \"_sol\": 53.9166, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -1.56749, \"_ra_o\": 327.562, \"_dc_o\": 8.94761, \"_ra_t\": 327.532, \"_dc_t\": 8.37361, \"_elng\": 332.779, \"_elat\": 20.1733, \"_vo\": 67.2031, \"_vi\": 67.2031, \"_vg\": 66.281, \"_vs\": 40.5649, \"_a\": 8.07886, \"_q\": 0.945766, \"_e\": 0.882933, \"_p\": 22.9629, \"_peri\": 149.625, \"_node\": 53.9094, \"_incl\": 144.458, \"_stream\": \"spo\", \"_mag\": -1.04, \"_dur\": 0.885144, \"_lng1\": -2.65571, \"_lat1\": 55.9624, \"_H1\": 111.319, \"_lng2\": -3.37798, \"_lat2\": 56.0814, \"_H2\": 92.6702, \"_LD21\": 58.0322, \"_az1r\": 106.825, \"_ev1r\": 21.6838, \"_Nts\": 28.0, \"_Nos\": 2.0, \"_leap\": 92.8571, \"_tme\": 1.0, \"_dt\": 3.2e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021223.579_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000175, \"pi\": 203.534, \"Q\": 15.212, \"true_anom\": 30.366, \"EA\": 7.74214, \"MA\": 0.92713, \"Tj\": -0.307774, \"T\": 22.9629, \"last_peri\": \"2026-04-23\", \"jacchia1\": 1e-06, \"Jacchia2\": 23.8337, \"numstats\": 2, \"stations\": \"UK000P;UK004V;\"},\n{\"_localtime\": \"_20260515_021225\", \"_mjd\": 61175.1, \"_sol\": 53.9166, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -1.2483, \"_ra_o\": 259.532, \"_dc_o\": 18.2733, \"_ra_t\": 259.227, \"_dc_t\": 17.688, \"_elng\": 256.431, \"_elat\": 40.6196, \"_vo\": 43.152, \"_vi\": 43.152, \"_vg\": 41.6966, \"_vs\": 43.2543, \"_a\": -7.67277, \"_q\": 0.576099, \"_e\": 1.07508, \"_p\": 0.0, \"_peri\": 260.21, \"_node\": 53.9201, \"_incl\": 57.403, \"_stream\": \"spo\", \"_mag\": 0.68, \"_dur\": 0.207604, \"_lng1\": -5.3205, \"_lat1\": 53.0594, \"_H1\": 90.7166, \"_lng2\": -5.31907, \"_lat2\": 53.1032, \"_H2\": 83.602, \"_LD21\": 8.40921, \"_az1r\": 181.801, \"_ev1r\": 55.2046, \"_Nts\": 21.0, \"_Nos\": 4.0, \"_leap\": 80.9524, \"_tme\": 1.0, \"_dt\": 0.001684, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021225.152_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5.5e-05, \"pi\": 314.13, \"Q\": -15.9216, \"true_anom\": 279.784, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -0.161878, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": -4.8e-05, \"Jacchia2\": 73.3564, \"numstats\": 4, \"stations\": \"UK005L;UK007A;UK00B0;UK00D9;\"},\n{\"_localtime\": \"_20260515_021236\", \"_mjd\": 61175.1, \"_sol\": 53.9167, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -0.8258, \"_ra_o\": 246.876, \"_dc_o\": 5.43985, \"_ra_t\": 246.163, \"_dc_t\": 4.1822, \"_elng\": 243.488, \"_elat\": 25.4527, \"_vo\": 35.0794, \"_vi\": 35.0794, \"_vg\": 33.2754, \"_vs\": 40.7337, \"_a\": 9.23288, \"_q\": 0.47503, \"_e\": 0.94855, \"_p\": 28.0548, \"_peri\": 275.086, \"_node\": 53.9259, \"_incl\": 30.287, \"_stream\": \"spo\", \"_mag\": -0.59, \"_dur\": 0.725275, \"_lng1\": 0.633463, \"_lat1\": 51.5689, \"_H1\": 99.7684, \"_lng2\": 0.751165, \"_lat2\": 51.7194, \"_H2\": 83.285, \"_LD21\": 23.5907, \"_az1r\": 206.475, \"_ev1r\": 41.0467, \"_Nts\": 64.0, \"_Nos\": 5.0, \"_leap\": 92.1875, \"_tme\": 1.0, \"_dt\": 0.000135, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021236.346_BE_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.00014, \"pi\": 329.012, \"Q\": 17.9907, \"true_anom\": 264.904, \"EA\": -20.1448, \"MA\": 358.572, \"Tj\": 1.29201, \"T\": 28.0548, \"last_peri\": \"1998-06-04\", \"jacchia1\": 2.1e-05, \"Jacchia2\": 23.5489, \"numstats\": 5, \"stations\": \"BE000H;UK007R;UK009L;UK00A4;UK00B1;\"},\n{\"_localtime\": \"_20260515_021346\", \"_mjd\": 61175.1, \"_sol\": 53.9175, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 0.434754, \"_ra_o\": 219.015, \"_dc_o\": 9.43101, \"_ra_t\": 214.775, \"_dc_t\": 2.74962, \"_elng\": 211.543, \"_elat\": 15.7007, \"_vo\": 17.3462, \"_vi\": 17.3462, \"_vg\": 13.3202, \"_vs\": 36.4028, \"_a\": 2.06237, \"_q\": 0.871244, \"_e\": 0.577552, \"_p\": 2.96176, \"_peri\": 231.422, \"_node\": 53.9674, \"_incl\": 5.9871, \"_stream\": \"spo\", \"_mag\": 0.82, \"_dur\": 1.00829, \"_lng1\": -4.85827, \"_lat1\": 52.795, \"_H1\": 92.1457, \"_lng2\": -4.71042, \"_lat2\": 52.8615, \"_H2\": 83.2483, \"_LD21\": 15.9314, \"_az1r\": 234.124, \"_ev1r\": 34.8186, \"_Nts\": 102.0, \"_Nos\": 6.0, \"_leap\": 94.1176, \"_tme\": 1.0, \"_dt\": 0.001295, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021346.877_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000237, \"pi\": 285.389, \"Q\": 3.25349, \"true_anom\": 308.528, \"EA\": -28.0126, \"MA\": 347.529, \"Tj\": 3.54564, \"T\": 2.96176, \"last_peri\": \"2023-07-05\", \"jacchia1\": 10.6535, \"Jacchia2\": 5.23113, \"numstats\": 6, \"stations\": \"UK0042;UK004M;UK005L;UK008J;UK00B0;UK00D9;\"},\n{\"_localtime\": \"_20260515_021402\", \"_mjd\": 61175.1, \"_sol\": 53.9177, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.513903, \"_ra_o\": 258.078, \"_dc_o\": -13.8611, \"_ra_t\": 257.611, \"_dc_t\": -15.6699, \"_elng\": 257.98, \"_elat\": 7.25237, \"_vo\": 37.1042, \"_vi\": 37.1042, \"_vg\": 35.4029, \"_vs\": 35.4097, \"_a\": 1.76905, \"_q\": 0.150136, \"_e\": 0.915132, \"_p\": 2.35294, \"_peri\": 321.416, \"_node\": 53.9356, \"_incl\": 16.4185, \"_stream\": \"spo\", \"_mag\": 0.52, \"_dur\": 0.78419, \"_lng1\": -3.91682, \"_lat1\": 55.0458, \"_H1\": 98.4457, \"_lng2\": -3.88725, \"_lat2\": 55.283, \"_H2\": 88.195, \"_LD21\": 28.1694, \"_az1r\": 184.52, \"_ev1r\": 20.9951, \"_Nts\": 39.0, \"_Nos\": 2.0, \"_leap\": 94.8718, \"_tme\": 1.0, \"_dt\": 8.4e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021402.493_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7.1e-05, \"pi\": 15.3517, \"Q\": 3.38796, \"true_anom\": 218.565, \"EA\": -62.0711, \"MA\": 344.255, \"Tj\": 3.39278, \"T\": 2.35294, \"last_peri\": \"2024-02-13\", \"jacchia1\": 0.043925, \"Jacchia2\": 10.9507, \"numstats\": 2, \"stations\": \"UK000P;UK00CS;\"},\n{\"_localtime\": \"_20260515_021631\", \"_mjd\": 61175.1, \"_sol\": 53.9193, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.09352, \"_ra_o\": 316.866, \"_dc_o\": 19.3419, \"_ra_t\": 316.834, \"_dc_t\": 18.9351, \"_elng\": 326.04, \"_elat\": 33.7182, \"_vo\": 65.8073, \"_vi\": 65.8073, \"_vg\": 64.8641, \"_vs\": 43.5821, \"_a\": -6.15689, \"_q\": 1.00801, \"_e\": 1.16372, \"_p\": 0.0, \"_peri\": 174.192, \"_node\": 53.9161, \"_incl\": 124.167, \"_stream\": \"spo\", \"_mag\": 1.7, \"_dur\": 0.261017, \"_lng1\": -1.73825, \"_lat1\": 50.1192, \"_H1\": 102.562, \"_lng2\": -1.91327, \"_lat2\": 50.1548, \"_H2\": 91.8428, \"_LD21\": 15.8305, \"_az1r\": 107.759, \"_ev1r\": 39.0212, \"_Nts\": 12.0, \"_Nos\": 2.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 0.015358, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021631.263_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2e-06, \"pi\": 228.108, \"Q\": -13.3218, \"true_anom\": 5.80212, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -1.57241, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 10.5677, \"Jacchia2\": 0.895264, \"numstats\": 2, \"stations\": \"UK006H;UK00A2;\"},\n{\"_localtime\": \"_20260515_021646\", \"_mjd\": 61175.1, \"_sol\": 53.9195, \"_ID1\": \"_(UNIFIED_9)\", \"_amag\": -0.14825, \"_ra_o\": 299.075, \"_dc_o\": 53.3367, \"_ra_t\": 299.547, \"_dc_t\": 53.1672, \"_elng\": 331.556, \"_elat\": 70.3537, \"_vo\": 41.5657, \"_vi\": 41.5657, \"_vg\": 40.0553, \"_vs\": 41.0836, \"_a\": 13.1526, \"_q\": 1.00787, \"_e\": 0.923371, \"_p\": 47.6998, \"_peri\": 173.7, \"_node\": 53.9219, \"_incl\": 66.8514, \"_stream\": \"PCY\", \"_mag\": 0.47, \"_dur\": 0.282796, \"_lng1\": -3.53289, \"_lat1\": 53.3509, \"_H1\": 100.449, \"_lng2\": -3.57625, \"_lat2\": 53.3443, \"_H2\": 92.7306, \"_LD21\": 10.7443, \"_az1r\": 75.6078, \"_ev1r\": 68.9848, \"_Nts\": 49.0, \"_Nos\": 9.0, \"_leap\": 81.6327, \"_tme\": 1.0, \"_dt\": 1e-06, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021646.611_UK\", \"iau\": 854, \"name\": \"psi Cygnids \", \"mass\": 1.9e-05, \"pi\": 227.622, \"Q\": 25.2973, \"true_anom\": 6.29392, \"EA\": 1.25749, \"MA\": 0.096453, \"Tj\": 0.875534, \"T\": 47.6998, \"last_peri\": \"2026-05-10\", \"jacchia1\": -0.56436, \"Jacchia2\": 21.6347, \"numstats\": 9, \"stations\": \"UK003U;UK0042;UK004M;UK005L;UK008J;UK009P;UK00B0;UK00BZ;UK00D9;\"},\n{\"_localtime\": \"_20260515_021932\", \"_mjd\": 61175.1, \"_sol\": 53.9214, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": -0.288501, \"_ra_o\": 312.23, \"_dc_o\": 33.958, \"_ra_t\": 312.31, \"_dc_t\": 33.5433, \"_elng\": 328.357, \"_elat\": 48.7758, \"_vo\": 54.5063, \"_vi\": 54.5063, \"_vg\": 53.3638, \"_vs\": 40.6418, \"_a\": 8.56632, \"_q\": 1.00454, \"_e\": 0.882734, \"_p\": 25.0722, \"_peri\": 170.676, \"_node\": 53.9208, \"_incl\": 97.9231, \"_stream\": \"spo\", \"_mag\": 0.24, \"_dur\": 0.32608, \"_lng1\": -2.8106, \"_lat1\": 55.1923, \"_H1\": 103.503, \"_lng2\": -2.96151, \"_lat2\": 55.2122, \"_H2\": 91.1513, \"_LD21\": 17.7095, \"_az1r\": 103.199, \"_ev1r\": 51.2364, \"_Nts\": 35.0, \"_Nos\": 5.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.000696, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_021932.965_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.7e-05, \"pi\": 224.597, \"Q\": 16.1281, \"true_anom\": 9.3183, \"EA\": 2.33038, \"MA\": 0.273841, \"Tj\": 0.441333, \"T\": 25.0722, \"last_peri\": \"2026-05-08\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 5, \"stations\": \"UK000P;UK004V;UK0074;UK0088;UK009C;\"},\n{\"_localtime\": \"_20260515_022357\", \"_mjd\": 61175.1, \"_sol\": 53.9243, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 0.665428, \"_ra_o\": 246.405, \"_dc_o\": 7.87501, \"_ra_t\": 245.357, \"_dc_t\": 5.75606, \"_elng\": 242.289, \"_elat\": 26.8541, \"_vo\": 26.6784, \"_vi\": 26.6784, \"_vg\": 24.2549, \"_vs\": 35.4324, \"_a\": 1.77476, \"_q\": 0.555056, \"_e\": 0.68725, \"_p\": 2.36435, \"_peri\": 276.124, \"_node\": 53.9371, \"_incl\": 22.5904, \"_stream\": \"spo\", \"_mag\": 1.3, \"_dur\": 0.561172, \"_lng1\": -1.88832, \"_lat1\": 50.3994, \"_H1\": 92.5219, \"_lng2\": -1.82826, \"_lat2\": 50.471, \"_H2\": 83.5607, \"_LD21\": 13.7509, \"_az1r\": 208.976, \"_ev1r\": 44.1764, \"_Nts\": 59.0, \"_Nos\": 5.0, \"_leap\": 91.5254, \"_tme\": 1.0, \"_dt\": 0.005371, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_022357.123_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.1e-05, \"pi\": 330.061, \"Q\": 2.99447, \"true_anom\": 263.862, \"EA\": -51.2183, \"MA\": 339.477, \"Tj\": 3.71569, \"T\": 2.36435, \"last_peri\": \"2024-02-20\", \"jacchia1\": 0.687886, \"Jacchia2\": 13.2634, \"numstats\": 5, \"stations\": \"UK002Q;UK007B;UK00A2;UK00A6;UK00AP;\"},\n{\"_localtime\": \"_20260515_022423\", \"_mjd\": 61175.1, \"_sol\": 53.9246, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.9882, \"_ra_o\": 223.131, \"_dc_o\": -0.043987, \"_ra_t\": 220.154, \"_dc_t\": -4.79791, \"_elng\": 219.275, \"_elat\": 10.3027, \"_vo\": 20.9624, \"_vi\": 20.9624, \"_vg\": 17.779, \"_vs\": 37.8553, \"_a\": 2.75262, \"_q\": 0.777344, \"_e\": 0.717599, \"_p\": 4.56688, \"_peri\": 243.38, \"_node\": 53.9803, \"_incl\": 5.35555, \"_stream\": \"spo\", \"_mag\": 1.51, \"_dur\": 1.09563, \"_lng1\": -5.3939, \"_lat1\": 50.4191, \"_H1\": 98.1934, \"_lng2\": -5.2049, \"_lat2\": 50.5306, \"_H2\": 87.8238, \"_LD21\": 18.2168, \"_az1r\": 227.822, \"_ev1r\": 28.9843, \"_Nts\": 35.0, \"_Nos\": 2.0, \"_leap\": 94.2857, \"_tme\": 1.0, \"_dt\": 0.000871, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_022423.359_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.00014, \"pi\": 297.361, \"Q\": 4.7279, \"true_anom\": 296.564, \"EA\": -28.138, \"MA\": 351.252, \"Tj\": 2.89926, \"T\": 4.56688, \"last_peri\": \"2021-11-29\", \"jacchia1\": 0.025486, \"Jacchia2\": 9.80018, \"numstats\": 2, \"stations\": \"UK00A1;UK00C6;\"},\n{\"_localtime\": \"_20260515_022511\", \"_mjd\": 61175.1, \"_sol\": 53.9252, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.01629, \"_ra_o\": 293.701, \"_dc_o\": 35.3675, \"_ra_t\": 293.677, \"_dc_t\": 35.0967, \"_elng\": 305.608, \"_elat\": 55.6453, \"_vo\": 54.141, \"_vi\": 54.141, \"_vg\": 52.9902, \"_vs\": 44.6795, \"_a\": -3.68186, \"_q\": 0.973866, \"_e\": 1.2645, \"_p\": 0.0, \"_peri\": 200.835, \"_node\": 53.9256, \"_incl\": 88.5754, \"_stream\": \"spo\", \"_mag\": 2.15, \"_dur\": 0.121839, \"_lng1\": -2.30069, \"_lat1\": 52.318, \"_H1\": 100.988, \"_lng2\": -2.33239, \"_lat2\": 52.3295, \"_H2\": 95.702, \"_LD21\": 5.88156, \"_az1r\": 121.055, \"_ev1r\": 64.5232, \"_Nts\": 8.0, \"_Nos\": 2.0, \"_leap\": 75.0, \"_tme\": 1.0, \"_dt\": 0.000116, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_022511.620_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 254.76, \"Q\": -8.33759, \"true_anom\": 339.16, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -1.38112, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK00BA;UK00DG;\"},\n{\"_localtime\": \"_20260515_022515\", \"_mjd\": 61175.1, \"_sol\": 53.9252, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.01447, \"_ra_o\": 29.4714, \"_dc_o\": 43.4517, \"_ra_t\": 31.4086, \"_dc_t\": 40.4132, \"_elng\": 43.7426, \"_elat\": 25.9116, \"_vo\": 28.5881, \"_vi\": 28.5881, \"_vg\": 26.3419, \"_vs\": 36.5186, \"_a\": 2.10367, \"_q\": 0.505204, \"_e\": 0.759847, \"_p\": 3.05118, \"_peri\": 80.8695, \"_node\": 53.9369, \"_incl\": 24.4791, \"_stream\": \"spo\", \"_mag\": 2.68, \"_dur\": 0.720008, \"_lng1\": -3.20704, \"_lat1\": 53.4723, \"_H1\": 96.0422, \"_lng2\": -3.38553, \"_lat2\": 53.3451, \"_H2\": 89.911, \"_LD21\": 18.7008, \"_az1r\": 39.6091, \"_ev1r\": 18.3107, \"_Nts\": 35.0, \"_Nos\": 2.0, \"_leap\": 94.2857, \"_tme\": 1.0, \"_dt\": 0.010026, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_022515.603_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.1e-05, \"pi\": 134.806, \"Q\": 3.70215, \"true_anom\": 99.1179, \"EA\": 46.8661, \"MA\": 15.0954, \"Tj\": 3.22624, \"T\": 3.05118, \"last_peri\": \"2026-03-29\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK0042;UK00D9;\"},\n{\"_localtime\": \"_20260515_022755\", \"_mjd\": 61175.1, \"_sol\": 53.927, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.212962, \"_ra_o\": 288.388, \"_dc_o\": 14.2313, \"_ra_t\": 288.26, \"_dc_t\": 13.7659, \"_elng\": 292.042, \"_elat\": 35.8169, \"_vo\": 54.2506, \"_vi\": 54.2506, \"_vg\": 53.1021, \"_vs\": 38.9371, \"_a\": 3.7085, \"_q\": 0.640172, \"_e\": 0.827377, \"_p\": 7.14164, \"_peri\": 259.032, \"_node\": 53.9261, \"_incl\": 102.848, \"_stream\": \"spo\", \"_mag\": 0.89, \"_dur\": 0.2023, \"_lng1\": -3.94751, \"_lat1\": 50.5565, \"_H1\": 100.589, \"_lng2\": -4.00574, \"_lat2\": 50.6091, \"_H2\": 92.1691, \"_LD21\": 11.0923, \"_az1r\": 145.266, \"_ev1r\": 49.3523, \"_Nts\": 19.0, \"_Nos\": 4.0, \"_leap\": 78.9474, \"_tme\": 1.0, \"_dt\": 0.001039, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_022755.776_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 7e-06, \"pi\": 312.958, \"Q\": 6.77682, \"true_anom\": 280.963, \"EA\": -28.4527, \"MA\": 354.133, \"Tj\": 1.19248, \"T\": 7.14164, \"last_peri\": \"2019-05-06\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"UK0051;UK00AP;UK00AU;UK00DH;\"},\n{\"_localtime\": \"_20260515_023115\", \"_mjd\": 61175.1, \"_sol\": 53.9292, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -1.19081, \"_ra_o\": 355.731, \"_dc_o\": 50.634, \"_ra_t\": 356.559, \"_dc_t\": 49.8845, \"_elng\": 22.6735, \"_elat\": 45.8102, \"_vo\": 44.7021, \"_vi\": 44.7021, \"_vg\": 43.3001, \"_vs\": 42.8978, \"_a\": -10.4471, \"_q\": 0.645162, \"_e\": 1.06175, \"_p\": 0.0, \"_peri\": 107.307, \"_node\": 53.9318, \"_incl\": 66.0132, \"_stream\": \"spo\", \"_mag\": 1.23, \"_dur\": 0.401712, \"_lng1\": -8.04427, \"_lat1\": 50.3755, \"_H1\": 95.5331, \"_lng2\": -8.17981, \"_lat2\": 50.305, \"_H2\": 86.7808, \"_LD21\": 17.4458, \"_az1r\": 50.6323, \"_ev1r\": 34.9932, \"_Nts\": 27.0, \"_Nos\": 3.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.001659, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_023115.797_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000112, \"pi\": 161.238, \"Q\": -21.5393, \"true_anom\": 72.6876, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -0.087109, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.28096, \"Jacchia2\": 21.6366, \"numstats\": 3, \"stations\": \"UK00A1;UK00AU;UK00C6;\"},\n{\"_localtime\": \"_20260515_023304\", \"_mjd\": 61175.1, \"_sol\": 53.9304, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 1.41185, \"_ra_o\": 335.574, \"_dc_o\": 52.4274, \"_ra_t\": 336.51, \"_dc_t\": 51.9337, \"_elng\": 8.81275, \"_elat\": 55.0938, \"_vo\": 40.1923, \"_vi\": 40.1923, \"_vg\": 38.6271, \"_vs\": 38.0728, \"_a\": 2.9013, \"_q\": 0.797343, \"_e\": 0.725178, \"_p\": 4.94186, \"_peri\": 119.838, \"_node\": 53.9331, \"_incl\": 66.4399, \"_stream\": \"spo\", \"_mag\": 1.56, \"_dur\": 0.241132, \"_lng1\": -1.77767, \"_lat1\": 51.346, \"_H1\": 96.7124, \"_lng2\": -1.85162, \"_lat2\": 51.3212, \"_H2\": 89.5774, \"_LD21\": 9.25037, \"_az1r\": 61.4855, \"_ev1r\": 50.571, \"_Nts\": 27.0, \"_Nos\": 5.0, \"_leap\": 81.4815, \"_tme\": 1.0, \"_dt\": 0.000281, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_023304.754_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4e-06, \"pi\": 173.771, \"Q\": 5.00527, \"true_anom\": 60.1567, \"EA\": 26.0321, \"MA\": 7.79702, \"Tj\": 2.20476, \"T\": 4.94186, \"last_peri\": \"2026-04-06\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 5, \"stations\": \"UK000S;UK007B;UK008X;UK009G;UK00A5;\"},\n{\"_localtime\": \"_20260515_023418\", \"_mjd\": 61175.1, \"_sol\": 53.9313, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.258398, \"_ra_o\": 314.438, \"_dc_o\": 29.4013, \"_ra_t\": 314.503, \"_dc_t\": 28.9622, \"_elng\": 328.221, \"_elat\": 43.8272, \"_vo\": 55.5092, \"_vi\": 55.5092, \"_vg\": 54.3856, \"_vs\": 39.0186, \"_a\": 3.80972, \"_q\": 1.00221, \"_e\": 0.736932, \"_p\": 7.43601, \"_peri\": 168.515, \"_node\": 53.9302, \"_incl\": 104.371, \"_stream\": \"MUC\", \"_mag\": 1.01, \"_dur\": 0.28374, \"_lng1\": -5.08843, \"_lat1\": 53.2207, \"_H1\": 89.8136, \"_lng2\": -5.21174, \"_lat2\": 53.2401, \"_H2\": 80.365, \"_LD21\": 15.2498, \"_az1r\": 104.879, \"_ev1r\": 47.8779, \"_Nts\": 18.0, \"_Nos\": 3.0, \"_leap\": 83.3333, \"_tme\": 1.0, \"_dt\": 0.00016, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_023418.994_UK\", \"iau\": 665, \"name\": \"May upsilon Cygnids \", \"mass\": 1.5e-05, \"pi\": 222.445, \"Q\": 6.61722, \"true_anom\": 11.4794, \"EA\": 4.48019, \"MA\": 1.18196, \"Tj\": 1.07895, \"T\": 7.43601, \"last_peri\": \"2026-05-06\", \"jacchia1\": 3.0728, \"Jacchia2\": 18.9896, \"numstats\": 3, \"stations\": \"UK005L;UK008J;UK00D9;\"},\n{\"_localtime\": \"_20260515_023429\", \"_mjd\": 61175.1, \"_sol\": 53.9314, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.27088, \"_ra_o\": 175.366, \"_dc_o\": 62.4443, \"_ra_t\": 158.781, \"_dc_t\": 55.8457, \"_elng\": 135.429, \"_elat\": 42.7211, \"_vo\": 14.7915, \"_vi\": 14.7915, \"_vg\": 9.75273, \"_vs\": 37.1837, \"_a\": 2.38039, \"_q\": 1.00873, \"_e\": 0.576234, \"_p\": 3.67258, \"_peri\": 173.906, \"_node\": 53.9605, \"_incl\": 10.2574, \"_stream\": \"spo\", \"_mag\": 1.51, \"_dur\": 0.281381, \"_lng1\": -1.83377, \"_lat1\": 50.3208, \"_H1\": 80.3342, \"_lng2\": -1.81188, \"_lat2\": 50.3019, \"_H2\": 77.9711, \"_LD21\": 3.85854, \"_az1r\": 322.097, \"_ev1r\": 41.3266, \"_Nts\": 14.0, \"_Nos\": 2.0, \"_leap\": 85.7143, \"_tme\": 1.0, \"_dt\": 0.001029, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_023429.251_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.6e-05, \"pi\": 227.866, \"Q\": 3.75205, \"true_anom\": 6.06512, \"EA\": 3.14694, \"MA\": 1.33448, \"Tj\": 3.27412, \"T\": 3.67258, \"last_peri\": \"2026-05-10\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK000H;UK006H;\"},\n{\"_localtime\": \"_20260515_023509\", \"_mjd\": 61175.1, \"_sol\": 53.9318, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -3.61265, \"_ra_o\": 248.87, \"_dc_o\": 2.615, \"_ra_t\": 248.411, \"_dc_t\": 2.20988, \"_elng\": 246.289, \"_elat\": 23.8881, \"_vo\": 57.2032, \"_vi\": 57.2032, \"_vg\": 56.1166, \"_vs\": 57.7294, \"_a\": -0.562408, \"_q\": 0.37152, \"_e\": 1.66059, \"_p\": 0.0, \"_peri\": 270.756, \"_node\": 53.9364, \"_incl\": 50.8524, \"_stream\": \"spo\", \"_mag\": -0.09, \"_dur\": 0.84244, \"_lng1\": -6.16827, \"_lat1\": 47.404, \"_H1\": 104.566, \"_lng2\": -6.02162, \"_lat2\": 47.6428, \"_H2\": 77.438, \"_LD21\": 46.1234, \"_az1r\": 202.936, \"_ev1r\": 42.993, \"_Nts\": 37.0, \"_Nos\": 2.0, \"_leap\": 94.5946, \"_tme\": 1.0, \"_dt\": 0.000211, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_023509.220_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000801, \"pi\": 324.692, \"Q\": -1.49634, \"true_anom\": 269.238, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -8.70328, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.018422, \"Jacchia2\": 14.0269, \"numstats\": 2, \"stations\": \"UK00AU;UK00B5;\"},\n{\"_localtime\": \"_20260515_023824\", \"_mjd\": 61175.1, \"_sol\": 53.934, \"_ID1\": \"_(UNIFIED_6)\", \"_amag\": 1.19436, \"_ra_o\": 104.345, \"_dc_o\": 55.5385, \"_ra_t\": 100.213, \"_dc_t\": 40.0432, \"_elng\": 98.1558, \"_elat\": 16.8942, \"_vo\": 15.2924, \"_vi\": 15.2924, \"_vg\": 10.5063, \"_vs\": 37.3916, \"_a\": 2.48374, \"_q\": 0.955973, \"_e\": 0.615107, \"_p\": 3.91434, \"_peri\": 148.985, \"_node\": 53.9965, \"_incl\": 4.7839, \"_stream\": \"spo\", \"_mag\": 1.61, \"_dur\": 2.1488, \"_lng1\": -3.88887, \"_lat1\": 50.5572, \"_H1\": 90.745, \"_lng2\": -3.8305, \"_lat2\": 50.2931, \"_H2\": 81.6349, \"_LD21\": 31.2892, \"_az1r\": 350.742, \"_ev1r\": 16.9057, \"_Nts\": 200.0, \"_Nos\": 6.0, \"_leap\": 97.0, \"_tme\": 1.0, \"_dt\": 0.00037, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_023824.181_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 0.000319, \"pi\": 202.981, \"Q\": 4.0115, \"true_anom\": 30.9529, \"EA\": 15.3955, \"MA\": 6.03916, \"Tj\": 3.18091, \"T\": 3.91434, \"last_peri\": \"2026-04-21\", \"jacchia1\": 0.042417, \"Jacchia2\": 4.48235, \"numstats\": 6, \"stations\": \"UK000H;UK001K;UK003C;UK00AP;UK00AU;UK00DH;\"},\n{\"_localtime\": \"_20260515_024010\", \"_mjd\": 61175.1, \"_sol\": 53.9352, \"_ID1\": \"_(UNIFIED_11)\", \"_amag\": -0.089626, \"_ra_o\": 285.671, \"_dc_o\": 21.6587, \"_ra_t\": 285.514, \"_dc_t\": 21.271, \"_elng\": 290.143, \"_elat\": 43.6299, \"_vo\": 53.1097, \"_vi\": 53.1097, \"_vg\": 51.9366, \"_vs\": 41.3373, \"_a\": 19.0616, \"_q\": 0.756229, \"_e\": 0.960327, \"_p\": 83.2226, \"_peri\": 240.923, \"_node\": 53.9353, \"_incl\": 92.8208, \"_stream\": \"OTH\", \"_mag\": 0.15, \"_dur\": 0.346159, \"_lng1\": -2.97873, \"_lat1\": 51.4383, \"_H1\": 103.84, \"_lng2\": -3.045, \"_lat2\": 51.5135, \"_H2\": 88.5395, \"_LD21\": 17.3688, \"_az1r\": 151.735, \"_ev1r\": 57.7983, \"_Nts\": 84.0, \"_Nos\": 11.0, \"_leap\": 86.9048, \"_tme\": 1.0, \"_dt\": 0.001364, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_024010.902_UK\", \"iau\": 661, \"name\": \"110 Herculids \", \"mass\": 2.1e-05, \"pi\": 294.858, \"Q\": 37.3671, \"true_anom\": 299.072, \"EA\": -9.56647, \"MA\": 359.578, \"Tj\": 0.220492, \"T\": 83.2226, \"last_peri\": \"1943-03-30\", \"jacchia1\": 0.009726, \"Jacchia2\": 30.8097, \"numstats\": 11, \"stations\": \"UK003Z;UK007A;UK007P;UK008X;UK009G;UK009K;UK009S;UK00A5;UK00B0;UK00BA;UK00DG;\"},\n{\"_localtime\": \"_20260515_024104\", \"_mjd\": 61175.1, \"_sol\": 53.9358, \"_ID1\": \"_(UNIFIED_7)\", \"_amag\": 0.819805, \"_ra_o\": 307.022, \"_dc_o\": 71.215, \"_ra_t\": 310.934, \"_dc_t\": 71.7575, \"_elng\": 38.0936, \"_elat\": 74.8939, \"_vo\": 25.0875, \"_vi\": 25.0875, \"_vg\": 22.4916, \"_vs\": 35.8437, \"_a\": 1.88534, \"_q\": 0.966961, \"_e\": 0.487117, \"_p\": 2.58873, \"_peri\": 150.174, \"_node\": 53.9428, \"_incl\": 37.918, \"_stream\": \"spo\", \"_mag\": 1.02, \"_dur\": 0.361132, \"_lng1\": -3.39039, \"_lat1\": 52.4199, \"_H1\": 89.3228, \"_lng2\": -3.41527, \"_lat2\": 52.3922, \"_H2\": 81.7832, \"_LD21\": 8.96034, \"_az1r\": 27.5285, \"_ev1r\": 65.0296, \"_Nts\": 46.0, \"_Nos\": 7.0, \"_leap\": 84.7826, \"_tme\": 1.0, \"_dt\": 0.00112, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_024104.440_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 2.3e-05, \"pi\": 204.117, \"Q\": 2.80373, \"true_anom\": 29.8177, \"EA\": 17.7733, \"MA\": 9.2538, \"Tj\": 3.58974, \"T\": 2.58873, \"last_peri\": \"2026-04-20\", \"jacchia1\": 0.01856, \"Jacchia2\": 29.4659, \"numstats\": 7, \"stations\": \"UK0030;UK005L;UK005S;UK008J;UK00B0;UK00BA;UK00BZ;\"},\n{\"_localtime\": \"_20260515_024331\", \"_mjd\": 61175.1, \"_sol\": 53.9374, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 1.35459, \"_ra_o\": 246.459, \"_dc_o\": -15.8029, \"_ra_t\": 245.191, \"_dc_t\": -18.8105, \"_elng\": 246.572, \"_elat\": 2.63226, \"_vo\": 28.6945, \"_vi\": 28.6945, \"_vg\": 26.4563, \"_vs\": 34.7644, \"_a\": 1.62257, \"_q\": 0.365283, \"_e\": 0.774874, \"_p\": 2.06684, \"_peri\": 297.465, \"_node\": 54.0394, \"_incl\": 2.92909, \"_stream\": \"NOP\", \"_mag\": 2.18, \"_dur\": 0.479856, \"_lng1\": -4.80566, \"_lat1\": 50.2611, \"_H1\": 92.4265, \"_lng2\": -4.73676, \"_lat2\": 50.3669, \"_H2\": 87.4444, \"_LD21\": 14.0101, \"_az1r\": 203.2, \"_ev1r\": 21.0414, \"_Nts\": 16.0, \"_Nos\": 2.0, \"_leap\": 87.5, \"_tme\": 1.0, \"_dt\": 0.000152, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_024331.016_UK\", \"iau\": 149, \"name\": \"Northern May Ophiuchids \", \"mass\": 2.1e-05, \"pi\": 351.504, \"Q\": 2.87986, \"true_anom\": 242.434, \"EA\": -60.8837, \"MA\": 337.903, \"Tj\": 3.91241, \"T\": 2.06684, \"last_peri\": \"2024-06-05\", \"jacchia1\": -4.86327, \"Jacchia2\": 5.17816, \"numstats\": 2, \"stations\": \"UK00A1;UK00AU;\"},\n{\"_localtime\": \"_20260515_024401\", \"_mjd\": 61175.1, \"_sol\": 53.9378, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.595059, \"_ra_o\": 312.479, \"_dc_o\": 14.6268, \"_ra_t\": 312.412, \"_dc_t\": 14.2032, \"_elng\": 319.466, \"_elat\": 30.651, \"_vo\": 63.2662, \"_vi\": 63.2662, \"_vg\": 62.2851, \"_vs\": 39.9502, \"_a\": 5.56929, \"_q\": 1.00064, \"_e\": 0.820329, \"_p\": 13.1432, \"_peri\": 192.116, \"_node\": 53.9343, \"_incl\": 127.019, \"_stream\": \"spo\", \"_mag\": 1.08, \"_dur\": 0.161613, \"_lng1\": -2.99225, \"_lat1\": 48.9718, \"_H1\": 105.332, \"_lng2\": -3.08269, \"_lat2\": 49.0066, \"_H2\": 98.431, \"_LD21\": 11.1059, \"_az1r\": 120.598, \"_ev1r\": 41.712, \"_Nts\": 10.0, \"_Nos\": 2.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 6.9e-05, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_024401.875_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.6e-05, \"pi\": 246.05, \"Q\": 10.1379, \"true_anom\": 347.878, \"EA\": -3.82133, \"MA\": 359.311, \"Tj\": 0.222062, \"T\": 13.1432, \"last_peri\": \"2013-04-01\", \"jacchia1\": 8.05861, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK003C;UK00A2;\"},\n{\"_localtime\": \"_20260515_024402\", \"_mjd\": 61175.1, \"_sol\": 53.9378, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.379711, \"_ra_o\": 318.594, \"_dc_o\": 6.73416, \"_ra_t\": 318.535, \"_dc_t\": 6.22307, \"_elng\": 323.025, \"_elat\": 21.1789, \"_vo\": 66.0114, \"_vi\": 66.0114, \"_vg\": 65.0718, \"_vs\": 39.0644, \"_a\": 3.86926, \"_q\": 1.01052, \"_e\": 0.738833, \"_p\": 7.61102, \"_peri\": 182.026, \"_node\": 53.9312, \"_incl\": 142.996, \"_stream\": \"spo\", \"_mag\": 0.73, \"_dur\": 0.243616, \"_lng1\": -5.60704, \"_lat1\": 51.3335, \"_H1\": 107.487, \"_lng2\": -5.76907, \"_lat2\": 51.389, \"_H2\": 100.24, \"_LD21\": 14.823, \"_az1r\": 118.875, \"_ev1r\": 29.1803, \"_Nts\": 13.0, \"_Nos\": 2.0, \"_leap\": 84.6154, \"_tme\": 1.0, \"_dt\": 0.000159, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_024402.166_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.4e-05, \"pi\": 235.958, \"Q\": 6.728, \"true_anom\": 357.965, \"EA\": -0.788781, \"MA\": 359.794, \"Tj\": 0.41696, \"T\": 7.61102, \"last_peri\": \"2018-10-05\", \"jacchia1\": 1e-05, \"Jacchia2\": 73.9518, \"numstats\": 2, \"stations\": \"UK00BB;UK00C6;\"},\n{\"_localtime\": \"_20260515_024453\", \"_mjd\": 61175.1, \"_sol\": 53.9384, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": 0.271486, \"_ra_o\": 273.592, \"_dc_o\": 31.2354, \"_ra_t\": 273.397, \"_dc_t\": 30.8225, \"_elng\": 274.991, \"_elat\": 54.2014, \"_vo\": 40.5028, \"_vi\": 40.5028, \"_vg\": 38.9511, \"_vs\": 38.6133, \"_a\": 3.35624, \"_q\": 0.788604, \"_e\": 0.765034, \"_p\": 6.14866, \"_peri\": 240.466, \"_node\": 53.9411, \"_incl\": 65.3264, \"_stream\": \"spo\", \"_mag\": 0.77, \"_dur\": 0.204043, \"_lng1\": -4.28078, \"_lat1\": 51.8223, \"_H1\": 100.854, \"_lng2\": -4.28881, \"_lat2\": 51.8498, \"_H2\": 92.5702, \"_LD21\": 8.91646, \"_az1r\": 170.807, \"_ev1r\": 69.2241, \"_Nts\": 20.0, \"_Nos\": 4.0, \"_leap\": 80.0, \"_tme\": 1.0, \"_dt\": 0.001242, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_024453.078_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.1e-05, \"pi\": 294.407, \"Q\": 5.92388, \"true_anom\": 299.528, \"EA\": -24.0113, \"MA\": 353.825, \"Tj\": 1.9824, \"T\": 6.14866, \"last_peri\": \"2020-04-28\", \"jacchia1\": 16.9545, \"Jacchia2\": 0.0, \"numstats\": 4, \"stations\": \"UK005L;UK007A;UK009S;UK00B0;\"},\n{\"_localtime\": \"_20260515_025124\", \"_mjd\": 61175.1, \"_sol\": 53.9427, \"_ID1\": \"_(UNIFIED_5)\", \"_amag\": 1.33918, \"_ra_o\": 301.548, \"_dc_o\": 26.2705, \"_ra_t\": 301.503, \"_dc_t\": 25.8665, \"_elng\": 311.559, \"_elat\": 44.8644, \"_vo\": 52.5914, \"_vi\": 52.5914, \"_vg\": 51.4061, \"_vs\": 37.5187, \"_a\": 2.55175, \"_q\": 0.958909, \"_e\": 0.624216, \"_p\": 4.07623, \"_peri\": 209.948, \"_node\": 53.9423, \"_incl\": 99.5673, \"_stream\": \"spo\", \"_mag\": 1.71, \"_dur\": 0.173701, \"_lng1\": -2.42045, \"_lat1\": 51.7393, \"_H1\": 102.562, \"_lng2\": -2.47642, \"_lat2\": 51.7672, \"_H2\": 94.9346, \"_LD21\": 8.55925, \"_az1r\": 129.186, \"_ev1r\": 56.7863, \"_Nts\": 24.0, \"_Nos\": 5.0, \"_leap\": 79.1667, \"_tme\": 1.0, \"_dt\": 0.000711, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_025124.580_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4e-06, \"pi\": 263.89, \"Q\": 4.1446, \"true_anom\": 330.047, \"EA\": -14.6643, \"MA\": 354.39, \"Tj\": 1.85764, \"T\": 4.07623, \"last_peri\": \"2022-05-10\", \"jacchia1\": 0.095977, \"Jacchia2\": 45.088, \"numstats\": 5, \"stations\": \"UK009G;UK00B0;UK00BA;UK00DG;UK00DH;\"},\n{\"_localtime\": \"_20260515_025141\", \"_mjd\": 61175.1, \"_sol\": 53.9429, \"_ID1\": \"_(UNIFIED_4)\", \"_amag\": -0.013795, \"_ra_o\": 343.421, \"_dc_o\": 2.80971, \"_ra_t\": 343.465, \"_dc_t\": 2.20449, \"_elng\": 345.618, \"_elat\": 8.53491, \"_vo\": 67.387, \"_vi\": 67.387, \"_vg\": 66.468, \"_vs\": 41.2838, \"_a\": 17.4118, \"_q\": 0.64328, \"_e\": 0.963055, \"_p\": 72.6553, \"_peri\": 104.986, \"_node\": 53.9268, \"_incl\": 162.664, \"_stream\": \"ETA\", \"_mag\": 1.27, \"_dur\": 0.684501, \"_lng1\": -1.90096, \"_lat1\": 49.5164, \"_H1\": 114.49, \"_lng2\": -2.49126, \"_lat2\": 49.6102, \"_H2\": 102.475, \"_LD21\": 45.2173, \"_az1r\": 104.021, \"_ev1r\": 15.3031, \"_Nts\": 55.0, \"_Nos\": 4.0, \"_leap\": 92.7273, \"_tme\": 1.0, \"_dt\": 0.003345, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_025141.067_UK\", \"iau\": 31, \"name\": \"eta Aquariids \", \"mass\": 2.3e-05, \"pi\": 158.912, \"Q\": 34.1804, \"true_anom\": 74.9969, \"EA\": 12.0178, \"MA\": 0.528675, \"Tj\": -0.641538, \"T\": 72.6553, \"last_peri\": \"2026-04-06\", \"jacchia1\": 5.45039, \"Jacchia2\": 6.17267, \"numstats\": 4, \"stations\": \"UK006H;UK008Q;UK00A2;UK00A6;\"},\n{\"_localtime\": \"_20260515_025344\", \"_mjd\": 61175.1, \"_sol\": 53.9443, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 2.39771, \"_ra_o\": 250.531, \"_dc_o\": 52.1758, \"_ra_t\": 247.091, \"_dc_t\": 51.9678, \"_elng\": 220.851, \"_elat\": 71.5145, \"_vo\": 16.9628, \"_vi\": 16.9628, \"_vg\": 12.8099, \"_vs\": 32.9286, \"_a\": 1.32207, \"_q\": 0.98092, \"_e\": 0.258042, \"_p\": 1.52013, \"_peri\": 211.126, \"_node\": 53.9578, \"_incl\": 21.7851, \"_stream\": \"spo\", \"_mag\": 2.54, \"_dur\": 0.175675, \"_lng1\": -2.27081, \"_lat1\": 51.5684, \"_H1\": 82.2378, \"_lng2\": -2.26077, \"_lat2\": 51.567, \"_H2\": 79.2429, \"_LD21\": 3.08186, \"_az1r\": 281.653, \"_ev1r\": 75.5474, \"_Nts\": 9.0, \"_Nos\": 2.0, \"_leap\": 77.7778, \"_tme\": 1.0, \"_dt\": 0.00476, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_025344.361_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 6e-06, \"pi\": 265.084, \"Q\": 1.66322, \"true_anom\": 328.86, \"EA\": -24.1567, \"MA\": 341.894, \"Tj\": 4.8408, \"T\": 1.52013, \"last_peri\": \"2024-12-03\", \"jacchia1\": 0.0, \"Jacchia2\": 0.0, \"numstats\": 2, \"stations\": \"UK0006;UK00B0;\"},\n{\"_localtime\": \"_20260515_025419\", \"_mjd\": 61175.1, \"_sol\": 53.9447, \"_ID1\": \"_(UNIFIED_3)\", \"_amag\": -0.803948, \"_ra_o\": 286.532, \"_dc_o\": 1.78078, \"_ra_t\": 286.261, \"_dc_t\": 1.34273, \"_elng\": 287.813, \"_elat\": 23.7805, \"_vo\": 63.1032, \"_vi\": 63.1032, \"_vg\": 62.1194, \"_vs\": 44.6741, \"_a\": -3.68922, \"_q\": 0.484907, \"_e\": 1.13144, \"_p\": 0.0, \"_peri\": 268.854, \"_node\": 53.9418, \"_incl\": 123.275, \"_stream\": \"spo\", \"_mag\": 1.21, \"_dur\": 0.281173, \"_lng1\": -0.261154, \"_lat1\": 49.2224, \"_H1\": 104.396, \"_lng2\": -0.3057, \"_lat2\": 49.3366, \"_H2\": 92.5573, \"_LD21\": 19.2223, \"_az1r\": 166.072, \"_ev1r\": 41.7385, \"_Nts\": 22.0, \"_Nos\": 3.0, \"_leap\": 86.3636, \"_tme\": 1.0, \"_dt\": 0.000226, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_025419.710_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 1.8e-05, \"pi\": 322.796, \"Q\": -7.86334, \"true_anom\": 271.14, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -1.89968, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 0.000599, \"Jacchia2\": 50.6909, \"numstats\": 3, \"stations\": \"UK006H;UK00A2;UK00A6;\"},\n{\"_localtime\": \"_20260515_025627\", \"_mjd\": 61175.1, \"_sol\": 53.9461, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": -0.266062, \"_ra_o\": 260.843, \"_dc_o\": -19.7247, \"_ra_t\": 260.139, \"_dc_t\": -21.3741, \"_elng\": 260.819, \"_elat\": 1.74989, \"_vo\": 39.9422, \"_vi\": 39.9422, \"_vg\": 38.3657, \"_vs\": 35.9599, \"_a\": 1.91938, \"_q\": 0.08769, \"_e\": 0.954313, \"_p\": 2.65914, \"_peri\": 330.429, \"_node\": 54.0008, \"_incl\": 5.49532, \"_stream\": \"spo\", \"_mag\": -0.08, \"_dur\": 0.436968, \"_lng1\": -0.952404, \"_lat1\": 51.9798, \"_H1\": 92.3591, \"_lng2\": -0.893951, \"_lat2\": 52.1188, \"_H2\": 87.3908, \"_LD21\": 16.7144, \"_az1r\": 194.941, \"_ev1r\": 17.0796, \"_Nts\": 18.0, \"_Nos\": 2.0, \"_leap\": 88.8889, \"_tme\": 1.0, \"_dt\": 0.001611, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_025627.113_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 4.5e-05, \"pi\": 24.4298, \"Q\": 3.75107, \"true_anom\": 209.517, \"EA\": -60.2619, \"MA\": 347.215, \"Tj\": 3.0727, \"T\": 2.65914, \"last_peri\": \"2023-10-21\", \"jacchia1\": 0.438056, \"Jacchia2\": 16.0077, \"numstats\": 2, \"stations\": \"UK000S;UK00B2;\"},\n{\"_localtime\": \"_20260515_025945\", \"_mjd\": 61175.1, \"_sol\": 53.9483, \"_ID1\": \"_(UNIFIED_2)\", \"_amag\": 0.84453, \"_ra_o\": 342.205, \"_dc_o\": 3.45456, \"_ra_t\": 342.173, \"_dc_t\": 2.91781, \"_elng\": 344.69, \"_elat\": 9.68972, \"_vo\": 71.7963, \"_vi\": 71.7963, \"_vg\": 70.9343, \"_vs\": 45.4373, \"_a\": -2.86872, \"_q\": 0.731596, \"_e\": 1.25503, \"_p\": 0.0, \"_peri\": 120.228, \"_node\": 53.9332, \"_incl\": 161.609, \"_stream\": \"spo\", \"_mag\": 1.45, \"_dur\": 0.399694, \"_lng1\": -0.633211, \"_lat1\": 50.6633, \"_H1\": 113.842, \"_lng2\": -0.981748, \"_lat2\": 50.7327, \"_H2\": 105.267, \"_LD21\": 27.8467, \"_az1r\": 107.633, \"_ev1r\": 18.2793, \"_Nts\": 20.0, \"_Nos\": 2.0, \"_leap\": 90.0, \"_tme\": 1.0, \"_dt\": 0.001222, \"dtstamp\": 1778810000.0, \"orbname\": \"20260515_025945.087_UK\", \"iau\": -1, \"name\": \"Sporadic\", \"mass\": 5e-06, \"pi\": 174.161, \"Q\": -6.46904, \"true_anom\": 59.7553, \"EA\": 0.0, \"MA\": 0.0, \"Tj\": -2.88269, \"T\": 0.0, \"last_peri\": \"9999-99-99\", \"jacchia1\": 37.0359, \"Jacchia2\": 8.46015, \"numstats\": 2, \"stations\": \"UK0001;UK00A6;\"}]"} \ No newline at end of file diff --git a/archive/lambdas/matchDataApi/testDetail.json b/archive/lambdas/matchDataApi/tests/testDetail.json similarity index 100% rename from archive/lambdas/matchDataApi/testDetail.json rename to archive/lambdas/matchDataApi/tests/testDetail.json diff --git a/archive/lambdas/matchDataApi/testMatches.json b/archive/lambdas/matchDataApi/tests/testMatches.json similarity index 100% rename from archive/lambdas/matchDataApi/testMatches.json rename to archive/lambdas/matchDataApi/tests/testMatches.json diff --git a/archive/lambdas/matchDataApi/testMatchesPeriod.json b/archive/lambdas/matchDataApi/tests/testMatchesPeriod.json similarity index 100% rename from archive/lambdas/matchDataApi/testMatchesPeriod.json rename to archive/lambdas/matchDataApi/tests/testMatchesPeriod.json diff --git a/archive/lambdas/matchDataApi/testPoints.json b/archive/lambdas/matchDataApi/tests/testPoints.json similarity index 100% rename from archive/lambdas/matchDataApi/testPoints.json rename to archive/lambdas/matchDataApi/tests/testPoints.json diff --git a/archive/lambdas/matchDataApi/testStation.json b/archive/lambdas/matchDataApi/tests/testStation.json similarity index 100% rename from archive/lambdas/matchDataApi/testStation.json rename to archive/lambdas/matchDataApi/tests/testStation.json diff --git a/archive/lambdas/matchDataApi/testSumPeriod.json b/archive/lambdas/matchDataApi/tests/testSumPeriod.json similarity index 100% rename from archive/lambdas/matchDataApi/testSumPeriod.json rename to archive/lambdas/matchDataApi/tests/testSumPeriod.json diff --git a/archive/lambdas/matchDataApi/testSummary.json b/archive/lambdas/matchDataApi/tests/testSummary.json similarity index 100% rename from archive/lambdas/matchDataApi/testSummary.json rename to archive/lambdas/matchDataApi/tests/testSummary.json From aa18f2df9969124bde9c668b82adee51625eee0e Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 16:06:59 +0100 Subject: [PATCH 143/150] update matchpickleapi to Pytthon 3.13 - note not 3.14 as no compatible matplotlib yet --- archive/lambdas/matchPickle/localTest.ps1 | 3 --- archive/lambdas/matchPickle/pythoncode/Dockerfile | 6 +++--- .../matchPickle/pythoncode/matchPickleApi.py | 2 +- .../matchPickle/pythoncode/requirements.txt | 2 +- archive/lambdas/matchPickle/template.yml | 4 ++-- archive/lambdas/matchPickle/testEvent.json | 14 -------------- archive/lambdas/matchPickle/tests/localTest.ps1 | 9 +++++++++ .../lambdas/matchPickle/{ => tests}/remoteTest.ps1 | 10 +++++----- archive/lambdas/matchPickle/tests/testEvent.json | 7 +++++++ .../matchPickle/{ => tests}/testresult.json | 0 10 files changed, 28 insertions(+), 29 deletions(-) delete mode 100644 archive/lambdas/matchPickle/localTest.ps1 delete mode 100644 archive/lambdas/matchPickle/testEvent.json create mode 100644 archive/lambdas/matchPickle/tests/localTest.ps1 rename archive/lambdas/matchPickle/{ => tests}/remoteTest.ps1 (96%) create mode 100644 archive/lambdas/matchPickle/tests/testEvent.json rename archive/lambdas/matchPickle/{ => tests}/testresult.json (100%) diff --git a/archive/lambdas/matchPickle/localTest.ps1 b/archive/lambdas/matchPickle/localTest.ps1 deleted file mode 100644 index f8f04121..00000000 --- a/archive/lambdas/matchPickle/localTest.ps1 +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright (C) 2018-2023 Mark McIntyre -sam build --profile ukmonshared --region eu-west-1 -sam local invoke --profile ukmonshared -e testEvent.json --region eu-west-1 diff --git a/archive/lambdas/matchPickle/pythoncode/Dockerfile b/archive/lambdas/matchPickle/pythoncode/Dockerfile index cb6745d5..64c14c12 100644 --- a/archive/lambdas/matchPickle/pythoncode/Dockerfile +++ b/archive/lambdas/matchPickle/pythoncode/Dockerfile @@ -1,8 +1,8 @@ -# Copyright (C) 2018-2023 Mark McIntyre -FROM public.ecr.aws/lambda/python:3.8 +# Copyright (C) 2018- Mark McIntyre +FROM public.ecr.aws/lambda/python:3.13 COPY requirements.txt ./ -RUN python3.8 -m pip install -r requirements.txt -t . +RUN python -m pip install -r requirements.txt -t . ENV LD_LIBRARY_PATH=./ # WMPL required even tho only one function called, because # pickle files reference structures defined in the library diff --git a/archive/lambdas/matchPickle/pythoncode/matchPickleApi.py b/archive/lambdas/matchPickle/pythoncode/matchPickleApi.py index 453fb114..19bdfe0b 100644 --- a/archive/lambdas/matchPickle/pythoncode/matchPickleApi.py +++ b/archive/lambdas/matchPickle/pythoncode/matchPickleApi.py @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2023 Mark McIntyre +# Copyright (C) 2018- Mark McIntyre import json import os import boto3 diff --git a/archive/lambdas/matchPickle/pythoncode/requirements.txt b/archive/lambdas/matchPickle/pythoncode/requirements.txt index 92834776..6fefdb6b 100644 --- a/archive/lambdas/matchPickle/pythoncode/requirements.txt +++ b/archive/lambdas/matchPickle/pythoncode/requirements.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2023 Mark McIntyre +# Copyright (C) 2018- Mark McIntyre pandas numpy scipy diff --git a/archive/lambdas/matchPickle/template.yml b/archive/lambdas/matchPickle/template.yml index 24c049d1..f0d962e7 100644 --- a/archive/lambdas/matchPickle/template.yml +++ b/archive/lambdas/matchPickle/template.yml @@ -27,8 +27,8 @@ Resources: Path: '/getpickle' Method: get Metadata: - BuildMethod: python3.8 + BuildMethod: python3.14 Dockerfile: Dockerfile DockerContext: ./pythoncode - DockerTag: python3.8-v1 + DockerTag: python3.13-v1 diff --git a/archive/lambdas/matchPickle/testEvent.json b/archive/lambdas/matchPickle/testEvent.json deleted file mode 100644 index a9d1f2cb..00000000 --- a/archive/lambdas/matchPickle/testEvent.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "httpMethod": "GET", - "queryStringParameters": { - "orbit": "20220814_205940.252_UK", - "format": "json" - }, - "multiValueQueryStringParameters": { - "orbit": [ - "20220814_205940.252_UK" - ], - "format" : [ "json"] - - } -} \ No newline at end of file diff --git a/archive/lambdas/matchPickle/tests/localTest.ps1 b/archive/lambdas/matchPickle/tests/localTest.ps1 new file mode 100644 index 00000000..25f9f770 --- /dev/null +++ b/archive/lambdas/matchPickle/tests/localTest.ps1 @@ -0,0 +1,9 @@ +# Copyright (C) 2018-2023 Mark McIntyre +$here=$PSScriptRoot +$x = (sam local invoke --profile ukmonshared -e $here/testEvent.json --region eu-west-1 | convertfrom-json) +$x.body | set-content .\tests\new_output.txt +Write-Output "any differences will appear between the lines" +write-output "======" +Compare-Object (Get-Content $here/testResult.json) (Get-Content $here/new_output.txt) +write-output "======" + diff --git a/archive/lambdas/matchPickle/remoteTest.ps1 b/archive/lambdas/matchPickle/tests/remoteTest.ps1 similarity index 96% rename from archive/lambdas/matchPickle/remoteTest.ps1 rename to archive/lambdas/matchPickle/tests/remoteTest.ps1 index 861de301..43a27fad 100644 --- a/archive/lambdas/matchPickle/remoteTest.ps1 +++ b/archive/lambdas/matchPickle/tests/remoteTest.ps1 @@ -1,5 +1,5 @@ -# Copyright (C) 2018-2023 Mark McIntyre -# test - - curl "https://api.ukmeteors.co.uk/pickle/getpickle?reqval=20260421_000017.759_UK" > ./testresult.json - +# Copyright (C) 2018-2023 Mark McIntyre +# test + + curl "https://api.ukmeteors.co.uk/pickle/getpickle?reqval=20260421_000017.759_UK" > ./testresult.json + diff --git a/archive/lambdas/matchPickle/tests/testEvent.json b/archive/lambdas/matchPickle/tests/testEvent.json new file mode 100644 index 00000000..e129da0f --- /dev/null +++ b/archive/lambdas/matchPickle/tests/testEvent.json @@ -0,0 +1,7 @@ +{ + "httpMethod": "GET", + "queryStringParameters": { + "orbit": "20260421_000017.759_UK", + "format": "json" + } +} \ No newline at end of file diff --git a/archive/lambdas/matchPickle/testresult.json b/archive/lambdas/matchPickle/tests/testresult.json similarity index 100% rename from archive/lambdas/matchPickle/testresult.json rename to archive/lambdas/matchPickle/tests/testresult.json From fa33d36c9f7b2183ba728ef3a72140fc91828740 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 16:41:49 +0100 Subject: [PATCH 144/150] updating to python 3.14 --- archive/terraform/monitorlive_lambda.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive/terraform/monitorlive_lambda.tf b/archive/terraform/monitorlive_lambda.tf index f92fce00..988ada05 100644 --- a/archive/terraform/monitorlive_lambda.tf +++ b/archive/terraform/monitorlive_lambda.tf @@ -11,7 +11,7 @@ resource "aws_lambda_function" "monitorlivelambda" { filename = data.archive_file.monitorlivezip.output_path source_code_hash = data.archive_file.monitorlivezip.output_base64sha256 handler = "monitorLiveFeed.lambda_handler" - runtime = "python3.11" + runtime = "python3.14" memory_size = 128 timeout = 300 role = aws_iam_role.monitorlive_role.arn From 8871404fa0cb4132b9edf60180c2b0ec597bcd56 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Mon, 13 Jul 2026 16:46:38 +0100 Subject: [PATCH 145/150] function to backfill missing traj ids --- archive/ukmon_pylib/utils/addMissingTrajId.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 archive/ukmon_pylib/utils/addMissingTrajId.py diff --git a/archive/ukmon_pylib/utils/addMissingTrajId.py b/archive/ukmon_pylib/utils/addMissingTrajId.py new file mode 100644 index 00000000..c7bcf923 --- /dev/null +++ b/archive/ukmon_pylib/utils/addMissingTrajId.py @@ -0,0 +1,50 @@ +# Fix up the matches file to add missing traj_ids + +# Copyright (C) 2018- Mark McIntyre + +# This should be a one-off but its useful to hang onto the script in case i want +# to rerun it on other years data + +import sys +import os +from wmpl.Utils.Pickling import loadPickle +import requests + +def fixAYear(yr): + datadir=os.getenv('DATADIR') + srcf = os.path.join(datadir, 'matched', f'matches-full-{yr}.csv') + if not os.path.isfile(srcf): + print(f'source file {srcf} not found') + return + outf = os.path.join(datadir, 'matched', f'matches-full-{yr}-mod.csv') + with open(outf,'w') as targf: + lis = open(srcf,'r').readlines() + for li in lis: + if '_Version' not in li: + spls = li.split(',') + traj_id = spls[-1].strip() + if len(traj_id) < 1: + pickname = spls[113].replace('ground_track.png', 'trajectory.pickle') + res = requests.get(pickname) + if res.status_code == 200: + with open('/tmp/tmp.pickle', 'wb') as outf: + outf.write(res.content) + pick = loadPickle('/tmp', 'tmp.pickle') + if 'traj_id' in pick: + print(f'updating {spls[110]}') + li = li.replace('\n', pick.traj_id + '\n') + else: + print(f'traj_id not available for{spls[110]}') + else: + print(f'unable to find pickle for {spls[110]}') + else: + # line already has traj_id + pass + else: + # header line, no need to change it + pass + targf.write(li) + + +if __name__ == '__main__': + fixAYear(sys.argv[1]) \ No newline at end of file From accee0f4671c993e4fcd3e2431f308779f487e79 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 15 Jul 2026 18:53:42 +0100 Subject: [PATCH 146/150] Add triggers for video upload process --- archive/cronjobs/mergeNewOrbit.sh | 17 ++-- archive/lambdas/vidUploader/pythoncode/app.py | 89 +++++++++---------- archive/terraform/ukmdashared_triggers.tf | 32 ++++--- 3 files changed, 65 insertions(+), 73 deletions(-) diff --git a/archive/cronjobs/mergeNewOrbit.sh b/archive/cronjobs/mergeNewOrbit.sh index 0738450f..0e5848cc 100644 --- a/archive/cronjobs/mergeNewOrbit.sh +++ b/archive/cronjobs/mergeNewOrbit.sh @@ -35,25 +35,20 @@ python << EOD from wmpl.Utils.Pickling import loadPickle; from wmpl.Utils.TrajConversions import jd2Date; pick = loadPickle('${evt}/$orb','${pickname}'); -if len(pick.output_dir) < 19: - print( jd2Date(pick.jdt_ref, dt_obj=True).strftime('%Y%m%d_%H%M%S.%f')[:19]+'_UK'); +if hasattr(pick, 'longname'): + print(pick.longname) else: - print(pick.output_dir) + print(jd2Date(pick.jdt_ref, dt_obj=True).strftime('%Y%m%d_%H%M%S.%f')[:19]+'_UK'); EOD ) - odux=$(echo $origdir | sed 's|\\|/|g') - pickname=$(basename $odux) - truncpn=${pickname:0:19}_UK - mv $evt/$orb $evt/$truncpn + mv $evt/$orb $evt/$origdir aws s3 sync $evt/jpgs s3://ukmda-website/img/single/${yr}/${ym}/ aws s3 sync $evt/mp4s s3://ukmda-website/img/mp4/${yr}/${ym}/ - orb=$truncpn - pick=$(ls -1 $evt/$orb/*.pickle) + aws s3 sync $evt/notes s3://ukmda-website/reports/${yr}/orbits/${ym}/${ymd}/${origdir}/notes + pick=$(ls -1 $evt/$origdir/*.pickle) python -m maintenance.recreateOrbitPages $pick force $SRC/website/createOrbitIndex.sh ${ymd} - aws s3 ls ${UKMONSHAREDBUCKET}/matches/${yr}/fullcsv/ sleep 30 # to allow the lambda to write the CSV file to s3 - aws s3 ls ${UKMONSHAREDBUCKET}/matches/${yr}/fullcsv/ $SRC/analysis/consolidateOutput.sh ${yr} $SRC/website/createFireballPage.sh ${yr} aws s3 mv $UKMONSHAREDBUCKET/fireballs/uploads/$fil $UKMONSHAREDBUCKET/fireballs/uploads/processed/$fil.done diff --git a/archive/lambdas/vidUploader/pythoncode/app.py b/archive/lambdas/vidUploader/pythoncode/app.py index cb55175f..515a00fa 100644 --- a/archive/lambdas/vidUploader/pythoncode/app.py +++ b/archive/lambdas/vidUploader/pythoncode/app.py @@ -17,6 +17,7 @@ def lambda_handler(event, context): print('no record') return record = event['Records'][0] + print(record) if 'eventSource' not in record: print('no eventSource') return @@ -24,13 +25,15 @@ def lambda_handler(event, context): ############################################################ # # get the email details and extract the information we need - + key = record['s3']['object']['key'] + #key = 'fireballs/videouploads/raw/' + record['ses']['mail']['messageId'] try: - fsobj = s3.get_object(Bucket=targetBucket, Key='fireballs/videouploads/raw/' + record['ses']['mail']['messageId']) - except: - print('email object not found') + print(f"getting {key} from {targetBucket}") + fsobj = s3.get_object(Bucket=targetBucket, Key=key) + except Exception: + print(f'email object {key} not found') return - print(f"reading {record['ses']['mail']['messageId']}") + print(f"reading {key}") try: raw_mail = fsobj['Body'].read() @@ -69,79 +72,69 @@ def lambda_handler(event, context): ############################################################ # - # create a plaintext summary of the email and save it on S3 + # create folder and store artefacts in it for zipping + + localdir = os.path.join(tmpdir, orbname[:15]) + os.makedirs(os.path.join(localdir, 'mp4s'), exist_ok=True) + os.makedirs(os.path.join(localdir, 'notes'), exist_ok=True) + + ############################################################ + # + # create a plaintext summary and save it on S3 + vidName = f"{orbname[:15]}_{uploader.replace(' ','_')}{origext}" fileName = f"{orbname[:15]}_{uploader.replace(' ','_')}.txt" - filePath = os.path.join(tmpdir, fileName) + filePath = os.path.join(localdir, 'notes', fileName) with open(filePath, 'w') as fp: fp.write(f'{uploader}\n') - fp.write(f'{email}\n') fp.write(f'{orbname}\n') - fp.write(f'{fileName}\n') - fp.write(f'{link}\n') + fp.write(f'{vidName}\n') fp.write(f'{extratxt}') tmpf = 'fireballs/videouploads/' + fileName s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=filePath, ExtraArgs={'ContentType': "text/plain"}) - - # TODO - # get extra-text file if it exists - # append extratxt to the extra-text file, if its not already in it - # make zip from the folder (without the /tmp part) - # upload zip to s3://ukmda-shared/fireballs/uploads - # update page index builder to include the extratext if available - - ############################################################ - # - # create folder and store artefacts in it for zipping - - localdir = os.path.join(tmpdir, orbname[:15]) - os.makedirs(os.path.join(localdir, 'mp4s'), exist_ok=True) + print('uploaded plaintext') # get the video from the ukmeteornetwork.org server - vidName = f"{orbname[:15]}_{uploader.replace(' ','_')}{origext}" vidPath = os.path.join(localdir, 'mp4s', vidName) - + with requests.get(link, stream=True) as r: r.raise_for_status() with open(vidPath, 'wb') as f: for chunk in r.iter_content(chunk_size=8192): - # If you have chunk encoded response uncomment if - # and set chunk_size parameter to None. - #if chunk: f.write(chunk) - # upload a copy of it to S3 for reference - vidtype = origext[1:] - tmpf = 'fireballs/videouploads/' + vidName - s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=vidPath, ExtraArgs={'ContentType': f'video/{vidtype}'}) + print('got video from link') + + # in debug mode upload a copy of it to S3 for reference + if int(os.getenv('DEBUG', default=0)) == 1: + vidtype = origext[1:] + tmpf = 'fireballs/videouploads/' + vidName + s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=vidPath, ExtraArgs={'ContentType': f'video/{vidtype}'}) # get the pickle file from the S3 archive pickfile = f'matches/RMSCorrelate/trajectories/{orbname[:4]}/{orbname[:6]}/{orbname[:8]}/{orbname}/{orbname[:15]}_trajectory.pickle' localpick = os.path.join(localdir, f'{orbname[:15]}_trajectory.pickle') - s3.download_file(Bucket=targetBucket, Key=pickfile, Filename=localpick) - - # get the notes from S3 - notefile = f'matches/RMSCorrelate/trajectories/{orbname[:4]}/{orbname[:6]}/{orbname[:8]}/{orbname}/notes.txt' - localnote = os.path.join(localdir, 'notes.txt') - - # if the file exists, append the notes, otherwise create it try: - s3.download_file(Bucket=targetBucket, Key=notefile, Filename=localnote) - notestxt = open(localnote,'r').readlines() - notestxt.append(f'{vidName} provided by {uploader}\n{extratxt}\n') - except Exception: - notestxt = f'{vidName} provided by {uploader}\n{extratxt}\n' - open(localnote, 'w').writelines(notestxt) + s3.download_file(Bucket=targetBucket, Key=pickfile, Filename=localpick) + print('got pickle') + except Exception as e: + print(f'unable to get pickle {pickfile}') + print(e) + # with no pickle we can't proceed. + return # make the zip file zipname = os.path.join(os.getenv('TMP'), f'{orbname[:15]}') - make_archive(zipname, 'zip',root_dir=tmpdir) + make_archive(zipname, 'zip',root_dir=localdir, base_dir = '.') - tmpf = 'fireballs/videouploads/' + f'{orbname[:15]}.zip' + # upload the zip file so it can be processed + tmpf = 'fireballs/uploads/' + f'{orbname[:15]}.zip' s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=f'{zipname}.zip', ExtraArgs={'ContentType': 'application/zip'}) + print('uploaded zip') + # clean up after ourselves try: rmtree(tmpdir) except Exception: diff --git a/archive/terraform/ukmdashared_triggers.tf b/archive/terraform/ukmdashared_triggers.tf index 4e48d2c7..ec9e6106 100644 --- a/archive/terraform/ukmdashared_triggers.tf +++ b/archive/terraform/ukmdashared_triggers.tf @@ -12,6 +12,10 @@ data "aws_lambda_function" "ftptoukmdalambda" { function_name = "ftpToUkmon" } +data "aws_lambda_function" "videohandler" { + function_name = "videohandler" +} + resource "aws_s3_bucket_notification" "ukmdashared_notification" { bucket = aws_s3_bucket.ukmdashared.id lambda_function { @@ -32,12 +36,12 @@ resource "aws_s3_bucket_notification" "ukmdashared_notification" { filter_suffix = ".txt" } - #lambda_function { - # lambda_function_arn = aws_lambda_function.imgreplicatelambda.arn - # id = "synctoukmon" - # events = ["s3:ObjectCreated:*"] - # filter_prefix = "archive/" - #} + lambda_function { + lambda_function_arn = data.aws_lambda_function.videohandler.arn + id = "videohandler" + events = ["s3:ObjectCreated:*"] + filter_prefix = "fireballs/videouploads/raw/" + } } @@ -59,11 +63,11 @@ resource "aws_lambda_permission" "permftptoukmdalambda" { source_arn = aws_s3_bucket.ukmdashared.arn } -#resource "aws_lambda_permission" "permarcreplicatelambda" { -# statement_id = "AllowExecutionFromShrBucket" -# action = "lambda:InvokeFunction" -# function_name = aws_lambda_function.imgreplicatelambda.arn -# principal = "s3.amazonaws.com" -# source_account = data.aws_caller_identity.current.account_id -# source_arn = aws_s3_bucket.ukmdashared.arn -#} +resource "aws_lambda_permission" "permvideohandler" { + statement_id = "AllowExecutionFromShrBucket" + action = "lambda:InvokeFunction" + function_name = data.aws_lambda_function.videohandler.arn + principal = "s3.amazonaws.com" + source_account = data.aws_caller_identity.current.account_id + source_arn = aws_s3_bucket.ukmdashared.arn +} From 3fe1ca9dcc7efefffabd506543fb6a639851e6ca Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 15 Jul 2026 18:55:49 +0100 Subject: [PATCH 147/150] slight docstring change to cameraStatusReport --- archive/ukmon_pylib/reports/cameraStatusReport.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/archive/ukmon_pylib/reports/cameraStatusReport.py b/archive/ukmon_pylib/reports/cameraStatusReport.py index 83e4850e..fba83d96 100644 --- a/archive/ukmon_pylib/reports/cameraStatusReport.py +++ b/archive/ukmon_pylib/reports/cameraStatusReport.py @@ -14,10 +14,10 @@ def getLastUpdateDate(datadir=None, camfname=None, ddb=None): is providing data Args: - pth (str): path containing the camera data folders - skipfldrs (list): list of folders to ignore eg ['trajectories','dailyreports'] - includenever (bool) default false, include cameras that have never uploaded - + datadir: path to the DATADIR, defaults to ~/prod/data + camfname: unused + ddb: dynamodb boto3 client + """ caminfo = loadLocationDetails(ddb=ddb) caminfo = caminfo[caminfo.active==1] From 8c4073f8d6357dbc748c20a848554b0f2c754876 Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 15 Jul 2026 18:56:11 +0100 Subject: [PATCH 148/150] add log group retention for lambda log groups --- archive/terraform/cloudwatch.tf | 72 +++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/archive/terraform/cloudwatch.tf b/archive/terraform/cloudwatch.tf index ee336b1d..48c775fd 100644 --- a/archive/terraform/cloudwatch.tf +++ b/archive/terraform/cloudwatch.tf @@ -45,3 +45,75 @@ resource "aws_cloudwatch_log_group" "devnightly" { "billingtag" = "ukmda" } } + +resource "aws_cloudwatch_log_group" "monitorlivefeed" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/MonitorLiveFeed" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} + +resource "aws_cloudwatch_log_group" "matchDataApi" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/matchDataApi" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} + +resource "aws_cloudwatch_log_group" "matchPickleApi" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/matchPickleApi" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} + +resource "aws_cloudwatch_log_group" "searchArchive" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/searchArchive" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} + +resource "aws_cloudwatch_log_group" "getLiveImages" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/getLiveImages" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} + +resource "aws_cloudwatch_log_group" "getFireballFiles" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/getFireballFiles" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} + +resource "aws_cloudwatch_log_group" "fetchECSV" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/fetchECSV" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} + +resource "aws_cloudwatch_log_group" "camDetails" { + provider = aws.eu-west-1-prov + name = "/aws/lambda/camDetails" + retention_in_days = 30 + tags = { + "billingtag" = "ukmda" + } +} From a41cdba35081ca4f1b016a4d8a077797b39f92dd Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Wed, 15 Jul 2026 19:22:56 +0100 Subject: [PATCH 149/150] improvements to mergeNewOrbit --- archive/cronjobs/mergeNewOrbit.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/archive/cronjobs/mergeNewOrbit.sh b/archive/cronjobs/mergeNewOrbit.sh index 0e5848cc..ec96800b 100644 --- a/archive/cronjobs/mergeNewOrbit.sh +++ b/archive/cronjobs/mergeNewOrbit.sh @@ -42,9 +42,9 @@ else: EOD ) mv $evt/$orb $evt/$origdir - aws s3 sync $evt/jpgs s3://ukmda-website/img/single/${yr}/${ym}/ - aws s3 sync $evt/mp4s s3://ukmda-website/img/mp4/${yr}/${ym}/ - aws s3 sync $evt/notes s3://ukmda-website/reports/${yr}/orbits/${ym}/${ymd}/${origdir}/notes + [ -d jpgs ] && aws s3 sync $evt/jpgs s3://ukmda-website/img/single/${yr}/${ym}/ + [ -d mp4s ] && aws s3 sync $evt/mp4s s3://ukmda-website/img/mp4/${yr}/${ym}/ + [ -d notes ] && aws s3 sync $evt/notes s3://ukmda-website/reports/${yr}/orbits/${ym}/${ymd}/${origdir}/notes pick=$(ls -1 $evt/$origdir/*.pickle) python -m maintenance.recreateOrbitPages $pick force $SRC/website/createOrbitIndex.sh ${ymd} From 65ced1e0fa22c8c213797cee3fc9f80486fadc0a Mon Sep 17 00:00:00 2001 From: Mark McIntyre Date: Thu, 16 Jul 2026 00:46:06 +0100 Subject: [PATCH 150/150] Add functonality to add notes to the orbit pages based on video uploads --- .../pythoncode/createOrbitPageIndex.py | 17 +++++++---- .../pythoncode/getExtraFiles.py | 29 ++++++++++++++++++- .../getExtraFilesV2/tests/localTest.ps1 | 4 +-- .../getExtraFilesV2/tests/testEvent.json | 2 +- .../getExtraFilesV2/tests/testEvent2.json | 2 +- archive/lambdas/vidUploader/pythoncode/app.py | 26 +++++++++++++++-- 6 files changed, 67 insertions(+), 13 deletions(-) diff --git a/archive/lambdas/getExtraFilesV2/pythoncode/createOrbitPageIndex.py b/archive/lambdas/getExtraFilesV2/pythoncode/createOrbitPageIndex.py index ab4e2418..38b38238 100644 --- a/archive/lambdas/getExtraFilesV2/pythoncode/createOrbitPageIndex.py +++ b/archive/lambdas/getExtraFilesV2/pythoncode/createOrbitPageIndex.py @@ -8,7 +8,7 @@ import shutil -def createOrbitPageIndex(fldr, websitebucket, s3): +def createOrbitPageIndex(fldr, websitebucket, notes, s3): hdrname = '/tmp/header.txt' ftrname = '/tmp/footer.txt' if not os.path.isfile(hdrname): @@ -31,9 +31,6 @@ def createOrbitPageIndex(fldr, websitebucket, s3): lis = sumf.readlines() idxf.writelines(lis) - #zipf = orbitname + '.zip' - #if os.path.isfile(os.path.join(fldr, zipf)): - # idxf.write(f"Click here to download a zip of the raw and processed data.\n") idxf.write("\n") idxf.write("

    Detailed report below graphs

    \n") idxf.write("

    Click on an image to see a larger view

    \n") @@ -80,9 +77,16 @@ def createOrbitPageIndex(fldr, websitebucket, s3): idxf.writelines(lis) idxf.write("\n") - idxf.write("
    \n")
    +        if notes:
    +            print('adding notes')
    +            idxf.write('
    ') + idxf.write(notes.replace('\n', '
    ')) + idxf.write('
    ') + else: + print('no notes') + + idxf.write("
    \n")
             repf = os.path.join(fldr, pref + 'report.txt')
    -        #print(repf)
             if os.path.isfile(repf):
                 with open(repf) as sumf:
                     lis = sumf.readlines()
    @@ -100,6 +104,7 @@ def createOrbitPageIndex(fldr, websitebucket, s3):
             with open(ftrname, 'r') as footf:
                 lis = footf.readlines()
             idxf.writelines(lis)
    +        print('done')
         return
     
     
    diff --git a/archive/lambdas/getExtraFilesV2/pythoncode/getExtraFiles.py b/archive/lambdas/getExtraFilesV2/pythoncode/getExtraFiles.py
    index 83fb956c..8075ef8a 100644
    --- a/archive/lambdas/getExtraFilesV2/pythoncode/getExtraFiles.py
    +++ b/archive/lambdas/getExtraFilesV2/pythoncode/getExtraFiles.py
    @@ -27,6 +27,26 @@ def findSite(stationid, ddb):
         return None
     
     
    +def getNotes(websitebucket, srcpath, s3):
    +    print(f'checking in {srcpath}notes/ for notes')
    +    res = s3.meta.client.list_objects(Bucket=websitebucket, Prefix = f'{srcpath}notes/')
    +    if 'Contents' in res:
    +        notes = 'Notes:\n'
    +        for k in res['Contents']:
    +            key = k['Key']
    +            fsobj = s3.meta.client.get_object(Bucket=websitebucket, Key=key)
    +            if 'Body' in fsobj:
    +                note = fsobj['Body'].read()
    +                spls = note.decode('utf-8').split('\n')
    +                if len(spls) > 3:
    +                    notes += f'{spls[0]}: {spls[3]}\n'
    +                else:
    +                    notes += f'{spls[0]}: No remarks.\n'
    +        return notes
    +    else:
    +        return None
    +
    +
     def generateExtraFiles(key, archbucket, websitebucket, ddb, s3):
         print(f'event {key} using {archbucket} and {websitebucket}')
         fuloutdir, fname = os.path.split(key)
    @@ -158,6 +178,13 @@ def generateExtraFiles(key, archbucket, websitebucket, ddb, s3):
                 print('no extrajpgs.html')
                 pass
     
    +        try:
    +            notes = getNotes(websitebucket, webpth, s3)
    +        except Exception as e: 
    +            print('unable to get notes')
    +            print(e)
    +            notes = None
    +
             key2 = webpth + 'extrampgs.html'
             locfname = os.path.join(outdir, 'extrampgs.html')
             try:
    @@ -169,7 +196,7 @@ def generateExtraFiles(key, archbucket, websitebucket, ddb, s3):
             print('pushing files back')
             pushFilesBack(outdir, archbucket, websitebucket, fuloutdir, s3, istest=istest)
             print('updating the index page')
    -        createOrbitPageIndex(outdir, websitebucket, s3)
    +        createOrbitPageIndex(outdir, websitebucket, notes, s3)
     
             idxname = os.path.join(outdir, 'index.html')
             key = os.path.join(webpth, 'index.html')
    diff --git a/archive/lambdas/getExtraFilesV2/tests/localTest.ps1 b/archive/lambdas/getExtraFilesV2/tests/localTest.ps1
    index 6c33151b..09895aef 100644
    --- a/archive/lambdas/getExtraFilesV2/tests/localTest.ps1
    +++ b/archive/lambdas/getExtraFilesV2/tests/localTest.ps1
    @@ -1,4 +1,4 @@
     # Copyright (C) 2018-2023 Mark McIntyre
     #sam build
    -sam local invoke --profile ukmda_admin -e tests\testEvent.json 
    -#sam local invoke --profile ukmda_admin -e tests\testEvent2.json 
    \ No newline at end of file
    +sam local invoke --profile ukmonshared -e tests\testEvent.json 
    +#sam local invoke --profile ukmonshared -e tests\testEvent2.json 
    \ No newline at end of file
    diff --git a/archive/lambdas/getExtraFilesV2/tests/testEvent.json b/archive/lambdas/getExtraFilesV2/tests/testEvent.json
    index cfc58f49..3f12b699 100644
    --- a/archive/lambdas/getExtraFilesV2/tests/testEvent.json
    +++ b/archive/lambdas/getExtraFilesV2/tests/testEvent.json
    @@ -7,7 +7,7 @@
               "arn": "arn:aws:s3:::ukmda-shared"
             },
             "object": {
    -          "key": "matches/RMSCorrelate/trajectories/2024/202407/20240714/20240714_000026.699_UK/20240714_000026_trajectory.pickle"
    +          "key": "matches/RMSCorrelate/trajectories/2026/202607/20260711/20260711_000103.430_UK/20260711_000103_trajectory.pickle"
             }
           }
         }
    diff --git a/archive/lambdas/getExtraFilesV2/tests/testEvent2.json b/archive/lambdas/getExtraFilesV2/tests/testEvent2.json
    index 9aa49b7f..f1187922 100644
    --- a/archive/lambdas/getExtraFilesV2/tests/testEvent2.json
    +++ b/archive/lambdas/getExtraFilesV2/tests/testEvent2.json
    @@ -7,7 +7,7 @@
               "arn": "arn:aws:s3:::ukmda-shared"
             },
             "object": {
    -          "key": "matches/distrib/test/trajectories/2026/202604/20260412/20260412_232324.162_UK/20260412_232324_trajectory.pickle"
    +          "key": "matches/RMSCorrelate/trajectories/2026/202607/20260711/20260711_000136.200_UK/20260711_000136_trajectory.pickle"
             }
           }
         }
    diff --git a/archive/lambdas/vidUploader/pythoncode/app.py b/archive/lambdas/vidUploader/pythoncode/app.py
    index 515a00fa..3efd1f3b 100644
    --- a/archive/lambdas/vidUploader/pythoncode/app.py
    +++ b/archive/lambdas/vidUploader/pythoncode/app.py
    @@ -54,7 +54,6 @@ def lambda_handler(event, context):
         fromline = [x for x in lines if 'From:' in x]
         datetime = [x for x in lines if 'Subject:' in x]
         emailadd = [x for x in lines if 'email:' in x]
    -    extratxt = [x for x in lines if 'Message Body:' in x]
         if not fromline or not datetime or not emailadd:
             print(f'From, Date or email missing, unable to continue')
             return 
    @@ -64,6 +63,17 @@ def lambda_handler(event, context):
         orbname = datetime[0].split(':')[1].strip()
     
         linkline = lines.index('Link:')
    +    bdyline = [x for x in lines if 'Message Body:' in x]
    +    if len(bdyline) > 0:
    +        commentline = lines.index(bdyline[0])
    +        for i in range(commentline, linkline):
    +            if i == commentline:
    +                comment = lines[i].split(':')[1].strip()
    +            else:
    +                comment += lines[i]+ ' '
    +    else:
    +        comment = 'No remarks'
    +
         origname = lines[linkline+1].strip()
         origext = os.path.splitext(origname)[1]
         link = lines[linkline+2].strip().replace('','')
    @@ -89,12 +99,14 @@ def lambda_handler(event, context):
             fp.write(f'{uploader}\n')
             fp.write(f'{orbname}\n')
             fp.write(f'{vidName}\n')
    -        fp.write(f'{extratxt}')
    +        fp.write(f'{comment}')
     
         tmpf = 'fireballs/videouploads/' + fileName
         s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=filePath, ExtraArgs={'ContentType': "text/plain"})
         print('uploaded plaintext')
     
    +    ############################################################
    +    #
         # get the video from the ukmeteornetwork.org server
     
         vidPath = os.path.join(localdir, 'mp4s', vidName)
    @@ -107,12 +119,16 @@ def lambda_handler(event, context):
     
         print('got video from link')
     
    +    ############################################################
    +    #
         # in debug mode upload a copy of it to S3 for reference
         if int(os.getenv('DEBUG', default=0)) == 1:
             vidtype = origext[1:]
             tmpf = 'fireballs/videouploads/' + vidName
             s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=vidPath, ExtraArgs={'ContentType': f'video/{vidtype}'})
     
    +    ############################################################
    +    #
         # get the pickle file from the S3 archive
         pickfile = f'matches/RMSCorrelate/trajectories/{orbname[:4]}/{orbname[:6]}/{orbname[:8]}/{orbname}/{orbname[:15]}_trajectory.pickle'
         localpick = os.path.join(localdir, f'{orbname[:15]}_trajectory.pickle')
    @@ -125,15 +141,21 @@ def lambda_handler(event, context):
             # with no pickle we can't proceed. 
             return 
     
    +    ############################################################
    +    #
         # make the zip file
         zipname = os.path.join(os.getenv('TMP'), f'{orbname[:15]}')
         make_archive(zipname, 'zip',root_dir=localdir, base_dir = '.')
     
    +    ############################################################
    +    #
         # upload the zip file so it can be processed
         tmpf = 'fireballs/uploads/' + f'{orbname[:15]}.zip'
         s3.upload_file(Bucket=targetBucket, Key=tmpf, Filename=f'{zipname}.zip', ExtraArgs={'ContentType': 'application/zip'})
         print('uploaded zip')
     
    +    ############################################################
    +    #
         # clean up after ourselves
         try:
             rmtree(tmpdir)
    
    {:s}{:s}{:s}{:s}