From fba6a204e32668b7dede3d5a3bd82044f589434d Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sun, 29 May 2016 18:59:05 +0000 Subject: [PATCH] Zwischenstand V.3.1.3 (wegen VPN down noch nicht installiert) --- Stundensheet.xlsx | Bin 21978 -> 22015 bytes nsw/Source/SQL/Update_3.1_To_3.1.3.sql | 11 + nsw/Source/SQL/portarea.sql | 346 ++++++++++++++++++ nsw/Source/bsmd.dakosy/Request.cs | 20 +- nsw/Source/bsmd.database/DBManager.cs | 18 + nsw/Source/bsmd.database/INFO.cs | 40 +- nsw/Source/bsmd.database/PortArea.cs | 81 ++++ .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.database/ReportingParty.cs | 5 - .../bsmd.database/ValidationAttribute.cs | 1 + nsw/Source/bsmd.database/bsmd.database.csproj | 1 + nsw/Source/bsmd.hisnord/Request.cs | 50 ++- .../misc/NSW_Software_Dokumentation.docx | Bin 41477 -> 53833 bytes 14 files changed, 541 insertions(+), 36 deletions(-) create mode 100644 nsw/Source/SQL/Update_3.1_To_3.1.3.sql create mode 100644 nsw/Source/SQL/portarea.sql create mode 100644 nsw/Source/bsmd.database/PortArea.cs diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 29c1f5c67f3cb39d2fbf9e7d06281725694d1243..20a26389b62a033f33d464078921e5956b74cbcd 100644 GIT binary patch delta 9251 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 Z80aISX+S*SEz%&;eeu8d;lJ}T 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 L>5;hJ{M+(B$Z6-f diff --git a/nsw/Source/SQL/Update_3.1_To_3.1.3.sql b/nsw/Source/SQL/Update_3.1_To_3.1.3.sql new file mode 100644 index 00000000..5743cc55 --- /dev/null +++ b/nsw/Source/SQL/Update_3.1_To_3.1.3.sql @@ -0,0 +1,11 @@ + +CREATE TABLE [dbo].[PortArea] ( + [Id] UNIQUEIDENTIFIER CONSTRAINT [PK_PortArea_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL , + [Country] NVARCHAR (10) NULL, + [Locode] NCHAR (5) NULL, + [Port] NVARCHAR (255) NULL, + [Code] NVARCHAR (10) NULL, + [Name] NVARCHAR (255) NULL +); + +GO \ No newline at end of file diff --git a/nsw/Source/SQL/portarea.sql b/nsw/Source/SQL/portarea.sql new file mode 100644 index 00000000..1b2ef4b8 --- /dev/null +++ b/nsw/Source/SQL/portarea.sql @@ -0,0 +1,346 @@ +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEGRD','Greifswald','BH','Mibau Baustoffhandel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEGRD','Greifswald','LAD','Greifswald Ladebow / HLG') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEGRD','Greifswald','TL','Tanklager') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DELBM','Lubmin','LUB','Hafen Lubmin') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEMUK','Mukran','FHS','Fährhafen Sassnitz-Mukran') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEMUK','Mukran','EUB','Mukran EUROBALTIC') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','CAT','Rostock / Caterpillar Rostock') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','CHH','Rostock / Chemiehafen Rostock-Peez') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','MAB','Rostock / Rostock MAB') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','MGB','Rostock / Neptun Werft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','MGS','Rostock / Maritimes Gewerbegebiet Süd') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','ÖLH','Rostock / Großtanklager Ölhafen Rostock') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','RFH','Rostock / Rostocker Fracht- und Fischereihafen GmbH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','STH','Rostock / Stadthafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','ÜSH','Überseehafen Rostock') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','WMD','Rostock / Warnemünde Cruise Center') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DERSK','Rostock','WWW','Nordic Yards Warnemünde GmbH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DESAS','Sassnitz','SHS','Sassnitz / Stadthafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DESTL','Stralsund','STH','Stralsund / Seehafen Stralsund') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEUCK','Ueckermünde','IH','Ueckermünde / Industriehafen Ueckermünde') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEVIW','Vierow','VIE','Vierow / Hafen Vierow GmbH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWAR','Warnmeünde','WMD','Warnemünde / Kreufahrt-Terminal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWAR','Warnmeünde','MGB','Maritimes Gewerbegebiet / Neptun Werft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWAR','Warnmeünde','MGS','Maritimes Gewerbegebiet Süd') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWAR','Warnmeünde','WWW','Nordic Yards Warnemünde GmbH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','AH','Alter Hafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','AU','Allgemeiner Umschlag') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','GT','Getreideterminal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','HT','Holzterminal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','KH','Kalihafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','MGT','Massengutterminal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','MTW','NORDIC YARDS Wismar GmbH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','NLP','Notliegeplätze') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','Ree','Reede') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','TT','Torfterminal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','ÜSH','Überseehafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','PAX','Wismar Passagierkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWIS','Wismar','WH','Westhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('MV','DEWOL','Wolgast','STH','Wolgast / Wolgaster Hafengesellschaft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','NTHF','Nord Tonnenhof') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','NLKN','Nord LKN') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','NHGN','Nord HaGe') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','HDRO','Süd HDR Dockvorhafen Ost') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','HDRW','Süd HDR Dockvorhafen West') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','SENV','Süd Senvion') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','SATR','Süd ATR Landhandel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','SLKN','Süd LKN') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHUS','Husum','HOSI','Holmer Siel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DETOE','Tönning','LHTO','Landeshafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DETOE','Tönning','ESPW','Liegeplätze Eidersperrwerk') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DETOE','Tönning','WSA','Liegeplätze Eiderkaje (WSA Tönning)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','VHOM','Vorhafen Ostmole') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HAZU','Hafenzufahrt') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB1','HB I') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB2N','HB II Nord') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB2W','HB II/III West') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB2S','HB II Süd') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB3N','HB III Nord') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB3O','HB III Ost') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB3S','HB III Süd Bulk/Passagiere') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','SILO','HB III Süd Stöven') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB3W','HB III/IV West') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBUM','Büsum','HB4N','HB IV Nord') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEGLU','Glückstadt','AHAS','Außenhafen Südmole (Glückstadt Ports)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEGLU','Glückstadt','AHAN','Außenhafen Nordmole') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEWED','Wedel/Holstein','WKWK','Kraftwerkskai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHGL','Helgoland','HNOH','Nordosthafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHGL','Helgoland','HLA3','Landungsbrücke/Anlegerampe 3') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','EHOB','Elbehafen Ostbecken, BrbPorts') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','EHO','Elbehafen Ost, BrbPorts') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','EHC','Elbehafen Center, BrbPorts') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','EHW','Elbehafen West, BrbPorts') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OH4','Ölhafen, Brücke 4, WSA Brb') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OH5','Ölhafen, Brücke 5, Raffinerie Heide') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OH6','Ölhafen, Brücke 6, Raffinerie Heide') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OH7','Ölhafen, Brücke 7, Raffinerie Heide') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OH8','Ölhafen,Brücke 8, BrbPorts') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OM1','Ostermoor, Brücke 1, YARA') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OM2','Ostermoor, Brücke 2, YARA') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OM3','Ostermoor, Liegeplatz 3, YARA') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OM4','Ostermoor, Brücke 4, YARA') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OM5','Ostermoor, Brücke 5, BAYER') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','OM6','Ostermoor, Brücke 6, TOTAL') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','SKAI','NOK Binnenhafen Südkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','SASL','NOK Binnenhafen , SASOL') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','KUBI','NOK Binnenhafen , KüBI-Bunkeranlage') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','BAY','NOK Binnenhafen, Brücke 0102 (BAYER AG)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','HOLC','NOK Binnenhafen , Zement Export Terminal (Fa. HOLCIM)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBRB','Brunsbüttel','SUSI','NOK Binnenhafen (Schutz u. Sicherheitshafen)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEREN','Rendsburg','WN','Werft Nobiskrug') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEREN','Rendsburg','KH','NOK, Kreishafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEREN','Rendsburg','ORP','Osterrönfeld NOK, Rendsburg Port') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEEEK','Eckernförde','KH','Kommunalhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEEEK','Eckernförde','IM','Innenhafen (Marine)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','OUH','Ostuferhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','OSK','Ostseekai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','NWK','Norwegenkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','SWK','Schwedenkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','HDW','Werft HDW, ADMK') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','SH','Scheerhafen, Stallzus') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','GKK','Gemeinschaftskraftwerk GKK') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','CAT','Caterpillar Motoren') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','LP9B','Burmann KG, Schwentine') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKEL','Kiel','KSH','Kieler Schrotthandel, KSH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DE136','Kiel Canal','LP32','NOK, Nordhafen Ölsaatenverarbeitungs GmbH, Liegepl. 32, 32a') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DE136','Kiel Canal','LP33','NOK, FA. Voith, Liegepl. 33') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DE136','Kiel Canal','B136','NOK, Bominflot Tanklager GmbH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DE136','Kiel Canal','T136','NOK, Total Deutschland GmbH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DETRV','Travemünde','SKAN','Scandinavienkai Lübeck-Travemünde') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DETRV','Travemünde','HILL','Bunkerstation Hillenberg Lübeck-Travemünde') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DETRV','Travemünde','TRAV','Travemünde Seebrücken Lübeck Travemünde') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','SCH1','Schlutup 1') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','OPK','Ostpreussenkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','VH','Nordlandkai-Neu') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','NG','Nordgetreide') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','SCH2','Schlutup 2') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','RK','Roddenloppel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','HV','Havemann') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','LGH','Lagerhaus Lübeck') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','LMG','LMG Maschinen- und Anlagenbau') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','CTL','Containerterminal Lehmann') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','BGT','Burgtorkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','BRÜ','Brüggen KG') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','HEN','Henningskai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','SLK','Seelandkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','LK','Lehmannkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','KK','Konstinkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELBC','Lübeck','HANS','Hansahafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEFLF','Flensburg','HK','Harniskai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEFLF','Flensburg','KWK','Kraftwerkskai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEFLF','Flensburg','SBK','Schiffbrückenkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEKAP','Kappeln','KAP','Kommunalhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHHF','Heiligenhafen','HHF','Kommunalhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEPUT','Puttgarden','SCFH','Fährhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DENHO','Neustadt/Holstein','KH','Kommunalhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEBSK','Burgstaaken/Fehmarn','BSK','Burgstaaken/Fehmarn') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEDAG','Dagebüll','DAG','Dagebüll') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHRM','Hörnum (Sylt)','HRM','Hörnum (Sylt)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELIS','List (Sylt)','KH','Kommunalhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DELIS','List (Sylt)','FHRS','Fährhafen/Fähranleger (Röm – Sylt Linie)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEHTU','Holtenau','HTU','Holtenau') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEIAM','Amrum','IAM','Amrum') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEPEL','Pellworm','PEL','Pellworm') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DESLS','Schleswig','SLS','Schleswig') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEWEW','Wewelsfleth','WEW','Wewelsfleth') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('SH','DEWYK','Wyk auf Föhr','WYK','Wyk auf Föhr') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBMR','Baltrum','BMR','Baltrum') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBEN','Bensersiel','BEN','Bensersiel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBMK','Borkum','BMK','Borkum') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBKE','Brake','NDSK','Niedersachsenkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBKE','Brake','WILM','Wilmar Edible Oils Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBKE','Brake','NORP','Nordpier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBKE','Brake','SUEP','Südpier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBKE','Brake','BINN','Binnenhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBKE','Brake','KANA','Kanalhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBKE','Brake','STAK','Stadtkaje') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBUT','Butjadingen-Fedderwardersiel','BUT','Fedderwadersiel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','FAER','Fährhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','SEEB','Seebäderbrücke') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','ALTH','Alter Hafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','HAKA','Hafenkaje') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','HELG','Helgoländer Kai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','SLPR','Schleusenpriel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','STHF','Steubenhöft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','LUEB','Lübbertkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','STHI','Steubenhöft Innenkante') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','ALTL','Alter Lentzkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','NEUL','Neuer Lentzkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','IMPE','Imperatorufer') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','CUXC','CuxCargo-Kai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','HUMB','Humberkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','EURO','Europakai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','OFFS','Offshorebasis') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','ALTF','Alter Fischereihafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','HERK','Heringskai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','NDSK','Niedersachsenkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DECUX','Cuxhaven','HANS','Hansakai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWAC','Dornum-Accumersiel / Westeraccumersiel','WAC','Dornum-Accumersiel / Westeraccumersiel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEELS','Elsfleth','STAP','Stadtpier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEELS','Elsfleth','OMNI','Omni Pac Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEELS','Elsfleth','WERF','Elsflether Werft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','DEMS','Dalbenliegeplatz Emspier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','EMSP','Emspier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','EMSK','Emskai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','AUSW','Außenhafen-West') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','AUSO','Außenhafen-Ost') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','SUED','Südkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','JARS','Jarssumer Hafen Süd') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','JARN','Jarssumer Hafen Nord') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','NBID','Neuer Binnenhafen Dalben') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','NORD','Nordkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','BISB','Binnenschiffsbecken') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','EVA1','EVAG Terminal I') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','OLHS','Ölhafen Süd') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','OLHN','Ölhafen Nord') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','ISUD','Industriehafen Süd') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','BORS','Borssumer Hafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','INOR','Industriehafen Nord') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','STIK','Stichkanal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','NSWK','Nordseewerke') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','EWUD','Emder Werft und Dock') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','EVA2','EVAG Terminal II') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','CASS','Cassens Werft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','EFAW','Emder Fahrwasser') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','UTB','UTB') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEEME','Emden','STEG','Stege Westseite-Neuer Binnehafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEGRE','Greetsiel','GRE','Greetsiel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEHSX','Harlesiel','HSX','Harlesiel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEHOO','Hooksiel Außenhafen','NORD','Nordseite') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEHOO','Hooksiel Außenhafen','SUED','Südanleger') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEJUI','Juist','JUI','Juist') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DELGO','Langeoog','LGO','Langeoog') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DELEE','Leer','INDU','Industriehafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DELEE','Leer','HAND','Handelshafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DELEW','Lemwerder/Ochtum','OCHT','Ochtum Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DELEW','Lemwerder/Ochtum','AUR','Abeking und Rassmussen Werft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEMOZ','Motzen','ROVA','Rova Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEMOZ','Motzen','FASS','Fassmer Werft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENES','Nessmersiel','NES','Nessmersiel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHS','Neuharlingersiel','NHS','Neuharlingersiel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENOE','Norddeich','NOE','Norddeich') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','RMIN','Rhenus Midgard Pier Nordenham') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','NSKW','Norddeutsche Seekabelwerke Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','STUE','Stührenberg Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','WESM','Wesermetall Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','RMIB','Rhenus Midgard Pier Blexen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','GRAU','Graue Pier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','STEW','Steelwind Pier Blexen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENHA','Nordenham','KROT','Kronos Titan Pier Blexen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DENRD','Norderney','NRD','Norderney') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEOLO','Oldenburg','OSTH','Osthafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEOLO','Oldenburg','NORK','Nordkaje') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEOLO','Oldenburg','DALB','Kaje Dalbenstraße') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','DOBR','Deverhafen Ostseite / Brügmann') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','DKBR','Deverhafen Kopf / Brügmann') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','DWSB','Deverhafen Westseite / S & B') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','SSSB','Sielkanal Südseite / S & B') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','SNBE','Sielkanal Nordseite / Bera') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','SNSV','Sielkanal Nordseite / Schiffsverwertung') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','SNAU','Sielkanal Nordseite / Augustin') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','SNBR','Sielkanal Nordseite / Brill') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','SNSB','Sielkanal Nordseite / S & B') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','ISSB','Industriehafen Süd Ostseite / S & B') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','ISBU','Industriehafen Süd Ostseite / Bunte') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','ISHG','Industriehafen Süd Westseite / Hagemeier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','ISND','Industriehafen Süd Westseite / ND Coating') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','INSB','Industriehafen Nord Ostseite / S & B') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','INRO','Industriehafen Nord Ostseite / ROVA Mix') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','INBU','Industriehafen Nord Ostseite / Bunte') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEPAP','Papenburg','INNY','Industriehafen Nord Westseite / Nyblad') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DESPI','Spiekeroog','SPI','Spiekeroog') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBUZ','Stade-Bützfleth','NORD','Nordhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBUZ','Stade-Bützfleth','NWK','Nordwest-Kai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEBUZ','Stade-Bützfleth','SUED','Südhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEAGE','Wangerooge','AGE','Wangerooge') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','UVG1','UVG 1') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','UVG2','UVG 2') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','UVG3','UVG 3') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','WRG1','WRG 1') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','WR1A','WRG 1A') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','WRG2','WRG 2') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','WRG3','WRG 3') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','JWPP','JWP Projektpier') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','JWPC','JWP') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','NDSA','Niedersachsenbrücke außen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','NDSI','Niedersachsenbrücke innen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','NWO1','NWO 1') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','NWO2','NWO 2') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','NWO3','NWO 3') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','NWO4','NWO 4') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','FUPH','Flut- und Pontonhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','AVH','Alter Vorhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','BSK','Braunschweigkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','LGK','Lüneburgkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','HK','Hannoverkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','OLK','Oldenburgkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','DOC8','Dock 8') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','DALB','Dalbenplatz') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','3EIN','ehem. III. Einfahrt') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWVN','Wilhelmshaven/Land','JADI','Jade-Dienst Kai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','AUSR','Ausrüstungshafen Nord') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','NOK','Nordostkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','NWK','Nordwestkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','SWK','Südwestkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','BONT','Bontekai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','WIES','Wiesbadenbrücke') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','STBK','Strombaukaje') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','ALBA','Jade-Stahl-Kaje') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('NI','DEWHV','Wilhelmshaven/Stadt','GVKA','Güterverkehrsanlage') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','AIRB','Finkenwerder - Airbus') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','FKWP','Finkenwerder - Finkenwerder Pfähle') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CELL','Köhlfleet – Rhenus Midgard') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','MITT','Köhlfleet – Mittal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','TRI','Köhlfleet – Trimet') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','AUE','Köhlfleet - Aue 1') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','KOEH','Köhlfleet – Köhlfleethafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CTB','Burchardkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','EUR','Eurogate') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','B+V','Blohm+Voss') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CTT','Tollerort - CTT 1-5') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CTA','Altenwerder - CTA 1-4') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HAPO','Hansaport') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HJM','Harburg - Hrb1 HJM') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','ISR','Harburg - Hrb1 ISR') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','RIN','Harburg - Hrb1 Rinck') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','MID','Harburg - Hrb2 Midgard') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','N+T','Harburg - Hrb3 N+T') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HOLB','Harburg - Hrb4 Holborn') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','NYN','Harburg - Hrb4 Nynas') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HOH','Harburg - Shell Hohe Schaarhafen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','VATT','Harburg - Vattenfall Moorburg') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CAR','Harburg - Cargill') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','KRA','Harburg - Krages') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','VOP','Rethe - Vopak 1-5') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','KALI','Rethe - Kalikai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','OILT','Rethe - Oiltanking') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','KSHE','Rethe - Kattwyk Shell') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','BLG','Rethe - Kattwyk Harms (BLG)') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','H+R','Rethe - H&R Ölwerke Schindler') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','KRUS','Rethe - P.Kruse') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','GTH','südl. Reiherstieg - GTH') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HALT','südl. Reiherstieg - Haltermann') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','WALL','südl. Reiherstieg - Wallmann') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HAB','südl. Reiherstieg - Habema') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HAG','südl. Reiherstieg - Hagel') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','NOW','Norderwerft') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','OSW','Hansahafen - Oswaldkai 1-8') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','HHPF','Hansahafen - Hansahafenpfähle') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','SWT','Südwest-Terminal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','BHT','Oderhafen - BHT Schuppen 80/81') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','MÖN','Oderhafen - Schuppen 76/77') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','S84','Rosshafen - Schuppen 84') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','EMR','Rosshafen - EMR') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','MAN','Rosshafen - MAN') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','GREV','Kuhwerder Hafen - Grevenhofkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','AGR','Kuhwerder Hafen - Agrar Terminal') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CTAL','Altona - CruiseTerminal Altona') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','ALTM','Altona - Altona Mittelkai') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CTGR','Norderelbe - Cruise Terminal Grasbrook') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','NEPF','Norderelbe - Norderelbpfähle') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','SAS','Norderelbe - Schümann') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','RSHE','Norderelbe - Shell Reiherstieg') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','CTS','Kaiser-Wilhelm-Hafen - CruiseTerminal Steinwerder') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HH','DEHAM','Hamburg','KWH','Kaiser-Wilhelm-Hafen Warteplätze') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HB','DEBRE','Bremen','BRE','Bremen') +INSERT INTO PortArea (Country, Locode, Port, Code, Name) VALUES ('HB','DEBRV','Bremerhaven','BRV','Bremerhaven') diff --git a/nsw/Source/bsmd.dakosy/Request.cs b/nsw/Source/bsmd.dakosy/Request.cs index 31bec474..2128619b 100644 --- a/nsw/Source/bsmd.dakosy/Request.cs +++ b/nsw/Source/bsmd.dakosy/Request.cs @@ -140,7 +140,7 @@ namespace bsmd.dakosy else { vList.Visit[0].AGNT.StreetName = agnt.AgentStreetAndNumber; - vList.Visit[0].AGNT.StreetNumber = ""; + // vList.Visit[0].AGNT.StreetNumber = ""; } } @@ -677,7 +677,8 @@ namespace bsmd.dakosy vList.Visit[0].STAT = new STAT(); vList.Visit[0].STAT.ShipName = stat.ShipName; vList.Visit[0].STAT.CallSign = stat.CallSign; - vList.Visit[0].STAT.MmsiNumber = stat.MMSINumber; + if(!stat.MMSINumber.IsNullOrEmpty()) + vList.Visit[0].STAT.MmsiNumber = stat.MMSINumber; vList.Visit[0].STAT.Flag = stat.Flag; vList.Visit[0].STAT.LengthOverallMTRSpecified = stat.LengthOverall_MTR.HasValue; vList.Visit[0].STAT.LengthOverallMTR = stat.LengthOverall_MTR ?? 0; @@ -686,7 +687,8 @@ namespace bsmd.dakosy vList.Visit[0].STAT.GrossTonnageSpecified = stat.GrossTonnage.HasValue; vList.Visit[0].STAT.GrossTonnage = stat.GrossTonnage ?? 0; vList.Visit[0].STAT.PortOfRegistry = stat.PortOfRegistry; - vList.Visit[0].STAT.InmarsatCallNumber = stat.InmarsatCallNumber; + if(!stat.InmarsatCallNumber.IsNullOrEmpty()) + vList.Visit[0].STAT.InmarsatCallNumber = stat.InmarsatCallNumber; vList.Visit[0].STAT.ShipType = stat.ShipType; vList.Visit[0].STAT.ISMCompany = new ISMCompany(); vList.Visit[0].STAT.ISMCompany.IsmCompanyName = stat.ISMCompanyName; @@ -923,17 +925,19 @@ namespace bsmd.dakosy if (aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) { reqList.RequestId[0].REG_TRANSIT = new REG_TRANSIT(); - reqList.RequestId[0].REG_TRANSIT.EniNumber = aMessage.MessageCore.ENI ?? ""; + if(!aMessage.MessageCore.ENI.IsNullOrEmpty()) + reqList.RequestId[0].REG_TRANSIT.EniNumber = aMessage.MessageCore.ENI; reqList.RequestId[0].REG_TRANSIT.EtaKielCanal = aMessage.MessageCore.ETA ?? DateTime.Now; // DEBUG: der Fallback sollte nie passieren - reqList.RequestId[0].REG_TRANSIT.ImoNumber = aMessage.MessageCore.IMO ?? ""; + reqList.RequestId[0].REG_TRANSIT.ImoNumber = aMessage.MessageCore.IMO; } else { reqList.RequestId[0].REG_VISIT = new REG_VISIT(); - reqList.RequestId[0].REG_VISIT.EniNumber = aMessage.MessageCore.ENI ?? ""; + if(!aMessage.MessageCore.ENI.IsNullOrEmpty()) + reqList.RequestId[0].REG_VISIT.EniNumber = aMessage.MessageCore.ENI; reqList.RequestId[0].REG_VISIT.EtaPortOfCall = aMessage.MessageCore.ETA ?? DateTime.Now; // DEBUG: der Fallback sollte nie passieren - reqList.RequestId[0].REG_VISIT.ImoNumber = aMessage.MessageCore.IMO ?? ""; - reqList.RequestId[0].REG_VISIT.PortOfCall = aMessage.MessageCore.PoC ?? ""; + reqList.RequestId[0].REG_VISIT.ImoNumber = aMessage.MessageCore.IMO; + reqList.RequestId[0].REG_VISIT.PortOfCall = aMessage.MessageCore.PoC; } } diff --git a/nsw/Source/bsmd.database/DBManager.cs b/nsw/Source/bsmd.database/DBManager.cs index 40540e98..587b2926 100644 --- a/nsw/Source/bsmd.database/DBManager.cs +++ b/nsw/Source/bsmd.database/DBManager.cs @@ -25,6 +25,7 @@ namespace bsmd.database private static DBManager _instance; private static ILog _log = LogManager.GetLogger(typeof(DBManager)); private static Dictionary allReportingParties; + private static Dictionary allPortAreas; #endregion @@ -198,6 +199,23 @@ namespace bsmd.database return DBManager.allReportingParties; } + public Dictionary GetPortAreaDict() + { + if(DBManager.allPortAreas == null) + { + PortArea pa = new PortArea(); + SqlCommand cmd = new SqlCommand(); + pa.PrepareLoadCommand(cmd, Message.LoadFilter.ALL); + + SqlDataReader reader = this.PerformCommand(cmd); + List portAreas = pa.LoadList(reader); + DBManager.allPortAreas = new Dictionary(); + foreach (PortArea aPa in portAreas) + DBManager.allPortAreas.Add(aPa.Locode + aPa.Code, aPa); + } + return DBManager.allPortAreas; + } + public DatabaseEntity GetMessageById(Guid id) { Message aMessage = new Message(); diff --git a/nsw/Source/bsmd.database/INFO.cs b/nsw/Source/bsmd.database/INFO.cs index cb76038e..2e9c3b57 100644 --- a/nsw/Source/bsmd.database/INFO.cs +++ b/nsw/Source/bsmd.database/INFO.cs @@ -7,10 +7,8 @@ // // Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved. -using System; -using System.Data; -using System.Data.SqlClient; using System.Collections.Generic; +using System.Data.SqlClient; namespace bsmd.database { @@ -134,7 +132,7 @@ namespace bsmd.database if (!reader.IsDBNull(3)) info.SpecialRequirementsOfShipAtBerth = reader.GetString(3); if (!reader.IsDBNull(4)) info.ConstructionCharacteristicsOfShip = reader.GetString(4); if (!reader.IsDBNull(5)) info.FumigatedBulkCargo = reader.GetByte(5); - if (!reader.IsDBNull(6)) info.DeplacementSummerDraught_TNE = (float) reader.GetDouble(6); + if (!reader.IsDBNull(6)) info.DeplacementSummerDraught_TNE = (float)reader.GetDouble(6); if (!reader.IsDBNull(7)) info.PortArea = reader.GetString(7); if (!reader.IsDBNull(8)) info.BowThrusterPower = reader.GetString(8); if (!reader.IsDBNull(9)) info.SternThrusterPower = reader.GetString(9); @@ -146,5 +144,39 @@ namespace bsmd.database #endregion + #region Validation + + public override void Validate(List errors, List violations) + { + if (!this.PortArea.IsNullOrEmpty()) + { + string key = this.MessageCore.PoC + this.PortArea; + bool hasValue = DBManager.Instance.GetPortAreaDict().ContainsKey(key); + if (!hasValue) + { + if(this.MessageCore.PoC == null) + { + foreach (PortArea pa in DBManager.Instance.GetPortAreaDict().Values) + { + if (this.PortArea.Equals(pa.Code)) + { + hasValue = true; + break; + } + } + } + + if (!hasValue) { + violations.Add(RuleEngine.CreateViolation(ValidationCode.PORTAREA, + string.Format("{0} is not in the list of valid port areas", this.PortArea), + null)); + } + } + } + + } + + #endregion + } } \ No newline at end of file diff --git a/nsw/Source/bsmd.database/PortArea.cs b/nsw/Source/bsmd.database/PortArea.cs new file mode 100644 index 00000000..2d198a7d --- /dev/null +++ b/nsw/Source/bsmd.database/PortArea.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Data; + +namespace bsmd.database +{ + public class PortArea : DatabaseEntity + { + + public PortArea() + { + this.tablename = "[dbo].[PortArea]"; + } + + #region Properties + + public string Country { get; set; } + + public string Locode { get; set; } + + public string Port { get; set; } + + public string Code { get; set; } + + public string Name { get; set; } + + #endregion + + #region abstract method implementation + public override List LoadList(IDataReader reader) + { + List result = new List(); + while (reader.Read()) + { + PortArea portArea = new PortArea(); + portArea.id = reader.GetGuid(0); + if (!reader.IsDBNull(1)) portArea.Country = reader.GetString(1); + if (!reader.IsDBNull(2)) portArea.Locode = reader.GetString(2); + if (!reader.IsDBNull(3)) portArea.Port = reader.GetString(3); + if (!reader.IsDBNull(4)) portArea.Code = reader.GetString(4); + if (!reader.IsDBNull(5)) portArea.Name = reader.GetString(5); + result.Add(portArea); + } + reader.Close(); + return result; + } + + public override void PrepareLoadCommand(IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) + { + string query = string.Format("SELECT Id, Country, Locode, Port, Code, Name FROM {0} ", this.Tablename); + + switch (filter) + { + + case Message.LoadFilter.ALL: + default: + break; + } + + cmd.CommandText = query; + } + + public override void PrepareSave(IDbCommand cmd) + { + throw new NotImplementedException(); + } + + #endregion + + #region override + + public override string ToString() + { + return this.Name; + } + + #endregion + + + } +} diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index 348b3995..930e2d0d 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("3.1.1")] +[assembly: AssemblyInformationalVersion("3.1.3")] [assembly: AssemblyCopyright("Copyright © 2014-2016 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 18597ca8..68415482 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.1.1.*")] +[assembly: AssemblyVersion("3.1.3.*")] diff --git a/nsw/Source/bsmd.database/ReportingParty.cs b/nsw/Source/bsmd.database/ReportingParty.cs index f9c134d5..8c0afa6d 100644 --- a/nsw/Source/bsmd.database/ReportingParty.cs +++ b/nsw/Source/bsmd.database/ReportingParty.cs @@ -1,10 +1,5 @@ using System; -using System.Data; -using System.Data.SqlClient; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace bsmd.database { diff --git a/nsw/Source/bsmd.database/ValidationAttribute.cs b/nsw/Source/bsmd.database/ValidationAttribute.cs index 61d8161e..74bc3556 100644 --- a/nsw/Source/bsmd.database/ValidationAttribute.cs +++ b/nsw/Source/bsmd.database/ValidationAttribute.cs @@ -33,6 +33,7 @@ namespace bsmd.database STRING_IMOCLASS = 24, DRAUGHT_IMPLAUSIBLE = 25, TIME_IMPLAUSIBLE = 26, + PORTAREA, E121 = 121, E122 = 122, E123 = 123, diff --git a/nsw/Source/bsmd.database/bsmd.database.csproj b/nsw/Source/bsmd.database/bsmd.database.csproj index 2b2f7ec9..d1046e7b 100644 --- a/nsw/Source/bsmd.database/bsmd.database.csproj +++ b/nsw/Source/bsmd.database/bsmd.database.csproj @@ -71,6 +71,7 @@ + diff --git a/nsw/Source/bsmd.hisnord/Request.cs b/nsw/Source/bsmd.hisnord/Request.cs index e0616f42..3230ab47 100644 --- a/nsw/Source/bsmd.hisnord/Request.cs +++ b/nsw/Source/bsmd.hisnord/Request.cs @@ -681,14 +681,17 @@ namespace bsmd.hisnord if (mdh.MedicalConsulted.HasValue) _mdh.MedicalConsulted = mdh.MedicalConsulted.Value ? yorntype.Y : yorntype.N; - if (mdh.NonAccidentalDeathsDuringVoyage.HasValue) - _mdh.NonAccidentialDeathsDuringVoyage = mdh.NonAccidentalDeathsDuringVoyage.Value ? yorntype.Y : yorntype.N; - if (mdh.NonAccidentalDeathsDuringVoyageCount.HasValue) + + _mdh.NonAccidentialDeathsDuringVoyage = (mdh.NonAccidentalDeathsDuringVoyage ?? false) ? yorntype.Y : yorntype.N; + if (_mdh.NonAccidentialDeathsDuringVoyage == yorntype.Y) _mdh.NonAccidentialDeathsDuringVoyageCount = mdh.NonAccidentalDeathsDuringVoyageCount.Value.ToString(); - if (mdh.NumberOfIllPersons.HasValue) + + + _mdh.NumberOfIllPersonsHigherThanExpected = (mdh.NumberOfIllPersonsHigherThanExpected ?? false) ? yorntype.Y : yorntype.N; + if (_mdh.NumberOfIllPersonsHigherThanExpected == yorntype.Y) _mdh.NumberOfIllPersons = mdh.NumberOfIllPersons.Value.ToString(); - if (mdh.NumberOfIllPersonsHigherThanExpected.HasValue) - _mdh.NumberOfIllPersonsHigherThanExpected = mdh.NumberOfIllPersonsHigherThanExpected.Value ? yorntype.Y : yorntype.N; + + // if (mdh.PortOfCallLast30Days.Count > 0) // { _mdh.PortsOfCallLast30Days = new portofcallmdh[mdh.PortOfCallLast30Days.Count]; @@ -721,14 +724,17 @@ namespace bsmd.hisnord _mdh.SanitaryMeasuresApplied = (mdh.SanitaryMeasuresApplied ?? false) ? yorntype.Y : yorntype.N; - _mdh.SanitaryMeasuresDetails = new sanitarydetail[mdh.SanitaryMeasuresDetails.Count]; - for (int i = 0; i < mdh.SanitaryMeasuresDetails.Count; i++) + if (_mdh.SanitaryMeasuresApplied == yorntype.Y) { - _mdh.SanitaryMeasuresDetails[i] = new sanitarydetail(); - if (mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresDate.HasValue) - _mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresDate = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresDate.Value; - _mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresLocation = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresLocation; - _mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresType = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresType; + _mdh.SanitaryMeasuresDetails = new sanitarydetail[mdh.SanitaryMeasuresDetails.Count]; + for (int i = 0; i < mdh.SanitaryMeasuresDetails.Count; i++) + { + _mdh.SanitaryMeasuresDetails[i] = new sanitarydetail(); + if (mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresDate.HasValue) + _mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresDate = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresDate.Value; + _mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresLocation = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresLocation; + _mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresType = mdh.SanitaryMeasuresDetails[i].SanitaryMeasuresType; + } } if (mdh.SickAnimalOrPetOnBoard.HasValue) @@ -792,11 +798,21 @@ namespace bsmd.hisnord _transit.LastPort.ETDSpecified = noa_nod.ETDFromLastPort.HasValue; } - _transit.NextPort = new nextporthazmat(); - if (noa_nod.ETAToNextPort.HasValue) - _transit.NextPort.ETA = noa_nod.ETAToNextPort.Value; - _transit.NextPort.ETASpecified = noa_nod.ETAToNextPort.HasValue; + + if (message.MessageCore.Incoming) + { + _transit.NextPort.ETASpecified = message.MessageCore.ETAKielCanal.HasValue; + if (message.MessageCore.ETAKielCanal.HasValue) + _transit.NextPort.ETA = message.MessageCore.ETAKielCanal.Value; + } + else + { + if (noa_nod.ETAToNextPort.HasValue) + _transit.NextPort.ETA = noa_nod.ETAToNextPort.Value; + _transit.NextPort.ETASpecified = noa_nod.ETAToNextPort.HasValue; + } + if ((noa_nod.NextPort != null) && (noa_nod.NextPort.Trim() != "")) _transit.NextPort.Locode = noa_nod.NextPort; } diff --git a/nsw/Source/misc/NSW_Software_Dokumentation.docx b/nsw/Source/misc/NSW_Software_Dokumentation.docx index 8862924aa4cfc6821ccc26b8ac5e9ab190806a96..5b03311b2b9e51c9a4b7554776d542d5f7120c58 100644 GIT binary patch delta 40780 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≀Z~z2Sm~uD{xo(lOsFM>A%nG(JFqb?a-~u9sudG&Dn{R z<_v&aJm0pYESE`l%3q|pN?JQPL-g@ zQmH0!z-2#@n!x4*_G+RB9-9rqT)r_JynCcOwqC7$DKky~@__ZPBrYSuV|_3xqr^yL zM_e3kTvvM=3jEqNS-+VIUYmz!ID%mKhARL`+zT=Vi$+CMWson+zLAJcvk&z@aiQZrYv`664tLDbr<3((+2 zr*0Kq^r*HWDNfb!YLvpx<3p+eSQO(vtdQ=-ZvCer#qe1tr9^`wg4Ty&w7z%$XLo=@ z_jt>Pk$)9+cyajrEXe$dQZ}q(EN=RV7l6@Xui?>de@0{e{mSj4(zDs* z)x;u}`THJJJttZdTlR!GTlg!w_DPP-v#p?6x8I5y#JXgOTLPSas&q?ooS2A2VArPo zN^3RZ;{0=Z4uR#5kkAT8&n0r=dI;b-1I=e2OV5Lz}tf_@&`OZI=uEmH86)db7UsLcu~r{Bt$MGDE7alQM<%M5bIMUMaIj1 zvg^{zkJ(*C-p;xdhkjpAQ~rDF*khy75E$UweM$v8xImYUsvPi#Z z9Sh>e+(M*ce8!o8N!yds8mIt?h4RnISqB+RG^`HIdCW9rwpU-iAXd?gW|K}m?nr2PO~)}4YLb>MnpBdJP;kUozO@9&*z#gIndTQbkpdRR91PS5EDbN8#J&=Oo{Mdng z`ay-5KQ!oNlHnB%tx z1UfPTis)gFA~Tvud9Mm#B#SOuG_DC1!I?<+nk>q)3A7>)%vMP-z%-iCT}eUgk;<%d zgP)GTrVfZx-Y zsflEID?2*P%uAf^JOM;r>~{k_5Zie1gCyRE#~=&EE;#Dd@i#N#&H@)P!Ww>6_^i|6 z6?;>n0#tWh`qrkknT>r1n2r04MVM1e?I6I#IN5CJmgncysP=$}h4SEsyJXryv4E!T zP1TekpdNP7MB8fm)^(a?j7D~A3vF@X88I~gIYa1Mn z501Jis08?wp<~Dprz)pI)tPUjqVUk2{DNa=)dM28|qbE?Vb$q8qE*uG5ura^`Gtgj9H-@eXCF9aWV@ z`3;3E3LYc55aD2nzhh7Rb8}GoI2iNMuI9fsXld~lIFzREo_E8qrg>(l0DXt~C|{TbH=fP3U? z*R?U!$*PJZMQNC45aKWmmNRI!W5s30V1;63G8OUaFbwC#OSn*Z*tA@SN*`O)JF>>r z-54jQPGGs!Se1tT^!z-cVDK^IL4`(XVt@5z&g|Nnh=|PWZY10#(-jpB4MhZ)| zGlHV(k0kI`nlkapVb=8n&KMKSXEod5c7LKV2TH6~k0&Un<;RKOF6ygm@2ei+M2``R z@unq6O4szUQP`~(Tc|Qih49HLU8zomK9ugP^JCA*iQe9hqJ~jy;Q5m=*J5cyNuKUI zBqZRikrOJw=wC8P5YKj{yD$o_mOPBIo}EnP_o;!;26b5Bw}BmqA*$FXrFZ*h-#`w1 zKeWg+vrvg6m(1QB`|2vqo=E^14Bgv&2V;yogwtmxjhLhMY z{Q|PyajBk)Ap6EdFO{hmsBsRfC||yr275ptgo_-XR;kXrGzSlW)^cVAlP7ZqS*8aJ z)SiS^-JT#3P5#g10MZqfT~{~z@zvA4-E&vYk~g%zIh*Y5bCQ0>H^5aO&o=DI4^X+g z_IAN}woEIB6ZW+`zU$j^yn_1hoZ;M)>-_jjDfhyu9ISP_a)rl|CT-4B5RyG1+A^*^p=Vvsnd@EH|C&wJ{(D(=hvW zBjkOO$t70Nb;44g`@_pU(h5AgO0V>NId(~%b@#c^(zP8739-Ms6=ELy*s(j~)Tl>n zHVODr8S1ScoawTj(XjI4(R#=pKizib+hj6-rnL9M(YLdE9P$3aEY8y38wIG@_pf1m ztanwNd7Ze7)yBhzqMN|^DF@#kfyA|SBK6x1k;&w6fP%ZFC2?)=1;*M>{ zr(bQ-N#!kC;369;YuB}gDF#$@@1moN9)np&)s<^8cJ1)%tif@$b3pc(v#&dXLvP5* zDvUa3Ym@348rK2kYtZ{ZH$OqPa(FL{OSo(2EnP7um}k35FE#9T-ynvW7vip64b zNPOYT`;~(g1#50XSrMF(Urn%tbWmS>fkz_sJf*UpdO}B2wAa8qN zb?Wdit0_%acEc<-(>tbetEa4MdeNS={?j~BUQ$3WWx0SE7yjVkqFD@~)|9lG;$rrK zO%@aMySut8k*ZZU&Y4iCU)SVD5&w^C5%w>o5aKH_!Z@t~l4jLoO#`3$Btl~!iJI7( zm1aDY7WPV#wKHCwy7(UeowlS6l#t+RyJ9|<;{Qc;CE%N5SH zbKjHLfo>2MLy0=ez2rdG%WK0hREx^{NqD}Uam}2KqQ9$y9Cku%;}vI>-q=8J+-_cQ zn{}vWzek)**Mk7yltm5J))k!bZe6V;-S;<^IX965jV@O6PGLMY;uG@1{0^a_qiTzY zn|i<@JQ0%FCuLrK{77$f(H2aKM z*!4EtWV^5|5F;V5Zs@PD?r?gx)I;P#tsa4fq1atYE-)*hfFAELmL;Xf##{FR!^SJ& z*hxAmxyJ+i&OLxt@z>aVbrP~Dh#_yqw8xPkR47b+Fc_e#8r9m*j?4|_o!V-X(GC)I zIuL4 z!H|_Md{uMm@N@ZEqrd)kZaX8$?qP-bOyJaM?9&AZ-hrserj30G0Bqk^i0>dz9J+s* zR{h;ToOiizKG&`_^~lS8&EeEpyubWg-Tb`%x7u=I0Hz6c5b?RI6fo*|v^nK;0oQTN zKZf`v>&6#;emaCIcn6L2X*lHK#Q^Fds9{f5HgZN;r=+AWqy(SQ^q2p z+PQ2wg?z*B@_hsKinx=PF`8@49h%p|8+vW^z|7r53I3QE85XY+Y3Z`wio z&Ts&fN+v$JQUK@B#q3gsgQ?ZW-Kzd;S}fb!b39aw8X>}+`mi#aILpnQcFt=ZnCk|x z%{0H*RrE^hk=o%Htc*9o>eLM+yw|>Ro?5WnG&;w*Dm_pS2df}^*rDCtUachxwk&QR zzS5V#P1Yz-Y9sQ?sA~H7SJFNskCVY4e3~2{v3DfxJZ$Ar%%eL*@sRAxza~v)4tsUp z{>wD}H`Ae3;iDH`!yc~d4wdM1hupz{k`n=^TaL{EcaMFVoE6WV+P;sqEI*!faT9+` z5FEqd+go4x3ebqB(S_7(n?guN+{DB8?lm91-zwFI=1;PNGNVQxFMj1+@z z{n2=r$UA1tZc{yBc!Sc(R5(k{x3&j)1nfs%)Eaov^=7!c&`yU66>E^%IrS0%W&SW- z!@wIcFtp$RCav>P_yBsa>v0X-s?Bt)Iq=qZ?0uOeNWp1n?d*!%39G?tb)Uaw8QX() z32HndShiKo&ig>fKuzYZ#q&~{aC3@RE$&XmQy}BAZ-kUdtW*L(`%{wf`!?oW9f`|u zxeWC}f$OAqUcKinHAjiDXGhEcHyI8Xc6ps9)_J$$C-ZO(^qG*f{IECKLGtrd-FuzZ zLw6LnsYkYwY;bP9Nsqtf62h`;_0dVAfq3>PZpoo_d3C?r3eaCzT^eS|Rf1|cE@TLc zE(H5t>Wo`rWF0f^o{iTWfzr@zY`VrK2e;Z_K|Qne@G3f8Tq>W4!r&1BGF$H&!7o`G z>K&|2sT)M2_AvSO(pGEQAr?omHhAaPneoRuCr;TTI?u2Il^~{WRfBmK*()QFxSdyJ z0#ZytXFF+xCz%&^`OQU3F~bCAIANsaV`2qK7@k|;90o|kdaMcd+HjmFJ60j^op56N z%UZP=l{CQQqM`=b&9VLf{c5X_ww9l`Zsu!8)b)iseXQxygm}6SwS{Ofwy1s@2-uNb zo5rAZ_Q%W7^ofg!imIxbn~I)o^=ES91wnye`6Ex49rk!0=m#s!BJ4u(KL2qC0A1P^ zg*GKE!VGpL;T)Y@B1Aq7IsT$aCwo(5y_jlG8AMWa$-!G^dRqj*$V8dfwT9^eJfqvb z@agxrW*kJX`G18pg8OZjMK=ovE6oYaIqrAu?!&AWHta6@{QC{==hf2#?CNcXh3|1* z@l2ejpYOx$dzR5CfrLxm**)IhaO1hW2euz%-b9|^>4$0hx!*DeV1t8kws1d)UY|5S zUk(!o3_rb`00ixZ&C&f{IF1=HU1o__SG3Gm^}hRK9QnQ18BCslLwz7z*{J&OOTZqv zqYv_^z6dTrTTu^5{8RQo;tTo!s(TPSA?$0zyUbBf;^(}~v1jLn@lgEc1uRB>?iDQN zN5;5y2&eOe1*6>uf#sntR%VKi0|YU=>VD6pT%xfY@LWBvr+#xl)Y2&*A3=DFz`tTO zL{3Y8qo~xx6e^+uckGSRC))Rdq_DX{yPN!4-HQc*R@GWRY_>2j_^BGVsOL|&Sww10 z8m^|Umsu~&s=$k@42=CMkuzD^Ew+Y36A9`V_~-YqVT1cnEo8usJ&1%872U(-Vi-R%#)^QYbJ0^(g16Eyntv+%abmb($q$Z`}kDy!gy? zzgL`aL&SaQzV~GwLKOAve2xCiCtMVh$x$bqb+I1mz?nj-!$<0*YU)@WDny6sU~oPV z)0nda&Dw1`#SFEeja7iOA$tA0c_P(!HG0SaP~Z!V(ISJZYHO_Pt#!na)B9^47JJjg z$<-Yf8mm{cf5>_Y%HUlB?n<-6E?SY6d-ekCu#i(aXqx3>Op}`gjLXmtL%bZt5LPiu zgXRxiQ647qhM;56?IWn4gVyZM5ajGs*JV6Avqe)8h3pvU0|<5_^O2~{&ITykaD_uI z0K%Qgm>U1371`Lb2dxeL_Autk5V6&6EV}e^I^YCZ5TfB6HOI}$$Og_aOKp;Z`%DyM zKH>h^qC|lPM7rZTKcf{GDP_S!f0HS-%Jz^*$cI@eqEL);h*#eVnWtm1&Ct%J=ZW~I zaB=pQ42@;&9cq5t5?@&aLwZZ%BPDzF+*JfT>*NN`dhs`Pk-Wip#lYLibWIHh&J;iMT zF+YYImM=U?L_0F!WI~X}i~3>=AexNL6z~hGh8X4voZj30F+_c9VR2&VadFAif6+cL zh{`8civ|v5VR|i8b)`aK{o8^}w+@k8-weojTqbU3)*umY;b`;y5jJy+k_|**(hs zn^#^n)KgJK!XK8y^8Ph2;W_VzuEytin&kd(*v)fiLP6jLYFS||jImm;X9iRY%nfHvJu@XN7M2Tm^iA*F^3@zi zjD?W&i`|_4dGm=;&~9DLvtp9`bDkEA`XiIb|7iJnjZ27}(!j)J0v4drvBfZ@Sp}gf zv)j>1X{XAHAG%wXB*g5z}V+!>30h z`>uOti4o1FNGy?U=AHOR-;I=@X0PT+Wiz4kB?OcGXeT>TNqU2BWU@EU#HlE%tR9(^ca%PSqg z!rw&!&AT|sIq*v+GHDe8-2yh^s|}>PdsJ=wCfR$EGrWf2C5i+!4qNeFLYxs$Z2}9D zGWI6k^Q<8<{Mj+!9Zf()44p_7(D-XPx^d`M9M+T`q=8<9V)q@+Bx;Mt76b}p#+_RX z9EscTyb^jScUn-x7DCI<#GuDQDC0~`Oq@4>^$!Gf-qc^IDCa;LD)Ut<*r6;dvfZgr z!>tzbpmei-4{(&E)KkfsofoE(q1Li~XfDFJfW;pG zMwx$|Eqx59$ayEb+!9Uss_ML1+*#BA3x9gvvl`7@LW2cu25!eZ)k-m)rfUJ$;TQ>V z%FRF8d2!y<2etv|tuX#mr?wNBfyHx%kI#GK5nD(EN~jNNn(;Jz;BGif|}<6hG?*b9+_otLN5+L zSvg!o&)a|WIR7?UJZ_GmmLeU z@Wl3`zN>Zpc$^@By{IYzu=W6Xgnyxhey|bWH?98u3MRG>P;kND%Db?Z{Inj4fPpTa z0}$;J6~r~aN($wX{QYkr*t1y&5*z!WL!Nl#buxAngccwiF@iK0lBqqWFD&;4sL zSKrBmASJ4)DMwKj?fukG_!lX>X$G;KyJ}bf*Ai279#$YHQJ-BKpd%q}Nphp!>y+Nj zi`%$EOa!Fq_7z`{=yYt{MHL!Y=Q&kt2rD8%kgzad`WZ=G$FLG&NfU?2ukMHcsPjAc z4@c4*vKLW-`R1@*lENT2BN}5>>k|bsVrE)a>?U#;Vxyxcw?wE5r;eNEIcEgB+=!#n zW+=xAMtadQ;*k0$pq`JWSp!1kc4?D=#Sn4@vl4u_9w6a!g`SYU~cgoT}u8=St0ky4eh zynlm}S}FTE>%xJPM4}6wY5n%?9viYi7Mbqg)Z@U05)^`Wl))HlF?1=Zxdt9XO*%LB z;vJK!S|C^p(8XJu^y@jRh2KytKROw3tm3oiuvUENlPi${Lk0|yVpRs~AO1%{)uRJ) zL09ll+vuEVLw|j_pn@!!gWK$A{3_(5I~uXXWRm&;13M=kD=y zt)?dmV+~on{gYIv>+nj;w9(MRQJtnDBJ+mpvLES~h2n;^anua$SSUu^8s&i*HR!n) z<$P5efT5Z`Hh1+d9psfZc-skA%^mK(XWH!p#_h14`P`Uv?K;BQNts0FkP)B?q?gMG zU>G4DVelJF2U@dICwGnI9)^7{?9DGlmfU=sUFF7vkE4xGCV_7K1&`gGBLU4mS zi@Lc}T{FMfDW42BDEKd$j5iqbD?sg3*NSqQE55YAck0weZZRruc1N_)uTV_olzqPA|`Sk)Ds`R^Q9tAXsE|>CjRHA=LUcK>yvL9yj9T8RZgZtki9E=}@uye=H`dz)A-HogZKwg33=>c-$ z{GKH$L*t)i=j@INQV%|@%goMb$I-=OY}Jpub8F=1o1GJ8OaJ}#oZ)I?bU%>cHch#+ z@@b9WK$to1qm=nYa(#**wKS^N=i}ay250t!YX7kNUvMVZ^9lY?d+q4;u^)Y7@hQ{u zWE;=U%=mlaZ;Z4XuDJal&?JQ_QrHOWbc;CRc4@m+XB9ACD5z zc8Cwz&6!P#!>myHvu42tZIz!J7O@K?8^;Utph}FeaesS$Z26##4j|t&r6O)TI&U{D zJxOKP4XW|9+3*FCbvVRBSMMaAk#y%qR5bFqMCsHGS>v031w0Kyna-WBUKx&U=$8#bg^N9+YSl7RTk^Uuzk1y68{wFpXf zv72>CbXoevyq(gwMGIK{u(D{=IEYRy4_*M)7*yA$Nj_V=xxe7UZKu&vg-f@)O_f#F}siowKAJ!;pL!J#-V|F+RZMl zr%v~WK-&bhIvod_+0T<(EdI8iI_kE@f(-^rWcIcv-LPN8%w(w%AJ^yeQ97da;sh9PX_J5>qkbq+?Q-U& zd(hr@B`stt*x*cq`u-7H2NQRE+C>kT8BzujlF^NY?F1wp*z-c*NIAhAc7KDAoIQYw zVT5y!5g4(Hb@j$Kv1 z%Z|11EU&mWRI1>s9#%U2m#0uHglP?h?e2ogdL%#X)vE4hxhb+T5o{Jfr}}FSzu(<<%?A zg#k>KJyAyF?J~Q{n@^tFNy449^e7>~TY)<)6KP}|82pZ9C}q?{Dw<$w2j$9rA=(;G9{_#i!6?S7c%!G3!aFs zQ8|~>knQ;(jHf>d?D#PsIf4vl!GHGTl>ty4jjoaKtU+;*3DYjD2ssg`=;%7jAVU4h zIli(wyYhp2?+lcG)P*T^_gGu$&8Xrs%TL^9Ew!8Em1zAGM=Z5-Hp<@X2k9SgXR?n1 zHLVQ>9jLNZYAU?DykMmewBOD*I#U3MTJDwT-z2a<|8W2F0}7-d4GM+|1OWsElw^X!^$Tu|E%G(R#A_`_DppJN z?#hiDP=#n?6=%df4$lufpDQ-iMx%$<%z_M!=b!=cBRWuuO>(rx~b#1de(p8HKytD5iEMv*4A6gH^I> z297dm-2{^yR!y?xJxTPyyF89)Ml+(l=uxW1(!tpciGfWYhDkfTc zs0`y!_draB+Xeq5xh-Z=YhH=r{33j<4uplm(z)j2Aza$BF2gsp9$czt6)~1yBx&-5dK%!ta%8?`vMSvH9=@v3WVvbs{pTjLzb>Az?b^4IG*O z44h0~MveHY9+)a@3}3N!&6=)R5Gr4Cnmg>BX<`Vtsoptf9SLUzwxOgJ|_w@sP5-=DV^q-S(-T%R+Eh$mx zH{kjoGElB4#@(tpQZjASyH#ypfGI{8D-8cb1~|Yhi)v!jlzyad%KrO*$Z-FM3>h4F zCc$|Q5#WD@RXTR)_s3_B4&i`$k&+^yapWd*h;8~_fVPSwgaN6B8OUfnSq-YJf?aha zBO8l(V0!(YN>IR5EF~1I<_P5=0PPG_et@FtCmCWQ+7Vb?#4bXRHuh%bPjRNo%sOak z`iY2k3l8S|a6Hy`#BHo#614!`pyXdH(pY(D)FeA*P}*=;in^zB{9S^_h2SfJozFcIpMB`Q1yS?XhPSV4mz}bfOZJ`! z9FfO?&g{aFOQ`hSo4{BCph1073r+^j;HuPbQ=6No6K877jnUq-2>vN!Q?a|y0=y^Y zGko4NX!G)TMR{3HGby1zdz`M*SC>9M)vAJeuJ|!TDwHl_B}_4`+WZF%rzFe&A;UpQ zOTeSOuiJa@%!N(6gR!hvS5E&#Tu_T{vO~JtZ-(`gUinK2`JucCfz0d;X?^fmqa%7fN<2we2&e z=fr|*|9yeo5N0mh){_KSoat+~GqoD@CV8qjgNNw0_2b&AS&P-d@xT|`O&<#&D(ofad2#m4N~ z69obFFcUo+x+Nh;a*7Q{D}G;G`)>91T9!%e%6dWK*l|D-oUu;q%7U6j`wOrRv}Kt% z*vjTuMqTYL@=V?0ZPMk_;34agBRHuk80-&PL5)XfI}_WDAtK+i>wjw)75Qr_p;|31 z;bT{PuZs{0?2YdiAU{1^Sr#9_noy>fl!)K)$2!(i-$9t~g1Bd!E&9+Ed|yCMtgbmB za;77I>Ss!WmurM}9~_re2Whi~3=as}EGuOw5r{@hN%dj|6|G;uJGvEjRpDBz&_?Q? zlTK>q@JXrxJsBRe5aGHk%)Qi299uQ%r_Xk=?evvb?}}kGgv4k00Hh00T$PZms#R+O zV9FSnK5)3}9u8$(XOR3pNYghEn9N`mTa^mZxVC@TN@Y2YiZka~Rg!f!UEBS5v|4^a zWUzFAd+WV`kycBjOY)Y}*Qdw{n1EQ2WacuOd*q-U_jSLa_N_mC9#}9@Ft>U zs7QJZfa*a5%4YWXhDrf=0jwnD>b3^!zevn0m>wcqq$fBJTVy4v;dzPKtZD`ivi69@6TC(l zy3fXQ3YE`~++PpL%Z6up2(oQmTMs$&(mO;;98C!~%El72eEk9>2E(8{JmJ17B4#A? zi6>Y`6Ka4dkFpXOo{=aU!w<~maOEOpe4KA#3YtLbG3o4{N`&he?+}x_Ot;5w%{|BX zl_cDnMLd2TR_A9KJJSU zxfD*q*RU){&I`6(5Zk$5lL-)Xj?c4mjcE$dDogL+D^qJ+q?u+yjVY*l zE;d*-4_dA}zrCW&)I?jkBRa%r_bY=b^?j>aXZ$&TIeW?Y?iFrgSs+9;PR%#K@TyO4 zHBK!u-O>Oao2U3EL1)qC=b z!V!YQP2QMUEI1{kOxAn%c^V;%l6z+7;ato@{i)eEhh)kAnrt_T6X?;2-@~nggPTj(FUf+=_Oo#DT>o@eX>5_jydB7#k8_Fp=r% z$ECYSL_$zeNT;Yg+3COY$NDo8cDugFhAkj1+SH;5`Jw`m%7oH%Y|;DET)BE+#YUJ^ znF`Qo0zuRFu9qwMcdkw$sz_OxiGP`%G-!ZnTVHx&W*WgHW-#jp5!V40C^Cwv?S#hf z3d%=AQdt{$P6IcE(?#ZK&Mf~DTPRF>N7f&KTm7Nl%$#yny$5+Gun#DGy_QMsuppth zUcc7+C}nFsANpO*3){gFv53^o@=3rFFvi#PC9)($Uix8{I%Di zdIBM)J{wb))Q>2T09?S8Y?k1Bel-kR$)Kg6;fu`t##E{Q5>0&RRWGFp*e{D&Pu2g( zpBaYQiaplr_Tm!&uOX@Zf$8&jPN0{xEZDCc&GtGdCSt{h5|v>#9DK3$lUO)}q+nlIrF#8&m&DyUpk$o<+< z8f**bHm|wwcmh2%{c#EDtFooisPDM(V%{B!61baQ8L{Qo>`3{m>7M43^jG7cu4r&8 z1kKj0Xq&(gLi4~>-0M`&jc<%hj}6O2nLZ1?AtP;C3+viQpnn-OCW61^K?TDH{tgWEE+A>Ew2LEHy@P6sqv$I6ZGk?Q3^dc0CqEqkbC$HxF zKSk=-VFr6l;lKHXJz7$o9%_=B5gtGZ8AB7&CtQ{;WS*q75K^nqefbPr(b^m3Z)e(q z)JNU6!D{IK07ll4!#D2qCkOKLS6F95`u5q%k!!QV9{1jqOUjC-9xcYqD*ZxCPR6-P zN_k<;-+^_DL!Y+Sr?i*WM^i~FBc4oy?%)Pb?A&nOuW;dQ>y5|6;40qGq zmge%>PIpUPucs&1T&vp_JLXwPMA$zi)ylTfylIseVp!(M(zkNTlUlCUIo^Ut#nj7g z?{>Aov*`W!_XlA@-zdRXDDQVYDsK$Zu79YlyJ|L-T-`S4x|N!DS7NMFaF&nNJrmq< zsDBMemgsR@wq(X3-_WJ+nDzkR%s$yYn@Y1gT{Eb-v(K74>KK<&G>@lic#f5qtNv{< z+WNdAvYRm4aNiX8%hNK{Lg(GDJU|eoiM}}osDbK-Mmr~U!!HeX@Hs)1EPt>9+$AYF z$Loa8qTCTc1&ig82Z%$@+Dv>cx7nu7RzBFoJY+6$ZZMN*VGO?!DqvT)i|~vp#m3C{jC?QpXH8mC!=$*pr$m zRVvh76V6*&y+^sWOXdN>>0bs;?HwI73vugBfYwu~+9g@NR`H~9%IeCQ=k)ngi%X{* z^Tied5+Fx`#JL#61G>QYw&{%j)cIh?_t`S1}ziF2z~x-Q+KU+hgO^V2^tBTs`|GcXYs{f?4#B@H(fUe@)@ly%`Y6EtV>qbI}je}gSH#b zkIM6~o?~tCB2rXHWDF(Q4kpZW98tiMJII;Da>NiGM-VzdtLSl^$&W)Js1DF1(a4xx zbeW|phmI`TmPvrQpdy*fQ+=<$=yK)XHJfowOr8WGY9)Wj)Wb$hbS|$e{SN=+mSbt) zr)lOM|3(jc0cIW;0_=o&{~f&-es8rF{~Ptbd1tzKoI|H~0wUsXL?XOLJ|NB)3dV@V zOu`w;5FFlH3zJJn zHe`tTu}2G-mjH$V`n`6nC_od#12q-gw=Dfn&;^ z+jzs0ClN`;pV0d{Ep40#`kJ4kTe5DFNoJ5j-Mme^7$(^sZk;hbsppK z6KmgP-Tx;vUI7{>)iP#Hj~QJBE(R8btHni$b60|7^)|hds@mXs$r%8OzHY;%%itkc zN1BXrt-x?itw(SNh)R_c?YYyy)vh4-0G72T32ci3WJ;db?c0Pu3>2`0*a^r`@^JY4 zc1Ii%pYaN^&!G<*t7!l?@19m~{;Nb3qhPY`^BvHr7!0t}{*xktUHe*-;@+>CzU4k8 zS=G1B5wghZq%f;@$OtHm*8P^%HhLAo^NKp_+VWgq5u8F#aCGpjDGETF7EoCL+q;tY z-wllZ*p|S9M)2?j3Yj4n{K3fjn<+N`JQOUR*DMI}}XizsimcxN_#YFd*DgcVYj8v|$Uq#`IdkKc(9xYX?+Ri@}0f^^sY(-nuNr ze89a$?AO*%uQn~<536s&$lvDqef_1=l&>C_ zj&a?Q62+OOGfy)I!OpqQE>uV)4o!gv_LBy^BXi3KT*FT&&uj)!jE{czN7*oDEUa4o zJK_!xj$ZK-0w_r_38m4=mJk>k@lzrF;Gg)WnzZMLoy4C9p44H-25?O@)m1-8W|1sd ztskhV`9l)A2H(QWHnQUj&+R&zGel10%TEPQ;6;3U*3}Ry+#%_opU|Rgw&&oeT~0hPpD{nAcr+;2y3{*d~zJF^%|2iKV)d1gHBY4lYZ?@T3_!pZviryXfk<( z{PZp>uTbOZ*Q#Il(%L4bo&8>WTv3zM5QOsh3SC9BMzB1=UP}S^-vqgF-d+(D`Yid} zQ5hBph%<@WnFuiHw8?=U`l8Hw+qYn4mZ0G-UGC<7J`z!RIE2TU#3~|$K0;DJRK7N| z$PSdqbS$jELwGPjoI3UhJQPRJw=ep69aqZW;5Wx%$kTE0cgLL@K8EL}@$9?e@p{IW z{hUKmiZ~C9r%*k|Jk#a-^(*h^_4-~okq?r^5sXlZFBq_+YMxf|fq;P#(fWr-a_5mZ zW@v;qPB<|#?*2=$f>6Yrp86LW z1ie2J{2Tz%-%-dhTrsvyB3Jl*$x-Nb@X2?`xB(hW5;yU;)iH&`se3`mY&Yq4qHsLf zgRu|JDZ!)s1%H~jQaNOkuF=5V};NODcoXPTNFp(x$u9=!68l zq_qBQ#w-^`!`xBn+G`M)dX8W3s~Hisxr zang$w4z}q*y`qR%ROdJ96{mWiMEtgRI zYbANyO>x%HO1Ok9-=x35jjsWHNafuRMx9=b2tf5S7MZh%qk9!f)fcsp{&(WSyc#n? zZLIEf2$jX18aUi;MgF`t8jD|LAl<)mTpO*3p|^n${p~L$GcgT>!mJ~Uorp7wnXog9 zo{%$(nxHd_oPaY69^Ul)Ut<>WMOmcmWbY0=jf*Q#S^L`4+`QjYZKtJR%r|dXebL^2 zfIjxaT!P){w$m`@f4%w5f4#a9=f>hxXIdNd;%eQNW1bifshniK=F$X-I+a}0FmiHU zY;8^nm~ehWfm)3Dc`Jx#C? z7T%#ubjI^V#_ff4G5qHB`fEW`vNM24n1gYF{mpncD|(F20dq?>=SyA=H;(g0f{C?mZO51pE^8G0HO}8) zvq>HCTvBg5&s12qqvn5+W*TIZ;2YxHZ&UAelGL)55-~EJWc@_ib1m*TlAAAe7@%!5 za#id3*wzJ*fYeD%%F>vGTR?H@HTCm=m3`&vpTy;hV+ojM*tQn~bIkA8uF`smNqns& z9el9Qg!kw0OO_K&eQNEVS`tf>H`TV?gy3?WbFg`z3i_IIZg!L1cYiz30b=fs>Yb2a z@Yrs&q0!DP`5C<3Nfu?cXuQ4bQc8qs#z*FWpLaR-pBCl*42i%$<^XAN?nW0ciGK8{ z0g|MIHv0&Y)C?LUwG)Nmk0d^OjtF1wrp81J zFp%DX)_^*44sFOzD1byF!?misac=b>tw&2-t8Y*0qetK2HBsHFKlq#$47z}|>{yU6 zCMjE-#yt&w-N8DaUX-rbJx#W#a@Wt$R4Z9%;JT7fzs-2QK?{olLnTO4Z+QurHNadJ zdgc2$6V}WUS|M=#!d$HsAdO)r#i0Eq({J;{4Bogri#nyo55S?p>)4JIt?Q;N32s_G zm6GsAkxgE3m^DV`*A}V)@sg*>UYxS{KkZ#-P*YpGricnk69NJO>AiQQBfUxqy@-H7 zXi`IoYyqi45Q6mH3B5O!L+`zJ0R^NfRRMt;Jm={5ojdpYaev;qduF|}_PgG;GLxNo z);#Y{9p6%~;vKKp1(+iyn_xD{(F@6wq#IIb?J!af~ zXi-uEIQ_+ZMi0RkLQu0)TjzsS?@o0hx zyETgEaDju3RX*-f9bUk5REP3RC8|JRTK_b#hk{hV7PXHMA$w6_#HB|SnF3IId8(X! zG*UZQPc7}hVp1v4>7fv8&U54M-I%M`dzP&zNCP_z?ZkdfGh)j)8k`->D3QB2or6~A z9Ns*%#j&|IZ;P|)k`0Owp(vs4u&Rbu;0-fS^4vJQS*=Bf1$G=K=9iQpw8sGAZ@jO zU1OKah{PklGVLv(o$oGq9U%O->Z#^(A{D4}H3Dx{9qq!b5JY-afunAy^slUR|E&-l ztqJ)CGGw9;Ef6YA0eVSA0n+}nLb|L{U@acY1D5gatBpjBNR>#l`y2gD`xCZxe&{e5 zGOjWN^-I1;Ik=I(pZM0lS0qVhn)$IwYSyI5dv3Rhk{boD-k6ge5jMwu<^rNv0X1n; z8l0~dV@l67tPQ3<^+nV6P)!~kx-uGg5Ns(dxdMy{*F!u4OZTl^4nh(T($5xnb?|oW zTDKIov_&0O8u=PYZyMJ-S#jgEUN5DJQuSw0Bp58qR>YsPgTIX;A=+%T40~3{GVY;T z0O12av=juXYucjH(uQ>vBrtRH$pXpsqGUOW6%&>59fRM@&KLM#=|PovV<;c@=LWM{ z76Np=YEV)18>@q_6_2k4R;4{=6#64U6<@1U`(bS2_%rr46?|NSLOM(ik3L+(SA6l5 zSrKSQfx_h#0uCX@$3OjE|GN{ds)FiYPC|@#mGODk(6K7Ui6AUB4_>*_3#lw?i#ieO z;kB!G=K|96A58EByW> zPGilCrh1`b{@RF1ZO$9Yc&-VR$i6seZl|@XPa)d%&3L^-p$hb%#ZVKy(f?`Lq*j;7 zqYwCVQ-2v9YOhx2vj0nr|Crz^0=k;fU)gJ}+^L9Ld7BaLdtUnp23$R7Vv@7`AzyZ2 zt?}?fWcqo(4S}wh+1Y-`=*O+@C+6>f5+%L%o~5(c<{YI7k>^!MeS565S6_QdxK@Uc=Iu;vbc?RNkV57D*Z!~iQgg`@-fq0pA zL{??r103HRVVhFtdv{6dD{JMdzkWxj`oo3#1nX-;Gc|ir@ueJp?DTu0qXxPeU=d!n zB$P2HI5)e6>RK>&T(Xj?&5Mkh7|zBqNzr3IOK8qj9s4*lRJK0VE;Mk#Vom&ptO)Ar zfmE2AoSgd7F1|=dJdh1PZbV4Hgm-uv`=Z5?ZZ9muN2$23SAEWs+8y!OXlK5>_e9(r;9Mx&8k}FYolWj18|x^aOXVUzP=+;Pfh4KEzT$w- zq(%ns*3X%9owZ#Qh)@qM^uRZ`72Yk@ixNq)CKc8wAErqj_rjNPW2qGZ-Y9D2JG6 z0*%cNQRB9M+f2P#W{*v?H54pJ&v_v~SO#S|pAV#x)gXkf9mjQKu>fV+Ec%!oG|18) z@%P;KT-$$qc-0)Ubb0-XX@(Ok{VjJ4{TCIifV2G^FHz?b;W72gMUl8vDM$6x7;F67 zoo2DS*sS3WuMA^G*jx^FU@@s^vH~;d)4p!`213fKC)cQ z8WnH>pP8T6!b(e~b}o*_kxKjU@X?$DViQVFZ-9Uy@^3M5y5mQTbz~YIq9j}2= zKG4vmsn3+uWPWz6V6fm?R*TZQNU)0F+IZm-|H#3RovzuaVruleLAvM+?FeN73@`7}l9*k*lmkDg>j&&e61bXX09tw5lAWfqCe!=dG1~hz(<}o(z$O+?{TV109Af zBOQgS^+y8+9~qPksgMnZYd&Bdt7;9Pr_Ud%kAl#<4&L{AIx5ENx*~6f`!Qs@yGmnX z{_V0-C)q|j`26OeTA6FR{B8}xs;HUTFx%BvBpCs20G6WD+!`3#9A1Axq0W;@?yRi< z>fP+sDH7)bbQDeJ{QC@x7l9=F4v$Z$e$oh^H}3m`(fmQyI1CKJzgZ`4?%oc6a!$5W zjh*Kd$X+awPhU!J*nMlMVVbG59Or^ZCub;cc52{l&xL{wb#%aQa#p6Bt^LpW&Mn16 zv~vhTRwy(UcIjD%4H$<+;@uMOxAno#&f~4Y@I1RtFIVBaer~)sZSNo@1LQGnkS_zI zDCDx^E7rJhRaN@G61|AyRP*j!KM~2|%Tqwk2e7gwk%k)K;E8|NuoYNY2BjiBQf&5Z ze2_`$Yw@S+Ni5!E;%PCQR@)lmNUlJ7!0^d2r-mQ%-ppe`c7#bUKa5{gdbUl1>Rel2XZ3v zTU`dPm+2<1eBd&zoZ<|()o$Q5EDyb?%;@QgP)J^tGUr$oxgq;rqkU<0HM%lD^i`g@ zY-3C*;~=x#=ErxWp`Rw~YuQY~F7^HhRv=N|zolX&jvG98g}EeM513ju}00vmeaE5J=?}V1$m0swm@M1`^bP*QpT2Zw{ zbU=o|uUInflRZ>)G8I$Y7MW5;+k9>T#!(xcYzV&I?XRIyr6=?{(!CS zBEF#Smgggz#C)1uU^nc=^)+h(L|O-8-qytr+#e!I8>7uPKOIw|H(&>P_S=wwH0tjJ zN3j(Yg$0Pd$nB=)(rr&V$Y}Sx>TC7_UJW;cZX1c)`erH}~X0 z&0**(^?Y{?ourrJ`4(q^y=uHllYNOd=1ih}ojH@_(wfR>eQ@z|WnTU8rb~V4&AZ8j ztFzb)P4Rj~=xjLIT*k-<)Ejj19ku&>>1rn}0-Q2<&vmeaKBrT#s$I5cWC@s?TG^)g z^bU)ABxHJTia4gfKOGnrKT5v3dAPOY4C9P~gq96H2ws@l<+kLG@9>>kjay)mQ^PnV z6nQ!zSWm~+pxFZ@?uLAR>QFN@40kj*Ux13SdzYli_!L<8x80Dk_l z-Cj9bXsTz8``3VCf znD@F#l+^?bTi-@xhJRytp5zjv;AbnsHZfHGahzl?j#J-f6j*MllQV&n?sc^}DD6o` z$M$$+E>`!dnAfJAtF&E=e3l@5%enTWdT=5pGbxqb4yeCi@Wr13benaG;B{(ADIuMc z&(5ig+fJa{)@qdzhF^Rh9KeO@KAbo?U&05zdi9T;JUE{6#~C&zB$IYF?Or|N?}67E z?1>8-?7{1%fb1UDv=E43#~GbHZ3j4L_{2ml;2fV1l*5x;M0<`esH_ps zkrs2;NO$o*)((Qk~#UTsFqVU~ju zTo#VkahVJOxqfa>669-cFYw5?Hepk7x2p3I)vY;s)GW-17~Z!_?)|KZmAthmp{GTo zhn}xAY=^tNFrB%hh(`U%7u)v9zO1aT5`jJSP34s-Nne+pmIp#jk>Z=IxP2+xar6BO zfPG9CHIqdm3pEpjv{bov<||0~9wq*A{eWMuN$(SQm!qC8o(S38Q>9!hBrZ*zq1FH- z;D9&w*5^lJ3-C_vr2+5l{kuGsI=s79`R>OYVp#(%lEXu4h>V1c!d{MhoEQ~G>Uv`G zgXvQyJa$vN9qz!==g5Q%Mhbk&`>VU(0C%WX=VDZ9TO{?!{oQHeRP5K(BW!mJJGAI} zG(Llqw?hYIdJ)o!9HR6evOuw2@*J#R?x1lOlhIKE4%$2)+w!yw?(y9jouwT%a$b{TLG zlChWiwxU<0QD&O+sR@^sv6H!e!{!J!Fh0$`=%a(SNX z^wWKa^6QV(wT3>BJN*v`=dzq3cWwuUILhdsSnquexr=!5%s8R&CLz~~<47YtK~p`K zg8nrN!aDi2aN6w;wO%H~;&@ii7ULv0r!|rL_cf$#1-kH-r_n#mss%;#;D=osC_qpw zv*>vHWhu0p{9@$ivuVluTTN9vad?(AW*~FaU|d>@-DZDu#wab!v>{3kxZ8m%~M! z?&uM><9CB(OrDkAd|;&tvg>jvlzrA8mr;tBiiSU^QS?4$t4JDABO215$HH4UCK0ms z(+F1`G*p6W*ED6%qQkFNG8LiFQ0-3vprK@n;pluUbaM=vsNr6=#9s9T&zH z=q)~%=NHvk`vOyM$eroW6E(4Q$=`>4M1waoE4v&|ju;Sb|9j1+NP395+m=>*p&X1< zZ^cG%pjEzi?Sv?{e5O+g#LtjrC)IQD$fhs65E=I4rr9dRNkjdLT5dHE^h(aWTua&o zNaU+fFQU;LQ?q)vcG%J~;^pP#T2jW}1d({u=)=RFiRiiKY$z*mWM36Mq2?#2a@eu) z=$)3;aSeZ7_Yn)Q=!fVFh#*rZE=dlEHa8Z=L9*npC5W5Pkry*J%#f?myl4G}b1U~V z*%76B6d{jpiZ(e%l_V9B^?0w(xW!2h5QJfx;5WO?DeN?DsCKW&foRQE-bcTLnS(#b zrzT751_!EXjiBv;Bu#2_qq|74lP5$jQzDl;kEBDAw&@i~!#tAvUn5IJLT zP^uEnKJdg*b0tb7ta?YW3YJ>xa2RA8D+;h}9w0V~PI~?9)YeCNI%byrPw#e3o+Mt7 z=0GGNBn%vno6RWBs}{@-*NE1_s8#DOm2&68aHVzPixj(0k3AKA38oS^XoPM}m#!X% z)|-wjUA}9O?dKKQbK*eEKF?+X;FN83!5U{7XCAE8_(7u^i`q$fR_`46n^vem(p-?1 zT8jbJ0m!flmSyD6@`n`u#(@4#Fd4d(&4_Mo{8!-%C^W9LTI9+Vjz#N$1&BR_7D`DE^iKUUy-tB^I8str;!kZMWwY6eOJX1aEU`k&*j^x=9OygiziMOI6 zsb6fIbk*y)y(q&(i~S1SQBaLa?6jfln;HR}$T+H)t&OMM)|Hl`L*j7@e`*Rw;9#$=AGnLN2ie^i#ghl?*A}xN@VOe@vcP6>Li{| zu1x)l850AbpKHM@hHACcyD*L!OXjgr7ZjRi`p({_=<>y zNMu~Uhb4&>mWNcy-`9P~$K-Q9<{o?d$I5z2$IAAEyN_Q9O_A0+&k_QsZ@J>AGq++h zNyVcK0JUkKCV82Qf~Mmd?B3a%_>ou{oZPbSf}13a_;SobuVS)wKx7*KvXp>Df6S+m zZH;rbsk?aFbVSR?;#r5lvYDc#z*(6|_Vuv+82uZkec;M3x67u$ZHu2%o#`e{9gRVs z45hvyRNj0Uj#8&EplUJ`F`iCwn-LJbB~V^=EE7~&1}$?eTJ||V1AZ9lXF7bToq*r^ zz)S{0))93i(0#L;b^=d#w`6*!-s>wj*4H6$b)~%&h+H&U;JN61fA*8wUquw7i}}~- ziyiXb|DV46pF4fI=C3R(igbLV1E>f2ycVRbl~^CX7wY1O)%nK3XnU#d@D5>6!`o#( z-pYJ(1xK0!hLXETMM(z>v+pMLv6EykO4=UR<1H#YNz%4v!%#=o-K-(PpFY1%uClq# z>+4C5d^E8#9lN4CIba%kOpfa-wv}Ni&td0xFD)vH5lYs{kSuEh9B1?aPNS8 zc?fj$lOAIlr-O+T-=!a2UsV&&hzY=vElzX1x23;e9}@=bBCN=9vD#exxwh=Mt}_~k zEC_}vS5L>#jkr{mrGISSohOqRg~PLy8tR{;I9##TYlJwG21S`3=Rjt+^$*XExec{f zwC*yo+dq~c`taHDWbYwevWd}+r4+|MGOud}^n5oF=J1hraP536F3t6WlZY8$giTIh zJ={1hCf;W~{)2yzy!bk)O2%WY1i|cRvo|V;-aHQo&!ZR_9HG01oT<6niSo~CfU1n4 zABvNdL-=pQ2zsLZ_I<83l_qV zB)%!r9XPiC;u#;|`;9n)YexE|K_idktKz!SDEVDV6h&c^Z02MRcW~7F<26Job}Gw~ z;Wyox#1})Rs>U)TQ_X1(DMN(_G#*Gc^Cy4nzDqu3ZPth_-+E`iuQ#}VRcK)S=ok@4 zp}DS{#00NU_a0oozux>L5P522@qFjQ^Huug14d(q6aJw%omJZUe%n)q*h>s#NYd=B za{OK4LvsuasZuPYL$Vn!*77)sTelW4rTv6+H`ZMZ!`fu{zz6bty7fkI?m}uz>&BmGavoFAOP>$^iaF z<;KOpp!~gxo^>FQ@KjFlZ{F!Y4W7mz+fx;=q~nqJHY`YiG6$9z-NQ%5jBclGr4Z_60xcl1@J)20wKxR5o zAgwcqkhbCJ*@M7atu6g67X(H6s4LR=SY$nGDxQdaqRf1%B%L-2eap delta 28344 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 ZYC!Ymf7cHFIkJ<$q!Sc~pp@UN{{vL0D%Jo1