view pkg/soap/erdms/service.go @ 5415:4ad68ab239b7 marking-single-beam

Factored creation of default class breaks in SR import to be reused with markings, too.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 07 Jul 2021 12:01:28 +0200
parents f09f142239a5
children
line wrap: on
line source

// This is Free Software under GNU Affero General Public License v >= 3.0
// without warranty, see README.md and license for details.
//
// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// Copyright (C) 2018 by via donau
//   – Österreichische Wasserstraßen-Gesellschaft mbH
// Software engineering by Intevation GmbH
//
// Author(s):
//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>

package erdms

import (
	"encoding/xml"
	"time"

	"gemma.intevation.de/gemma/pkg/soap"
)

// adn (dgs goods) internal adn code (unnr + seqnr: to make each adn good unique)
type AdnCodeType string

// adn class and classifications codes
type AdnClassType string

// adn (dgs) labels applicable for a dgs good
type AdnLabelType string

// Older CBS (number) code (3 digits) use by statistics organisations (backw comp) but replaced by newer iso 3166 (2 letters).
type CbscountryCodeType string

// iso 6346 container type (code)
type ContIdType string

// containertype textual description
type ContNameType string

// indication (flag) wheater shiptype code is a single ship or a transport combination
type CombinationFlagType bool

// Country iso 3166 code (2 alpha)
type CountryCodeType string

// Country iso 3166 code (3 alpha)
type CountryCode3Type string

// Countryname type (name of the country)
type CountryNameType string

// Country iso 3166 numcode (3 digits)
type CountryIsoNumType string

// techn directive craft type code (eu hull db)
type CraftTypeType string

// inland cones 0,1,2,3,V (as used for DGS goods and cones calculations)
type ConesType string

const (
	ConesType0 ConesType = "0"

	ConesType1 ConesType = "1"

	ConesType2 ConesType = "2"

	ConesType3 ConesType = "3"

	ConesTypeV ConesType = "V"
)

// dimension type (length, width, draught etc) in [cm] (no decimals)
type DimType int64

// older 2 digit dvk shiptype code (replaced by unrec
type DvkTypeType string

// record erased (not actual anymore) flag type
type ErasedType bool

// eri location code type as used for eri_locations
type ErilocCodeType string

// eri location name type as used in eri_locations
type ErilocNameType string

// flags 0,B,V (dang goods indication seagoing vessels)
type FlagsType string

const (
	FlagsType0 FlagsType = "0"

	FlagsTypeB FlagsType = "B"

	FlagsTypeV FlagsType = "V"
)

// fairway code (text)
type FwCodeType string

// ADN dangerous goodnames, description
type GoodDgsNameType string

// non-dangerous goodnames, description
type GoodNameType string

// ADN dangerous good synonym name,description
type GoodSynType string

// HS code as used by customs
type HsCodeType string

// hectometre code (hectomere in [hm] (no decimals) on the fairway)
type KmCodeType string

// lastupdate, last modification date time of this record
type LastupdateType time.Time

const LastupdateTypeFormat = "2006-01-02T15:04:05.999Z07:00"

func (lut *LastupdateType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
	var value string
	if err := d.DecodeElement(&value, &start); err != nil {
		return err
	}
	t, err := time.Parse(LastupdateTypeFormat, value)
	if err != nil {
		return err
	}
	*lut = LastupdateType(t)
	return nil
}

// one of the supported languages (basic and additional set), based on ISO 639-1
type LangType string

const (
	LangTypeXX LangType = "%%"

	LangTypeLc LangType = "lc"

	LangTypeNl LangType = "nl"

	LangTypeDe LangType = "de"

	LangTypeFr LangType = "fr"

	LangTypeEn LangType = "en"

	LangTypeBg LangType = "bg"

	LangTypeCs LangType = "cs"

	LangTypeDa LangType = "da"

	LangTypeEl LangType = "el"

	LangTypeEs LangType = "es"

	LangTypeEt LangType = "et"

	LangTypeFi LangType = "fi"

	LangTypeHu LangType = "hu"

	LangTypeIt LangType = "it"

	LangTypeLt LangType = "lt"

	LangTypeLv LangType = "lv"

	LangTypePl LangType = "pl"

	LangTypePt LangType = "pt"

	LangTypeRo LangType = "ro"

	LangTypeSk LangType = "sk"

	LangTypeSl LangType = "sl"

	LangTypeSv LangType = "sv"

	LangTypeHr LangType = "hr"

	LangTypeRu LangType = "ru"

	LangTypeSr LangType = "sr"
)

// lat long (WGS decimal [.] coordinates) coordinate type
type LatlonType float64

// un locode (2 country + 3 location code)
type LoCodeType string

// Number of possible (departure) exist (routes) for a location
type LocExitsType int32

// VTS/IVS (code)name active in certain area and acting as a reporting point (when departing from that location)
type LocVtsCodeType string

// location type, terminal type (a number indicating type of location,terminal)
type LocTypeType int32

// lloyds flag code for a certain country (seagoing)
type LloydsflagType string

// NST code (corresponing nst2007 EU statistics codes for goods).
type NstCodeType string

// NtS (Notices to Skippers) code/Value datatype
type NtsCodeType string

// NtS name/description (belonging to a ntsCode) datatype
type NtsNameType string

// NtS subtype (sub data type, there are several nts tables)
type NtstypeType string

// ADN dangerous good packing group I, II, III
type PackGrpType string

// UN rec 21 inner package code
type PackIdType string

// Un rec 21 inner package name/description
type PackNameType string

// Password type (belonging to a user, used to identify a user and its role and home country).
type PasswordType string

// quay type (terminals), indicating quay nrs/id's
type QuayType string

// record counter (nr of records available or in a set)
type RecCountType int64

// reftype Type (reftool data reftype, such as: risidx, eri_location, eri_hscode, nts_data)
type ReftypeType string

const (
	ReftypeTypeRis_idx ReftypeType = "ris_idx"

	ReftypeTypeEri_location ReftypeType = "eri_location"

	ReftypeTypeEri_hscode ReftypeType = "eri_hscode"

	ReftypeTypeEri_adncode ReftypeType = "eri_adncode"

	ReftypeTypeEri_conttype ReftypeType = "eri_conttype"

	ReftypeTypeEri_packtype ReftypeType = "eri_packtype"

	ReftypeTypeEri_shiptype ReftypeType = "eri_shiptype"

	ReftypeTypeEri_country ReftypeType = "eri_country"

	ReftypeTypeNts_barrage ReftypeType = "nts_barrage"

	ReftypeTypeNts_communication ReftypeType = "nts_communication"

	ReftypeTypeNts_country ReftypeType = "nts_country"

	ReftypeTypeNts_direction ReftypeType = "nts_direction"

	ReftypeTypeNts_direction_max ReftypeType = "nts_direction_max"

	ReftypeTypeNts_direction_min ReftypeType = "nts_direction_min"

	ReftypeTypeNts_gui_labels ReftypeType = "nts_gui_labels"

	ReftypeTypeNts_ice_accessibility ReftypeType = "nts_ice_accessibility"

	ReftypeTypeNts_ice_condition ReftypeType = "nts_ice_condition"

	ReftypeTypeNts_ice_classification ReftypeType = "nts_ice_classification"

	ReftypeTypeNts_ice_situation ReftypeType = "nts_ice_situation"

	ReftypeTypeNts_indication ReftypeType = "nts_indication"

	ReftypeTypeNts_interval ReftypeType = "nts_interval"

	ReftypeTypeNts_language ReftypeType = "nts_language"

	ReftypeTypeNts_limitation ReftypeType = "nts_limitation"

	ReftypeTypeNts_measure ReftypeType = "nts_measure"

	ReftypeTypeNts_position ReftypeType = "nts_position"

	ReftypeTypeNts_reason ReftypeType = "nts_reason"

	ReftypeTypeNts_reference ReftypeType = "nts_reference"

	ReftypeTypeNts_regime ReftypeType = "nts_regime"

	ReftypeTypeNts_reporting ReftypeType = "nts_reporting"

	ReftypeTypeNts_subject ReftypeType = "nts_subject"

	ReftypeTypeNts_tag ReftypeType = "nts_tag"

	ReftypeTypeNts_target_group ReftypeType = "nts_target_group"

	ReftypeTypeNts_type ReftypeType = "nts_type"

	ReftypeTypeNts_weather_category ReftypeType = "nts_weather_category"

	ReftypeTypeNts_weather_class ReftypeType = "nts_weather_class"

	ReftypeTypeNts_weather_direction ReftypeType = "nts_weather_direction"

	ReftypeTypeNts_weather_item ReftypeType = "nts_weather_item"
)

