diff --git a/asn1/MAP-LCS-DataTypes.asn b/asn1/MAP-LCS-DataTypes.asn
new file mode 100644
index 0000000..08962d6
--- /dev/null
+++ b/asn1/MAP-LCS-DataTypes.asn
@@ -0,0 +1,533 @@
+MAP-LCS-DataTypes {
+   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+   gsm-Network (1) modules (3) map-LCS-DataTypes (25) version9 (9)}
+
+DEFINITIONS
+IMPLICIT TAGS
+::=
+BEGIN
+
+EXPORTS
+	RoutingInfoForLCS-Arg,
+	RoutingInfoForLCS-Res,
+	ProvideSubscriberLocation-Arg,
+	ProvideSubscriberLocation-Res,
+	SubscriberLocationReport-Arg,
+	SubscriberLocationReport-Res,
+	LocationType, 
+	DeferredLocationEventType,
+	LCSClientName,
+	LCS-QoS,
+	Horizontal-Accuracy,
+	ResponseTime,
+	Ext-GeographicalInformation,
+	SupportedGADShapes,
+	Add-GeographicalInformation,
+	LCSRequestorID, 
+	LCS-ReferenceNumber,
+	LCSCodeword,
+	AreaEventInfo
+;
+
+IMPORTS
+	AddressString,
+	ISDN-AddressString,
+	IMEI,
+	IMSI,
+	LMSI,
+	SubscriberIdentity,
+	AgeOfLocationInformation,
+	LCSClientExternalID,
+	LCSClientInternalID,
+	LCSServiceTypeID,
+	CellGlobalIdOrServiceAreaIdOrLAI
+FROM MAP-CommonDataTypes {
+   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+   gsm-Network (1) modules (3) map-CommonDataTypes (18) version9 (9)}
+
+	ExtensionContainer
+FROM MAP-ExtensionDataTypes {
+   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+   gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version9 (9)}
+
+	USSD-DataCodingScheme,
+	USSD-String
+FROM MAP-SS-DataTypes {
+   itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3)
+   map-SS-DataTypes (14) version9 (9)}
+
+	APN,
+	GSN-Address,
+	SupportedLCS-CapabilitySets
+FROM MAP-MS-DataTypes {
+   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+   gsm-Network (1) modules (3) map-MS-DataTypes (11) version9 (9)}
+
+	Additional-Number
+FROM MAP-SM-DataTypes {
+   itu-t identified-organization (4) etsi (0) mobileDomain (0)
+   gsm-Network (1) modules (3) map-SM-DataTypes (16) version9 (9)}
+;
+
+
+RoutingInfoForLCS-Arg ::= SEQUENCE {
+	mlcNumber		[0] ISDN-AddressString,
+	targetMS		[1] SubscriberIdentity,
+	extensionContainer	[2] ExtensionContainer	OPTIONAL,
+	...}
+
+RoutingInfoForLCS-Res ::= SEQUENCE {
+	targetMS		[0] SubscriberIdentity,
+	lcsLocationInfo	[1] LCSLocationInfo,
+	extensionContainer	[2] ExtensionContainer	OPTIONAL,
+	...,
+	v-gmlc-Address	[3]	GSN-Address	OPTIONAL,
+	h-gmlc-Address	[4]	GSN-Address	OPTIONAL,
+	ppr-Address	[5]	GSN-Address	OPTIONAL,
+	additional-v-gmlc-Address	[6]	GSN-Address	OPTIONAL }
+
+LCSLocationInfo ::= SEQUENCE {
+	networkNode-Number	ISDN-AddressString,
+	-- NetworkNode-number can be either msc-number or sgsn-number
+	lmsi			[0] LMSI		OPTIONAL,
+	extensionContainer	[1] ExtensionContainer	OPTIONAL,
+	... ,
+	gprsNodeIndicator 	[2] NULL		OPTIONAL,
+	-- gprsNodeIndicator is set only if the SGSN number is sent as the Network Node Number
+	additional-Number	[3] Additional-Number	OPTIONAL,
+	supportedLCS-CapabilitySets	[4]	SupportedLCS-CapabilitySets	OPTIONAL,
+	additional-LCS-CapabilitySets	[5]	SupportedLCS-CapabilitySets	OPTIONAL
+	}
+
+ProvideSubscriberLocation-Arg ::= SEQUENCE {
+	locationType	LocationType,
+	mlc-Number	ISDN-AddressString,
+	lcs-ClientID	[0] LCS-ClientID	OPTIONAL,
+	privacyOverride	[1] NULL		OPTIONAL,
+	imsi			[2] IMSI		OPTIONAL,
+	msisdn		[3] ISDN-AddressString	OPTIONAL,
+	lmsi			[4] LMSI		OPTIONAL,
+	imei			[5] IMEI		OPTIONAL,
+	lcs-Priority	[6] LCS-Priority	OPTIONAL,
+	lcs-QoS		[7] LCS-QoS	OPTIONAL,
+	extensionContainer	[8] ExtensionContainer	OPTIONAL,
+	... ,
+	supportedGADShapes	[9]	SupportedGADShapes	OPTIONAL,
+	lcs-ReferenceNumber	[10]	LCS-ReferenceNumber	OPTIONAL,
+	lcsServiceTypeID	[11]	LCSServiceTypeID	OPTIONAL,
+	lcsCodeword	[12]	LCSCodeword	OPTIONAL,
+	lcs-PrivacyCheck	[13]	LCS-PrivacyCheck	OPTIONAL,
+	areaEventInfo	[14]	AreaEventInfo	OPTIONAL,
+	h-gmlc-Address	[15]	GSN-Address	OPTIONAL }
+
+	-- one of imsi or msisdn is mandatory
+	-- If a location estimate type indicates activate deferred location or cancel deferred 
+	-- location, a lcs-Reference number shall be included.
+
+LocationType ::= SEQUENCE {
+	locationEstimateType	[0] LocationEstimateType,
+	...,
+	deferredLocationEventType	[1] DeferredLocationEventType	OPTIONAL }
+
+LocationEstimateType ::= ENUMERATED {
+	currentLocation	(0),
+	currentOrLastKnownLocation	(1),
+	initialLocation	(2),
+	...,
+	activateDeferredLocation	(3),
+	cancelDeferredLocation	(4) }
+--	exception handling:
+--	a ProvideSubscriberLocation-Arg containing an unrecognized LocationEstimateType
+--	shall be rejected by the receiver with a return error cause of unexpected data value
+
+DeferredLocationEventType ::= BIT STRING {
+	msAvailable	(0) ,
+	enteringIntoArea	(1),
+	leavingFromArea	(2),
+	beingInsideArea	(3) } (SIZE (1..16)) 
+-- beingInsideArea is always treated as oneTimeEvent regardless of the possible value
+-- of occurrenceInfo inside areaEventInfo.
+-- exception handling:
+-- a ProvideSubscriberLocation-Arg containing other values than listed above in 
+-- DeferredLocationEventType shall be rejected by the receiver with a return error cause of 
+-- unexpected data value.
+
+LCS-ClientID ::= SEQUENCE {
+	lcsClientType	[0] LCSClientType,
+	lcsClientExternalID	[1] LCSClientExternalID	OPTIONAL,
+	lcsClientDialedByMS	[2] AddressString	OPTIONAL,
+	lcsClientInternalID	[3] LCSClientInternalID	OPTIONAL,
+	lcsClientName	[4] LCSClientName	OPTIONAL,
+	...,
+	lcsAPN		[5] APN		OPTIONAL,
+	lcsRequestorID	[6] LCSRequestorID	OPTIONAL }
+
+LCSClientType ::= ENUMERATED {
+	emergencyServices	(0),
+	valueAddedServices	(1),
+	plmnOperatorServices	(2),
+	lawfulInterceptServices	(3),
+	... }
+	--	exception handling:
+	--	unrecognized values may be ignored if the LCS client uses the privacy override
+	--	otherwise, an unrecognized value shall be treated as unexpected data by a receiver
+	--	a return error shall then be returned if received in a MAP invoke 
+
+LCSClientName ::= SEQUENCE {
+	dataCodingScheme	[0] USSD-DataCodingScheme,
+	nameString	[2] NameString,
+	...,
+	lcs-FormatIndicator	[3] LCS-FormatIndicator	OPTIONAL }
+
+-- The USSD-DataCodingScheme shall indicate use of the default alphabet through the
+-- following encoding
+--	bit	7 6 5 4 3 2 1 0
+--		0 0 0 0 1 1 1 1
+
+NameString ::= USSD-String (SIZE (1..maxNameStringLength))
+
+maxNameStringLength  INTEGER ::= 63
+
+LCSRequestorID ::= SEQUENCE {
+	dataCodingScheme	[0] USSD-DataCodingScheme,
+	requestorIDString	[1] RequestorIDString,
+	...,
+	lcs-FormatIndicator	[2] LCS-FormatIndicator	OPTIONAL }
+
+RequestorIDString ::= USSD-String (SIZE (1..maxRequestorIDStringLength))
+
+maxRequestorIDStringLength  INTEGER ::= 63
+
+LCS-FormatIndicator ::= ENUMERATED {
+	logicalName	(0),
+	e-mailAddress	(1),
+	msisdn		(2),
+	url			(3),
+	sipUrl		(4),
+	... }
+
+LCS-Priority ::= OCTET STRING (SIZE (1))
+	-- 0 = highest priority
+	-- 1 = normal priority
+	-- all other values treated as 1 
+
+LCS-QoS ::= SEQUENCE {
+	horizontal-accuracy	[0] Horizontal-Accuracy	OPTIONAL,
+	verticalCoordinateRequest	[1] NULL		OPTIONAL,
+	vertical-accuracy	[2] Vertical-Accuracy	OPTIONAL,	responseTime	[3] ResponseTime	OPTIONAL,
+	extensionContainer	[4] ExtensionContainer	OPTIONAL,
+	...}
+
+Horizontal-Accuracy ::= OCTET STRING (SIZE (1))
+	-- bit 8 = 0
+	-- bits 7-1 = 7 bit Uncertainty Code defined in 3GPP TS 23.032. The horizontal location 
+	-- error should be less than the error indicated by the uncertainty code with 67%
+	-- confidence.
+
+Vertical-Accuracy ::= OCTET STRING (SIZE (1))
+	-- bit 8 = 0
+	-- bits 7-1 = 7 bit Vertical Uncertainty Code defined in 3GPP TS 23.032. 
+	-- The vertical location error should be less than the error indicated 
+	-- by the uncertainty code with 67% confidence.
+
+ResponseTime ::= SEQUENCE {
+	responseTimeCategory	ResponseTimeCategory,
+	...}
+--	note: an expandable SEQUENCE simplifies later addition of a numeric response time.
+
+ResponseTimeCategory ::= ENUMERATED {
+	lowdelay  (0),
+	delaytolerant  (1),
+	... }
+--	exception handling:
+--	an unrecognized value shall be treated the same as value 1 (delaytolerant)
+
+SupportedGADShapes ::= BIT STRING {
+	ellipsoidPoint  (0),
+	ellipsoidPointWithUncertaintyCircle (1),
+	ellipsoidPointWithUncertaintyEllipse (2),
+	polygon (3),
+	ellipsoidPointWithAltitude (4),
+	ellipsoidPointWithAltitudeAndUncertaintyElipsoid (5),
+	ellipsoidArc  (6) } (SIZE (7..16))
+-- A node shall mark in the BIT STRING all Shapes defined in 3GPP TS 23.032 it supports.
+-- exception handling: bits 7 to 15 shall be ignored if received.
+
+LCS-ReferenceNumber::= OCTET STRING (SIZE(1))
+
+LCSCodeword ::= SEQUENCE {
+	dataCodingScheme	[0] USSD-DataCodingScheme,
+	lcsCodewordString	[1] LCSCodewordString,
+	...}
+
+LCSCodewordString ::= USSD-String (SIZE (1..maxLCSCodewordStringLength))
+
+maxLCSCodewordStringLength  INTEGER ::= 20
+
+LCS-PrivacyCheck ::= SEQUENCE {
+	callSessionUnrelated	[0] PrivacyCheckRelatedAction,
+	callSessionRelated	[1] PrivacyCheckRelatedAction	OPTIONAL,
+	...}
+
+PrivacyCheckRelatedAction ::= ENUMERATED {
+	allowedWithoutNotification (0),
+	allowedWithNotification (1),
+	allowedIfNoResponse (2),
+	restrictedIfNoResponse (3),
+	notAllowed (4),
+	...}
+--	exception handling:
+--	a ProvideSubscriberLocation-Arg containing an unrecognized PrivacyCheckRelatedAction
+--	shall be rejected by the receiver with a return error cause of unexpected data value
+
+AreaEventInfo ::= SEQUENCE {
+	areaDefinition	[0]	AreaDefinition,
+	occurrenceInfo	[1]	OccurrenceInfo	OPTIONAL,
+	intervalTime	[2]	IntervalTime	OPTIONAL,
+	...}
+
+AreaDefinition ::= SEQUENCE {
+	areaList		[0]	AreaList,
+	...}
+
+AreaList ::= SEQUENCE SIZE (1..maxNumOfAreas) OF Area
+
+maxNumOfAreas  INTEGER ::= 10
+
+Area ::= SEQUENCE {
+	areaType		[0]	AreaType,
+	areaIdentification	[1]	AreaIdentification,
+	...}
+
+AreaType ::= ENUMERATED {
+	countryCode	(0),
+	plmnId		(1),
+	locationAreaId	(2),
+	routingAreaId	(3),
+	cellGlobalId	(4),
+	...}
+
+AreaIdentification ::= OCTET STRING (SIZE (2..7))
+	-- The internal structure is defined as follows:
+	-- octet 1 bits 4321	Mobile Country Code 1st digit
+	--         bits 8765	Mobile Country Code 2nd digit
+	-- octet 2 bits 4321	Mobile Country Code 3rd digit
+	--         bits 8765	Mobile Network Code 3rd digit if 3 digit MNC included
+	--			or filler (1111)
+	-- octet 3 bits 4321	Mobile Network Code 1st digit
+	--         bits 8765	Mobile Network Code 2nd digit
+	-- octets 4 and 5	Location Area Code (LAC)
+	-- octet 6	Routing Area Code (RAC) for Routing Area Id
+	-- octets 6 and 7	Cell Identity (CI) for Cell Global Id
+
+OccurrenceInfo ::= ENUMERATED {
+	oneTimeEvent	(0),
+	multipleTimeEvent	(1),
+	...}
+
+IntervalTime ::= INTEGER (1..32767)
+	-- minimum interval time between area reports in seconds
+
+ProvideSubscriberLocation-Res ::= SEQUENCE {
+	locationEstimate	Ext-GeographicalInformation,
+	ageOfLocationEstimate	[0] AgeOfLocationInformation	OPTIONAL,
+	extensionContainer	[1] ExtensionContainer	OPTIONAL,
+	... ,
+	add-LocationEstimate	[2] Add-GeographicalInformation 	OPTIONAL,
+	deferredmt-lrResponseIndicator	[3] NULL		OPTIONAL,
+	geranPositioningData	[4] PositioningDataInformation	OPTIONAL,
+	utranPositioningData	[5] UtranPositioningDataInfo	OPTIONAL,
+	cellIdOrSai	[6] CellGlobalIdOrServiceAreaIdOrLAI	OPTIONAL,
+	sai-Present	[7] NULL		OPTIONAL }
+
+--	if deferredmt-lrResponseIndicator is set, locationEstimate is ignored.
+
+-- the add-LocationEstimate parameter shall not be sent to a node that did not indicate the
+-- geographic shapes supported in the ProvideSubscriberLocation-Arg
+-- The locationEstimate and the add-locationEstimate parameters shall not be sent if
+-- the supportedGADShapes parameter has been received in ProvideSubscriberLocation-Arg
+-- and the shape encoded in locationEstimate or add-LocationEstimate is not marked
+-- as supported in supportedGADShapes. In such a case ProvideSubscriberLocation
+-- shall be rejected with error FacilityNotSupported with additional indication
+-- shapeOfLocationEstimateNotSupported.
+-- sai-Present indicates that the cellIdOrSai parameter contains a Service Area Identity.
+
+Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInformation))
+	-- Refers to geographical Information defined in 3GPP TS 23.032.
+	-- This is composed of 1 or more octets with an internal structure according to
+	-- 3GPP TS 23.032
+	-- Octet 1: Type of shape, only the following shapes in 3GPP TS 23.032 are allowed:
+	--		(a) Ellipsoid point with uncertainty circle
+	--		(b) Ellipsoid point with uncertainty ellipse
+	--		(c) Ellipsoid point with altitude and uncertainty ellipsoid
+	--		(d) Ellipsoid Arc
+	--		(e) Ellipsoid Point
+	-- Any other value in octet 1 shall be treated as invalid
+	-- Octets 2 to 8 for case (a) - Ellipsoid point with uncertainty circle
+	--		Degrees of Latitude				3 octets
+	--		Degrees of Longitude				3 octets
+	--		Uncertainty code				1 octet
+	-- Octets 2 to 11 for case (b) - Ellipsoid point with uncertainty ellipse:
+	--		Degrees of Latitude				3 octets
+	--		Degrees of Longitude				3 octets
+	--		Uncertainty semi-major axis				1 octet
+	--		Uncertainty semi-minor axis				1 octet
+	--		Angle of major axis				1 octet
+	--		Confidence				1 octet
+	-- Octets 2 to 14 for case (c) - Ellipsoid point with altitude and uncertainty ellipsoid
+	--		Degrees of Latitude				3 octets
+	--		Degrees of Longitude				3 octets
+	--		Altitude				2 octets
+	--		Uncertainty semi-major axis				1 octet
+	--		Uncertainty semi-minor axis				1 octet
+	--		Angle of major axis				1 octet
+	--		Uncertainty altitude				1 octet
+	--		Confidence				1 octet
+	-- Octets 2 to 13 for case (d) - Ellipsoid Arc
+	--		Degrees of Latitude				3 octets
+	--		Degrees of Longitude				3 octets
+	--		Inner radius				2 octets
+	--		Uncertainty radius				1 octet
+	--		Offset angle				1 octet
+	--		Included angle				1 octet
+	--		Confidence				1 octet
+	-- Octets 2 to 7 for case (e) - Ellipsoid Point
+	--		Degrees of Latitude				3 octets
+	--		Degrees of Longitude				3 octets
+
+	--
+	-- An Ext-GeographicalInformation parameter comprising more than one octet and
+	-- containing any other shape or an incorrect number of octets or coding according
+	-- to 3GPP TS 23.032 shall be treated as invalid data by a receiver.
+	--
+	-- An Ext-GeographicalInformation parameter comprising one octet shall be discarded
+	-- by the receiver if an Add-GeographicalInformation parameter is received 
+	-- in the same message.
+	--
+	-- An Ext-GeographicalInformation parameter comprising one octet shall be treated as
+	-- invalid data by the receiver if an Add-GeographicalInformation parameter is not
+	-- received in the same message.
+
+maxExt-GeographicalInformation  INTEGER ::= 20
+	-- the maximum length allows for further shapes in 3GPP TS 23.032 to be included in later 
+	-- versions of 3GPP TS 29.002
+
+PositioningDataInformation ::= OCTET STRING (SIZE (2..maxPositioningDataInformation))
+	-- Refers to the Positioning Data defined in 3GPP TS 49.031.
+	-- This is composed of 2 or more octets with an internal structure according to
+	-- 3GPP TS 49.031. 
+
+maxPositioningDataInformation INTEGER ::= 10
+	-- 
+
+UtranPositioningDataInfo ::= OCTET STRING (SIZE (3..maxUtranPositioningDataInfo))
+	-- Refers to the Position Data defined in 3GPP TS 25.413.
+	-- This is composed of the positioningDataDiscriminator and the positioningDataSet
+	-- included in positionData as defined in 3GPP TS 25.413.
+
+maxUtranPositioningDataInfo INTEGER ::= 11
+	-- 
+
+Add-GeographicalInformation ::= OCTET STRING (SIZE (1..maxAdd-GeographicalInformation))
+	-- Refers to geographical Information defined in 3GPP TS 23.032.
+	-- This is composed of 1 or more octets with an internal structure according to 
+	-- 3GPP TS 23.032
+	-- Octet 1: Type of shape, all the shapes defined in 3GPP TS 23.032 are allowed:
+	-- Octets 2 to n (where n is the total number of octets necessary to encode the shape
+	-- according to 3GPP TS 23.032) are used to encode the shape itself in accordance with the
+	-- encoding defined in 3GPP TS 23.032
+	--
+	-- An Add-GeographicalInformation parameter, whether valid or invalid, received 
+	-- together with a valid Ext-GeographicalInformation parameter in the same message 
+	-- shall be discarded.
+	--
+	-- An Add-GeographicalInformation parameter containing any shape not defined in 
+	-- 3GPP TS 23.032 or an incorrect number of octets or coding according to 
+	-- 3GPP TS 23.032 shall be treated as invalid data by a receiver if not received 
+	-- together with a valid Ext-GeographicalInformation parameter in the same message.
+
+maxAdd-GeographicalInformation  INTEGER ::= 91
+	-- the maximum length allows support for all the shapes currently defined in 3GPP TS 23.032
+
+SubscriberLocationReport-Arg ::= SEQUENCE {
+	lcs-Event		LCS-Event,
+	lcs-ClientID	LCS-ClientID, 
+	lcsLocationInfo	LCSLocationInfo,
+	msisdn		[0] ISDN-AddressString	OPTIONAL,
+	imsi			[1] IMSI		OPTIONAL,
+	imei			[2] IMEI		OPTIONAL,
+	na-ESRD		[3] ISDN-AddressString	OPTIONAL,
+	na-ESRK		[4] ISDN-AddressString	OPTIONAL,
+	locationEstimate	[5] Ext-GeographicalInformation	OPTIONAL,
+	ageOfLocationEstimate	[6] AgeOfLocationInformation	OPTIONAL,
+	extensionContainer	[7] ExtensionContainer	OPTIONAL,
+	... ,
+	add-LocationEstimate	[8] Add-GeographicalInformation	OPTIONAL,
+	deferredmt-lrData	[9] Deferredmt-lrData	OPTIONAL, 
+	lcs-ReferenceNumber	[10] LCS-ReferenceNumber	OPTIONAL,
+	geranPositioningData	[11] PositioningDataInformation	OPTIONAL,
+	utranPositioningData	[12] UtranPositioningDataInfo	OPTIONAL,
+	na-ESRK-Request	[16]	NULL		OPTIONAL,
+	cellIdOrSai	[13]	CellGlobalIdOrServiceAreaIdOrLAI	OPTIONAL,
+	h-gmlc-Address	[14]	GSN-Address	OPTIONAL,
+	lcsServiceTypeID	[15]	LCSServiceTypeID	OPTIONAL,
+	sai-Present	[17] NULL		OPTIONAL }
+
+	-- one of msisdn or imsi is mandatory
+	-- a location estimate that is valid for the locationEstimate parameter should 
+	-- be transferred in this parameter in preference to the add-LocationEstimate.
+	-- the deferredmt-lrData parameter shall be included if and only if the lcs-Event
+	-- indicates a deferredmt-lrResponse.
+	-- if the lcs-Event indicates a deferredmt-lrResponse then the locationEstimate 
+	-- and the add-locationEstimate parameters shall not be sent if the 
+	-- supportedGADShapes parameter had been received in ProvideSubscriberLocation-Arg
+	-- and the shape encoded in locationEstimate or add-LocationEstimate was not marked
+	-- as supported in supportedGADShapes. In such a case terminationCause 
+	-- in deferredmt-lrData shall be present with value 
+	-- shapeOfLocationEstimateNotSupported. 
+	-- If a lcs event indicates deferred mt-lr response, the lcs-Reference number shall be 
+	-- included. 
+	-- sai-Present indicates that the cellIdOrSai parameter contains a Service Area Identity.
+
+Deferredmt-lrData ::= SEQUENCE {
+	deferredLocationEventType	DeferredLocationEventType,
+	terminationCause	[0] TerminationCause	OPTIONAL,
+	lcsLocationInfo	[1] LCSLocationInfo	OPTIONAL,
+	...}
+	-- lcsLocationInfo may be included only if a terminationCause is present 
+	-- indicating mt-lrRestart.
+
+LCS-Event ::= ENUMERATED {
+	emergencyCallOrigination  (0),
+	emergencyCallRelease  (1), 
+	mo-lr  (2),
+	...,
+	deferredmt-lrResponse  (3) }
+	--	exception handling:
+	--	a SubscriberLocationReport-Arg containing an unrecognized LCS-Event
+	--	shall be rejected by a receiver with a return error cause of unexpected data value
+
+TerminationCause ::= ENUMERATED {
+	normal  (0),
+	errorundefined  (1),
+	internalTimeout  (2),
+	congestion  (3),
+	mt-lrRestart  (4),
+	privacyViolation  (5),
+	...,
+	shapeOfLocationEstimateNotSupported (6) } 
+-- mt-lrRestart shall be used to trigger the GMLC to restart the location procedure, 
+-- either because the sending node knows that the terminal has moved under coverage 
+-- of another MSC or SGSN (e.g. Send Identification received), or because the subscriber
+-- has been deregistered due to a Cancel Location received from HLR.
+--
+-- exception handling
+-- an unrecognized value shall be treated the same as value 1 (errorundefined) 
+
+SubscriberLocationReport-Res ::= SEQUENCE {
+	extensionContainer	ExtensionContainer	OPTIONAL, 
+	..., 
+	na-ESRK		[0] ISDN-AddressString	OPTIONAL }
+
+
+END