// RefData record version numbering (automaically, starts with 1 and increments on updates, requesting version 0=dont care)
type RefrecVersionType int64

// remarks string (remarks about the maintance of a record or any other remarks)
type RemarksType string

// ris index (ISRS) code type (full ris index code)
type RisCodeType string

// locationames as used in the ris index
type RislocNameType string

// ris idx related ENC's type as used in ris idx (list of ENC id's)
type RisrelencType string

// ris idx object code type (single code for a junction, termcode etc padded), subpart of the ris idx.
type RisobjCodeType string

// ris idx communication information TXTDSC
type RiscomminfoType string

// ris idx object function code type (junction, berths etc)
type RisobjfuncType string

// ris idx section node id
type RissectnodeType string

// ris idx national Gauge Code type (can be utilised to store any national coding/id/link for gauges)
type RisgaugeidType string

// ris idx applicability from /  to km (in hectometres (no decimals))
type RisapplikmType int64

// ris idx reference level code (indicating the ref level)
type RisreflevelcodeType string

// ris idx reference level value [cm]
type RisreflevelvalueType int64

// ris idx geod reference
type RisgeodrefType string

// ris idx zero point [cm]
type RiszeropointType int64

// ris idx category of time schedule (cattab)
type RiscatoftimeschedType string

// ris idx for ship type
type RisforshiptypeType string

// ris idx use of ship useshp
type RisuseofshipType string

// ris idx link to external XML file
type RislinkextxmlType string

// UNrec 28 shiptype (4 digits)
type ShipTypeType string

// shiptype name (textual) description
type ShiptypeNameType string

// source string, to specify the source of this record/data or the update.
type SourceType string

// ADN signal code (to group dgs for cones/flags calculations)
type SignalCodeType string

// terminal code type (remark: termcode is the only part of eri locs with variable length, historical reasons).
type TermCodeType string

// unlocode countrycode part (first 2 of unlocode) as used in ris idx
type UnlocCCType string

// unlocode location code part (last 3 of unlocode) as used in ris idx
type UnlocLCType string

// UN nr (4 digits) adn nr for identifying ADN dangerous goods (according CCNR)
type UnnrType string

// reftool username(reftool accountname) type, to idetify a user and its role.
type UserNameType string

// cargo weight type, integer nr (units [tons], [kg]) depending on element)
type WeightType int64

// adn warning (dgs) card id
type WarnIdType string

// adn warning card
type WarnCardType string

type MatchByCode struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCode"`

	*MatchByCodeType
}

type MatchByCodeResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCodeResponse"`

	*MatchByCodeResponseType
}

type MatchByName struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByName"`

	*MatchByNameType
}

type MatchByNameResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByNameResponse"`

	*MatchByNameResponseType
}

type GetDataXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXML"`

	*GetDataXMLType
}

type GetDataXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXMLResponse"`

	*GetDataXMLResponseType
}

type GetMutations struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutations"`

	*GetMutationsType
}

type GetMutationsResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutationsResponse"`

	*GetMutationsResponseType
}

type GetRisDataXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXML"`

	*GetRisDataXMLType
}

type GetRisDataXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXMLResponse"`

	*GetRisDataXMLResponseType
}

type MutateDataXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXML"`

	*MutateDataXMLType
}

type MutateDataXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXMLResponse"`

	*MutateDataXMLResponseType
}

type RequestMutationXML struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXML"`

	*RequestMutationXMLType
}

type RequestMutationXMLResponse struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXMLResponse"`

	*RequestMutationXMLResponseType
}

type MatchByCodeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCodeType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Code string `xml:"code,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`
}

type MatchByCodeResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByCodeResponseType"`

	// Indicates how many records are available/were found
	// (due limitations less records can be returned/available in the resulting xml structure).
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

type MatchByNameType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByNameType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Lang *LangType `xml:"lang,omitempty"`

	Name string `xml:"name,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`
}

type MatchByNameResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ matchByNameResponseType"`

	// Indicates how many records are available/were found
	// (due limitations less records can be returned/available in the resulting xml structure).
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

type GetMutationsType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutationsType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	// from, to in datetime format in UTC time
	FromDate time.Time `xml:"fromDate,omitempty"`

	ToDate time.Time `xml:"toDate,omitempty"`
}

type GetMutationsResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getMutationsResponseType"`

	// Indicate how many records are available/were found.
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

type GetDataXMLType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXMLType"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Subcode string `xml:"subcode,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`
}

type GetDataXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getDataXMLResponseType"`

	// Indicates how many records are available/were found.
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RefdataReturn []*RefdataReturnType `xml:"refdataReturn,omitempty"`
}

// NoNS is a helper type to allow string tags without a namespace.
type NoNS struct {
	NS   string `xml:"xmlns,attr"`
	Text string `xml:",chardata"`
}

type GetRisDataXMLType struct {
	// XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXMLType"`

	//Subcode string `xml:"subcode,omitempty"`
	Subcode NoNS `xml:"subcode,omitempty"`

	Funcode NoNS `xml:"funcode,omitempty"`

	Version *RefrecVersionType `xml:"http://rwsreftool/ version,omitempty"`
}

type GetRisDataXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ getRisDataXMLResponseType"`

	// Indicates how many records are available/were found.
	RecCount *RecCountType `xml:"recCount,omitempty"`

	RisdataReturn []*Ris_idxType `xml:"risdataReturn,omitempty"`
}

type MutateDataXMLType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXMLType"`

	Username *UserNameType `xml:"username,omitempty"`

	Password *PasswordType `xml:"password,omitempty"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	RefData *RefdataReturnType `xml:"refData,omitempty"`
}

type MutateDataXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ mutateDataXMLResponseType"`

	*StatReturnType
}

type RequestMutationXMLType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXMLType"`

	Username *UserNameType `xml:"username,omitempty"`

	Password *PasswordType `xml:"password,omitempty"`

	Reftype *ReftypeType `xml:"reftype,omitempty"`

	InUserList bool `xml:"inUserList,omitempty"`

	RefDataReqMut *RefdataReqMutType `xml:"refDataReqMut,omitempty"`
}

type RequestMutationXMLResponseType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ requestMutationXMLResponseType"`

	*StatReturnType
}

type ExceptionType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ exception"`

	// exception code
	Exception int32 `xml:"exception,omitempty"`

	// exception message in English
	Message string `xml:"message,omitempty"`
}

type RefdataReturnType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ refdataReturnType"`

	Reftype struct {
		Value *ReftypeType
	} `xml:"reftype,omitempty"`

	Ris_idx *Ris_idxType `xml:"ris_idx,omitempty"`

	Eri_location *Eri_locationType `xml:"eri_location,omitempty"`

	Eri_hscode *Eri_hscodeType `xml:"eri_hscode,omitempty"`

	Eri_adncode struct {
		*Eri_adncodeType
	} `xml:"eri_adncode,omitempty"`

	Eri_conttype *Eri_conttypeType `xml:"eri_conttype,omitempty"`

	Eri_packtype *Eri_packtypeType `xml:"eri_packtype,omitempty"`

	Eri_shiptype *Eri_shiptypeType `xml:"eri_shiptype,omitempty"`

	Eri_country *Eri_countryType `xml:"eri_country,omitempty"`

	// NtS element is only available in the return refdata structure.
	// It is not available in the Req Mutation datastructure because we can not mutate nts data (not allowed)!
	Nts_data *Nts_dataType `xml:"nts_data,omitempty"`
}

type RefdataReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ refdataReqMutType"`

	// BE SURE to edit the basic (simple)types, DONT edit any of the subelements from here!
	Reftype *ReftypeType `xml:"reftype,omitempty"`

	Ris_idx *Ris_idxReqMutType `xml:"ris_idx,omitempty"`

	Eri_location *Eri_locationReqMutType `xml:"eri_location,omitempty"`

	Eri_hscode *Eri_hscodeReqMutType `xml:"eri_hscode,omitempty"`

	Eri_adncode *Eri_adncodeReqMutType `xml:"eri_adncode,omitempty"`

	Eri_conttype *Eri_conttypeReqMutType `xml:"eri_conttype,omitempty"`

	Eri_packtype *Eri_packtypeReqMutType `xml:"eri_packtype,omitempty"`

	Eri_shiptype *Eri_shiptypeReqMutType `xml:"eri_shiptype,omitempty"`

	Eri_country *Eri_countryReqMutType `xml:"eri_country,omitempty"`
}

type StatReturnType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ statReturnType"`

	// 0=ok, 1=warning, 2=error
	Err int32 `xml:"err,omitempty"`

	Message struct {
	} `xml:"message,omitempty"`
}

type Ris_idxType struct {
	//XMLName xml.Name `xml:"http://rwsreftool/ ris_idxType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	RisidxCode *RisCodeType `xml:"risidxCode,omitempty"`

	CodeOld *RisCodeType `xml:"codeOld,omitempty"`

	UnlocCC *UnlocCCType `xml:"unlocCC,omitempty"`

	UnlocLC *UnlocLCType `xml:"unlocLC,omitempty"`

	WwsectCode *FwCodeType `xml:"wwsectCode,omitempty"`

	Objcode *RisobjCodeType `xml:"objcode,omitempty"`

	Hectomt *KmCodeType `xml:"hectomt,omitempty"`

	Objfunc *RisobjfuncType `xml:"objfunc,omitempty"`

	Objname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"objname,omitempty"`

	Locname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"locname,omitempty"`

	Wwname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"wwname,omitempty"`

	Routename struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"routename,omitempty"`

	Relrisindex *RisCodeType `xml:"relrisindex,omitempty"`

	Sectionnode *RissectnodeType `xml:"sectionnode,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	Relenc *RisrelencType `xml:"relenc,omitempty"`

	Comminfo *RiscomminfoType `xml:"comminfo,omitempty"`

	Gaugeid *RisgaugeidType `xml:"gaugeid,omitempty"`

	Vesselconvlength *DimType `xml:"vesselconvlength,omitempty"`

	Vesselconvbreadth *DimType `xml:"vesselconvbreadth,omitempty"`

	Vesselconvdraught *DimType `xml:"vesselconvdraught,omitempty"`

	Vesselconvairdraught *DimType `xml:"vesselconvairdraught,omitempty"`

	Availablelength *DimType `xml:"availablelength,omitempty"`

	Clearancewidth *DimType `xml:"clearancewidth,omitempty"`

	Availabledepth *DimType `xml:"availabledepth,omitempty"`

	Clearanceheight *DimType `xml:"clearanceheight,omitempty"`

	Applicabilityfromkm *RisapplikmType `xml:"applicabilityfromkm,omitempty"`

	Applicabilitytokm *RisapplikmType `xml:"applicabilitytokm,omitempty"`

	Reflevel1code *RisreflevelcodeType `xml:"reflevel1code,omitempty"`

	Reflevel1value *RisreflevelvalueType `xml:"reflevel1value,omitempty"`

	Reflevel2code *RisreflevelcodeType `xml:"reflevel2code,omitempty"`

	Reflevel2value *RisreflevelvalueType `xml:"reflevel2value,omitempty"`

	Reflevel3code *RisreflevelcodeType `xml:"reflevel3code,omitempty"`

	Reflevel3value *RisreflevelvalueType `xml:"reflevel3value,omitempty"`

	Zeropoint *RiszeropointType `xml:"zeropoint,omitempty"`

	Geodref *RisgeodrefType `xml:"geodref,omitempty"`

	Catoftimesched *RiscatoftimeschedType `xml:"catoftimesched,omitempty"`

	Forshiptype *RisforshiptypeType `xml:"forshiptype,omitempty"`

	Foruseofship *RisuseofshipType `xml:"foruseofship,omitempty"`

	LnktoextXMfiletimesched *RislinkextxmlType `xml:"lnktoextXMfiletimesched,omitempty"`

	LnktoextXMfilepastime *RislinkextxmlType `xml:"lnktoextXMfilepastime,omitempty"`

	Vesselconvlength2 *DimType `xml:"vesselconvlength2,omitempty"`

	Vesselconvbreadth2 *DimType `xml:"vesselconvbreadth2,omitempty"`

	Vesselconvdraught2 *DimType `xml:"vesselconvdraught2,omitempty"`

	Vesselconvairdraught2 *DimType `xml:"vesselconvairdraught2,omitempty"`

	Availablelength2 *DimType `xml:"availablelength2,omitempty"`

	Clearancewidth2 *DimType `xml:"clearancewidth2,omitempty"`

	Availabledepth2 *DimType `xml:"availabledepth2,omitempty"`

	Clearanceheight2 *DimType `xml:"clearanceheight2,omitempty"`

	Vesselconvlength3 *DimType `xml:"vesselconvlength3,omitempty"`

	Vesselconvbreadth3 *DimType `xml:"vesselconvbreadth3,omitempty"`

	Vesselconvdraught3 *DimType `xml:"vesselconvdraught3,omitempty"`

	Vesselconvairdraught3 *DimType `xml:"vesselconvairdraught3,omitempty"`

	Availablelength3 *DimType `xml:"availablelength3,omitempty"`

	Clearancewidth3 *DimType `xml:"clearancewidth3,omitempty"`

	Availabledepth3 *DimType `xml:"availabledepth3,omitempty"`

	Clearanceheight3 *DimType `xml:"clearanceheight3,omitempty"`

	Catoftimesched2 *RiscatoftimeschedType `xml:"catoftimesched2,omitempty"`

	Forshiptype2 *RisforshiptypeType `xml:"forshiptype2,omitempty"`

	Foruseofship2 *RisuseofshipType `xml:"foruseofship2,omitempty"`

	LnktoextXMfiletimesched2 *RislinkextxmlType `xml:"lnktoextXMfiletimesched2,omitempty"`

	LnktoextXMfilepastime2 *RislinkextxmlType `xml:"lnktoextXMfilepastime2,omitempty"`

	Catoftimesched3 *RiscatoftimeschedType `xml:"catoftimesched3,omitempty"`

	Forshiptype3 *RisforshiptypeType `xml:"forshiptype3,omitempty"`

	Foruseofship3 *RisuseofshipType `xml:"foruseofship3,omitempty"`

	LnktoextXMfiletimesched3 *RislinkextxmlType `xml:"lnktoextXMfiletimesched3,omitempty"`

	LnktoextXMfilepastime3 *RislinkextxmlType `xml:"lnktoextXMfilepastime3,omitempty"`

	Startdate *LastupdateType `xml:"startdate,omitempty"`

	Enddate *LastupdateType `xml:"enddate,omitempty"`

	Infodate *LastupdateType `xml:"infodate,omitempty"`

	// specific Ris idx remarks, reasons for change (descriptions as received with the ris idx)
	RisidxRemarks *RemarksType `xml:"risidxRemarks,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	// remarks regarding the maintance of the ris idx
	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_locationType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_locationType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ErilocCode *ErilocCodeType `xml:"erilocCode,omitempty"`

	CodeOld *ErilocCodeType `xml:"codeOld,omitempty"`

	RisCode *RisCodeType `xml:"risCode,omitempty"`

	LoCode *LoCodeType `xml:"loCode,omitempty"`

	FwCode *FwCodeType `xml:"fwCode,omitempty"`

	TermCode *TermCodeType `xml:"termCode,omitempty"`

	KmCode *KmCodeType `xml:"kmCode,omitempty"`

	Name struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"name,omitempty"`

	LocType *LocTypeType `xml:"locType,omitempty"`

	Termname struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"termname,omitempty"`

	QuayFrom *QuayType `xml:"quayFrom,omitempty"`

	QuayTo *QuayType `xml:"quayTo,omitempty"`

	TermType *LocTypeType `xml:"termType,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	// VTS/IVS (code) acting as the default reporting (receiving) point (when departing from this llocation)
	IvsVTSCode *LocVtsCodeType `xml:"ivsVTSCode,omitempty"`

	// Nr of possible exits (routes) when departing from this location >1 means a reporting or routepoint has to be specified.
	Exits *LocExitsType `xml:"exits,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_hscodeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_hscodeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	CodeOld *HsCodeType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *GoodNameType `xml:"Loc,omitempty"`

		NL *GoodNameType `xml:"NL,omitempty"`

		DE *GoodNameType `xml:"DE,omitempty"`

		FR *GoodNameType `xml:"FR,omitempty"`

		EN *GoodNameType `xml:"EN,omitempty"`

		BG *GoodNameType `xml:"BG,omitempty"`

		CS *GoodNameType `xml:"CS,omitempty"`

		DA *GoodNameType `xml:"DA,omitempty"`

		EL *GoodNameType `xml:"EL,omitempty"`

		ES *GoodNameType `xml:"ES,omitempty"`

		ET *GoodNameType `xml:"ET,omitempty"`

		FI *GoodNameType `xml:"FI,omitempty"`

		HU *GoodNameType `xml:"HU,omitempty"`

		IT *GoodNameType `xml:"IT,omitempty"`

		LT *GoodNameType `xml:"LT,omitempty"`

		LV *GoodNameType `xml:"LV,omitempty"`

		PL *GoodNameType `xml:"PL,omitempty"`

		PT *GoodNameType `xml:"PT,omitempty"`

		RO *GoodNameType `xml:"RO,omitempty"`

		SK *GoodNameType `xml:"SK,omitempty"`

		SL *GoodNameType `xml:"SL,omitempty"`

		SV *GoodNameType `xml:"SV,omitempty"`

		HR *GoodNameType `xml:"HR,omitempty"`

		RU *GoodNameType `xml:"RU,omitempty"`

		SR *GoodNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	// English (NST2007) description.
	NstName *GoodNameType `xml:"nstName,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_adncodeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_adncodeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	AdnCode *AdnCodeType `xml:"adnCode,omitempty"`

	CodeOld *AdnCodeType `xml:"codeOld,omitempty"`

	Unnr *UnnrType `xml:"unnr,omitempty"`

	AdnClass *AdnClassType `xml:"adnClass,omitempty"`

	AdnClassif *AdnClassType `xml:"adnClassif,omitempty"`

	ImoClass *AdnClassType `xml:"imoClass,omitempty"`

	PackGrp *PackGrpType `xml:"packGrp,omitempty"`

	Name struct {
		Loc *GoodDgsNameType `xml:"Loc,omitempty"`

		NL *GoodDgsNameType `xml:"NL,omitempty"`

		DE *GoodDgsNameType `xml:"DE,omitempty"`

		FR *GoodDgsNameType `xml:"FR,omitempty"`

		EN *GoodDgsNameType `xml:"EN,omitempty"`

		BG *GoodDgsNameType `xml:"BG,omitempty"`

		CS *GoodDgsNameType `xml:"CS,omitempty"`

		DA *GoodDgsNameType `xml:"DA,omitempty"`

		EL *GoodDgsNameType `xml:"EL,omitempty"`

		ES *GoodDgsNameType `xml:"ES,omitempty"`

		ET *GoodDgsNameType `xml:"ET,omitempty"`

		FI *GoodDgsNameType `xml:"FI,omitempty"`

		HU *GoodDgsNameType `xml:"HU,omitempty"`

		IT *GoodDgsNameType `xml:"IT,omitempty"`

		LT *GoodDgsNameType `xml:"LT,omitempty"`

		LV *GoodDgsNameType `xml:"LV,omitempty"`

		PL *GoodDgsNameType `xml:"PL,omitempty"`

		PT *GoodDgsNameType `xml:"PT,omitempty"`

		RO *GoodDgsNameType `xml:"RO,omitempty"`

		SK *GoodDgsNameType `xml:"SK,omitempty"`

		SL *GoodDgsNameType `xml:"SL,omitempty"`

		SV *GoodDgsNameType `xml:"SV,omitempty"`

		HR *GoodDgsNameType `xml:"HR,omitempty"`

		RU *GoodDgsNameType `xml:"RU,omitempty"`

		SR *GoodDgsNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Syn struct {
		Loc *GoodSynType `xml:"Loc,omitempty"`

		NL *GoodSynType `xml:"NL,omitempty"`

		DE *GoodSynType `xml:"DE,omitempty"`

		FR *GoodSynType `xml:"FR,omitempty"`

		EN *GoodSynType `xml:"EN,omitempty"`

		BG *GoodSynType `xml:"BG,omitempty"`

		CS *GoodSynType `xml:"CS,omitempty"`

		DA *GoodSynType `xml:"DA,omitempty"`

		EL *GoodSynType `xml:"EL,omitempty"`

		ES *GoodSynType `xml:"ES,omitempty"`

		ET *GoodSynType `xml:"ET,omitempty"`

		FI *GoodSynType `xml:"FI,omitempty"`

		HU *GoodSynType `xml:"HU,omitempty"`

		IT *GoodSynType `xml:"IT,omitempty"`

		LT *GoodSynType `xml:"LT,omitempty"`

		LV *GoodSynType `xml:"LV,omitempty"`

		PL *GoodSynType `xml:"PL,omitempty"`

		PT *GoodSynType `xml:"PT,omitempty"`

		RO *GoodSynType `xml:"RO,omitempty"`

		SK *GoodSynType `xml:"SK,omitempty"`

		SL *GoodSynType `xml:"SL,omitempty"`

		SV *GoodSynType `xml:"SV,omitempty"`

		HR *GoodSynType `xml:"HR,omitempty"`

		RU *GoodSynType `xml:"RU,omitempty"`

		SR *GoodSynType `xml:"SR,omitempty"`
	} `xml:"syn,omitempty"`

	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	// 0, 1, 2, 3, V
	ConesBulk *ConesType `xml:"conesBulk,omitempty"`

	ConesTank *ConesType `xml:"conesTank,omitempty"`

	ConesCont *ConesType `xml:"conesCont,omitempty"`

	// 0, B, V
	FlagsBulk *FlagsType `xml:"flagsBulk,omitempty"`

	FlagsTank *FlagsType `xml:"flagsTank,omitempty"`

	WarnCard *WarnCardType `xml:"warnCard,omitempty"`

	WarnId *WarnIdType `xml:"warnId,omitempty"`

	Label1 *AdnLabelType `xml:"label1,omitempty"`

	Label2 *AdnLabelType `xml:"label2,omitempty"`

	Label3 *AdnLabelType `xml:"label3,omitempty"`

	MaxWeightCodeInlandBulkCont *SignalCodeType `xml:"maxWeightCodeInlandBulkCont,omitempty"`

	// max weight in kg
	MaxWeightInlandBulkCont *WeightType `xml:"maxWeightInlandBulkCont,omitempty"`

	SignalCodeInlandCont *SignalCodeType `xml:"signalCodeInlandCont,omitempty"`

	// min weight in kg
	MinWeightInlandCont *WeightType `xml:"minWeightInlandCont,omitempty"`

	SignalCodeInlandExcemp *SignalCodeType `xml:"signalCodeInlandExcemp,omitempty"`

	// min weight in kg
	MinWeightInlandExcemp *WeightType `xml:"minWeightInlandExcemp,omitempty"`

	SignalCodeSeaBulk *SignalCodeType `xml:"signalCodeSeaBulk,omitempty"`

	// min weight in kg
	MinWeightSeaBulk *WeightType `xml:"minWeightSeaBulk,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_conttypeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_conttypeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ContId *ContIdType `xml:"contId,omitempty"`

	CodeOld *ContIdType `xml:"codeOld,omitempty"`

	// dimensions in cm
	Length *DimType `xml:"length,omitempty"`

	Width *DimType `xml:"width,omitempty"`

	Height *DimType `xml:"height,omitempty"`

	// empty weight in kg
	Weight *WeightType `xml:"weight,omitempty"`

	Name struct {
		Loc *ContNameType `xml:"Loc,omitempty"`

		NL *ContNameType `xml:"NL,omitempty"`

		DE *ContNameType `xml:"DE,omitempty"`

		FR *ContNameType `xml:"FR,omitempty"`

		EN *ContNameType `xml:"EN,omitempty"`

		BG *ContNameType `xml:"BG,omitempty"`

		CS *ContNameType `xml:"CS,omitempty"`

		DA *ContNameType `xml:"DA,omitempty"`

		EL *ContNameType `xml:"EL,omitempty"`

		ES *ContNameType `xml:"ES,omitempty"`

		ET *ContNameType `xml:"ET,omitempty"`

		FI *ContNameType `xml:"FI,omitempty"`

		HU *ContNameType `xml:"HU,omitempty"`

		IT *ContNameType `xml:"IT,omitempty"`

		LT *ContNameType `xml:"LT,omitempty"`

		LV *ContNameType `xml:"LV,omitempty"`

		PL *ContNameType `xml:"PL,omitempty"`

		PT *ContNameType `xml:"PT,omitempty"`

		RO *ContNameType `xml:"RO,omitempty"`

		SK *ContNameType `xml:"SK,omitempty"`

		SL *ContNameType `xml:"SL,omitempty"`

		SV *ContNameType `xml:"SV,omitempty"`

		HR *ContNameType `xml:"HR,omitempty"`

		RU *ContNameType `xml:"RU,omitempty"`

		SR *ContNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_packtypeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_packtypeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	PackId *PackIdType `xml:"packId,omitempty"`

	CodeOld *PackIdType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *PackNameType `xml:"Loc,omitempty"`

		NL *PackNameType `xml:"NL,omitempty"`

		DE *PackNameType `xml:"DE,omitempty"`

		FR *PackNameType `xml:"FR,omitempty"`

		EN *PackNameType `xml:"EN,omitempty"`

		BG *PackNameType `xml:"BG,omitempty"`

		CS *PackNameType `xml:"CS,omitempty"`

		DA *PackNameType `xml:"DA,omitempty"`

		EL *PackNameType `xml:"EL,omitempty"`

		ES *PackNameType `xml:"ES,omitempty"`

		ET *PackNameType `xml:"ET,omitempty"`

		FI *PackNameType `xml:"FI,omitempty"`

		HU *PackNameType `xml:"HU,omitempty"`

		IT *PackNameType `xml:"IT,omitempty"`

		LT *PackNameType `xml:"LT,omitempty"`

		LV *PackNameType `xml:"LV,omitempty"`

		PL *PackNameType `xml:"PL,omitempty"`

		PT *PackNameType `xml:"PT,omitempty"`

		RO *PackNameType `xml:"RO,omitempty"`

		SK *PackNameType `xml:"SK,omitempty"`

		SL *PackNameType `xml:"SL,omitempty"`

		SV *PackNameType `xml:"SV,omitempty"`

		HR *PackNameType `xml:"HR,omitempty"`

		RU *PackNameType `xml:"RU,omitempty"`

		SR *PackNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_shiptypeType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_shiptypeType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ShipType *ShipTypeType `xml:"shipType,omitempty"`

	CodeOld *ShipTypeType `xml:"codeOld,omitempty"`

	DvkType *DvkTypeType `xml:"dvkType,omitempty"`

	CraftType *CraftTypeType `xml:"craftType,omitempty"`

	// True = transport cominination type, false=single ship
	Combination *CombinationFlagType `xml:"combination,omitempty"`

	Name struct {
		Loc *ShiptypeNameType `xml:"Loc,omitempty"`

		NL *ShiptypeNameType `xml:"NL,omitempty"`

		DE *ShiptypeNameType `xml:"DE,omitempty"`

		FR *ShiptypeNameType `xml:"FR,omitempty"`

		EN *ShiptypeNameType `xml:"EN,omitempty"`

		BG *ShiptypeNameType `xml:"BG,omitempty"`

		CS *ShiptypeNameType `xml:"CS,omitempty"`

		DA *ShiptypeNameType `xml:"DA,omitempty"`

		EL *ShiptypeNameType `xml:"EL,omitempty"`

		ES *ShiptypeNameType `xml:"ES,omitempty"`

		ET *ShiptypeNameType `xml:"ET,omitempty"`

		FI *ShiptypeNameType `xml:"FI,omitempty"`

		HU *ShiptypeNameType `xml:"HU,omitempty"`

		IT *ShiptypeNameType `xml:"IT,omitempty"`

		LT *ShiptypeNameType `xml:"LT,omitempty"`

		LV *ShiptypeNameType `xml:"LV,omitempty"`

		PL *ShiptypeNameType `xml:"PL,omitempty"`

		PT *ShiptypeNameType `xml:"PT,omitempty"`

		RO *ShiptypeNameType `xml:"RO,omitempty"`

		SK *ShiptypeNameType `xml:"SK,omitempty"`

		SL *ShiptypeNameType `xml:"SL,omitempty"`

		SV *ShiptypeNameType `xml:"SV,omitempty"`

		HR *ShiptypeNameType `xml:"HR,omitempty"`

		RU *ShiptypeNameType `xml:"RU,omitempty"`

		SR *ShiptypeNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_countryType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_countryType"`

	// UN country ISO code 2 chars. Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	CountryCode *CountryCodeType `xml:"countryCode,omitempty"`

	CodeOld *CountryCodeType `xml:"codeOld,omitempty"`

	CbsCode *CbscountryCodeType `xml:"cbsCode,omitempty"`

	CountryIsoCode3 *CountryCode3Type `xml:"countryIsoCode3,omitempty"`

	CountryIsoNum *CountryIsoNumType `xml:"countryIsoNum,omitempty"`

	LloydsFlag *LloydsflagType `xml:"lloydsFlag,omitempty"`

	Name struct {
		Loc *CountryNameType `xml:"Loc,omitempty"`

		NL *CountryNameType `xml:"NL,omitempty"`

		DE *CountryNameType `xml:"DE,omitempty"`

		FR *CountryNameType `xml:"FR,omitempty"`

		EN *CountryNameType `xml:"EN,omitempty"`

		BG *CountryNameType `xml:"BG,omitempty"`

		CS *CountryNameType `xml:"CS,omitempty"`

		DA *CountryNameType `xml:"DA,omitempty"`

		EL *CountryNameType `xml:"EL,omitempty"`

		ES *CountryNameType `xml:"ES,omitempty"`

		ET *CountryNameType `xml:"ET,omitempty"`

		FI *CountryNameType `xml:"FI,omitempty"`

		HU *CountryNameType `xml:"HU,omitempty"`

		IT *CountryNameType `xml:"IT,omitempty"`

		LT *CountryNameType `xml:"LT,omitempty"`

		LV *CountryNameType `xml:"LV,omitempty"`

		PL *CountryNameType `xml:"PL,omitempty"`

		PT *CountryNameType `xml:"PT,omitempty"`

		RO *CountryNameType `xml:"RO,omitempty"`

		SK *CountryNameType `xml:"SK,omitempty"`

		SL *CountryNameType `xml:"SL,omitempty"`

		SV *CountryNameType `xml:"SV,omitempty"`

		HR *CountryNameType `xml:"HR,omitempty"`

		RU *CountryNameType `xml:"RU,omitempty"`

		SR *CountryNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Nts_dataType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ nts_dataType"`

	// Just a string (no enum) to return nts data type of the nts_data returned!
	// reftype already contains datatype.
	Ntstype *NtstypeType `xml:"ntstype,omitempty"`

	Ntscode *NtsCodeType `xml:"ntscode,omitempty"`

	CodeOld *NtsCodeType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *NtsNameType `xml:"Loc,omitempty"`

		NL *NtsNameType `xml:"NL,omitempty"`

		DE *NtsNameType `xml:"DE,omitempty"`

		EN *NtsNameType `xml:"EN,omitempty"`

		FR *NtsNameType `xml:"FR,omitempty"`

		BG *NtsNameType `xml:"BG,omitempty"`

		CS *NtsNameType `xml:"CS,omitempty"`

		DA *NtsNameType `xml:"DA,omitempty"`

		EL *NtsNameType `xml:"EL,omitempty"`

		ES *NtsNameType `xml:"ES,omitempty"`

		ET *NtsNameType `xml:"ET,omitempty"`

		FI *NtsNameType `xml:"FI,omitempty"`

		HU *NtsNameType `xml:"HU,omitempty"`

		IT *NtsNameType `xml:"IT,omitempty"`

		LT *NtsNameType `xml:"LT,omitempty"`

		LV *NtsNameType `xml:"LV,omitempty"`

		PL *NtsNameType `xml:"PL,omitempty"`

		PT *NtsNameType `xml:"PT,omitempty"`

		RO *NtsNameType `xml:"RO,omitempty"`

		SK *NtsNameType `xml:"SK,omitempty"`

		SL *NtsNameType `xml:"SL,omitempty"`

		SV *NtsNameType `xml:"SV,omitempty"`

		HR *NtsNameType `xml:"HR,omitempty"`

		RU *NtsNameType `xml:"RU,omitempty"`

		SR *NtsNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Ris_idxReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ ris_idxReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	RisidxCode *RisCodeType `xml:"risidxCode,omitempty"`

	CodeOld *RisCodeType `xml:"codeOld,omitempty"`

	UnlocCC *UnlocCCType `xml:"unlocCC,omitempty"`

	UnlocLC *UnlocLCType `xml:"unlocLC,omitempty"`

	WwsectCode *FwCodeType `xml:"wwsectCode,omitempty"`

	Objcode *RisobjCodeType `xml:"objcode,omitempty"`

	Hectomt *KmCodeType `xml:"hectomt,omitempty"`

	Objfunc *RisobjfuncType `xml:"objfunc,omitempty"`

	Objname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"objname,omitempty"`

	Locname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"locname,omitempty"`

	Wwname struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"wwname,omitempty"`

	Routename struct {
		Loc *RislocNameType `xml:"Loc,omitempty"`
	} `xml:"routename,omitempty"`

	Relrisindex *RisCodeType `xml:"relrisindex,omitempty"`

	Sectionnode *RissectnodeType `xml:"sectionnode,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	Relenc *RisrelencType `xml:"relenc,omitempty"`

	Comminfo *RiscomminfoType `xml:"comminfo,omitempty"`

	Gaugeid *RisgaugeidType `xml:"gaugeid,omitempty"`

	Vesselconvlength *DimType `xml:"vesselconvlength,omitempty"`

	Vesselconvbreadth *DimType `xml:"vesselconvbreadth,omitempty"`

	Vesselconvdraught *DimType `xml:"vesselconvdraught,omitempty"`

	Vesselconvairdraught *DimType `xml:"vesselconvairdraught,omitempty"`

	Availablelength *DimType `xml:"availablelength,omitempty"`

	Clearancewidth *DimType `xml:"clearancewidth,omitempty"`

	Availabledepth *DimType `xml:"availabledepth,omitempty"`

	Clearanceheight *DimType `xml:"clearanceheight,omitempty"`

	Applicabilityfromkm *RisapplikmType `xml:"applicabilityfromkm,omitempty"`

	Applicabilitytokm *RisapplikmType `xml:"applicabilitytokm,omitempty"`

	Reflevel1code *RisreflevelcodeType `xml:"reflevel1code,omitempty"`

	Reflevel1value *RisreflevelvalueType `xml:"reflevel1value,omitempty"`

	Reflevel2code *RisreflevelcodeType `xml:"reflevel2code,omitempty"`

	Reflevel2value *RisreflevelvalueType `xml:"reflevel2value,omitempty"`

	Reflevel3code *RisreflevelcodeType `xml:"reflevel3code,omitempty"`

	Reflevel3value *RisreflevelvalueType `xml:"reflevel3value,omitempty"`

	Zeropoint *RiszeropointType `xml:"zeropoint,omitempty"`

	Geodref *RisgeodrefType `xml:"geodref,omitempty"`

	Catoftimesched *RiscatoftimeschedType `xml:"catoftimesched,omitempty"`

	Forshiptype *RisforshiptypeType `xml:"forshiptype,omitempty"`

	Foruseofship *RisuseofshipType `xml:"foruseofship,omitempty"`

	LnktoextXMfiletimesched *RislinkextxmlType `xml:"lnktoextXMfiletimesched,omitempty"`

	LnktoextXMfilepastime *RislinkextxmlType `xml:"lnktoextXMfilepastime,omitempty"`

	Vesselconvlength2 *DimType `xml:"vesselconvlength2,omitempty"`

	Vesselconvbreadth2 *DimType `xml:"vesselconvbreadth2,omitempty"`

	Vesselconvdraught2 *DimType `xml:"vesselconvdraught2,omitempty"`

	Vesselconvairdraught2 *DimType `xml:"vesselconvairdraught2,omitempty"`

	Availablelength2 *DimType `xml:"availablelength2,omitempty"`

	Clearancewidth2 *DimType `xml:"clearancewidth2,omitempty"`

	Availabledepth2 *DimType `xml:"availabledepth2,omitempty"`

	Clearanceheight2 *DimType `xml:"clearanceheight2,omitempty"`

	Vesselconvlength3 *DimType `xml:"vesselconvlength3,omitempty"`

	Vesselconvbreadth3 *DimType `xml:"vesselconvbreadth3,omitempty"`

	Vesselconvdraught3 *DimType `xml:"vesselconvdraught3,omitempty"`

	Vesselconvairdraught3 *DimType `xml:"vesselconvairdraught3,omitempty"`

	Availablelength3 *DimType `xml:"availablelength3,omitempty"`

	Clearancewidth3 *DimType `xml:"clearancewidth3,omitempty"`

	Availabledepth3 *DimType `xml:"availabledepth3,omitempty"`

	Clearanceheight3 *DimType `xml:"clearanceheight3,omitempty"`

	Catoftimesched2 *RiscatoftimeschedType `xml:"catoftimesched2,omitempty"`

	Forshiptype2 *RisforshiptypeType `xml:"forshiptype2,omitempty"`

	Foruseofship2 *RisuseofshipType `xml:"foruseofship2,omitempty"`

	LnktoextXMfiletimesched2 *RislinkextxmlType `xml:"lnktoextXMfiletimesched2,omitempty"`

	LnktoextXMfilepastime2 *RislinkextxmlType `xml:"lnktoextXMfilepastime2,omitempty"`

	Catoftimesched3 *RiscatoftimeschedType `xml:"catoftimesched3,omitempty"`

	Forshiptype3 *RisforshiptypeType `xml:"forshiptype3,omitempty"`

	Foruseofship3 *RisuseofshipType `xml:"foruseofship3,omitempty"`

	LnktoextXMfiletimesched3 *RislinkextxmlType `xml:"lnktoextXMfiletimesched3,omitempty"`

	LnktoextXMfilepastime3 *RislinkextxmlType `xml:"lnktoextXMfilepastime3,omitempty"`

	Startdate *LastupdateType `xml:"startdate,omitempty"`

	Enddate *LastupdateType `xml:"enddate,omitempty"`

	Infodate *LastupdateType `xml:"infodate,omitempty"`

	// specific Ris idx remarks/reasons for change, as received with the ris idx
	RisidxRemarks *RemarksType `xml:"risidxRemarks,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	// remarks regarding the maintance of the ris idx
	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_locationReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_locationReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ErilocCode *ErilocCodeType `xml:"erilocCode,omitempty"`

	CodeOld *ErilocCodeType `xml:"codeOld,omitempty"`

	RisCode *RisCodeType `xml:"risCode,omitempty"`

	LoCode *LoCodeType `xml:"loCode,omitempty"`

	FwCode *FwCodeType `xml:"fwCode,omitempty"`

	TermCode *TermCodeType `xml:"termCode,omitempty"`

	KmCode *KmCodeType `xml:"kmCode,omitempty"`

	Name struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"name,omitempty"`

	LocType *LocTypeType `xml:"locType,omitempty"`

	Termname struct {
		Loc *ErilocNameType `xml:"Loc,omitempty"`

		NL *ErilocNameType `xml:"NL,omitempty"`

		DE *ErilocNameType `xml:"DE,omitempty"`

		FR *ErilocNameType `xml:"FR,omitempty"`

		EN *ErilocNameType `xml:"EN,omitempty"`
	} `xml:"termname,omitempty"`

	QuayFrom *QuayType `xml:"quayFrom,omitempty"`

	QuayTo *QuayType `xml:"quayTo,omitempty"`

	TermType *LocTypeType `xml:"termType,omitempty"`

	Lat *LatlonType `xml:"lat,omitempty"`

	Lon *LatlonType `xml:"lon,omitempty"`

	IvsVTSCode *LocVtsCodeType `xml:"ivsVTSCode,omitempty"`

	Exits *LocExitsType `xml:"exits,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_hscodeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_hscodeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	CodeOld *HsCodeType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *GoodNameType `xml:"Loc,omitempty"`

		NL *GoodNameType `xml:"NL,omitempty"`

		DE *GoodNameType `xml:"DE,omitempty"`

		FR *GoodNameType `xml:"FR,omitempty"`

		EN *GoodNameType `xml:"EN,omitempty"`

		BG *GoodNameType `xml:"BG,omitempty"`

		CS *GoodNameType `xml:"CS,omitempty"`

		DA *GoodNameType `xml:"DA,omitempty"`

		EL *GoodNameType `xml:"EL,omitempty"`

		ES *GoodNameType `xml:"ES,omitempty"`

		ET *GoodNameType `xml:"ET,omitempty"`

		FI *GoodNameType `xml:"FI,omitempty"`

		HU *GoodNameType `xml:"HU,omitempty"`

		IT *GoodNameType `xml:"IT,omitempty"`

		LT *GoodNameType `xml:"LT,omitempty"`

		LV *GoodNameType `xml:"LV,omitempty"`

		PL *GoodNameType `xml:"PL,omitempty"`

		PT *GoodNameType `xml:"PT,omitempty"`

		RO *GoodNameType `xml:"RO,omitempty"`

		SK *GoodNameType `xml:"SK,omitempty"`

		SL *GoodNameType `xml:"SL,omitempty"`

		SV *GoodNameType `xml:"SV,omitempty"`

		HR *GoodNameType `xml:"HR,omitempty"`

		RU *GoodNameType `xml:"RU,omitempty"`

		SR *GoodNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	NstName *GoodNameType `xml:"nstName,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_adncodeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_adncodeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	AdnCode *AdnCodeType `xml:"adnCode,omitempty"`

	CodeOld *AdnCodeType `xml:"codeOld,omitempty"`

	Unnr *UnnrType `xml:"unnr,omitempty"`

	AdnClass *AdnClassType `xml:"adnClass,omitempty"`

	AdnClassif *AdnClassType `xml:"adnClassif,omitempty"`

	ImoClass *AdnClassType `xml:"imoClass,omitempty"`

	PackGrp *PackGrpType `xml:"packGrp,omitempty"`

	Name struct {
		Loc *GoodDgsNameType `xml:"Loc,omitempty"`

		NL *GoodDgsNameType `xml:"NL,omitempty"`

		DE *GoodDgsNameType `xml:"DE,omitempty"`

		FR *GoodDgsNameType `xml:"FR,omitempty"`

		EN *GoodDgsNameType `xml:"EN,omitempty"`

		BG *GoodDgsNameType `xml:"BG,omitempty"`

		CS *GoodDgsNameType `xml:"CS,omitempty"`

		DA *GoodDgsNameType `xml:"DA,omitempty"`

		EL *GoodDgsNameType `xml:"EL,omitempty"`

		ES *GoodDgsNameType `xml:"ES,omitempty"`

		ET *GoodDgsNameType `xml:"ET,omitempty"`

		FI *GoodDgsNameType `xml:"FI,omitempty"`

		HU *GoodDgsNameType `xml:"HU,omitempty"`

		IT *GoodDgsNameType `xml:"IT,omitempty"`

		LT *GoodDgsNameType `xml:"LT,omitempty"`

		LV *GoodDgsNameType `xml:"LV,omitempty"`

		PL *GoodDgsNameType `xml:"PL,omitempty"`

		PT *GoodDgsNameType `xml:"PT,omitempty"`

		RO *GoodDgsNameType `xml:"RO,omitempty"`

		SK *GoodDgsNameType `xml:"SK,omitempty"`

		SL *GoodDgsNameType `xml:"SL,omitempty"`

		SV *GoodDgsNameType `xml:"SV,omitempty"`

		HR *GoodDgsNameType `xml:"HR,omitempty"`

		RU *GoodDgsNameType `xml:"RU,omitempty"`

		SR *GoodDgsNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Syn struct {
		Loc *GoodSynType `xml:"Loc,omitempty"`

		NL *GoodSynType `xml:"NL,omitempty"`

		DE *GoodSynType `xml:"DE,omitempty"`

		FR *GoodSynType `xml:"FR,omitempty"`

		EN *GoodSynType `xml:"EN,omitempty"`

		BG *GoodSynType `xml:"BG,omitempty"`

		CS *GoodSynType `xml:"CS,omitempty"`

		DA *GoodSynType `xml:"DA,omitempty"`

		EL *GoodSynType `xml:"EL,omitempty"`

		ES *GoodSynType `xml:"ES,omitempty"`

		ET *GoodSynType `xml:"ET,omitempty"`

		FI *GoodSynType `xml:"FI,omitempty"`

		HU *GoodSynType `xml:"HU,omitempty"`

		IT *GoodSynType `xml:"IT,omitempty"`

		LT *GoodSynType `xml:"LT,omitempty"`

		LV *GoodSynType `xml:"LV,omitempty"`

		PL *GoodSynType `xml:"PL,omitempty"`

		PT *GoodSynType `xml:"PT,omitempty"`

		RO *GoodSynType `xml:"RO,omitempty"`

		SK *GoodSynType `xml:"SK,omitempty"`

		SL *GoodSynType `xml:"SL,omitempty"`

		SV *GoodSynType `xml:"SV,omitempty"`

		HR *GoodSynType `xml:"HR,omitempty"`

		RU *GoodSynType `xml:"RU,omitempty"`

		SR *GoodSynType `xml:"SR,omitempty"`
	} `xml:"syn,omitempty"`

	HsCode *HsCodeType `xml:"hsCode,omitempty"`

	NstCode *NstCodeType `xml:"nstCode,omitempty"`

	// 0, 1, 2, 3, V (Inland)
	ConesBulk *ConesType `xml:"conesBulk,omitempty"`

	ConesTank *ConesType `xml:"conesTank,omitempty"`

	ConesCont *ConesType `xml:"conesCont,omitempty"`

	// 0, B, V (Seagoing)
	FlagsBulk *FlagsType `xml:"flagsBulk,omitempty"`

	FlagsTank *FlagsType `xml:"flagsTank,omitempty"`

	WarnCard *WarnCardType `xml:"warnCard,omitempty"`

	WarnId *WarnIdType `xml:"warnId,omitempty"`

	Label1 *AdnLabelType `xml:"label1,omitempty"`

	Label2 *AdnLabelType `xml:"label2,omitempty"`

	Label3 *AdnLabelType `xml:"label3,omitempty"`

	MaxWeightCodeInlandBulkCont *SignalCodeType `xml:"maxWeightCodeInlandBulkCont,omitempty"`

	// max weight in kg
	MaxWeightInlandBulkCont *WeightType `xml:"maxWeightInlandBulkCont,omitempty"`

	SignalCodeInlandCont *SignalCodeType `xml:"signalCodeInlandCont,omitempty"`

	// min weight in kg
	MinWeightInlandCont *WeightType `xml:"minWeightInlandCont,omitempty"`

	SignalCodeInlandExcemp *SignalCodeType `xml:"signalCodeInlandExcemp,omitempty"`

	// min weight in kg
	MinWeightInlandExcemp *WeightType `xml:"minWeightInlandExcemp,omitempty"`

	SignalCodeSeaBulk *SignalCodeType `xml:"signalCodeSeaBulk,omitempty"`

	// min weight in kg
	MinWeightSeaBulk *WeightType `xml:"minWeightSeaBulk,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_conttypeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_conttypeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ContId *ContIdType `xml:"contId,omitempty"`

	CodeOld *ContIdType `xml:"codeOld,omitempty"`

	// dimensions in cm
	Length *DimType `xml:"length,omitempty"`

	Width *DimType `xml:"width,omitempty"`

	Height *DimType `xml:"height,omitempty"`

	// empty weight in kg
	Weight *DimType `xml:"weight,omitempty"`

	Name struct {
		Loc *ContNameType `xml:"Loc,omitempty"`

		NL *ContNameType `xml:"NL,omitempty"`

		DE *ContNameType `xml:"DE,omitempty"`

		FR *ContNameType `xml:"FR,omitempty"`

		EN *ContNameType `xml:"EN,omitempty"`

		BG *ContNameType `xml:"BG,omitempty"`

		CS *ContNameType `xml:"CS,omitempty"`

		DA *ContNameType `xml:"DA,omitempty"`

		EL *ContNameType `xml:"EL,omitempty"`

		ES *ContNameType `xml:"ES,omitempty"`

		ET *ContNameType `xml:"ET,omitempty"`

		FI *ContNameType `xml:"FI,omitempty"`

		HU *ContNameType `xml:"HU,omitempty"`

		IT *ContNameType `xml:"IT,omitempty"`

		LT *ContNameType `xml:"LT,omitempty"`

		LV *ContNameType `xml:"LV,omitempty"`

		PL *ContNameType `xml:"PL,omitempty"`

		PT *ContNameType `xml:"PT,omitempty"`

		RO *ContNameType `xml:"RO,omitempty"`

		SK *ContNameType `xml:"SK,omitempty"`

		SL *ContNameType `xml:"SL,omitempty"`

		SV *ContNameType `xml:"SV,omitempty"`

		HR *ContNameType `xml:"HR,omitempty"`

		RU *ContNameType `xml:"RU,omitempty"`

		SR *ContNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_packtypeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_packtypeReqMutType"`

	// Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	PackId *PackIdType `xml:"packId,omitempty"`

	CodeOld *PackIdType `xml:"codeOld,omitempty"`

	Name struct {
		Loc *PackNameType `xml:"Loc,omitempty"`

		NL *PackNameType `xml:"NL,omitempty"`

		DE *PackNameType `xml:"DE,omitempty"`

		FR *PackNameType `xml:"FR,omitempty"`

		EN *PackNameType `xml:"EN,omitempty"`

		BG *PackNameType `xml:"BG,omitempty"`

		CS *PackNameType `xml:"CS,omitempty"`

		DA *PackNameType `xml:"DA,omitempty"`

		EL *PackNameType `xml:"EL,omitempty"`

		ES *PackNameType `xml:"ES,omitempty"`

		ET *PackNameType `xml:"ET,omitempty"`

		FI *PackNameType `xml:"FI,omitempty"`

		HU *PackNameType `xml:"HU,omitempty"`

		IT *PackNameType `xml:"IT,omitempty"`

		LT *PackNameType `xml:"LT,omitempty"`

		LV *PackNameType `xml:"LV,omitempty"`

		PL *PackNameType `xml:"PL,omitempty"`

		PT *PackNameType `xml:"PT,omitempty"`

		RO *PackNameType `xml:"RO,omitempty"`

		SK *PackNameType `xml:"SK,omitempty"`

		SL *PackNameType `xml:"SL,omitempty"`

		SV *PackNameType `xml:"SV,omitempty"`

		HR *PackNameType `xml:"HR,omitempty"`

		RU *PackNameType `xml:"RU,omitempty"`

		SR *PackNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_shiptypeReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_shiptypeReqMutType"`

	// UN rec 28. Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	ShipType *ShipTypeType `xml:"shipType,omitempty"`

	CodeOld *ShipTypeType `xml:"codeOld,omitempty"`

	DvkType *DvkTypeType `xml:"dvkType,omitempty"`

	CraftType *CraftTypeType `xml:"craftType,omitempty"`

	// True = transport cominination type, false=single ship
	Combination *CombinationFlagType `xml:"combination,omitempty"`

	Name struct {
		Loc *ShiptypeNameType `xml:"Loc,omitempty"`

		NL *ShiptypeNameType `xml:"NL,omitempty"`

		DE *ShiptypeNameType `xml:"DE,omitempty"`

		FR *ShiptypeNameType `xml:"FR,omitempty"`

		EN *ShiptypeNameType `xml:"EN,omitempty"`

		BG *ShiptypeNameType `xml:"BG,omitempty"`

		CS *ShiptypeNameType `xml:"CS,omitempty"`

		DA *ShiptypeNameType `xml:"DA,omitempty"`

		EL *ShiptypeNameType `xml:"EL,omitempty"`

		ES *ShiptypeNameType `xml:"ES,omitempty"`

		ET *ShiptypeNameType `xml:"ET,omitempty"`

		FI *ShiptypeNameType `xml:"FI,omitempty"`

		HU *ShiptypeNameType `xml:"HU,omitempty"`

		IT *ShiptypeNameType `xml:"IT,omitempty"`

		LT *ShiptypeNameType `xml:"LT,omitempty"`

		LV *ShiptypeNameType `xml:"LV,omitempty"`

		PL *ShiptypeNameType `xml:"PL,omitempty"`

		PT *ShiptypeNameType `xml:"PT,omitempty"`

		RO *ShiptypeNameType `xml:"RO,omitempty"`

		SK *ShiptypeNameType `xml:"SK,omitempty"`

		SL *ShiptypeNameType `xml:"SL,omitempty"`

		SV *ShiptypeNameType `xml:"SV,omitempty"`

		HR *ShiptypeNameType `xml:"HR,omitempty"`

		RU *ShiptypeNameType `xml:"RU,omitempty"`

		SR *ShiptypeNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type Eri_countryReqMutType struct {
	XMLName xml.Name `xml:"http://rwsreftool/ eri_countryReqMutType"`

	// UN country ISO code 2 chars. Be sure to edit, change the basic Simpletypes, dont edit any of the (sub)elements from here!!!
	CountryCode *CountryCodeType `xml:"countryCode,omitempty"`

	CodeOld *CountryCodeType `xml:"codeOld,omitempty"`

	CbsCode *CbscountryCodeType `xml:"cbsCode,omitempty"`

	CountryIsoCode3 *CountryCode3Type `xml:"countryIsoCode3,omitempty"`

	CountryIsoNum *CountryIsoNumType `xml:"countryIsoNum,omitempty"`

	LloydsFlag *LloydsflagType `xml:"lloydsFlag,omitempty"`

	Name struct {
		Loc *CountryNameType `xml:"Loc,omitempty"`

		NL *CountryNameType `xml:"NL,omitempty"`

		DE *CountryNameType `xml:"DE,omitempty"`

		FR *CountryNameType `xml:"FR,omitempty"`

		EN *CountryNameType `xml:"EN,omitempty"`

		BG *CountryNameType `xml:"BG,omitempty"`

		CS *CountryNameType `xml:"CS,omitempty"`

		DA *CountryNameType `xml:"DA,omitempty"`

		EL *CountryNameType `xml:"EL,omitempty"`

		ES *CountryNameType `xml:"ES,omitempty"`

		ET *CountryNameType `xml:"ET,omitempty"`

		FI *CountryNameType `xml:"FI,omitempty"`

		HU *CountryNameType `xml:"HU,omitempty"`

		IT *CountryNameType `xml:"IT,omitempty"`

		LT *CountryNameType `xml:"LT,omitempty"`

		LV *CountryNameType `xml:"LV,omitempty"`

		PL *CountryNameType `xml:"PL,omitempty"`

		PT *CountryNameType `xml:"PT,omitempty"`

		RO *CountryNameType `xml:"RO,omitempty"`

		SK *CountryNameType `xml:"SK,omitempty"`

		SL *CountryNameType `xml:"SL,omitempty"`

		SV *CountryNameType `xml:"SV,omitempty"`

		HR *CountryNameType `xml:"HR,omitempty"`

		RU *CountryNameType `xml:"RU,omitempty"`

		SR *CountryNameType `xml:"SR,omitempty"`
	} `xml:"name,omitempty"`

	Source *SourceType `xml:"source,omitempty"`

	Remarks *RemarksType `xml:"remarks,omitempty"`

	Version *RefrecVersionType `xml:"version,omitempty"`

	Erased *ErasedType `xml:"erased,omitempty"`

	Lastupdate *LastupdateType `xml:"lastupdate,omitempty"`
}

type RefWeb interface {

	// Error can be either of the following types:
	//
	//   - exception

	MatchByCode(request *MatchByCode) (*MatchByCodeResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	MatchByName(request *MatchByName) (*MatchByNameResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	GetMutations(request *GetMutations) (*GetMutationsResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	GetDataXML(request *GetDataXML) (*GetDataXMLResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	GetRisDataXML(request *GetRisDataXML) (*GetRisDataXMLResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	MutateDataXML(request *MutateDataXML) (*MutateDataXMLResponse, error)

	// Error can be either of the following types:
	//
	//   - exception

	RequestMutationXML(request *RequestMutationXML) (*RequestMutationXMLResponse, error)
}

type refWeb struct {
	client *soap.SOAPClient
}

func NewRefService(url string, tls bool, auth *soap.BasicAuth) RefWeb {
	return NewRefWeb(soap.NewSOAPClient(url, tls, auth))
}

func NewRefWeb(client *soap.SOAPClient) RefWeb {
	return &refWeb{
		client: client,
	}
}

func (service *refWeb) MatchByCode(request *MatchByCode) (*MatchByCodeResponse, error) {
	response := new(MatchByCodeResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) MatchByName(request *MatchByName) (*MatchByNameResponse, error) {
	response := new(MatchByNameResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) GetMutations(request *GetMutations) (*GetMutationsResponse, error) {
	response := new(GetMutationsResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) GetDataXML(request *GetDataXML) (*GetDataXMLResponse, error) {
	response := new(GetDataXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) GetRisDataXML(request *GetRisDataXML) (*GetRisDataXMLResponse, error) {
	response := new(GetRisDataXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) MutateDataXML(request *MutateDataXML) (*MutateDataXMLResponse, error) {
	response := new(MutateDataXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}

func (service *refWeb) RequestMutationXML(request *RequestMutationXML) (*RequestMutationXMLResponse, error) {
	response := new(RequestMutationXMLResponse)
	err := service.client.Call("", request, response)
	if err != nil {
		return nil, err
	}

	return response, nil
}